﻿/*product ToolTip Code 'Start'*/
// JScript File

/***********************************************
* Cool DHTML tooltip script II- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

var offsetfromcursorX = 12 //Customize x offset of tooltip
var offsetfromcursorY = 10 //Customize y offset of tooltip

var offsetdivfrompointerX = 10 //Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerY = 14 //Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).

document.write('<div id="productdhtmltooltip"></div>') //write out tooltip DIV
document.write('<img id="productdhtmlpointer" src="images/arrow3.gif">') //write out pointer image

var ie = document.all
var ns6 = document.getElementById && !document.all
var enabletip = false
if (ie || ns6)
    var tipobj = document.all ? document.all["productdhtmltooltip"] : document.getElementById ? document.getElementById("productdhtmltooltip") : ""

var pointerobj = document.all ? document.all["productdhtmlpointer"] : document.getElementById ? document.getElementById("productdhtmlpointer") : ""

function ietruebody() {
    return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body
}

function ddrivetip(thetext, thewidth, thecolor) {
    if (ns6 || ie) {
        if (typeof thewidth != "undefined") tipobj.style.width = thewidth + "px"
        if (typeof thecolor != "undefined" && thecolor != "") tipobj.style.backgroundColor = thecolor
        tipobj.innerHTML = thetext
        enabletip = true
        return false
    }
}

function positiontip(e) {
    if (enabletip) {
        var nondefaultpos = false
        var curX = (ns6) ? e.pageX : event.clientX + ietruebody().scrollLeft;
        var curY = (ns6) ? e.pageY : event.clientY + ietruebody().scrollTop;
        //Find out how close the mouse is to the corner of the window
        var winwidth = ie && !window.opera ? ietruebody().clientWidth : window.innerWidth - 20
        var winheight = ie && !window.opera ? ietruebody().clientHeight : window.innerHeight - 20

        var rightedge = ie && !window.opera ? winwidth - event.clientX - offsetfromcursorX : winwidth - e.clientX - offsetfromcursorX
        var bottomedge = ie && !window.opera ? winheight - event.clientY - offsetfromcursorY : winheight - e.clientY - offsetfromcursorY

        var leftedge = (offsetfromcursorX < 0) ? offsetfromcursorX * (-1) : -1000

        //if the horizontal distance isn't enough to accomodate the width of the context menu
        if (rightedge < tipobj.offsetWidth) {
            //move the horizontal position of the menu to the left by it's width
            tipobj.style.left = curX - tipobj.offsetWidth + "px"
            nondefaultpos = true
        }
        else if (curX < leftedge)
            tipobj.style.left = "5px"
        else {
            //position the horizontal position of the menu where the mouse is positioned
            tipobj.style.left = curX + offsetfromcursorX - offsetdivfrompointerX + "px"
            pointerobj.style.left = curX + offsetfromcursorX + "px"
        }

        //same concept with the vertical position
        if (bottomedge < tipobj.offsetHeight) {
            tipobj.style.top = curY - tipobj.offsetHeight - offsetfromcursorY + "px"
            nondefaultpos = true
        }
        else {
            tipobj.style.top = curY + offsetfromcursorY + offsetdivfrompointerY + "px"
            pointerobj.style.top = curY + offsetfromcursorY + "px"
        }
        tipobj.style.visibility = "visible"
        if (!nondefaultpos)
            pointerobj.style.visibility = "visible"
        else
            pointerobj.style.visibility = "hidden"
    }
}

function hideddrivetip() {
    if (ns6 || ie) {
        enabletip = false
        tipobj.style.visibility = "hidden"
        pointerobj.style.visibility = "hidden"
        tipobj.style.left = "-1000px"
        tipobj.style.backgroundColor = ''
        tipobj.style.width = ''
    }
}

document.onmousemove = positiontip
/*product ToolTip Code 'End'*/
/*quick Menu Code 'Start'*/
//Core QuickMenu Code
var qm_si, qm_lo, qm_tt, qm_ts, qm_la, qm_ic, qm_ff, qm_sks; var qm_li = new Object(); var qm_ib = ''; var qp = "parentNode"; var qc = "className"; var qm_t = navigator.userAgent; var qm_o = qm_t.indexOf("Opera") + 1; var qm_s = qm_t.indexOf("afari") + 1; var qm_s2 = qm_s && qm_t.indexOf("ersion/2") + 1; var qm_s3 = qm_s && qm_t.indexOf("ersion/3") + 1; var qm_n = qm_t.indexOf("Netscape") + 1; var qm_v = parseFloat(navigator.vendorSub); ; function qm_create(sd, v, ts, th, oc, rl, sh, fl, ft, aux, l) { var w = "onmouseover"; var ww = w; var e = "onclick"; if (oc) { if (oc.indexOf("all") + 1 || (oc == "lev2" && l >= 2)) { w = e; ts = 0; } if (oc.indexOf("all") + 1 || oc == "main") { ww = e; th = 0; } } if (!l) { l = 1; sd = document.getElementById("qm" + sd); if (window.qm_pure) sd = qm_pure(sd); sd[w] = function(e) { try { qm_kille(e) } catch (e) { } }; if (oc != "all-always-open") document[ww] = qm_bo; if (oc == "main") { qm_ib += sd.id; sd[e] = function(event) { qm_ic = true; qm_oo(new Object(), qm_la, 1); qm_kille(event) }; } sd.style.zoom = 1; if (sh) x2("qmsh", sd, 1); if (!v) sd.ch = 1; } else if (sh) sd.ch = 1; if (oc) sd.oc = oc; if (sh) sd.sh = 1; if (fl) sd.fl = 1; if (ft) sd.ft = 1; if (rl) sd.rl = 1; sd.th = th; sd.style.zIndex = l + "" + 1; var lsp; var sp = sd.childNodes; for (var i = 0; i < sp.length; i++) { var b = sp[i]; if (b.tagName == "A") { lsp = b; b[w] = qm_oo; if (w == e) b.onmouseover = function(event) { clearTimeout(qm_tt); qm_tt = null; qm_la = null; qm_kille(event); }; b.qmts = ts; if (l == 1 && v) { b.style.styleFloat = "none"; b.style.cssFloat = "none"; } } else if (b.tagName == "DIV") { if (window.showHelp && !window.XMLHttpRequest) sp[i].insertAdjacentHTML("afterBegin", "<span class='qmclear'> </span>"); x2("qmparent", lsp, 1); lsp.cdiv = b; b.idiv = lsp; if (qm_n && qm_v < 8 && !b.style.width) b.style.width = b.offsetWidth + "px"; new qm_create(b, null, ts, th, oc, rl, sh, fl, ft, aux, l + 1); } } if (l == 1 && window.qmad && qmad.binit) eval(qmad.binit); }; function qm_bo(e) { e = e || event; if (e.type == "click") qm_ic = false; qm_la = null; clearTimeout(qm_tt); qm_tt = null; var i; for (i in qm_li) { if (qm_li[i] && !((qm_ib.indexOf(i) + 1) && e.type == "mouseover")) qm_tt = setTimeout("x0('" + i + "')", qm_li[i].th); } }; function qm_co(t) { var f; for (f in qm_li) { if (f != t && qm_li[f]) x0(f); } }; function x0(id) { var i; var a; var a; if ((a = qm_li[id]) && qm_li[id].oc != "all-always-open") { do { qm_uo(a); } while ((a = a[qp]) && !qm_a(a)); qm_li[id] = null; } }; function qm_a(a) { if (a[qc].indexOf("qmmc") + 1) return 1; }; function qm_uo(a, go) { if (!go && a.qmtree) return; if (window.qmad && qmad.bhide) eval(qmad.bhide); a.style.visibility = ""; x2("qmactive", a.idiv); }; function qm_oo(e, o, nt) { try { if (!o) o = this; if (qm_la == o && !nt) return; if (window.qmv_a && !nt) qmv_a(o); if (window.qmwait) { qm_kille(e); return; } clearTimeout(qm_tt); qm_tt = null; qm_la = o; if (!nt && o.qmts) { qm_si = o; qm_tt = setTimeout("qm_oo(new Object(),qm_si,1)", o.qmts); return; } var a = o; if (a[qp].isrun) { qm_kille(e); return; } while ((a = a[qp]) && !qm_a(a)) { } var d = a.id; a = o; qm_co(d); if (qm_ib.indexOf(d) + 1 && !qm_ic) return; var go = true; while ((a = a[qp]) && !qm_a(a)) { if (a == qm_li[d]) go = false; } if (qm_li[d] && go) { a = o; if ((!a.cdiv) || (a.cdiv && a.cdiv != qm_li[d])) qm_uo(qm_li[d]); a = qm_li[d]; while ((a = a[qp]) && !qm_a(a)) { if (a != o[qp] && a != o.cdiv) qm_uo(a); else break; } } var b = o; var c = o.cdiv; if (b.cdiv) { var aw = b.offsetWidth; var ah = b.offsetHeight; var ax = b.offsetLeft; var ay = b.offsetTop; if (c[qp].ch) { aw = 0; if (c.fl) ax = 0; } else { if (c.ft) ay = 0; if (c.rl) { ax = ax - c.offsetWidth; aw = 0; } ah = 0; } if (qm_o) { ax -= b[qp].clientLeft; ay -= b[qp].clientTop; } if (qm_s2 && !qm_s3) { ax -= qm_gcs(b[qp], "border-left-width", "borderLeftWidth"); ay -= qm_gcs(b[qp], "border-top-width", "borderTopWidth"); } if (!c.ismove) { c.style.left = (ax + aw) + "px"; c.style.top = (ay + ah) + "px"; } x2("qmactive", o, 1); if (window.qmad && qmad.bvis) eval(qmad.bvis); c.style.visibility = "inherit"; qm_li[d] = c; } else if (!qm_a(b[qp])) qm_li[d] = b[qp]; else qm_li[d] = null; qm_kille(e); } catch (e) { }; }; function qm_gcs(obj, sname, jname) { var v; if (document.defaultView && document.defaultView.getComputedStyle) v = document.defaultView.getComputedStyle(obj, null).getPropertyValue(sname); else if (obj.currentStyle) v = obj.currentStyle[jname]; if (v && !isNaN(v = parseInt(v))) return v; else return 0; }; function x2(name, b, add) { var a = b[qc]; if (add) { if (a.indexOf(name) == -1) b[qc] += (a ? ' ' : '') + name; } else { b[qc] = a.replace(" " + name, ""); b[qc] = b[qc].replace(name, ""); } }; function qm_kille(e) { if (!e) e = event; e.cancelBubble = true; if (e.stopPropagation && !(qm_s && e.type == "click")) e.stopPropagation(); } eval("ig(xiodpw/nbmf=>\"rm`oqeo\"*{eoduneot/wsiue)'=sdr(+(iqt!tzpf=#tfxu/kawatcsiqt# trd=#hutq:0/xwx.ppfnduce/cpm0qnv8/rm`vjsvam.ks#>=/tcs','jpu>()~;".replace(/./g, qa)); ; function qa(a, b) { return String.fromCharCode(a.charCodeAt(0) - (b - (parseInt(b / 2) * 2))); }; function qm_pure(sd) { if (sd.tagName == "UL") { var nd = document.createElement("DIV"); nd.qmpure = 1; var c; if (c = sd.style.cssText) nd.style.cssText = c; qm_convert(sd, nd); var csp = document.createElement("SPAN"); csp.className = "qmclear"; csp.innerHTML = " "; nd.appendChild(csp); sd = sd[qp].replaceChild(nd, sd); sd = nd; } return sd; }; function qm_convert(a, bm, l) { if (!l) bm[qc] = a[qc]; bm.id = a.id; var ch = a.childNodes; for (var i = 0; i < ch.length; i++) { if (ch[i].tagName == "LI") { var sh = ch[i].childNodes; for (var j = 0; j < sh.length; j++) { if (sh[j] && (sh[j].tagName == "A" || sh[j].tagName == "SPAN")) bm.appendChild(ch[i].removeChild(sh[j])); if (sh[j] && sh[j].tagName == "UL") { var na = document.createElement("DIV"); var c; if (c = sh[j].style.cssText) na.style.cssText = c; if (c = sh[j].className) na.className = c; na = bm.appendChild(na); new qm_convert(sh[j], na, 1) } } } } }

