/***************************************************************************************
*	
* util_form_valid.js		表單檢查
*
* 務必使用下列function 做為檢查的開頭結尾
* form_checkSetting(form_name)
* form_returnCheck()
*
***************************************************************************************/
	var global_form = "";
	var global_submitted = false;
	var global_error = false;
	var global_error_msg = "";
	/*
	*	取得表單名稱
	*	@param	表單
	*/
	function setForm(form_name)
	{
		if (typeof(form_name) == "undefined") {
			global_form = document.forms["thisform"];
		} else if(typeof(form_name) == "string") {
			global_form = document.forms[form_name];

		} else if(typeof(form_name) == "object") {
			global_form = form_name;
		} else {
			alert('something wrong');
			return false;
		}
	}
	
	/*
	*	表單檢查的初始設定
	*	@param	form_name		表單名稱
	*/
	function form_checkSetting(form_name){
		//驗證值初始化
		global_error = false;
		//訊息
		global_error_msg = msg_error_base;
		//
		setForm(form_name);		
		//檢查是否有連續送出表單
		if (global_submitted==true) {
			alert(msg_form_submitted);
			return false;
		}		
	}
	/*
	*	表單檢查的結尾設定
	*
	*/
	function form_returnCheck(){
		if (global_error == true) {
			//將累計的錯誤訊息送出
			alert(global_error_msg);
			return false;
		} else {
			//告知表單已送出, 如果重覆發送表單, 會在form_checkSetting部份警告
			global_submitted = true;
			return true;
		}
		return false;		
	}
	/**
	* 單一欄位檢查
	* @global	global_form		需檢查的表單名稱
	* @param	field_name		欄位名稱
	* @param	field_size		欄位大小(下限)
	* @param	message			錯誤訊息
	*
	*/
	
	function check_input(field_name, field_size, message) {
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) {
			var field_value = global_form.elements[field_name].value;
			if (field_value == '' || field_value.length < field_size) {
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
		}
	}
	
	/**
	* 帳號檢查
	* @global	global_form			需檢查的表單名稱
	* @global	global_error_msg	錯誤訊息文字
	* @param	field_name			會員帳號檢查(英數字)
	* @param	field_size			欄位大小(下限)
	* @param	field_size2			欄位大小(上限)
	* @param	message1			錯誤訊息(字元數錯誤)
	* @param	message2			格式錯誤(英數字)
	*
	*/
	function check_id(field_name, field_size1, field_size2, message_1, message_2) {
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;
			var validstr = /^([a-zA-Z0-9]+)+$/;
			
			if (field_value == '' || field_value.length < field_size1 || field_value.length > field_size2) {
				global_error_msg = global_error_msg + "* " + message_1 + "\n";
				global_error = true;
			} else if (field_value.search(validstr)) {
				global_error_msg = global_error_msg + "* " + message_2 + "\n";
				global_error = true;
			}
		}
	}
	
	/**
	*	密碼檢查
	*	@global	global_form			需檢查的表單名稱
	*	@global	global_error_msg	錯誤訊息文字
	*	@param	field_name_1		密碼欄位
	* 	@param	field_name_2		密碼確認欄位
	*	@param	field_size1			密碼欄位大小(字元數下限)
	*	@param	field_size2			密碼確認大小(字元數上限)
	*	@param	message_1			當格式不符合規格時(字元數及英數字)
	*	@param	message_2			當密碼欄位和確認欄位不相同時的訊息
	*/
	function checkPassword(field_name_1, field_name_2, field_size1,field_size2, message_1, message_2) 
	{
		if (global_form.elements[field_name_1] && (global_form.elements[field_name_1].type != "hidden")) {
			var password = global_form.elements[field_name_1].value;
			var confirmation = global_form.elements[field_name_2].value;
			var validstr = /^([a-zA-Z0-9]+)+$/;
			
			if (password == '' || password.length < field_size1 || password.length > field_size2) {
				global_error_msg = global_error_msg + "* " + message_1 + "\n";
				global_error = true;
			} else if (password.search(validstr)) {
				global_error_msg = global_error_msg + "* " + message_1 + "\n";
				global_error = true;				
			} else if (password != confirmation) {
				global_error_msg = global_error_msg + "* " + message_2 + "\n";
				global_error = true;
			}
		}
	}
	
	/**
	*	身份證驗證
	*	@global	global_form			需檢查的表單名稱
	*	@global	global_error_msg	錯誤訊息文字	
	*	@param	field_name			欄位名稱
	*	@param	message			
	*/
	function check_idno(field_name, message, message2, message3 )
	{ 
		field_size = 10;
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;
			var pID = /[A-Z]{1}[12]{1}\d{8}/;
			
			/* 計算身份證的值是否合法 */
			Id=field_value;
   			var Id1="ABCDEFGHJKLMNPQRSTUVXYWZIO";
			Id1=Id1.indexOf(Id.substring(0,1))+10;
			Id=field_value.replace(field_value.substring(0,1),Id1);
			var Idsum=0;
    		Idsum=Id.substring(0,1)*1+Id.substring(10,11)*1
			for (i=1;i<10;i++){
				Idsum=Idsum+Id.substring(i,i+1)*(10-i)
			}
						
			if (field_value == '' || field_value.length != field_size) 
			{
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
			else if (field_value.search(pID))
			{
				global_error_msg = global_error_msg + "* " + message2 + "\n";
				global_error = true;
			}
			else if ((Idsum % 10) != 0 )
			{
				global_error_msg = global_error_msg + "* " + message3 + "\n";
				global_error = true;
			}			
		}
	}

	/* 電話檢查 */
	function numbercheck(field_name, field_size, message, message2)
	{ 
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;
			var validstr = /^([0-9#()-]+)+$/;
						
			if (field_value == '' || field_value.length < field_size) 
			{
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
			else if (field_value.search(validstr))
			{
				global_error_msg = global_error_msg + "* " + message2 + "\n";
				global_error = true;
			}			 
		}
	}

	/* 純數字檢查 */
	function check_number(field_name, field_size, message, message2)
	{ 
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;
			var validstr = /^[0-9]+$/;
						
			if (field_value == '' || field_value.length < field_size) 
			{
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
			else if (field_value.search(validstr))
			{
				global_error_msg = global_error_msg + "* " + message2 + "\n";
				global_error = true;
			}			 
		}
	}
	
	/**
	*	email檢查
	*	@global	global_form			需檢查的表單名稱
	*	@global	global_error_msg	錯誤訊息文字	
	*	@param	field_name			欄位名稱
	*	@param	field_size			    大小(下限)
	*	@param	message				    大小錯誤
	*	@param	message2			    格式錯誤
	*/
	function mailcheck(field_name, field_size, message, message2)
	{ 
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;
			var p_mail = /^([a-zA-Z0-9._-]+)@([a-zA-Z0-9_-]+)(\.[a-zA-Z0-9]+)+$/;
			
			if (field_value == '' || field_value.length < field_size) 
			{
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
			else if (field_value.search(p_mail)) 
			{
				global_error_msg = global_error_msg + "* " + message2 + "\n";
				global_error = true;
			}			 
		}
	}
	
	/* radio 是否選取檢查 */
	function check_radio(field_name, message) {
		var isChecked = false;
	
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var radio = global_form.elements[field_name];

			for (var i=0; i<radio.length; i++) 
			{
				if (radio[i].checked == true) 
				{
					isChecked = true;
					break;
				}
			}
			if (isChecked == false) {
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
		}
	}

	/**
	*	下拉式選單檢查
	*	@global	global_form			需檢查的表單名稱
	*	@global	global_error_msg	錯誤訊息文字	
	*	@param	field_name			欄位名稱
	*	@param	field_size			    大小(下限)
	*	@param	message				    空值時的錯誤訊息
	*/
	function check_select(field_name, message) 
	{
		if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
		{
			var field_value = global_form.elements[field_name].value;

			if (field_value == '') {
				global_error_msg = global_error_msg + "* " + message + "\n";
				global_error = true;
			}
		}
	}
	
	
	/**
	* 針對某個checkbox陣列做全選、或全部取消的動作
	*
	* @param status			使用的功能, 1為全選, 0為全部取消
	* @param box
	*
	*/
	function checkboxProcess(status,box){
		//判斷是否為陣列，否則以單筆資料方式做處理
		if (typeof(box.length) == "undefined") {
			if(box.type == 'checkbox' && status == 1){
				box.checked = true;
			}else if(box.type == 'checkbox' && status == 0){
				box.checked = false;
			}			
		} else {
			var boxLen = box.length;
			for(var i=0;i<boxLen;i++){
				//全選
				if(box[i].type == 'checkbox' && status == 1){
					box[i].checked = true;
				}else if(box[i].type == 'checkbox' && status == 0){
					box[i].checked = false;
				}
			}	
		}
	}	

