function getTitle(){
	if(WTE.config.getTitleFrom == 1){
		if(document.title)
			WT.ti = document.title;
	} else if (WTE.config.getTitleFrom == 2){
		var h1s = document.getElementsByTagName("h1");

		if(h1s.length > 0)
			WT.ti = h1s[0].innerHTML;
	} 
}

function addDomain(){
	if (WTE.config.addDomain){
		DCSext.VXdom = document.location.host;
		DCSext.domain = document.location.host;
	}
}

function addGrouping(){
	if(WTE.config.pathGrouping){
		var dirs = document.location.pathname.split(/\//);

		// removing empty string - mozilla bug
		for(var i = 0; i < dirs.length; i++)
			if(dirs[i] == null || dirs[i] == ""){
				dirs = dirs.slice(0, i).concat(dirs.slice(i + 1, dirs.length));
			}

		slashes = 0;
		for(var i = 0; i < document.location.pathname.length; i++)
			if(document.location.pathname.charAt(i) == "/")
				slashes++;

		// if this is absolute path - remove first empty line
		if(slashes >= 3){
	   		WT.cg_n = dirs[0];
   			WT.cg_s = dirs[1];
		}

		if(slashes == 2)
	   		WT.cg_n = dirs[0];
	}           
}

function addCustomEvents(){
	oldClicks = []
	oldMouseOvers= []
	oldMouseOuts = []
	realURLs = []

	var links = document.getElementsByTagName("A");
	var uniqueCounter = 1;

	// iterating over links
	for(var i = 0; i < links.length; i++){
	    // remembering old events
		oldClicks[i] = links[i].onclick;
		oldMouseOvers[i] = links[i].onmouseover;
		oldMouseOuts[i] = links[i].onmouseout;

		// shortcut
		var lnk = links[i];

		// do something only if href presented in a link
		if(lnk.href != null){
			var href = lnk.href;

			// current file extension
			var curExt = href.split(/\?/, 2)[0];
			curExt = curExt.substr(curExt.lastIndexOf(".") + 1);

			// getting current path to file(including filename)
			var uri = href;
			var domain = document.location.host;
		
			if(uri.substr(0, 7) == "http://" || uri.substr(0, 8) == "https://"){
				if(uri.substr(0, 7) == "http://")
					uri = uri.substr(7);

				if(uri.substr(0, 8) == "https://")
					uri = uri.substr(8);

				domain = uri.substr(0, uri.search("/"))
				uri = uri.substr(domain.length)
			}

			var fileName = uri.split(/\?/)[0]
			
			var addUnique = false;
			// don't add unique counter to links, where it already present
			if(WTE.config.addUniqueCounter && !lnk.href.match(/[?&]WT\.svl=/)){
				// adding unique counter to duplicate links
				for(var j = 0; j < i; j++)
					if(lnk.href == links[j].href){
						addUnique = true;
						break;
					}
		
				if(addUnique){
					if(lnk.href.indexOf("?") < 0)
						lnk.href += "?";
					else
						lnk.href += "&";
						
					lnk.href += "WT.svl=" + ++uniqueCounter;
				}
			}

			// checking - if I must add multiTrack for this link
			var addTrack = false;
			if(WTE.config.trackDownload){
				for(var e = 0; e < WTE.config.downloadTypes.length; e++)
					if(curExt == WTE.config.downloadTypes[e]){
					    addTrack = true;
					    break;
					}
			}

			var trackExit = false;
			if(WTE.config.trackExitLinks)
				if(getSecondLevelDomain(document.location.host) != getSecondLevelDomain(domain))
			    	trackExit = true;

			realURLs[i] = links[i].href;

			var resOnClick = "";

			if(addTrack && !trackExit)
				resOnClick += "dcsMultiTrack('DCS.dcsuri', '" + uri + "');";

			if(trackExit)
				resOnClick += "dcsMultiTrack('DCS.dcsuri','/exitlink.asp', 'DCS.dcsqry', 'url=" + realURLs[i] + "')";
			
			eval("var func = function(){if(WTE.config.showNiceAddresses){this.href = '" + realURLs[i] + "';} " + resOnClick + ";if(oldClicks[" + i + "] != null) oldClicks[" + i + "]();}")
		
			if(WTE.config.showNiceAddresses){
				links[i].onmouseover = function(){ this.href = cleanURI(this.href) }
				eval("links[i].onmouseout = function(){ this.href = '" + realURLs[i] + "'};")
			}
	
			links[i].onclick = func;
			func = null;
			old_func = null;
		}
	}
}

function WTEGetConfig(){
    // setting methods
	WTE = new Object();
	WTE.addEvents = addCustomEvents;
	WTE.addDomain = addDomain;
	WTE.addGrouping = addGrouping;
	WTE.process = addCustomEvents;
	WTE.getTitle = getTitle;

	// creating config variable
	WTE.config = new Object();

	// setting config default variables
	WTE.config.downloadTypes = [];
	WTE.config.addUniqueCounter = false;
	WTE.config.trackDownload = false;
	WTE.config.trackExitLinks = false;
	WTE.config.showNiceAddresses = false;
	WTE.config.addDomain = false;
	WTE.config.pathGrouping = false;
	WTE.config.getTitleFrom = 2;

	// run addCustomEvents when content would be loaded
	window.onload = addCustomEvents;
}

function getSecondLevelDomain(domain){
	return domain.replace(/^.*\.(.*\..*)/, '$1')
}

function cleanURI(uri){
	return uri.replace(/[?&](WT|DCS|VX)\.[^=]+=[^&$]*/g, "")
}


WTEGetConfig();
