﻿gVersion = "1.5";




var gImages = new Array;
var gIndex = 0;
var DCS = new Object();
var WT = new Object();
var DCSext = new Object();

var gDomain = "statse.webtrendslive.com";
var gDcsId = "dcskh2m1721e5h623dloxwlkl_1i6t";

function dcsVar() {
    var dCurrent = new Date();
    WT.tz = dCurrent.getTimezoneOffset() / 60 * -1;
    if (WT.tz == 0) {
        WT.tz = "0";
    }
    WT.bh = dCurrent.getHours();
    WT.ul = navigator.appName == "Netscape" ? navigator.language : navigator.userLanguage;
    if (typeof (screen) == "object") {
        WT.cd = screen.colorDepth;
        WT.sr = screen.width + "x" + screen.height;
    }
    if (typeof (navigator.javaEnabled()) == "boolean") {
        WT.jo = navigator.javaEnabled() ? "Yes" : "No";
    }
    if (document.title) {
        WT.ti = document.title;
    }
    WT.js = "Yes";
    if (typeof (gVersion) != "undefined") {
        WT.jv = gVersion;
    }
    WT.sp = "46520";
    DCS.dcsdat = dCurrent.getTime();
    DCS.dcssip = window.location.hostname;
    DCS.dcsuri = window.location.pathname;
    if (window.location.search) {
        DCS.dcsqry = window.location.search;
    }
    if ((window.document.referrer != "") && (window.document.referrer != "-")) {
        if (!(navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) < 4)) {
            DCS.dcsref = window.document.referrer;
        }
    }
}

function A(N, V) {
    return "&" + N + "=" + dcsEscape(V);
}

function dcsEscape(S) {
    if (typeof (RE) != "undefined") {
        var retStr = new String(S);
        for (R in RE) {
            retStr = retStr.replace(RE[R], R);
        }
        return retStr;
    }
    else {
        return escape(S);
    }
}

function dcsCreateImage(dcsSrc) {
    if (document.images) {
        gImages[gIndex] = new Image;
        gImages[gIndex].src = dcsSrc;
        gIndex++;
    }
    else {
        document.write('<IMG BORDER="0" NAME="DCSIMG" WIDTH="1" HEIGHT="1" SRC="' + dcsSrc + '">');
    }
}

function dcsMeta() {
    var myDocumentElements;
    if (document.all) {
        myDocumentElements = document.all.tags("meta");
    }
    else if (document.documentElement) {
        myDocumentElements = document.getElementsByTagName("meta");
    }
    if (typeof (myDocumentElements) != "undefined") {
        for (var i = 1; i <= myDocumentElements.length; i++) {
            myMeta = myDocumentElements.item(i - 1);
            if (myMeta.name) {
                if (myMeta.name.indexOf('WT.') == 0) {
                    WT[myMeta.name.substring(3)] = myMeta.content;
                }
                else if (myMeta.name.indexOf('DCSext.') == 0) {
                    DCSext[myMeta.name.substring(7)] = myMeta.content;
                }
                else if (myMeta.name.indexOf('DCS.') == 0) {
                    DCS[myMeta.name.substring(4)] = myMeta.content;
                }
            }
        }
    }
}

function dcsTag() {
    var P = "http" + (window.location.protocol.indexOf('https:') == 0 ? 's' : '') + "://" + gDomain + (gDcsId == "" ? '' : '/' + gDcsId) + "/dcs.gif?";
    for (N in DCS) {
        if (DCS[N]) {
            P += A(N, DCS[N]);
        }
    }
    for (N in WT) {
        if (WT[N]) {
            P += A("WT." + N, WT[N]);
        }
    }
    for (N in DCSext) {
        if (DCSext[N]) {
            P += A(N, DCSext[N]);
        }
    }
    if (P.length > 2048 && navigator.userAgent.indexOf('MSIE') >= 0) {
        P = P.substring(0, 2040) + "&WT.tu=1";
    }
    dcsCreateImage(P);
}

dcsVar();
dcsMeta();
dcsTag();


/* ------------------------------------------------ */

