var apiURL = 'http://www.extraits-xxx.com/extraits-videos/';

function AjaxLinkTracker() {
    var me;
    if (this.constructor == AjaxLinkTracker) {
        me = this;
    } else {
        me = arguments[arguments.length - 1];
    }
    me.displayCount = false;
    me.displayPercent = true;
    me.displayLabel = true;
    me.numberDays = 28;
    me.clickOffSet = 10;
    me.url = encodeURIComponent(document.location.href);
    me.listeners = [];
    me.addLinkTracking = function () {
        if (!document.getElementsByTagName) return false;
        me.clickedXHR = new XHRConnection();
        me.getClicksXHR = new XHRConnection();
        links = document.getElementsByTagName('a');
        for (var i = 0; i < links.length; i++) {
            me.addEvent(links[i], 'mousedown', me.recordClick, false);
            me.addEvent(links[i], 'keypress', me.linkKeyPress, false);
        }
    };
    me.linkKeyPress = function (e) {
        var keyID = (window.event) ? event.keyCode : e.keyCode;
        if (keyID == 13) {
            me.recordClick(e);
        }
    };
    me.recordClick = function (e) {
        source = me.findSourceElement(e);
        tag = source.tagName;
        var id, label, target;

        id = encodeURIComponent(id);
        target = encodeURIComponent(target);
        label = encodeURIComponent(label);
        var ajaxURL = apiURL + 'index.php?page=out&id=' + id;
        if (id != 'null' && id != 'undefined') {
            me.clickedXHR.send(ajaxURL, 'get', me.beenClicked, null);
        }
    };
    me.beenClicked = function (obj) {};
    me.getClickThroughInfo = function () {
        var ajaxURL = apiURL + 'getclicks.php?url=' + me.url + '&days=' + me.numberDays + '&rand=' + Math.random();
        me.getClicksXHR.send(ajaxURL, 'get', me.displayClickThroughs, null);
    };
    me.keyCheck = function (e) {
        var keyID = (window.event) ? event.keyCode : e.keyCode;
        var ctrlKey = (window.event) ? event.ctrlKey : e.ctrlKey;
        if ((keyID == 88) && (ctrlKey == true)) {
            eltLabels = me.getElementsByClassName('linklabel');
            if (eltLabels.length == 0) {
                me.getClickThroughInfo();
            } else {
                for (var i = 0; i < eltLabels.length; i++) {
                    eltLabels[i].parentNode.removeChild(eltLabels[i]);
                }
            }
        }
    };
    me.getInnerText = function (node, text) {
        for (var i = 0; i < node.childNodes.length; i++) {
            if (node.childNodes[i].nodeType == 3) {
                text += node.childNodes[i].nodeValue;
            }
            if (node.childNodes[i].nodeType == 1) {
                text = me.getInnerText(node.childNodes[i], text);
            }
        }
        return text;
    };
    me.getFormTarget = function (elt) {
        target = null;
        parentElt = elt.parentNode;
        if (parentElt.nodeType == 1) {
            if (parentElt.tagName == 'FORM') {
                target = parentElt.getAttribute('action');
            } else {
                target = me.getFormTarget(elt.parentNode);
            }
        } else {
            target = me.getFormTarget(elt.parentNode);
        }
        return target;
    };
    me.addEvent = function (elm, evType, fn, useCapture) {
        if (elm.AddEventListener) {
            elm.AddEventListener(evType, fn, useCapture);
            return true;
        } else if (elm.attachEvent) {
            var r = elm.attachEvent('on' + evType, fn);
            me.listeners[me.listeners.length] = [elm, evType, fn];
            return r;
        } else {
            var xEventFn = elm['on' + evType];
            if (typeof elm['on' + evType] != 'function') {
                elm['on' + evType] = fn;
            } else {
                elm['on' + evType] = function (e) {
                    xEventFn(e);
                    fn(e);
                };
            }
        }
    };
    me.unload = function () {
        if (window.attachEvent) {
            for (var i = 0; i < me.listeners.length; i++) {
                me.listeners[i][0].detachEvent('on' + me.listeners[i][1], me.listeners[i][2]);
            }
        }
    };
    me.getElementsByClassName = function (className) {
        var children = document.getElementsByTagName('*') || document.all;
        var elements = new Array();
        for (var i = 0; i < children.length; i++) {
            var child = children[i];
            var classNames = child.className.split(' ');
            for (var j = 0; j < classNames.length; j++) {
                if (classNames[j] == className) {
                    elements.push(child);
                    break;
                }
            }
        }
        return elements;
    };
    me.findSourceElement = function (e) {
        if (typeof e == 'undefined') var e = window.event;
        var source;
        if (typeof e.target != 'undefined') {
            source = e.target;
	    i = 0;
            while (source.tagName != 'A' && i<10) {
		i++;
                source = e.target.parentNode;
            }
        } else if (typeof e.srcElement != 'undefined') {
            source = e.srcElement;
        } else {
            return true;
        }
        if (source.nodeType == 3) source = source.parentNode;
        return source;
    };
    me.getPageOffsetLeft = function (elt) {
        var x;
        x = elt.offsetLeft;
        if (elt.offsetParent != null) x += me.getPageOffsetLeft(elt.offsetParent);
        return x;
    };
    me.getPageOffsetTop = function (elt) {
        var y;
        y = elt.offsetTop;
        if (elt.offsetParent != null) y += me.getPageOffsetTop(elt.offsetParent);
        return y;
    };
    me.addEvent(window, 'load', me.addLinkTracking, false);
    me.addEvent(document, 'keydown', me.keyCheck, false);
    me.addEvent(window, 'unload', me.unload, false);
}
var ajaxLinkTracker = new AjaxLinkTracker();

function XHRConnection() {
    var me;
    if (this.constructor == XHRConnection) {
        me = this
    } else {
        me = arguments[arguments.length - 1]
    }
    me.Request = me.createXHR();
    me.handler = function () {
        if (me.Request.readyState == 4) {
            if (me.Request.status == 200) {
                me.processResponse();
            }
        }
    };
    me.send = function (url, action, fnOK) {
        me.URL = url;
        me.Action = action;
        me.fnOK = fnOK;
        if (me.Request != null) {
            me.Request.open(me.Action, me.URL, true);
            me.Request.onreadystatechange = me.handler;
            me.Request.send(null);
        } else {
            alert('Could not load XHR object');
        }
    }
};
XHRConnection.prototype.createXHR = function () {
    try {
        return new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {}
    try {
        return new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e) {}
    try {
        return new XMLHttpRequest();
    } catch (e) {}
    return null;
};
XHRConnection.prototype.processResponse = function () {
    this.fnOK(this.Request);
};

function RPCCalls() {
    var me;
    if (this.constructor == RPCCalls) {
        me = this;
    } else {
        me = arguments[arguments.length - 1];
    }
    me.createRequestObject = function () {
        var ro;
        var browser = navigator.appName;
        if (browser == "Microsoft Internet Explorer") {
            ro = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            ro = new XMLHttpRequest();
        }
        return ro;
    };
    me.sndReq = function (e) {
        http = new me.createRequestObject();
        http.open('get', apiURL + 'rpc.php', true);
        http.onreadystatechange = function () {
            if (http.readyState == 4) {
                if (http.responseText != '') {
                    e.test = "aaa";
                    e.href = http.responseText;
                    e.target = '_blank';
                }
            }
        };
        http.send(null);
    }
}
