errorArray = new Array();
message = '';
warning = '';
mAbbr = new Array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');
mName = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
loc = new String(document.location);
isSearchForm = (loc.indexOf("earch") > -1);

function send() {
    if (typeof checkNames != 'undefined')
        checkFields();
    if (message.length > 0) {
        message = "Please correct the following errors:\n" + message;
        alert(message);
        message = "";
    }
    else if (warning.length > 0) {
        warning = "Some fields contained errors and will be ignored:\n" + warning + "Do you want to continue?\n";
        if (confirm(warning)) {
            document.forms[0].submit();
            if (!isSearchForm)
                alert('Your Information has been sent. Please wait for server response.');
        }
    }
    else {
        document.forms[0].submit();
         if (!isSearchForm)
            alert('Your Information has been sent. Please wait for server response.');
    } 
}

function checkFields() {
    warning = '';
    message = '';
    for(var i=0 ; i<checkNames.length ; i++) {
        fieldName = checkNames[i];
        field = document.form0[fieldName];
        if (typeof field == "undefined" || (!notNull[i] && field.value == "")) continue;
        fieldLabel = checkLabels[i];
        checkType = checkValues[i];
        reqd = notNull[i];
        if (checkType=="real") 
            field.value = checkReal(fieldLabel,field.value,reqd);
        else if (checkType=="int") 
            field.value = checkInt(fieldLabel,field.value);
        else if (notNull[i] && checkType.indexOf("text") == 0) 
            checkText(fieldLabel,field.value,checkType);
        else if (checkType.indexOf("pwd") == 0 && fieldLabel.indexOf("Confirm") < 0) {
            //alert(dml[fieldName][0].value);
            checkPwd(fieldLabel,field,checkType);
        }
        else if (reqd && checkType=="email") 
            field.value = checkEmail(fieldLabel,field.value);
        else if (reqd && checkType=="select") {
            index = field.selectedIndex;
            //            if (index < 0) index =0;
            checkSelect(fieldLabel, index);
            //			checkSelect(fieldLabel,dml[fieldName].options[dml[fieldName].selectedIndex].value);
        }
        else if (reqd && checkType=="tree") {
            index = document.form0.elements["level1"].selectedIndex;
            checkSelect(fieldLabel,index-1);
        }
        else if (reqd && checkType=="phone") {
            field.value = checkPhone(fieldLabel,field.value);
        }
        else if (checkType=="date") {
           field.value = checkDate(fieldLabel,field.value);
        }
    }
}

function checkDate(label,value) {
    value = value.replace(/^\W+|\W$/g, "");
    value = value.replace(/\W+/g,"|");
    value = value.toLowerCase();
    tempArr = value.split("|");
    var month="",day="",year="";
    // if two 2 digit numbers, then dd mm unless mm > 12, then it is mm dd
    if (tempArr.length < 2) {}
    else if (tempArr.length < 3 && tempArr[0].search(/^\d\d$|^\d$/) != -1 && tempArr[1].search(/^\d\d$|^\d$/) != -1) {
        if (tempArr[1] < 13) {
            day = tempArr[0];
            month = mName[tempArr[1]-1];
        } 
        else if (tempArr[0] < 13) {
            day = tempArr[1];
            month = mName[tempArr[0]-1];
        }
    }
    // if three 2 digit numbers, then dd mm yy unless dd > 31, then it is yy mm dd
    else if (tempArr[0].search(/^\d\d$|^\d$/) != -1 && tempArr[1].search(/^\d\d$|^\d$/) != -1 && tempArr[2].search(/^\d\d$|^\d$/) != -1) {
        month = mName[tempArr[1]-1];
        if (tempArr[0] < 32) {
            day = tempArr[0];
            year = tempArr[2];
        }
        else {
            day = tempArr[2];
            year = tempArr[0];
        }
    }
    else {
        for (m=0; m<3; m++) {
            dItem = tempArr[m];
            if (typeof dItem == 'undefined') continue;
            if (month == "") {
                for (i=0; i<12; i++) {
                    if (dItem.indexOf(mAbbr[i]) != -1) {
                        month = mName[i];
                        break;
                    }
                }
                if (month != "") continue;
                else if (m == 1 && dItem < 13) month = mName[tempArr[1]-1];
            }
            if (year == "") {
                if (dItem.search(/^\d\d\d\d$/) != -1) year = dItem;
                if (dItem.search(/^\d\d$/) != -1 && dItem > 31) year = dItem;
                if (year != "") continue;
            }
            if (day == "") {
                if (dItem.search(/^\d\d$|^\d$/) != -1 && dItem < 32) day = dItem;
            }
        }
    }
    if (year == "") year = 2002;
    else if (year.search(/^\d$/) != -1) year = 200 + year;
    else if (year.search(/^\d\d$/) != -1)  year = 20 + year;
    //alert("Date: " + month + " " + day + " " + year);
    parseError = (day == "" || month == "" || year == "" || day > 31 || typeof month == 'undefined');
    if (parseError) {
        if (reqd) message += label + ": Could not parse date field.\n";
        else warning += label + ": Could not parse date field.\n";
        return "";
    }
    else return (month + " " + day + " " + year);
}

