var logger="http://eloli.info/wife-alpha/wife.cgi";


var use_xmlhttp	= logger.split("/")[2] == document.location.toString().split("/")[2];

function wife_search_anchor( elem ){
	if( elem === null || !xDef( elem ) ){
		return null;
	}
	if( elem.nodeName.toLowerCase() == "a" ){
		return elem;
	} else if( xDef( elem.parentNode ) ){
		return wife_search_anchor( elem.parentNode );
	} else {
		return undefined;
	}
}

function wife_random( length ){
	return Math.floor( Math.random() * length );
}

function wife_shuffle_array( ary ){
	var i = ary.length;
	while( --i ){
		var j = wife_random( i + 1 );
		if( i != j ){
			var tmpe	= ary[i];
			ary[i]	= ary[j];
			ary[j] = tmpe;
		}
	}

	return ary;
}

function wife_get_text_content( e ){
	var result;
	if( document.body.innerText !== undefined ){
		return e.innerText !== undefined ? e.innerText : "";
	} else {
		return e.textContent !== undefined ? e.textContent : "";
	}
}

function wife_send( ary ){

	if( use_xmlhttp ){
		var xhttp = this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
		xhttp.open( "POST", "/" + logger.split("/").slice(3).join("/"), false );
		xhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xhttp.send( wife_shuffle_array( ary ).join('&') );
	} else {
		//if( !use_xmlhttp || xhttp === null || xhttp === undefined || xhttp.status != 200 ){
		var sc	= xCreateElement('script');
		sc.setAttribute('type', 'text/javascript');
		sc.setAttribute('defer', 'defer');
		sc.setAttribute( 'src', logger + "?" + wife_shuffle_array( ary ).join('&') );
		xAppendChild( document.body, sc );
	}
}

var sendlock	= false;
var java	= navigator.javaEnabled() ? 1 : 0;
var cookie	= navigator.cookieEnabled ? 1 : 0;
var cpu	= navigator.cpuClass !== undefined ? navigator.cpuClass : "";
var lang	= navigator.language !== undefined ? navigator.language : ( navigator.browserLanguage !== undefined ? navigator.browserLanguage : "" );

var qary	= [ 'cmd=access', 'url=' + encodeURIComponent( document.URL ),
	'ref=' + encodeURIComponent( document.referrer ), 'ua=' + encodeURIComponent( navigator.userAgent ),
	'plt=' + encodeURIComponent( navigator.platform ), 'wid=' + screen.width, 'hei=' + screen.height,
	'dep=' + screen.colorDepth, 'java=' + java, 'cpu=' + cpu, 'coo=' + cookie, 'lan=' + lang ];
wife_send( qary );


xAddEventListener( document, 'click', function( oe ){
		var e = new xEvent(oe);

		if( e.button == 0 ){
			sendlock	= true;
			var anc	= wife_search_anchor( e.target );
		
			if( xDef( anc ) ){

				var ary = [ 'cmd=click', 'to=' + encodeURIComponent( anc.href ), 'from=' + encodeURIComponent( document.URL ),
							'wid=' + screen.width, 'hei=' + screen.height, 'dep=' + screen.colorDepth, 'cx=' + e.offsetX,
							'cy=' + e.offsetY, 'txt=' + encodeURIComponent( xTrim( wife_get_text_content( anc ) ) ) ];

				if( ( logger + "?" + ary.join('&') ).length >= 2084 ){
					ary.pop();
				}

				wife_send( ary );

			}
			sendlock	= false;
		}
	}, false );


xAddEventListener( window, 'unload', ( function( e ){
			var timer	= setInterval(
									  function(){
										  if( ! sendlock ){
											  clearInterval( timer );
											  timer = null;
										  }
									  }, 300 );
		} ), false );


