
function getConfig()
{
    return [
        // server address:
        "clickserver.osobnosti.cz",

        // page name:
        "surtep-hp",

        // element that starts at 0,0:
        document.getElementById("menu"),

        // element where to append image
        document.getElementById("menu"),
    ]
}

function getScrollingPosition()
{
    var position = [0, 0];

    if (typeof window.pageYOffset != 'undefined') {
        position = [
            window.pageXOffset,
            window.pageYOffset
        ];
    } else if (typeof document.documentElement.scrollTop
        != 'undefined' && document.documentElement.scrollTop > 0) {

        position = [
            document.documentElement.scrollLeft,
            document.documentElement.scrollTop
        ];
    }  else if (typeof document.body.scrollTop != 'undefined') {
        position = [
            document.body.scrollLeft,
            document.body.scrollTop
        ];
    }
    return position;
}

var ClickTracker = function()
{
    this.left = null;

    this.onClick = function(event)
    {
        var config = getConfig();
        var clickTrackerAddress = config[0];
        var pageName = config[1];
        var contentElement = config[2];
        var appendElement = config[3];
        if ((this.left == null) && (contentElement != null)) {
            this.left = 0;
            var stop = document.body;

            var node = contentElement;

            while (node && node != stop) {
                this.left += node.offsetLeft;
                node = node.offsetParent;
            }

            var property = "marginLeft";

            if (document.defaultView && document.defaultView.getComputedStyle) {
                var cs = node.ownerDocument.defaultView.getComputedStyle(node,'');
                if (!cs) { return false; }
                this.left -= parseInt(cs[property]);
            } else {
                this.left -= parseInt(node.currentStyle[property]);
            }
        } else if (contentElement == null) {
            this.left = 0;
        }

        if (typeof event == "undefined") {
            event = window.event;
        }
        if (typeof event.pageX == "undefined") {
            event.pageX = event.clientX + getScrollingPosition()[0];
            event.pageY = event.clientY + getScrollingPosition()[1];
        }

        var params = "page=" + pageName;
        params += "&x=" + (event.pageX - this.left);
        params += "&y=" + event.pageY;

        try {
            if (event.target.href) {
                params += "&type=link&url=" + encodeURIComponent(event.target.href);
            } else {
                params += "&type=none";
            }
        } catch (e) {
            try {
                if (event.srcElement.href) {
                    params += "&type=link&url=" + encodeURIComponent(event.srcElement.href);
                } else {
                    params += "&type=none";
                }
            } catch (e) {
                params += "&type=none";
            }
        }
        params += "&rnd=" + Math.floor(Math.random() * 4096*1024*1024);

        var element = document.createElement("img");
        element.setAttribute("src", "http://" + clickTrackerAddress + "/?" + params);
        element.style.visibility="hidden";
        appendElement.appendChild(element);
        appendElement.removeChild(element);
        return true;
    };

    try {
        document.addEventListener("click", this.onClick, false);
    } catch (e) {
        document.attachEvent("onclick", this.onClick);
    }
}

var clickTracker = new ClickTracker();