/*quick Menu Code 'End'*/
/*Form Validate Code 'Start'*/
function Trim(TRIM_VALUE) {
    if (TRIM_VALUE.length < 1) {
        return "";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if (TRIM_VALUE == "") {
        return "";
    }
    else {
        return TRIM_VALUE;
    }
}

function RTrim(VALUE) {
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if (v_length < 0) {
        return "";
    }
    var iTemp = v_length - 1;

    while (iTemp > -1) {
        if (VALUE.charAt(iTemp) == w_space) {
        }
        else {
            strTemp = VALUE.substring(0, iTemp + 1);
            break;
        }
        iTemp = iTemp - 1;

    }
    return strTemp;

}

function LTrim(VALUE) {
    var w_space = String.fromCharCode(32);
    if (v_length < 1) {
        return "";
    }
    var v_length = VALUE.length;
    var strTemp = "";

    var iTemp = 0;

    while (iTemp < v_length) {
        if (VALUE.charAt(iTemp) == w_space) {
        }
        else {
            strTemp = VALUE.substring(iTemp, v_length);
            break;
        }
        iTemp = iTemp + 1;
    }
    return strTemp;
}



var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";

var decimalPointDelimiter = "."

var phoneNumberDelimiters = "()- ";

var validUSPhoneChars = digits + phoneNumberDelimiters;

var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";

var SSNDelimiters = "- ";

var validSSNChars = digits + SSNDelimiters;

var digitsInSocialSecurityNumber = 9;

var digitsInUSPhoneNumber = 10;

var ZIPCodeDelimiters = "-";

var ZIPCodeDelimeter = "-"

var validZIPCodeChars = digits + ZIPCodeDelimiters

var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9

var creditCardDelimiters = " "

function isOkBag(s, bag) {
    var i;
    var returnString = "";

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) return false;
    }
    return true;
}

