_gaq = _gaq or []
angular.module("analytics", []).run( ($http) ->
).service "Analytics", ($rootScope, $window, $location, $stateParams) ->
    init = (accountCode) ->
        if accountCode
            _gaq.push ["_setAccount", accountCode]
            _gaq.push ["_trackPageview"]

            ga = document.createElement("script")
            ga.type = "text/javascript"
            ga.async = true
            ga.src = ((if "https:" is document.location.protocol then "https://ssl" else "http://www")) + ".google-analytics.com/ga.js"
            s = document.getElementsByTagName("script")[0]
            s.parentNode.insertBefore ga, s
            $rootScope.$on "$viewContentLoaded", track

    track = ->
        path = convertPathToQueryString($location.path(), $stateParams)
        console.log "tracking path "+path if DEBUG
        $window._gaq.push ["_trackPageview", path]

    convertPathToQueryString = (path, $stateParams) ->
        for key of $stateParams
            queryParam = "/" + $stateParams[key]
            path = path.replace(queryParam, "")
        querystring = decodeURIComponent($.param($stateParams))
        return path  if querystring is ""
        path + "?" + querystring

    init: init
