if (typeof Event == 'undefined') { Event = {}; } Event.domReady = { add: function(fn) { if (Event.domReady.loaded) { return fn() } var observers = Event.domReady.observers; if (!observers) { observers = Event.domReady.observers = [] } observers[observers.length] = fn; if (Event.domReady.callback) { return } Event.domReady.callback = function() { if (Event.domReady.loaded) { return } Event.domReady.loaded = true; if (Event.domReady.timer) { clearInterval(Event.domReady.timer); Event.domReady.timer = null } var observers = Event.domReady.observers; for (var i = 0, length = observers.length; i < length; i++) { var fn = observers[i]; observers[i] = null; fn(); } Event.domReady.callback = Event.domReady.observers = null }; var ie = !!(window.attachEvent && !window.opera); var webkit = navigator.userAgent.indexOf('AppleWebKit/') > -1; if (document.readyState && webkit) { Event.domReady.timer = setInterval(function() { var state = document.readyState; if (state == 'loaded' || state == 'complete') { Event.domReady.callback() } }, 50) } else if (document.readyState && ie) { var src = (window.location.protocol == 'https:') ? '://0' : 'javascript:void(0)'; document.write('<script type="text/javascript" defer="defer" src="' + src + '" ' + 'onreadystatechange="if (this.readyState == \'complete\') Event.domReady.callback();"' + '><\/script>') } else { if (window.addEventListener) { document.addEventListener("DOMContentLoaded", Event.domReady.callback, false); window.addEventListener("load", Event.domReady.callback, false) } else if (window.attachEvent) { window.attachEvent('onload', Event.domReady.callback) } else { var fn = window.onload; window.onload = function() { Event.domReady.callback(); if (fn) { fn(); } } } } } };
var adboost = {
    cookies: [],
    clientCallback: null,
    serverCallback: 'adboost.validatePixel',
    clientCallbackPartnerID: '',
    abBaseURL: 'https://adboost.finalid.com',
    abURL: 'https://adboost.finalid.com/ECDCookieService.svc',
    add: function(name, value) {
        this.cookies.push({ 'name': name, 'value': value });
    },
    submit: function(partnerID, callback) {
        var c = [];
        var url;
        var l = this.cookies.length;
        for (var i = 0; i < l; i++) { c.push(this.cookies[i].name + ':' + this.cookies[i].value); }
        
        this.clientCallback = callback;
        this.clientCallbackPartnerID = partnerID;
        var url = [this.abURL, '/ReadWritePartnerCookie?partnerID=', partnerID, '&cookieValue=', c.join('|'), '&method=', this.serverCallback].join('');

        this.createScript(url);
        this.cookies = [];
    },
    getCookie: function(cookieName, callback) {
        var url = [this.abURL, '/GetCookie?cookieName=', cookieName, '&method=', callback].join('');
        this.createScript(url);
    },
    readWriteCookie: function(cookieValue, callback) {
		this.clientCallback = callback;
        this.clientCallbackPartnerID = "ECD";
        var url = [this.abURL, '/ReadWriteMultiValueCookie?', cookieValue, '&method=', this.serverCallback].join('');
        this.createScript(url);
    },
    writePartnerImagePixel: function(partnerID, cookieValue, callback) {
        var url = [this.abURL, '/ReadWritePartnerCookie?partnerID=', partnerID, '&cookieValue=', cookieValue, '&method=', callback].join('');
        this.createScript(url);
    },
    optout: function(callback) {
        var url = [this.abURL, '/OptOut?method=', callback].join('');
        this.createScript(url);
    },
    optin: function(callback) {
        var url = [this.abURL, '/Optin?method=', callback].join('');
        this.createScript(url);
    },
    getPixel: function(partnerID, callback) {
        var url = [this.abURL, '/GetPixel?partnerID=', partnerID, '&method=', callback].join('');
        this.createScript(url);
    },
    validatePixel: function(result) {
		
        if (result != null && result.length > 0 && result[0].Name == "PIXEL" && result[0].Value == "true") {
            this.getPixel(this.clientCallbackPartnerID, 'adboost.procPixel');
        }
    },
    getPartnerCookie: function(partnerID, callback) {
        var url = [this.abURL, '/GetPartnerCookie?partnerID=', partnerID, '&method=', callback].join('');
        this.createScript(url);
    },
    writePartnerCookie: function(partnerID, callback) {
        var c = [];
        var url;
        var l = this.cookies.length;
        for (var i = 0; i < l; i++) { c.push(this.cookies[i].name + ':' + this.cookies[i].value); }
        url = [this.abURL, '/WritePartnerCookie?partnerID=', partnerID, '&cookieValue=', c.join('|'), '&method=', callback].join('');
        this.createScript(url);
    },
    createScript: function(url, callback, data) {
        // Based on jQuery 1.4.2 "$.getScript()"
        var head = document.getElementsByTagName("head")[0] || document.documentElement;
        var script = document.createElement("script");
        script.src = url;
        var done = false;
        if (callback) {
            script.onload = script.onreadystatechange = function() {
                if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                    done = true;
                    if (typeof callback == "string") { eval(callback).call(adboost, data); } else if (typeof callback == "function") { callback.call(adboost, data); }
                    // Handle memory leak in IE
                    script.onload = script.onreadystatechange = null;
                    if (head && script.parentNode) {
                        head.removeChild(script);
                    }
                }
            };
        }
        head.insertBefore(script, head.firstChild);
    },
    createIframe: function(params) {
        var cfg = { id: "iframe", name: "iframe", src: "about:blank", width: "0", height: "0", frameborder: "0", display: "none", callback: null };
        params = this.cfgApply(cfg, params);
        var body = document.getElementsByTagName("body")[0] || document.documentElement;
        var i = (/*@cc_on!@*/false) ? document.createElement('<iframe name="' + params.name + '"></iframe>') : document.createElement("iframe");
        i.src = params.src;
        i.id = params.id;
        i.name = params.name;
        i.width = params.width;
        i.height = params.height;
        i.style.display = params.display;
        i.frameborder = params.frameborder;
        var done = false;

        if (params.callback) {
            i.onload = i.onreadystatechange = function() {
                if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                    done = true;
                    if (typeof params.callback == "string") { eval(params.callback).call(adboost); } else if (typeof params.callback == "function") { params.callback.call(adboost); }
                }
            };
        }
        body.insertBefore(i, body.firstChild);
    },
    procPixel: function(o) {
        var l = o.length;
        if (o.constructor == Array && l > 0) {
			if (this.clientCallback != null && this.clientCallback.length > 0) {
					eval(this.clientCallback).call(adboost, o[0].Cookies);
			}
            for (var i = 0; i < l; i++) {
                this.createScript(this.abBaseURL + o[i].PixelValue, "execPixel_" + o[i].PixelName.toLowerCase(), o);
            }
        }
    },
    cfgApply: function(o, c, defaults) {
        if (defaults) { adboost.cfgApply(o, defaults); }
        if (o && c && typeof c == 'object') { for (var p in c) { o[p] = c[p]; } }
        return o;
    }
};


function setThirdPartyCookie(cookieValue)
{
    Event.domReady.add(function() {
        adboost.readWriteCookie(cookieValue, 'saveProspectIQData');
        //2-second delay to first stamp the ECD cookie and then to read the data from it.
        setTimeout("adboost.getPartnerCookie('ECD', 'ECDAIQ.DART.processAIQCookieResponse');", 2000);
    });
}

function saveProspectIQData(result)
{
	ECD.Web.WebProcesses.bpRegisterCookie.SaveProspectIQData(result);
}

var ECDAIQ = {
    DART: {
        processAIQCookieResponse: function(result) {
            if (result.length > 0) {
                for (i = 0; i < result.length; i++) {
                    nm = result[i].Name;
                    val = result[i].Value;
                    if (nm == 'Age:ECD:ECD') {
                        document.cookie = 'custAge=' + val + ';path=/';
                    }
                    else if (nm == 'Active3B:ECD:ECD') {
                        document.cookie = 'active3B=' + val + ';path=/';
                    }
                    else if (nm == 'PROBABLE_HOMEOWNER:ECD:PIQ') {
                        document.cookie = 'custPHO=' + val + ';path=/';
                    }
                }
            }
        }
    }
};
