﻿//<!CDATA[

function getNextSibling(startBrother) {
    var endBrother = startBrother.nextSibling;
    while (endBrother.nodeType != 1) {
        endBrother = endBrother.nextSibling;
    }
    return endBrother;
}

function getPrevSibling(startBrother) {
    var endBrother = startBrother.previousSibling;
    while (endBrother.nodeType != 1) {
        endBrother = endBrother.previousSibling;
    }
    return endBrother;
}

function getFirstChild(elm) {
    if (!elm.childNodes.length) {
        return;
    }
    var children = elm.childNodes.length;
    for (var i = 0; i <= children; ++i) {
        if (elm.childNodes[i].nodeType == 1) {
            return elm.childNodes[i];
        }
    }
    return;
}

function AdNavigateUrl(othis) {

    if (othis.firstChild == undefined) {
        alert("Navigate url information is missing!");
    } else {
        var elem = othis.firstChild;
        othis.target = "_blank";
        window.open(elem.href);
    }
}

function get_random() {
    var ranNum = Math.random() * 10;
    return ranNum.toString();
}

//=====================
// Register Statistics
//=====================

function DisableRegStat() {
    document.getElementById("txtRegStatAutoViewDone").value = "1";
}

//Loaded by serverpage PubpProd.aspx.cs at event Page_LoadComplete
//Loaded by javascript autoview register statistic records
function ViewCounter() {

    strRecID = "";

    var arrElem = document.getElementsByTagName("div");
    
    try{
    
        for (var i = 0; i < arrElem.length; i++) {
            var elem = arrElem[i].childNodes;
            for (var j = 0; j < elem.length; j++) {
                if (elem[j].id != undefined) {
                    var strValue = elem[j].id;
                    if (strValue.indexOf("AdFile_") != -1) {
                        strRecID = strRecID + ";" + strValue.substring(7, strValue.length);
                    }
                }
            }
        }
        
        if (strRecID != undefined) {
            if (strRecID.length > 0) {
                strRecID = strRecID.substring(1, strRecID.length);
                adStatistic.Register(1, strRecID);
            }
        }
        
        return (true);
        
    } catch (e) {
        processErrorCall("Method: ViewCounter; Descr:  " + getErrorMsg(e));
        return (false);
    }

}

function HitCounter() {

    var strRecID = document.getElementById("txtRecID").value;
    var sRedirect = document.getElementById("txtRedirect").value;
        
    try {
        if (sRedirect == undefined)
            sRedirect = "";
            
        if (sRedirect == "" || sRedirect.indexOf('.') == -1 || sRedirect.indexOf('/') == -1) {
            setTimeout(function() {location.replace("Inform.aspx"); }, 50);
            return false;
        } 
        
        if (strRecID != undefined) {
            if (strRecID.length > 0) {
                adStatistic.Register(2, strRecID);
            }
        }
        
    } catch (e) {
        processErrorCall("Method Hitcounter; Descr: " + getErrorMsg(e));
    }
    
    ///openWindow();
    return (false);
}

var adCookie = {

    setUser: function() {
        var expiredays = 30;
        var expdate = new Date();
        var visitorNo = get_random();
        expdate.setDate(expdate.getDate() + expiredays);

        try {
            document.cookie = "visitor_reg_userid=" + visitorNo + "; expires=" + expdate.toGMTString() + ";";
        } catch (e) {
            processErrorCall("Method adCookie setUser. " + getErrorMsg(e));
        }
    },

    getUser: function() {

        var userName = "visitor_reg_userid";
        var results = document.cookie.match('(^|;) ?' + userName + '=([^;]*)(;|$)');
        if (results != null) {
            if (results[2] != null) {
                return (unescape(results[2]));
            }else{
                return "";  
            }
        }
        else{
            return "";
        }
        return null;
    }
}