function validEmailAddress(emailStr) {
    /* Version 1.1:  Sandeep V. Tamhankar (stamhankar@hotmail.com) */
    /* This script and many more are available free online at */
    /* The JavaScript Source!! http://javascript.internet.com */
    /* http://javascript.internet.com/forms/check-email.html */

    /* The following pattern is used to check if the entered e-mail address
    fits the user@domain format.  It also is used to separate the username
    from the domain. */
    var emailPat = /^(.+)@(.+)$/
    /* The following string represents the pattern for matching all special
    characters.  We don't want to allow special characters in the address.
    These characters include ( ) < > @ , ; : ' \ " . [ ]    */
    var specialChars = "\\(\\)<>@,;:'\\\\\\\"\\.\\[\\]"
    /* The following string represents the range of characters allowed in a
    username or domainname.  It really states which chars aren't allowed. */
    var validChars = "\[^\\s" + specialChars + "\]"
    /* The following pattern represents the range of characters allowed as
    the first character in a valid username or domain.  I just made it
    the same as above, but if you want to add a different constraint,
    you would change it here. */
    var firstChars = validChars
    /* The following pattern applies if the "user" is a quoted string (in
    which case, there are no rules about which characters are allowed
    and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
    is a legal e-mail address. */
    var quotedUser = "(\"[^\"]*\")"
    /* The following pattern applies for domains that are IP addresses,
    rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
    e-mail address. NOTE: The square brackets are required. */
    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    /* The following string represents at atom (basically a series of
    non-special characters.) */
    var atom = "(" + firstChars + validChars + "*" + ")"
    /* The following string represents one word in the typical username.
    For example, in john.doe@somewhere.com, john and doe are words.
    Basically, a word is either an atom or quoted string. */
    var word = "(" + atom + "|" + quotedUser + ")"
    // The following pattern describes the structure of the user
    var userPat = new RegExp("^" + word + "(\\." + word + ")*$")
    /* The following pattern describes the structure of a normal symbolic
    domain, as opposed to ipDomainPat, shown above. */
    var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$")


    /* Finally, let's start trying to figure out if the supplied address is
    valid. */

    /* Begin with the course pattern to simply break up user@domain into
    different pieces that are easy to analyze. */
    var matchArray = emailStr.match(emailPat)
    if (matchArray == null) {
        /* Too many/few @'s or something; basically, this address doesn't
        even fit the general mould of a valid e-mail address. */
        return "check @ and .'s"
        //return false
    }
    var user = matchArray[1]
    var domain = matchArray[2]

    // See if "user" is valid
    if (user.match(userPat) == null) {
        // user is not valid
        return "The username doesn't seem to be valid."
        //return false
    }
    /* if the e-mail address is at an IP address (as opposed to a symbolic
    host name) make sure the IP address is valid. */
    var IPArray = domain.match(ipDomainPat)
    if (IPArray != null) {
        // this is an IP address
        for (var i = 1; i <= 4; i++) {
            if (IPArray[i] > 255) {
                return "Destination IP address is invalid!"
                //return false
            }
        }
        return "true"
    }
    // Domain is symbolic name
    var domainArray = domain.match(domainPat)
    if (domainArray == null) {
        return "The domain name doesn't seem to be valid."
        //return false
    }
    /* domain name seems valid, but now make sure that it ends in a
    three-letter word (like com, edu, gov) or a two-letter word,
    representing country (uk, nl).
    If there's a country code at the end of the address, the full domain
    must include a hostname and category (e.g. host.co.uk or host.pub.nl).
    If it ends in a .com or something, make sure there's a hostname.*/

    /* Now we need to break up the domain to get a count of how many atoms
    it consists of. */
    var atomPat = new RegExp(atom, "g")
    var domArr = domain.match(atomPat)
    var len = domArr.length
    if (domArr[domArr.length - 1].length < 2 ||
    domArr[domArr.length - 1].length > 3) {
        // the address must end in a two letter or three letter word.
        return "The address must end in a three-letter domain, or two letter country."
        //return false
    }

    /* If it just ends in .com, .gov, etc., make sure there's a host name.
    This case can never actually happen because earlier checks take
    care of this implicitly, but we'll do it anyway. */
    if (domArr[domArr.length - 1].length == 3 && len < 2) {
        return "This address is missing a hostname!"
        //return false
    }
    // If we've gotten this far, everything's valid!
    return "true";
}


function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (!isDigit(c))
            return false;
    }
    return true;
}


function isDigit(c) {
    return ((c >= "0") && (c <= "9"))
}


/* ------------------------------------------------ */


function ValidateForm(form) {
    var bOK;
    bOK = true;
    var sError = ''
    var sFocus = ''

    //username or password are blank
    if (form.Username.value == '' || form.Password.value == '') {
        bOK = false;
        sError = sError + ' - Please enter your username and password before continuing.'
        if (form.Username.value == '') {
            if (sFocus.length == 0) { sFocus = 'Username' }
        } else {
            if (sFocus.length == 0) { sFocus = 'Password' }
        }
    }

    //if an error has occurred, display the error messages
    if (!bOK) {
        alert('Please correct the following errors:\n\n' + sError);
        eval('form.' + sFocus + '.focus();');
    }

    return bOK;
}


/* ------------------------------------------------ */


function MM_swapImgRestore() { //v3.0
    var i, x, a = document.MM_sr; for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++) x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
    var d = document; if (d.images) {
        if (!d.MM_p) d.MM_p = new Array();
        var i, j = d.MM_p.length, a = MM_preloadImages.arguments; for (i = 0; i < a.length; i++)
            if (a[i].indexOf("#") != 0) { d.MM_p[j] = new Image; d.MM_p[j++].src = a[i]; } 
    }
}

function MM_findObj(n, d) { //v4.01
    var p, i, x; if (!d) d = document; if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
        d = parent.frames[n.substring(p + 1)].document; n = n.substring(0, p);
    }
    if (!(x = d[n]) && d.all) x = d.all[n]; for (i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
    for (i = 0; !x && d.layers && i < d.layers.length; i++) x = MM_findObj(n, d.layers[i].document);
    if (!x && d.getElementById) x = d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
    var i, j = 0, x, a = MM_swapImage.arguments; document.MM_sr = new Array; for (i = 0; i < (a.length - 2); i += 3)
        if ((x = MM_findObj(a[i])) != null) { document.MM_sr[j++] = x; if (!x.oSrc) x.oSrc = x.src; x.src = a[i + 2]; }
}
