﻿//<script language="javascript">

function isArray(oRef) {
    var sType = "";
    if (oRef == null) { return false; }
    var uBound = new Number(oRef.length);
    if (isNaN(uBound)) {
        return false;
    }
    else {
        //try one more time( some controls have a length property)
        sType = oRef.tagName;
        if (sType != null && sType.toUpperCase() == "SELECT") {
            return (oRef.options == null ? true : false);
        }
        else {
            //return (oRef[0]==null?false:true);			//first element should always be non-null
            return true;
        }
    }

}

function findOptionByVal(oRef, sVal) {
    var colOptions = oRef.options;
    for (var i = 0; i < colOptions.length; i++) {
        if (colOptions[i].value == sVal) {
            return i;
        }
    }
    return -1;
}
function findOptionByText(oRef, sText) {
    var colOptions = oRef.options;
    for (var i = 0; i < colOptions.length; i++) {
        if (colOptions[i].text == sText) {
            return i;
        }
    }
    return -1;
}
function searchArray(aRef, sLookFor) {
    for (var i = 0; i < aRef.length; i++) {
        if (aRef[i] == sLookFor) {
            return i;
        }
    }
    return -1;
}

function ValidateDataType(sVal, nDataType) {
    var lNumber;
    var dDate;

    switch (nDataType) {
        case '1': //String
            return true;
            break;
        case '2': //Number
            lNumber = new Number(sVal);
            if (isNaN(lNumber) != true) { return true; }
            break;
        case '3': //Date
            //dDate=new Date(sVal);
            //if (isNaN(dDate)!=true){return true;}
            return isDate(sVal);
        default: return true;

    }
    return false;
}
function isNameValid(sVal) {
    if (sVal.length == 0) { return false; }
    if (sVal.indexOf("'") >= 0) { return false; }
    if (sVal.indexOf('"') >= 0) { return false; }
    if (sVal.indexOf("<") >= 0) { return false; }
    if (sVal.indexOf(">") >= 0) { return false; }
    if (sVal.indexOf("?") >= 0) { return false; }
    if (sVal.indexOf("/") >= 0) { return false; }
    if (sVal.indexOf(".") >= 0) { return false; }
    if (sVal.indexOf(",") >= 0) { return false; }
    if (sVal.indexOf(";") >= 0) { return false; }
    if (sVal.indexOf(":") >= 0) { return false; }
    if (sVal.indexOf(" ") >= 0) { return false; }
    if (sVal.indexOf("~") >= 0) { return false; }
    if (sVal.indexOf("`") >= 0) { return false; }
    if (sVal.indexOf("!") >= 0) { return false; }
    if (sVal.indexOf("@") >= 0) { return false; }
    if (sVal.indexOf("#") >= 0) { return false; }
    if (sVal.indexOf("$") >= 0) { return false; }
    if (sVal.indexOf("%") >= 0) { return false; }
    if (sVal.indexOf("^") >= 0) { return false; }
    if (sVal.indexOf("&") >= 0) { return false; }
    if (sVal.indexOf("*") >= 0) { return false; }
    if (sVal.indexOf("(") >= 0) { return false; }
    if (sVal.indexOf(")") >= 0) { return false; }
    if (sVal.indexOf("-") >= 0) { return false; }
    if (sVal.indexOf("+") >= 0) { return false; }
    if (sVal.indexOf("=") >= 0) { return false; }
    if (sVal.indexOf("\\") >= 0) { return false; }
    if (sVal.indexOf("}") >= 0) { return false; }
    if (sVal.indexOf("{") >= 0) { return false; }
    if (sVal.indexOf("[") >= 0) { return false; }
    if (sVal.indexOf("]") >= 0) { return false; }
    if (sVal.indexOf("|") >= 0) { return false; }
    var v = new Number(sVal.charAt(0));
    if (!isNaN(v)) { return false; }
    return true;
}
function getElement(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return eval("document.all." + elementId);
    }

}
//this function is not yet finished and should be implemented at a later time
function getAttributeFromString(value, attributeName) {
    //search for attibute in the first 500 characters of a string
    var buffer = "";
    var attribBoundary = "";
    value = value.toLowerCase();
    attributeName = attributeName.toLowerCase();
    var start = value.indexOf(attributeName);
    if (start >= 0) {
        start = value.indexOf("=", start);
        for (var x = start + 1; x < value.length; x++) {
            if (attribBoundary == "" && value.charAt(x) != " ") {
                switch (value.charAt(x)) {
                    case "\"":
                        attribBoundary = "\"";
                        break;
                    case "'":
                        attribBoundary = "'";
                        break;
                    default:
                        attribBoundary = " ";
                        break;
                }
                if (attribBoundary.length > 0) {
                    var end = value.indexOf(attribBoundary, x + 1);
                    if (end > 0) {
                        buffer = value.substring(x + 1, end);
                        break;
                    }
                }
            }
        }
    }
    return buffer;
}
function dhtmlLoadScript(url) {
    var scriptExists = false;
    if (document.scripts != null) {
        url = url.toLowerCase();
        for (var x = 0; x < document.scripts.length; x++) {
            if (document.scripts[x].scr == url) {
                scriptExists = true;
                break;
            }
        }
    }
    if (!scriptExists) {
        var e = document.createElement("script");
        e.src = url;
        e.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(e);
    }
}

