
function EnterAsTab() {
//-----------------------------------------------
//按回车键产生Tab键的效果，如果是按钮的话，模拟click事件

	//if(event.keyCode==192 || event.keyCode==222){
		//屏蔽掉单引号,字符集不同,所以有两个编码
	//	event.returnValue=false;
	//	return false;
	//}

	if (event.keyCode!=13) return true;

	//回车键被按下
	var i,j
	var formElements;
	formElements = document.forms[0].elements;
	for (i=0;i <= document.all.length - 1; i++){
		if (event.srcElement != formElements[i]) continue;
		//找到产生事件元素

		if ((formElements[i].type=="button")
			||(formElements[i].type=="reset")
			||(formElements[i].type=="submit")){
		//对于按钮模拟click事件
			formElements[i].click();
		    break;
		}

		//否则将焦点移到下一个元素
		if (formElements[i+1] == null){break;}
		for(j = i+1; j < formElements.length; j++){
			if ((formElements[j].disabled == false) && (formElements[j].type !="hidden")){
				try{
					formElements[j].focus();
					if (formElements[j].type=="text" || formElements[j].type=="password"){
						//formElements[j].click();
						//formElements[j].select();
					}
					break;
				}catch(e){};
			}
		}
		break;
	}
	event.returnValue = false;
}

//<SCRIPT LANGUAGE=javascript>
/*============================================================
［名称］AutoValidateBinding(自动绑定客户端验证)
［说明］本模块负责动态的绑定输入元素的验证包括数据类型，长度，是否为必须
	   输入元素等。
-----------------------------
［作者］        ［日期］
-----------------------------
Qu_yy         2001年1月16日
-----------------------------
［修订］
============================================================*/

/*
命名规则为需要一个label和input或select,textarea对应，前缀都为三位后缀应当相同
label的前缀应当为"lbl",例子见后

第一位			第二位		第三位					第四位
必须输入标志		数据类型种类	总长度					小数部分长度
  Y或者N  		数字型	   （如是数字型则包括小数点）
			浮点	N
			整数	I
			长整数	L
			字符型	S
			日期	D
			时间	T
			日期时间E
			按钮	B

	各位之间用逗号（","）隔开
	如：	要求的数据			表示为
		 必须输入的整数			Y,I
		必须输入的浮点精度为4.2	Y,N,4,2

通过关键字dwRules给元素添加控制

例如
<INPUT type="text" id=text1 name=text1 dwRules="Y,L" LANGUAGE=javascript
onkeydown="return text1_onkeydown()">
*/
var p_aryNeededElements = new Array();
var MSG_ERROR_Flag = "错误：";
var MSG_TIP_Flag = "提示：";
var MSG_ALT_Flag = "警告：";
function bindFormElements()
{
  try{
		var intFormElementsLength = document.forms[0].elements.length;
		for (var i = 0; i < intFormElementsLength;i++)
		{
			var formElement = document.forms[0].elements[i];
			if (formElement.dwRules == null) continue;
			var aryRules = formElement.dwRules.split(",");
			if (aryRules.length < 1) continue;
			switch (aryRules[0].toUpperCase())
			{
				case "Y":
					if ((formElement.type == "button")
						 ||(formElement.type =="reset")
						 ||(formElement.type == "submit")){
						break;
					}

					p_aryNeededElements[p_aryNeededElements.length] = formElement;
					break;
				case "N":
			}
			if (aryRules.length < 2) continue;
			switch (aryRules[1].toUpperCase())
			{
				case "N":
					numberBindProcess(formElement);break;
				case "I":
					integerBindProcess(formElement);break;
				case "L":
					longBindProcess(formElement);break;
				case "S":
					stringBindProcess(formElement);break;
				case "D":
					dateBindProcess(formElement);break;
				case "T":
					timeBindProcess(formElement);break;
				case "E":
					dateTimeBindProcess(formElement);break;
				case "B":
					buttonBindProcess(formElement);break;
			}
		}
	}
	catch(e)
	{}
}

