﻿// JScript 檔
function DateInput() {
    if (!((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 189 || event.keyCode == 109 || event.keyCode == 9))
        event.returnValue = false;
}

//只能輸入數字
function onlyNum() {
    if (!((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105) || event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || event.keyCode == 9))
        event.returnValue = false;
}

//Email 驗證
function ValidatorEmail(obj) {
    if (obj.value == '')
        return;

    var Result = new RegExp(/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/).test($get(obj.id).value);

    if (!Result) {
        alert("Email格式錯誤!!");
        //obj.select();
        obj.focus();
    }
}

//身分證號碼驗證
function ValidatorIdNumber(obj) {
    if (obj.value == "")
        return false;

    var pass = 0; /*為了通過後面的防呆所以...*/
    var num = new Array(11); /*用來存轉換碼加九個數字 */
    var sum = 0; /*計算經過公式後的加總*/
    input = obj.value; /*存文字框的內容*/
    var table = new Array(10, 11, 12, 13, 14, 15, 16, 17, 18, 34, 19, 20, 21, 22, 35, 23, 24, 25, 26, 27, 28, 29, 32, 30, 31, 33); /*轉換的對照表*/
    /*以下是防呆*/
    if (input.length != 10) {
        alert("身分證號碼長度不符!!");
        obj.focus();
        return false;
    }
    else if (input.charCodeAt(0) < "A".charCodeAt(0) || input.charCodeAt(0) > "Z".charCodeAt(0)) {
        alert("身分證號碼第一個字母要大寫英文!!");
        obj.focus();
        return false;
    } else if (input.charCodeAt(1) != "1".charCodeAt(0) && input.charCodeAt(1) != "2".charCodeAt(0)) {
        alert("身分證號碼第一個數字必須是1或2!!");
        obj.focus();
        return false;
    } else {
        for (p = 2; p < 10; p++) {
            if (input.charCodeAt(p) < "0".charCodeAt(0) || input.charCodeAt(p) > "9".charCodeAt(0)) {
                alert("身分證號碼後九碼要皆為數字!!");
                obj.focus();
                return false;
                //break;
            }
            else
                pass++;
        }
    }
    if (pass != 8)
        return false;
    /*以上是防呆*/
    num[1] = table[input.charCodeAt(0) - 65] % 10;
    num[0] = (table[input.charCodeAt(0) - 65] - num[1]) / 10;
    for (p = 1; p < 10; p++)
        num[p + 1] = input.charCodeAt(p) - 48;
    for (p = 1; p < 9; p++)
        num[p] = num[p] * (10 - p); /*套用公式*/
    for (p = 0; p < 11; p++)
        sum += num[p];
    if (sum % 10 == 0) /*檢查*/
        return true; //alert("這個身分證是對的");
    else {
        alert("身分證號碼錯誤!!");
        obj.focus();
        return false;
    }
    return true;
}

//日期驗證
function ValidatorDate(obj) {
    if (obj.value == '')
        return;

    //yyyy-mm-dd
    var datePattern = /^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$/;

    //yyyy/MM/dd
    //var datePattern=/^\d{4}\/(0[1-9]|1[0-2])\/(3[0-1]|[0-2][0-9])$/;
    var dates = obj.value;

    if (dates.match(datePattern)) {
        if (checkDateExist(dates.substring(8, 10), dates.substring(5, 7), dates.substring(0, 4)) == true) {
            //alert("輸入日期正確！");
            //return true;
        }
        else {
            alert("輸入的日期不存在!!");
            obj.focus();
            obj.select();
        }
    }
    else {
        alert("日期格式錯誤或日期不正確。\n\n請依照下列格式輸入日期：\n[ yyyy-MM-dd ]");
        obj.focus();
        obj.select();
    }
}

function checkDateExist(day, month, year) {
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()) : year);
    month = ((!month) ? today.getMonth() : month - 1);

    if (!day) { return false; }
    var test = new Date(year, month, day);
    if ((y2k(test.getYear()) == year) && (month == test.getMonth()) && (day == test.getDate()))
    { return true; }
    else
    { return false; }
}

function y2k(number) {
    return (number < 1000) ? number + 1900 : number;
}

//變成錢的格式
function formatCurrency(num) {
    if (num == '')
        return num;

    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10)
        cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ',' +
    num.substring(num.length - (4 * i + 3));
    return (((sign) ? '' : '-') + num);
}