function dhtmlLoadStylesheet(url) {
    var e = document.createElement("link");
    e.setAttribute("rel", "stylesheet")
    e.setAttribute("type", "text/css")
    e.setAttribute("href", url)
    document.getElementsByTagName("head")[0].appendChild(e);
}

function setFocus(oRef) {
    if (oRef == null) { return; }
    if (oRef.disabled == true) {
        return;
    }
    else {
        oRef.focus();
        if (oRef.tagName.toUpperCase() == "INPUT") { oRef.select(); }
    }
}
function formatFormula(sFormula) {
    var s = Replace(sFormula, "or", " || ");
    s = Replace(s, "and", " && ");
    s = Replace(s, "NOT", " ! ");
    s = Replace(s, ">=", "___goe___");
    s = Replace(s, "<=", "___loe___");
    s = Replace(s, "=", " == ");
    s = Replace(s, "<>", " != ");
    s = Replace(s, "___goe___", ">=");
    s = Replace(s, "___loe___", "<=");
    //alert(s);
    return s;

}
function Replace(sString, sFind, sReplace) {
    var sRet = eval("sString.replace(/" + sFind + "/g,sReplace)");
    return sRet;
}

var dChr = "/";
var minYear = 1900;
var maxYear = 2100;

function isInteger(s) {
    var i;
    for (i = 0; i < s.length; i++) {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;

}

function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary(year) {
    // February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}
function DaysArray(n) {
    var ret = new Array();
    for (var i = 1; i <= n; i++) {
        ret[i] = 31
        if (i == 4 || i == 6 || i == 9 || i == 11) { ret[i] = 30 }
        if (i == 2) { ret[i] = 29 }
    }
    return ret;
}

function isDate(dtStr) {
    var daysInMonth = DaysArray(12)
    var pos1 = dtStr.indexOf(dChr)
    var pos2 = dtStr.indexOf(dChr, pos1 + 1)
    var strMonth = dtStr.substring(0, pos1)
    var strDay = dtStr.substring(pos1 + 1, pos2)
    var strYear = dtStr.substring(pos2 + 1)
    strYr = strYear
    if (strDay.charAt(0) == "0" && strDay.length > 1) strDay = strDay.substring(1)
    if (strMonth.charAt(0) == "0" && strMonth.length > 1) strMonth = strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0) == "0" && strYr.length > 1) strYr = strYr.substring(1)
    }
    month = parseInt(strMonth)
    day = parseInt(strDay)
    year = parseInt(strYr)
    if (pos1 == -1 || pos2 == -1) {
        return false;
    }
    if (strMonth.length < 1 || month < 1 || month > 12) {
        return false
    }
    if (strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]) {
        return false;
    }
    if (strYear.length != 4 || year == 0 || year < minYear || year > maxYear) {
        return false;
    }
    if (dtStr.indexOf(dChr, pos2 + 1) != -1 || isInteger(stripCharsInBag(dtStr, dChr)) == false) {
        return false
    }
    return true;
}
function include(script_filename) {
    document.write('<' + 'script');
    document.write(' language="javascript"');
    document.write(' type="text/javascript"');
    document.write(' src="' + script_filename + '">');
    document.write('</' + 'script' + '>');
}
function reloadPage() {
    var url = document.location.href;
    window.navigate(url);
}
function round(num, numDigitsAfterDecimal) {
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num)) {
        num = "0";
    }
    var sign = (num == (num = Math.abs(num)));
    var d = Math.pow(10, numDigitsAfterDecimal);
    num = Math.floor(num * d + 0.50000000001);
    var cents = num % d;
    num = Math.floor(num / d); //.toString();
    if (numDigitsAfterDecimal > 0) {
        while (cents.toString().length < numDigitsAfterDecimal) {
            cents = "0" + cents;
        }
    }
    if (numDigitsAfterDecimal > 0) {
        return (((sign) ? '' : '-') + num + '.' + cents);
    }
    else {
        return (((sign) ? '' : '-') + num);
    }

}
function toggleBlur() {
    var blur = GetObjRef('blur');
    if (blur != null) {
        if (blur.style.display == "none") {
            var yOffest = 0;
            var height = document.body.scrollHeight;
            if (!isNaN(window.outerHeight) && window.outerHeight>height) {
                height = window.outerHeight;
            }
            else {
                if (!isNaN(window.pageYOffset)) {
                    yOffest = window.pageYOffset;
                }
            }
            //dlgContainer.className = "";
            blur.style.display = "";
            blur.style.width = document.body.clientWidth;
            blur.style.height = new String(height + yOffest) + "px";
        }
        else {
            //dlgContainer.className = "hidden";
            blur.style.display = "none";
        }
    }
}


