﻿// jQuery plugin for setting up google analytic tracking for clicks on items.
// example use:
// $('a.myclass').trackUrlOnClick('web/directory.aspx',[{ "key": "firm", "value": "bakertillyuk" }, { "key": "mailto", "value": "pete@pete.com"}]);

; (function($) {
    $.fn.buildOnClickTrackingUrl = function buildOnClickTrackingUrl(url, queryVars) {
        this.attr("onclick", generateGoogleTracker(url, queryVars));
    };


    $.fn.conditionalBuildClickTrackerUrl = function conditionalBuildClickTrackerUrl(valid, url, queryVars) {
        if (valid)
            this.attr("onclick", generateGoogleTracker(url, queryVars));
    };


    $.fn.trackUrlOnClick = function trackUrlOnClick(url) {
        this.attr("onclick", generateGoogleTrackerForUrl(url));
    }


    function generateGoogleTrackerForUrl(url) {
        return "javascript:try{var pageTracker = _gat._getTracker('UA-13066537-1');pageTracker._trackPageview('" + url + "');}catch(err){}";
    }    


    function generateGoogleTracker(url, queryVars) {
        var result = "javascript:try{var pageTracker = _gat._getTracker('UA-13066537-1');pageTracker._trackPageview('"
        + generateTrackerUrl(url, queryVars) + "');}catch(err){}";

        return result;
    }
})(jQuery);


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///
/// Track the url for a page.  Tracker is called immediately.
///
function trackPage(url) {
    try {
        _gat._getTracker('UA-13066537-1')._trackPageview(url);
    }
    catch (err) {
        alert(err);
    }
}

function manualBuildClickTrackerUrl(url, queryvars) {
    trackPage(generateTrackerUrl(url, queryvars));
}

function manualConditionalBuildClickTrackerUrl(valid, url, queryVars) {
    if (valid)
        trackPage(generateTrackerUrl(url, queryVars));
}


function generateTrackerUrl(url, queryVars) {
    var result = url;

    if (url.indexOf("?") == -1) {
        result += "?";
    }

    var queryVarSegment = "";

    for (var i = 0; i < queryVars.length; i++) {
        queryVarSegment += queryVars[i].key;
        queryVarSegment += "=";
        queryVarSegment += escape(queryVars[i].value);
        queryVarSegment += "&";
    }

    result += queryVarSegment.substring(0, queryVarSegment.length - 1);

    return result;
}


function setupAnchorOperations() {

    // Use rel=external to force internal links to open in a new win
    $('a[rel=external]').click(function() {
        window.open($(this).attr('href'));
        return false;
    });

    // Always open external domains in a new window
    $("a[href*='://']:not([href*='" + location.hostname + "']):not(A[rel='external'])").click(function() {
        window.open(this.href);
        return false;
    });

}

function initClock ( )
{
  timeDisplay = document.createTextNode ( "" );
  document.getElementById("clock").appendChild ( timeDisplay );
}


function updateClock ( )
{
  var currentTime = new Date ( );
  
  var m_names = new Array("January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December");

  var currentHours = currentTime.getUTCHours();
  var currentMinutes = currentTime.getUTCMinutes();
  var currentSeconds = currentTime.getUTCSeconds();
  var currentDay = currentTime.getUTCDate();
  var currentMonth = m_names[currentTime.getUTCMonth()];
  var currentYear = currentTime.getUTCFullYear();

  // Pad the minutes and seconds with leading zeros, if required
  currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
  currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;

  // Compose the string for display
  var currentTimeString = 
    currentDay + " " + currentMonth + " " + currentYear + /*", " + currentHours + ":" + currentMinutes +*/ " GMT";

  // Update the time display
  document.getElementById("clock").firstChild.nodeValue = currentTimeString;
}


