/*----------------------------------------------------------------------
表单函数集
Version:1.0.0000.0007
更新记录:
2006-04-23
2006-04-21
2005-12-08
2005-12-04
2005-12-01
2005-11-25

创建日期:2005-11-25
作者:伍德祥
----------------------------------------------------------------------*/

/*----------------------------------------------------------------------
禁用某个表单
Version:1.0000.0002
sName:依据
iSetting:设置,不指定,则默认为1
	1:根据Name获取
	2:根据ID获取
	4:禁用被启用的
	8:启用被禁用的
	16:以sRefer为参考,即Checkbox的值必须位于名称sRefer的所有Input元素的值中
	32:限定在oContainer之中,即进行勾选的Checkbox必须是OContainer的子元素
	64:以sRefer为参考,Checkbox的值必须位于sRefer的值中
sForm:表单名或者标识,如果不指定表单,则获取页面上所有的表单
Return:所作用的个数
----------------------------------------------------------------------*/
function Disable(sName,iSetting,sForm,oContainer,sRefer)
{
	var oInputs;
	var iCount=0;
	var iSelectedNum=0;
	iSetting=iSetting==null?1:iSetting;
	if(oContainer!=null&&(iSetting&32)==32){
		try{
			oInputs=new Array();
			iCount=0;
			var oAllInputs=oContainer.getElementsByTagName("INPUT");
			while(iCount<oAllInputs.length){
				if(oAllInputs[iCount].type!="hidden"){
					oInputs[oInputs.length]=oAllInputs[iCount];
				}
				iCount++;
			}
		}
		catch(err){
			return 0;
		}
	}
	else if((iSetting&2)==2)
	{
		oInputs=new Array();
		oInputs[0]=document.getElementById(sName);
	}
	else{
		oInputs=document.getElementsByName(sName);
	}
	iCount=0;
	try{
		var sValue=new String("");
		if((iSetting&32)==32&&sRefer!=null&&sRefer!=""){
			sValue=GetInput(sRefer)+",";
		}
		if((iSetting&128)==128&&sRefer!=null&&sRefer!="")
		{
			sValue=sRefer+",";
		}
		while(iCount<oInputs.length){
			if(oInputs[iCount].tagName&&oInputs[iCount].tagName=="INPUT"){
				if((iSetting&16)==16||(iSetting&64)==64){
					if(sValue.indexOf(oInputs[iCount].value)<0){
						if((iSetting&4)==4){
							oInputs[iCount].disabled=false;
						}
						else if((iSetting&8)==8){
							oInputs[iCount].disabled=true;
						}
					}
					else{
						if((iSetting&4)==4){
							oInputs[iCount].disabled=true;
						}
						else if((iSetting&8)==8){
							oInputs[iCount].disabled=false;
						}
					}
					if(oInputs[iCount].disabled==false){
						iSelectedNum++;
					}
				}
				else{
					if((iSetting&4)==4&&oInputs[iCount].disabled==false){
						oInputs[iCount].disabled=true;
					}
					else if((iSetting&8)==8&&oInputs[iCount].disabled==true){
						oInputs[iCount].disabled=false;
					}
					if(oInputs[iCount].disabled==true){
						iSelectedNum++;
					}
				}
			}
			iCount++;
		}
	}
	catch(err){
	}
	return iSelectedNum;
}
/*----------------------------------------------------------------------
获取某个表单的字段的选择个数
Version:1.0000.0001
sName:依据
sForm:表单名或者标识,如果不指定表单,则获取页面上所有的表单
iSetting:设置,不指定,则默认为1
	1:根据Name获取
	2:根据ID获取
Return:所勾选的个数
----------------------------------------------------------------------*/
function GetSelectedNum(sName,sForm,iSetting){
	var oValues;
	var iCount=0;
	if(iSetting==null){
		iSetting=1;
	}
	if((iSetting&2)==2){
		oValues=document.getElementById(sName);
		if(oValues==null){
			return -1;
		}
		else if(oValues.type=="checkbox"||oValues.type=="radio"){
			if(oValues.checked&&oValues.value!="")
			{
				return 1;
			}
			else
			{
				return 0;
			}
		}
		else if(oValues.value!="")
		{
			return 1;
		}
		else
		{
			return 0;
		}
	}
	if(sForm==null){
		oValues=document.getElementsByName(sName);
	}
	else{
		var oForm=GetForm(sForm);
		if(oForm==null){
			return -1;
		}
		var oInputs=oForm.getElementsByTagName("input");
		var oSelects=oForm.getElementsByTagName("select");
		var oTexts=oForm.getElementsByTagName("textarea");
		oValues=new Array();
		var iCountS=0;
		//获取Input集合
		iCount=0;
		while(iCount<oInputs.length){
			if(oInputs[iCount].name==sName){
				oValues[iCountS++]=oInputs[iCount];
			}
			iCount++;
		}
		//获取Select集合
		iCount=0;
		while(iCount<oSelects.length){
			if(oSelects[iCount].name==sName){
				oValues[iCountS++]=oSelects[iCount];
			}
			iCount++;
		}
		//获取Textarea集合
		iCount=0;
		while(iCount<oTexts.length){
			if(oTexts[iCount].name==sName){
				oValues[iCountS++]=oTexts[iCount];
			}
			iCount++;
		}
	}
	var iSelectedNum=0;
	while(iCount<oValues.length){
		var oValue=oValues[iCount];
		if(oValue.type=="checkbox"||oValue.type=="radio"){
			if(oValue.checked==false){
				iCount++;
				continue;
			}
		}
		if(oValues[iCount].value!="")
		{
			iSelectedNum++;
		}
		iCount++;
	}
	return iSelectedNum;
}

