var HYPERLINK = 0;
var FORM = 1;
var URLSTRING = 2;
var UNKNOWN= 3;


var _ctLinkObj = null;
var _ctLinkType = UNKNOWN;
var _ctCookieName = "ENT.CT.TO";
var _ctTimeOutHandle = null;
var _ctWaiting = false;


function h(hyperlink, data){return ctTrackHyperlink(hyperlink, data);}

function ctTrackHyperlink(hyperlink, data)
{
	_ctLinkObj = hyperlink;
	_ctLinkType = HYPERLINK;

	if(ctTrackingNow() == false)
	{
		if(ctIsAnchor() == true)
			return false;
		else
			return true;
	}

	ctCancelTimer();

	if(ctHasTarget() == true)
	{ 
		_ctWaiting = false; 
		ctSetTrackData(data);
		return true;
	}
	else
	{
		_ctWaiting = true; 
		ctSetTimeout();
		ctSetTrackData(data);

		if(ctIsAnchor() == true)
			return false;
		else
			return true;
	}
}

function f(form, data){return ctTrackForm(form, data);}
function ctTrackForm(form, data)
{
    _ctLinkObj = form;
    _ctLinkType = FORM;

	if(ctTrackingNow() == false)
		return true;

	ctCancelTimer();

    _ctWaiting = true;
    ctSetTimeout();
    ctSetTrackData(data);
    return false;
}

function u(url, data){return ctTrackUrl(url, data);}
function ctTrackUrl(url, data)
{
    _ctLinkObj = url;
    _ctLinkType = URLSTRING;

	if(ctTrackingNow() == false)
	{
		window.location = url;
	}
	else
	{
		ctCancelTimer();

		_ctWaiting = true;
		ctSetTimeout();
		ctSetTrackData(data);
	}
    
    return false;
}

function ctTrackDirect(data)
{
	ctCancelTimer();
	_ctWaiting = false;
	ctSetTrackData(data);
}

function ctSetTimeout()
{
    _ctTimeOutHandle = window.setTimeout("ctTimeOut();", (timeOut  * 1000) );
}


function ctSetTrackData(data)
{
    clickTarget.src = gServer + "??" + "pi=" + propertyId + "&di=" + domaindId + "&ps=" + pageId + "&" + data;
}


function ctCancelTimer()
{
	if(_ctTimeOutHandle != null)
		window.clearTimeout(_ctTimeOutHandle);

	_ctTimeOutHandle = null;
}


function ctIsAnchor()
{
	var ret = false;

	if(_ctLinkType == HYPERLINK)
	{
		if(_ctLinkObj.href.charAt(_ctLinkObj.href.length - 1) == "#")
		{
			ret = true;
		}
	}

	return ret;
}


function ctTrackingNow()
{
	if(document.cookie.indexOf(_ctCookieName) == -1)
		return true;
	else
		return false;
}


function ctHasTarget()
{	
    if(_ctLinkType == HYPERLINK)
	{
		if(_ctLinkObj.target != "")
		    return true;
	}
	return false;
}


function ctDoNavigation()
{
	if(_ctLinkObj == null || ctIsAnchor() == true)
		return;

	if(_ctLinkType == HYPERLINK)
        window.location = _ctLinkObj.href;
	else if(_ctLinkType == FORM)
		_ctLinkObj.submit();
	else if(_ctLinkType == URLSTRING)
		window.location = _ctLinkObj;
}


function ctTimeOut()
{
    if(_ctWaiting == true)
    { 	
	    var expiration = new Date();
	    expiration.setTime(expiration.getTime() + ((backoffTime * 1000) * 60));

	    document.cookie = _ctCookieName + "=page;path=/;expires=" + expiration.toUTCString();

	    ctDoNavigation();
	}
}


function ctStateChange()
{
    if(_ctWaiting == true)
    { 	
	    if(event.srcElement.readyState == "complete")
	    {
		    ctCancelTimer();
		    ctDoNavigation();
	    }
    } 
}

