// MLC Web Analytics pack
// A: David R Green 16/02/2010
// R: Pull _tag declarative from WebAnalytics function - DRG 18/02/2010
// R: Localise variables - DRG 24/02/2010
// R: Campaign tracking for GA & WT9 - DRG 26/02/2010
// R: Campain callout and Spotlight tracking for GA & WT9 - DRG 04/03/2010
// R: Rewrite to WT9 <meta> tracking - DRG 05/04/2010
// R: Add meta url writer when waPagePath defined; multitrack to all external links; definable WT9 ID code - DRG 18/05/2010
// R: Pare down redundant tests on WT9 code override - DRG 28/05/2010
// R: Bug-fix : Small feature *was* expecting an anchor tag always - DRG 02/06/2010
// R: Add search parameter filter to remove required parameters - DRG 03/06/2010
// R: JANA Version, removal of all Advert tracking x dedicated - DRG 07/11/2010


function WebAnalytics (thisDomain,gaIDCode,WTIDCode) { /* WTIDCode : WebTrends9 ID Code (optional) */

	try {
	pageTracker = _gat._getTracker(gaIDCode); /* Google Analytics load */
	} catch(err) {}
	try {
	_tag=new WebTrends(); /* WebTrends 9 load */ /* WebTrends 8 already loaded */
	} catch(err) {}

	waGAOK = (typeof pageTracker != "undefined");
	waT8OK = (typeof dcsWriteImage != "undefined");
	waT9OK = (typeof _tag != "undefined");
	
	if (typeof waGAOnly == "undefined") { waGAOnly = false; } /* if flag not set, then set false */
	if (waT9OK && typeof WTIDCode != "undefined") { _tag.dcsid = WTIDCode; } /* Warning : use parameter with care */
	
	waGAFileListReg = /[^\/]+\.(doc|docx|eps|jpg|png|svg|xls|ppt|pps|pptx|pdf|xlsx|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)/

	waOK2Track = (waPageHost.indexOf(thisDomain) != -1);
	waHomeDomain = thisDomain;
	
	if (waGAOnly) { waT8OK = false; waT9OK = false; } /* turn off WebTrends if Google only required */
	if (!waOK2Track)  { waGAOK = false; waT8OK = false; waT9OK = false; }

	if (waGAOK) { pageTracker._trackPageview(waPagePath+waPageQuery); } /* -- google -- */
	if (waT8OK) { dcsWriteImage(); } /* -- WT8 -- */
	if (waT9OK) {  /* -- WT9 -- */
		_tag.fpcdom = "." + waHomeDomain;
		_tag.dcsGetId();
		_tag.dcsCollect();
	}
} /* WebAnalytics */

function waPageParser(pass) { /* pass = false => pre WA Init ; pass = true => post WA init */
	
	if (document.getElementsByTagName && pass) {
		if (waGAOK) {
			var gaHrefs = document.getElementsByTagName("a");
			for (var i=0;i<gaHrefs.length;i++) {
				try {
					var gaThisProtocol=gaHrefs[i].protocol.toLowerCase();
					var gaThisDomain=gaHrefs[i].hostname.toLowerCase();
					var gaThisPathname=gaHrefs[i].pathname.toLowerCase();
					var gaThisHref=gaHrefs[i].href.toLowerCase();

					var gaThisPathname = (gaThisPathname.charAt(0) == "/") ? gaThisPathname : "/" + gaThisPathname;

					if (gaThisProtocol == "mailto:") {
						waStartListening(gaHrefs[i],"click",waTrackMailto);
						continue;
					}

					if (gaThisProtocol == "javascript:") {
						waStartListening(gaHrefs[i],"click",waTrackScript);
						continue;
					}
					
					if (gaThisHref.match(waGAFileListReg) && gaThisDomain.indexOf(waHomeDomain)!=-1) {
						waStartListening(gaHrefs[i],"click",waTrackDownloads);
						continue;
					}
					
					if (gaThisHref.indexOf("http")==0 && gaThisDomain.indexOf(waHomeDomain)==-1) {
						waStartListening(gaHrefs[i],"click",waTrackExternalLinks);
						continue;
					}
				}
				catch(e){ continue; }
			} /* for */
		} /* waGAOK */
	} /* getElementsByTagName && pass */

	/* Dedicated advertising elements */
	
	if (document.getElementById && waProtoOK) {
		var adverts = $$('div.waTrackedAdvert');
		if (adverts.length > 0) {
			for (var i=0; i<adverts.length; i++) {
				var advertLabel = adverts[i].getAttribute("data-waTrackedAdvertLabel");
				if (pass) {
					waEventAdvert(advertLabel);
				} else {
					waMetaWriter("WT.ad",advertLabel);
				}
				var advertsA = adverts[i].getElementsByTagName("a");
				for (var j=0; j<advertsA.length; j++) {
					if (pass) {
						waStartListening(advertsA[j],"click",waEventAdvertClick);
					} else {
						advertsA[j].href = waAppendQuery(advertsA[j].href,"WT.ac",advertLabel);
					}
				} /* j */
			} /* i */
		} /* adverts */
	}

} /* waPageParser */