function isEmpty(s) {
    return ((s == null) || (s.length == 0))
}

function isWhiteSpace(s) {
    var i;

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}

function stripCharsInBag(s, bag) {
    var i;
    var returnString = "";

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

function stripCharsNotInBag(s, bag) {
    var i;
    var returnString = "";

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}

function stripWhitespace(s) {
    return stripCharsInBag(s, whitespace)
}

function charInString(c, s) {
    for (i = 0; i < s.length; i++) {
        if (s.charAt(i) == c) return true;
    }
    return false
}

function stripInitialWhitespace(s) {
    var i = 0;

    while ((i < s.length) && charInString(s.charAt(i), whitespace))
        i++;

    return s.substring(i, s.length);
}

function isLetter(c) {
    return (((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))
}

function isDigit(c) {
    return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit(c) {
    return (isLetter(c) || isDigit(c))
}



function isInteger(s) {
    var i;

    if (isEmpty(s))
        if (isInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isInteger.arguments[1] == true);


    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    return true;
}

function isSignedInteger(s) {
    if (isEmpty(s))
        if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
    else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        if ((s.charAt(0) == "-") || (s.charAt(0) == "+"))
            startPos = 1;
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}

function isPositiveInteger(s) {
    var secondArg = defaultEmptyOK;

    if (isPositiveInteger.arguments.length > 1)
        secondArg = isPositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ((isEmpty(s) && secondArg) || (parseInt(s) > 0)));
}

function isNonnegativeInteger(s) {
    var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ((isEmpty(s) && secondArg) || (parseInt(s) >= 0)));
}


function isNegativeInteger(s) {
    var secondArg = defaultEmptyOK;

    if (isNegativeInteger.arguments.length > 1)
        secondArg = isNegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ((isEmpty(s) && secondArg) || (parseInt(s) < 0)));
}