function checkReal(label,value,reqd) {
    newValue = value.replace(/[^\d\.]/g, "");     // eliminates everything but dots and digits
    newValue = newValue.replace(/^\.+|\.+$/,"");  // eliminate dots on both ends in case it was used for abbreviation
    valArr = newValue.split(".");                 // check if more then one dot
    if (valArr.length > 2) {
        //if more then one dot, then dot is used as separator, eliminate them.
        newValue = valArr.join("");
    }
    re = /^\D*(\d+\.?\d*).*$/;
    if(reqd && newValue == ""){
        message += label + ": Please enter a number containing digits 0-9 and an optional period (.).\n";
    } 
    return newValue;
}

function checkInt(label,value) {
    value = value.replace(/,/g, "");
    re = /^\D*(\d+).*$/;
    if (re.test(value)) {
        newValue = value.replace(re, "$1");
        return newValue;
    }
    else if (reqd){
        message += label + ": Please enter a number containing only digits 0-9.\n";
        return value;
    } 
    else
        return newValue;
}

function checkText(label,value,checkType) {
    var passwdArray = value;
    var limitArray = new Array();
    if(checkType.indexOf(":") > -1) {
        limitArray = checkType.split(":");
    }
    else {
        limitArray[1] = 5;
        limitArray[2] = 250;
    }
    if (limitArray.length < 3 && value.length < limitArray[1]) {
        message += label + ": Please enter a valid text longer then " + (limitArray[1]-1) + " characters.\n";
    }
    else if (value.length < limitArray[1] || value.length > limitArray[2]) {
        message += label + ": Please valid text between " + limitArray[1] + " - " + limitArray[2] + " characters.\n";
    } 
}

function checkPwd(label,value,checkType) {
    var passwdArray = value;
    var limitArray = new Array();
    if(checkType.indexOf(":") > -1) {
        limitArray = checkType.split(":");
    }
    else {
        limitArray[1] = 5;
        limitArray[2] = 10;
    }
    value1 = passwdArray[0].value;
    if (passwdArray[0].value != passwdArray[1].value) {
        message += label + ": The two values do not match. Please try again.\n";
    }
    else if (value1.length < limitArray[1] || value1.length > limitArray[2]) {
        message += label + ": Please select a password between " + limitArray[1] +" - " + limitArray[2] + " characters.\n";
    }
    else if (!((value1.search(/\w/) > -1 && value1.search(/\d/) > -1) ||
        value1 != value1.toLowerCase() ||
            value1 != value1.toUpperCase())) {
                message += label + ": Please use alpha plus numeric or mixed case letters in your password.\n";
            }
}

