<!--
/**
 * DataCheck.js
 * Check the data format.
 * 檢核各種資料格式是否正確.
 * @author Kevin Koo
 * @date 2004/6/9 05:45下午
 */

/**
 * Check the personal identifiction number.
 * 檢核身份證號碼是否正確.
 * @param PID An personal identification number string.
 * @return true if is valid, false if is invalid.
 */
function checkPID(PID) {
    var datalen = 10;
    var letters = "ABCDEFGHJKLMNPQRSTUVWXYZIO";
    var weights = "19876543211";
    var pid = PID.toUpperCase();
    if (pid.length != datalen) {
        alert("身份證號碼檢核：長度不夠!!");
        return false;
    }
    var myExp = /[A-Z][12]\d{8}/
    if (!myExp.test(pid)) {
        alert("身份證號碼檢核：格式不對!!");
        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) {
        alert("身份證號碼檢核：檢查碼錯誤!!");
        return false;
    }
    alert("身份證號碼檢核通過!!!!");
    return true;
}

/**
 * Check the uniform identifiction number.
 * 檢核統一編號是否正確.
 * @param UID An uniform identification number string.
 * @return true if is validated, false if is not validated.
 */
function checkUID(UID) {
    var datalen = 8;
    var weights = "12121241";
    if (UID.length != datalen) {
        alert("統一編號檢核：長度不夠!!");
        return false;
    }
    var myExp = /\d{8}/;
    if (!myExp.test(UID)) {
        alert("統一編號檢核：格式不對!!");
        return false;
    }
    var total = 0;
    for (i = 0; i < datalen; i++) {
        var d = parseInt(UID.charAt(i));
        var w = parseInt(weights.charAt(i));
        var dw = d*w;
        var dws = dw.toString()
        for (j = 0; j < dws.length; j++) {
            total += parseInt(dws.charAt(j));
        }
    }
    if ((total % 10) > 0) {
        alert("統一編號檢核：檢查碼錯誤!!");
        return false;
    }
    alert("統一編號檢核通過!!!!");
    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) {
        alert("電子信箱錯誤：缺少`@`字元!!");
        return false;
    }
    if (EMAIL.indexOf(".") < 0) {
        alert("電子信箱錯誤：缺少`.`字元!!");
        return false;
    }
    if (EMAIL.indexOf("@") > EMAIL.indexOf(".")) {
        alert("電子信箱錯誤：`@`字元的位置需比`.`字元的位置前面!!");
        return false;
    }
    if (EMAIL.charAt(EMAIL.length-1) == "@") {
        alert("電子信箱錯誤：`@`字元不能置於最後面!!");
        return false;
    }
    if (EMAIL.charAt(EMAIL.length-1) == ".") {
        alert("電子信箱錯誤：`.`字元不能置於最後面!!");
        return false;
    }
    if (EMAIL.charAt(0) == "@") {
        alert("電子信箱錯誤：缺少帳號!!");
        return false;
    }
    if (EMAIL.charAt(0) == ".") {
        alert("電子信箱錯誤：`.`字元不能置於最前面!!");
        return false;
    }
    return true;
}

/**
 * Check if the date is valid.
 * 檢核日期字串是否符合日期格式"2004/09/03".
 * @param DATE A date string.
 * @return true if is valid, false if is invalid.
 */
function validDate(DATE) {
    /* 長度不對 */
    if (DATE.length != 10) {
        return false;
    }
    var ymd = DATE.split("/");
    /* 年月日不完整 */
    if (ymd.length != 3) {
        return false;
    }
    /* 月份超出範圍 */
    if (ymd[1] < 1 || ymd[1] > 12) {
        return false;
    }
    /* 日數超出範圍 */
    if (ymd[2] < 1 || ymd[2] > 31) {
        return false;
    }
    var day = new Date(ymd[0], ymd[1]-1, ymd[2]);
    /* 為了二月份的不同日數 */
    if (day.getDate() != ymd[2]) {
        return false;
    }
    return true;
}
//-->