var adStatistic = {
        
    getUserAgent: "",
    getLang: "",
    getPlatForm: "",
    
    Register: function(iCase, recID) {
        var sErrPos="";
        var msg ="";
        try{
            if(navigator.userAgent != undefined)
                this.getUserAgent=navigator.userAgent;
        } catch (e) {
            var msg =  "Register UserAgent. ";
            processErrorCall(msg + getErrorMsg(e));
        }
        
        try{
            if(navigator.browserLanguage != undefined)
                this.getLang=navigator.browserLanguage;
        } catch (e) {      
            msg = "Register BrowserLanguage. ";
            processErrorCall(msg + getErrorMsg(e));
        }
        
        try{
            if(navigator.platform != undefined)
                this.getPlatForm=navigator.platform;
        } catch (e) {
            msg = "Register Platform. ";
            processErrorCall(msg + getErrorMsg(e));
        }

        try{
           
            var sSceenSize = "";
            var sUserAgent = "";
            var visitorNo = "";
            var cookieExist = false;
            var cookieCreated = false;
            var ipAdr = document.getElementById("txtIP").value;
            var siteName = document.getElementById("txtSiteName").value;
            var siteAbsPath = document.getElementById("txtSiteAbsPath").value;
                     
            if (ipAdr == undefined){
                ipAdr = "";
            }
            
            sErrPos="Process Cookie";
            
            if (adCookie.getUser() != null) {
                if (adCookie.getUser() != "") {
                    cookieExist = true;
                }
            }

            if (cookieExist == false) {
                adCookie.setUser();
                if (adCookie.getUser() != null) {
                    if (adCookie.getUser() != "") {
                        cookieCreated = true;
                        cookieExist = true;
                    }
                }
            }

            if (cookieExist) {
                visitorNo = adCookie.getUser();
                if (visitorNo == null) {
                    visitorNo = "?";
                    if (ipAdr != ""){
                        visitorNo = "ip_" + ipAdr;
                    }
                            
                }

                if (iCase == 1) {
                    var elemVisitor = document.getElementById("txtVisitorNo");
                    if (elemVisitor != undefined) {
                        elemVisitor.value = visitorNo;
                    }
                }
            }
            
            sErrPos="Process Window Screen";
            if (window.screen != undefined) {
                sSceenSize = "WinSize:" + window.screen.width + "x" + window.screen.height;
            }
            
            sErrPos="Process UserAgent Lang";
            if (this.getLang != undefined) {
                if (this.getLang.length > 25){
                    this.getLang = this.getLang.substring(0, 24);
                }
            } else {
                this.getLang = "";
            }
            
            sErrPos="Process PlatForm";
            this.getPlatForm = "Undefined";
            if (this.getPlatForm != undefined) {
                this.getPlatForm = "OS:" + this.getPlatForm;
            }

            this.getUserAgent = sSceenSize + ";" + this.getPlatForm + ";" + this.getUserAgent;

            if (this.getUserAgent.length > 300){
                this.getUserAgent = this.getUserAgent.substring(0, 299);
            }
            
           
        } catch (e) {
            msg="Method adStatistic Register UA Values : " +  sErrPos + " " + getErrorMsg(e);         
            processErrorCall(msg);
        }
        
        //AutoView Register Visible Ads on page loaded
        if (iCase == 0) {
           sErrPos=WriteRec(1, recID, visitorNo, cookieCreated, this.getUserAgent, this.getLang, ipAdr, siteName, siteAbsPath);
           if(sErrPos!=""){
                msg="Method adStatistic Register. Case 0 View: " + sErrPos; 
                processErrorCall(msg);
           }
            
        } else if (iCase == 1) { //Register Ads when page loaded  
           sErrPos=WriteRec(1, recID, visitorNo, cookieCreated, this.getUserAgent, this.getLang, ipAdr, siteName, siteAbsPath);
           if(sErrPos!=""){
                msg="Method adStatistic Register. Case 1 View: " + sErrPos; 
                processErrorCall(msg);
           }  
           
           //Ajax WebService         
           //ServiceCall.RegViews(recID, visitorNo, cookieCreated, this.getUserAgent, this.getLang, ipAdr, siteName, siteAbsPath, this.OnComplete, this.OnTimeOut, this.OnError);
            
        }else if (iCase == 2) { //Clicks Click on Ads
           
            //XmlHttpReq
            //WriteRec(2, recID, visitorNo, cookieCreated, this.getUserAgent, this.getLang, ipAdr);
            //sTarget = document.getElementById("txtRedirect").value;
            //Ajax WebService
            //ServiceCall.RegClick(recID, visitorNo, cookieCreated, this.getUserAgent, this.getLang, ipAdr, siteName, siteAbsPath, this.OnComplete, this.OnTimeOut, this.OnError);
            //Callback Initialize values;

            try{
            
                var sPostBackValue = document.getElementById("txtRecID").value;
                var sPostBackRef = "RegisterClientClick";

                var sSiteName = "/";
                var sSiteAbsPath = "/";

                if (window.opener != null) {
                    sSiteName = window.opener.document.getElementById("txtSiteName").value;
                    sSiteAbsPath = window.opener.document.getElementById("txtSiteAbsPath").value;
                }

                document.getElementById("txtUserAgent").value = this.getUserAgent;
                document.getElementById("txtLang").value = this.getLang;
                document.getElementById("txtVisitorNo").value = visitorNo;
                document.getElementById("txtCookieCreated").value = cookieCreated;
                document.getElementById("txtSiteName").value = sSiteName;
                document.getElementById("txtSiteAbsPath").value = sSiteAbsPath;

                if (sPostBackValue != "") {
                    sPostBackValue = sSiteName + ";" + sSiteAbsPath;
                    __doPostBack(sPostBackRef, sPostBackValue);
                }
                
            } catch (e) {
                msg ="Method adStatistic Register. Click: "  + getErrorMsg(e); 
                processErrorCall(msg);
            }
        }else{
            processErrorCall("AdStatistic Register: Event id missing or is not available.");
        }
        
    }

    /* WebService  (AdRedirector.aspx) kan bytas till XmlHttpRequest */
    /*
    OnComplete: function(args, e) {
        document.frmAdRedirector.submit();
    },

    OnTimeOut: function(args, e) {
        if (!e) 
            var e = window.event;
        var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Method: Preview Service call.");
        msg="Web service call timed out : " + msg;
        processErrorCall(msg);
        document.frmAdRedirector.submit();
    },

    OnError: function(args, e) {
        if (!e) 
            var e = window.event;
        var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Method: Preview Service call.");
        msg="Error calling Web Service : " + msg;
        processErrorCall(msg);
        document.frmAdRedirector.submit();
    }
    */
}