/*----------------------------------------------------------------------
设置某个表单的值
Version:1.0000.0001
sName:依据
sValue:要设置的值
sForm:表单名或者标识,如果不指定表单,则设置页面上所有的表单
iSetting:设置,不指定,则默认为1
	1:根据Name设置
	2:根据ID设置
	4:设置表单的值得同时勾选表单
Return:NULL
----------------------------------------------------------------------*/
function SetInput(sName,sValue,sForm,iSetting)
{
	var oValues;
	var iCount=0;
	if(iSetting==null){
		iSetting=1;
	}
	if(iSetting==2){
		oValues=document.getElementById(sName);
		if(oValues==null){
			return -1;
		}
		else{
			oValues.value=sValue;
			if((iSetting&4)==4)
			{
				if(oValues.type=="checkbox"||oValues.type=="radio")
				{
					oValues.checked=true;
				}
			}
		}
	}
	if(sForm==null){
		oValues=document.getElementsByName(sName);
	}
	else{
		var oForm=GetForm(sForm);
		if(oForm==null){
			return -2;
		}
		var oInputs=oForm.getElementsByTagName("input");
		var oSelects=oForm.getElementsByTagName("select");
		var oTexts=oForm.getElementsByTagName("textarea");
		oValues=new Array();
		var iCountS=0;
		//获取Input集合
		iCount=0;
		while(iCount<oInputs.length){
			if(oInputs[iCount].name==sName){
				oValues[iCountS++]=oInputs[iCount];
			}
			iCount++;
		}
		//获取Select集合
		iCount=0;
		while(iCount<oSelects.length){
			if(oSelects[iCount].name==sName){
				oValues[iCountS++]=oSelects[iCount];
			}
			iCount++;
		}
		//获取Textarea集合
		iCount=0;
		while(iCount<oTexts.length){
			if(oTexts[iCount].name==sName){
				oValues[iCountS++]=oTexts[iCount];
			}
			iCount++;
		}
	}
	while(iCount<oValues.length){
		var oValue=oValues[iCount];
		if((iSetting&4)==4)
		{
			if(oValue.type=="checkbox"||oValue.type=="radio")
			{
				oValue.checked=true;
			}
		}
		oValue.value=sValue;
		iCount++;
	}
}

/*----------------------------------------------------------------------
自动勾选某类Checkbox
Version:1.0000.0004
sName:表单名称
iRange:勾选方式
	1:勾选未勾选的
	2:取消已勾选的
	4:勾选指定的iNumber数目
	8:勾选iSelectedNumber数目,且iSelectedNumber自增1
	16:勾选iSelectedNumber数目,且iSelectedNumber自减1
	32:以sRefer为参考,即Checkbox的值必须位于名称sRefer的所有Input元素的值中
	64:限定在oContainer之中,即进行勾选的Checkbox必须是OContainer的子元素
	128:以sRefer为参考,Checkbox的值必须位于sRefer的值中
iNumer:最多勾选的个数
sRefer:参考值
oContainer:容器 所勾选的Check
----------------------------------------------------------------------*/
function Select(sName,iRange,iNumber,sRefer,oContainer){
	var oInputs;
	var iCount=0;
	var iSelectedNum=0;
	iRange=iRange==null?1:iRange;
	iNumber=iNumber==null?9999:iNumber;
	if(oContainer!=null&&(iRange&64)==64){
		try{
			oInputs=new Array();
			iCount=0;
			var oAllInputs=oContainer.getElementsByTagName("INPUT");
			while(iCount<oAllInputs.length){
				if(oAllInputs[iCount].type=="checkbox"){
					oInputs[oInputs.length]=oAllInputs[iCount];
				}
				iCount++;
			}
		}
		catch(err){
			return 0;
		}
	}
	else{
		oInputs=document.getElementsByName(sName);
	}
	iCount=0;
	window.execScript("var iSelectedNumber"+sName+"=0;","javascript");
	if((iRange&4)!=4){
		iNumber=oInputs.length;
	}
	else{
		if(iNumber==null){
			iNumber=oInputs.length;
		}
	}
	if((iRange&8)==8){
		iNumber=eval("iSelectedNumber"+sName);
		if(iNumber<oInputs.length){
			iNumber++;
			window.execScript("iSelectedNumber"+sName+"++;","javascript");
		}
	}
	if((iRange&16)==16){
		iNumber=eval("iSelectedNumber"+sName);
		if(iNumber>0){
			iNumber--;
			window.execScript("iSelectedNumber"+sName+"--;","javascript");
		}
	}
	try{
		var sValue=new String("");
		if((iRange&32)==32&&sRefer!=null&&sRefer!=""){
			sValue=GetInput(sRefer)+",";
		}
		if((iRange&128)==128&&sRefer!=null&&sRefer!="")
		{
			sValue=sRefer+",";
		}
		while(iCount<oInputs.length||iNumber<1){
			if(oInputs[iCount].tagName&&oInputs[iCount].tagName=="INPUT"){
				if(oInputs[iCount].type=="checkbox"){
					if((iRange&32)==32||(iRange&128)==128){
						if(sValue.indexOf(oInputs[iCount].value)<0){
							if((iRange&1)==1){
								oInputs[iCount].checked=false;
							}
							else if((iRange&2)==2){
								oInputs[iCount].checked=true;
							}
						}
						else{
							if((iRange&1)==1){
								oInputs[iCount].checked=true;
							}
							else if((iRange&2)==2){
								oInputs[iCount].checked=false;
							}
						}
						if(oInputs[iCount].checked==true){
							iSelectedNum++;
						}
					}
					else{
						if((iRange&1)==1&&oInputs[iCount].checked==false){
							oInputs[iCount].checked=true;
						}
						else if((iRange&2)==2&&oInputs[iCount].checked==true){
							oInputs[iCount].checked=false;
						}
						if(oInputs[iCount].checked==true){
							iSelectedNum++;
						}
					}
					iNumber--;
				}
			}
			iCount++;
		}
	}
	catch(err){
	}
	return iSelectedNum;
}

