//==================表單驗證通式開始=======================
function check_all_fields(form_name) {
	document.getElementById(form_name).submit_button.disabled=true;//先讓SUBMIT按鈕失去作用，若表單驗證不過再讓它恢復
	var form_item;	
	var forms=document.getElementById(form_name);
	for (var i=0; i<forms.elements.length; i++) {
		if (forms.elements(i).getAttribute("validate")=='YES') {
			switch(forms.elements(i).getAttribute("type")) {
				case "select-one" :
					if (forms.elements(i).options[forms.elements(i).selectedIndex].value=="") {
						alert("請選擇"+forms.elements(i).getAttribute("ChtName")+"!");
						forms.elements(i).focus();
						document.getElementById(form_name).submit_button.disabled=false;
						return false;
						brealk;
					}
					break;
				case "text" :
					if (!validate_form(forms.elements(i), i)) {//驗證不通過，傳回驗證失敗旗標
						forms.elements(i).focus();
						document.getElementById(form_name).submit_button.disabled=false;
						return false;
						break;
					}
					break;
				case "checkbox" :
					var check_box_check=false;
					for (var j=0; j<document.all(forms.elements(i).getAttribute("name")).length; j++) {
						if (document.all(forms.elements(i).getAttribute("name"))(j).checked==true) {
							check_box_check=true;
							break;
						}
					}
					if (!check_box_check) {
						alert("請選取"+forms.elements(i).getAttribute("ChtName")+"!");
						document.getElementById(form_name).submit_button.disabled=false;
						return false;
						break;
					}
					break;
				case "password":
					if (forms.elements(i).getAttribute("RegularExpressionValidator")=="COMPARE") {//要與密碼欄位進行比對
						if (forms.elements(i).value!=document.getElementById(form_name).password.value) {
							alert("密碼與確認密碼欄位值不符，請重新輸入!");
							forms.elements(i).value="";
							document.getElementById(form_name).password.value="";
							document.getElementById(form_name).password.focus();
							document.getElementById(form_name).submit_button.disabled=false;
							return false;
							break;							
						}
					}
					else {
						if (!validate_form(forms.elements(i), i)) {//驗證不通過，傳回驗證失敗旗標
							forms.elements(i).focus();
							document.getElementById(form_name).submit_button.disabled=false;
							return false;
							break;
						}
					}
				default:
			}	
		}
	}
	return true;
}
function validate_form(form_item, column_order) {
	str=form_item.value;//客戶端輸入值
	var re = new RegExp(form_item.getAttribute("RegularExpressionValidator"));
	cht_name=form_item.getAttribute("ChtName");//取得欄位中文名稱
	show_messagebox=form_item.getAttribute("ShowMessageBox");//是否要做彈出式警告?YES
	var regexp_str=form_item.getAttribute("RegularExpressionValidator");
	matchflag=re.exec(str);
	return match_format(form_item, regexp_str, column_order, cht_name, show_messagebox, matchflag);
	//欄位物件, 正規驗證字串, 欄位順序, 中文欄位名稱, 是否要彈出警告視窗. 是否符合驗證格式
}

function match_format(form_item, regexp_str, column_order, cht_name, show_messagebox, matchflag) {
	var error_message="";
	switch(regexp_str) {
		case "\\S{1,}" ://表示必填欄位
			error_message=cht_name+"不得空白!"
			break;
		case "\\S+@\\S+\\.\\S{2,}" ://表示 E-mail 欄位
			error_message=cht_name+"格式不符，必須符合 name@company.com 的格式!"
			break;
		case "(19|20)\\d\\d[-/.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])" ://表示日期欄位
			error_message=cht_name+"格式不符，必須是 2005-01-01 或 2005/01/01 或 2005.01.01!"
			break;
		case "^\d+$" ://表示數字欄位(不含小數點)
			error_message=cht_name+"必須是數字格式!"
			break;
		case "^\d{1,}[\.]?\d+$" ://表示數字欄位(可含小數點)
			error_message=cht_name+"必須是數字格式(可含小數點)!"
			break;
		case "\\b0\\d{1,3}-\\d{5,8}" ://表示電話格式欄位
			error_message=cht_name+"格式不符，必須符合 02-87323348!"
			break;
		default ://其他定義格式的欄位
			if (form_item.getAttribute("maxlength")) {
				error_message=cht_name+"格式不符，"
				error_message+="必須輸入 "+form_item.getAttribute("minlength")+" ~ "+form_item.getAttribute("maxlength")+" 個字元!"
			}
			else {
				error_message=cht_name+"格式不符!"
			}
	}
	if (!matchflag) {//驗證不通過
		if (show_messagebox=="YES") {//要彈出警告視窗
			alert("『" + error_message + "』");
		}
		else {
			var spans=document.getElementById("new_span_"+column_order);
			//如果之前已經建立了錯誤訊息的 SPAN 區塊，就將錯誤訊息填入訊息區塊
			if (spans!=null) {
				spans.innerHTML='<img src="hand02-01.gif">&nbsp;<font color=FF0000>'+ error_message +'</font>';
			}
			//如果之前尚未建立錯誤訊息的 SPAN 區塊，就建立一個新的訊息區塊
			else {
				form_item.insertAdjacentHTML('afterEnd', '&nbsp;<span id=new_span_'+column_order+'><img src="hand02-01.gif">&nbsp;<font color=FF0000>'+ error_message +'</font></span>');
			}
		}
		return false;
	}
	else {//如果驗證通過，就把錯誤訊息自訊息區塊中移除
		if (show_messagebox!="YES") {//不需要彈出警告視窗
			var spans=document.getElementById("new_span_"+column_order);
			if (spans!=null) {
				spans.innerHTML='';
			}
		}
		return true;
	}
}
//==================表單驗證通式結束=======================

//開新視窗
var EditWin;
function openWindow(aaa, w_width, w_height, scrolls, top, left) {
	EditWin = window.open(aaa,"new_win","resizable=yes,scrollbars=" + scrolls + ",toolbar=no,location=no,directories=no,status=no,menubar=no,width=" + w_width +",height=" + w_height + ",top=" + top + ",left=" + left + "");
	window.setTimeout("checkclose()", 1000);
	EditWin.resizeTo(100, 100);
	window.setTimeout("resizeWindow()", 1000);
	
}

function checkclose() {
	if (EditWin.closed) {
	}
	else {
		
		window.setTimeout("checkclose()", 1000);
	}
}

function resizeWindow() {
	EditWin.resizeTo(100, 100);
	EditWin.document.body.scrollHeight>700 ? EditWin.resizeTo(EditWin.document.body.scrollWidth+30, 700) : EditWin.resizeTo(EditWin.document.body.scrollWidth+30, EditWin.document.body.scrollHeight+32);
	EditWin.focus();
}

function closeWindow() {
	EditWin.close();
}

//特別視窗
function fnCallDialog(urls, scroll, width, height) {
	dialog_win=showModelessDialog(urls,window,"scroll:" + scroll + "; resizable:No;help:No;status:No;dialogWidth:" + width + ";dialogHeight:" + height + "");
}
