function chkIDNo(str)	//身分證號
{
	var str1 = new Array(10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33);
	if(str.length==10 && str!="a123456789")
	{
		var temp1 =0;
		str = str.toUpperCase(str);
		temp = str.charCodeAt(0)-65;
		if(temp<0 || temp >25) return false;
		temp = str1[temp];
		temp = Math.floor(temp/10) + (temp%10)*9;
		for(var i=1;i<=9;i++) 
			temp1 += (9-i)?str.charAt(i)*(9-i):parseInt(str.charAt(i));
		if((temp+temp1) % 10) return false;
		else return true;
	}
	else return false;
}

function chkEMail(email)	//E-mail
{
	reg = /^[_.0-9A-Za-z-]+@([A-Za-z][0-9A-Za-z-]+.)+[A-Za-z]{2,3}$/;

	if (''!=email && !email.match(reg))	return false;

	return true;
}

function chkRatio(str)	//Ratio
{
	reg = /^[0-9]:[0-9]$/;

	if (''!=str && !str.match(reg))	return false;

	return true;
}

function chkTEL(tel1, tel2)	//區域號碼,電話號碼
{
	//僅限台灣區使用
	reg1 = /^0[0-9]{1,2}$/;	//區碼
	reg2 = /^[0-9]{6,8}( {0,1}#[0-9]{1,5}){0,1}$/;	//電話
	reg3 = /^09[0-9]{8}$/;	//手機

	if (!tel1.match(reg1))	return false;
	//if (''!=tel2 && !tel2.match(reg2) && !tel2.match(reg3))	return false;
	if (''!=tel2 && !tel2.match(reg2))	return false;

	return true;
}

function chkCreditNo(ccno)	//信用卡號 (格式: xxxx-xxxx-xxxx-xxxx)
{
	re = /^\d{4}-\d{4}-\d{4}-\d{4}$/;
}

function chkEngName(enname)	//英文名 (格式：First Last 或 First Middle Last)
{
	re1 = /^[A-Za-z\-]+\s+[A-Za-z\-]+$/;
	re2 = /^[A-Za-z\-]+\s+[A-Za-z\-]+\s+[A-Za-z\-]+$/;
	if (!re1.test(enname) && !re2.test(enname))	return false;

	return true;
}

function checkid()
{
   document.form1.userid.value=document.form1.userid.value.toUpperCase()
   id_load=''+document.form1.userid.value.toUpperCase()
   // check lenght
   if(id_load.length !=10)
    { alert("[身分証號碼]錯誤\r\n字數不足!"); return false;}

   // check first char
   id_input=new Array(10)
   for(i=0;i<10;i++)
    { id_input[i]=id_load.charAt(i)}
   engstring="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   id_input[0]=engstring.indexOf(id_input[0])
   if(id_input[0] == -1)
    { alert("[身分証號碼]錯誤\r\n開頭字母錯誤!"); return false; }
   // now: id_input[0] = 0~25;
   // check gender
   if(id_input[1] != 1 && id_input[1] != 2)
    { alert("[身分証號碼]錯誤\r\n無法辨識性別!"); return false; }
   if(id_input[1] == 1) {
   	sexchk=1;
   }
   if(id_input[1] == 2) {
   	sexchk=2;
   }
   // check number
    numstring="0123456789"
    numarray=new Array(26)
    numarray[0]  =1 ;  numarray[1] =10 ; numarray[2] =19;
    numarray[3]  =28;  numarray[4] =37 ; numarray[5] =46;
    numarray[6]  =55;  numarray[7] =64 ; numarray[8] =39;
    numarray[9]  =73;  numarray[10]=82 ; numarray[11]=2 ;
    numarray[12] =11;  numarray[13]=20 ; numarray[14]=48;
    numarray[15] =29;  numarray[16]=38 ; numarray[17]=47;
    numarray[18] =56;  numarray[19]=65 ; numarray[20]=74;
    numarray[21] =83;  numarray[22]=21 ; numarray[23]=3 ;
    numarray[24] =12;  numarray[25]=30 ;

    result=numarray[id_input[0]]

   for(i=1;i<10;i++)
    { id_input[i]=numstring.indexOf(id_input[i])
      if(id_input[i] == -1)
       {alert("[身分証號碼]錯誤\r\n除了第一個字外其餘應為數字!"); return false;
       }
      else
       { result=result+id_input[i]*(9-i)
         // lose id_input[9]
       }
    }
   result=result+id_input[9]*1
   if( (result % 10) !=0)
    { alert("[身分証號碼]錯誤\r\n檢查錯誤!"); return false; }

   return(true)
}

function isNumber(str)
{
   var chk_result = true;
   for(var i=0 ; i<str.length ; i++) {
      if(str.charAt(i)<"0" || str.charAt(i)>"9")
     	chk_result = false;
   }
   return chk_result;
}

function IsValidName(namestr) {
	for (var i = 0; i < namestr.length; i++) {
  		if (namestr.charCodeAt(i) > 0 && namestr.charCodeAt(i) < 126) {
			return false;
  		}
	}
	return true;
}

function IsValidEmail(email)
{
	re = new RegExp("^.+@.+\\..+$","i");  //Create regular expression object.
	r = email.match(re);    
	if(r==null)	  
	{
	  return false;
	}
      return true;
}

function IsValidDate(psYear, psMonth, psDay)
{
    if(psYear==null || psMonth==null || psDay==null)
    {
        return false;
    }
    var sYear  = new String(psYear);
    var sMonth = new String(psMonth);
    var sDay   = new String(psDay);
    if(IsValidYear(sYear)==false)
    {
        return false;
    }
    if(IsValidMonth(sMonth)==false)
    {
        return false;
    }
    if(IsValidDay(sDay)==false)
    {
        return false;
    }
    var nYear  = parseInt(sYear,  10);
    var nMonth = parseInt(sMonth, 10);
    var nDay   = parseInt(sDay,   10);
    if(sYear=="" &&  sMonth=="" && sDay=="")
    {
        return true;
    }
    if(sYear=="" || sMonth=="" || sDay=="")
    {
        return false;
    }   
    if(nMonth < 1 || 12 < nMonth)
    {
        return false;
    }
    if(nDay < 1 || 31 < nDay)
    {
        return false;
    }
    if(nMonth == 2)
    {
        if((nYear % 400 == 0) || (nYear % 4 == 0) && (nYear % 100 != 0))
        {
            if((nDay < 1) || (nDay > 29))
            {
                return false;
            }
        }
        else
        {
            if((nDay < 1) || (nDay > 28))
            {
                return false;
            }
        }
    }
    else if((nMonth == 1)  ||
            (nMonth == 3)  ||
            (nMonth == 5)  ||
            (nMonth == 7)  ||
            (nMonth == 8)  ||
            (nMonth == 10) ||
            (nMonth == 12))
    {
        if((nDay < 1) || (31 < nDay))
        {
            return false;
        }
    }
    else
    {
        if((nDay < 1) || (30 < nDay))
        {
            return false;
        }
    }
    return true;
}

function IsValidYear(psYear)
{
    var sYear = new String(psYear);

    if(psYear==null)
    {
        return false;
    }

    if(isNaN(psYear)==true)
    {
        return false;
    }

    if(sYear == "")
    {
        return true;
    }

    if(sYear.match(/[^0-9]/g)!=null)
    {
        return false;
    }

    var nYear = parseInt(sYear, 10);

    if((nYear < 0) || (9999 < nYear))
    {
        return false;
    }

    return true;
}

function IsValidMonth(psMonth)
{
    var sMonth = new String(psMonth);

    if(psMonth==null)
    {
        return false;
    }

    if(isNaN(psMonth)==true)
    {
        return false;
    }

    if(sMonth == "")
    {
        return true;
    }

    if(sMonth.match(/[^0-9]/g)!=null)
    {
        return false;
    }

    var nMonth = parseInt(sMonth,10);

    if((nMonth < 0) || (12 < nMonth))
    {
        return false;
    }

    return true;
}

function IsValidDay(psDay)
{
    var sDay  = new String(psDay);

    if(psDay==null)
    {
        return false;
    }

    if(isNaN(psDay)==true)
    {
        return false;
    }

    if(sDay == "")
    {
        return true;
    }

    if(sDay.match(/[^0-9]/g)!=null)
    {
        return false;
    }

    var nDay = parseInt(psDay, 10);

    if((nDay < 0) || (31 < nDay))
    {
        return false;
    }

    return true;
}

//esolution check nid
function check_tw_id(sId){
	var LegalID = "0123456789"
	var fResult=true;
	if(sId.length<10){
		fResult=false;
	}else {
   		// alert("sId.charAt(1):"+sId.charAt(1) );
   		//If第二個字元不為數字
    		if (!isNaN(sId.charAt(1))){
    			
      			if((sId.charAt(0)=='A') || (sId.charAt(0)=='a')) value=10
      			else if((sId.charAt(0)=='B') || (sId.charAt(0)=='b')) value=11
      			else if((sId.charAt(0)=='C') || (sId.charAt(0)=='c')) value=12
      			else if((sId.charAt(0)=='D') || (sId.charAt(0)=='d')) value=13
      			else if((sId.charAt(0)=='E') || (sId.charAt(0)=='e')) value=14
      			else if((sId.charAt(0)=='F') || (sId.charAt(0)=='f')) value=15
      			else if((sId.charAt(0)=='G') || (sId.charAt(0)=='g')) value=16
      			else if((sId.charAt(0)=='H') || (sId.charAt(0)=='h')) value=17
            		else if((sId.charAt(0)=='J') || (sId.charAt(0)=='j')) value=18
            		else if((sId.charAt(0)=='K') || (sId.charAt(0)=='k')) value=19
            		else if((sId.charAt(0)=='L') || (sId.charAt(0)=='l')) value=20
            		else if((sId.charAt(0)=='M') || (sId.charAt(0)=='m')) value=21
            		else if((sId.charAt(0)=='N') || (sId.charAt(0)=='n')) value=22
            		else if((sId.charAt(0)=='P') || (sId.charAt(0)=='p')) value=23
            		else if((sId.charAt(0)=='Q') || (sId.charAt(0)=='q')) value=24
            		else if((sId.charAt(0)=='R') || (sId.charAt(0)=='r')) value=25
            		else if((sId.charAt(0)=='S') || (sId.charAt(0)=='s')) value=26
           		else if((sId.charAt(0)=='T') || (sId.charAt(0)=='t')) value=27
            		else if((sId.charAt(0)=='U') || (sId.charAt(0)=='u')) value=28
            		else if((sId.charAt(0)=='V') || (sId.charAt(0)=='v')) value=29
            		else if((sId.charAt(0)=='X') || (sId.charAt(0)=='x')) value=30
            		else if((sId.charAt(0)=='Y') || (sId.charAt(0)=='y')) value=31
            		else if((sId.charAt(0)=='W') || (sId.charAt(0)=='w')) value=32
            		else if((sId.charAt(0)=='Z') || (sId.charAt(0)=='z')) value=33
            		else if((sId.charAt(0)=='I') || (sId.charAt(0)=='i')) value=34
            		else if((sId.charAt(0)=='O') || (sId.charAt(0)=='o')) value=35
            		else {
            			//fResult = false ;
            			//舊居留證
            			if(isNaN(sId.charAt(8))&&isNaN(sId.charAt(9))){
            				return true;
            			}else{	
            				return false;
            			}
            		}
      			value = Math.floor(value/10) + (value%10)*9 + parseInt(sId.charAt(1))*8 +
      			parseInt(sId.charAt(2))*7 + parseInt(sId.charAt(3)) * 6 + parseInt(sId.charAt(4)) * 5 +
      			parseInt(sId.charAt(5))*4 + parseInt(sId.charAt(6)) * 3+ parseInt(sId.charAt(7)) * 2+
      			parseInt(sId.charAt(8)) + parseInt(sId.charAt(9)) ;
      			//alert("value 1 :"+value);
    		}
    		
    		//外籍居留證檢核
    		if(isNaN(sId.charAt(1))){
    			//alert("B");
       			if((sId.charAt(0)=="A") || (sId.charAt(0)=="a")) value=10
                  	else if((sId.charAt(0)=="B") || (sId.charAt(0)=="b")) value=11
            		else if((sId.charAt(0)=="C") || (sId.charAt(0)=="c")) value=12
            		else if((sId.charAt(0)=="D") || (sId.charAt(0)=="d")) value=13
            		else if((sId.charAt(0)=="E") || (sId.charAt(0)=="e")) value=14
            		else if((sId.charAt(0)=="F") || (sId.charAt(0)=="f")) value=15
            		else if((sId.charAt(0)=="G") || (sId.charAt(0)=="g")) value=16
           		else if((sId.charAt(0)=="H") || (sId.charAt(0)=="h")) value=17
            		else if((sId.charAt(0)=="J") || (sId.charAt(0)=="j")) value=18
            		else if((sId.charAt(0)=="K") || (sId.charAt(0)=="k")) value=19
            		else if((sId.charAt(0)=="L") || (sId.charAt(0)=="l")) value=20
            		else if((sId.charAt(0)=="M") || (sId.charAt(0)=="m")) value=21
            		else if((sId.charAt(0)=="N") || (sId.charAt(0)=="n")) value=22
            		else if((sId.charAt(0)=="P") || (sId.charAt(0)=="p")) value=23
            		else if((sId.charAt(0)=="Q") || (sId.charAt(0)=="q")) value=24
            		else if((sId.charAt(0)=="R") || (sId.charAt(0)=="r")) value=25
            		else if((sId.charAt(0)=="S") || (sId.charAt(0)=="s")) value=26
            		else if((sId.charAt(0)=="T") || (sId.charAt(0)=="t")) value=27
            		else if((sId.charAt(0)=="U") || (sId.charAt(0)=="u")) value=28
            		else if((sId.charAt(0)=="V") || (sId.charAt(0)=="v")) value=29
            		else if((sId.charAt(0)=="X") || (sId.charAt(0)=="x")) value=30
            		else if((sId.charAt(0)=="Y") || (sId.charAt(0)=="y")) value=31
            		else if((sId.charAt(0)=="W") || (sId.charAt(0)=="w")) value=32
            		else if((sId.charAt(0)=="Z") || (sId.charAt(0)=="z")) value=33
            		else if((sId.charAt(0)=="I") || (sId.charAt(0)=="i")) value=34
            		else if((sId.charAt(0)=="O") || (sId.charAt(0)=="o")) value=35
            		else fResult = false ;
 
   			if((sId.charAt(1)=="A") || (sId.charAt(1)=="a")) value1=10
            		else if((sId.charAt(1)=="B") || (sId.charAt(1)=="b")) value1=11
            		else if((sId.charAt(1)=="C") || (sId.charAt(1)=="c")) value1=12
            		else if((sId.charAt(1)=="D") || (sId.charAt(1)=="d")) value1=13
            		else if((sId.charAt(1)=="E") || (sId.charAt(1)=="e")) value1=14
            		else if((sId.charAt(1)=="F") || (sId.charAt(1)=="f")) value1=15
            		else if((sId.charAt(1)=="G") || (sId.charAt(1)=="g")) value1=16
            		else if((sId.charAt(1)=="H") || (sId.charAt(1)=="h")) value1=17
            		else if((sId.charAt(1)=="J") || (sId.charAt(1)=="j")) value1=18
            		else if((sId.charAt(1)=="K") || (sId.charAt(1)=="k")) value1=19
            		else if((sId.charAt(1)=="L") || (sId.charAt(1)=="l")) value1=20
            		else if((sId.charAt(1)=="M") || (sId.charAt(1)=="m")) value1=21
            		else if((sId.charAt(1)=="N") || (sId.charAt(1)=="n")) value1=22
            		else if((sId.charAt(1)=="P") || (sId.charAt(1)=="p")) value1=23
            		else if((sId.charAt(1)=="Q") || (sId.charAt(1)=="q")) value1=24
            		else if((sId.charAt(1)=="R") || (sId.charAt(1)=="r")) value1=25
            		else if((sId.charAt(1)=="S") || (sId.charAt(1)=="s")) value1=26
            		else if((sId.charAt(1)=="T") || (sId.charAt(1)=="t")) value1=27
            		else if((sId.charAt(1)=="U") || (sId.charAt(1)=="u")) value1=28
            		else if((sId.charAt(1)=="V") || (sId.charAt(1)=="v")) value1=29
            		else if((sId.charAt(1)=="X") || (sId.charAt(1)=="x")) value1=30
            		else if((sId.charAt(1)=="Y") || (sId.charAt(1)=="y")) value1=31
            		else if((sId.charAt(1)=="W") || (sId.charAt(1)=="w")) value1=32
            		else if((sId.charAt(1)=="Z") || (sId.charAt(1)=="z")) value1=33
            		else if((sId.charAt(1)=="I") || (sId.charAt(1)=="i")) value1=34
            		else if((sId.charAt(1)=="O") || (sId.charAt(1)=="o")) value1=35
            		else fResult = false ;
 
            		value = Math.floor(value/10) + (value%10)*9 +  (value1%10)*8 +
            		parseInt(sId.charAt(2))*7 + parseInt(sId.charAt(3)) * 6 + parseInt(sId.charAt(4)) * 5 +
            		parseInt(sId.charAt(5))*4 + parseInt(sId.charAt(6)) * 3+ parseInt(sId.charAt(7)) * 2+
            		parseInt(sId.charAt(8)) + parseInt(sId.charAt(9)) ;
      			//alert("value 2 :"+value);
      			
    		}
    		
		if(fResult==true){
			//alert("value 3 :"+value );
			value = value % 10
    			if(value!=0) fResult = false ;
    				var i;
    				var c;
    				for (i = 2; i < sId.length; i++){
      				//alert("i:"+sId.charAt(i));
      				c = sId.charAt(i);
       				//alert("C:"+LegalID.indexOf(c));
     				if (LegalID.indexOf(c) == -1) fResult = false;
    				}
  			}
		}
		if(fResult == false){
			//驗證失敗
			return false;
		}else{
			//驗證ok
    			return true;
  		}
	}

	function innerContent(obj, status) {
		//obj.nextSibling.style.display=(obj.nextSibling.style.display=='none'?'':'none')
		obj.nextSibling.style.display=status;
	}

