/*********************************************************************
•Library Description：
  1.FormName:欲檢查欄位之form名稱；objArr:欄位name;namArr:該欄位顯示之標題；
    typeArr:欲檢查的欄位型態
　2.typeArr代碼： 0表示為必填；1為數字；2為日期；3為英文；4為身份證；5為電子信箱。
　3.請用onclick觸發本function。
  4.IE&NetScape共用。

  使用說明:
  <Script LANGUAGE="JavaScript">
  <!--
  function ChkInput(FormName){
	var objArr = new Array('null_txt','num_txt','date_txt','eng_txt','idn_txt','mail_txt');
	var namArr = new Array('Null','Number','Date','English','Identifine','Email');
	var typeArr = new Array(0, 1, 2, 3, 4, 5);
	ChkForm(FormName, objArr, namArr, typeArr);
  }
  //-->
  </Script>
                           -- Code by Meeiyi Chou in 2003,February --
*********************************************************************/
function ChkForm(FormName, objArr, namArr, typeArr){
	var err_msg = '', str = '';
	var frm = eval("document." + FormName);
	for (var i=0; i< objArr.length; i++){
		var obj = eval("document." + FormName + "." + objArr[i] + ".value");
		if(eval("document." + FormName + "." + objArr[i]+ ".type") =='text'){
		  if(typeArr[i] == 0 && (obj.replace(/[\s　]+/g, "")==''))	//不為空值
			{err_msg += '欄位「' + namArr[i] + '」必須填寫。\n';}

		  if(typeArr[i]==1 && (isNaN(obj) || (obj.replace(/[\s　]+/g, "")=='')))	//數字
			{err_msg += '欄位「' + namArr[i] + '」必須要為數字。\n';}

		  if(typeArr[i]==2){	//日期〈傳回型態為yyyy/mm/dd〉
			var pattern, tmpary, year, month, day;
			pattern = /^\d{4}\/\d{1,2}\/\d{1,2}$/;
			tmpary  = new Array();
			tmpary = obj.split("/");
			year  = tmpary[0];
			month = tmpary[1];
			day = tmpary[2];

			if (!pattern.test(obj) ||	(month<1 || month>12 || day>31 || day<1))
				{str = '欄位「' + namArr[i] + '」不是正確的日期格式。\n';}
			if (month == 2 && day > 28) {	//閏年判斷
				if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
					{if (day > 29)	{str = '欄位「' + namArr[i] + '」不是正確的日期。\n';}}
				else
					{str = '欄位「' + namArr[i] + '」不是正確的日期。\n';}
			}
			if(day>30 && ((month % 2) == Math.floor(month/8)))	//大小月
				{str = '欄位「' + namArr[i] + '」不是正確的日期。\n';}
		  }

		  if(typeArr[i]==3){	//check English
			var eng = 0;
			for(j=0; j<obj.length; j++){
			  if( (obj.charAt(j)>='a' || obj.charAt(j)>='A'|| obj.charAt(j)==' ') && (obj.charAt(j)<='z' || obj.charAt(j)<='Z'|| obj.charAt(j)==' '))
					{eng += 1;}
			}
			if(eng != obj.length)
				{err_msg += '欄位「' + namArr[i] + '」需為英文字母。\n';}
		  }

		  if(typeArr[i]==4){	//check ID
			var isIDValid = true;
			var locNo = 0;
			var locCode = obj.charAt(0).toUpperCase();
			if(obj.length!=10)	{isIDValid = false;}
			if(isIDValid == true && (locCode>='A') && (locCode<='Z')){
				if( !(obj.charAt(1)== 1 || obj.charAt(1)== 2) ){
					isIDValid = false;
				}
				if( isIDValid == true && isNaN(obj.substr(2,9)) ){
					isIDValid = false;
				}
				if( isIDValid == true){
					isIDValid = checkIDValid(obj);
				}
			}else{
				isIDValid = false;
			}

			if(isIDValid == false){
				err_msg += '欄位「' + namArr[i] + '」不是正確的身份證。\n';
			}
		  }

		  if(typeArr[i]==5){	//check E-Mail
			var eml = 0, len = 0;
			if(obj.charAt(0)=='@' || obj.charAt(0)=='.' || obj.charAt(obj.length-1)=='.' || obj.charAt(obj.length-1)=='@')
				{eml += 1;}
			if(obj.indexOf("@")==-1 || obj.indexOf(".")==-1)
				{eml += 1;}
			for(j=0; j<obj.length; j++){
				if((obj.charAt(j)>='a' || obj.charAt(j)>='A') && (obj.charAt(j)<='z' || obj.charAt(j)<='Z')){
					len += 1;
				}else if(obj.charAt(j)=="@" || obj.charAt(j)=="." || obj.charAt(j)=="_" || obj.charAt(j)=="-" ){
					len += 1;
				}else if( ! isNaN(obj.charAt(j))){
					len += 1;
				}

			}
			if(len!=obj.length || eml!=0)
				{err_msg += '欄位「' + namArr[i] + '」不是正確的電子信箱。\n';}
		  }
		}
	}
	if(err_msg != ''){
		alert(err_msg);
		return false;
	}
	else if(err_msg == '' && str != ''){
		alert(err_msg + str);
		return false;
	}else{
		return true
	}
	//frm.submit();
}