function CreateXmlHttpReq() {
    var oRequest = null;
    
    try{
        if (typeof netscape != "undefined") {   
             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect UniversalBrowserRead");   
        }   
    }catch(e){
    }
    
    if (window.ActiveXObject) {
        var arrSignatures = ["Microsoft.XMLHTTP","MSXML2.XMLHTTP","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0"];
        for (var i=0; i < arrSignatures.length; i++) {
            try {
                oRequest = new ActiveXObject(arrSignatures[i]);
                return oRequest;
            } catch (oError) {
                //ignore
            }
        }
        //throw new Error("MSXML is not installed on your system.");
    }else{
    
        oRequest=false;
        if (!oRequest && typeof WinHttpRequest != 'undefined') {
            try {
                oRequest = new WinHttpRequest();
            } catch (e) {
                oRequest = false;
            }
        }
        if (!oRequest && typeof XMLHttpRequest != 'undefined') {
            try {
                oRequest = new XMLHttpRequest();
            } catch (e) {
                oRequest = false;
            }
        }
        if (!oRequest && typeof window.XMLHttpRequest != 'undefined') {
            try {
                oRequest = new window.XMLHttpRequest();
            } catch (e) {
                oRequest = false;
            }
        }
        if (!oRequest && window.createRequest) {
            try {
                oRequest = new window.createRequest();
            } catch (e) {
                oRequest = false;
            }
        }
        return oRequest;
    }
 }

var sParam=""
function WriteRec(sStatID,sRecID, sVisitorNo, bIsCreated, sUserAgent, sLang, sIPAdr,sSiteName,sSiteAbsPath) {

    sParam = "RecID=" + sRecID + "&VisitorNo=" + sVisitorNo + "&IsCreated=" + bIsCreated + "&siteName=" + sSiteName;
    sParam += "&UserAgent=" + sUserAgent + "&Lang=" + sLang + "&IPAdr=" + sIPAdr + "&StatID=" + sStatID + "&siteAbsPath=" + sSiteAbsPath; ;
    
    var strErrStatus="";

    //XmlHttpRequest handling
    try {
         if (window.XMLHttpRequest || window.ActiveXObject){ 
            // If IE7, Mozilla, Safari, etc: Use native object 
            var xmlHttpObject = new CreateXmlHttpReq(); // no var 
            processServerCall(sParam,xmlHttpObject);
            return strErrStatus;
        }
    } catch (e) {
        strErrStatus="Method XMLHttpRequest WriteRec : " + getErrorMsg(e); 
    }
    
    //Use iframe remote script for old browsers with no http Request support
    //otherwise XmlHttp request isstandard
    try {
        createIFrameRSI_SaveStat("iframeRemoteScript",sParam);
        if(strErrStatus!=""){
          var strMsg="Success! Record saved wíth iframe-remote-script! ";
          strErrStatus = strMsg + strErrStatus;  
        }
    } catch (e) {
        strErrStatus=strErrStatus + " IFrame Remote Script failed. " + getErrorMsg(e);
    }
   
    return strErrStatus;
}

