// Date: 2011-04-12

// run ad request
function adrun(params)
{
    if ((typeof params.trackingUrl != "undefined") && (params.trackingUrl)) {
        moceanv2_ad['ad_tracking_run'+moceanv2_tt] = function () {
            var tmp = Math.floor(Math.random()*400);
            var nonCached = '';
            if (params.trackingUrl.indexOf("?") != -1) {
                nonCached = '&moceanv2tmp='+tmp;
            } else {
                nonCached = '?moceanv2tmp='+tmp;
            }

            var i = new Image();
            var redirectUrl = this.href;
            var redirectFunction = function() { document.location.href = redirectUrl; }
            i.onload = redirectFunction;
            i.onerror = document.location.href = redirectUrl;
            i.src = params.trackingUrl + nonCached;

            return false;
        }
    }

    var el = document.createElement("script");
    var src_data = '';
    if(typeof el == 'object') {
        el.type = "text/javascript";
        if (params.siteId && params.zoneId) {
            src_data = "http://www.moceanmobile.com/ad2.php?host=ads.mocean.mobi&site="+params.siteId+"&zone="+params.zoneId+'&count=2&url='+escape(document.location);
            if (typeof params.browserTarget != "undefined") {
                src_data = src_data + "&target="+escape(params.browserTarget);
            }
            if (typeof params.adstype != "undefined") {
                src_data = src_data + "&adstype="+escape(params.adstype);
            }
            if (typeof params.size_x != "undefined") {
                src_data = src_data + "&size_x="+escape(params.size_x);
            }
            if (typeof params.size_y != "undefined") {
                src_data = src_data + "&size_y="+escape(params.size_y);
            }
            if (typeof params.min_size_x != "undefined") {
                src_data = src_data + "&min_size_x="+escape(params.min_size_x);
            }
            if (typeof params.min_size_y != "undefined") {
                src_data = src_data + "&min_size_y="+escape(params.min_size_y);
            }
            if (typeof params.borderColor != "undefined") {
                src_data = src_data + "&paramBORDER="+escape(params.borderColor);
            }
            if (typeof params.headerColor != "undefined") {
                src_data = src_data + "&paramHEADER="+escape(params.headerColor);
            }
            if (typeof params.bgColor != "undefined") {
                src_data = src_data + "&paramBG="+escape(params.bgColor);
            }
            if (typeof params.textColor != "undefined") {
                src_data = src_data + "&paramTEXT="+escape(params.textColor);
            }
            if (typeof params.linkColor != "undefined") {
                src_data = src_data + "&paramLINK="+escape(params.linkColor);
            }
            if (typeof params.version != "undefined") {
                src_data = src_data + "&version="+escape(params.version);
            }
            if (typeof params.cookieUDID != "undefined") {
                src_data += "&udid=" + escape(params.cookieUDID);
            }
            if (params.mode == 'test'){
                el.scr = src_data + "&test=1";
            }

            src_data = src_data + '&t='+moceanv2_tt;

            if(typeof ADMOB_PARTNER_ID != "undefined") {
                src_data += "&ADMOB_PARTNER_ID = "+ADMOB_PARTNER_ID;
                if(typeof ADMOB_COORDINATES != "undefined") {
                    src_data += "&ADMOB_COORDINATES = "+ADMOB_COORDINATES;
                }
                if(typeof ADMOB_POSTAL_CODE != "undefined") {
                    src_data += "&ADMOB_POSTAL_CODE = "+ADMOB_POSTAL_CODE;
                }
                if(typeof ADMOB_DOB != "undefined") {
                    src_data += "&ADMOB_DOB = "+ADMOB_DOB;
                }
                if(typeof ADMOB_GENDER != "undefined") {
                    src_data += "&ADMOB_GENDER = "+ADMOB_GENDER;
                }
                if(typeof ADMOB_KEYWORDS != "undefined") {
                    src_data += "&ADMOB_KEYWORDS = "+ADMOB_KEYWORDS;
                }
                if(typeof ADMOB_SEARCH != "undefined") {
                    src_data += "&ADMOB_SEARCH = "+ADMOB_SEARCH;
                }
                if(typeof ADMOB_MARKUP != "undefined") {
                    src_data += "&ADMOB_MARKUP = "+ADMOB_MARKUP;
                }
            }

            if(typeof ADMODA_ZONE != "undefined") {
                src_data += "&ADMODA_ZONE = "+ADMODA_ZONE;
            }

            if(typeof ADSHANDY_PARTNER_ID != "undefined") {
                src_data += "&ADSHANDY_PARTNER_ID = "+ADSHANDY_PARTNER_ID;
                if(typeof ADSHANDY_LANGUAGE != "undefined") {
                    src_data += "&ADSHANDY_LANGUAGE = "+ADSHANDY_LANGUAGE;
                }
            }

            if(typeof BUZZCITY_PARTNER_ID != "undefined")  {
                src_data += "&BUZZCITY_PARTNER_ID = "+BUZZCITY_PARTNER_ID;
            }

            if(typeof DECKTRADE_PARTNER_ID != "undefined") {
                src_data += "&DECKTRADE_PARTNER_ID = "+DECKTRADE_PARTNER_ID;
            }

            if(typeof SMAATO_PARTNER_ID != "undefined") {
                src_data += "&SMAATO_PARTNER_ID = "+SMAATO_PARTNER_ID;
                if(typeof SMAATO_AD_SPACE != "undefined") {
                    src_data += "&SMAATO_AD_SPACE = "+SMAATO_AD_SPACE;
                }
                if(typeof SMAATO_AD_FORMAT != "undefined") {
                    src_data += "&SMAATO_AD_FORMAT = "+SMAATO_AD_FORMAT;
                }
                if(typeof SMAATO_LANGUAGE != "undefined") {
                    src_data += "&SMAATO_LANGUAGE = "+SMAATO_LANGUAGE;
                }
            }

        }

        if(typeof(adZones[0] != "undefined")) {
            adZones[0].parentNode.appendChild(el);
        } else {
            document.getElementsByTagName("head")[0].appendChild(el);
        }
        el.src = src_data;
    }
}

