var linki = document.getElementsByTagName('a');

for(var i=0; i < linki.length; i++)
{
     //linki[i].onclick = function() { trace( self.location, this.href ); linki[i].onclick; }
     //linki[i].setAttribute("onclick", "trace( self.location, this.href );" + linki[i].attributes['onclick'] );
     var tmp = linki[i].attributes["onclick"];
     if(tmp==null)
      tmp = "";
     else
     {
      tmp = tmp.value;
     }
     tmp2 = "trace( self.location, this.href )";
     //linki[i].onclick = ("onclick", tmp);
     //linki[i].addEventListener('onClick', function(){trace( self.location, this.href )}, false);
     if(window.addEventListener){ // Mozilla, Netscape, Firefox
	linki[i].addEventListener('click', testevent, true);
	linki[i].myflag = tmp;
	linki[i].myloc  = self.location;
	linki[i].myhref = linki[i].href;
	linki[i].myNr = i;
     } else { // IE
	linki[i].attachEvent('onclick', testevent);
	linki[i].myflag = tmp;
	linki[i].myloc  = self.location;
	linki[i].myhref = linki[i].href;
	linki[i].myNr = i;
     }
}

function testevent(evt){
	var e_out;
	var e_out2;
	var e_out3;
	var ie_var = "srcElement";
	var moz_var = "target";
	var prop_var = "myflag";
	var parentN = "parentNode";
	var tagName = "tagName";
	var test;
	var tmp;
	var isFF;
	var a;

	evt[moz_var] ? test = evt[moz_var][tagName] : test = evt.srcElement.tagName;
	if(test != "A")
        {
                evt[moz_var] ? isFF = true : isFF = false;
                isFF ? a = evt[moz_var] : a = evt.srcElement;
                tmp = findA(a);
                function x() { tmp[0] };
                x();

                trace(tmp[1] , tmp[2], tmp[3]);

        }
        else
        {
                evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
	        function x() { e_out};
                x();

                prop_var = "myhref";
                evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];

                prop_var = "myloc";
                evt[moz_var] ? e_out2 = evt[moz_var][prop_var] : e_out2 = evt[ie_var][prop_var]["href"];
                
                prop_var = "myNr";
                evt[moz_var] ? e_out3 = evt[moz_var][prop_var] : e_out3 = evt[ie_var][prop_var];

	        trace(e_out2, e_out, e_out3);
	}
}

function findA(a)
{
       var test;
       var func;
       var myLoc;
       var myHref;
       var tmp;
       var myNr;

       a = a.parentNode;
       test = a.tagName;

       if(test != "A")
       {
               tmp = findA(a);
               return tmp;
       }
       else
       {
               func = a.myflag;
               loc = a.myloc.href;
               myHref = a.myhref;
               myNr = a.myNr;
               
               tmp = new Array(4);
               tmp[0] = func;
               tmp[1] = loc;
               tmp[2] = myHref;
               tmp[3] = myNr;

               return tmp;
       }
}


function trace(from, to, nr)
{
     var cookie_value = "";
     var cookieName = "tracker";
     var theCookie= "" + document.cookie;
     var ind=theCookie.indexOf(cookieName);
     var j = nr; // nr of this link

     var cookie_add_value = escape(from) + "|" + escape(to) + "|" + j + "^";

     if(ind != -1)
     {
           var ind1=theCookie.indexOf(';',ind);

           if (ind1==-1)
              ind1=theCookie.length;

           cookie_value = cookie_value + theCookie.substring(ind+cookieName.length+1,ind1);
     }

     var byteL = getBytesLength(cookie_value);
     var byteLadd = getBytesLength(cookie_add_value);

     var dif = 4089 - byteL;

     if(dif < byteLadd)
     {
            cookie_value = cookie_value.substring(0 , byteL - (byteLadd - dif + 2) );
     }

     cookie_value = cookie_add_value + cookie_value;

     document.cookie = cookieName + "=" + cookie_value + "; path=/ ";

}

function getBytesLength(tmp)
{
    return encodeURIComponent(tmp).replace(/%../g, 'x').length;

}