//在指定的位置加入附加代码
function addCodeToEvent(position,formElement,eventName,functionName)
{
	var strOriginFunction;
		switch (eventName){
		case "onchange":
			strOriginFunction = new String(formElement.onchange);
			break;
		case "onkeydown":
			strOriginFunction = new String(formElement.onkeydown);
			break;
		case "onfocusout":
			strOriginFunction = new String(formElement.onfocusout);
			break;
		}
	var strOriginFunctionBody = "";
	if (strOriginFunction != "null")
		strOriginFunctionBody=strOriginFunction.slice(strOriginFunction.indexOf("{") + 1,strOriginFunction.lastIndexOf("}"))
	if (position == "Before")
		formElement.functionString =" if(!" + functionName + "()) return false; "+ strOriginFunctionBody;
	else
		formElement.functionString =" if(!" + strOriginFunctionBody + ") return false; return " + functionName +"();";

	var executeFunction = new Function(formElement.functionString);
	switch (eventName){

		case "onchange":
			formElement.onchange = executeFunction;
			break;
		case "onkeydown":
			formElement.onkeydown = executeFunction;
			break;
		case "onfocusout":
			formElement.onfocusout = executeFunction;
			break;
	}
}

//--------------
function numberBindProcess(formElement)
{
	//addCodeToEvent("Before",formElement,"onkeydown","numberRules");
	addCodeToEvent("Before",formElement,"onchange","numberRules");
}

function integerBindProcess(formElement){
	//addCodeToEvent("Before",formElement,"onkeydown","integerRules");
	//addCodeToEvent("Before",formElement,"onfocusout","integerRules");
	addCodeToEvent("Before",formElement,"onchange","integerRules");

}

function longBindProcess(formElement){
	//addCodeToEvent("Before",formElement,"onkeydown","longRules");
	addCodeToEvent("Before",formElement,"onchange","longRules");
}

function stringBindProcess(formElement){
	addCodeToEvent("Before",formElement,"onkeydown","stringRules");
	addCodeToEvent("Before",formElement,"onchange","stringRules");
}

function dateBindProcess(formElement){
	//formElement.insertAdjacentText("AfterEnd"," (yyyy/mm/dd)");
	addCodeToEvent("Before",formElement,"onchange","dateRules");
}

function timeBindProcess(formElement){
	formElement.insertAdjacentText("AfterEnd"," (hh:mm:ss)");
	addCodeToEvent("Before",formElement,"onchange","timeRules");
}

function dateTimeBindProcess(formElement){
	formElement.insertAdjacentText("AfterEnd"," (yyyy/mm/dd hh:mm:ss)");
	addCodeToEvent("Before",formElement,"onchange","dateTimeRules");
}

function buttonBindProcess(formElement){

	//if (formElement.id == "btnOK"){
		var strOriginFunction = new String(formElement.onclick);
		var strOriginFunctionBody = "";
		if (strOriginFunction != "null")
			strOriginFunctionBody =strOriginFunction.slice(strOriginFunction.indexOf("{") +1,strOriginFunction.lastIndexOf("}"))
			formElement.onclickString ="if(!IsAllNeededElementsFilled()){return false;};" + strOriginFunctionBody;
		var executeFunction = new Function(formElement.onclickString);
		formElement.onclick = executeFunction;
	//}

}



function numberValidate(MaxLength,MaxDecimalLength)
	{
		var EXCEPTION = "Cause Eexception"
		var src = event.srcElement;
		if (src.value==""||src.value=="-") return true;
		var currentNumber = new Number(src.value);

		var src1;
		src = event.srcElement;
		var aryRules = src.dwRules.split(",");



				if (isNaN(currentNumber))
				{

						src.value = "";
						alert(MSG_ERROR_Flag + "输入的数字不合法");
						return false;
						//throw EXCEPTION;
				}
				var strmark=aryRules[1].toUpperCase();
				if(strmark=="N")
				{
					//只允许数字和小数点，小数点只能出现一次
					//alert(allowNumberAndDecimalPoint());
					if(!allowNumberAndDecimalPoint()) {
						alert(MSG_ALT_Flag + "只允许数字和小数点，小数点只能出现一次");
						return false;
					}

				}
				if(strmark=="L"||strmark=="I")
				{
					 if(!allowNumber())
					 {
						alert(MSG_ALT_Flag + "只允许输入数字");
						return false;
					 }
				}
				if (currentNumber > Math.pow(10,MaxLength - MaxDecimalLength - 1))
				{
						alert(MSG_ALT_Flag + "输入的数字已超出限定范围");
						return false;
						//throw EXCEPTION;
				}

		return true;
}

