//!--------------------------------------------------------------------------------------------
//! Copyright (c) 2002 Acer Inc.
//! Author : Matt Tasi   2003/06/06
//!
//! Modification Log :
//! Vers    Date                  By          Notes
//! -----  ---------------  ---------------  ------------------------------------------------
//! 1.0.0  2003/06/06       Matt Tasi       Create
//! 1.0.1  2003/12/19       Randy Chen	新增民國日期檢查->checkType=C
//!-------------------------------------------------------------------------------------------- 

String.prototype.isEmpty=isEmpty;

function getAttributeValue(obj) {
	var value=null;

	try {
		value=obj.check;

		if(value==null) {
			//for jQuery Compatbility
			value=$(obj).attr("check")
		}
		
	} catch(e) {

	}
	
	return value;
}



//onload載入
function initForm(form) {

	var inputobj=form.getElementsByTagName("input");
	for(var j=0;j<inputobj.length;j++) {
		var attrValue=getAttributeValue(inputobj[j]);

		if(attrValue==null || attrValue.length<1) 
			continue;

		var value=attrValue.substr(1,1);
		
		var vobj=document.getElementById("validate_"+inputobj[j].name);
		if(vobj) {
			if(value=="1") 
				vobj.innerHTML="*";
			else
				vobj.innerHTML="";
		}
	}
	
	inputobj=form.getElementsByTagName("select");
	for(var j=0;j<inputobj.length;j++) {
		var attrValue=getAttributeValue(inputobj[j]);

		if(attrValue==null || attrValue.length<1) 
			continue;

		var value=attrValue.substr(1,1);

		var vobj=document.getElementById("validate_"+inputobj[j].name);
		if(vobj) {
			if(value=="1") 
				vobj.innerHTML="*";
			else
				vobj.innerHTML="";
		}
		
	}
	
	inputobj=form.getElementsByTagName("textarea");
	for(var j=0;j<inputobj.length;j++) {
		var attrValue=getAttributeValue(inputobj[j]);

		if(attrValue==null || attrValue.length<1) 
			continue;

		var value=attrValue.substr(1,1);

		var vobj=document.getElementById("validate_"+inputobj[j].name);
		if(vobj) {
			if(value=="1") 
				vobj.innerHTML="*";
			else
				vobj.innerHTML="";
		}
		
	}
	
}

function textBox(obj)
{
	//properties
	var value=getAttributeValue(obj);
	
	if (value && value!="") {
		this.checkType = value.charAt(0);
		this.allowNull = value.charAt(1);
	} else {
		this.checkType = "U";
		this.allowNull = "0";
	}
	
	//this.minLength = obj.check.substring(2);
	//this.minLength = obj.check.substring(2);
	if (value && value!="") {
		this.minLength = value.substring(2);
		this.minLength = value.substring(2);
	}
	
	if (this.minLength == null || this.minLength == "") this.minLength = "0";
	this.value = trim(obj.value);
	this.maxLength = obj.maxLength;
	if (this.maxLength > 4096) this.maxLength=0;
	this.fillChar = obj.fillChar;
	this.focus = obj.focus;
	this.newValue = "";
	this.name=obj.name;
}

//submit檢查
function submitCheck(form) {

	initForm(form);

	var checkFlag=true;

	//text object
	var inputobj=form.getElementsByTagName("input");
	var radioobj=new Array();

	for(var j=0;j<inputobj.length;j++)
	{
		var checkValue=getAttributeValue(inputobj[j]);

		if((inputobj[j].type=="text" || inputobj[j].type=="password") && checkValue && inputobj[j].disabled != true && inputobj[j].readOnly != true)
		{   
		
			var boxobj = new textBox(inputobj[j]);
			if (!chkNull(boxobj)) {
				inputobj[j].focus();
				checkFlag=false;
				//return false;
				continue;
			}
			
			if (!chkInput(boxobj)) {
				inputobj[j].focus();
				checkFlag=false;
				//return false;
				continue;
			}
			
			if (!chkMaxLength(boxobj)) {
				inputobj[j].focus();
				checkFlag=false;
				//return false;
				continue;
			}
			
		} else if(inputobj[j].type=="radio" && checkValue && inputobj[j].disabled != true && inputobj[j].readOnly != true) {

			if(inputobj[j].checked) {
				radioobj[inputobj[j].name]=true;

			} else {
				if(!radioobj[inputobj[j].name]) 
					radioobj[inputobj[j].name]=false;					
			}

		}
		
		
	}

	for ( var objname in radioobj ) {
		var radioobj

		if(!radioobj[objname]) {
			checkFlag=false;
			showValidateMessage(objname,getMessage("100"));
		}
		
	}


	//text object
	var selectobj=form.getElementsByTagName("select");

	for(var j=0;j<selectobj.length;j++) {
		var checkValue=getAttributeValue(selectobj[j]);

		if(checkValue) {
		
			if(selectobj[j].selectedIndex==0 && selectobj[j].options[0].value=="") {
	   			checkFlag=false;
   				showValidateMessage(selectobj[j].name,getMessage("100"));
   			}
		}
			
	}

	//textarea object
	//var textareaobj=document.all.tags("textarea");
	var textareaobj=form.getElementsByTagName("textarea");
	
	for(var j=0;j<textareaobj.length;j++) {
		var checkValue=getAttributeValue(textareaobj[j]);
//		if (textareaobj[j].check && textareaobj[j].disabled != true && textareaobj[j].readOnly != true) {
		if (checkValue && textareaobj[j].disabled != true && textareaobj[j].readOnly != true) {

			var boxobj = new textBox(textareaobj[j]);
			if (!chkNull(boxobj)) {
				textareaobj[j].focus();
				checkFlag=false;
				//return false;
				continue;
			}
			if (!chkMaxLength(boxobj)) {
				textareaobj[j].focus();
				checkFlag=false;
				//return false;
				continue;
			}
		}
	}

	return checkFlag;
	//return true;
}