function checkEmail(label,value) {
    re = /^\s*(\w[\w-\.]+\@[\w-\.]+\w\w)\s*$/;
    if (re.test(value)) {
        newValue = value.replace(re, "$1");
        return newValue;
    }
    else {
        message += label + ": Please enter a valid e-mail address.\n";
        return value;
    } 
}

function checkSelect(label,value,checkType) {
    if (value < 0) {
        //    if (value == null || value.search(/\d+/) == -1) {
        message += label + ": Please make a selection.\n";
    } 
}

function checkPhone(label,value) {
    var prefix = "";
    var ext = "";
    var finalNumber="";
    var mainNumber = value.replace(/^\D*(\d.*\d)\D*x\D*(\d+)\D*/i,"$1");
var ext = value.replace(/^\D*(\d.*\d)\D*x\D*(\d+)\D*/i,"$2");
if (ext == value) ext = "";
else ext = "x" + ext;
cleanNumber = mainNumber.replace(/\D/g,"");
numLength = cleanNumber.length;
if (cleanNumber.charAt(0) == "1") {
    finalNumber = cleanNumber.replace(/(\d)(\d\d\d)(\d\d\d)(\d\d\d\d)/,"$1($2)$3-$4") + ext;
}
else if (cleanNumber.substr(0,3) == "011" || value.charAt(0) == "+" || numLength > 10) {
    finalNumber = value;
}
else if (cleanNumber.length == 10) {
    finalNumber = cleanNumber.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/,"($1)$2-$3") + ext;
}
else
finalNumber = "";
if (finalNumber == "") {
    message += label + ": Please enter a valid phone number, minimum 10 digits.\n";
    return value;
}
else {
    return finalNumber;
} 
}

function SetChecked(val) {
    dml=document.form0;
    len = dml.elements.length;
    for(var i=0 ; i<len ; i++) {
        if (dml.elements[i].name=='items') {
            dml.elements[i].checked=val;
        }
    }
}

function chkAll(inp,val) {
    dml=document.form0;
    len = dml.elements.length;
    for(var i=0 ; i<len ; i++) {
        if (dml.elements[i].name==inp) {
            dml.elements[i].checked=val;
        }
    }
}

function chkProv(chgFld) {
    prov = document.form0.prov.options[document.forms[0].prov.options.selectedIndex].text;
    state = document.form0.state.options[document.forms[0].state.selectedIndex].text;
    country = document.forms[0].countries.options[document.forms[0].countries.selectedIndex].text;
    countryVal = document.forms[0].countries.options[document.forms[0].countries.selectedIndex].value;
    if (chgFld == 'pr') {
        if (prov == 'Select Province') prov = '';
        else document.form0.state[0].selected = "1";
        document.form0.stateprov.value = prov;
        document.form0.country.value = 'Canada';
    }
    if (chgFld == 'st') {
        if (state == 'Select State') state = '';
        else document.form0.prov[0].selected = "1";
        document.form0.stateprov.value = state;
        document.form0.country.value = 'United States';
    }
    if (chgFld == 'ctr') {
        if (country == 'Select Country') country = '';
        else if (countryVal > 3) {
            document.form0.state[0].selected = "1";
            document.form0.prov[0].selected = "1";
            document.form0.stateprov.value = '';
        }
        document.forms[0].country.value = country;
    }
}

function popLink(val) {
    var url = "/addLink.html?" + val;
    linkWindow=open(url,"linkWindow","status,alwaysRaised,dependent,height=300,width=500,scrollbar=yes");
}

function countChars(fieldName, limits) {
    //alert("counting");
    //valArray = limits.split(":");
    //var maxChars = valArray[2];
    var currText = document.form0[fieldName].value;
    var counterName = fieldName + "Counter";
    document.form0[counterName].value = " " + (currText.length + 1) + " ";
}

function ssearch(keyword,form) {
    var formObject = eval("document." + form);
    formObject.elements[5].value = keyword;
    formObject.submit();
}