function numberRules(){
	var src;
	src = event.srcElement;
	var aryRules = src.dwRules.split(",");
	if (aryRules.length < 3) return true;

	//允许控制键
	//if (allowControlKey()) return true;

	//只允许数字和小数点，小数点只能出现一次
	//if(!allowNumberAndDecimalPoint()) return false;

	//长度控制
	var intElementLength = aryRules[2];
	if (!lengthControl(src,intElementLength)) return false;

	//第四位为小数控制
	if (aryRules.length < 4) return true;
	var intDecimalLength = aryRules[3];
	//if (!decimalControl(src,intDecimalLength)) return false;
	return numberValidate(intElementLength,intDecimalLength);
	//return true;
}
function integerRules(){


	var src;
	src = event.srcElement;

	var aryRules = src.dwRules.split(",");
	if (aryRules.length < 2) return true;

	//允许控制键
	//if (allowControlKey()) return true;
   	//只允许数字
   	//if (!allowNumber()) return false;
   	//长度控制
	var intMaxIntegerLength = 5;
	var intElementLength = aryRules[2]>intMaxIntegerLength?intMaxIntegerLength:aryRules[2];
	if (!lengthControl(src,intElementLength)) return false;
	if (!integerValueControl(src)) return false;

	return numberValidate(intElementLength,-1);
	//return true;

}

function longRules()
{
	var src;
	src = event.srcElement;
	var aryRules = src.dwRules.split(",");
	if (aryRules.length < 2) return true;
	//允许控制键
	//if (allowControlKey()) return true;

   	//只允许数字
   	//if (!allowNumber()) return false;

   	//长度控制
	var intMaxLongLength = 10;
	var intElementLength =aryRules[2]>intMaxLongLength?intMaxLongLength:aryRules[2];
	if (!lengthControl(src,intElementLength)) return false;
	if(!longValueControl(src)) return false;
	return numberValidate(intElementLength,-1);
//	return true;
}

function integerValueControl(formElement)
{
	var lastNumber = keyCodeToNumber(event.keyCode);
	var currentNumber =  new Number(formElement.value);
	var newNumber = currentNumber * 10 + lastNumber;
	if ((newNumber > 32678)||( newNumber <-32677)) return false;

	return true;
}

function longValueControl(formElement)
{
	var lastNumber = keyCodeToNumber(event.keyCode);
	var currentNumber =  new Number(formElement.value);
	var newNumber = currentNumber * 10 + lastNumber;
	if ((newNumber > 2147483638)||(newNumber < -2147483637)) return false;

	return true;
}

function decimalControl(formElement,intDecimalLength)
{
//数字型的小数位控制
	var strThisValue = new String(formElement.value);
	var intDecimalPointPosition = strThisValue.indexOf(".");

	//没有找到小数点
	if (intDecimalPointPosition == -1) return true;
	var intRealDecimalLength = strThisValue.length - intDecimalPointPosition
	if (intRealDecimalLength > intDecimalLength)
	{
		return false;
	}
	return true;
}

function allowControlKey()
{
	if (event.keyCode == 13) return true ; //Enter
	if (event.keyCode == 0) return true ;
        //没有按下任何键,例如由click事件触发的
	if (event.keyCode == 9) return true ; //Tab
	if (event.keyCode == 46) return true ; //Delete
	if (event.keyCode == 35||event.keyCode == 36) return true ; //Home and End
	//左箭头<-，右箭头->,backspace
	if ((event.keyCode==37)||(event.keyCode==8)||(event.keyCode==39)) return true;

	//如果是编辑框并且内容是选中状态
    //没有相应的判断selected的属性
}

function allowNumber()
{
	//if ((event.keyCode==37)||(event.keyCode==8)||(event.keyCode==39)) return true;
	//if ((event.keyCode>47) && (event.keyCode<58)) return true;//1--9
	//if ((event.keyCode>95) && (event.keyCode<106))return true;//1--9
	//if ((event.keyCode==189) || (event.keyCode==109))return true;//-号
	var src;
	src = event.srcElement;
	var strx=src.value.split(".");
	if(strx.length<2) return true;
	return false;
}

