/*
 * 	Custom Variables Used:
 *		Slot 1 - Internal Campaign Tracking - session scope
 *		Slot 2 - Member vs non-member tracking - visitor scope
 */
if (document.location.href.indexOf('.vkistudios.net') != -1)
	GAWebPropID = "UA-5002093-1";
else
	GAWebPropID = "UA-5717056-1";

var docslist = "docx|doc|pdf|swf"; // pipe-separated list of extensions to track
var numBaseDomainParts = 2; // number of parts in the base domain.  ie www.example.com = 2, www.example.co.uk = 3

/* BEGIN: VKIGA Class */

/**
 * Construct a new VKIGA object.
 * @class This is the GA wrapper class
 * @constructor
 * @returns A new VKI tracker
 */
	  
function VKIGA () {

	var baseDomain = "";
	
	// set the base domain
	
	var splitHost = document.location.host.split('.');
	
	for (var i = 1; i <= window.numBaseDomainParts; i++) {
		
		baseDomain = '.' + splitHost[splitHost.length - i] + baseDomain;
	}
	
	baseDomain = baseDomain.substr(1);
	
	/* BEGIN: Privileged Functions */
	
	/**
	 * Returns the base domain of the website
	 *
	 * @privileged
	 */
	this.getBaseDomain = function() {
		return baseDomain;
	}
	
	var _this = this;
	
	/**
	 *  Adds event handler for specified event to an element
	 *  
	 * @privileged
	 * @param {object} element Element to add event listener to
	 * @param {string} type Event to listen for.  Do not prepend event with 'on', as the functions automatically prepends it
	 * @param {object} expression Javascript function to execute on event.  Can be either a function name or anonymous function
	 * @param {boolean} bubbling Sets whether to register the event on bubbling phase (true) or capturing phase (false).  Only applies to W3C compliant browsers.
	 * @returns	True on success, false on failure
	 * @type boolean
	 */
	this.addListener = function (element, type, expression, bubbling) {
		bubbling = bubbling || false;
		
		if (window.addEventListener) { // Standard
			element.addEventListener(type, expression, bubbling);
			return true;		
		} else if(window.attachEvent) { // IE
			element.attachEvent('on' + type, expression);
			return true;
		} else
			return false;
	}
	
	this.pageLoaded = function() {
		try {
			var ICName = _this.getURLParameter('ICName');
			var ICValue = _this.getURLParameter('ICValue');
			
			if (ICName != '' && ICValue != '') {
				pageTracker._setCustomVar(1, ICName.replace(/%20/g, " "), ICValue.replace(/%20/g, " "), 2);
			}
			
			if (document.memberLoggedOn) {
				pageTracker._setCustomVar(2, 'member tracking', 'member', 1);
			}
			
			if (!pageTracker._getVisitorCustomVar(2)) {
				pageTracker._setCustomVar(2, 'member tracking', 'non-member', 1);
			}
				
			if (document.strTrackPageView) {
				pageTracker._trackPageview(document.strTrackPageView);
			} else {
				pageTracker._trackPageview();
			}
			
			if (docslist != "") {
				_this.tagLinks(docslist);
			}
		} catch (e){}
	}
	
	this.appendICParams = function(anchor, ICName, ICValue) {
		
		if (anchor.href.search(/\?/) != -1)
			anchor.href += '&';
		else
			anchor.href += '?';
			
		anchor.href = anchor.href + 'ICName=' + ICName.replace(/\s/g, "%20") + '&ICValue=' + ICValue.replace(/\s/g, "%20");
	}
	
	this.getURLParameter = function (name) {
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regexS = "[\\?&]"+name+"=([^&#]*)";
		var regex = new RegExp( regexS );
		var results = regex.exec( window.location.href );
		if( results == null )
			return "";
		else
			return results[1];
	}
	
	this.tagLinks = function (docslist) {
		
		isDocs = (typeof docslist == 'boolean') ? docslist : docslist > '';	// Determine isDocs 
		if (typeof docslist == 'string' && docslist > '') patternDocslist = new RegExp('\\.(?:' + docslist + ')($|\\&|\\?)'); // updated by erikvold VKI added \? in second group:
		
		if (isDocs && document.getElementsByTagName) {

		// Initialize external link handlers
	        var hrefs = document.getElementsByTagName("a");
	        for (var h = 0; h < hrefs.length; h++) {
				// try {} catch{} block added by erikvold VKI
				try {
					
					//protocol, host, hostname, port, pathname, search, hash
					if (isDocs && hrefs[h].hostname == location.host) { //BK VKI 080820
						var path = hrefs[h].pathname + hrefs[h].search;
						
						var isDoc = path.match(patternDocslist);							
						
						if (isDoc) {
							_this.addListener(hrefs[h],"click",_this.trackDownloadLinks);
						}
					}
				}  catch(e){
					continue;
				}
	        }
		}
	}
	
	this.trackDownloadLinks = function (e) {
		
		var targ;
		if (!e) var e = window.event;
		if (e.target) targ = e.target;
		else if (e.srcElement) targ = e.srcElement;
		if (targ.nodeType == 3) // defeat Safari bug
			targ = targ.parentNode;
		
		while (targ.tagName !== "A") {
				targ = targ.parentNode;
		}
		
		var lnk = (targ.pathname.charAt(0) == "/") ? targ.pathname : "/" + targ.pathname; 
		var ext = lnk.substr(lnk.lastIndexOf('.') + 1);
		
		
		lnk = "/" + ext + lnk;
		
		try {
			pageTracker._trackPageview(lnk);
		} catch (e) {}
	}
	
	/* END: Priviledged Functions */
}

var _vkiga = new VKIGA();

/* BEGIN: initialize page tracking object */

try {
	var pageTracker = _gat._getTracker(GAWebPropID);
	pageTracker._setDomainName("." + _vkiga.getBaseDomain());
	_vkiga.addListener(window, 'load', _vkiga.pageLoaded);
	
} catch(e) {}


/* END: initialize page tracking object */