﻿/*====================================
公用函数
1.left(string,length)				从字符左边起取字符
2.middle(string,start,length)			取字符中间字符
3.right(string,length)				从字符右边起取字符
4.Ltrim(string)						去掉前导空格
5.Rtrim(string)						去掉后续空格
6.trim(string)						去掉前导、后续空格
7.Replace(String,oldChar,newChar)		用newChar替换String中的oldChar
8.ChangeStringIndex(String,i,ch)		用ch替换字符串中第i位
9.split(String,delimiter)			返回基于 0 的一维数组，可x=split()，取x[0]、x[1]的值


10.CheckLength(thisForm,FieldName,Label,minLen,maxLen)			检查某表单域长度合法性,其中thisForm是表单对象(使用this.form)，不是表单名
11.CheckInteger(thisForm,FieldName,Label,min,max)			检查某表单域是否为整型,其中thisForm是表单对象，不是表单名,min为最小值,max为最大值
12.CheckFormDateFormat(thisForm,FieldName,Label)			检查某表单域是否为日期型,其中thisForm是表单对象，不是表单名
13.CheckFloat(thisForm,FieldName,Label,min,max)				检查某表单域是否为浮点数字型,其中thisForm是表单对象，不是表单名
14.IsCheckedOne(thisForm,FieldName,Label)				检查一（组）列表框中是否至少选择了一个，thisform为表单对象
15.CheckSelect(thisForm,FieldName,Label)				检查某表单选择是否有效，thisform为表单对象 用于下拉列表

16.IsNumFloat(str)							是否为浮点数字(字符)
17.IsNumInt(str)							是否为整数
18.isWhitespace (s)						    	s是否为空或是空格
19.IsPhone(thisform,FieldName,Lable)		是否为电话号码，thisform为表单对象
20.IsEmail(thisform,FieldName,Lable)		是否为正确电子邮件，thisform为表单对象
21.IsPostalCode(thisform,FieldName,Lable)	是否为邮编，thisform为表单对象


22.getFieldCount(thisForm,FieldName)		在表单thisForm中查找名为FieldName的表单元素的个数
23.FieldSum(thisform,FieldName)			计算表单中相同名字的域的和，thisform为表单对象，这里的thisfield相当于document.formname.fieldname
24.GetFieldValue(thisform,FieldName)		得到页面中某个表单元素的值，不存在返回 "",一个元素返回“aaa”,多个元素时返回“aaa,bbb,ccc”

25.TabDelRow(thistable,rowno)			删除指定行号为rowno的表格行，thistable为表格名
26.deleterow(tb,chk,thisForm)			删除选中行
27.myround(str,sln)						返回将str四舍五入的值，sln代表精确的尾数
28.sel_date(Str_Name,Str_Year,Str_Month,Str_Day)
								下拉框形式的日期，传入下拉框名称：Str_Name，
								结果为(str_name)_y,(str_name)_m,(str_name)_d，
								要显示的日期Str_Year,Str_Month,Str_Day
										
29.function IsNotPNum(str)			判断是否正数 是：false否: true

30.function PassWordGrade(temp)    判断用户输入的密码级别，分高级，中级，简单
31.function CheckFileSize(filename)   检查文件大小

====================================*/



//------------------------------字符操作函数-----------------------------------


/*====================================
1.从字符左边起取字符
======================================*/
function left(String,length)
{
	return String.substr(0,length);
}


/*====================================
2.取字符中间字符
======================================*/
function middle(String,start,length)
{
	var from=(start<1)?0:start-1;
	return String.substring(from,from+length);
}

/*====================================
3.从字符右边起取字符
======================================*/
function right(String,length)
{
	var strlen=String.length;
	return middle(String,strlen-length+1,length);
}

/*====================================
4.去掉前导空格
======================================*/
function Ltrim(String)
{
	for(var i=0;i<String.length;i++)
		if(String.charAt(i)!=' ')
			break;
	return middle(String,i+1,String.length);
}

/*====================================
5.去掉后续空格
======================================*/
function Rtrim(String)
{
	for(var i=String.length-1;i>0;i--)
		if(String.charAt(i)!=' ')
			break;
	return left(String,i+1);
}

/*====================================
6.去掉前导、后续空格
======================================*/
function trim(String)
{
	return Rtrim(Ltrim(String));
}


/*====================================
7.用newChar替换String中的oldChar
======================================*/
function Replace(String,oldChar,newChar)
{
	var DataStr=new Array();
	var newString="";
	if(trim(String).length==0)
		return String;
	DataStr=split(String,oldChar);
	for(var i=0;i<DataStr.length;i++)
		newString=newString+DataStr[i]+newChar;
	newString=left(newString,newString.length-1);
	return newString;
}


/*====================================
8.用ch替换字符串中第i位
======================================*/
function ChangeStringIndex(String,i,ch)
{
	if(i<1 || i>String.length)
		return String;
	return left(String,index-1)+ch+right(String,String.length-index);
}

