//  Based on a script downloaded from http://www.goodwebpractices.com/downloads/gatag.js
//  This javascript tags mailto links, file downloads (anything that is not a .cfm file), external links, and submits 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 and all outbound links and links to non-html files should now be automatically tracked.


function startListening(obj, evnt, func) {
	if (obj.addEventListener) {
    obj.addEventListener(evnt, func, false);
	} else if (obj.attachEvent) {
    obj.attachEvent("on" + evnt, func);
	}
}    


function trackSubmit(evnt) {
  var title, submit;
  title = (evnt.srcElement) ? evnt.srcElement.value : this.value;
  submit = "/submit/" + title;
  if (typeof(_gaq) === "object") {
    _gaq.push(['_trackPageview', submit]);
    //alert("submit link tracking using gatag.js\n\n" + submit);
  }
} 


function trackMailto(evnt) {
	var href, mailto;
	href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
	mailto = "/mailto/" + href.substring(7);
	if (typeof(_gaq) === "object") {
    _gaq.push(['_trackPageview', mailto]);
    //alert("mailto link tracking using gatag.js\n\n" + mailto);
	}
} 
        

function trackLink(evnt) {
	var lnk, e = (evnt.srcElement) ? evnt.srcElement : this;
	
	while (e.tagName !== "A") {
    e = e.parentNode;
	}
	
	lnk = (e.pathname.charAt(0) === "/") ? e.pathname : "/" + e.pathname;
	
	if (e.search && e.pathname.indexOf(e.search) === -1) {
		lnk += e.search;
	}
	
	if (e.href.indexOf("javascript") !== -1) {
    //lnk = "/javascript/";
    //alert("javascript link tracking using gatag.js\n\n" + lnk);
  } else if (e.hostname !== location.host) {
		if (e.hostname.indexOf(".massey.ac.nz") !== -1) {
      lnk = "/internal/" + e.hostname + lnk;
      //alert("internal link tracking using gatag.js\n\n" + lnk);
    } else {
			lnk = "/external/" + e.hostname + lnk;
			//alert("external link tracking using gatag.js\n\n" + lnk);
	  }
  } else if (e.pathname.indexOf("/massey/") !== -1 && (e.pathname.indexOf(".cfm") !== -1) || e.pathname.charAt(e.pathname.length - 1)) {
    //lnk = "/internal/" + e.hostname + lnk;
    //alert("internal link tracking using gatag.js\n\n" + lnk);
  } else if (e.pathname.indexOf("/shadomx/") !== -1 && (e.pathname.indexOf(".cfm") !== -1) || e.pathname.charAt(e.pathname.length - 1)) {
    //lnk = "/shado/" + e.hostname + lnk;
    //alert("shado link tracking using gatag.js\n\n" + lnk);
  } else {
    lnk = "/download/" + e.hostname + lnk;
    //alert("download link tracking using gatag.js\n\n" + lnk);
  }
  
	if (typeof(_gaq) === "object") {
		_gaq.push(['_trackPageview', lnk]);
	} 
}


if (document.getElementsByTagName) {
	var hrefs, inputs, buttons, i;
	
  // initialize link handlers
  hrefs = document.getElementsByTagName('a');
  for (i = 0; i < hrefs.length; i++) {
    try {
      if (hrefs[i].protocol === "mailto:") {
        startListening(hrefs[i], "click", trackMailto);
      } else {
        startListening(hrefs[i], "click", trackLink);
      }
    }
    catch (ehref) {
      continue;
    }
	}
  
  // initialize submit handlers
  inputs = document.getElementsByTagName('input');
  for (i = 0; i < inputs.length; i++) {
    try {
      if (inputs[i].type === "submit") {
        startListening(inputs[i], "click", trackSubmit);
      }
    }
    catch (esubmit) {
      continue;
    }
  }
  buttons = document.getElementsByTagName('input');
  for (i = 0; i < buttons.length; i++) {
    try {
      if (buttons[i].type === "button") {
        startListening(buttons[i], "click", trackSubmit);
      }
    }
    catch (ebutton) {
      continue;
    }
  }
}

