function autotab(current, to) {
    if (current.getAttribute
            && current.value.length == current.getAttribute("maxlength")) {
        to.focus()
    }
}
function validWebsite(website1) {
    website = website1.value;
    if ((website.indexOf("http://") == -1) || (website.indexOf(".") == -1)) {
        alert("Please enter valid Website");
        website1.select();
        return false;
    }
    return true;
}
function validEmail(email1) {
    email = email1.value;
    /*
	 * if(email=="") { alert("Please Enter Email Address"); email1.focus();
	 * return false; }
	 */

    if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))) {
        alert("Invalid E-mail Address! Please re-enter.");
        email1.select();
        return false;
    }

    return true;
}
function IsNumericAndDecimal(strString1) // check for valid numeric strings
{
    strString = strString1.value;

    if (!/\D/.test(strString))
        return true;// IF NUMBER
    else if (/^\d+\.\d+$/.test(strString))
        return true;// IF A DECIMAL NUMBER HAVING AN INTEGER ON EITHER SIDE OF
                    // THE DOT(.)
    else {
        alert("Please enter valid value");
        strString1.select();
        return false;
    }
}

function IsNumeric(val1, label) {
    val = val1.value;
    if (/\D/.test(val)) {
        alert(label + " must be a number.");
        val1.focus();
        return false;
    }
    return true;
}

function IsNumeric(val1, label, errMsg) {
    val = val1.value;
    if (/\D/.test(val)) {
        if (errMsg == "")
            alert(label + " must be a number.");
        else
            alert(errMsg);
        val1.focus();
        return false;
    }
    return true;
}

function checkdate(objName) {
    var datefield = objName;
    if (chkdate(objName) == false) {
        datefield.select();
        alert("That date is invalid.  Please try again.");
        datefield.focus();
        return false;
    } else {
        return true;
    }
}
function chkdate(objName) {
    var strDatestyle = "US"; // United States date style
    // var strDatestyle = "EU"; //European date style
    var strDate;
    var strDateArray;
    var strDay;
    var strMonth;
    var strYear;
    var intday;
    var intMonth;
    var intYear;
    var booFound = false;
    var datefield = objName;
    var strSeparatorArray = new Array("-", " ", "/", ".");
    var intElementNr;
    var err = 0;
    var strMonthArray = new Array(12);
    strMonthArray[0] = "Jan";
    strMonthArray[1] = "Feb";
    strMonthArray[2] = "Mar";
    strMonthArray[3] = "Apr";
    strMonthArray[4] = "May";
    strMonthArray[5] = "Jun";
    strMonthArray[6] = "Jul";
    strMonthArray[7] = "Aug";
    strMonthArray[8] = "Sep";
    strMonthArray[9] = "Oct";
    strMonthArray[10] = "Nov";
    strMonthArray[11] = "Dec";
    strDate = datefield.value;
    if (strDate.length < 1) {
        return true;
    }
    for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
        if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            if (strDateArray.length != 3) {
                err = 1;
                return false;
            } else {
                strDay = strDateArray[0];
                strMonth = strDateArray[1];
                strYear = strDateArray[2];
            }
            booFound = true;
        }
    }
    if (booFound == false) {
        if (strDate.length > 5) {
            strDay = strDate.substr(0, 2);
            strMonth = strDate.substr(2, 2);
            strYear = strDate.substr(4);
        }
    }
    if (strYear.length == 2) {
        strYear = '20' + strYear;
    }
    // US style
    if (strDatestyle == "US") {
        strTemp = strDay;
        strDay = strMonth;
        strMonth = strTemp;
    }
    intday = parseInt(strDay, 10);
    if (isNaN(intday)) {
        err = 2;
        return false;
    }
    intMonth = parseInt(strMonth, 10);
    if (isNaN(intMonth)) {
        for (i = 0; i < 12; i++) {
            if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
                intMonth = i + 1;
                strMonth = strMonthArray[i];
                i = 12;
            }
        }
        if (isNaN(intMonth)) {
            err = 3;
            return false;
        }
    }
    intYear = parseInt(strYear, 10);
    if (isNaN(intYear)) {
        err = 4;
        return false;
    }
    if (intMonth > 12 || intMonth < 1) {
        err = 5;
        return false;
    }
    if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7
            || intMonth == 8 || intMonth == 10 || intMonth == 12)
            && (intday > 31 || intday < 1)) {
        err = 6;
        return false;
    }
    if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11)
            && (intday > 30 || intday < 1)) {
        err = 7;
        return false;
    }
    if (intMonth == 2) {
        if (intday < 1) {
            err = 8;
            return false;
        }
        if (LeapYear(intYear) == true) {
            if (intday > 29) {
                err = 9;
                return false;
            }
        } else {
            if (intday > 28) {
                err = 10;
                return false;
            }
        }
    }
    if (strDatestyle == "US") {
        datefield.value = strMonthArray[intMonth - 1] + " " + intday + " "
                + strYear;
    } else {
        datefield.value = intday + " " + strMonthArray[intMonth - 1] + " "
                + strYear;
    }
    return true;
}
function LeapYear(intYear) {
    if (intYear % 100 == 0) {
        if (intYear % 400 == 0) {
            return true;
        }
    } else {
        if ((intYear % 4) == 0) {
            return true;
        }
    }
    return false;
}
function doDateCheck(from, to) {

    if (Date.parse(from.value) <= Date.parse(to.value)) {
        alert("The dates are valid.");
    } else {
        if (from.value == "" || to.value == "")
            alert("Both dates must be entered.");
        else
            alert("To date must occur after the from date.");
    }
}