function checkIDValid(id){
	var locCode = id.charAt(0).toUpperCase();
	var locNo = getLocNo(locCode);
	var idToCheckcode =( (Math.floor(locNo/10)+((locNo%10)*9)+(id.charAt(1)*8)+(id.charAt(2)*7)+(id.charAt(3)*6)+(id.charAt(4)*5)+(id.charAt(5)*4)+(id.charAt(6)*3)+(id.charAt(7)*2)+(id.charAt(8)*1)+(id.charAt(9)*1)) )%10;
	if(idToCheckcode==0){
		return true;
	}else{
		return false;
	}
}


function getLocNo(locCode){
   var Num=0;

   switch (locCode){
   	case "A":
   	 	Num=10;break;
   	case "B":
   	 	Num=11;break;
   	case "C":
   	 	Num=12;break;
   	case "D":
   	 	Num=13;break;
   	case "E":
   	 	Num=14;break;
   	case "F":
   	 	Num=15;break;
   	case "G":
   	 	Num=16;break;
   	case "H":
   	 	Num=17;break;
   	case "I":
   	 	Num=34;break;
   	case "J":
   	 	Num=18;break;
   	case "K":
		Num=19;break;
   	case "L":
   	        Num=20;break;
   	case "M":
   	 	Num=21;break;
   	case "N":
   	 	Num=22;break;
   	case "O":
   	 	Num=35;break;
   	case "P":
   	 	Num=23;break;
   	case "Q":
   	 	Num=24;break;
   	case "R":
   	 	Num=25;break;
   	case "S":
   	 	Num=26;break;
   	case "T":
   	 	Num=27;break;
   	case "U":
   	 	Num=28;break;
   	case "V":
   	 	Num=29;break;
   	case "W":
   	 	Num=32;break;
   	case "X":
   	 	Num=30;break;
   	case "Y":
   	 	Num=31;break;
   	case "Z":
   	 	Num=33;break;
   	 }

	return Num;

}