function GetObjRef(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return eval("document.all." + elementId);
    }
}

function Is() {

    agent = navigator.userAgent.toLowerCase();

    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);
    //alert(this);
    this.ns = ((agent.indexOf('firefox') == -1) &&
	                 (agent.indexOf('mozilla') != -1) &&
	                 ((agent.indexOf('spoofer') == -1) &&
	                 (agent.indexOf('compatible') == -1)));
    this.ns2 = (this.ns && (this.major == 3));
    this.ns3 = (this.ns && (this.major == 3));
    this.ns4b = (this.ns && (this.major == 4) &&
	                 (this.minor <= 4.03));
    this.ns4 = (this.ns && (this.major >= 4));
    this.ns6 = (this.ns && (this.major >= 5));
    this.ns7 = (this.ns && (this.major >= 6));
    this.ie = (agent.indexOf("msie") != -1);
    this.ie3 = (this.ie && (this.major < 4));
    this.ie4 = (this.ie && (this.major == 4) &&
	                 (agent.indexOf("msie 5.0") == -1));
    this.ie5 = (this.ie && (this.major == 4) &&
	                 (agent.indexOf("msie 5.0") != -1));
    this.ie55 = (this.ie && (this.major == 4) &&
	                 (agent.indexOf("msie 5.5") != -1));
    this.ie6 = (this.ie && (this.major == 4) &&
	                 (agent.indexOf("msie 6.0") != -1));
    this.ff = (agent.indexOf("firefox") != -1);
    this.ff4 = (this.ff && (this.major == 4));
}

var is = new Is();

