﻿/* $Id: googleLoader.js 25694 2009-12-16 00:41:50Z rjeschofnik $ */
function googleLoader(id, page) {
    var urchinId = id;
    var _page = page;
    var loadInterval = 100;
    var ready = false;
    var devId = 'UA-3172639-9';

    return {
        _load: function() {

            var gaHost = ("https:" == document.location.protocol) ? "https://ssl." : "http://www.";
            var s = document.createElement('script');
            s.src = gaHost + "google-analytics.com/ga.js";
            document.getElementsByTagName("head")[0].appendChild(s);
            var checker = this._wrap(this, this._check);
            setTimeout(checker, loadInterval);
        },

        _check: function() {
            if (window['_gat']) {
                gaTracker = _gat._getTracker(urchinId);
                gaTracker._initData();

                if (_page == null) {
                    gaTracker._trackPageview();
                }
                else {
                    gaTracker._trackPageview(_page);
                }

                pageTracker = gaTracker;
                ready = true;
                this.log('onload track: ' + _page);
            }
            else {
                var checker = this._wrap(this, this._check);
                setTimeout(checker, loadInterval);
            }
        },

        trackPageview: function(page) {
            if (ready) {
                if (page == null)
                    gaTracker._trackPageview();
                else
                    gaTracker._trackPageview(page);

                this.log('manual trackPageview: ' + page);
            }
            else {
                var tpv = this._wrap(this, this.trackPageview);
                setTimeout(function() { tpv(page); }, loadInterval);
            }
        },

        trackEvent: function(category, action, label) {
            if (ready) {
                gaTracker._trackEvent(category, action, label);
                this.log('trackEvent: ' + category + ', ' + action + ', ' + label);
            }
            else {
                var te = this._wrap(this, this.trackEvent);
                setTimeout(function() { te(category, action, label); }, loadInterval);
            }
        },

        log: function(msg) {
            if (window.console && window.console.log && urchinId == devId)
                console.log(msg);
        },

        _wrap: function(obj, method) {
            return function() { return method.apply(obj, arguments); };
        }
    };
}

var trackPageview = function(page) { google.trackPageview(page); };
var trackPage = function(page) { trackPageview(page); };
var trackEvent = function(category, action, label) { google.trackEvent(category, action, label) };
