
var NTPT_IMGSRC = '/core/common/scripts/pt.gif';

var NTPT_FLDS = new Object();
NTPT_FLDS.lc = true; // Document location
NTPT_FLDS.rf = true; // Document referrer
NTPT_FLDS.rs = true; // User's screen resolution
NTPT_FLDS.cd = true; // User's color depth
NTPT_FLDS.ln = true; // Browser language
NTPT_FLDS.tz = true; // User's timezone
NTPT_FLDS.jv = true; // Browser's Java support
NTPT_FLDS.pv = true; // Force tag to be counted as a page view

var NTPT_MAXTAGWAIT = 1.0; // Max delay (secs) on link-tags and submit-tags

// Optional variables:
var NTPT_HTTPSIMGSRC = '';
var NTPT_GLBLEXTRA   = '';
var NTPT_GLBLREFTOP  = false;

/*** END OF USER-CONFIGURABLE VARIABLES ***/

function FnCoalesce(vA1, vA2) {
    return(eval("typeof "+vA1+" != \"undefined\"") ? eval(vA1) : vA2);
}

function FnAddToQueryStr(strQuery, strQueryAdd) {
    return(strQuery + (((strQuery == '') || ((strQueryAdd == '') || (strQueryAdd.substring(0, 1) == "&"))) ? '' : "&") + strQueryAdd);
}

function FnMakeTimestamp() {
    var vTmpDate = new Date();
    return(vTmpDate.getTime() + "." + Math.floor(Math.random()*1000));
}

function FnAddPair(vKey, vValue) {
    aVars[vKey] = vValue.toString();
}

function FnDropPair(vKey) {
    aVars[vKey] = '';
}

function FnCreateQueryStr(strQueryMod) {
    var O0O0OO = '';
    var j;
    var O0O000;
    FnAddPairsFromQueryStr(FnCoalesce("NTPT_GLBLEXTRA", ''));
    if (!LnkLck) {
        FnAddPairsFromQueryStr(FnCoalesce("NTPT_PGEXTRA", ''));
    }
    FnAddPairsFromQueryStr(strQueryMod);
    for (j in aVars) {
        O0O000 = aVars[j];
        if (O0O000 && (O0O000 != '')) {
            O0O0OO = FnAddToQueryStr(O0O0OO,(j+"\x3d"+(self.encodeURIComponent?encodeURIComponent(O0O000):escape(O0O000))));
        }
    }
    return O0O0OO;
}

function FnMergeKeys() {
    var j;
    oTagger.aVars = new Array();
    for (j in aVars) {
        oTagger.aVars[j] = aVars[j];
    }
}

function FnCopyTaggerVars() {
    var j;
    aVars = new Array();
    for (j in oTagger.aVars) {
        aVars[j] = oTagger.aVars[j];
    }
}

function FnDelayTest(nImageIndex, strEvalCondition, nTimeoutSecs) {
    if (aImages[nImageIndex] != null) {
        var oDelayTestFunc = new Function(strEvalCondition);
        aImages[nImageIndex].onload  = oDelayTestFunc;
        aImages[nImageIndex].onerror = oDelayTestFunc;
        aImages[nImageIndex].onabort = oDelayTestFunc;
    }
    setTimeout(strEvalCondition, (nTimeoutSecs*1000));
}

function FnCreateImageStr(vImageName, strQuery) {
    if (vImageName == '') {
        return;
    }
    nImageCnt = ((nImageCnt + 1) % aImages.length);
    if (aImages[nImageCnt] == null) {
        aImages[nImageCnt] = new Image(1, 1);
    }
    aImages[nImageCnt].src = vImageName + "?" + strQuery;
}

function FnDoTag(strQueryMod) {
    var vImageName;
    var strStartingQuery;
    vImageName = ((srcImageSecure != '') && (document.location.protocol == "https:")) ? srcImageSecure : srcImage;
    strStartingQuery = FnCreateQueryStr(strQueryMod);
    FnCreateImageStr(vImageName, strStartingQuery);
    FnCopyTaggerVars();
}

function FnAddPairsFromQueryStr(strQuery) {
    var aPairs;
    var i;
    if (!strQuery) {
        return;
    }
    strQuery = strQuery.toString();
    if (strQuery == '') {
        return;
    }
    aPairs = strQuery.split("&");
    for (i = 0; i < aPairs.length; i++) {
        var aKeyVal = aPairs[i].split("=");
        if (aKeyVal.length == 2) {
            FnAddPair(aKeyVal[0],(self.decodeURIComponent?decodeURIComponent(aKeyVal[1]):unescape(aKeyVal[1])));
        }
    }
}

function FnEventTag(strQueryMod) {
    FnAddPair("pv", 1);
    FnAddPair("ets", FnMakeTimestamp());
    FnDoTag(strQueryMod);
    return true;
}

