/** Code by www.labsmedia.com */
var clickHeatGroup = "";
var clickHeatSite = "";
var clickHeatServer = "";
var clickHeatLastIframe = -1;
var clickHeatTime = 0;
var clickHeatQuota = -1;
var clickHeatBrowser = "";
var clickHeatDocument = "";
var clickHeatWait = 500;
var clickHeatDefaultWidth1 = 0;
var clickHeatDefaultWidth2 = 900;
var clickHeatDefaultWidth3 = 0;
var clickHeatLocalWait = 0;
var clickHeatDebug = (window.location.href.search(/debugclickheat/) != -1);

function showClickHeatDebug(a) {
    if (clickHeatDebug == true) {
        document.getElementById("clickHeatDebuggerSpan").innerHTML = a;
        document.getElementById("clickHeatDebuggerDiv").style.display = "block"
    }
}
function catchClickHeat(l) {
    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 (l == undefined) {
            l = window.event;
            c = l.button;
            element = l.srcElement
        } else {
            c = l.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 o = l.clientX;
        var n = l.clientY;
        var p = clickHeatDocument.clientWidth != undefined ? clickHeatDocument.clientWidth : window.innerWidth;
        var k = clickHeatDocument.clientHeight != undefined ? clickHeatDocument.clientHeight : window.innerHeight;
        var j = window.pageXOffset == undefined ? clickHeatDocument.scrollLeft : window.pageXOffset;
        var g = window.pageYOffset == undefined ? clickHeatDocument.scrollTop : window.pageYOffset;
        if (o > p || n > k) {
            showClickHeatDebug("Click not logged: out of document (should be a click on scrollbars)");
            return true
        }
        clickTime = new Date();
        if (clickTime.getTime() - clickHeatTime < 1000) {
            showClickHeatDebug("Click not logged: at least 1 second between clicks");
            return true
        }
        clickHeatTime = clickTime.getTime();
        if (clickHeatQuota > 0) {
            clickHeatQuota = clickHeatQuota - 1
        }
        params = "s=" + clickHeatSite + "&g=" + clickHeatGroup + "&x=" + (o + j) + "&y=" + (n + g) + "&w=" + p + "&b=" + clickHeatBrowser + "&c=" + c + "&random=" + Date() + "&w1=" + parseInt(clickHeatDefaultWidth1) + "&w2=" + parseInt(clickHeatDefaultWidth2) + "&w3=" + parseInt(clickHeatDefaultWidth3);
        showClickHeatDebug("Ready to send click data...");
        var m = false;
        if (clickHeatServer.substring(0, 4) != "http") {
            var d = false;
            try {
                d = new ActiveXObject("Msxml2.XMLHTTP")
            } catch(r) {
                try {
                    d = new ActiveXObject("Microsoft.XMLHTTP")
                } catch(a) {
                    d = null
                }
            }
            if (!d && typeof XMLHttpRequest != undefined) {
                d = new XMLHttpRequest()
            }
            if (d) {
                if (clickHeatDebug == true) {
                    d.onreadystatechange = function () {
                        if (d.readyState == 4) {
                            if (d.status == 200) {
                                showClickHeatDebug("Click recorded at " + clickHeatServer + " with the following parameters:<br />x = " + (o + j) + " (" + o + "px from left + " + j + "px of horizontal scrolling)<br />y = " + (n + g) + " (" + n + "px from top + " + g + "px of vertical scrolling)<br />width = " + p + "<br />browser = " + clickHeatBrowser + "<br />click = " + c + "<br />site = " + clickHeatSite + "<br />group = " + clickHeatGroup + "<br /><br />Server answer: " + d.responseText)
                            } else {
                                if (d.status == 404) {
                                    showClickHeatDebug("click.php was not found at: " + (clickHeatServer != "" ? clickHeatServer : "/clickheat/click.php") + " please set clickHeatServer value")
                                } else {
                                    showClickHeatDebug("click.php returned a status code " + d.status + " with the following error: " + d.responseText)
                                }
                            }
                            clickHeatLocalWait = 0
                        }
                    }
                }
                d.open("GET", clickHeatServer + "?" + params, true);
                d.setRequestHeader("Connection", "close");
                d.send(null);
                m = true
            }
        }
        if (m == false) {
            if (clickHeatDebug == true) {
                showClickHeatDebug("Click recorded at " + clickHeatServer + " with the following parameters:<br />x = " + (o + j) + " (" + o + "px from left + " + j + "px of horizontal scrolling)<br />y = " + (n + g) + " (" + n + "px from top + " + g + "px of vertical scrolling)<br />width = " + p + "<br />browser = " + clickHeatBrowser + "<br />click = " + c + "<br />site = " + clickHeatSite + "<br />group = " + clickHeatGroup + '<br /><br />Server answer:<br /><iframe src="' + clickHeatServer + "?" + params + '" width="700" height="60"></iframe>')
            } else {
                var q = new Image();
                q.src = clickHeatServer + "?" + params
            }
        }
        var b = new Date();
        clickHeatLocalWait = b.getTime() + clickHeatWait;
        while (clickHeatLocalWait > b.getTime()) {
            b = new Date()
        }
    } catch(f) {
        showClickHeatDebug("An error occurred while processing click (Javascript error): " + l.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 (clickHeatGroup == "" || clickHeatServer == "") {
        showClickHeatDebug("ClickHeat NOT initialised: either clickHeatGroup or 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;
    var a = navigator.userAgent != undefined ? navigator.userAgent.toLowerCase().replace(/-/g, "") : "";
    clickHeatBrowser = a.replace(/iceweasel/, "firefox").replace(/^.*(firefox|kmeleon|safari|msie|opera).*$/, "$1");
    if (a == clickHeatBrowser || clickHeatBrowser == "") {
        clickHeatBrowser = "unknown"
    }
    showClickHeatDebug("ClickHeat initialised with:<br />site = " + clickHeatSite + "<br />group = " + clickHeatGroup + "<br />server = " + clickHeatServer + "<br />quota = " + (clickHeatQuota == -1 ? "unlimited" : clickHeatQuota) + "<br /><br />browser = " + clickHeatBrowser)
};