function isValidCreditCardNumber(ccNumb1) { // v2.0
    ccNumb = ccNumb1.value;
    var valid = "0123456789" // Valid digits in a credit card number
    var len = ccNumb.length; // The length of the submitted cc number
    var iCCN = parseInt(ccNumb); // integer of ccNumb
    var sCCN = ccNumb.toString(); // string of ccNumb
    sCCN = sCCN.replace(/^s+|s+$/g, ''); // strip spaces
    var iTotal = 0; // integer total set at zero
    var bNum = true; // by default assume it is a number
    var bResult = false; // by default assume it is NOT a valid cc
    var temp; // temp variable for parsing string
    var calc; // used for calculation of each digit

    // Determine if the ccNumb is in fact all numbers
    for ( var j = 0; j < len; j++) {
        temp = "" + sCCN.substring(j, j + 1);
        if (valid.indexOf(temp) == "-1") {
            bNum = false;
        }
    }

    // if it is NOT a number, you can either alert to the fact, or just pass a
    // failure
    if (!bNum) {
        /* alert("Not a Number"); */bResult = false;
    }

    // Determine if it is the proper length
    if ((len == 0) && (bResult)) { // nothing, field is blank AND passed above
                                    // # check
        bResult = false;
    } else { // ccNumb is a number and the proper length - let's see if it is
                // a valid card number
        if (len >= 15) { // 15 or 16 for Amex or V/MC
            for ( var i = len; i > 0; i--) { // LOOP throught the digits of
                                                // the card
                calc = parseInt(iCCN) % 10; // right most digit
                calc = parseInt(calc); // assure it is an integer
                iTotal += calc; // running total of the card number as we loop -
                                // Do Nothing to first digit
                i--; // decrement the count - move to the next digit in the
                        // card
                iCCN = iCCN / 10; // subtracts right most digit from ccNumb
                calc = parseInt(iCCN) % 10; // NEXT right most digit
                calc = calc * 2; // multiply the digit by two
                // Instead of some screwy method of converting 16 to a string
                // and then parsing 1 and 6 and then adding them to make 7,
                // I use a simple switch statement to change the value of calc2
                // to 7 if 16 is the multiple.
                switch (calc) {
                case 10:
                    calc = 1;
                    break; // 5*2=10 & 1+0 = 1
                case 12:
                    calc = 3;
                    break; // 6*2=12 & 1+2 = 3
                case 14:
                    calc = 5;
                    break; // 7*2=14 & 1+4 = 5
                case 16:
                    calc = 7;
                    break; // 8*2=16 & 1+6 = 7
                case 18:
                    calc = 9;
                    break; // 9*2=18 & 1+8 = 9
                default:
                    calc = calc; // 4*2= 8 & 8 = 8 -same for all lower
                                    // numbers
                }
                iCCN = iCCN / 10; // subtracts right most digit from ccNum
                iTotal += calc; // running total of the card number as we loop
            } // END OF LOOP
            if ((iTotal % 10) == 0) { // check to see if the sum Mod 10 is
                                        // zero
                bResult = true; // This IS (or could be) a valid credit card
                                // number.
            } else {
                bResult = false; // This could NOT be a valid credit card
                                    // number
            }
        }
    }
    // change alert to on-page display or other indication as needed.
    if (bResult) {
        // alert("This IS a valid Credit Card Number!");
    }
    if (!bResult) {
        alert("Please enter a valid Credit Card Number!");
        ccNumb1.select();
    }
    return bResult; // Return the results
}

/*******************************************************************************
 * ***********************************************************************\
 * boolean isCardExpired([int month, int year]) return true if the date is a
 * valid expiry date, else return false. \
 ******************************************************************************/
function isCardExpired(month1, year1) {

    year = year1.value;
    month = month1.value;

    if (!isNum(year + "")) {
        alert("Please enter valid year");
        year1.focus();
        return false;
    }
    if (!isNum(month + "")) {
        alert("Please enter valid month");
        month1.focus();
        return false;
    }
    today = new Date();
    expiry = new Date(year, month);
    if (today.getTime() > expiry.getTime()) {
        alert("Card Date is expired");
        year1.focus();
        return false;
    } else
        return true;
}

/*******************************************************************************
 * ***********************************************************************\
 * boolean isNum(String argvalue) return true if argvalue contains only numeric
 * characters, else return false. \
 ******************************************************************************/
function isNum(argvalue) {
    argvalue = argvalue.toString();

    if (argvalue.length == 0)
        return false;

    for ( var n = 0; n < argvalue.length; n++)
        if (argvalue.substring(n, n + 1) < "0"
                || argvalue.substring(n, n + 1) > "9")
            return false;

    return true;
}


function intOnly(i) {
    if (i.value.length > 0) {
        i.value = i.value.replace(/[^\d]+/g, '');
    }
}
