//嚚
var space = new RegExp(/\s/);
function toShowMessage(obj, msg)//錯誤訊息回報
{
	if (msg != null && msg != "") alert(msg);
	try { obj.focus(); }
	catch (err)	{}
}

var eMailReg = new RegExp(/^.+@.+\..+$/);//E-Mail 格式
function IsMailFormat(email)//E-Mail,字串參數
{
	var result = true;
	result &= !space.test(email);
	result &= eMailReg.test(email);
	return result;
}
function IsEMail(obj, msg)//E-Mail，input物件參數
{
	var result = IsMailFormat(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_receiptNum = new RegExp(/[0-9]{8}/);//統一編號
function IsReceiptNum(obj, msg)//統一編號格式
{
	var result = true;
	result &= !isNaN(obj.value);
	result &= Reg_receiptNum.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_tel_1 = new RegExp(/^[0][1-9]{1,3}\-[0-9]{5,8}/);//電話號碼
var Reg_tel_2 = new RegExp(/[0-9]{7,12}/);//電話號碼
function IsTelphoneNum(obj, msg)
{
	var result = false;
	result |= Reg_tel_1.test(obj.value);
	result |= Reg_tel_2.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_telex = new RegExp(/[0-9]{1,6}/);//電話號碼分機
function IsTelphoneExNum(obj, msg)
{
	var result = true;
	result &= !isNaN(obj.value);
	result &= Reg_telex.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_cellphone = new RegExp(/^[0][9][0-9]{8}/);//手機號碼
function IsCellphoneNum(obj, msg)
{
	var result = true;
	result &= !isNaN(obj.value);
	result &= Reg_cellphone.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_zip = new RegExp(/[1-9][0-9]{2,4}/);//郵遞區號
function IsZipCode(obj, msg)
{
	var result = true;
	result &= !isNaN(obj.value);
	result &= Reg_zip.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

var Reg_chkCode = new RegExp(/[0-9]{4}/);//驗證碼
function IsCheckCode(obj, msg)
{
	var result = true;
	result &= !isNaN(obj.value);
	result &= Reg_chkCode.test(obj.value);
	if (!result) toShowMessage(obj, msg);
	return result;
}

function IsNum(obj, msg)//數字
{
	var result = true;
	result &= Number(obj.value).toString() == obj.value;
	if (!result) toShowMessage(obj, msg);
	return result;
}

function IsInteger(obj, msg)//整數 含正、負
{
	var result = true;
	result &= parseInt(obj.value).toString() == obj.value;//整數
	if (!result) toShowMessage(obj, msg);
	return result;
}

function IsNaturalNum(obj, msg)//自然數、正整數
{
	var result = true;
	result &= parseInt(obj.value).toString() == obj.value;//整數
	if (result) result &= parseInt(obj.value) > 0;//大於 0 -> 正整數
	if (!result) toShowMessage(obj, msg);
	return result;
}

function IsLoginID(obj, msg)//帳號(申請、登入)
{
	var result = true;
	result &= !space.test(obj.value);
	if (result) result &= /^[a-zA-Z]/.test(obj.value);
	if (result) result &= obj.value.length >= 3;
	if (!result) toShowMessage(obj, msg);
	return result;
}
function IsLoginPw(obj, msg)//密碼(申請、登入)
{
	var result = true;
	result &= !space.test(obj.value);
	if (result) result &= obj.value.length >= 3;
	if (!result) toShowMessage(obj, msg);
	return result;
}
function IsStrDate(obj, msg)
{
	var sDate = obj.value.replace("-","/").replace(".","/");
	var aryDate = sDate.split("/");
	var dtDate = new Date(sDate);
	var result = !isNaN(dtDate);
	if (result) result &= Number(aryDate[0]) == dtDate.getFullYear();
	if (result) result &= Number(aryDate[1]) == dtDate.getMonth() + 1;
	if (result) result &= Number(aryDate[2]) == dtDate.getDate();
	if (!result) toShowMessage(obj, msg);
	return result;
}
function toCheckData(obj, msg)
{ 
	var ok = false;
	switch (obj.type)
	{
	case "text":
	case "textarea":
	case "password":
		ok = (obj.value != "");
		if (!ok)
		{	
			alert(msg);
			obj.focus();
		}
		break;
	case "select-one":
		ok = obj.options.length > 0;
		if (ok) ok &= obj.selectedIndex != -1;
		if (ok) ok &= obj.value != "";
		if (!ok)
		{
			alert(msg);
			obj.focus();
		}
		break;
	case "radio":
		break;
	case "checkbox":
		break;
	case "file":
		ok = (obj.value != "");
		if (!ok)
		{	
			alert(msg);
			obj.focus();
		}
		break;
	default:
		break;
	}
	return ok;
}
function IsCheckOneItem(obj, msg)
{
	var ok = false;
	alert(obj.length);
	for (var i = 0 ; i < obj.length ; i++)
		ok |= obj[i].checked;
	if (!ok) toShowMessage(obj, msg);
	return ok;
}
function chkTaiwanID(obj, msg)
{
	var result = true;
	result &= !space.test(obj.value);
	if (result) result &= /^[a-z](1|2)\d{8}$/i.test(obj.value);
	if (result) result &= obj.value.length >= 3;
	if (!result) toShowMessage(obj, msg);
	return result;
}
function IsTaiwanID(idStr){
  // 依照字母的編號排列，存入陣列備用。
  var letters = new Array('A', 'B', 'C', 'D',
      'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
      'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
      'X', 'Y', 'W', 'Z', 'I', 'O');
  // 儲存各個乘數
  var multiply = new Array(1, 9, 8, 7, 6, 5,
                           4, 3, 2, 1);
  var nums = new Array(2);
  var firstChar;
  var firstNum;
  var lastNum;
  var total = 0;
  // 撰寫「正規表達式」。第一個字為英文字母，
  // 第二個字為1或2，後面跟著8個數字，不分大小寫。
  var regExpID=/^[a-z](1|2)\d{8}$/i;
  // 使用「正規表達式」檢驗格式
  if (result) result &= /^[a-z](1|2)\d{8}$/i.test(obj.value);
  if (idStr.search(regExpID)==-1) {
    // 基本格式錯誤
	alert("請仔細填寫身份證號碼");
   return false;
  } else {
	// 取出第一個字元和最後一個數字。
	firstChar = idStr.charAt(0).toUpperCase();
	lastNum = idStr.charAt(9);
  }
  // 找出第一個字母對應的數字，並轉換成兩位數數字。
  for (var i=0; i<26; i++) {
	if (firstChar == letters[i]) {
	  firstNum = i + 10;
	  nums[0] = Math.floor(firstNum / 10);
	  nums[1] = firstNum - (nums[0] * 10);
	  break;
	}
  }
  // 執行加總計算
  for(var i=0; i<multiply.length; i++){
    if (i<2) {
      total += nums[i] * multiply[i];
    } else {
      total += parseInt(idStr.charAt(i-1)) *
               multiply[i];
    }
  }
  // 和最後一個數字比對
  if ((10 - (total % 10))!= lastNum) {
	alert("身份證號碼寫錯了！");
	return false;
  }
  return true;
}

