_          = require('lodash')
delegate   = require('dom-delegate')
dispatcher = require('../../common/js/dispatcher')
activity_widget = require('./activity_widget.coffee')
marker = require('../../common/js/marker.coffee')
cookies = require('../../common/js/cookies.coffee')
metrics = require('../../common/js/metrics.coffee')
styles_modifier   = require('../../common/js/styles_modifier.coffee')
module.exports = (subscriptions) ->
  event_delegate = delegate(subscriptions)
  email_input = document.getElementById('subs_input')
  email = cookies.get('subscriber_email')
  email_input.value = if email then email else ''

  search_params = {}

  event_delegate.on 'submit', '.js-sub-form', (event) ->
    event.preventDefault()
    metrics.reach_goal('SUBSCRIBE_BUTTON_CLICK', {"search_finished": true})
    window.subscription_widget.toggleWindow({
      email: email_input.value
      marker: marker.get()
      open: true
      params: search_params
      sub_callback: ->
        console.log('subscription done')
      options: {callback_url: 'http://www.aviasales.ru/'}
    })

  event_delegate.on 'click', '.js-subscriptions-wrapper', (event) ->
    email_input.focus()


  dispatcher.on 'first_tickets_arrived', (event, {request_id}) ->
    if window.subscription_widget
      styles_modifier(subscriptions).remove('hidden')

  dispatcher.on 'start_search', (event, {request_id, params}) ->
    search_params = {
      origin: {iata: params.segments[0].origin, name: params.segments[0].origin_name or params.segments[0].origin}
      destination: {iata: params.segments[0].destination, name: params.segments[0].destination_name or params.segments[0].destination}
      depart_date: params.segments[0].date
      return_date: params.segments[1]?.date
      one_way: params.segments.length < 2
    }

    styles_modifier(subscriptions).add('hidden')

  dispatcher.on 'places_restored', (event, params) ->
    search_params.origin?.name = params.segments[0].origin_name
    search_params.destination?.name = params.segments[0].destination_name

  dispatcher.on 'components_loaded', (event) ->
    block = document.getElementById('subscriptions_scripts')
    block.innerHTML = """
       <div ng-controller="SubscriptionWidgetController"><div as-super-modal as-src="widget.html" as-show="windows.modal"></div></div>
       <link href="http://woody.aviasales.ru/assets/widget_with_ui.css" media="all" rel="stylesheet">
    """
    add_script = (src, callback=false) ->
       script   = document.createElement("script")
       script.type  = "text/javascript"
       script.src   = src
       script.setAttribute('crossorigin', "anonymous")
       script.onload = callback if callback
       document.body.appendChild(script)

    add_script('http://woody.aviasales.ru/assets/widget_with_libs.js', ->
      setTimeout(->
        add_script('http://woody.aviasales.ru/widget.js', toggle_with_timeout)
      , 200)
    )

    toggle_with_timeout = ->
      setTimeout(toggle_subscriptions_widget, 1000)

    toggle_subscriptions_widget = ->
      styles_modifier(subscriptions).remove('hidden')
      if window.location.search.indexOf('show_subscriptions') > -1
        from_banner = decodeURIComponent(/from_banner=([^&]+)/g.exec(window.location.search)?[1] || '')
        if from_banner
          params =
            destination: {
              iata: "SIP"
              name: "Симферополь"
            }
            origin: {
              iata: decodeURIComponent(/origin_iata=([^&]+)/g.exec(window.location.search)?[1]).toUpperCase()
              name: decodeURIComponent(/origin_name=([^&]+)/g.exec(window.location.search)?[1])
            }
            one_way: true
            months: [6,7,8]
        else
          params = false

        unsubscribe = decodeURIComponent(/unsubscribe=([^&]+)/g.exec(window.location.search)?[1])
        show_subscriptions = decodeURIComponent(/show_subscriptions=([^&]+)/g.exec(window.location.search)?[1])

        window.subscription_widget.toggleWindow(show_subscriptions, params, marker.get(), (->), true, {unsubscribe: unsubscribe == 'true'})
