{Flux} = require 'delorean'
_ = require 'lodash'


Global = Flux.createStore
  
  actions: 
    'user-logout': 'resetState'
    'calculate-scollbar-width': 'calculateScrollBarWidth'

  scheme:
    activeRequests:
      default: {}
    requestActive:
      default: no
    ie:
      default: no
    ie9:
      default: no
    scrollBarWidth:
      default: 0
    

  initialize: ->
    @detectBrowser()

  detectBrowser: ->
    ua = navigator.userAgent.toLowerCase()
    
    if navigator.appName is 'Microsoft Internet Explorer'
      @set 'ie', yes
      ieVersion = parseInt(ua.match(/msie.([0-9]+)/)[1])
      if ieVersion is 9 then @set 'ie9', yes
    # IE11 reports to be 'Netscape'
    else if navigator.appName is 'Netscape' and new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null
      @set 'ie', yes


  calculateScrollBarWidth: ->
    outer = document.createElement('div')
    outer.style.overflow = 'scroll'
    outer.style.height = '500px'
    outer.style.width = '500px'
    outer.style.position = 'absolute'
    outer.style.top = '100px'
    outer.style.left = '100px'

    inner1 = document.createElement('div')
    inner1.style.position = 'absolute'
    inner1.style.height = '100%'
    inner1.style.width = '100%'

    inner2 = document.createElement('div')
    inner2.style.height = '600px'
    inner2.style.width = '600px'

    outer.appendChild inner1
    outer.appendChild inner2

    document.body.appendChild outer
    scrollBarWidth = outer.offsetHeight - inner1.offsetHeight
    document.body.removeChild outer
    
    @set 'scrollBarWidth', scrollBarWidth


module.exports = Global