function waMetaWriter(name,content) { 	document.writeln('<meta name="'+name+'" content="'+content+'" />'); }

function waAppendQuery (href,parm,value) {
	href += (href.indexOf("?") == -1)?"?":"&";
	href += parm + "=" + value;
	return href;
}

function waFetchLabel(atag) {
	var images = atag.getElementsByTagName("img");
	var labelText = "";
	for (var i=0; i<images.length; i++) {
		if (typeof images[i].alt != "undefined") if (images[i].alt != "") { labelText = images[i].alt; break }
		if (typeof images[i].title != "undefined") if (images[i].title != "") { labelText = images[i].title; break }
	}
	if (labelText == "") { /* if no alt or title text found */
		labelText = atag.pathname.toLowerCase().replace("/mlc/",""); /* use path and delete leading /mlc directory */
		labelText = labelText.replace(".html",""); /* remove extension */
		labelText = labelText.replace(/\//g," "); /* convert all slashes to spaces */
	}
	return labelText;
}
	
function waEventCall(waEventId) {
	if (typeof waEventId.id == "undefined") return true; /* exit if no id tag */ 
	var waEvent = waEventId.id.toString();
	if (waGAOK) { pageTracker._trackPageview(waPagePath + "/" + waEvent); } /* -- ga -- */
	if (waT8OK) { dcsMultiTrack("DCS.dcsuri",waPagePath+"/"+waEvent); } /* -- WT8 -- */
	if (waT9OK) { _tag.dcsMultiTrack("DCS.dcsuri",waPagePath+"/"+waEvent); } /* -- WT9 -- */
	return true;
}

function waEventCallStr(waEventStr) {
	if (waGAOK) { pageTracker._trackPageview(waPagePath + "/" + waEventStr); } /* -- ga -- */
	if (waT8OK) { dcsMultiTrack("DCS.dcsuri",waPagePath+"/"+waEventStr); } /* -- WT8 -- */
	if (waT9OK) { _tag.dcsMultiTrack("DCS.dcsuri",waPagePath+"/"+waEventStr); } /* -- WT9 -- */
	return true;
}

function waEventAnchor(eventType,eventLink) {
	pageTracker._trackEvent(eventType,eventLink,waPagePath); /* -- ga -- */
	if (eventType == "External") {
		if (waT8OK) { dcsMultiTrack("DCS.dcssip",eventLink); } /* -- WT8 -- */
		if (waT9OK) { _tag.dcsMultiTrack("DCS.dcssip",eventLink); } /* -- WT9 -- */
	}
	if (eventType == "File" && waTrackFlagFile) {
		pageTracker._trackPageview("/file/" + eventLink)
	}
}

function waEventAdvert(evnt) {
	if (typeof evnt != "string") {
		var waAdvertRef = waFetchLabel(evnt);
	} else {
		var waAdvertRef = evnt;
	}
	if (waGAOK) waEventAnchor("Onsite Ad Impression",waAdvertRef); /* -- ga -- */
	if (waT8OK) { dcsMultiTrack("WT.ad",waAdvertRef); } /* -- WT8 -- */
}
	
function waEventAdvertClick(evnt) {
	if (typeof evnt != "string") {
		var e = (evnt.srcElement)?evnt.srcElement:this;
		while (e.tagName != "A") { e = e.parentNode; }
		var waAdvertRef = waFetchLabel(e);
	} else {
		var waAdvertRef = evnt;
	}
	if (waGAOK) waEventAnchor("Onsite Ad Clickthroughs",waAdvertRef); /* -- ga -- */
	if (waT8OK) { dcsMultiTrack("WT.ac",waAdvertRef); } /* -- WT8 -- */
}
	
function waTrackMailto(evnt) {
	var e = (evnt.srcElement)?evnt.srcElement:this;
	while (e.tagName != "A") { e = e.parentNode; }
	var hrefStr = e.href.substring(7);
	if (waGAOK) waEventAnchor("Email",hrefStr);
}

function waTrackScript(evnt) {
	var e = (evnt.srcElement)?evnt.srcElement:this;
	while (e.tagName != "A") { e = e.parentNode; }
	var hrefStr=e.href.substr(11);
	if (waGAOK) waEventAnchor("Script",hrefStr);
}

function waTrackDownloads(evnt) {
	var e = (evnt.srcElement)?evnt.srcElement:this;
	while (e.tagName != "A") { e = e.parentNode; }
	var fileName = e.href.match(waGAFileListReg);
	if (waGAOK) waEventAnchor("File",fileName[0]);
}

function waTrackExternalLinks(evnt) {
	var e = (evnt.srcElement)?evnt.srcElement:this;
	while (e.tagName != "A") { e = e.parentNode; }
	/*if (waGAOK)*/ waEventAnchor("External",e.href);
}

function waStartListening(obj,evnt,func) {
	if (obj.addEventListener) {
		obj.addEventListener(evnt,func,false); /* mozilla */
	}
	else { 
		if (obj.attachEvent) {
			obj.attachEvent("on" + evnt,func); /* ie5+ only */
		}
	}
}

/* ------------- Load time execution and Initialisation ------------- */

var waProtoOK = (typeof Prototype != "undefined"); /* prototype available */
var waNewPath = false;

if (typeof waPageQuery == "undefined") { waPageQuery = unescape(window.location.search); }
if (typeof waQueryFilter != "undefined" && waPageQuery) {
	var waFilterArray = waQueryFilter.split(",");
	var waNewSearch = "";
	waQueryArray = waPageQuery.substring(1,waPageQuery.length).split("&");
	for (var i=0;i<waQueryArray.length;i++) {
		var waQueryArrayItem = waQueryArray[i].split("=");
		var waQueryMatch = false;
		for (var j=0; j<waFilterArray.length; j++) {
			if (waQueryArrayItem[0] == waFilterArray[j]) { waQueryMatch = true; waFilterArray.splice(j,1); break; }
		} /* for j */
		if (!waQueryMatch) { waNewSearch = waAppendQuery(waNewSearch,waQueryArrayItem[0],waQueryArrayItem[1]); }
	} /* for i */
	waPageQuery = waNewSearch;
}

if (typeof waPageHref == "undefined") { waPageHref = window.location.href; }
if (typeof waPageHost == "undefined") { waPageHost = window.location.hostname.toLowerCase(); }
if (typeof waPagePath == "undefined") { waPagePath = window.location.pathname; } else { waNewPath = true; }

if (waNewSearch || waNewPath) { waMetaWriter("DCS.dcsuri",waPagePath); waMetaWriter("DCS.dcsqry",waPageQuery.substring(1)); }

if (typeof waTrackFlagFile == "undefined") { waTrackFlagFile = false; } /* pre-define waTrackFlagFile to true if files are to be tracked as pages for GA */

if (typeof waDomain == "undefined") { waDomain = "jana.com.au"; }
if (typeof waGAID == "undefined") { waGAID = "UA-19561772-1"; }

waPageParser(false);

if (typeof waWTID == "undefined") { WebAnalytics(waDomain,waGAID); } else { WebAnalytics(waDomain,waGAID,waWTID); }

waPageParser(true);