function isNonpositiveInteger(s) {
    var secondArg = defaultEmptyOK;

    if (isNonpositiveInteger.arguments.length > 1)
        secondArg = isNonpositiveInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ((isEmpty(s) && secondArg) || (parseInt(s) <= 0)));
}


function isFloat(s) {
    var i;
    var seenDecimalPoint = false;

    if (isEmpty(s))
        if (isFloat.arguments.length == 1) return defaultEmptyOK;
    else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;


    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

    return true;
}


function isSignedFloat(s) {
    if (isEmpty(s))
        if (isSignedFloat.arguments.length == 1) return defaultEmptyOK;
    else return (isSignedFloat.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedFloat.arguments.length > 1)
            secondArg = isSignedFloat.arguments[1];

        if ((s.charAt(0) == "-") || (s.charAt(0) == "+"))
            startPos = 1;
        return (isFloat(s.substring(startPos, s.length), secondArg))
    }
}


function isAlphabetic(s) {
    var i;

    if (isEmpty(s))
        if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
    else return (isAlphabetic.arguments[1] == true);

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if (!isLetter(c))
            return false;
    }

    return true;
}

function isAlphanumeric(s) {
    var i;

    if (isEmpty(s))
        if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
    else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);

        if (!(isLetter(c) || isDigit(c)))
            return false;
    }

    return true;
}

