/*-------------------------------------
  Ads tracking v1.0 - (c) Logicove 2008
  -------------------------------------*/

//"this" used in the "method" will be set to object
//methode will have two parameters : Event (null for IE) and Elem (Dom element target of the event)
function bindEvent(object, method)
{ 	return function() 
	{	var args=new Array();

		//IE
		if (window.event)
		{	args[0]=window.event;
			args[1]=window.event.srcElement;
		}
		else
		{	args[0]=arguments[0];	//event;
			args[1]=args[0].target;
		}
		return method.apply(object, args);
	} 
}
 
function CxAdLogs(AdLogLoc)
{	var	AdLogDir;
	var	TrackingOn;
	var	TrackedFrame;
	var	StartTime;

	this.AdLogDir=AdLogLoc
	this.TrackingOn=true;
	this.TrackedFrame=null;

	var el = document.getElementsByTagName("iframe");
	window.onbeforeunload=bindEvent(this,this.EndTracking);
	//window.onclick=bindEvent(this,this.StopTrackingNow);

	if (document.all) 
	{
		for(var i = 0; i < el.length; i++) 
		{
			if( el[i].src.indexOf('google') >-1 )
			{	el[i].attachEvent('onmouseover',bindEvent(this,this.EnableTracking));
				el[i].attachEvent('onmouseout', bindEvent(this,this.StopTrackingNow));
			}
		}
	}
	else
	{
		for(var i = 0; i < el.length; i++) 
		{	if( el[i].src.indexOf('google') >-1 )
			{	el[i].addEventListener('mouseover',bindEvent(this,this.EnableTracking), false);
				el[i].addEventListener('mouseout',bindEvent(this,this.StopTrackingNow), false);
			}
		}
	}
}


function GetWidth()
{
	if (window.innerWidth) return window.innerWidth;
	if (document.documentElement.clientWidth) return document.documentElement.clientWidth;
	if (document.body.clientWidth) return document.body.clientWidth;
	return 0;
}

//Mouse enter in the iframe
CxAdLogs.prototype.EnableTracking=function(Event,Elem)
{
	if (this.TrackingOn) { this.TrackedFrame=Elem; this.StartTime=null;  }
}

//The mouse leaves the iframe -> stop tracking
CxAdLogs.prototype.DisableTracking=function(Event,Elem)
{
	if (this.TrackingOn)
	{
		//if (this.TrackedFrame!=null) this.StartTime=new Date();
		this.TrackedFrame=null; 
	}
}

//Stop tracking immediatly because of click on window
CxAdLogs.prototype.StopTrackingNow=function(Event,Elem)
{
	this.TrackedFrame=null; 
}

CxAdLogs.prototype.EndTracking=function(Event,Elem) 
{
	var	AdFormat,AdTarget,ClickPhp;
	var	LastTime=new Date();
	var Millisec;

	//Exit from ads?
	if (this.StartTime)
	{	Millisec=LastTime.getTime()-this.StartTime.getTime();
		//if (Millisec>=500) this.TrackedFrame=null;
	}
	this.TrackingOn=false;

	if (!this.TrackedFrame) return;				//TrackedFrame should be != null in case of click
	if (!this.TrackedFrame.width||!this.TrackedFrame.height) return;
	//Get the real adsense format
	AdFormat="&width="+this.TrackedFrame.width+"&height="+this.TrackedFrame.height;
	AdSrc=this.TrackedFrame.src;
	AdTargetImage = new Image();

	//Random number to prevent caching
	ClickPhp=this.AdLogDir + '?targ='
			 +'&disp='+escape(document.location.href)+AdFormat+'&src='+escape(AdSrc)+"&rand="+Math.random();

	AdTargetImage.src = ClickPhp;
}

function InitAdLogs(AdLogLoc)
{
	if (window.addEventListener) window.addEventListener("load",function() { AdLogs=new CxAdLogs(AdLogLoc);},false);
	else if  (window.attachEvent) window.attachEvent("onload",function (){ AdLogs=new CxAdLogs(AdLogLoc);} );
}

