//	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.		
// 10/22/09 jmallick added tracking for getFile.cfm	and added conditions to trackDocumentLinks for mysiteid and salesiteid				

if(document.getElementsByTagName)
{
	// Initialize external link handlers
	var hrefs = document.getElementsByTagName("a");
	for(var l = 0; l < hrefs.length; l++)
	{
		// try {} catch{} block added by erikvold VKI
		try
		{
			//protocol, host, hostname, port, pathname, search, hash
			if(hrefs[l].protocol == "mailto:")
			{
				startListening(hrefs[l],"click",trackMailto);
			}
			else if(hrefs[l].hostname == location.host)
			{
				var path = hrefs[l].pathname + hrefs[l].search;
				//var isDoc1 = path.match(/(?:getdoc.cfm)($|\&|\?)/);
				var isDoc1 = path.match(/getdoc.cfm\?docid=/i);
				var isDoc2 = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
				var isDoc3 = path.match(/getfile.cfm\?docid=/i);
				if(isDoc1 || isDoc2 || isDoc3)
				{
					//alert('isdoc1='+isDoc1+'\nisdoc2='+isDoc2+'\nisdoc3='+isDoc3);
					startListening(hrefs[l],"click",trackDocumentLinks);
				}
			}
			else
			{
				/* Do Nothing
				var path = hrefs[l].pathname;
				//to make sure, we exclude javascript:void(0) urls;
				var isURL = path.match(/void\(0\);/i);
				if(!isURL)
				{
					startListening(hrefs[l],"click",trackExternalLinks);
				}
				*/
			}
		}
		catch(e)
		{
			continue;
		}
	}
}

function startListening(obj,evnt,func)
{
	if(obj.addEventListener)
	{
		obj.addEventListener(evnt,func,false);
	}
	else if(obj.attachEvent)
	{
		obj.attachEvent("on" + evnt,func);
	}
}

function trackMailto(evnt)
{
	var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
	var mailto = "/mailto/" + href.substring(7);
	if(typeof(pageTracker) == "object") pageTracker._trackPageview(mailto);
}

function trackDocumentLinks(evnt)
{
	var e = (evnt.srcElement) ? evnt.srcElement : this;
	while (e.tagName != "A")
	{
		e = e.parentNode;
	}
	var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
	if(e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
	if(e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;

	if(typeof(pageTracker) == "object")
	{
		var strPageTitle = document.title;
		var strCurrentPageURL = location.pathname + location.search;
		var strLocPathname = location.pathname;
		var strLocSearch = location.search;
		var strLinkText = e.innerText;
		var strLinkSearch = e.search;

		if(!strLinkSearch) strLinkSearch = e.pathname;

		strPageTitle = strPageTitle.replace(/integrated device technology - /i,"");

		//If page title is Integrated Device Technology and if the current page is not the homepage, then set strPageTitle to 'NONAME'
		if(!strPageTitle || (strPageTitle.toLowerCase() == "integrated device technology" && (strLocPathname.replace(/\//,"") || strLocSearch)))
			strPageTitle = "NONAME";

		var strDocDwnldFrom;
		
		if(strLocSearch.match(/\?catid=/i))
			strDocDwnldFrom = "From: Category";
		else if(strLocSearch.match(/\?genid=/i))
			strDocDwnldFrom = "From: Generics";
		else if(strLocSearch.match(/\?partid=/i))
			strDocDwnldFrom = "From: Orderables";
		else if(strLocSearch.match(/\?app=packaging/i))
			strDocDwnldFrom = "From: Packages";
		else if(strLocSearch.match(/app=search&searchtype=keyword/i))
			strDocDwnldFrom = "From: Keyword Search";
		else if(strLocSearch.match(/app=search&searchtype=document/i))
			strDocDwnldFrom = "From: Document Search";
		else if(strLocSearch.match(/mysiteid=/i))
			strDocDwnldFrom = "From: Secure MySites";
		else if(strLocSearch.match(/salesiteid=/i))
			strDocDwnldFrom = "From: Secure SalesSites";	
		else
			strDocDwnldFrom = "From: Other";
		
		
		var strDocDwnldPath = strPageTitle+"__"+strLocSearch.replace(/\?/,"")+" > "+strLinkText+"__"+strLinkSearch.replace(/\?/,"");
		
		var strDocDwnldName = "";
		
		if(typeof(strLinkText) != "undefined" && strLinkText != '')
		{
			var strDocDwnldName = "/dwnlds/"+strLinkText+"__"+strLinkSearch.replace(/\?/,"");
		}
		
		//alert(strDocDwnldPath);

		if(strCurrentPageURL != '' && lnk != '')
		{
			pageTracker._trackPageview(strCurrentPageURL);
			pageTracker._trackPageview(lnk);
		}

		if(strDocDwnldName != "")
		{
			pageTracker._trackPageview(strDocDwnldName);
		}
		
		pageTracker._trackEvent("Document Downloads",strDocDwnldFrom,strDocDwnldPath);
	}
}

function trackExternalLinks(evnt)
{
	var e = (evnt.srcElement) ? evnt.srcElement : this;
	while (e.tagName != "A")
	{
		e = e.parentNode;
	}
	var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
	if(e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
	if(e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;
	if(typeof(pageTracker) == "object")
	{
		pageTracker._trackPageview(location.pathname + location.search);
		pageTracker._trackPageview(lnk);
	}
}

