<!--
/**
 * Check if the email address is valid.
 * @param EMAIL The email address.
 * @return The result boolean value, true for valid, or else invalid.
 * @status OK
 * @date 2005/11/05
 * @by Kevin Koo.
 * @referance http://www.javascriptkit.com/script/script2/acheck.shtml
 */
function isEmail(EMAIL) {
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return filter.test(EMAIL);
}

function validEmail(EMAIL) {
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    return filter.test(EMAIL);
}

/**
 * Check if the input is all number or letter or underscore.
 * @param INPUT A string to be checked.
 * @return ture if are all literals.
 */
function validLiteral(INPUT) {
    var litExp = /\W+/;  // non numeral or letter or underscore
    var invalid = litExp.test(INPUT);
    return !invalid;
}

/**
 * Check if the input is all number.
 * @param INPUT A number string.
 * @return ture if are all numerics
 */
function validNum(INPUT) {
    var numExp = /\D+/;  // non numeral
    var invalid = numExp.test(INPUT);
    return !invalid;
}

/**
 * Check if the input is valid phone number.
 * @param INPUT A number string.
 * @return ture if is phone number.
 */
function validPhone(INPUT) {
    var numExp = /^[^\-]?\D+/;  // non phone number
    var invalid = numExp.test(INPUT);
    return !invalid;
}

/**
 * Check if the input is valid date.
 * @param YEAR The year.
 * @param MONTH The month minus 1.
 * @param DAY The day.
 * @return true if is valid.
 */
function validDate(YEAR, MONTH, DAY) {
    if (MONTH < 0 || MONTH > 11 || DAY < 1 || DAY > 31) {
        return false;
    }
    var tmpdate = new Date();
    tmpdate.setFullYear(YEAR);
    tmpdate.setMonth(MONTH);
    tmpdate.setDate(DAY);
    if (tmpdate.getDate() != DAY) {
        return false;
    } else {
        return true;
    }
}

/**
 * Check the email address.
 * @param EMAIL An email address string.
 * @return true if is valid, false if is invalid.
 */
// Note: To be improved.
function checkEmail(EMAIL) {
    if (EMAIL.indexOf("@") < 0) {
        return false;
    }
    if (EMAIL.indexOf(".") < 0) {
        return false;
    }
    if (EMAIL.indexOf("@") > EMAIL.indexOf(".")) {
        return false;
    }
    if (EMAIL.charAt(EMAIL.length-1) == "@") {
        return false;
    }
    if (EMAIL.charAt(EMAIL.length-1) == ".") {
        return false;
    }
    if (EMAIL.charAt(0) == "@") {
        return false;
    }
    if (EMAIL.charAt(0) == ".") {
        return false;
    }
    var regExp = /\w+[@]\w+[.]\w+/;
    if (!regExp.test(EMAIL)) {
        return false;
    }
    return true;
}
/**
 * Check the personal identifiction number.
 * @param PID An personal identification number string.
 * @return true if is valid, false if is invalid.
 */
function validPID(PID) {
    var datalen = 10;
    var letters = "ABCDEFGHJKLMNPQRSTUVWXYZIO";
    var weights = "19876543211";
    var pid = PID.toUpperCase();
    if (pid.length != datalen) {
        return false;
    }
    var myExp = /[A-Z][12]\d{8}/
    if (!myExp.test(pid)) {
        return false;
    }
    // Transformed PID.
    var tpid = (letters.indexOf(pid.charAt(0)) + 10) + pid.substring(1, 9);
    var total = 0;
    for (i = 0; i < datalen; i++) {
        var d = tpid.charAt(i);
        var w = weights.charAt(i);
        total += (w * d);
    }
    total += parseInt(pid.substring(9));
    if ((total % 10) > 0) {
        return false;
    }
    return true;
}
//-->