/*====================================
9.返回基于 0 的一维数组，可x=split()，取x[0]、x[1]的值
======================================*/
function split(String,delimiter)
{
	var newString=trim(String);
	var position=newString.indexOf(delimiter);
	var command="var StringArray=new Array(\"";
	while(position!=-1)
	{
		command=command+trim(middle(newString,1,position))+"\",\"";
		newString=middle(newString,position+2,newString.length);
		position=newString.indexOf(delimiter);
	}
	command=command+newString+"\");";
	eval(command);
	return StringArray;
}



//------------------------------验证操作函数-----------------------------------


/*====================================
10.检查某表单域长度合法性
thisForm：表单对象(传入this.form)，不是表单名
Label：提示信息传入
minLen：最小长度
maxLen：最大长度
======================================*/
function CheckLength(thisForm,FieldName,Label,minLen,maxLen)
{ 
	//var illegalChar="' " + '" = %';
	var illegalChar="' " + '" =';
	var thisField;
	var fieldValue;
	var aIllegalChar=illegalChar.split(" ")

	eval("thisField=thisForm."+FieldName);
	if(getFieldCount(thisForm,FieldName)>1)
	{
		for(var i=0;i<thisField.length;i++)
		{
			fieldValue=trim(thisField[i].value);
			if(minLen==1 && fieldValue.length<minLen)
			{
				alert("<"+Label+">必须填写！")
				thisField[i].focus();
				return (false);
			}	
			if(fieldValue.length<minLen)
			{
				alert("在<"+Label+">域中，请至少输入 "+minLen+" 个字符");
				thisField[i].focus();
				return (false);
			}
			if(fieldValue.length>maxLen)
			{
				alert("在<"+Label+">域中，请至多输入 "+maxLen+" 个字符");
				thisField[i].focus();
				return (false);
			}
			for(var j=0;j<aIllegalChar.length;j++){
				if(fieldValue.indexOf(aIllegalChar[j])!=-1){
					alert("在<"+Label+">不能包含字符"+illegalChar);
					thisField[i].focus();
					return (false);
				}
			}
		}
	}
	if(getFieldCount(thisForm,FieldName)==1)
	{
		fieldValue=trim(thisField.value);
		if(minLen==1 && fieldValue.length<minLen)
		{
			alert("<" + Label + ">必须填写！")
			thisField.focus();
			return (false);
		}
		if(fieldValue.length<minLen)
		{
			alert("在<"+Label+">域中，请至少输入 "+minLen+" 个字符");
			thisField.focus();
			return (false);
		}
		if(fieldValue.length>maxLen)
		{
			alert("在<"+Label+">域中，请至多输入 "+maxLen+" 个字符");		
			thisField.focus();
			return (false);
		}
		for(var j=0;j<aIllegalChar.length;j++){
			if(fieldValue.indexOf(aIllegalChar[j])!=-1){
				alert("在<"+Label+">不能包含字符"+illegalChar);
				thisField.focus();
				return (false);
			}
		}
	}
	return (true);
}



/*====================================
11.检查某表单域是否为整型,其中thisForm是表单对象，不是表单名
thisForm：表单对象(传入this.form)，不是表单名
Label：提示信息传入
min为最小值,max为最大值，不限定上下限传入“*”
======================================*/
function CheckInteger(thisForm,FieldName,Label,min,max)
{

	var thisField;
	var checkOK = "0123456789-";
	eval("thisField=thisForm."+FieldName);
	
	
	if(getFieldCount(thisForm,FieldName)>1)
	{
		for(var k=0;k<thisField.length;k++)
		{
			var checkStr=trim(thisField[k].value);
			var allValid = true;
			var decPoints = 0;
			var allNum = "";

			if (checkStr == "")
			{
			//	alert("请在<"+Label+">域中输入值。");
			//	thisField[k].focus();
			//	return (false);
				continue;
			}

			for (i = 0;  i < checkStr.length;  i++)
			{
				ch = checkStr.charAt(i);
				for (j = 0;  j < checkOK.length;  j++)
					if (ch == checkOK.charAt(j))
						break;
				if (j == checkOK.length)
				{
					allValid = false;
					break;
				}
				allNum += ch;
			}
			if (!allValid)
			{
				alert("在<"+Label+">域中，只能输入数字");
				thisField[k].focus();
				return (false);
			}

			var chkVal = allNum;
			var prsVal = parseInt(allNum,10);
			if (chkVal != "" && min!="*" && !(prsVal >= min))
			{
				alert("请在<"+Label+">域中输入值大于或等于["+min+"]的整数。");
				thisField[k].focus();
				return (false);
			}
			
			if (chkVal != "" &&max!="*" && !(prsVal <= max))
			{
				alert("请在<"+Label+">域中输入值小于或等于["+max+"]的整数。");
				thisField[k].focus();
				return (false);
			}
		}
	}
	if(getFieldCount(thisForm,FieldName)==1)
	{
		var checkStr=trim(thisField.value);
		var allValid = true;
		var decPoints = 0;
		var allNum = "";
		if (checkStr == "")
		{
		//	alert("请在<"+Label+">域中输入值。");
		//	thisField.focus();
		//	return (false);
			return (true);
		}

		for (i = 0;  i < checkStr.length;  i++)
		{
			ch = checkStr.charAt(i);
			for (j = 0;  j < checkOK.length;  j++)
				if (ch == checkOK.charAt(j))
					break;
			if (j == checkOK.length)
			{
				allValid = false;
				break;
			}
			allNum += ch;
		}
		if (!allValid)
		{
			alert("在<"+Label+">域中，只能输入数字");
			thisField.focus();
			return (false);
		}
	
		var chkVal = allNum;
		var prsVal = parseInt(allNum,10);
		if (chkVal != "" && min!="*" && !(prsVal >= min))
		{
			alert("请在<"+Label+">域中输入值大于或等于["+min+"]的整数。");
			thisField.focus();
			return (false);
		}
		
		if (chkVal != "" &&max!="*" && !(prsVal <= max))
		{
			alert("请在<"+Label+">域中输入值小于或等于["+max+"]的整数。");
			thisField.focus();
			return (false);
		}
	}
	return (true);
}



