//Gets size of the users viewport for normalisation
function getViewport(){
// Get viewport width in FF2, Safari 1+, or IE6 w doctype:
if (document.documentElement &&
document.documentElement.clientWidth) {
viewport = document.documentElement.clientWidth;
viewport2 = window.innerWidth; }
// Get viewport width in FF2, Safari 1+, IE5-5.5, or IE6 without a doctype:
else if (document.body.clientWidth) {viewport = document.body.clientWidth;viewport2 = window.innerWidth; }
return viewport;
};
function makeRequest(vX,vY,vUXY){
	document.getElementById("1bh1").setAttribute("src",'http://www.blogheat.co.uk/st/' + vX + '/' + vY + '/' + vUXY + '/' + bhID + '/__bh.gif');
};
//Function for obtaining the locations of clicks for the monitored divs + normalisation + storage
function addTracker(eID){
	eID = document.getElementById(eID);
	eID.onclick = function(e){
		var e = e || window.event;var vX = e.clientX;var vY = e.clientY;var vUXY = getViewport();
		makeRequest(vX,vY,vUXY);
		e.cancelBubble = true;if (e.stopPropagation) e.stopPropagation();
	};
	aTagFix(eID);
};

function aTagFix(cEl){  
	var children = cEl.getElementsByTagName('A');
	var cI = 0;
	while (children[cI] != null){
		//get on clicks
		children[cI].onclick = function(e){
			var e = e || window.event;
			var t = e.target || e.srcElement;
			var loc = t.getAttribute("href") || t.href;
			var vX = e.clientX;var vY = e.clientY;var vUXY = getViewport();
			makeRequest(vX,vY,vUXY);
			e.cancelBubble = true;if (e.stopPropagation) e.stopPropagation();
			//weird stuff, ignore, try to capture and go normally.
			if (loc == null){
				return true;
			}
			var fGo = function(){forwardMe(loc);}
			setTimeout(fGo, 200);
			return false;
		};
		cI++;
	}
};

function forwardMe(loc){
	window.location = "" + loc;
}

window.onload = function(){
	if (window.bh_class_tag != undefined){
		//manual method of detection
		var cEle = getElementsByClassName(bh_class_tag);
		var eID = "";
		for (var i = 0; i < cEle.length; ++i){
			var eID = cEle[i];
			eID.onclick = function(e){
				var e = e || window.event;var vX = e.clientX;var vY = e.clientY;var vUXY = getViewport();
				makeRequest(vX,vY,vUXY);
				e.cancelBubble = true;if (e.stopPropagation) e.stopPropagation();
			};
			aTagFix(eID);
		}
	}
	var ele = document.body;
	var img=ele.appendChild(document.createElement('img'));
	img.setAttribute("id","1bh1");
	img.setAttribute("style", "display: none;");
	img.setAttribute("src", "http://www.blogheat.co.uk/public/__bh.gif");
}


/*
getelementsbyclassname function used for manual method class detection.


Developed by Robert Nyman, http://www.robertnyman.com
Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
if (document.getElementsByClassName) {
	getElementsByClassName = function (className, tag, elm) {
		elm = elm || document;
		var elements = elm.getElementsByClassName(className),
			nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
			returnElements = [],
			current;
		for(var i=0, il=elements.length; i<il; i+=1){
			current = elements[i];
			if(!nodeName || nodeName.test(current.nodeName)) {
				returnElements.push(current);
			}
		}
		return returnElements;
	};
}
else if (document.evaluate) {
	getElementsByClassName = function (className, tag, elm) {
		tag = tag || "*";
		elm = elm || document;
		var classes = className.split(" "),
			classesToCheck = "",
			xhtmlNamespace = "http://www.w3.org/1999/xhtml",
			namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
			returnElements = [],
			elements,
			node;
		for(var j=0, jl=classes.length; j<jl; j+=1){
			classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
		}
		try	{
			elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
		}
		catch (e) {
			elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
		}
		while ((node = elements.iterateNext())) {
			returnElements.push(node);
		}
		return returnElements;
	};
}
else {
	getElementsByClassName = function (className, tag, elm) {
		tag = tag || "*";
		elm = elm || document;
		var classes = className.split(" "),
			classesToCheck = [],
			elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
			current,
			returnElements = [],
			match;
		for(var k=0, kl=classes.length; k<kl; k+=1){
			classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
		}
		for(var l=0, ll=elements.length; l<ll; l+=1){
			current = elements[l];
			match = false;
			for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
				match = classesToCheck[m].test(current.className);
				if (!match) {
					break;
				}
			}
			if (match) {
				returnElements.push(current);
			}
		}
		return returnElements;
	};
}
return getElementsByClassName(className, tag, elm);
};