//Possible variables to set in the calling file:
//numberOfHits
//searchWord
//session
//title
//url
//guid
//groups
//filetype
//responseTime
//path
//cvid
//cid
//metagroupname - Gives the possibility to automatically create group from metatag named the "metagroupname"
var src_loaded = false;
var sz_previousSessionId = "";

function writeStatistics() {
   if (src_loaded == true) return;
	var sz_session = "";if (typeof session!="undefined") sz_session = session;

   var randomNum = Math.floor(Math.random()*100000) ;
   var nmstatCookie = Get_Cookie('nmstat');
   if (nmstatCookie==null) {storeMasterCookie();storeIntelligentCookie('nmstat',sz_session+randomNum);}
   nmstatCookie = Get_Cookie('nmstat');
   if (nmstatCookie!=null) sz_previousSessionId = escape(nmstatCookie);

   var sz_screenResolution = window.screen.width + "x" + window.screen.height;
   var sz_title = ""; sz_title=escape(document.title);
   var jstitle = "";if (typeof title=="string") sz_title=escape(title);
   var sz_referer = ""; if (typeof referer=="string") sz_referer=escape(referer); else sz_referer=escape(top.document.referrer);
   var sz_url = "";if (typeof url=="string") sz_url=escape(url); else sz_url=escape(location.href);
   var sz_guid = "";if (typeof guid!="undefined") sz_guid=escape(guid);
   var sz_uid = "";if (typeof uid!="undefined") sz_uid=escape(uid);
   var sz_groups = "";if (typeof groups!="undefined") sz_groups=escape(groups);
   var sz_filetype = "";if (typeof filetype!="undefined") sz_filetype=escape(filetype);
   var sz_numberOfHits = "";if (typeof numberOfHits!="undefined") sz_numberOfHits=escape(numberOfHits);
   var sz_searchWord = "";if (typeof searchWord!="undefined") sz_searchWord=escape(searchWord);
   var sz_responseTime = "";if (typeof responseTime!="undefined") sz_responseTime=escape(responseTime);
   var sz_path = "";if (typeof path!="undefined") sz_path=escape(path);
   var sz_cvid = "";if (typeof cvid!="undefined") sz_cvid=escape(cvid);
   var sz_cid = "";if (typeof cid!="undefined") sz_cid=escape(cid);
	document.write("<img style=\"width:1px;height:1px;position:absolute\" src=\"//uk1.siteimprove.com/image.aspx?url=" + sz_url + "&cid="+sz_cid+"&cvid="+sz_cvid+"&session="+sz_session+"&title="+sz_title+"&path="+sz_path+"&rt=" + sz_responseTime + "&ref=" + sz_referer + "&res="+sz_screenResolution+"&sw="+sz_searchWord+"&hits="+sz_numberOfHits+"&ft="+sz_filetype+"&groups="+sz_groups+"&rn="+randomNum+"&prev="+sz_previousSessionId+"&guid="+sz_guid+"&uid="+sz_uid+"&jstitle="+jstitle+"\" hspace=0 vspace=0 alt='' width=1 height=1 border=0>");
}


function Get_Cookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}

function Set_Cookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "") +
        ( (path) ? ";path=" + path : "") + 
        ( (domain) ? ";domain=" + domain : "") +
        ( (secure) ? ";secure" : "");
}