// make asynchronous HTTP request using the xmlHttpRequest object

/*
try {
if (navigator.userAgent.toUpperCase().indexOf('MSIE') == -1)
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
processErrorCall("Permission UniversalBrowserRead denied.");
}
if (xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType('text/xml');
}
*/
//The callback function set in xmlHttp.onreadystatechange will be called when data is back from the server
//oRequest.onreadystatechange = function () {
   //if (oRequest.readyState == 4 || oRequest.readyState == 0) { 
        //if (oRequest.status == 200 || navigator.userAgent.toUpperCase().indexOf('MSIE') == -1 && oRequest.status == 0 || navigator.userAgent.toUpperCase().indexOf('MSIE') == -1 && oRequest.status == 304) {
            //oRequest.onreadystatechange = setTimeout(function(){ oRequest.abort();},100);
        //}
   //}
  //if (oRequest.readystate != 4) {
  //  return;
  //}
 //throw "Trying to save record with IframRemote. ";
//}
//oRequest.setRequestHeader('Content-Type','text/xml');
                             
function processServerCall(sParam,oRequest) {
   
        try{
           if(window.ActiveXObject){
               oRequest.open("POST", "SaveStatRec.aspx", false);
               oRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');     
               oRequest.send(sParam);  
               if (oRequest.readystate == 4 && oRequest.Status != 200) {
                   var strMsg="Warning ! processServerCall ActiveXObject XMLHttpRequest Status : " + oRequest.Status;
                   setTimeout(function(){processErrorCall(strMsg); }, 50);
               }else{
                   oRequest.abort();
               }
           } else if(window.XMLHttpRequest){

               oRequest.open("GET", "SaveStatRec.aspx?" + sParam, false);
               oRequest.setRequestHeader('Content-Type','text/xml');
               oRequest.send(null);
               if (oRequest.readystate == 4 && oRequest.Status != 200) {
                   var strMsg="Warning ! processServerCall XMLHttpRequest Status : " + oRequest.Status;
                   setTimeout(function(){processErrorCall(strMsg); }, 50);
               }else{
                   oRequest.abort();
               }
           }              

        }catch (e) {
            var msg="Error processServerCall (Save Statistic): " + getErrorMsg(e);  
            setTimeout(function(){processErrorCall(msg); }, 50);
            throw "Try to save record with IFrame Remote Script ? ";
        }
}

function processErrorCall(strMsg) {
    try{

        var ipAdr = document.getElementById("txtIP").value;
        var sUAgent=navigator.userAgent;
        
        strMsg = strMsg + " IP:" + ipAdr + " UA:" + sUAgent;
        strMsg= "Javascript client error; " + strMsg;
            
    } catch (e) {}
       
    try {
        createIFrameRSI_ErrLogger("iframeRemoteScript",strMsg);
    } catch (e) {}
}

//IFrame Remote
function createIFrameRSI_SaveStat(sElementID,sParam) {
    var iframe = document.getElementById(sElementID);
    if (iframe != null) {
        iframe.src="SaveStatRec.aspx?" + sParam;
    }
}

function createIFrameRSI_ErrLogger(sElementID,sParam) {
    var iframe = document.getElementById(sElementID);
    if (iframe != null) {
        iframe.src="ErrClient.aspx?" + sParam;
    }
}

function GetIFrameDocument(sID) {
    // if contentDocument exists, W3C compliant (Mozilla)
    var IFrameObj = document.getElementById(sID);
    var elem = null;

    if (IFrameObj.contentDocument) {
        // For NS6
        IFrameObj = IFrameObj.contentDocument;
    } else if (IFrameObj.contentWindow) {
        // For IE5.5 and IE6
        IFrameObj = IFrameObj.contentWindow.document;
    } else if (IFrameObj.document) {
        // For IE5
        IFrameObj = IFrameObj.document;
    }

    return IFrameObj;
}

function getErrorMsg(e){
    var exp = e;
    var sExpName = "";
    //Catch  new window handler
    if (!exp){ 
        exp= window.event;
    }
   // if(exception.name!=null){
   //     sExpName=exception.name;
   // }
    // GetMessage
    // Explorer
    if (exp.description != null){
       return exp.description;
    }
    else{ //Firefox etc.
        return exp.message;
    }          
}
if (typeof (Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

// ]]>

