scroll_handler = require('../../common/js/scroll_handler.coffee')
filters = require('../../common/js/filters.coffee')
delegate = require('dom-delegate')
dispatcher = require('../../common/js/dispatcher')
form_visible_class = 'form-is-visible'
informer_tmpl = require('./informer.temple')
temple_utils = require('temple-wat')
pool = temple_utils.pool(informer_tmpl)
_ = require('lodash')
metrics = require('../../common/js/metrics.coffee')
utils = require('../../common/js/utils.coffee')
styles_modifier   = require('../../common/js/styles_modifier.coffee')
dates = require('../../common/js/dates.coffee')
show_form_trigger_class = 'js-informer-show-form-trigger'
visibility = require('../../common/js/visibility.coffee')

adapt_view = (model) ->

  segments = []
  for segment in model.segments
    segments.push(
      origin: segment.origin_name || segment.origin
      destination: segment.destination_name || segment.destination
      date: filters.flight_time_filter(if segment.date then segment.date else dates.today_array().join('-'))
    )

  {
    adults: filters.pluralize(model.passengers.adults, __('form.passengers_count'))
    children: {count: filters.pluralize(model.passengers.children, __('form.children_count'))} if model.passengers.children > 0
    segments: segments
  }

header = (header_el)->

  informer_container = header_el.querySelector('.js-informer-container')

  [informer_template, informer_obj] = pool.get('informer', {allowed_to_show_informer: false})

  informer_container.appendChild(informer_template)

  header_delegate = delegate(header_el)
  header_delegate.on('click', '.js-icon-logo', (event, event_target) ->
    ga('common.send', 'event', 's_logo', 'click', 'click_logo');
    ga('local.send', 'event', 's_logo', 'click', 'click_logo');
  )
  filters_and_form = document.querySelector('.js-filters-container')
  form = document.querySelector('.js-form')

  dispatcher.on('start_search', (e, {request_id, params})->
    informer_obj.update(adapt_view(params))
  )

  dispatcher.on('places_restored', (e, params)->
    informer_obj.update(adapt_view(params))
  )

  hide_form = ->
    dispatcher.send('hide_datepicker', 'header')
    dispatcher.send('hide_passengers', '', 'header')
    dispatcher.send('hide_autocomplete', 'origin', 'header')
    dispatcher.send('hide_autocomplete', 'destination', 'header')
  scroll_handler(hide_form, hide_form)

module.exports = header