function Delete_Cookie(name,path,domain) {
    if (Get_Cookie(name)) document.cookie = name + "=" +
       ( (path) ? ";path=" + path : "") +
       ( (domain) ? ";domain=" + domain : "") +
       ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

var today = new Date();
var zero_date = new Date(0,0,0);
today.setTime(today.getTime() - zero_date.getTime());

var todays_date = new Date(today.getYear(),today.getMonth(),today.getDate(),0,0,0);
var expires_date = new Date(todays_date.getTime() + (8 * 7 * 86400000));

function storeMasterCookie() {
    if (!Get_Cookie('MasterCookie'))
        Set_Cookie('MasterCookie','MasterCookie');
}

function storeIntelligentCookie(name,value) {
    if (Get_Cookie('MasterCookie')) {
        var IntelligentCookie = Get_Cookie(name);
        if ((!IntelligentCookie) || (IntelligentCookie != value)) {
            Set_Cookie(name,value,expires_date);
            var IntelligentCookie = Get_Cookie(name);
            if ((!IntelligentCookie) || (IntelligentCookie != value))
                Delete_Cookie('MasterCookie');
        }
    }
}
function logfile(filename, filetype, fileurl, groups, path) {
	var title   = filename;
	var url     = fileurl;
   var referer = location.href;
   
   var randomNum = Math.floor(Math.random()*100000) ;

	if (document.images) {
		img1 = new Image();
		img1.src = "//uk1.siteimprove.com/image.aspx?ourl=" + escape(url) + "&title="+escape(title)+"&path="+escape(path) + "&ref=" + escape(referer) +"&ft="+escape(filetype)+"&groups="+escape(groups)+"&rn="+randomNum;
	}
	return;
}

function setgroupsfrommeta(mn){
	if (typeof groups=="undefined") groups = "";
	var m = document.getElementsByTagName('meta');   
	for(var i in m) {
		if(m[i].name == mn) {
			groups += (groups==""?"":",") + m[i].content;
		}
	}
}
if (typeof metagroupname!="undefined")
	setgroupsfrommeta(metagroupname);

writeStatistics();
src_loaded = true;

var alllinks = document.links;
var currenturl = location.href;
var excludelist = {asp:1,aspx:1,php:1}

for (var linkcounter=0;linkcounter<alllinks.length;linkcounter++) {
	if (alllinks[linkcounter].href.toLowerCase().indexOf("javascript:")!=-1){continue}
	if (alllinks[linkcounter].href.toLowerCase()=="#"){continue}
	var current_onclick = "";
	if (typeof(alllinks[linkcounter].onclick)=="function") current_onclick = alllinks[linkcounter].onclick.toString();
	if (current_onclick.indexOf("logfile")!=-1){continue}
	if (current_onclick.indexOf("window.open")!=-1){
		var new_onclick = current_onclick.replace("window.open","addonclick('',this.href);window.open").replace("function anonymous()","");
		alllinks[linkcounter].onclick = new Function(new_onclick);
		continue;
	}	
//	if (current_onclick.indexOf("window.open")!=-1){
//		alllinks[linkcounter].onclick = current_onclick.replace("window.open","addonclick('',this.href);window.open");
//		continue;
//	}	
	alllinks[linkcounter].onclick = new Function("return addonclick(" + alllinks[linkcounter].onclick + ", \"" + alllinks[linkcounter].href + "\")");
}

function addonclick(originalfunction, linkhref){
	var logclick = true;
	var linkhrefsplitted = linkhref.split(".");
	var linkhrefending = "";
	for (var i=0; i < linkhrefsplitted.length; i++) {linkhrefending = linkhrefsplitted[i];}
	var currentdomain = document.domain;
	var linkhrefexclthisdomain = onclickRegexReplace(linkhref, "//" + currentdomain, "");
	var iscurrentdomain = linkhrefexclthisdomain!=linkhref;
	if (iscurrentdomain && excludelist[linkhrefending]=="1")
			logclick = false;
	if (logclick)
		onclicklogfile(linkhref);
	if (typeof(originalfunction)=="function"){return originalfunction.apply()}
}

function onclickRegexReplace(inputString, fromString, toString) {var regString = new RegExp(fromString, "gi");return inputString.replace(regString, toString);}
function onclicklogfile(url) {
	var referer = location.href;
	var randomNum = Math.floor(Math.random()*100000) ;
	if (document.images) {
		img1 = new Image();
		img1.src = "//uk1.siteimprove.com/image.aspx?ourl=" + escape(url) + "&ref=" + escape(referer) +"&autoonclick=1&rn="+randomNum;
	}
	return;
}