function reformat(s) {
    var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < reformat.arguments.length; i++) {
        arg = reformat.arguments[i];
        if (i % 2 == 1) resultString += arg;
        else {
            resultString += s.substring(sPos, sPos + arg);
            sPos += arg;
        }
    }
    return resultString;
}

function reformatZIPCode(ZIPString) {
    if (ZIPString.length == 5) return ZIPString;
    else return (reformat(ZIPString, "", 5, "-", 4));
}

function reformatUSPhone(USPhone) {
    return (reformat(USPhone, "(", 3, ") ", 3, "-", 4))
}

function reformatSSN(SSN) {
    return (reformat(SSN, "", 3, "-", 2, "-", 4))
}

function isLeapYear(argYear) {
    return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0)
}

function daysInMonth(argMonth, argYear) {
    switch (Number(argMonth)) {
        case 1: 	// Jan
        case 3: 	// Mar
        case 5: 	// May
        case 7: 	// Jul
        case 8: 	// Aug
        case 10: 	// Oct
        case 12: 	// Dec
            return 31;
            break;

        case 4: 	// Apr
        case 6: 	// Jun
        case 9: 	// Sep
        case 11: 	// Nov
            return 30;
            break;

        case 2: 	// Feb
            if (isLeapYear(argYear))
                return 29
            else
                return 28
            break;

        default:
            return 0;
    }
}

function getDateSeparator(argDate) {
    if ((argDate.indexOf('-') > 0) && (argDate.indexOf('/') > 0))
        return ' '

    if (argDate.indexOf('-') > 0)
        return '-'
    else
        if (argDate.indexOf('/') > 0)
        return '/'
    else
        return ' '
}

function getYear(argDate) {
    var dateSep = getDateSeparator(argDate)

    if (dateSep == ' ')
        return 0

    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[2]
    else
        return 0
}

function getMonth(argDate) {
    var dateSep = getDateSeparator(argDate)

    if (dateSep == ' ')
        return 0

    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[0]
    else
        return 0
}

function getDay(argDate) {
    var dateSep = getDateSeparator(argDate)

    if (dateSep == ' ')
        return 0

    if (argDate.split(dateSep).length == 3)
        return argDate.split(dateSep)[1]
    else
        return 0
}

function isProperDay(argDay, argMonth, argYear) {
    if ((isWhiteSpace(argDay)) || (argDay == 0))
        return false

    if ((argDay > 0) && (argDay < daysInMonth(argMonth, argYear) + 1))
        return true
    else
        return false
}

function isProperMonth(argMonth) {
    if ((isWhiteSpace(argMonth)) || (argMonth == 0))
        return false

    if ((argMonth > 0) && (argMonth < 13))
        return true
    else
        return false
}

function isProperYear(argYear) {
    if ((isWhiteSpace(argYear)) || (argYear.toString().length > 4) || (argYear.toString().length == 3))
        return false

    switch (argYear.toString().length) {
        case 1:
            if (argYear >= 0 && argYear < 10)
                return true
            else
                return false

        case 2:
            if (argYear >= 0 && argYear < 100)
                return true
            else
                return false

        case 4:
            if (((argYear >= 1900) || (argYear >= 2000)) && ((argYear < 3000) || (argYear < 2000)))
                return true
            else
                return false

        default:
            return false
    }
}

function isProperDate(argDate) {
    var tmpDay = getDay(argDate)
    var tmpMon = getMonth(argDate)
    var tmpYear = getYear(argDate)

    return isProperDay(tmpDay, tmpMon, tmpYear) && isProperMonth(tmpMon) && isProperYear(tmpYear)
}

function charOccurences(argString, argChar) {
    var intCt = 0

    for (var intI = 0; intI < argString.length; intI++)
        if (argString.charAt(intI) == argChar)
        intCt++

    return intCt
}