/*====================================
12.检查某表单域是否为日期型,其中thisForm是表单对象，不是表单名
thisForm：表单对象(传入this.form)，不是表单名
Label：提示信息传入
min为最小值,max为最大值，不限定上下限传入“*”
======================================*/
function CheckFormDateFormat(thisForm,FieldName,Label)
{
	var thisField;
	eval("thisField=thisForm."+FieldName);
	if(getFieldCount(thisForm,FieldName)>1)
	{
		for(var k=0;k<thisField.length;k++)
		{
			var checkStr=trim(thisField[k].value);
			if (CheckDateFormat(checkStr) == false)
			{
				thisField[k].focus();
				return (false);
			}
		}
	}
	
	if(getFieldCount(thisForm,FieldName)==1)
	{
		var checkStr=trim(thisField.value);
	
		if (CheckDateFormat(checkStr) == false)
		{
			thisField.focus();
			return (false);
		}
	}
	return (true);
}




/*====================================
13.检查某表单域是否为浮点数字型,其中thisForm是表单对象，不是表单名
thisForm：表单对象(传入this.form)，不是表单名
Label：提示信息传入
min为最小值,max为最大值，不限定上下限传入“*”
======================================*/
function CheckFloat(thisForm,FieldName,Label,min,max)
{	
	var thisField;
	eval("thisField=thisForm."+FieldName);
	
	if(getFieldCount(thisForm,FieldName)>1)
	{		
		for(var i=0;i<thisField.length;i++)
		{
			var checkStr=trim(thisField[i].value);
			if (checkStr == "")
			{				
			    alert("请在<"+Label+">域中输入值。");
				thisField[i].focus();
				return (false);
				//continue;
			}
			
			var allValid = IsNumFloat(checkStr);
			if (!allValid)
			{
				alert("在<"+Label+">域中，只能输入数字");
				thisField[i].focus();
				return (false);
			}
	
			var prsVal = eval(checkStr);
			if (checkStr != "" && min!="*" && !(prsVal >= min))
			{
				alert("请在<"+Label+">域中输入值大于或等于["+min+"]的数。");
				thisField[i].focus();
				return (false);
			}
		
			if (checkStr != "" &&max!="*" && !(prsVal <= max))
			{
				alert("请在<"+Label+">域中输入值小于或等于["+max+"]的数。");
				thisField[i].focus();
				return (false);
			}
		}	
	}
	if(getFieldCount(thisForm,FieldName)==1)
	{
		//alert(thisField.value);

		var checkStr=trim(thisField.value);

		if (checkStr == "")
		{
			alert("请在<"+Label+">域中输入值。");
			thisField.focus();
			return (false);
			//return (true);
		}
		
		var allValid = IsNumFloat(checkStr);
		if (!allValid)
		{
			alert("在<"+Label+">域中，只能输入数字");
			thisField.focus();
			return (false);
		}
	
		var prsVal = eval(checkStr);
		if (checkStr != "" && min!="*" && !(prsVal >= min))
		{
			alert("请在<"+Label+">域中输入值大于或等于["+min+"]的数。");
			thisField.focus();
			return (false);
		}
	
		if (checkStr != "" &&max!="*" && !(prsVal <= max))
		{
			alert("请在<"+Label+">域中输入值小于或等于["+max+"]的数。");
			thisField.focus();
			return (false);
		}
	}
	return (true);
}


