﻿/** Code by www.labsmedia.com */
/*modified for our .Net environment */

//ContentWidth is used to offset those sites which are center aligned. use 0 for left aligned sites
var ContentWidth=940;//+11+11; //769 width+11 border(l/r)
 

//var clickHeatGroup='';
var clickHeatSite='';
var clickHeatServer='/Analytics/Recordclick.aspx';
var clickHeatLastIframe=-1;
var clickHeatTime=0;
//var clickHeatQuota=-1;
//var clickHeatBrowser='';
var clickHeatDocument='';
var clickHeatWait=500;
var clickHeatLocalWait=0;
var clickHeatDebug=(window.location.href.search(/debugclickheat/) !== -1);
var betweenclicks =100;
var contentOffset;

function showClickHeatDebug(str)
{
if(clickHeatDebug === true)
{document.getElementById('clickHeatDebuggerSpan').innerHTML=str;document.getElementById('clickHeatDebuggerDiv').style.display='block';}}

function catchClickHeat(e)
{
	try
	{
		showClickHeatDebug('Gathering click data...');
		//if(clickHeatQuota === 0)
		//	{showClickHeatDebug('Click not logged: quota reached');
		//	return true;}
//		if(clickHeatGroup === '')
//			{showClickHeatDebug('Click not logged: group name empty (clickHeatGroup)');
//			return true;}
		if(e === undefined)
			{e=window.event;c=e.button;element=e.srcElement;}
		else{c=e.which;element=null;}
			if(c === 0){showClickHeatDebug('Click not logged: no button pressed');
			return true;}
		if(element !== null&&element.tagName.toLowerCase() === 'iframe')
		{
			if(element.sourceIndex === clickHeatLastIframe)
				{showClickHeatDebug('Click not logged: same iframe (a click on iframe opens a popup and popup is closed => iframe gets the focus again)');
				return true;}
			clickHeatLastIframe=element.sourceIndex;
		}
		else
			{clickHeatLastIframe=-1;}
		var x=e.clientX;
		var y=e.clientY;
		
		
		var w=clickHeatDocument.clientWidth !== undefined?clickHeatDocument.clientWidth:window.innerWidth;
		var h=clickHeatDocument.clientHeight !== undefined?clickHeatDocument.clientHeight:window.innerHeight;
		var scrollx=window.pageXOffset === undefined?clickHeatDocument.scrollLeft:window.pageXOffset;
		var scrolly=window.pageYOffset === undefined?clickHeatDocument.scrollTop:window.pageYOffset;
		
		
		
		if(x>w||y>h)
			{showClickHeatDebug('Click not logged: out of document (should be a click on scrollbars)');
			return true;}
		clickTime=new Date();
		if(clickTime.getTime()-clickHeatTime<betweenclicks)
			{showClickHeatDebug('Click not logged: at least 1 second between clicks');
			return true;}
		clickHeatTime=clickTime.getTime();
		//if(clickHeatQuota>0)
		//	{clickHeatQuota=clickHeatQuota-1;}
		params='p='+currentPageURL+'&x='+(x+scrollx-contentOffset)+'&y='+(y+scrolly)+'&c='+c;
		showClickHeatDebug('Ready to send click data...');
		var sent=false;
		/*
		I don't know what it's trying to do here
		if(clickHeatServer.substring(0, 4) !== 'http')
		so I'm just puttin an if(true)
		-ßWM
		*/		
		if (true)
		{
			var xmlhttp=false;
			try
				{xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}
			catch (er)
			{
				try
					{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
				catch (oc){xmlhttp=null;}
			}
			if(!xmlhttp&&typeof XMLHttpRequest !== undefined)
				{xmlhttp=new XMLHttpRequest();}
			if(xmlhttp)
				{if(clickHeatDebug === true)
					{xmlhttp.onreadystatechange=function()
						{if(xmlhttp.readyState === 4)
							{if(xmlhttp.status === 200)
								{showClickHeatDebug('Click recorded at '+clickHeatServer+' with the following parameters:<br />x='+(x+scrollx-contentOffset)+' ('+x+'px from left+'+scrollx+'px of horizontal scrolling, & '+contentOffset+' content offset)<br />y='+(y+scrolly)+' ('+y+'px from top+'+scrolly+'px of vertical scrolling)<br />width='+w+'<br />click='+c+'<br />site='+clickHeatSite+'<br /><br />Server answer: '+xmlhttp.responseText);}
							else if(xmlhttp.status === 404)
								{showClickHeatDebug('RecordClick.aspx was not found at: '+(clickHeatServer !== ''?clickHeatServer:'/clickheat/click.php')+' please set clickHeatServer value');}
							else
								{showClickHeatDebug('RecordClick.aspx returned a status code '+xmlhttp.status+' with the following error: '+xmlhttp.responseText);}
						clickHeatLocalWait=0;
						}
					};
				}
			xmlhttp.open('GET', clickHeatServer+'?'+params, true);
			xmlhttp.setRequestHeader('Connection', 'close');
			xmlhttp.send(null);sent=true;
			}
		}
		if(sent === false)
			{if(clickHeatDebug === true)
				{showClickHeatDebug('Click recorded at '+clickHeatServer+' with the following parameters:<br />x='+(x+scrollx-contentOffset)+' ('+x+'px from left+'+scrollx+'px of horizontal scrolling)<br />y='+(y+scrolly)+' ('+y+'px from top+'+scrolly+'px of vertical scrolling)<br />width='+w+'<br />click='+c+'<br />site='+clickHeatSite+'<br />Server answer:<br />'+'<iframe src="'+clickHeatServer+'?'+params+'" width="700" height="60"></iframe>');}
			//else
			//	{var clickHeatImg=new Image();
			//	clickHeatImg.src=clickHeatServer+'?'+params;}
			}
		var now=new Date();
		clickHeatLocalWait=now.getTime()+clickHeatWait;
		//while (clickHeatLocalWait>now.getTime())
		//	{now=new Date();}
	}
	catch(err)
	{showClickHeatDebug('An error occurred while processing click (Javascript error): '+e.message);}
	return true;
}
	
function initClickHeat()
{
	if(clickHeatDebug === true)
	{
		document.write('<div id="clickHeatDebuggerDiv" style="padding:5px;display:none;position:absolute;top:10px;left:10px;border:1px solid #888;background-color:#eee;z-index:99;"><strong>ClickHeat debug: <a href="#" onmouseover="document.getElementById(\'clickHeatDebuggerDiv\').style.display=\'none\';return false">Rollover to close</a></strong><br /><br /><span id="clickHeatDebuggerSpan"></span></div>');
	}
	if(clickHeatServer === '')
	{
		showClickHeatDebug('ClickHeat NOT initialised: clickHeatServer is empty');
		return false;
	}
	domain=window.location.href.match(/http:\/\/[^/]+\//);
//	if(domain !== null&&clickHeatServer.substring(0, domain[0].length) === domain[0])
//	{
//		clickHeatServer=clickHeatServer.substring(domain[0].length-1, clickHeatServer.length);
//	}		
	if(document.addEventListener)
	{
		document.addEventListener('mousedown', catchClickHeat, false);
	}
	else if(document.attachEvent)
	{
		document.attachEvent('onmousedown', catchClickHeat);
	}
	iFrames=document.getElementsByTagName('iframe');
	for (i=0;i<iFrames.length;i++)
	{
		if(document.addEventListener)
		{
			iFrames[i].addEventListener('focus', catchClickHeat, false);
		}
		else if(document.attachEvent)
		{
			iFrames[i].attachEvent('onfocus', catchClickHeat);
		}
	}
	clickHeatDocument=(document.documentElement !== undefined&&document.documentElement.clientHeight !== 0)?document.documentElement:document.body;
	contentOffset= ContentWidth== 0 ? 0 : (clickHeatDocument.clientWidth - ContentWidth)/2;
	
	showClickHeatDebug('ClickHeat initialised with:<br />server='+clickHeatServer+'<br /><br />Offset='+contentOffset);
}

initClickHeat();