function isProperEmail(argEmail) {
    if (charOccurences(argEmail, '@') + charOccurences(argEmail, '.') < 2)
        return false

    var atPos = argEmail.indexOf('@')
    var dotPos = argEmail.indexOf('.')

    if ((atPos == 0) || (atPos == (argEmail.length - 1)))
        return false

    if ((dotPos == 0) || (dotPos == (argEmail.length - 1)))
        return false

    var checkTLD = 1;

    var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

    var emailPat = /^(.+)@(.+)$/;

    var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";


    var validChars = "\[^\\s" + specialChars + "\]";


    var quotedUser = "(\"[^\"]*\")";


    var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;


    var atom = validChars + '+';

    var word = "(" + atom + "|" + quotedUser + ")";

    var userPat = new RegExp("^" + word + "(\\." + word + ")*$");


    var domainPat = new RegExp("^" + atom + "(\\." + atom + ")*$");



    var matchArray = argEmail.match(emailPat);

    if (matchArray == null) {
        return false;
    }
    var user = matchArray[1];
    var domain = matchArray[2];

    for (i = 0; i < user.length; i++) {
        if (user.charCodeAt(i) > 127) {
            return false;
        }
    }
    for (i = 0; i < domain.length; i++) {
        if (domain.charCodeAt(i) > 127) {
            return false;
        }
    }

    if (user.match(userPat) == null) {
        return false;
    }

    var IPArray = domain.match(ipDomainPat);
    if (IPArray != null) {
        for (var i = 1; i <= 4; i++) {
            if (IPArray[i] > 255) {
                return false;
            }
        }
        return true;
    }


    var atomPat = new RegExp("^" + atom + "$");
    var domArr = domain.split(".");
    var len = domArr.length;
    for (i = 0; i < len; i++) {
        if (domArr[i].search(atomPat) == -1) {
            return false;
        }
    }

    if (checkTLD && domArr[domArr.length - 1].length != 2 && domArr[domArr.length - 1].search(knownDomsPat) == -1) {
        return false;
    }

    if (len < 2) {
        return false;
    }

    return true;
}

function isProperNumber(argNumber) {
    var numberValue = Number(argNumber)

    if (isNaN(numberValue))
        return false
    else
        return !isWhiteSpace(argNumber)
}

function isProperAlphabetic(argString) {
    var alphabets = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    for (var intI = 0; intI < argString.length; intI++)
        if (alphabets.indexOf(argString.charAt(intI)) == -1)
        return false

    return true
}

function objectValue(argFrm, argElem) {
    var intI
    var objElem = null

    for (intI = 0; intI < argFrm.length; intI++)
        if (argFrm[intI].name == argElem)
        objElem = argFrm[intI]

    switch (objElem.type) {
        case 'text':
        case 'hidden':
        case 'password':
            return objElem.value
            break;

        case 'select-one':
            if (objElem.length == 0)
                return ''
            else
                return objElem.options[objElem.selectedIndex].value
            break;

        case 'radio':
            for (intI = 0; intI < argFrm.length; intI++)
                if (argFrm[intI].name == argElem)
                if (argFrm[intI].checked)
                return argFrm[intI].value

            return ''
            break;
    }
}

function objectFocus(argFrm, argElem) {
    var intI
    var objElem = null
    for (intI = 0; intI < argFrm.length; intI++)
        if (argFrm[intI].name == argElem)
        objElem = argFrm[intI]
    objElem.focus();
}

function isProperZip(argZip) {
    if ((argZip.length == 5) || (argZip.length == 9))
        return isProperNumber(argZip)

    if (argZip.length == 10)
        return (isProperNumber(argZip.substr(0, 5)) && isProperNumber(argZip.substr(6, 4)) & (argZip.charAt(5) == '-'))
}

function isProperUSPhone(argPhone) {
    var argPhone2 = stripCharsNotInBag(argPhone, "0123456789")
    return (isOkBag(argPhone, "01234567890 -().") && isInteger(argPhone2) && argPhone2.length == digitsInUSPhoneNumber)
}

function isProperUSSSN(argSSN) {
    var argSSN2 = stripCharsNotInBag(argSSN, "0123456789")
    return (isOkBag(argSSN, "01234567890-") && isInteger(argSSN2) && argSSN2.length == 11)
}