function FnLinkTag(oLink, strQueryMod, maxTagWait) {
    var nTimeOut;
    if (!oLink || !oLink.href) {
        return true;
    }
    if (LnkLck) {
        return false;
    }
    LnkLck = oLink;
    if (vSetup.lc) {
        FnAddPair("lc", oLink.href);
    }
    if (vSetup.rf) {
        if (!vUseFrameReferrer || !top || !top.document) {
            FnAddPair("rf", document.location);
        }
    }
    FnEventTag(strQueryMod);
    if (maxTagWait) {
        nTimeOut = maxTagWait;
    } else {
        nTimeOut = NTPT_MAXTAGWAIT;
    }
    if (nTimeOut > 0) {
        var vEvalCondition;
        if (oLink.click) {
            oLink.tmpclck = oLink.onclick;
            oLink.onclick = null;
            vEvalCondition = "\x69\x66\x20\x28\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x29\x20\x7b\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x63\x6c\x69\x63\x6b\x28\x29\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x6f\x6e\x63\x6c\x69\x63\x6b\x20\x3d\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x74\x6d\x70\x63\x6c\x63\x6b\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d";
        } else {
            vEvalCondition = "\x69\x66\x20\x28\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x29\x20\x7b\x20\x77\x69\x6e\x64\x6f\x77\x2e\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x68\x72\x65\x66\x20\x3d\x20\x22"+oLink.href+"\x22\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d";
        }
        FnDelayTest(nImageCnt, vEvalCondition, nTimeOut);
        return false;
    }
    LnkLck = null;
    return true;
}


function FnSubmitTag(oForm, strQueryMod, maxTagWait) {
    var nTimeOut;
    if (!oForm || !oForm.submit) {
        return true;
    }
    if (FrmLck) {
        return false;
    }
    FrmLck = oForm;
    FnEventTag(strQueryMod);
    if (maxTagWait) {
        nTimeOut = maxTagWait;
    } else {
        nTimeOut = NTPT_MAXTAGWAIT;
    }
    if (nTimeOut > 0) {
        oForm.tmpsbmt = oForm.onsubmit;
        oForm.onsubmit = null;
        FnDelayTest(nImageCnt, "\x69\x66\x20\x28\x20\x46\x72\x6d\x4c\x63\x6b\x20\x29\x20\x7b\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x73\x75\x62\x6d\x69\x74\x28\x29\x3b\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x6f\x6e\x73\x75\x62\x6d\x69\x74\x20\x3d\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x74\x6d\x70\x73\x62\x6d\x74\x3b\x20\x46\x72\x6d\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d", nTimeOut);
        return false;
    }
    FrmLck = null;
    return true;
}

var srcImage          = NTPT_IMGSRC;
var srcImageSecure    = FnCoalesce("NTPT_HTTPSIMGSRC", '');
var vSetup            = NTPT_FLDS;
var vUseFrameReferrer = FnCoalesce("NTPT_PGREFTOP", FnCoalesce("NTPT_GLBLREFTOP", false));
var vNoInitialTag     = FnCoalesce("NTPT_NOINITIALTAG", false);
var ntptAddPair       = FnAddPair;
var ntptDropPair      = FnDropPair;
var ntptEventTag      = FnEventTag;
var ntptLinkTag       = FnLinkTag;
var ntptSubmitTag     = FnSubmitTag;
var aVars             = new Array();
var oTagger           = new Object();
var aImages           = Array(10);
var nImageCnt;

var LnkLck = null;
var FrmLck = null;

for (nImageCnt = 0; nImageCnt < aImages.length; nImageCnt++) {
    aImages[nImageCnt] = null;
}
FnAddPair("js", "1");
FnAddPair("ts", FnMakeTimestamp());
if (vSetup.lc) {
    FnAddPair("lc", document.location);
}
if (vSetup.rf) {
    var vReferrer;
    if (vUseFrameReferrer && top && top.document) {
        vReferrer = top.document.referrer;
    } else {
        vReferrer = document.referrer;
        FnAddPair("rf", vReferrer);
    }
}
if (self.screen) {
    if (vSetup.rs) {
        FnAddPair("rs", self.screen.width + "x" + self.screen.height);
    }
    if (vSetup.cd) {
        FnAddPair("cd", self.screen.colorDepth);
    }
}
if (vSetup.ln) {
    var strLanguage;
    if (navigator.language) {
        strLanguage = navigator.language;
    } else if (navigator.userLanguage) {
        strLanguage = navigator.userLanguage;
    } else {
        strLanguage = '';
    }
    if (strLanguage.length > 2) {
        strLanguage = strLanguage.substring(0, 2);
    }
    strLanguage = strLanguage.toLowerCase();
    FnAddPair("ln", strLanguage);
}
if (vSetup.tz) {
    var vTimeZone;
    var vTmpDate = new Date();
    var vOffsetMinutes = vTmpDate.getTimezoneOffset();
    var vOffsetHours;
    vTimeZone = "GMT";
    if (vOffsetMinutes != 0) {
        vTimeZone += (vOffsetMinutes > 0) ? " -" : " +";
        vOffsetMinutes = Math.abs(vOffsetMinutes);
        vOffsetHours = Math.floor(vOffsetMinutes / 60);
        vOffsetMinutes -= vOffsetHours * 60;
        if (vOffsetHours < 10) {
            vTimeZone += "0";
        }
        vTimeZone += vOffsetHours + ":";
        if (vOffsetMinutes < 10) {
            vTimeZone += "0";
        }
        vTimeZone += vOffsetMinutes;
    }
    FnAddPair("tz", vTimeZone);
}
if (vSetup.jv) {
    var vJavaEnabled;
    vJavaEnabled = (navigator.javaEnabled()) ? 1 : 0;
    FnAddPair("jv", vJavaEnabled);
}
FnMergeKeys();
if (!vNoInitialTag) {
    FnDoTag('');
}