// show result
function show(ad_text)
{
    var noscript = document.getElementById('moceandirect');
    if (noscript != null) {
        noscript.parentNode.removeChild(noscript);
    }

    if (!ad_text) {
        // FIXME moceanv2_defaultHtml doesn't exist anymore
        if (typeof moceanv2_defaultHtml != "undefined") {
            ad_text = moceanv2_defaultHtml;
        }
    }

    ad_text = ad_text.replace(/&amp;/g,"&");
    ad_text = ad_text.replace(/&lt;/g,"<");
    ad_text = ad_text.replace(/&gt;/g,">");
    ad_text = ad_text.replace(/&quot;/g,"\"");
    ad_text = ad_text.replace(/&#039;/g,"'");

    var reg_all = /<script.*?>.*?<\/script.*?>/gi;

    // get all scripts
    var results_all = ad_text.match(reg_all);

    // remove all scripts
    ad_text = ad_text.replace(reg_all,'');

    // insert HTML content of Ad
    if(ad_text.search(/[\w]/) != -1) {
        var D = document.createElement("div");
        ad_text = ad_text.replace(/&#rn;/g,"\r\n");
        ad_text = ad_text.replace(/&#n;/g,"\n");
        D.innerHTML = ad_text;

        if (typeof(moceanv2_ad['ad_tracking_run'+moceanv2_tt]) != "undefined") {
            var anchors = D.getElementsByTagName("a");
            for (var i=0;i<anchors.length;i++) {
                anchors[i].onclick = moceanv2_ad['ad_tracking_run'+moceanv2_tt];
            }
        }

        if(adZones[moceanv2_ad.count] != undefined) {
            adZones[moceanv2_ad.count].parentNode.insertBefore(D,adZones[moceanv2_ad.count]);
        }
    }

    // if there are any script tags in Ads
    if (results_all) {

        // backup document.write function
        var dw_saved = document.write;
        var dw_output = "";

        // overload document.write()
        document.write = function( pString ){
            dw_output +=  pString;
        }

        var reg = /<script(?:(?:[^>]+?language=(?:"|')javascript(?:'|"))|(?:[^>]+?type=(?:"|')text\/javascript(?:'|")))*?[^>]*?>(.*?)<\/script[^>]*?>/i;

        for (var i = 0; i < results_all.length; i++) {
           if (results_all[i].match(reg)) {
                var r = results_all[i].replace(reg,'$1');
                r = r.replace(/&#rn;/g,"\r\n");
                r = r.replace(/&#n;/g,"\n");

                // Replacing unnecessary symbols.
                r = r.replace(/<\!\-\-|\-\->/g,"");
                r = r.replace(/<\!\[CDATA\[\/\/>|<\!\]\]>/g,"");
                r = r.replace(/<\!\[CDATA\[|\]\]>/g,"");
                // we need to eval all scripts in global window scope
                try {
                    with (window) {
                        window.eval(r);
                    }
                }
                catch(err) {}

/*                var D = document.createElement("script");
                D.setAttribute("type","text/javascript");
                D.innerHTML = r;

                if(adZones[moceanv2_ad.count] != undefined) {
                    adZones[moceanv2_ad.count].parentNode.insertBefore(D,adZones[moceanv2_ad.count]);
                }*/
            }
        }

        // restore document.write function
        document.write = dw_saved;

        // insert the whole content created by document.write()
        var D = document.createElement("div");
        D.innerHTML = dw_output;
        if(adZones[moceanv2_ad.count] != undefined) {
            adZones[moceanv2_ad.count].parentNode.insertBefore(D,adZones[moceanv2_ad.count]);
        }
    }

    moceanv2_ad.count++;
}

// set script loaded flag
if (typeof loadedOk != "undefined") {
    loadedOk = 1;
}

// collect zones in html where we append ads
var adZones = [];
var documentScripts = document.getElementsByTagName("script");
for (var i = 0; i < documentScripts.length; i++) {
    if (documentScripts[i].src.match(/moceanv2.js/)) {
        adZones.push(documentScripts[i]);
    }
}

if (typeof moceanv2_ad == 'undefined') {
    var moceanv2_ad = {"count":0};
}
// FIXME we update this global variable every new tag but in shows we expect it to be the same
var moceanv2_tt = Math.floor(Math.random()*500);

