﻿/// <reference path="jquery-1.3.2-vsdoc2.js">


var Svenskfast;
if (!Svenskfast) {
    Svenskfast = {};
}

var _gaq = _gaq || []; // used for Google analytics functionality.

Svenskfast.GAStatistik = function () {
    /// <summary>
    ///     Gets the current WebForm
    /// </summary>
    var pub = {};

    var gaAccountNr = null;

    var form = function () {
        /// <summary>
        ///     Gets the current WebForm
        /// </summary>
        var innerForm = $('form[name="aspnetForm"]');
        if (innerForm.length > 0) {
            innerForm = innerForm.eq(0);
        } else {
            innerForm = $('form').eq(0);
        }
        return innerForm;
    };

    function _setGAAccount(accountNr) {
        /// <summary>
        ///     Sets the value for the GA Acount
        /// </summary>
        gaAccountNr = accountNr;
    };
    
    pub.Init = function (accountNr) {
        /// <summary>
        ///     Initializes google analytics object
        /// </summary>
        _setGAAccount(accountNr);
        var referrer = "";
        if (document.referrer.indexOf('hemnet.se') > 0) { referrer = "hemnet" }
        else { referrer = "svenskfast"; }
        pub.TrackPageView();

        pub.SetCustomVar('1', 'SF vs Hemnet', referrer);
        pub.SetCustomVar('2', 'Bobutiksnamn', document.location.href);

        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';

        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    };

    pub.RecordEvent = function (category, action, label, value) {
        /// <summary>
        ///         Asynchronous registering a Google Analytics event
        /// </summary>
        var data = [];
        if (!category || !action)
            return;
        data.push('_trackEvent', category, action);
        if (label)
            data.push(label);
        if (value)
            data.push(value);

        _gaq.push(data);
    };

    pub.TrackSocialEvent = function (network, socialAction, opt_target, opt_pagePath) {
        /// <summary>
        ///         Asynchronous registering a Google Analytics Social Interaction event
        /// </summary>
        var data = [];
        if (!network || !socialAction)
            return;
        data.push('_trackSocial', network, socialAction);
        if (opt_target)
            data.push(opt_target);
        if (opt_pagePath)
            data.push(opt_pagePath);

        _gaq.push(data);
    };

    pub.TrackPageView = function () {
        _gaq.push(
            ['_setAccount', gaAccountNr],
            ['_trackDownload'], // This is where gaAddons calls go
            ['_trackOutbound'], // Showing three basic calls
            ['_trackRealBounce', {
                category: 'NoBounce',
                delay: 30,
                value: 0
            }],
            ['_trackMailTo', {  // Sample call overwritting some defaults
                onBounce: false,  // - Track even if the page is a bounce
                category: 'email' // - Change the event label
            }],
            ['_setDayOfWeek', { index: 3, name: 'Veckodag', days: ['Sondag', 'Mandag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lordag']}],
            ['_trackPageLoadTime'],
            ['_trackPageview']
        );
    };

    pub.SetCustomVar = function (slot, category, value) {
        _gaq.push(['_setCustomVar',
            slot,                   // This custom var is set to slot #1.  Required parameter.
            category,     // The name acts as a kind of category for the user activity.  Required parameter.
            value,               // This value of the custom variable.  Required parameter.
            3                    // Sets the scope to session-level.  Optional parameter.
        ]);
    };

    return pub;
} ();