function allowDecimalPoint()
{
	//小数点
	//if ((event.keyCode == 190)||(event.keyCode == 110)) return true;
	var src;
	src = event.srcElement;
	var strx=src.value.split(".");
	//alert(strx.length);
	if(strx.length<3) return true;

	return false;
}

function allowNumberAndDecimalPoint()
{
	return (allowDecimalPoint());// || allowNumber());
}

function stringRules()
{
	var src;
	src = event.srcElement;

	var aryRules = src.dwRules.split(",");
	if (aryRules.length < 3) return true;

	//允许控制键
	if (allowControlKey()) return true;

	var intElementLength = aryRules[2];
	if (!lengthControl(src,intElementLength)) return false;
	return allowChar();
}

function allowChar()
{
	return true;
}


function lengthControl(formElement,intElementLength)
{
//元素的长度控制
	var strThisValue = new String(formElement.value);
	if (strThisValue.length >= intElementLength){
		return false;
	}
	else{
		return true;
	}
}

function dateRules()
{
var EXCECPTION = "Case Exception"
	try{
			var src;
			src = event.srcElement;
			if (src.value == "") return true;
			var srcValue = new String(src.value);
			srcValue = srcValue.replace(".","/");
			srcValue = srcValue.replace(".","/");
			srcValue = srcValue.replace("-","/");
			var dtThisValue = new Date(srcValue + " 00:00:00");
			if (isNaN(dtThisValue))
			{
				src.value = "";
				throw EXCECPTION;
			}
			var formateddate  =  dtThisValue.getFullYear() +"/" + addSymbol(new String((dtThisValue.getMonth() + 1)),"0","Before",2)+ "/" +
					     addSymbol(new String((dtThisValue.getDate())),"0","Before",2);
			if (formateddate.length > 10)
			{
				src.value = "";
				throw EXCECPTION;
			}
			src.value = formateddate;
			return true;
	}
	catch(e){
		alert(MSG_ERROR_Flag + "输入的日期不合法");
		return false;
	}
}

function addSymbol(originalString,symbol,position,length){
//把字符串在指定位置加到给定长度
	var delta
	delta =  length - originalString.length
	if (delta <= 0) return originalString ;

	var addString = "";
	for(var i=0;i<delta;i++)
		addString += symbol;

	switch(position.toUpperCase()){
			case "BEFORE":
				return addString + originalString;
			break;
			case "AFTER":
				return originalString + addString;
			break;
	}
}
function timeRules()
{

	try{
		var src;
		src = event.srcElement;
		if (src.value == "") return true;
		var tmThisValue = new Date("1999/01/01 " + src.value);
		if (isNaN(tmThisValue))
		{
			alert(MSG_ERROR_Flag + "输入的时间不合法");
			src.value = "";
			return true;//false;
		}
		return true;
	}
	catch(e){
		return true;
	}
}

//--------datetime--------------
function dateTimeRules()
{
//为日期时间类型的规则
	try{
		var src;
		src = event.srcElement;
		if (src.value == "") return true;
		var srcValue = new String(src.value);
		srcValue = srcValue.replace("-","/");
		srcValue = srcValue.replace(".","/");
		var dtmThisValue = new Date(srcValue);
		if (isNaN(dtmThisValue))
		{
			alert(MSG_ERROR_Flag + "输入的日期时间不合法");
			src.value = "";
			return true;// false;
		}
		return true;
	}
	catch(e){
		return true;
	}

}

function IsAllNeededElementsFilled()
{
//检查是否所有需要输入元素都已经输入
	for (i=0; i <= p_aryNeededElements.length - 1;i++)
	{
	var aryRules=p_aryNeededElements[i].dwRules.split(",");
	var straryRules=aryRules[aryRules.length-1];
	if (p_aryNeededElements[i].value == "" && straryRules.toUpperCase()!="Y")
		{
			var strIDName = new String(p_aryNeededElements[i].id);
			var strPureName = strIDName.slice(3);
			var strMSG = "("+document.all["lbl" + strPureName].innerText +")不能为空";
			strMSG = strMSG.replace("：","");
			alert(MSG_ERROR_Flag + strMSG);
			if ((p_aryNeededElements[i].disabled == false) && (p_aryNeededElements[i].type != "hidden"))
			{
				p_aryNeededElements[i].focus();
			}
			return false;
		}
	}
	return true;
}

