﻿
var _domain = GetDomain();
var _searchPageStatURL = "http://stats." + _domain + "/Services/srv.asmx/insert";
var _uninstallPageStatURL = "http://stats." + _domain + "/Services/i.asmx/update";
var _defaultPageStatURL = "http://stats." + _domain + "/Services/pv.asmx/insert";
var _srStatURL = "http://stats." + _domain + "/Services/src.asmx/insert";
var _srErrURL = "http://stats." + _domain + "/logexterr.ashx";
var _sReferrerToIgnore = "www.facebook.com/connect/prompt_feed.php";
var _StatSent = false;

function LogErr(ex) {
    if (navigator.userAgent.indexOf("MSIE") == -1)
        return;

    try {
        var ifr = document.getElementById("statsFrm");
        ifr.setAttribute("src", _srErrURL + "?err=" + escape(ex));
        
    }
    catch(e){}
    
    
}

function Get_Cookie(c_name) {
    try {
        if (document.cookie.length > 0) {
            var c_start = document.cookie.indexOf(c_name + "=");
            var c_end = "";
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1;
                c_end = document.cookie.indexOf(";", c_start);
                if (c_end == -1) c_end = document.cookie.length;
                return unescape(document.cookie.substring(c_start, c_end));
            }
        }
    }
    catch (ex) {
        LogErr(ex);
    }
    
    return "";
}

function GetToolbarhomeCkUsageData(ckVal, URL, ElementName) {
    try {
        //LogErr("out6: "+ckVal);
        var ckValArr = ckVal.split("&");
        var strStats = "";
        //LogErr("ckVal2B0: "+ckVal);
        for (var i in ckValArr) {
            //if(ckValArr[i].split('=').length<2)
            //  LogErr("length <2!!! "+ckValArr[i]);
            strStats += ckValArr[i].split('=')[0] + '=' + ckValArr[i].split('=')[1] + '&';
        }


    }
    catch (ex) {
        LogErr("exception " + ex);
    }
    RecordStat(strStats, URL, ElementName);
}


function GetTBGUID(partnerIdentifier) {
    var ckVal = Get_Cookie("toolbarhome_" + partnerIdentifier + "_usage");
    //solve radiobar redirection to different subdomain
    if (ItemIsEmpty(ckVal) && partnerIdentifier == "playbox")
        ckVal = Get_Cookie("toolbarhome_radiobar_usage");

    //LogErr("In: "+ckVal);
    //LogErr("Out7: "+ckVal);
    //alert(ckVal);
    try {
        if (!ItemIsEmpty(ckVal)) { //cookie exist for the current client + toolbar (partner)
            GetToolbarhomeCkUsageData(ckVal, null, null); //send stats using the cookie
            return;
        }

        if ("createEvent" in document) { // firefox
            var element = document.createElement("ToolbarHomeStatsDataElement");
            element.setAttribute("partnerIdentifier", partnerIdentifier);
            document.documentElement.appendChild(element);

            var ev = document.createEvent("Events");
            ev.initEvent("toolbarhome_tbEvent", true, false);
            element.dispatchEvent(ev);
            setTimeout(function() { CheckFFTBResponse(element, null, null) }, 1000); //Record stats for Firefox with the data from the toolbar (user do not have cookie)
        }
        else { //IE
            var partnerID = GetNameForIEScriptHelper(partnerIdentifier);
            var sh = false;
            try {
                sh = new ActiveXObject(partnerID + ".ScriptHelpers");
            }
            catch (ex) { sh = false; } //User doesn't have toolbar version with stats support (v4.1)
            if (sh) {
                ChexkIETBResponse(sh, partnerID, null, null); //Record stats for IE with the data from the toolbar (user do not have cookie)
            }
            else {
                var strStats = 'ClientID=unknown&PartnerID=' + partnerID + '&';
                RecordStat(strStats, null, null); //Record stats for IE with guestID (user do not have cookie + toolbar stats support)
            }
            
        }
    }
    catch (ex) {
        LogErr(ex);
    }
    
    
}


function ChexkIETBResponse(sh, PartnerID, URL, ElementName) {
    var clientID = "unknown";
    if (!ItemIsEmpty(sh.ClientID))
        clientID = sh.ClientID;

    if (!ItemIsEmpty(sh.PartnerID))
        PartnerID = sh.PartnerID;

    var strStats = 'ClientID=' + clientID + '&PartnerID=' + PartnerID + '&';
    RecordStat(strStats, URL, ElementName);
}

function CheckFFTBResponse(element, URL, ElementName) {
    var toolbarstats = null;
    var clientID = "unknown";
    var partnerID = element.getAttribute("partnerIdentifier");
    if (element.childNodes.length > 0)
        toolbarstats = element.firstChild;
   
    var strStats = "";
    var i = 0;

    if (toolbarstats != null) {
        for (i = 0; i < toolbarstats.childNodes.length; i++) {
            if (toolbarstats.childNodes[i].nodeName == "guid")
                strStats += 'ClientID=' + toolbarstats.childNodes[i].innerText + '&';
            else if (toolbarstats.childNodes[i].nodeName == "tbid")
                strStats += 'PartnerID=' + toolbarstats.childNodes[i].innerText + '&';
        }
    }
    else {
        strStats = 'ClientID=' + clientID + '&PartnerID=' + partnerID + '&';
    }
    
    //alert(strStats);
    RecordStat(strStats, URL, ElementName);
}

