(function() {
    windowLoaded = false;
    var scDataSent = [];

    window.addEvent = function(obj, evType, fn, useCapture) {
        if (obj.addEventListener) {
            obj.addEventListener(evType, fn, useCapture);
            return true;
        } else if (obj.attachEvent) {
            var r = obj.attachEvent("on" + evType, fn);
            return r;
        };
    };

    addEvent(window, 'load', function() { windowLoaded = true; }, false);

    window.scSendData = function(data, ltv, unique, delay) {
        data = typeof (data) != "undefined" ? data : false;
        ltv = typeof (ltv) != "undefined" ? ltv : "";
        unique = typeof (unique) != "undefined" ? unique : false;
        delay = typeof (delay) != "undefined" ? delay : false;
        switch (typeof delay) {
        case "number":
            setTimeout(function () {
                scSendData(data, ltv, unique);
            }, delay);
            return;
        case "string":
            eval("addEvent(" + delay.substring(0, delay.indexOf(".")) + ", '" + delay.substring(delay.indexOf(".on") + 3) + "', function(){scSendData(data, ltv, unique); });");
            return;
        };
        if (typeof s_obj == "undefined" || typeof s_obj.tl == "undefined") {
            if (!windowLoaded) {
                scSendData(data, ltv, unique, "window.onload");
            };
            return;
        };
        if (unique) {
            if (typeof data != "string") {
                var serializedData = [];
                if (typeof unique == "string") {
                    var uniqueArray = unique.replace(/\s/g, "").split(",");
                    var uniqueHash = [];
                    for (var i = 0; i < uniqueArray.length; i++) {
                        uniqueHash[uniqueArray[i]] = true;
                    };
                };
                for (i in data) {
                    if (typeof i != "function") {
                        if (typeof uniqueHash != "undefined" && typeof uniqueHash[i] == "undefined") {
                            continue;
                        };
                        serializedData[serializedData.length] = i + data[i];
                    };
                };
                serializedData = serializedData.sort().join("");
            } else {
                var serializedData = data;
            };
            if (typeof scDataSent[serializedData] != "undefined") {
                return;
            };
            scDataSent[serializedData] = true;
        };
        s = s_gi(s_account);
        for (i in data) {
            if (typeof i != "function") {
                data[i] = data[i].replace(/'/g, "\\'");
                if (i != "linkName") {
                    ltv += (ltv == "" ? "" : ",") + i;
                    eval("s_obj." + i + " = '" + data[i] + "';");
                };
            };
        };
        var oldLinkTrackVars = s_obj.linkTrackVars;
        s_obj.linkTrackVars = ltv.replace(/\s/g, "");
        s_obj.tl(true, 'o', (typeof data.linkName != "undefined" ? data.linkName : "No link name"));
        s_obj.linkTrackVars = oldLinkTrackVars;
    };
})();

