//	This javascript tags file downloads and external links in Google Analytics.
//	You need to be using the Google Analytics New Tracking Code (ga.js) 
//	for this script to work.
//	To use, place this file on all pages just above the Google Analytics tracking code.
//	All outbound links and links to non-html files should now be automatically tracked.
//
//	This script has been provided by Goodwebpractices.com
//	Thanks to ShoreTel, MerryMan and Colm McBarron
//
//	www.goodwebpractices.com
//	VKI has made changes as indicated below.								

if (document.getElementsByTagName) {
        // Initialize external link handlers
        var hrefs = document.getElementsByTagName("a");
        for (var l = 0; l < hrefs.length; l++) {
				// try {} catch{} block added by erikvold VKI
			try{
	                //protocol, host, hostname, port, pathname, search, hash
	                if (hrefs[l].protocol == "mailto:") {
	                        startListening(hrefs[l],"click",trackMailto);
	                } else if (hrefs[l].hostname == location.host) {
	                        var path = hrefs[l].pathname + hrefs[l].search;
							var isDoc = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
	                        if (isDoc) {
	                                startListening(hrefs[l],"click",trackExternalLinks);
	                        }
	                } else {
	                        startListening(hrefs[l],"click",trackExternalLinks);
	                }
			}
			catch(e){
					continue;
			}
        }
}

function startListening (obj,evnt,func) {
        if (obj.addEventListener) {
                obj.addEventListener(evnt,func,false);
        } else if (obj.attachEvent) {
                obj.attachEvent("on" + evnt,func);
        }
}

function trackMailto (evnt) {
        var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
        var mailto = "/mailto/" + href.substring(7);
        if (typeof(pageTracker) == "object") pageTracker._trackPageview(mailto);
}