function toggleDlg(dialogId) {
    var dlg = GetObjRef(dialogId);
    var lHeight = 0;
    var lWidth = 0;
    var lOffSet = 0;
    var aList = null;
    var sDisp = '';
    if (dlg != null) {
        if (findRegisteredDialog(dialogId) == null) {
            if (typeof (aDialogList) != 'undefined') {
                aDialogList[aDialogList.length] = dlg;
            }
        }
        if (document.all != null && document.all.tags != null) {
            aList = document.all.tags("select");
        }
        if (dlg.className == "") {
            sDisp = "''";
            dlg.className = "hidden";
        }
        else {
            if (dlg.bLoaded == null || dlg.bLoaded == false) {
                dlg.bLoaded = true;
                bLoaded = true;
            }
            sDisp = "'hidden'";
            //SetObjAttrib(dlg,"visibility",1,"'visible'");
            dlg.className = "";
            lHeight = dlg.clientHeight;
            lWidth = dlg.clientWidth;
            SetObjAttrib(dlg, "top", 1, (document.body.clientHeight - lHeight) / 2);
            SetObjAttrib(dlg, "left", 1, (document.body.clientWidth - lWidth) / 2);
        }
        if (aList != null) {
            if (aList.length == null) {
                SetObjAttrib(aList, "visibility", 1, sDisp);
            }
            else {
                for (var i = 0; i < aList.length; i++) {
                    SetObjAttrib(aList[i], "visibility", 1, sDisp);
                }
            }
        }
    }
}
function findRegisteredDialog(dialogId) {
    if (typeof (aDialogList) != 'undefined') {
        for (var x = 0; x < aDialogList.length; x++) {
            if (aDialogList[x] != null && aDialogList[x].id == dialogId) {
                return aDialogList[x];
            }
        }
    }
    return null;
}
function hideAllRegisteredDialogs() {
    var oDlg = null;
    var aList = null;
    for (var i = 0; i < aDialogList.length; i++) {
        oDlg = aDialogList[i];
        if (oDlg != null && !oDlg.isModal) {
            if (oDlg.hide != null) {
                oDlg.hide();
            }
            else {
                oDlg.className = "hidden";
            }
        }
    }
    if (document.all != null && document.all.tags != null) {
        aList = document.all.tags("select");
    }
    sDisp = "''";
    if (aList != null) {
        if (aList.length == null) {
            SetObjAttrib(aList, "visibility", 1, sDisp);
        }
        else {
            for (var i = 0; i < aList.length; i++) {
                SetObjAttrib(aList[i], "visibility", 1, sDisp);
            }
        }
    }
}
function SetObjAttrib(ObjRef, AttribName, AttribType, Value) {
    //If AttribType=0 then this is a simple attribute
    //If AttribType=1 then this is a style attribute

    if (ObjRef != null && AttribName != null && AttribName != "") {
        if (AttribType == 0) {
            //alert(eval("ObjRef" + "." + AttribName));
            eval("ObjRef" + "." + AttribName + "=" + Value);

        }
        else if (AttribType == 1) {
            if (is.ns4) {
                //doc = "document";
                //sty = "";
                //htm = ".document";
                //alert(eval("ObjRef" + "." + AttribName))
                eval("ObjRef" + "." + AttribName + "=" + Value);
            }
            else if (is.ie4 || is.ie5 || is.ie55) {
                //doc = "document.all";
                //sty = ".style";
                //htm = "";
                eval("ObjRef" + ".style." + AttribName + "=" + Value);
            }
        }
    }

    return 0;
}
function attachLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function validateFileExtension(fileName, extension) {
    var matchCount = 0;
    var extArr = extension.toString().split(',');
    for (var x = 0; x < extArr.length; x++) {
        var idx = fileName.indexOf('.' + extArr[x]);
        if (idx > 0) {
            matchCount++;
        }
    }
    return matchCount>0;
}
function validatePostalCode(zip, countryCode) {
    if (countryCode == null || countryCode.length == 0) {
        countryCode = "us";
    }
    else {
        countryCode = countryCode.toLowerCase();
    }
    if (zip.match(/^[0-9]{5}$/) && countryCode=="us") {
        return true;
    }
    zip = zip.toUpperCase();
    if (zip.match(/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/) && countryCode == "ca") {
        return true;
    }
    if (zip.match(/^[A-Z][0-9][A-Z].[0-9][A-Z][0-9]$/) && countryCode == "ca") {
        return true;
    }
    if (zip.match(/^[A-Z][0-9][A-Z]$/) && countryCode == "ca") {
        return true;
    }
    return false;
} 



/* Client-side access to querystring name=value pairs
Version 1.3
28 May 2008
	
Li
cense (Simplified BSD):
http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    if (qs == null) qs = location.search.substring(1, location.search.length);
    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i = 0; i < args.length; i++) {
        var pair = args[i].split('=');
        var name = decodeURIComponent(pair[0]);

        var value = (pair.length == 2)
			? decodeURIComponent(pair[1])
			: name;

        this.params[name] = value;
    }
}

Querystring.prototype.get = function(key, default_) {
    var value = this.params[key];
    return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
    var value = this.params[key];
    return (value != null);
}
function getScrollTop(child){
    var ret = child.scrollTop;
    if(child.parentElement!=null){
        ret+=getScrollTop(child.parentElement);
    }
    return ret;
}
//</script>