﻿/// <reference path="FunctionsCommon.js" />
/// <reference path="jqueryCommon.js" />

function StartTracker(analyticsTrackerID, handleOutboundLinksQ, handleInboundLinksQ) {
    // inicializacoes, para o caso de metodo estar a ser invocado por um projecto antigo... (ex: ANALYTICSTRACKERID = "aaa"; StartTracker();)
    if (!analyticsTrackerID && typeof(ANALYTICSTRACKERID) != "undefined") { analyticsTrackerID = ANALYTICSTRACKERID; }
    if (handleOutboundLinksQ == undefined && analyticsTrackerID) { handleOutboundLinksQ = true; }
    if (handleInboundLinksQ == undefined && analyticsTrackerID) { handleInboundLinksQ = true; }

    // start Google's _trackPageview()
    trackPage(analyticsTrackerID);

    // inbound link
    if (handleInboundLinksQ == true) {
    	if (document.referrer && typeof(isLinkExternal) != "undefined" && isLinkExternal(document.referrer) == true) {
            recordInboundLink(analyticsTrackerID, document.referrer, 'Inbound Links', document.referrer);
        }
    }

    // outbound links
    if (handleOutboundLinksQ == true && typeof(ConfigAnalyticsForExitLinks) != "undefined") {
        ConfigAnalyticsForExitLinks(function(url) { recordOutboundLink(analyticsTrackerID, url, 'Outbound Links', url); });
    }
}

function trackPage(analyticsTrackerID) {
    var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
    document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

    var intervalID = null;
    intervalID = setInterval(function() {
        if (typeof(_gat) != "undefined") { // when js is loaded (_gat != undefined)
            try {
                var pageTracker = _gat._getTracker(analyticsTrackerID);
                pageTracker._trackPageview();
            }
            catch (err) { }
            //
            // unset timer
            clearInterval(intervalID);
        } 
    }, 800);
}
function recordInboundLink(analyticsTrackerID, url, category, action) {
    try {
        var pageTracker = _gat._getTracker(analyticsTrackerID);
        pageTracker._trackEvent(category, action);
    }
    catch (err) { }
}
function recordOutboundLink(analyticsTrackerID, url, category, action) {
    try {
        var pageTracker = _gat._getTracker(analyticsTrackerID);
        pageTracker._trackEvent(category, action);
        //setTimeout('document.location = "' + url + '"', 100);
        var date = new Date(); var curDate = null; do { curDate = new Date(); } while (curDate - date < 100); // wait 100 millis
    }
    catch (err) { }
}