function Stat(partnerIdentifier, URL, ElementName) {
    try {
        var ckVal = Get_Cookie("toolbarhome_" + partnerIdentifier + "_usage");
        if (!ItemIsEmpty(ckVal)) {
            
            GetToolbarhomeCkUsageData(ckVal, URL, ElementName);
            return;
        }

        if ("createEvent" in document) {
            var element = document.createElement("ToolbarHomeStatsDataElement");
            element.setAttribute("partnerIdentifier", partnerIdentifier);
            document.documentElement.appendChild(element);

            var ev = document.createEvent("Events");
            ev.initEvent("toolbarhome_tbEvent", true, false);
            element.dispatchEvent(ev);
            setTimeout(function() { CheckFFTBResponse(element, URL, ElementName) }, 1000);
        }
        else {
            partnerID = partnerIdentifier;
            clientID = "unknown";
            ChexkIETBResponse(clientID, partnerID, URL, ElementName);
        }
    }
    catch (ex) {
        LogErr(ex);
    }

}

function RecordStat(params, URL, ElementName) {
   try
   {    
        var isLinkStat = false;
        var sReferer = escape(document.referrer);
      
        //patch for facebook page reload after closing connect
        if (sReferer.indexOf(_sReferrerToIgnore) > -1)
            return;
        //=======================================================
            
        var sURL = escape(location.href);
        if (params != "") {
            if (ItemIsEmpty(URL) || ItemIsEmpty(ElementName)) {
                params += 'PageName=&PageSource=&URL=' + sURL + '&ReferrerURL=' + sReferer;
                params = '?' + params;
            }
            else {
                isLinkStat = true;
                params += 'URL=' + escape(URL) + '&ReferrerURL=' + sReferer + '&ElementName=' + ElementName;
                params = '?' + params;
            }
        }
         //if (params.indexOf('unknown') > -1)
               // LogErr("item is still here");


        var sPage = GetPageName();
        var sSource = GetPageSource();
        
        var wsUrl = "";
        
        
        if (isLinkStat) {
            wsUrl = _srStatURL;
        }
        else {
            if (sSource != "hp=df" && (sPage.indexOf("search") > -1 || sPage.indexOf("ask") > -1))
                wsUrl = _searchPageStatURL;
            else if (sPage.indexOf("uninstall") > -1) {
                wsUrl = _defaultPageStatURL;
                SendStat(wsUrl + params);
                //we set _StatSent to false in order to allow second call to SendStat Fx
                _StatSent = false;
                //params = params.substring(0, params.indexOf("&"));
                wsUrl = _uninstallPageStatURL;
            }
            else
                wsUrl = _defaultPageStatURL;
        }
    }
    catch(ex){
        LogErr(ex);
    }
    
    SendStat(wsUrl + params + "&rand=" + Math.random());
    //LogErr("out: "+params);
   
}

function RecordStatCallback(data) {
    return;
    //alert(data);
}

function SendStat(url) {
    if (_StatSent)
        return;
        
    try {
        if (navigator.userAgent.indexOf("MSIE") > -1) {


            var ifr = document.getElementById("statsFrm");
            ifr.setAttribute("src", url);
            //alert(ifr.getAttribute("src"));
        }
        else {
            var statImg = new Image();
            statImg.src = url;
       }

    }
    catch (e) { }

    _StatSent = true;
    
}

function GetPageName() {
    try
    {
        var sPath = window.location.pathname;
        var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
        sPage = sPage.substring(0, sPath.indexOf('.') > -1 ? sPath.indexOf('.') - 1 : sPath.length);
        if (ItemIsEmpty(sPage))
            sPage = "default";
    
        return sPage;
    }
    catch(ex) {
        LogErr("GetPageName: " + ex);
        return "default";
    }
}

function GetPageSource() {
    var sHref = window.location.href;
    var sSource = sHref.substring(sHref.lastIndexOf('?') + 1);

    return sSource;
}

function GetDomain() {
    var domain = document.domain;
    var domainSegments = domain.split(".");
    if (domainSegments.length > 2)
        domain = domain.substring(domain.indexOf(".") + 1);

    return domain;
}

function GetNameForIEScriptHelper(PartnerID) {
    var scriptHelperName = PartnerID;
    //gamebox;blogtvus;videobox2
    switch (PartnerID) {
        case "gamebox":
            scriptHelperName = "gamebox";
            break;
        case "blogtvus":
            scriptHelperName = "blogtv";
            break;
        case "videobox2":
            scriptHelperName = "videobox";
            break;
        default:
            break;


    }
    return scriptHelperName;
}

function ItemIsEmpty(item) {
    if (typeof item == "undefined" || item == null || item == "" || item == "null")
        return true;
    else
        return false;
}