/*====================================
14.检查一（组）列表框中是否至少选择了一个，thisform为表单对象
======================================*/
function IsCheckedOne(thisForm,FieldName,Label)
{
	var thisField;
	var fcount=getFieldCount(thisForm,FieldName);
	eval("thisField=thisForm."+FieldName);
	if(fcount<1)
	{
		alert("页面中没有可以选择的"+Label+">！");
		return false;
	}
	if(fcount==1 && thisField.checked==false)
	{
		alert("必须选择一个<"+Label+">！");
		return false;
	}
	if(fcount>1)
	{
		for(var i=0;i<fcount;i++)
			if(thisField[i].checked)
				break;
		if(i==fcount)
		{
			alert("必须选择一个<"+Label+">！");
			return false;
		}
	}
	return true;
}


/*====================================
15.检查某表单选择是否有效，thisform为表单对象  用于下拉列表
=======================================*/
function CheckSelect(thisForm,FieldName,Label)
{
	var thisField;
	eval("thisField=thisForm."+FieldName);
	if(getFieldCount(thisForm,FieldName)>1)
	{
		for(var i=0;i<thisField.length;i++)
		{
			if(thisField[i].selectedIndex==0)
			{
				alert("请选择<" + Label +">！")
				thisField[i].focus();
				return false;
			}
		}
	}
	if(getFieldCount(thisForm,FieldName)==1)
	{
		if(thisField.selectedIndex==0)
		{
			alert("请选择<" + Label +">！")
			thisField.focus();
			return false;
		}
	}
	return (true);
}



/*====================================
16.是否为浮点数字(字符)
=======================================*/
function IsNumFloat(str)
{
	i=0;
	j=0;
	k=0;
	if(str+""=="")
	{		
		return false;
	}	
	while(i<str.length)
	{
		if ( (str.charAt(i)<'0'||str.charAt(i)>'9') && str.charAt(i)!='.' && str.charAt(i)!='-' )
			return false;
		if (str.charAt(i)=='.') j++;
		if (str.charAt(i)=='-') k++;
		i++;
	}
	if (j>1) return(false);
	if (k>1) return(false);
	return true;
}

/*====================================
17.是否为整数
=======================================*/
function IsNumInt(str)
{
	i=0;
	j=0;
	while(i<str.length)
	{
		if ( (str.charAt(i)<'0' || str.charAt(i)>'9') && str.charAt(i)!='-' )
			return false;
		if (str.charAt(i)=='-') j++;
		i++;
	}
	if (j>1) return(false);
	return true;
}

/*====================================
18.是否为空或是空格
=======================================*/
function isWhitespace (s) 
{
	var whitespace = " \t\n\r";
	if ((s == null) || (s.length == 0)) return true;
	var i;		
	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		if (whitespace.indexOf(c) != -1) 
		   continue;
		else
		  return false;
	}
	return true;
}

/*====================================
19.是否为电话号码
=======================================*/
function IsPhone(thisform,FieldName,Lable)
{
	var digits = "0123456789-()/;转 ";
	var i=0;
	var j=0;
	var thisfield;
	var fcount;
	
	thisfield=eval("thisform."+FieldName);
	fcount=getFieldCount(thisform,FieldName);
	if(fcount==1)
	{
		str=trim(thisfield.value);
		
		if(str=="")
			return (true);
		
		while ((i < str.length))
		{
			if (digits.indexOf(str.charAt(i)) == -1)
			{
				alert("<"+Lable+">输入不正确！");
				thisfield.focus();
				return false;
			}
			i++;
		}
		if (i<6)
		{
			alert("<"+Lable+">输入不正确！");
			thisfield.focus();
			return false;
		}
	}
	if(fcount>1)
	{
		for(var k=0;k<fcount;k++)
		{
			i=0;
			j=0;
			str=trim(thisfield[k].value);
	
			if(str=="")
				continue;
	
			while ((i < str.length))
			{
				if (digits.indexOf(str.charAt(i)) == -1)
				{
					alert("<"+Lable+">输入不正确！");
					thisfield[i].focus();
					return false;
				}
				i++;
			}
			if (i<6)
			{
				alert("<"+Lable+">输入不正确！");
				thisfield[i].focus();
				return false;
			}
		}
	}
	return true;
}
/*====================================
20.是否为正确电子邮件
=======================================*/
function IsEmail(thisform,FieldName,Lable)
{
	var thisfield;
	var fcount;
	var i;
	var j;
	thisfield=eval("thisform."+FieldName);
	fcount=getFieldCount(thisform,FieldName);
	if(fcount==1)
	{
		str=trim(thisfield.value);
		if(str=="")
		{
			alert("<"+Lable+">不能为空！")
			thisfield.focus();
			return false;
			//return (true);
		}
		i=str.indexOf("@");
		if (i<=1)
		{
			alert("<"+Lable+">输入不正确！")
			thisfield.focus();
			return false;
		}
		else
		{
			str_tmp=str.substring(i,str.length);
			j=str_tmp.indexOf(".");
			
			if (j<=1 || j==str_tmp.length-1)
			{
				alert("<"+Lable+">输入不正确！")
				thisfield.focus();
				return false;
			}
		}
	}
	if(fcount>1)
	{
		for(var k=0;k<fcount;k++)
		{
			str=trim(thisfield[k].value);
			if(str=="")
				continue;
		
			i=str.indexOf("@");
			if (i<=1)
			{
				alert("<"+Lable+">输入不正确！")
				thisfield[k].focus();
				return false;
			}
			else
			{
				str_tmp=str.substring(i,str.length);
				j=str_tmp.indexOf(".");
				if (j<=1 || j==str_tmp.length-1)
				{
					alert("<"+Lable+">输入不正确！")
					thisfield[k].focus();
					return false;
				}
			}
		}
	}
	return true;
}