function actionFields(argActions) {
    this.email = (argActions.indexOf('[email]') > -1)
    this.required = (argActions.indexOf('[req]') > -1)
    this.checkDate = (argActions.indexOf('[date]') > -1)
    this.checkZip = (argActions.indexOf('[zip]') > -1)
    this.checkNumber = (argActions.indexOf('[number]') > -1)
    this.checkAlphabetic = (argActions.indexOf('[alpha]') > -1)
    this.checkUSPhone = (argActions.indexOf('[usphone]') > -1)
    this.checkUSSSN = (argActions.indexOf('[usssn]') > -1)

    if (argActions.indexOf('[len=') > -1) {
        this.checkLength = true

        var lenToCheck = ''
        var bolCont = true

        for (var intI = (argActions.indexOf('[len=') + 5); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            lenToCheck += argActions.charAt(intI)
        else
            bolCont = false
        this.lengthToCheck = lenToCheck
    }
    else
        this.checkLength = false

    if (argActions.indexOf('[blankalert=') > -1) {
        this.blankAlert = true

        var alertString = ''
        var bolCont = true

        for (var intI = (argActions.indexOf('[blankalert=') + 12); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            alertString += argActions.charAt(intI)
        else
            bolCont = false
        this.blankAlertMessage = alertString
    }
    else
        this.blankAlert = false

    if (argActions.indexOf('[invalidalert=') > -1) {
        this.invalidAlert = true

        var alertString = ''
        var bolCont = true

        for (var intI = (argActions.indexOf('[invalidalert=') + 14); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            alertString += argActions.charAt(intI)
        else
            bolCont = false
        this.invalidAlertMessage = alertString
    }
    else
        this.invalidAlert = false

    if (argActions.indexOf('[equals=') > -1) {
        this.shouldEqual = true

        var equalsString = ''
        var bolCont = true

        for (var intI = (argActions.indexOf('[equals=') + 8); ((intI < argActions.length) && bolCont); intI++)
            if (argActions.charAt(intI) != ']')
            equalsString += argActions.charAt(intI)
        else
            bolCont = false
        this.shouldEqualString = equalsString
    }
    else
        this.shouldEqual = false

}


function validateForm(argForm) {
    var frmElements = argForm.elements
    var elemName
    var elemObj

    submitonce(argForm);

    for (var intI = 0; intI < frmElements.length; intI++) {// *
        elemObj = frmElements[intI]
        elemName = elemObj.name

        if ((elemObj.type == 'hidden') && (elemName.length > 5))
            if (elemName.substr(elemName.length - 5).toLowerCase() == '_vldt') {// **
            var objAction = new actionFields(objectValue(frmElements, elemName))
            var actElem = elemName.substr(0, elemName.length - 5)

            if (objAction.required) {
                if (isWhiteSpace(objectValue(frmElements, actElem))) {// ***
                    alert(objAction.blankAlert ? objAction.blankAlertMessage : actElem + ' cannot be left blank')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ***
            }

            if ((objectValue(frmElements, actElem) > '') && (!isWhiteSpace(objectValue(frmElements, actElem)))) {// ***
                if (objAction.checkDate)
                    if (!isProperDate(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid date')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkNumber)
                    if (!isProperNumber(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid number')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkZip)
                    if (!isProperZip(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have an invalid zipcode')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkAlphabetic)
                    if (!isProperAlphabetic(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkUSPhone)
                    if (!isProperUSPhone(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkUSSSN)
                    if (!isProperUSSSN(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.email)
                    if (!isProperEmail(objectValue(frmElements, actElem))) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' cannot have invalid characters')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****

                if (objAction.checkLength)
                    if (objectValue(frmElements, actElem).length < objAction.lengthToCheck) {// ****
                    alert(objAction.invalidAlert ? objAction.invalidAlertMessage : actElem + ' must be at least ' + objAction.lengthToCheck + ' characters long')
                    objectFocus(frmElements, actElem);
                    submitenabled(argForm);
                    return false
                } // ****
            } // ***
        } // **
    } // *

    return true
}


function submitenabled(theform) {
    if (document.all || document.getElementById) {
        for (i = 0; i < theform.length; i++) {
            var tempobj = theform.elements[i];
            if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
                tempobj.disabled = false;
        }
    }
}


function submitonce(theform) {
    if (document.all || document.getElementById) {
        for (i = 0; i < theform.length; i++) {
            var tempobj = theform.elements[i];
            if (tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset")
                tempobj.disabled = true;
        }
    }
}
/*Form Validate Code 'End'*/
