//	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.
function configureEvents(){
	if (document.getElementsByTagName && typeof(pageTracker) == "object") {
			
		// Initialize external link handlers  
		var hrefs = document.getElementsByTagName("a");
		var category, action, label, value, listen;

		for (var l = 0; l < hrefs.length; l++) {
			// try {} catch{} block added by erikvold VKI		
			try{	                
				listen = false;
				if (hrefs[l].protocol == "mailto:") {
					category = "links";
					action = "mailto";
					label = hrefs[l].href.substring(7);
					listen = true;
				} else {				
					if (hrefs[l].hostname == location.host) { // not an external, is it a download?
						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) {
							category = "links";
							action = "download";
							label = hrefs[l].href;
							listen = true;
						}      											
					} else { // link is external
							category = "links";
							action = "external";
							label = hrefs[l].href;
							listen = true;											
					}
					
				}
	
				if (listen) {
					hrefs[l].tracker_category = category;
					hrefs[l].tracker_label = label;
					hrefs[l].tracker_action = action;
				
					startListening(hrefs[l],"click",trackLink);					
					listen = false;
				}	
				
				
				
			} catch(e) {								
				continue;				
			}
			
		}
		
	}
			// now do forms
	if (document.forms){
		for (var i=0; i<document.forms.length; i++){			
			frm = document.forms[i];
			if (frm.method.toLowerCase() == "post"){
				startListening(frm,"submit",trackForm);				
			}		
		}
	}

}

function trackLink (evnt){
	var e = (evnt.srcElement) ? evnt.srcElement : this;	
	while (e.tagName != "A") {			
		e = e.parentNode;	
	}
	pageTracker._trackEvent(e.tracker_category, e.tracker_action, e.tracker_label);
}

function trackForm (evnt){
	var frm = (evnt.srcElement) ? evnt.srcElement : this;	
	while (frm.tagName != "FORM") {			
		frm = frm.parentNode;	
	}
	report ="Form:"
	var label = document.location+"?";
	for (var i=0; i<frm.elements.length; i++) {
		switch (frm.elements[i].type){
			case "text":
			case "textarea":
				label+=escape(frm.elements[i].name)+"="+(frm.elements[i].value.length?1:0)+"&";
				break;
			case "checkbox":
				label+=escape(frm.elements[i].name)+"="+frm.elements[i].checked+"&";
				break;	
			case "radio":
			case "select":
			case "select-multiple":
				if (frm.elements[i].checked || frm.elements[i].selected) label+=escape(frm.elements[i].name)+"="+escape(frm.elements[i].value)+"&";
				break;			
		}
	}

	pageTracker._trackEvent("forms", shortURLMagic(document.location.href, 'home', true), label);
}

function shortURLMagic(_str, _default, _strip) {
	var arr = _str?_str.match(/^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$/):null;
	if (!arr) return _default;
 	arrnxt = arr[6].match(/^(.*?)(\/|\.htm)/);
	return (_strip && arrnxt)?arrnxt[1]:arr[6];
}	

function startListening (obj,evnt,func) {
	if (obj.addEventListener) {
		obj.addEventListener(evnt,func,false);       
	} else if (obj.attachEvent) {                
		obj.attachEvent("on" + evnt,func);        
	}
}
