class MixPanel

    constructor: () ->
        console.log "new mixpanel" if DEBUG
        @id

    setUser: (user) =>
        if user.email
            userId = SHA1(user.email)
            @identify(userId)
        @register(user)

    userSignup: (user) =>
        if user.email
            userId = SHA1(user.email)
            @createAlias(userId)
        @register(user)

    registerGuest: () =>
        mixpanel.register({
            'g': 'u',
            'auth_provider':'shuttlerock',
            'session':'guest',
            'domain': window.location.hostname,
            'platform': 'mobile'
        }, 'all')

    register: (user) =>
        gender = @getGender(user)
        mixpanel.register({
            'g': gender,
            'auth_provider':'shuttlerock',
            'session':'logged in',
            'domain': window.location.hostname,
            'platform': 'mobile'
            }, 'all')

    identify: (id) ->
        console.log "id is #{id}" if DEBUG
        mixpanel.identify(id)

    setPeople: (user) ->
        gender = @getGender(user)
        mixpanel.people.set({
            'g': gender,
            'auth_provider': 'mobile'
        })

    getGender: (user) ->
        gender = 'u'
        if user.demographics.gender == 'female'
            gender = 'f'
        else if user.demographics.gender == 'male'
            gender = 'm'
        gender

    createAlias: (newId) ->
        mixpanel.alias(newId)

    trackPageView: (url) ->
        mixpanel.track('viewed page', {'Referrer': url})
        mixpanel.track_pageview(url)

    trackListBoards: () ->
        # might be required in the future
        #mixpanel.track('listed boards')

    trackPhotoUpload: () ->
        # might be required in the future
        #mixpanel.track('uploaded photo')

    trackEntrySubmitted: () ->
        # might be required in the future
        #mixpanel.track('created board item')

angular.module("shuttlerockApp").service("MixPanel", MixPanel)