function PageInit() {
   if(typeof InitGoogleAssets == 'function') InitGoogleAssets();
}

function AttachEvent(elementObj, eventName, eventHandlerFunctionName) {  
  if (elementObj.addEventListener) { // Non-IE browsers
    elementObj.addEventListener(eventName, eventHandlerFunctionName, false);
  } else if (elementObj.attachEvent)   { // IE 6+
    elementObj.attachEvent('on' + eventName, eventHandlerFunctionName);
  } else { // Older browsers
    var currentEventHandler = elementObj['on' + eventName];
    if (currentEventHandler == null) {
      elementObj['on' + eventName] = eventHandlerFunctionName;
    } else {
      elementObj['on' + eventName] = function(e)
      { currentEventHandler(e); eventHandlerFunctionName(e); }
    }
  }
}

AttachEvent(window, 'load', PageInit);

//  Javascript to tag file downloads and external links in Google Analytics
//  To use, place reference to this file should be placed at the bottom of all pages, 
//  just above the Google Analytics tracking code.
//  All outbound links and links to non-html files should now be automatically tracked.
//
//  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//  Created by:   Colm McBarron, colm.mcbarron@iqcontent.com
//  Last updated:   12-Feb-2006
//
//  Updated by:    Niamh Phelan niamh.phelan@iqcontent.com
//  On:        22-Jul-2008
//  For:      Upgrade to ga.js  
//
//  Updated by:    Peter McKenna peter.mckenna@iqcontent.com
//  On:        07-Nov-2008
//  For:      Track mailto: links and restructure how virtual
//              pageviews are structured
//
//  Updated by:    Peter McKenna peter.mckenna@iqcontent.com
//  On:        19-Feb-2009
//  For:      Fixed up some problems with how Internet 
//          Explorer 6 was tracking links, and some minor
//          Firefox issues.
//  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//

function InitGoogleAssets() {
  var hrefs = document.getElementsByTagName("a");
  var link_path = "";

  for (var l = 0; l < hrefs.length; l++) {
    try {
      // Add the hostname and link location into variables
      var link_path = hrefs[l].pathname;
      var link_location = String(hrefs[l]);
      // Check if it's a mail link
      if (link_location.match(/^mailto:/i))  {
        addmailtotrackerlistener(hrefs[l]);
      }
      // Check to see if the link is an internal link
     else if (location.host == hrefs[l].hostname)  {
        if(link_path.match(/\.(doc|pdf|xls|ppt|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)$/))   {
          addtrackerlistener(hrefs[l]);
        }
     } else {
        addtrackerlistener(hrefs[l]);
     }
   }
   catch(err) { }
  }
}

// Add a listener to matching file links
function addtrackerlistener(obj) {
  if (obj.addEventListener) {
    obj.addEventListener('click', trackfiles, true);
  } else if (obj.attachEvent) {
    obj.attachEvent("on" + 'click', trackfiles);
  }
}


// Add a special listener to mailto: links
function addmailtotrackerlistener(obj) {
  if (obj.addEventListener) {
    obj.addEventListener('click', trackmailto, true);
  } else if (obj.attachEvent) {
    obj.attachEvent("on" + 'click', trackmailto);
  }
}


// Track file links
function trackfiles(array_element) {
  var file_path = "";
  // Track an external link
  var destination_host = (array_element.srcElement) ? array_element.srcElement.hostname : this.hostname;
  if (location.host != destination_host){
    file_path = "/virtual/exlink/" + cleanURL(window.location, true) + '/' + ((array_element.srcElement) ? array_element.srcElement.hostname : this.hostname);
    file_path = file_path + ((array_element.srcElement) ? "/" + cleanURL(array_element.srcElement.pathname, false) : this.pathname);
  }
  // Track an internal link
  else {
    file_path = ((array_element.srcElement) ? "/" + array_element.srcElement.pathname : this.pathname);  
    var file_details = file_path.split('/');
    file_path = cleanURL(window.location, true) + '/' + file_details[(file_details.length-1)];
    file_path =  (("/virtual/download/") + file_path);
  }
  pageTracker._trackPageview(file_path);
}

// Generate page view for a mailto: link
function trackmailto(array_element) {
  var email = ((array_element.srcElement) ? array_element.srcElement.href : this.href).substring(7);
  var url = cleanURL(window.location, true);
  var mail_path = '/virtual/mailto/'+url+'/'+email;
  pageTracker._trackPageview(mail_path);
}

// Clean leading & trailing slashes
function cleanURL (url, end) {
  var url = url.toString();
  var urlLen = url.length;
  
  if (end) {
    if (url.charAt((urlLen-1))=='/')
      url = url.substring(0,(urlLen-1));
  }
  else {
    if (url.charAt(0)=='/')
      url = url.substring(1,urlLen);
  }
  return url;
}