cookies = require('./cookies.coffee')

module.exports =

  default_marker: 'direct'

  get: -> cookies.get('marker') or @default_marker

  set: (value) ->
    expire = new Date(+(new Date) + 60 * 60 * 24 * 30 * 1e3)
    cookies.set('marker', value, expire.toGMTString())
    value

  set_suffix: (value) ->
    marker_parts = @get().split('.')
    marker_parts[2] = value
    @set(marker_parts.join('.'))

  handle_marker: (value) ->
    if value and @_new_marker(value) and (@is_affiliate(value) or !@is_affiliate(@get()))
      return @set(value)
    if !@get()
      return @set(@default_marker)
    @get()

  _new_marker: (value) -> value != @get()

  get_from_params: ->
    a = window.location.search.substr(1).split('&')
    return {}  if a is ""
    b = {}
    i = 0

    while i < a.length
      p = a[i].split("=", 2)
      if p.length is 1
        b[p[0]] = ""
      else
        b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "))
      ++i
    b.marker

  is_affiliate: (marker) -> (/^\d{5}/).test marker
