function checkSID(value) {
    var id = value.toUpperCase();
    var tab = "ABCDEFGHJKLMNPQRSTUVWXYZIO";
    var A1 = new Array (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3);
    var A2 = new Array (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 0, 1, 3, 4, 5);
    var Mx = new Array (9, 8, 7, 6, 5, 4, 3, 2, 1, 1);
    if (!id.match(/^[a-z][12][\d]{8}$/i)) return false;
    i = tab.indexOf(id.charAt(0));
    if (i == -1) return false;
    sum = A1[i] + A2[i] * 9;
    for (i = 1; i < 10; i++) {
        v = parseInt(id.charAt(i));
        if (isNaN(v)) return false;
        sum = sum + v * Mx[i];
    }
    if (sum % 10 != 0) return false;
    return true;
}

function checkEmail(value) {
    if (value.match(/^[0-9a-z\._\-]{2,}@[0-9a-z_\-]{2,}\.[0-9a-z\._\-]{2,}$/i)) {
		return true;
    }
    return false;
}

//檢查居留證
function checkRecidence(value) {
    var id = value.toUpperCase();
    if (id.length != 10)
    {
        return false;
    }

    if (id.match(/^[a-z][a-d][\d]{8}$/i) == null)
    {
        return false;
    }

    var head="ABCDEFGHJKLMNPQRSTUVXYWZIO";
    id = (head.indexOf(id.substr(0,1))+10) +''+ ((head.indexOf(id.substr(1,1))+10)%10) +''+ id.substr(2,8)
    s =parseInt(id.substr(0,1)) +
    parseInt(id.substr(1,1)) * 9 +
    parseInt(id.substr(2,1)) * 8 +
    parseInt(id.substr(3,1)) * 7 +
    parseInt(id.substr(4,1)) * 6 +
    parseInt(id.substr(5,1)) * 5 +
    parseInt(id.substr(6,1)) * 4 +
    parseInt(id.substr(7,1)) * 3 +
    parseInt(id.substr(8,1)) * 2 +
    parseInt(id.substr(9,1)) +
    parseInt(id.substr(10,1));

    //判斷是否可整除
    if ((s % 10) != 0)
    {
        return false;
    }
    
    //居留證號碼正確
    return true;
}

/**
 * 檢查公司統一編號格式是否正確
 *
 * @param   string  公司統一編號
 * @return  TRUE: It's valid.
 *          FALSE: It's invalid.
 */
function checkCompID(compID)
{
    if (!compID.match(/^[0-9]{8}$/)) { return false; }
    if (compID.match(/^0{8}$/)) { return false; }

    var iX = new Array(0,0,0,0,0,0,0,0);
    var iY = new Array(0,0,0,0,0,0,0,0);
    var iSum, iMod;

    iX[0] = parseInt(compID.substr(0, 1)) * 1;
    iX[1] = parseInt(compID.substr(1, 1)) * 2;
    iX[2] = parseInt(compID.substr(2, 1)) * 1;
    iX[3] = parseInt(compID.substr(3, 1)) * 2;
    iX[4] = parseInt(compID.substr(4, 1)) * 1;
    iX[5] = parseInt(compID.substr(5, 1)) * 2;
    iX[6] = parseInt(compID.substr(6, 1)) * 4;
    iX[7] = parseInt(compID.substr(7, 1)) * 1;

    iY[0] = parseInt(iX[1] / 10);
    iY[1] = iX[1] % 10;
    iY[2] = parseInt(iX[3] / 10);
    iY[3] = iX[3] % 10;
    iY[4] = parseInt(iX[5] / 10);
    iY[5] = iX[5] % 10;
    iY[6] = parseInt(iX[6] / 10);
    iY[7] = iX[6] % 10;

    iSum = iX[0] + iX[2] + iX[4] + iX[7] + iY[0] + iY[1] + iY[2] + iY[3] + iY[4] + iY[5] + iY[6] + iY[7];
    iMod = iSum % 10;

    if (7 == parseInt(compID.substr(6, 1))) {
        if (0 == iMod) {
            return true;
        } else {
            iMod = (++iSum) % 10;
            return (0 == iMod) ? true : false;
        }
    } else {
        return (0 == iMod) ? true : false;
    }
}

//檢查日期是否大於今日
function biggerThanToday(dateY,dateM,dateD)
{
    //若為民國年
    if (parseInt(dateY) < 1911) {
        dateY = parseInt(dateY,10) + 1911;
    }
	if ((Date.parse(dateM+"/"+dateD+"/"+dateY)).valueOf() > (new Date()).valueOf()){
		return false;
	}
	return true;
}

//檢查出生年月日合法性
function validatorDate(birYear,birMonth,birDay)
{
	birYear  = parseInt(birYear,10);
	birMonth = parseInt(birMonth,10);
	birDay   = parseInt(birDay,10);

    //若為民國年
    if (birYear < 1911) {
        birYear = birYear + 1911;
    }

	var dateStr = birYear + '/' + birMonth + '/' + birDay;

	var accDate = new Date(dateStr);
    var tempDate = accDate.getFullYear() + "/";
    tempDate += (accDate.getMonth() + 1) + "/";
    tempDate += accDate.getDate();

    if (dateStr == tempDate) {
        return true;
    }

    return false;
}

//檢查出生年月日格式
function checkBirthday(birthday)
{
    var bir = birthday.val().trim();
    var birPattern = /(^\d{6,7}$)/;

    if ('' != bir)
    {
        if ('' == bir)
        {
            alert("【出生年月日】欄位為必填欄位！");
            return false;
        }
        if (!birPattern.test(bir))
        {
                alert("【出生年月日】格式不正確！");
                return false;
        }
        if (7 == bir.length)
        {
            var birYear  = bir.substr(0,3);
            var birMonth = bir.substr(3,2);
            var birDay   = bir.substr(5,2);
            if (birMonth > 12 || birMonth < 1 || birDay > 31 || birDay < 1)
            {
                alert("【出生年月日】格式不正確！");
                return false;
            }
			if(!validatorDate(birYear,birMonth,birDay)) {
                alert("【出生年月日】格式不正確！");
                return false;
			}
			if(!biggerThanToday(birYear,birMonth,birDay))
			{
                alert("【出生年月日】不得大於今日！");
                return false;
			}
        }
        if (6 == bir.length)
        {
            var birYear  = bir.substr(0,2);
            var birMonth = bir.substr(2,2);
            var birDay   = bir.substr(4,2);
            if (birMonth > 12 || birMonth < 1 || birDay > 31 || birDay < 1)
            {
                alert("【出生年月日】格式不正確！");
                return false;
            }
			if(!validatorDate(birYear,birMonth,birDay)) {
                alert("【出生年月日】格式不正確！");
                return false;
			}
			if(!biggerThanToday(birYear,birMonth,birDay))
			{
                alert("【出生年月日】不得大於今日！");
                return false;
			}
        }
    }
    return true;
}