/*----------------------------------------------------------------------
使某个字段获得焦点
Version:1.0000.0003
sName:字段名
Return:
	-1:字段不存在
	0:成功聚焦
	1:字段存在 但是聚焦失败 可能字段已经隐藏
----------------------------------------------------------------------*/
function Focus(sName){
	var oInputs=document.getElementsByName(sName);
	var iCount=0;
	while(iCount<oInputs.length){
		try
		{
			oInputs[iCount].focus();
			return 0;
		}
		catch(err)
		{
		}
		iCount++;
	}
	return iCount==0?-1:1;
}


/*----------------------------------------------------------------------
获取某个表单的字段
Version:1.0000.0004
sName:依据
sForm:表单名或者标识,如果不指定表单,则获取页面上所有的表单
Return:NULL
iSetting:设置,不指定,则默认为1
	1:根据Name获取
	2:根据ID获取
----------------------------------------------------------------------*/
function GetInput(sName,sForm,iSetting){
	var oValues;
	var iCount=0;
	if(iSetting==null){
		iSetting=1;
	}
	if((iSetting&2)==2){
		oValues=document.getElementById(sName);
		if(oValues==null){
			return "";
		}
		else{
			return oValues.value;
		}
	}
	if(sForm==null){
		oValues=document.getElementsByName(sName);
	}
	else{
		var oForm=GetForm(sForm);
		if(oForm==null){
			return "";
		}
		var oInputs=oForm.getElementsByTagName("input");
		var oSelects=oForm.getElementsByTagName("select");
		var oTexts=oForm.getElementsByTagName("textarea");
		oValues=new Array();
		var iCountS=0;
		//获取Input集合
		iCount=0;
		while(iCount<oInputs.length){
			if(oInputs[iCount].name==sName){
				oValues[iCountS++]=oInputs[iCount];
			}
			iCount++;
		}
		//获取Select集合
		iCount=0;
		while(iCount<oSelects.length){
			if(oSelects[iCount].name==sName){
				oValues[iCountS++]=oSelects[iCount];
			}
			iCount++;
		}
		//获取Textarea集合
		iCount=0;
		while(iCount<oTexts.length){
			if(oTexts[iCount].name==sName){
				oValues[iCountS++]=oTexts[iCount];
			}
			iCount++;
		}
	}
	var sValue="";
	while(iCount<oValues.length){
		var oValue=oValues[iCount];
		if(oValue.disabled==true)
		{
			iCount++;
			continue;
		}
		if(oValue.type=="checkbox"||oValue.type=="radio"){
			if(oValue.checked==false){
				iCount++;
				continue;
			}
		}
		if(sValue==""){
			sValue=oValue.value;
		}
		else{
			sValue+=","+oValue.value;
		}
		iCount++;
	}
	return sValue;
}

/*----------------------------------------------------------------------
获取表单对象
Version:1.0000.0001
sName:表单名
Return:
	NULL:空 表单不存在
	表单对象
----------------------------------------------------------------------*/
function GetForm(sName){
	var oForm=document.forms[sName];
	var iCount;
	if(oForm==null){
		oForm=document.getElementById(sName);
		if(oForm==null){
			var oForms=document.getElementsByTagName("form");
			iCount=0;
			while(iCount<oForms.length){
				if(oForms[iCount].name==sName){
					oForm=oForms[iCount];
					break;
				}
				iCount++;
			}
		}
	}
	return oForm;
}