/* Compiled from X 4.18 by XC 1.07 on 11Apr09 */
function xEvent(evt){
 var e=evt||window.event;
 if(!e)return;
 this.type=e.type;
 this.target=e.target||e.srcElement;
 this.relatedTarget=e.relatedTarget;
/*@cc_on if(e.type=='mouseover')this.relatedTarget=e.fromElement;
 else if(e.type=='mouseout')this.relatedTarget=e.toElement;@*/
 if(xDef(e.pageX)){this.pageX=e.pageX;this.pageY=e.pageY;}
 else if(xDef(e.clientX)){this.pageX=e.clientX+xScrollLeft();this.pageY=e.clientY+xScrollTop();}
 if(xDef(e.offsetX)){this.offsetX=e.offsetX;this.offsetY=e.offsetY;}
 else if(xDef(e.layerX)){this.offsetX=e.layerX;this.offsetY=e.layerY;}
 else{this.offsetX=this.pageX-xPageX(this.target);this.offsetY=this.pageY-xPageY(this.target);}
 this.keyCode=e.keyCode||e.which||0;
 this.shiftKey=e.shiftKey;this.ctrlKey=e.ctrlKey;this.altKey=e.altKey;
 if(typeof e.type=='string'){
 if(e.type.indexOf('click')!=-1){this.button=0;}
 else if(e.type.indexOf('mouse')!=-1){
 this.button=e.button;
/*@cc_on if(e.button&1)this.button=0;
 else if(e.button&4)this.button=1;
 else if(e.button&2)this.button=2;@*/
}
}
}
xLibrary={version:'4.18',license:'GNU LGPL',url:'http://cross-browser.com/'};

 function xAddEventListener(e,eT,eL,cap)
{
 if(!(e=xGetElementById(e)))return;
 eT=eT.toLowerCase();
 if(e.addEventListener)e.addEventListener(eT,eL,cap||false);
 else if(e.attachEvent)e.attachEvent('on'+eT,eL);
 else{
 var o=e['on'+eT];
 e['on'+eT]=typeof o=='function'?function(v){o(v);eL(v);}:eL;
}
}

 function xAppendChild(oParent,oChild)
{
 if(oParent.appendChild)return oParent.appendChild(oChild);
 else return null;
}

 function xCreateElement(sTag)
{
 if(document.createElement)return document.createElement(sTag);
 else return null;
}

 function xDef()
{
 for(var i=0;i<arguments.length;++i){if(typeof(arguments[i])=='undefined')return false;}
 return true;
}

 function xGetElementById(e)
{
 if(typeof(e)=='string'){
 if(document.getElementById)e=document.getElementById(e);
 else if(document.all)e=document.all[e];
 else e=null;
}
 return e;
}

 function xNum()
{
 for(var i=0;i<arguments.length;++i){if(isNaN(arguments[i])||typeof(arguments[i])!='number')return false;}
 return true;
}

 function xPageX(e)
{
 var x=0;
 e=xGetElementById(e);
 while(e){
 if(xDef(e.offsetLeft))x+=e.offsetLeft;
 e=xDef(e.offsetParent)?e.offsetParent:null;
}
 return x;
}

 function xPageY(e)
{
 var y=0;
 e=xGetElementById(e);
 while(e){
 if(xDef(e.offsetTop))y+=e.offsetTop;
 e=xDef(e.offsetParent)?e.offsetParent:null;
}
 return y;
}

 function xScrollLeft(e,bWin)
{
 var offset=0;
 if(!xDef(e)||bWin||e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){
 var w=window;
 if(bWin&&e)w=e;
 if(w.document.documentElement&&w.document.documentElement.scrollLeft)offset=w.document.documentElement.scrollLeft;
 else if(w.document.body&&xDef(w.document.body.scrollLeft))offset=w.document.body.scrollLeft;
}
 else{
 e=xGetElementById(e);
 if(e&&xNum(e.scrollLeft))offset=e.scrollLeft;
}
 return offset;
}

function xScrollTop(e,bWin)
{
 var offset=0;
 if(!xDef(e)||bWin||e==document||e.tagName.toLowerCase()=='html'||e.tagName.toLowerCase()=='body'){
 var w=window;
 if(bWin&&e)w=e;
 if(w.document.documentElement&&w.document.documentElement.scrollTop)offset=w.document.documentElement.scrollTop;
 else if(w.document.body&&xDef(w.document.body.scrollTop))offset=w.document.body.scrollTop;
}
 else{
 e=xGetElementById(e);
 if(e&&xNum(e.scrollTop))offset=e.scrollTop;
}
 return offset;
}

 function xTrim(s){
 return s.replace(/^\s+|\s+$/g,'');
}