/*====================================
21.是否为邮编
=======================================*/
function IsPostalCode(thisform,FieldName,Lable)
{
	var thisfield;
	var fcount;
	var i;
	var j;
	thisfield=eval("thisform."+FieldName);
	fcount=getFieldCount(thisform,FieldName);
	if(fcount==1)
	{
		str=trim(thisfield.value);
		
		if(str=="")
			return (true);
		
		if ( !(str.length==6 && IsNumInt(str)) )
		{
			alert("<"+Lable+">输入不正确！")
			thisfield.focus();
			return false;
		}
	}
	if(fcount>1)
	{
		for(var k=0;k<fcount;k++)
		{
			str=trim(thisfield[k].value);
			
			if(str=="")
				continue;
			
			if ( !(str.length==6 && IsNumInt(str)) )
			{
				alert("<"+Lable+">输入不正确！")
				thisfield[k].focus();
				return false;
			}
		}
	}
	return true;
}


//------------------------------操作函数-----------------------------------


/*====================================
22.在表单thisForm中查找名为FieldName的表单元素的个数
=======================================*/
function getFieldCount(thisForm,FieldName)
{
	var fieldcount=0;	
	for(var i=0;i<thisForm.length;i++)
	{
		var formfield=thisForm.elements[i];		
		if(formfield.name==FieldName)
			fieldcount++;
	}
	return fieldcount;
}

/*====================================
23.计算表单中相同名字的域的和
=======================================*/
function FieldSum(thisform,FieldName)
{
	var FSum=0;
	var thisfield;
	if(getFieldCount(thisform,FieldName)==0)
		return "";
		
	if(getFieldCount(thisform,FieldName)==1)
	{
	//这里的thisfield相当于document.formname.fieldname
		eval("thisfield=thisform."+FieldName);
		if(IsNumFloat(thisfield.value)&& trim(thisfield.value).length>0)
			return eval(thisfield.value);
		else
			return "";
	}
	
	eval("thisfield=thisform."+FieldName);
	for(var i=0;i<thisfield.length;i++)
	{
		
		if(IsNumFloat(thisfield[i].value)&& trim(thisfield[i].value).length>0)
			{
			FSum=FSum+eval(thisfield[i].value);
			}
	}
	return FSum;
}

/*====================================
24.得到页面中某个表单元素的值
不存在返回 ""
一个元素返回一个值“yyyy”
多个元素时返回按“，”分隔的字符串 如：“ddd,ttt,aaa”
=======================================*/
function GetFieldValue(thisform,FieldName)
{
	var c=getFieldCount(thisform,FieldName)
	if (c+""=="")
		return "";
	if (c==1)
		{
		eval("thisField=thisform."+FieldName);
		return thisField.value;
		}
	else
		{
		eval("thisField=thisform."+FieldName);
		var FieldValue=""
		var NewFieldValue=""
		for (i=0;i<c;i++)
				{
				var ccc=thisField[i].value;
				FieldValue=FieldValue + "," + ccc
				}
		NewFieldValue=middle(FieldValue,2,FieldValue.length);
		return NewFieldValue;	
		}
}

/*====================================
25.删除指定行号的表格行
=======================================*/
function TabDelRow(thistable,rowno)
{
	var i;
	var rows;
	var check;
	table=eval('document.all.'+ thistable);
	rows=table.rows.length-1;
	if(rows<0)
		alert('表格没有该行！');
	else
	{
		if( (rows>=rowno) && (rowno>=0) )
		{
			table.deleteRow(rowno);
		}
		else
		{
			alert('表格没有该行！');
		}
	}
}

/*====================================
26.删除选中行
=======================================*/
function deleterow(tb,chk,thisForm)
{
	var i;
	var rows;
	var check;
	var objitemnum;
	var str;
	var beChecked=false;
	var bDeleted=false;
	var table=eval(tb);
	rows=table.rows.length-1;
	if(rows==0)
      alert('没有记录');
	else
	{
		if (rows==1)
		{  
			check=eval(thisForm+'.'+chk)
			if(eval(thisForm+'.'+chk+'.length')==1)
			check=eval(thisForm+'.'+chk+'[0]')
				if(check.checked)
				{
					table.deleteRow(1);
					beChecked = true;	
					bDeleted=true;
				}
		}
		else
			for(i=rows;i>0;i--)
			{
				check=eval(thisForm+'.'+chk+'['+(i-1)+']')
				if(check.checked)
				{
					table.deleteRow(i);
					beChecked = true;
					bDeleted=true;
				}   
			}
	if (!beChecked) alert("请选择");
	}
 }