//統一編號驗證
function ValidateTaxID(Obj) {
    if (Obj.value == "")
        return;
    var i;
    var a1;
    var a2;
    var a3;
    var a4;
    var a5;

    var b1;
    var b2;
    var b3;
    var b4;
    var b5;

    var c1;
    var c2;
    var c3;
    var c4;

    var d1;
    var d2;
    var d3;
    var d4;
    var d5;
    var d6;
    var d7;
    var cd8;

    try {
        //判斷長度 
        if (Obj.value.length != 8) {
            alert('統一編號錯誤!!');
            Obj.focus();
            Obj.select();
            return false;
        }

        //設定變數 
        d1 = parseInt(Obj.value.substr(0, 1));
        d2 = parseInt(Obj.value.substr(1, 1));
        d3 = parseInt(Obj.value.substr(2, 1));
        d4 = parseInt(Obj.value.substr(3, 1));
        d5 = parseInt(Obj.value.substr(4, 1));
        d6 = parseInt(Obj.value.substr(5, 1));
        d7 = parseInt(Obj.value.substr(6, 1));
        cd8 = parseInt(Obj.value.substr(7, 1));

        c1 = d1;
        c2 = d3;
        c3 = d5;
        c4 = cd8;

        a1 = parseInt((d2 * 2) / 10);
        b1 = parseInt((d2 * 2) % 10);

        a2 = parseInt((d4 * 2) / 10);
        b2 = parseInt((d4 * 2) % 10);

        a3 = parseInt((d6 * 2) / 10);
        b3 = parseInt((d6 * 2) % 10);

        a4 = parseInt((d7 * 4) / 10);
        b4 = parseInt((d7 * 4) % 10);

        a5 = parseInt((a4 + b4) / 10);
        b5 = parseInt((a4 + b4) % 10);

        //計算公式 

        if ((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a4 + b4 + c4) % 10 == 0)
            return true;

        if (d7 == 7) {
            if ((a1 + b1 + c1 + a2 + b2 + c2 + a3 + b3 + c3 + a5 + c4) % 10 == 0)
                return true;
        }

        alert('統一編號錯誤!!');
        Obj.focus();
        Obj.select();
    } catch (err) {
        alert("Error name: " + err.name + "");
        alert("Error message: " + err.message);
    }
    finally {
        //alert("object is null");
    }
}

function checkRegAcc(pass) {

}
function CheckFiled(obj) {
    if (!Check_FiledValue(obj.value)) {
        alert('您所填寫的資料中包括 [ ' + unescape('%27') + ' ] 或 [ ' + unescape('%22') + ' ] 或 [ 空白字元 ] \n請更正此問題以免系統作業錯誤')
        obj.value = '';
        obj.focus();
        return false;
    }
    return true;
}
//判斷是否有不合法字元
function Check_FiledValue(p_id) {
    var score_i = 0, score_c = 0;
    var l_str = unescape('%27') + unescape('%22') + unescape('%2A');
    if ((p_id.charAt(0) == '') && (p_id.length > 0)) {
        return false;
    }
    for (var i = 0; i < p_id.length; i++) {
        if (l_str.indexOf(p_id.charAt(i), 0) >= 0) {
            score_c += 1;
        }
    }
    if (score_c == 0) {
        return true;
    } else {
        return false;
    }
}
//判斷帳號是否輸入正確
function CheckID(p_obj) {
    if (Check_NumValue(p_obj.value, unescape('%27') + unescape('%22'))) {
        if (p_obj.value != '') {
            alert('您所填寫的資料中包括 [ ' + unescape('%27') + ' ] 或 [ ' + unescape('%22') + ' ]\n請更正此問題以免系統作業錯誤')
            p_obj.value = '';
            p_obj.focus();
            return false;
        }
    }
    //	p_obj.value=p_obj.value.toLowerCase();
    if (!Check_IDValue(p_obj.value)) {
        alert('您所填寫的資料中包括 [空白字元或非英數字字元]\n請更正此問題以免系統作業錯誤')
        p_obj.value = '';
        p_obj.focus();
        return false;
    }
    return true;
}
//判斷是否為數值
function Check_NumValue(p_str, p_value) {
    var checkOK = p_value;
    var checkStr = p_str;
    var allValid = true;
    var decPoints = 0;
    for (i = 0; i < checkStr.length; i++) {
        ch = checkStr.charAt(i);
        for (j = 0; j < checkOK.length; j++) {
            if (ch == checkOK.charAt(j)) {
                break;
            }
        }
        if (j == checkOK.length) {
            allValid = false;
            break;
        }
    }
    if (!allValid) {
        return false;
    } else {
        return true;
    }
}
//判斷帳號是否有不合法字元
function Check_IDValue(p_id) {
    var score_i = 0, score_c = 0;
    var l_str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    for (var i = 0; i < p_id.length; i++) {
        if (l_str.indexOf(p_id.charAt(i), 0) >= 0) {
            score_c += 1;
        }
    }
    if (score_c == p_id.length) {
        return true;
    } else {
        return false;
    }
}
