var submitUrl = raletivePath+"/servlet/RecordTrafficSource"

//-- Auto/Organic Sources and Keywords
var searchEnergyKeyWord={
 "google"			:	"q"			,
 "yahoo"			:	"p"			,
 "msn"				:	"q"			,
 "aol"				:	"query"		,
 "aol"				:	"encquery"	,
 "lycos"			:	"query"		,
 "ask"				:	"q"			,
 "altavista"		:	"q"			,
 "netscape"			:	"query"		,
 "cnn"				:	"query"		,
 "looksmart"		:	"qt"		,
 "about"			:	"terms"		,
 "mamma"			:	"query"		,
 "alltheweb"		:	"q"			,
 "gigablast"		:	"q"			,
 "voila"			:	"rdata"		,
 "virgilio"			:	"qs"		,
 "live"				:	"q"			,
 "baidu"			:	"wd"		,
 "alice"			:	"qs"		,
 "yandex"			:	"text"		,
 "najdi"			:	"q"			,
 "aol"				:	"q"			,
 "club-internet"	:	"q"			,
 "mama"				:	"query"		,
 "seznam"			:	"q"			,
 "search"			:	"q"			,
 "szukaj"			:	"szukaj"	,
 "szukaj"			:	"qt"		,
 "netsprint"		:	"q" 		,
 "google.interia"	:	"q"			,
 "szukacz"			:	"q"			,
 "yam"				:	"k"			,
 "pchome"			:	"q"			,
 "zjmp"				:	"q"
};

function trace(){
	var dmnt = document;
	var refer = dmnt.referrer;
	var dmnl = dmnt.location;
	
	var referInfo = getRefInfo(refer);
	var keyword = getKeyWord(refer);
	var trInfo = getTRInfo(dmnl);
	
	var data = "?rnd="+rndNum(9);
	if(trInfo){
		data += "&tr="+escaption(trInfo);
	}
	if(keyword){
		data += "&kw="+escaption(keyword);
	}
	if(referInfo){
		data += "&ref="+escaption(referInfo);
	}
	
	//send data to servlet
	if(data){
		var transport = new Image(1,1);
		transport.src = submitUrl + data;
		transport.onload=function() { return ; }
	}
}

function getRefInfo(refer){
	if(refer == ""){ return ""; }
	var inx=0;
	if ((inx=refer.indexOf("://"))<0) return "";
	return refer;
}

function getKeyWord(refer){
	if(refer == ""){ return ""; }
	
	var inx=0;
	if ((inx=refer.indexOf("://"))<0){ return ""; }
	
	var s = refer.substring(inx+3);
	
	if(s.indexOf('/') < 0){ return ""; }
	var domainArea = s.substring(0, s.indexOf("/"));
	
	var wnx = 0;
	if((wnx = domainArea.indexOf("www.")) > -1){ 
		domainArea = domainArea.substring(wnx+4);
	}
	
	var pnx = 0;
	while((pnx = domainArea.indexOf('.')) > -1){
		if(pnx == 0) {
			domainArea = domainArea.substring(1);
			continue; 
		}
		var domain = domainArea.substring(0, pnx).toLowerCase();
		//search key word
		var skw = "";
		if((skw = searchEnergyKeyWord[domain])){
			var skwnx = 0;
			if((skwnx = refer.indexOf("?"+skw+"=")) > -1 || (skwnx = refer.indexOf("&"+skw+"=")) > -1){
				var keyword = refer.substring(skwnx+skw.length+2);
				var i;
    			if ((i=keyword.indexOf("&")) > -1) keyword=keyword.substring(0,i);
    			return keyword;
			}
		}
		
		domainArea = domainArea.substring(pnx+1);
	}
	return "";
}

function getTRInfo(dmnl){
	var param = dmnl.search;
	var inx = 0;
	if((inx = param.toLowerCase().indexOf("?tr=")) > -1){
		param = param.substring(inx+4);
		if((inx = param.indexOf("&")) > -1){
			param = param.substring(0, inx);
		}
		return param;
	}
	return "";
}

function escaption(s){
	if (typeof(encodeURIComponent) == 'function') {
		return encodeURIComponent(s);
	} else {
		return escape(s);
	}
}

function rndNum(n)
{
    var rnd="";
    for(var i=0;i<n;i++)
    {
        rnd+=Math.floor(Math.random()*10);
    }
    return rnd;
}