/*====================================
27.返回将str四舍五入的值，sln代表精确的尾数
=======================================*/
function myround(str,sln) 
{
	var idx;
	var po;
	//不是数值,不处理
	str=str.toString();
	if(isNaN(parseFloat(str)))
		return null;
	if(isNaN(parseInt(sln,10)))
		return null;
	idx=str.indexOf(".");
	idx2=str.length-idx-1;
	//没有小数点,补齐适当的0
	if(idx<=0)
	{
		str=str+".";
		for(i=0;i<sln;i++)
			str=str+'0';
		return str;
	}
	if(idx2<sln)
	{
		for(i=0;i<sln-idx2;i++)
			str=str+'0';
		return str;
	}    
	po=Math.pow(10,parseInt(sln,10)+1);
	str2=str.substr(0,parseInt(idx,10)+parseInt(sln,10)+2);
	int2=parseInt(parseFloat(str2)*po,10);
 
	if(int2 % 10>=5)
		int2=int2+10;
	str3=(int2/po).toString();
	str3=str3.substr(0,parseInt(idx,10)+parseInt(sln,10)+1);
	return str3;
}


/*====================================
28.下拉框形式的日期，传入下拉框名称：Str_Name，
结果为(str_name)_year,(str_name)_month,(str_name)_day，
要显示的日期Str_Year,Str_Month,Str_Day
=======================================*/
function sel_date(Str_Name,Str_Year,Str_Month,Str_Day)
{
	today=new Date(Str_Year,Str_Month,Str_Day);

	var str="<SELECT name="+Str_Name+"_y>";
	for(var i=today.getYear()-10;i<today.getYear()+20;i++){
		if(i==today.getYear()) str=str + "<option selected value=" + i + ">" + i + "</option>";
		else str=str + "<option  value=" + i + ">" + i + "</option>";
	}
	str=str+"</SELECT>年";

	var str=str + "<SELECT name="+Str_Name+"_m>";
	for(var i=1;i<13;i++){
		if(i==today.getMonth()) str=str + "<option selected value=" + i + ">" + i + "</option>";
		else str=str + "<option  value=" + i + ">" + i + "</option>";
	}
	str=str+"</SELECT>月";

	var str=str + "<SELECT name="+Str_Name+"_d>";
	for(var i=1;i<32;i++){
		if(i==today.getDate()) str=str + "<option selected value=" + i + ">" + i + "</option>";
		else str=str + "<option  value=" + i + ">" + i + "</option>";
	}
	str=str+"</SELECT>日";

	document.write(str);
}


/*====================================
29.判断是否正数
是：false
否: true
==========================================*/
function IsNotPNum(str)
{
	var returnValue = false;

    if(str=="")
    {
		returnValue = true;
    }
    else
    {
		if (isNaN(str))	
			returnValue = true;
		var temp = parseFloat(str);
		if(isNaN(temp))
		{
			returnValue = true;
		}
		if ( temp < 0.0 )
		{					
			returnValue = true;	
		}
	}
		
	return returnValue;		
}

/*====================================
30.校验年的输入格式
==========================================*/
function checkYear(theText){
if (theText.value == ""||!IsNumInt(theText.value)||IsNotPNum(theText.value)){
  alert("年份信息必须为不含字符的正整数！");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value.length!=4){
  alert("年份信息必须为4位正整数");
  theText.focus();
  theText.select();
  return false;
}
var d= new Date();
if(theText.value>2100||theText.value<d.getYear()){
  alert("年份必须为大于等于"+d.getYear()+"小于2100");
  theText.focus();
  theText.select();
  return false;
}
return true;
}

/*====================================
31.校验月的输入格式
==========================================*/
function checkMonth(theText){
if (theText.value == ""||!IsNumInt(theText.value)||IsNotPNum(theText.value)){
  alert("月份信息必须为不含字符的正整数！");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value.length>2){
  alert("月份信息必须为1或2位正整数");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value>12){
  alert("月份不能大于12");
  theText.focus();
  theText.select();
  return false;
}
return true;
}

/*====================================
32.校验天的输入格式
==========================================*/
function checkDay(theText){
if (theText.value == ""||!IsNumInt(theText.value)||IsNotPNum(theText.value)){
  alert("日期信息必须为不含字符的正整数");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value.length>2){
  alert("日期信息必须为1或2位正整数");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value>31){
  alert("日期不能大于31");
  theText.focus();
  theText.select();
  return false;
}
return true;
}