function keyCodeToNumber(keyCode){
//将keyCode转换为数字
	var aryNumber = new Array();

	var j = 1;
	for(var i = 48;i<58;i++){
		aryNumber[i] = j;
		j++;
	}
	j = 1;
	for(var i = 96;i<106;i++){
		aryNumber[i] = j;
		j++;
	}
	return aryNumber[keyCode];
}

/*
if (window.Event)
	document.captureEvents(Event.MOUSEUP);
function nocontextmenu(){
	event.cancelBubble = true
	event.returnValue = false;
	return false;
}
function norightclick(e){
	if (window.Event) {
		if (e.which == 2 || e.which == 3)
		return false;
	}
	else
		if (event.button == 2 || event.button == 3){
		event.cancelBubble = true
		event.returnValue = false;
		return false;
	}

}

document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
*/
document.onkeydown=new Function("return document_onkeydown()");




function SetEmpty(strstart){
	/*
	[名称] SetEmpty
	[作者] xiao_th
	[说明] 设置HTM元素的状态
	*/
	var strType;
	var objSelectedInput=document.all.tags("INPUT")
	var objSelectedSelect=document.all.tags("SELECT")
	var objSelectedSpan=document.all.tags("SPAN")
	var objSelectedArea=document.all.tags("TEXTAREA");

	for (var j=0;j<objSelectedInput.length;j++){
		strType=objSelectedInput[j].type;//|| strType.toUpperCase()=="HIDDEN"
		if (strType.toUpperCase()=="TEXT" || strType.toUpperCase()=="PASSWORD" ){
			objSelectedInput[j].value="";
		}
	}
	for (var j=0;j<objSelectedSelect.length;j++){
			objSelectedSelect[j].selectedIndex=0;
	}
	for (var j=0;j<objSelectedSpan.length;j++){
			objSelectedSpan[j].innerText="";
	}
	for (var j=0;j<objSelectedArea.length;j++){
			objSelectedArea[j].innerText="";
	}
	alert(strstart);
}

function ElementAllDisabled(args)
{
	/*
	[名称] ElementAllDisabled
	[作者] xiao_th
	[说明] 设置HTM元素的状态
	[输入] args	通过args传入HTM元素名或HTM元素类型

	[返回] 得到相应的状态
	*/
	var params = new Array;
	var len = ElementAllDisabled.arguments.length;
	var objSelectedInput=document.all.tags("INPUT")
	var objSelectedSelect=document.all.tags("SELECT")
	var objSelectedArea=document.all.tags("TEXTAREA")
	params[0] =ElementAllDisabled.arguments[0];
	for (var j=0;j<objSelectedInput.length;j++){
		if(objSelectedInput[j].readOnly!=true)
			objSelectedInput[j].disabled=params[0];
	}
	for (var j=0;j<objSelectedSelect.length;j++){
			objSelectedSelect[j].disabled=params[0];
	}
	for (var j=0;j<objSelectedArea.length;j++){
			objSelectedArea[j].disabled=params[0];
	}
	for (var i=1;i<len;i++){
		params[i] =ElementAllDisabled.arguments[i];
		var getType=typeof(params[i])
		switch(getType)
		{
		 case "string":
		    switch(params[i].toUpperCase()){
				case "BUTTON":
					var tags="INPUT"
					var type="button"
					break;
				case "SELECT":
					var tags="SELECT"
					var type="select-one"
					break;
			}
			var objInput=document.all.tags(tags);
			for (var j=0;j<objInput.length;j++){
				if(objInput[j].type==type)
				{
					objInput[j].disabled=!params[0];
				}
			}
			break;
		 case "object":
			params[i] =ElementAllDisabled.arguments[i];
			params[i].disabled=!params[0];
		}
	}
}



function document_onkeydown() {
	EnterAsTab();
}

function document_onkeydown(){
	switch (event.keyCode){
		case	123:				//F12切换广义代码
			//ChangeGYDM();
			break;
	}
	EnterAsTab();
  }