function trackExternalLinks (evnt) {
        var e = (evnt.srcElement) ? evnt.srcElement : this;
        while (e.tagName != "A") {
                e = e.parentNode;
        }
        var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
        if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
        if (e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;
        if (typeof(pageTracker) == "object") pageTracker._trackPageview(lnk); 
}


// test script added : 05/11/2008 - Chandra Pandey

/****************************************************
     Author: Brian J Clifton
     Url: http://www.advanced-web-metrics.com
     This script is free to use as long as this info is left in
     
     Combined script for tracking external links, file downloads and mailto links
     
     All scripts presented have been tested and validated by the author and are believed to be correct
     as of the date of publication or posting. The Google Analytics software on which they depend is 
     subject to change, however; and therefore no warranty is expressed or implied that they will
     work as described in the future. Always check the most current Google Analytics documentation.

****************************************************/


// Only links written to the page (already in the DOM) will be tagged
// This version is for ga.js (July 15th 2008)


function addLinkerEvents() {
	var as = document.getElementsByTagName("a");
	var extTrack = ["historic-scotland.gov.uk"];
	// List of local sites that should not be treated as an outbound link. Include at least your own domain here
	
	var extDoc = [".doc",".xls",".exe",".zip",".pdf",".js",".mp3"];
	//List of file extensions on your site. Add/edit as you require
	
	/*If you edit no further below this line, Top Content will report as follows:
		/ext/url-of-external-site
		/downloads/filename
		/mailto/email-address-clicked
	*/
	
	for(var i=0; i<as.length; i++) {
		var flag = 0;
		var tmp = as[i].getAttribute("onclick");

		// IE6-IE7 fix (null values error) with thanks to Julien Bissonnette for this
		if (tmp != null) {
		  tmp = String(tmp);
		  if (tmp.indexOf('urchinTracker') > -1 || tmp.indexOf('_trackPageview') > -1) continue;
    		}

		// Tracking outbound links off site - no GATC
		for (var j=0; j<extTrack.length; j++) {					
			if (as[i].href.indexOf(extTrack[j]) == -1 && as[i].href.indexOf('google-analytics.com') == -1 ) {
				flag++;
			}
		}
		
		// Bug fix : put the urchinTracker function at the beginning of the onclick event to be sure that the function isn't skipped if a "return: false;" is present 
		// Fix provided by Julien Bissonnette
		if (flag == extTrack.length){
			var splitResult = as[i].href.split("//");
			as[i].setAttribute("onclick", "pageTracker._trackPageview('/ext/" +splitResult[1]+ "');"+((tmp != null) ? tmp+";" : ""));
		}			

		// Tracking electronic documents - doc, xls, pdf, exe, zip
		for (var j=0; j<extDoc.length; j++) {
			if (as[i].href.indexOf(extTrack[0]) != -1 && as[i].href.indexOf(extDoc[j]) != -1) {
				var splitResult = as[i].href.split(extTrack[0]);
				as[i].setAttribute("onclick",((tmp != null) ? tmp+";" : "") + "pageTracker._trackPageview('/downloads" +splitResult[1]+ "');");
				//alert(splitResult[1])
				break;
			}
		}


		// added to track mailto links 23-Oct-2007
		// updated 31-Oct-2008 to remove break command - thanks to Victor Geerdink for spotting this
		if (as[i].href.indexOf("mailto:") != -1  && as[i].href.indexOf("gashbug@google.com") == -1 ) {
			var splitResult = as[i].href.split(":");
			as[i].setAttribute("onclick",((tmp != null) ? tmp+";" : "") + "pageTracker._trackPageview('/mailto/" +splitResult[1]+ "');");
			//alert(splitResult[1])
		}
	}
}


/****************************************************
     Author: Brian J Clifton
     Url: http://www.advanced-web-metrics.com
     This script is free to use as long as this info is left in
     
     DESCRIPTION: Script for tracking regional and custom search engines. Requires ga.js
     READ: http://www.advanced-web-metrics.com/blog/2008/09/14/customising-the-list-of-search-engines-in-google-analytics/
          
     All scripts presented have been tested and validated by the author and are believed to be correct
     as of the date of publication or posting. The Google Analytics software on which they depend is 
     subject to change, however; and therefore no warranty is expressed or implied that they will
     work as described in the future. Always check the most current Google Analytics documentation.

****************************************************/
// Last updated Oct-2008
// With thanks to Simon Wang and Tomas Remotigue of Google


pageTracker._clearOrganic()	

// Google EMEA Domains
pageTracker._addOrganic("google.com","q");
pageTracker._addOrganic("google.co.uk","q");
pageTracker._addOrganic("google.es","q");
pageTracker._addOrganic("google.pt","q");
pageTracker._addOrganic("google.it","q");
pageTracker._addOrganic("google.fr","q");
pageTracker._addOrganic("google.nl","q");
pageTracker._addOrganic("google.be","q");
pageTracker._addOrganic("google.de","q");
pageTracker._addOrganic("google.no","q");
pageTracker._addOrganic("google.se","q");
pageTracker._addOrganic("google.dk","q");
pageTracker._addOrganic("google.fi","q");
pageTracker._addOrganic("google.ch","q");
pageTracker._addOrganic("google.at","q");
pageTracker._addOrganic("google.ie","q");
pageTracker._addOrganic("google.ru","q");
pageTracker._addOrganic("google.pl","q");

// Yahoo EMEA Domains

// Cannot use these as GA only check the third level of a domain - 10-Sep-2008
//pageTracker._addOrganic("uk.search.yahoo.com","p");
//pageTracker._addOrganic("es.search.yahoo.com","p");
//pageTracker._addOrganic("pt.search.yahoo.com","p");
//pageTracker._addOrganic("it.search.yahoo.com","p");
//pageTracker._addOrganic("fr.search.yahoo.com","p");
//pageTracker._addOrganic("nl.search.yahoo.com","p");
//pageTracker._addOrganic("be.search.yahoo.com","p");
//pageTracker._addOrganic("de.search.yahoo.com","p");
//pageTracker._addOrganic("no.search.yahoo.com","p");
//pageTracker._addOrganic("se.search.yahoo.com","p");
//pageTracker._addOrganic("dk.search.yahoo.com","p");
//pageTracker._addOrganic("fi.search.yahoo.com","p");
//pageTracker._addOrganic("ch.search.yahoo.com","p");
//pageTracker._addOrganic("at.search.yahoo.com","p");
//pageTracker._addOrganic("ie.search.yahoo.com","p");
//pageTracker._addOrganic("ru.search.yahoo.com","p");
//pageTracker._addOrganic("pl.search.yahoo.com","p");

// UK specific
pageTracker._addOrganic("hotbot.co.uk","query");
pageTracker._addOrganic("excite.co.uk","q");
pageTracker._addOrganic("bbc","q");
pageTracker._addOrganic("tiscali","query");
pageTracker._addOrganic("uk.ask.com","q");
pageTracker._addOrganic("blueyonder","q");
pageTracker._addOrganic("search.aol.co.uk","query");
pageTracker._addOrganic("ntlworld","q");
pageTracker._addOrganic("tesco.net","q");
pageTracker._addOrganic("orange.co.uk","q");
pageTracker._addOrganic("mywebsearch.com","searchfor");
pageTracker._addOrganic("uk.myway.com","searchfor");
pageTracker._addOrganic("searchy.co.uk","search_term");
pageTracker._addOrganic("msn.co.uk","q");
pageTracker._addOrganic("uk.altavista.com","q");
pageTracker._addOrganic("lycos.co.uk","query");

// Extras
pageTracker._addOrganic("alltheweb","q");
pageTracker._addOrganic("ananzi","qt");
pageTracker._addOrganic("anzwers","search");
pageTracker._addOrganic("araby.com","q");
pageTracker._addOrganic("dogpile","q");
pageTracker._addOrganic("elmundo.es","q");
pageTracker._addOrganic("eniro.se","search_word");
pageTracker._addOrganic("eniro.se","geo_area");
pageTracker._addOrganic("ezilon.com","q");
pageTracker._addOrganic("hotbot","query");
pageTracker._addOrganic("indiatimes.com","query");
pageTracker._addOrganic("iafrica.funnel.co.za","q");
pageTracker._addOrganic("mywebsearch.com","searchfor");
pageTracker._addOrganic("rambler.ru","words");
pageTracker._addOrganic("search.aol.com","encquery");
pageTracker._addOrganic("search.indiatimes.com","query");
pageTracker._addOrganic("searcheurope.com","query");
pageTracker._addOrganic("suche.web.de","su");
pageTracker._addOrganic("terra.es","query");
pageTracker._addOrganic("voila.fr","kw");
pageTracker._addOrganic("technorati.com","tag");
pageTracker._addOrganic("technorati.com","search");
pageTracker._addOrganic("kelkoo","siteSearchQuery"); // depneds on Kelkoo if they pass this through to the merchant
pageTracker._addOrganic("pricerunner","q");	// depneds on Pricerunner if they pass this through to the merchant
pageTracker._addOrganic("images.google","prev");


// Default GA (sorted)
pageTracker._addOrganic("about","terms");
pageTracker._addOrganic("alice","qs");
pageTracker._addOrganic("alltheweb","q");
pageTracker._addOrganic("altavista","q");
pageTracker._addOrganic("aol","query");
pageTracker._addOrganic("aol","encquery");
pageTracker._addOrganic("ask","q");
pageTracker._addOrganic("baidu","wd");
pageTracker._addOrganic("cnn","query");
pageTracker._addOrganic("gigablast","q");
pageTracker._addOrganic("google","q");
pageTracker._addOrganic("live.com","q");
pageTracker._addOrganic("looksmart","qt");
pageTracker._addOrganic("lycos","query");
pageTracker._addOrganic("mamma","query");
pageTracker._addOrganic("msn","q");
pageTracker._addOrganic("najdi","q");
pageTracker._addOrganic("netscape","s");
pageTracker._addOrganic("search","q");
pageTracker._addOrganic("seznam","q");
pageTracker._addOrganic("szukacz","q");
pageTracker._addOrganic("virgilio.it","qs");
pageTracker._addOrganic("voila.fr","kw");
pageTracker._addOrganic("yahoo","p");
pageTracker._addOrganic("yandex.ru","text");