/*====================================
33.校验小时的输入格式
==========================================*/
function checkHour(theText){
if (theText.value == ""||!IsNumInt(theText.value)||IsNotPNum(theText.value)){
  alert("小时信息必须为不含字符的正整数！");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value.length>2){
  alert("小时信息必须为1或2位正整数！");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value>23){
  alert("小时不能大于23！");
  theText.focus();
  theText.select();
  return false;
}
return true;
}/*====================================
34.校验分钟的输入格式
==========================================*/
function checkMin(theText){
if (theText.value == ""||!IsNumInt(theText.value)||IsNotPNum(theText.value)){
  alert("分钟信息必须为不含字符的正整数");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value.length>2){
  alert("分钟信息必须为1或2位正整数");
  theText.focus();
  theText.select();
  return false;
}
if(theText.value>59){
  alert("分钟不能大于59");
  theText.focus();
  theText.select();
  return false;
}
return true;
}

/*====================================
35.取得时间
==========================================*/
function constructDate(form,Str,flag){
var arrdate;
eval("dateVar=form" + "." + Str + 'Date.value');
arrdate=dateVar.split("-");
yearVar=parseInt(arrdate[0],10)
monthVar=parseInt(arrdate[1],10)-1
dayVar=parseInt(arrdate[2],10)
if(flag==1){
  eval("hourVar=parseInt(form"+"."+Str+'Hour.value)');
  eval("minuteVar=parseInt(form"+"."+Str+'Min.value)');
  var date=new Date(yearVar,monthVar,dayVar,hourVar,minuteVar);
}
else var date=new Date(yearVar,monthVar,dayVar);
//alert(date)
return date;
}


/*
  显示弹出的选择窗口

*/
function PopWindow(url,left,top,width,height){
 	showx =left;
	showy =top;
	window.open(url,'','left='+ showx + ',top=' + showy +',width='+ width + ',height='+ height +',resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no');
}

/*
  选择选择框对应的项目
*/
function ChooseItem(){
   var i;
   var strShowobj;
   var strHideobj;
   var Showobj;
   var Hideobj;
   var k=-1;
   for(i=0;i<document.all.length;i++){
      if(document.all[i].id=="chkHid" && document.all[i].checked){
        k=i;
	    break;
     } 
   }
   if(k==-1){
     alert('请选择!');
     return false;
   }
   strShowobj=document.all("objShow").value.toString();
   strShowobj="window.opener.document.all(\""  + strShowobj + "\")"
   Showobj=eval(strShowobj);
   Showobj.value=window.document.all[k+1].value;
   window.close();
 }

 function ClearText(){
   var strShowobj;
   var Showobj;
   strShowobj=document.all("objShow").value.toString();
   strShowobj="window.opener.document.all(\""  + strShowobj + "\")"
   Showobj=eval(strShowobj);
   Showobj.value="";
   window.close();
}

function HaveChar(str,theChar)
{
	if(str.indexOf(theChar) == -1)
	{
		return false;
	}
	else
	{
		return true;
	}
}
//循环替换所有匹配字符
	function ReplaceAll(str1,str2,str3)
	{
	//str1 总字符串
	//str2 被替换
	//str3 替换
		if(str1.indexOf(str2)==-1)
		{
			return str1;
		}
		else
		{
			str1 = str1.replace(str2,str3);
		}
		return(ReplaceAll(str1,str2,str3));
	}
function ReplaceChar(thisForm,FieldName,count,theChar)
{
	if(count>0)
	{
		var ss = /,/g;	
		if(count>1)
		{
			for(var i=0;i<count;i++)
			{
				var thisField = eval(thisForm+"."+FieldName+"["+i+"]");	
										
				thisField.value = thisField.value.replace(ss,'$');						
			}
		}
		else
		{
			var thisField = eval(thisForm+"."+FieldName);					
			thisField.value = thisField.value.replace(ss,'$');			
		}	
	}
}