/*********************************************************************
非法字元置換
1.frm:表單的名稱。
2.null:0為可空白，1為不可空白。
3.ErrType內亦可加入不合法字元的檢查，請自行加入。
4.表單內型態為hidden亦會檢查。
5.ie,NetScape版本共用。														-- Code by Meeiyi Chou in 2003,January --
*********************************************************************/
function ChkIpt2(FormName){
	var str;
	var frm = eval("document." + FormName);
	var ErrType = new Array("'");
	replaceStr = new Array("’");
	var obj;
	for(var i=0; i< frm.length; i++){
		if(document.all)
			obj = eval("document." + FormName + ".elements[" + i + "]");
		else
			obj = eval("document." + FormName + "[" + i + "]");
		if(obj.type=='text' && obj.value.length!=0){
			str = obj.value;
			for (var x = 0; x < ErrType.length; x++){
				while(obj.value.indexOf(ErrType[x])!=-1){
					str = str.replace(ErrType[x],replaceStr[x]);
					obj.value = str;
				}
			}
		}
	}
}
function ChkIpt(FormName){
	var str;
	var frm = eval("document." + FormName);
	var ErrType = new Array('"',"'","<",">","*","-","_","%","&");
	replaceStr = new Array("”","’","＜","＞","＊","－","＿","％","＆");
	var obj;
	for(var i=0; i< frm.length; i++){
		if(document.all)
			obj = eval("document." + FormName + ".elements[" + i + "]");
		else
			obj = eval("document." + FormName + "[" + i + "]");
		if(obj.type=='text' && obj.value.length!=0){
			str = obj.value;
			for (var x = 0; x < ErrType.length; x++){
				while(obj.value.indexOf(ErrType[x])!=-1){
					str = str.replace(ErrType[x],replaceStr[x]);
					obj.value = str;
				}
			}
		}
	}
}


function ChkIpt1(FormName){
	var str;
	var frm = eval("document." + FormName);
	var ErrType = new Array('"',"'","<",">","*","%","&");
	replaceStr = new Array("”","’","＜","＞","＊","％","＆");
	var obj;
	for(var i=0; i< frm.length; i++){
		if(document.all)
			obj = eval("document." + FormName + ".elements[" + i + "]");
		else
			obj = eval("document." + FormName + "[" + i + "]");
		if(obj.type=='text' && obj.value.length!=0){
			str = obj.value;
			for (var x = 0; x < ErrType.length; x++){
				while(obj.value.indexOf(ErrType[x])!=-1){
					str = str.replace(ErrType[x],replaceStr[x]);
					obj.value = str;
				}
			}
		}
	}
}

function ChkIpt2(FormName){
 var str;
 var frm = eval("document." + FormName);
 var ErrType = new Array('"',"'","<",">","*","%");
 replaceStr = new Array("”","’","＜","＞","＊","％");
 var obj;
 for(var i=0; i< frm.length; i++){
  if(document.all)
   obj = eval("document." + FormName + ".elements[" + i + "]");
  else
   obj = eval("document." + FormName + "[" + i + "]");
  if((obj.type=='text' && obj.value.length!=0) || obj.type=='textarea'){
   str = obj.value;
   for (var x = 0; x < ErrType.length; x++){
    while(obj.value.indexOf(ErrType[x])!=-1){
     str = str.replace(ErrType[x],replaceStr[x]);
     obj.value = str;
     //alert(str);//add by brandon for check
    }
   }
  }
 }
}


	var ShowText = new Array();
	ShowText[0] = '請輸入關鍵字';
	ShowText[1] = '請輸入金額';
	ShowText[2] = '請輸入重量';
	ShowText[3] = '請填寫';
	ShowText[4] = '沒有可不填'
	ShowText[5] = 'Key in Number';
	ShowText[6] = '請輸入地址';
	ShowText[7] = '請輸入電話號碼';
	ShowText[8] = '分機號碼';
	ShowText[9] = '請輸入傳真號碼';
	ShowText[10] = '輸入巷';
	ShowText[11] = '輸入弄';
	ShowText[12] = '輸入號';
	ShowText[13] = '數字';
	ShowText[14] = '輸入樓';
	ShowText[15] = '輸入室';
	ShowText[16] = '輸入路段名稱';
	ShowText[17] = '請輸入郵遞區號';
	ShowText[18] = '請輸入電腦局號';
	ShowText[19] = '請輸入姓名';
	ShowText[20] = '請輸入主旨';
	ShowText[21] = '請輸入電子郵箱';
	ShowText[22] = '選擇日期';
	ShowText[23] = '請輸入';
	ShowText[24] = '請輸入密碼';
	ShowText[25] = '請輸入公司/學校名稱';
	ShowText[26] = 'Please Enter a Keyword';
	ShowText[27] = '請輸入發文日期';
	ShowText[28] = '請輸入發文文號';
	ShowText[29] = '請輸入通行碼';
	ShowText[30] = '請輸入保價金額';
	ShowText[31] = '請輸入加保金額';


