/**************************************************************************
* util_form_valid.js 2006/12/07 v1.1
===========================================================================
* 表單檢查
* 務必使用下列function 做為檢查的開頭結尾
* form_checkSetting(form_name)
* form_returnCheck()
===========================================================================
* Edited by Pai in GOGOTDI
* Copyright (C) 2006 Tang Digital Integration
***************************************************************************/

var global_form = "";
var global_submitted = false;
var global_error = false;
var global_error_msg = "";

/**
 * setForm()
 * 取得表單名稱
 *
 * @param	string	form_name	表單名稱
 * @return	bool
 */
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;
	}
}

/**
 * form_checkSetting()
 * 表單檢查的初始設定
 *
 * @global	global_error_msg	錯誤訊息文字	
 * @param	form_name			表單名稱
 * @return	void
 */
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;
	}		
}

/**
 * form_returnCheck()
 * 表單檢查的結尾設定
 *
 * @global	global_error_msg	錯誤訊息文字	
 * @return	bool
 */
function form_returnCheck(){
	if (global_error == true) {
		//將累計的錯誤訊息送出
		alert(global_error_msg);
		return false;
	} else {
		//告知表單已送出, 如果重覆發送表單, 會在form_checkSetting部份警告
		global_submitted = true;
		return true;
	}
	return false;		
}

/**
 * check_input()
 * 單一欄位檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	int		field_size			欄位大小(下限)
 * @param	string	message				錯誤訊息
 * @return	void
 */
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;
		}
	}
}

/**
 * check_id()
 * 帳號檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	int		field_size				欄位大小(下限)
 * @param	int		field_size2				欄位大小(上限)
 * @param	string	message_1				錯誤訊息(字元數錯誤)
 * @param	string	message_2				格式錯誤(英數字)
 * @return	void
 */
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;
		}
	}
}

/**
 * check_psd()
 * 密碼檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name_1		密碼欄位
 * @param	string	field_name_2		密碼確認欄位
 * @param	int		field_size1				密碼欄位大小 (字元數下限)
 * @param	int		field_size2				密碼確認大小 (字元數上限)
 * @param	string	message_1				當格式不符合規格時 (字元數及英數字)
 * @param	string	message_2				當密碼欄位和確認欄位不相同時的訊息
 * @return	void
 */
function check_psd(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;
		}
	}
}

/**
 * check_idno()
 * 身份證驗證
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	int		field_size				大小(下限)
 * @param	string	message					大小錯誤 msg
 * @param	string	message2				格式錯誤 msg
 * @param	string	message3				公式錯誤 msg
 * @return	void
 */
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;
		}			
	}
}

/**
 * check_phone()
 * 電話檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	int		field_size				大小(下限)
 * @param	string	message					大小錯誤 msg
 * @param	string	message2				格式錯誤 msg
 * @return	void
 */
function check_phone(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;
		}			 
	}
}

/**
 * check_number()
 * 純數字檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name				欄位名稱
 * @param	int		field_size				大小(下限)
 * @param	string	message					大小錯誤 msg
 * @param	string	message2				格式錯誤 msg
 * @return	void
 */
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;
		}			 
	}
}

/**
 * check_email()
 * email檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	int		field_size				大小(下限)
 * @param	string	message					大小錯誤 msg
 * @param	string	message2				格式錯誤 msg
 * @return	void
 */
function check_email(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;
		}			 
	}
}

/**
 * check_radio()
 * radio 是否選取檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	string	message					未選時的錯誤訊息
 * @return	void
 */
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];

		if(radio.length)
		{
			for (var i=0; i<radio.length; i++) 
			{
				if (radio[i].checked == true) 
				{
					isChecked = true;
					break;
				}
			}
		}
		else
		{
			var field_checked = global_form.elements[field_name].checked;
			if (field_checked) 
			{
				isChecked = true;
			}
		}

		if (isChecked == false) {
			global_error_msg = global_error_msg + "* " + message + "\n";
			global_error = true;
		}
	}
}

/**
 * check_checkbox()
 * checkbox 是否選取檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	string	message					未選時的錯誤訊息
 * @return	void
 */
 function check_checkbox(field_name, message) 
 {
	var isChecked = false;

	if (global_form.elements[field_name] && (global_form.elements[field_name].type != "hidden")) 
	{
		var checkbox = global_form.elements[field_name];
		
		if(checkbox.length)
		{
			for (var i=0; i<checkbox.length; i++) 
			{
				if (checkbox[i].checked == true) 
				{
					isChecked = true;
					break;
				}
			}
		}
		else
		{
			var field_checked = global_form.elements[field_name].checked;
			if (field_checked) 
			{
				isChecked = true;
			}
		}

		if (isChecked == false) {
			global_error_msg = global_error_msg + "* " + message + "\n";
			global_error = true;
		}
	}
 }

/**
 * check_select()
 * 下拉式選單檢查
 *
 * @global	string	global_form			需檢查的表單名稱
 * @global	string	global_error_msg	錯誤訊息文字	
 * @param	string	field_name			欄位名稱
 * @param	string	message				未選時的錯誤訊息
 * @return	void
 */
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 == '' || field_value == 0) {
			global_error_msg = global_error_msg + "* " + message + "\n";
			global_error = true;
		}
	}
}