function PassWordGrade(temp)
{			
return "高级";
	var i,j,k,l;
	var pd1,pd11,pd12,pd3;
	pd1 = true; pd11=true; pd12=true ; pd3 = false;
	i=temp.length;
	
	//判断是否为简单密码（所有字符相同）
	for(j=0;j<i;j++)
	{
		for(k=j+1;k<i;k++)
		{
			if(temp.charAt(j)!=temp.charAt(k))
			{
				pd1 = false;
				break;
			}
		}
	}
	
	//是否为顺序递增密码
	for(j=0;j<i-1;j++)
	{		
		if(temp.charCodeAt(j)+1!=temp.charCodeAt(j+1))
		{				
			pd11 = false;
			break;
		}			
	}	
		
	//是否为顺序递减号码
	for(j=0;j<i-1;j++)
	{		
		if(temp.charCodeAt(j)-1!=temp.charCodeAt(j+1))
		{				
			pd12 = false;
			break;
		}			
	}	
	
	if(temp.length<6)
	{
		pd1 = true;
		pd11 = true;
		pd12 = true;
	}
	
	//判断是否为高级密码（数字与字母间隔）
	j=0;
	for(l=0;l<i;l++)
	{
		if(
		(((temp.charAt(l)>='a')&&(temp.charAt(l)<='z'))||((temp.charAt(l)>='A')&&(temp.charAt(l)<='Z')))&&((temp.charAt(l+1)>='0')&&(temp.charAt(l+1)<='9'))||
		((temp.charAt(l)>='0')&&(temp.charAt(l)<='9'))&&(((temp.charAt(l+1)>='a')&&(temp.charAt(l+1)<='z'))||((temp.charAt(l+1)>='A')&&(temp.charAt(l+1)<='A')))
		)
		{
			j=j+1;
		}
	}
	if(j>=i/2&&temp.length>=6)
	{
		pd3=true;
	}			
	
	
	var returnValue = "";
	
	if(pd1||pd11||pd12)
	{
		//alert('您输入的密码过于简单');
		returnValue = '<font color=red><b>简单</b></font>';
	}
	if(pd3)
	{
		//alert('高级密码');
		returnValue = '<font color=green><b>高级</b></font>';
	}
	if(returnValue=="")
	{
		//alert('中级密码');	
		returnValue = '<font color=blue><b>中级</b></font>';
		
	}
	
	return returnValue
	
}		

//判断是否为高级密码
function IsHighGradePassWord(theForm,FieldName,focusField)
{
	var returnValue = true;
	
	var thisfield=eval(FieldName);
	var focusField = eval("theForm."+focusField);
	var temp = thisfield.innerHTML.indexOf("高级");
	if(temp==-1)
	{
		alert('密码输入请严格按照先字母后数字规则，如a1b2c3');
		//document.all[focusField].focus();
		returnValue = false;
	}
	
	return returnValue;
}

//检查文件名
function CheckFileSize(filename)   
{   
	//var   filename=Form1.btnUpload.value;
	if(filename=='')   
	{   
		alert('请选择一个文件');
		return   false;   
	}   
	try   
	{   
		//alert(1);
		var ado_stream = new ActiveXObject("ADODB.Stream");   
		//1=adTypeBinary;2=adTypeText   
		//ado_stream.Type=2;   
		ado_stream.Open();   
		ado_stream.LoadFromFile(filename);//将文件信息存入流   
		
		var fileLimit = 31457280;//限制文件大小，30M
		if(ado_stream.Size>fileLimit)
		{
			alert("文件大于30M，请重新选择");
			return false;
		}
		//alert(2);
	}   
	catch(e)   
	{   
		window.confirm(e);   
		return   false;   
	}   
	return   true;   
}   

//检查文件长度
function CheckFileSize1(fileName)
{
	var fileSize = getFileSize(fileName);
	var fileLimit = 31457280;//限制文件大小，30M
	if(fileSize>fileLimit)
	{
		alert("文件大于30M，请重新选择");
		return false;
	}
	else
	{
		return true;
	}
}


function getFileSize (fileName) {
	if (document.layers) 
	{

		if (navigator.javaEnabled()) 
		{
			var file = new java.io.File(fileName);
			if (location.protocol.toLowerCase() != 'file:')
				netscape.security.PrivilegeManager.enablePrivilege('UniversalFileRead' );
			return file.length();
		}
		else 
			return -1; 

	}
	else if (document.all) 
	{
		window.oldOnError = window.onerror;
		window.onerror = function (err) 
		{
			if (err.indexOf('utomation') != -1) 
			{
				alert('请选择同意交互操作');
				window.location.reload();
				return true;
			}
			else
				return false; 
		};
		var fso = new ActiveXObject('Scripting.FileSystemObject');
		var file = fso.GetFile(fileName);
		window.onerror = window.oldOnError;
		return file.Size; 
	}
	
}

function getRequest()
{
    var pageRequest = false;
    if (window.XMLHttpRequest) // if Mozilla, Safari etc
    {
        pageRequest = new XMLHttpRequest()
    }
    else if (window.ActiveXObject){ // if IE
        try {
        pageRequest = new ActiveXObject("Msxml2.XMLHTTP")
        } 
        catch (e){
            try{
            pageRequest = new ActiveXObject("Microsoft.XMLHTTP")
            }
            catch (e){}
        }
    }
    return pageRequest;
	
}
 function CreateRequest()
		{
			var http_request;
			if(window.XMLHttpRequest)
			{
				http_request=new XMLHttpRequest();
				if(http_request.overrideMimeType)
				{
					http_request.overrideMimeType('text/xml');
				}
			}
			else if(window.ActiveXObject)  //IE
			{
				try
				{
					http_request = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch(e)
				{
					try
					{
						http_request = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e){}
				}
			}
			return http_request;
			
		}




 