function searchText(formName){ /* 搜索formName裡的Text物件，若ID為可解析，則為其輸入關鍵字*/
	var FormOBJ = eval("window.document."+formName);
	if(FormOBJ == null)alert(formName + ' is null');
	else
		for(var i=0;i<FormOBJ.length;i++){

			if((FormOBJ.elements[i].type == 'text' || FormOBJ.elements[i].type == 'textarea') && (FormOBJ.elements[i].id != '')){
				var TextArr = new Array();

				TextArr = SplitTextID(FormOBJ.elements[i].id);
				if(TextArr.length == 3 && FormOBJ.elements[i].value == '')	setDefault(TextArr,FormOBJ.elements[i]);

			}
			else if(FormOBJ.elements[i].type == 'checkbox'){
				FormOBJ.elements[i].checked = false ;
			/*else if(FormOBJ.elements[i].type == 'select-one'){
				if(FormOBJ.elements[i].name != "city" && FormOBJ.elements[i].name != "cityarea"){
					FormOBJ.elements[i].selectedIndex = 0 ;
				}*/
			}

		}
}
function searchAllText(){ /* 用來搜索不指定FormName，搜索全網頁所有的Form */
	if(document.forms.length > 0){
		for(var i=0;i<document.forms.length;i++){
			//alert(document.forms[i].name);
			searchText(document.forms[i].name);
		}
	}

}
function SplitTextID(TextID){
	var TextArr = new Array();
	TextArr = TextID.split(":");
	return TextArr;
}
function setDefault(TextArr,TextOBJ){

	TextOBJ.value = ShowText[parseInt(TextArr[0])];
	if((TextArr[2]+'') != '0' )TextOBJ.value+=TextArr[2];
}
function TextOnFocus(TextOBJ){
	var TextArr = SplitTextID(TextOBJ.id);
	if(TextArr.length == 3)
		if(TextOBJ.value == ShowText[parseInt(TextArr[0])])
			TextOBJ.select();
}
function TextOnBlur(TextOBJ){
	var TextArr = SplitTextID(TextOBJ.id);
	if(TextArr.length == 3)
		if(TextOBJ.value == '')
			TextOBJ.value = ShowText[parseInt(TextArr[0])] ;
}
function ClearText(TextOBJ){
	var TextArr = SplitTextID(TextOBJ.id);
	if(TextArr.length == 3)
		if((TextOBJ.value == ShowText[parseInt(TextArr[0])]) || (TextOBJ.value == (ShowText[parseInt(TextArr[0])])+TextArr[2]))
			TextOBJ.value = '';
}
//保單繳費證明需要
function Clear(TextObj)
  {
    if(TextObj.value=="請填寫" || TextObj.value=="請輸入電話號碼" || TextObj.value=="請輸入地址" || TextObj.value=="請輸入電子郵件" || TextObj.value=="沒有可不填" || TextObj.value=="分機號碼" || TextObj.value=="請填入" ||TextObj.value=="")
    {
      TextObj.value='';
    }
  }
function FromOnSubmit(FormOBJ){
		for(var i=0;i<FormOBJ.length;i++){

			if((FormOBJ.elements[i].type == 'text' || FormOBJ.elements[i].type == 'textarea') && (FormOBJ.elements[i].id != '')){
				ClearText(FormOBJ.elements[i]);
			}
		}

	return true;
}