// 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: Remove terminating slash on waPagePath initialisation - DRG 23/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 */

  /* Homepage small feature tracking */
	
	if (document.getElementById) {
		if (document.getElementById("homegraphic")) {
			var divlist = document.getElementById("homegraphic").getElementsByTagName("div");
			if (divlist.length > 0) {
				for (var i=0; i<divlist.length; i++) {
					if (divlist[i].style.display == "block") {
						var targElement = divlist[i].getElementsByTagName("a");
						if (targElement.length > 0) {
							var advId = waFetchLabel(targElement[0]);
							if (pass) {
								waEventAdvert(targElement[0]);
							} else {
								waMetaWriter("WT.ad",advId);
							}
							for (var j=0; j<targElement.length; j++) {
								if (pass) {
									waStartListening(targElement[j],"click",waEventAdvertClick);
								} else {
									targElement[j].href = waAppendQuery(targElement[j].href,"WT.ac",advId);
								}
							} /* for j */
						} /* targElement > 0 */
					} /* if block */
				} /* for i */
			} /* if divlist */
		} /* if homegraphic */
	}

	/* campaign callout tracking */
	
	if (document.getElementById && waProtoOK) {
		var col3 = $$("div.cthr");
		if (col3.length > 0) {
			var col3div = col3[0].getElementsByTagName("div");
			var i = 0;
			var col3targ = -1;
			while (i < col3div.length) {
				if (col3div[i].className == "feature") {
					i++;
					if (col3div[i].className == "") { i++; }
				} else {
					col3targ = i; break;
				}
			} /* i */
			if (col3targ > 0) {
				var col3callout = col3div[col3targ].getElementsByTagName("a");
				for (var i=0; i<col3callout.length; i++) {
					advId = waFetchLabel(col3callout[i]);
					if (pass) {
						waEventAdvert(col3callout[i]);
						waStartListening(col3callout[i],"click",waEventAdvertClick);
					} else {
						waMetaWriter("WT.ad",advId);
						col3callout[i].href = waAppendQuery(col3callout[i].href,"WT.ac",advId);
					}
				} /* i */
			} /* col3targ */
		} /* col3 */
	}
	
	/* Spotlight Tracking */
	
	if (document.getElementById && waProtoOK) {
		var featureDiv = $$("div.feature");
		if (featureDiv.length > 0) {
			for (var i=0; i<featureDiv.length; i++) {
				var featureDivH2 = featureDiv[i].getElementsByTagName("h2");
				if (featureDivH2.length>0) {
					if (featureDivH2[0].innerHTML.toLowerCase().indexOf("spotlight") != -1) {
						var featureDivDiv = featureDiv[i].getElementsByTagName("div");
						for (var j=0; j<featureDivDiv.length; j++) {
							var featureDivDivA = featureDivDiv[j].getElementsByTagName("a");
							for (var k=0; k<featureDivDivA.length; k++) {
								if (featureDivDivA[k].className.indexOf("waNoAutoTag") == -1) {
									var advId = waFetchLabel(featureDivDivA[k]);
									if (pass) {
										waEventAdvert(featureDivDivA[k]);
										waStartListening(featureDivDivA[k],"click",waEventAdvertClick);
									} else {
										waMetaWriter("WT.ad",advId);
										featureDivDivA[k].href = waAppendQuery(featureDivDivA[k].href,"WT.ac",advId);
									}
								} /* tag anchor */
							} /* k anchors within div */
						} /* j divs within feature */
					} /* spotlight found */
				} /* h2 */
			} /* i */
		} /* featureDiv */
	}
	
	/* 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.replace(/\/$/,""); } 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 = "mlc.com.au"; }
if (typeof waGAID == "undefined") { waGAID = "UA-1614577-1"; }

waPageParser(false);

if (typeof waWTID == "undefined") { WebAnalytics(waDomain,waGAID); } else { WebAnalytics(waDomain,waGAID,waWTID); }

waPageParser(true);





