
var ALP_STR = "ABCDEFGHJKLMNPQRSTUVXYWZIO";
var NUM_STR = "0123456789";
var SEX_STR = "12";
var MAX_COUNT = 999;

// ------------------------------------------------------------
// �h�r��e��ť�
function trim(str) {
	while (str.indexOf(" ")==0) {
		str = str.substring(1, str.length);
	}
	while ((str.length>0) && (str.indexOf(" ")==(str.length-1))) {
		str = str.substring(0, str.length-1);
	}
	return str;
}

// ------------------------------------------------------------
// �ɫe�m�s
function getZero(iLen, val) {
	var val = val + "";
	var rtn = "";
	for(var i=0; i<iLen; i++) {
		rtn += "0";
	}
	rtn += val;
	rtn = rtn.substring(val.length, rtn.length);
	return rtn;
}

// ------------------------------------------------------------
//�����Ҧr���ˬd�� - �֥[�ˬd�X
function getTWPIDSUM(sPID) {
	var iChkNum = 0;

	// �� 1 �X
	iChkNum = ALP_STR.indexOf(sPID.substr(0,1)) + 10;
	iChkNum = Math.floor(iChkNum/10) + (iChkNum%10*9);

	// �� 2 - 9 �X
	for(var i=1; i<sPID.length-1; i++) {
		iChkNum += sPID.substr(i,1) * (9-i);
	}

	// �� 10 �X
	iChkNum += sPID.substr(9,1)*1;

	return iChkNum;
}


function chkTWIDCHAR(sPID) {
	var result = true;
	var iPIDLen = String(sPID).length;
	
	var sChk = ALP_STR + NUM_STR;
	for(i=0;i<iPIDLen;i++) {
		if (sChk.indexOf(sPID.substr(i,1)) < 0) {
			result = false;
			break;
		}
	}

	if (result) {
		if (ALP_STR.indexOf(sPID.substr(0,1)) < 0) {
			result = false;
		} else if ((sPID.substr(1,1) != "1") && (sPID.substr(1,1) != "2")) {
			result = false;
		} else {
			for(var i=2; i<iPIDLen; i++) {
				if (NUM_STR.indexOf(sPID.substr(i, 1)) < 0) {
					result = false;
					break;
				}
			}
		}
	}

	return result;
}

function CheckTWPID(sPID) {
	var result = true;

	if (sPID == '') {
		result = false;
	} else if (sPID.length != 10) {
		result = false;
	} else {
		sPID = trim(sPID.toUpperCase());
		if (!chkTWIDCHAR(sPID)){ 
		  result = false;
		}

		var iChkNum = getTWPIDSUM(sPID);

		if (iChkNum % 10 != 0) {
			var iLastNum = sPID.substr(9, 1) * 1;
			for (i=0; i<10; i++) {
				var xRightAlpNum = iChkNum - iLastNum + i;
				if ((xRightAlpNum % 10) ==0) {
					result = false;
					break;
				}
			}
		}
	}
	return result;
}