//onblur檢查
function onblurCheck() {
	if (this.readOnly || this.disabled) return true;
	if (trim(this.value) == "") {
			return true;
	}
	
	var boxobj = new textBox(this);
	if (this.check) {
		if (!chkInput(boxobj)) {
			boxobj.focus();
			return false;
		}
	}	
	
	if (!chkMaxLength(boxobj)) {
		boxobj.focus();
		return false;
	} else {
		if (boxobj.newValue != "") this.value = boxobj.newValue;
	}
	
	if (this.onblurEx != null) {
		return eval(this.onblurEx);
	} else {
		return true;
	}
}

//===========================================================================
//判斷輸入欄位是否空白
function isEmpty() {
	var str = this.toString()
	return (str == "");
}

function showValidateMessage(objname,message) {
	var vobj=document.getElementById("validate_"+objname);

	if(vobj==null) return;
	
	vobj.innerHTML="";

	if(vobj)
		vobj.innerHTML=message;
}

//檢查空白
function chkNull(boxobj) {

	if (boxobj.allowNull == 1 && boxobj.value.isEmpty()) {

		showValidateMessage(boxobj.name,getMessage("101"));
		
		return false;
	} else {
		return true;
	}
}

//檢查長度
function chkMaxLength(boxobj) {
	if (boxobj.maxLength <= 0) return true;
	//var len = getLength(boxobj.value);
	//var chLength = Math.floor(boxobj.maxLength/2);
	//var desc = boxobj.maxLength + "個英文或" + chLength + "個中文!";
	var len = boxobj.value.length;
	var chLength = boxobj.maxLength;
    var desc = boxobj.maxLength + "個中文!";

	if (boxobj.minLength == "1" && len != boxobj.maxLength) {
		//showMessageEx("111",boxobj.maxLength);
		
		showValidateMessage(boxobj.name,getMessage("111")+boxobj.maxLength);
		
		return false;
	}
	if (len > boxobj.maxLength) {
		//showMessageEx("109",desc);

		showValidateMessage(boxobj.name,getMessage("109")+desc);
			
		return false;
	} else {
		if (boxobj.fillChar != null && boxobj.fillChar != "" && boxobj.maxLength != len) {
			boxobj.newValue = getFilledStr(boxobj.value,boxobj.maxLength,boxobj.fillChar);
		} else {
			boxobj.newValue = "";
		}
		return true;
	}
}

//檢查輸入類別
function chkInput(boxobj) {
	if (boxobj.value == "") return true;
	
	switch (boxobj.checkType) {
		//數字檢查
		case "N" :
			if (!checkNum(boxobj.value)) {
				//showMessage("103");
				
				showValidateMessage(boxobj.name,getMessage("103"));
					
				return false;
			} else {
				return true;
			}
			break;
		//E-Mail檢查
		case "E" :
			if (! checkEmail(boxobj.value)) {
				//showMessage("107");
				showValidateMessage(boxobj.name,getMessage("107"));
				return false;
			} else {
				return true;
			}
			break;
		//身份証字號檢查
		case "I" :
			if (! checkID(boxobj.value)) {
				//showMessage("108");
				showValidateMessage(boxobj.name,getMessage("108"));
				return false;
			} else {
				return true;
			}
			break;
		//日期檢查
		case "D" :
			if (! checkDate(boxobj.value)) {
				//showMessage("105");
				showValidateMessage(boxobj.name,getMessage("105"));
				return false;
			} else {
				return true;
			}
			break;
		//----Ver.1.01 Added----
		//民國檢查 
		case "C" :
			if (! checkCHDate(boxobj.value)) {
				//showMessage("105");
				showValidateMessage(boxobj.name,getMessage("105"));
				return false;
			} else {
				return true;
			}
			break;
		//----------------------
		//時間檢查
		case "T" :
			if (! checkTime(boxobj.value)) {
				//showMessage("106");
				showValidateMessage(boxobj.name,getMessage("106"));
				return false;
			} else {
				return true;
			}
			break;
		case "U" : return true;
	}
			
}

//=============================================
//function upperCase()
//desc:		將值轉換為大寫(Event)(使用KeyPress觸發)
//input:    null
//output:   null
//=============================================
function upperCase(event) {

	if(event==null) 
		event=window.event;
	
	if (event.keyCode==13)
		return;
	
	if (event.keyCode != 8 && event.keyCode != 46 && event.keyCode != 35 && event.keyCode != 36 && event.keyCode != 37 && event.keyCode != 39) {
		try {
			//for Firefox W3C DOM
			event.target.value = event.target.value.toUpperCase();
		} catch(e) {
			//for IE DOM
			event.srcElement.value=event.srcElement.value.toUpperCase();
		}
	}
		
}

