/** 
 * iMoveMember.js
 */

//**********************************************
// Enrol Validation
//**********************************************
EnrolValid = {
	reNonBlank: /[\S]/,
	reEMail: /^\w[\w\-\.]+\@\w[\w\-]+(\.\w[\w\-]+)+$/,
	reInt: /^\d+$/,
	reChar: /^[\*\-]+$/,

	goodEMail: function(field) {
	  return EnrolValid._checkIt(EnrolValid.reEMail, field);
	},

	_checkIt: function(re, field) {
	  if (re.test(field.value)) {
	    return true;
	  }

	  return false;
	},

	goodPasswords: function(field1, field2) {
	  var returnV = false;
	  if (EnrolValid.nonBlank(field1) && EnrolValid.nonBlank(field2)) {
	    if (field1.value == field2.value && field1.value.length > 5) {
	      returnV = true;
	    }
	  }
  
	  return returnV;
	},

	nonBlank: function(field) {
	  var returnV = false;
	  if (field.type) {
	    if (/file|select|text|password/.test(field.type)) {
	      return EnrolValid._checkIt(EnrolValid.reNonBlank, field);
	    } else if (/hidden/.test(field.type)){
	      if(field.value.length == 0 || field.value == null){
  	        return false;
    	  } else {
      		returnV = true;
	      }
  	  } else if (/radio|checkbox/.test(field.type)) {
    	  if (field.checked) {
      	  returnV = true;
	      }
  	  }
	  } else if (field.length && field[0].type && /radio|checkbox/.test(field[0].type)) {
  	  for (var i = 0; i < field.length; i++) {
    	  if (field[i].checked)
      	  returnV = true; 
	    }
  	}
  
	  return returnV;
	},


	//=============================================
	//function chkNationalID(str)
	//desc:		檢查身份證及統一編號
	//input:	str	身份證或統一編號字串欄位
	//=============================================
	chkNationalID: function(str, alertStr){
  	
  	var UserID = str.value;
		var IDlen = UserID.length;
		var ckFlag;
		if (IDlen!=8 && IDlen!=10)
			ckFlag = false;
		
		if (IDlen==8)
			ckFlag = EnrolValid.checkTaxID(UserID);
	
		if (IDlen==10)
			ckFlag = EnrolValid.chkPersonalID(UserID);
		
	  if(!ckFlag){
	    //alert(alertStr);
	    str.value = '';
	    //str.focus();
	    return false;
	  }else {
	  	return true;
	  }
	  
	},


  //=============================================
  //function checkTaxID(str)
  //desc:		檢查統一編號
  //input:	str	統一編號字串
  //output:	boolean
  //=============================================
  checkTaxID: function(str){
		if (str.length!=8)
		  return false;
	
		var li_v1, li_v2, li_v3, li_v4, li_v5, li_v6, li_v7, li_v8;
		var ls_v1, ls_v2, ls_v3, ls_v4, ls_v5, ls_v6, ls_v7, ls_v8;
		var lb_ret1,lb_ret2, lb_retval;
		//乘上權數 
		ls_v1=EnrolValid.fillzero(parseInt(str.substring(0,1))*1,2);
		ls_v2=EnrolValid.fillzero(parseInt(str.substring(1,2))*2,2);
		ls_v3=EnrolValid.fillzero(parseInt(str.substring(2,3))*1,2);
		ls_v4=EnrolValid.fillzero(parseInt(str.substring(3,4))*2,2);
		ls_v5=EnrolValid.fillzero(parseInt(str.substring(4,5))*1,2);
		ls_v6=EnrolValid.fillzero(parseInt(str.substring(5,6))*2,2);
		ls_v7=EnrolValid.fillzero(parseInt(str.substring(6,7))*4,2);
		ls_v8=EnrolValid.fillzero(parseInt(str.substring(7,8))*1,2);
	
		//計算乘積和
		li_v1=parseInt(ls_v1.substring(0,1))+parseInt(ls_v1.substring(1,2));
		li_v2=parseInt(ls_v2.substring(0,1))+parseInt(ls_v2.substring(1,2));
		li_v3=parseInt(ls_v3.substring(0,1))+parseInt(ls_v3.substring(1,2));
		li_v4=parseInt(ls_v4.substring(0,1))+parseInt(ls_v4.substring(1,2));
		li_v5=parseInt(ls_v5.substring(0,1))+parseInt(ls_v5.substring(1,2));
		li_v6=parseInt(ls_v6.substring(0,1))+parseInt(ls_v6.substring(1,2));
		li_v7=parseInt(ls_v7.substring(0,1))+parseInt(ls_v7.substring(1,2));
		li_v8=parseInt(ls_v8.substring(0,1))+parseInt(ls_v8.substring(1,2));

		if (((li_v1+li_v2+li_v3+li_v4+li_v5+li_v6+li_v7+li_v8 )%10)==0) 
			lb_ret1=true;
		else
			lb_ret1=false; 
	
		if (li_v7==10) {
			if (((li_v1+li_v2+li_v3+li_v4+li_v5+li_v6+ 1 +li_v8)%10)==0) 
				lb_ret2=true;
			else
				lb_ret2=false;
		}	else {
			lb_ret2=false;
		}
		lb_retval = (lb_ret1 || lb_ret2);
	
		return lb_retval;
	},

  fillzero: function(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;
  },

	//=============================================
	//function chkPersonalID(str)
	//desc:		檢查身份証字號
	//input:	str	身份証字串
	//output:	boolean
	//=============================================
	chkPersonalID: function(str){
		var UserID=str;
		var code = str.charCodeAt(0);	
		
		if (UserID.length!=10)
		  return false;
	  	if ( !((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) ) 
		  return false;
		
		var Weight = new Array(10);  //定義加權值
		var Location = new Array(24);  //區域值轉換表
		var CheckNum, Temp, CheckSum, Flag;
		var i, j;
		var Sex, Place, HTMLcode, UserID2;
	
		Flag = false;
		CheckSum=0;
		UserID2 = UserID;
	
		//設定加權值初值
		Weight[0] = 1;
		for (i=1; i<10; i++)
			Weight[i] = 10 - i;
		
		//定義區域表的轉換值，沒有I,O
		Location[0] = new Array("A", "台北市", "10");
		Location[1] = new Array("B", "台中市", "11");
		Location[2] = new Array("C", "基隆市", "12");
		Location[3] = new Array("D", "台南市", "13");
		Location[4] = new Array("E", "高雄市", "14");
		Location[5] = new Array("F", "台北縣", "15");
		Location[6] = new Array("G", "宜蘭縣", "16");
		Location[7] = new Array("H", "桃園縣", "17");
		Location[8] = new Array("J", "新竹縣", "18");
		Location[9] = new Array("K", "苗栗縣", "19");
		Location[10] = new Array("L", "台中縣", "20");
		Location[11] = new Array("M", "南投縣", "21");
		Location[12] = new Array("N", "彰化縣", "22");
		Location[13] = new Array("P", "雲林縣", "23");
		Location[14] = new Array("Q", "嘉義縣", "24");
		Location[15] = new Array("R", "台南縣", "25");
		Location[16] = new Array("S", "高雄縣", "26");
		Location[17] = new Array("T", "屏東縣", "27");
		Location[18] = new Array("U", "花蓮縣", "28");
		Location[19] = new Array("V", "台東縣", "29");
		Location[20] = new Array("W", "金門縣", "32");
		Location[21] = new Array("X", "澎湖縣", "30");
		Location[22] = new Array("Y", "陽明山", "31");
		Location[23] = new Array("Z", "馬祖", "33");
		
		Temp = UserID.substring(1,2);
		Sex = (Temp == "1") ? "男生" : "女生";
		Temp = UserID.substring(0,1);  //取得英文字母與檢查碼
		Temp = Temp.toUpperCase();
		CheckNum = parseInt(UserID.substring(UserID.length-1, UserID.length));
		for(i=0; i<24; i++){
			if (Temp == Location[i][0]){
				//轉換成完整數字串列
				UserID = Location[i][2] + UserID.substring(1,UserID.length);
				Place = Location[i][1];  //取得出生地
				id_num = parseInt(UserID.substring(0,1))     +
	               parseInt(UserID.substring(1,2)) * 9 +
	               parseInt(UserID.substring(2,3)) * 8 +
  	             parseInt(UserID.substring(3,4)) * 7 +            
    	           parseInt(UserID.substring(4,5)) * 6 +
	    	         parseInt(UserID.substring(5,6)) * 5 +             
	      	       parseInt(UserID.substring(6,7)) * 4 +
	        	     parseInt(UserID.substring(7,8)) * 3 +             
	          	   parseInt(UserID.substring(8,9)) * 2 +             
	            	 parseInt(UserID.substring(9,10))    +
		             parseInt(UserID.substring(10,11));        
	  
				if ((id_num % 10) == 0){
					
					// 是身份証字號
					Flag = true;
				}
			}//if (Temp == Location[i][0])
	  }//for
	  
		return Flag; 
	},
	
  //=============================================
  //function checkDate(dateStr)
  //desc:		判斷西元日期是否合法
  //input:	dateStr  西元日期字串
  //output:	boolean
  //=============================================
  checkDate: function(dateStr, fmt){
 		if (dateStr.length < 8)
 			return false;
  
    if (fmt==null)
      fmt="yyyy/MM/dd";
  
    var yIndex = fmt.indexOf("yyyy");
    if(yIndex == -1)
      return false;
    var year = dateStr.substring(yIndex, yIndex + 4) * 1;
      
    var mIndex = fmt.indexOf("MM");
    if(mIndex == -1)
      return false;
    var month = dateStr.substring(mIndex, mIndex + 2) * 1;
      
    var dIndex = fmt.indexOf("dd");
    if(dIndex == -1)
      return false;
    var day = dateStr.substring(dIndex, dIndex+2) * 1;
  
    if(year > 2100 || year < 1900)
      return false;
		if (month < 1 || month > 12)
			return false;
		if (day < 1 || day > 31)
 			return false;
 		if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31)
 			return false
 		if (month == 2){
 			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap))
			return false;
 		}
 		return true;
  }
	
};


//**********************************************
// Functions to show / hide a div element
//**********************************************
var browserType;

if (document.layers) {browserType = "nn4"}
if (document.all) {browserType = "ie"}
if (window.navigator.userAgent.toLowerCase().match("gecko")) {
   browserType= "gecko"
}

