/*--
//CommonScriptLib.js  :  This is a common script library;
	while using it,make a direction named "js" in current project and name this file to "CommonScriptLib.js";
//In the page add two tags of script,in the first give the src to "/js/CommonScriptLib.js",in the second you can add the else function of self.


//usage:   first

//like:<script language="javaScript" src="../js/util.js"></script>



//本js文件包括:
//	Keypress(ikey):
		回车后把焦点放入下一个输入框,参数(ikey)一般为"this".

//	ChkError(flag,Obj):
		检测错误,并做显示处理.

//	ChkDate(date):
		检测日期格式'YYYY-MM-DD'，参数(date)一般为"this"。
		用例：onblur="ChkError(ChkDate(this),this)"

//	ChkCoDate(Osdate,Oedate):
		检测日期格式'YYYY-MM-DD',并比较,参数(Osdate)为开始日期，参数(Oedate)为终止日期。
		用例：onblur="ChkError(ChkCoDate(thisform.gsbeg,this),this)"

//	CheckNull():
		检测输入域是否为空，参数不固定。
		用例：flag=CheckNull('thisform.f1','thisform.f2',...)

//	ChkNsrCode(obj):
		检查纳税人识别号,参数(obj)一般为"this"。
		用例：onblur="ChkError(ChkNsrCode(this),this)"

--*/
//-----------------------------------------------------------------------------//
/* 其它函数调用用例：
onblur="ChkError(ChkInt(this),this)"			//检测正整数，小于2的16次方
onblur="ChkError(ChkReal(this,2,10),this)"		//检测实数,小数位为2位,整数位缺省为10位
onblur="ChkError(CheckReal(this,2,10),this)"		//检测实数,小数位为2位,整数位缺省为10位
onblur="ChkError(ChkDot(this,2),this)"			//检测小数,小数点后为2位
onblur="ChkError(isPostNum(this),this)"			//检测邮政编码
onblur="ChkError(isEmail(this),this)"			//检测Email地址
onblur="ChkError(ChkTelCode(this),this)"		//检测电话号码
onblur="ChkError(ChkDigit(this,10,false),this)"	//检查不超过10位的数字
*/

/*
==================================================================
功能：检测错误,并做显示处理-
提示信息：
使用：onblur="ChkError(ChkInt(this),this)"
返回：
==================================================================
*/

var g_Obj = null;// 记住前一个焦点的控件

function ChkError(flag,obj) {
	if(flag) {
	   if(obj.style.backgroundColor=="red") {
	    obj.style.color="black";
		obj.style.backgroundColor="white";
	   }
		return true;
	} else {
		obj.style.color="white";
		obj.style.backgroundColor="red";
		//obj.value="";
		obj.focus();
		return false;
	}
}

//-----------------------------------------------------------------------------//
function isBetween(val,lo,hi){
	if( val<lo || val>hi ){
		return false;
	}
	else{
		return true;
	}
}

//-----------------------------------------------------------------------------//
function isEmpty(obj){
	var str=obj.value;
//	if (!str) str=_str;
	if(str==""){
		return true;
	}
	else{
		return false;
	}
}

//-----------------------------------------------------------------------------//
function isChar(theChar){
	var theMask="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
	if(theChar==""){
		return true;
	}
	else if(theMask.indexOf(theChar)==-1){
		return false;
	}
	return true;
}

//-----------------------------------------------------------------------------//
function isDigit(theNum){
	var theMask="0123456789";
	if(theNum==""){
		return true;
	}
	else if(theMask.indexOf(theNum)==-1){
		return false;
	}
	return true;
}

//-----------------------检测整数,不对外---------------------------------------//
function isInt(theInt){

	if(theInt=="") {
		return true;
	} else {
		for(var i=0;i<theInt.length;i++){
			if(isDigit(theInt.charAt(i))==false){
				return false;
			}
		}
		return true;
	}
}


//------------------检测可带小数点的数字串----------------------------------//
function isNumber(Obj){
	var theNumber=Obj.value;
	if(-1==theNumber.indexOf("."))
	{
		return isInt(theNumber);
	}
	if(Obj.value.substring(0,1)==".")
	{
		return false;
	}
	return isInt(theNumber.substring(0,theNumber.indexOf(".")))&&isInt(theNumber.substring(theNumber.indexOf(".")+1,theNumber.length));
}

function isNumberForInputValue(inputValue){
	var theNumber=inputValue;
	if(-1==theNumber.indexOf("."))
	{
		return isInt(theNumber);
	}
	if(inputValue.substring(0,1)==".")
	{
		return false;
	}
	return isInt(theNumber.substring(0,theNumber.indexOf(".")))&&isInt(theNumber.substring(theNumber.indexOf(".")+1,theNumber.length));
}


/*
==================================================================
功能：检测正整数，小于2的16次方
提示信息：
使用：onblur="ChkError(ChkInt(this),this)"
返回：
==================================================================
*/
function ChkInt(Obj) {
	var theInt=Obj.value;
	if(theInt=="") {
		return true;
	} else {
		for(var i=0;i<theInt.length;i++){
			if(isDigit(theInt.charAt(i))==false){
				Obj.focus();
				return false;
			}
		}
		var n=eval(theInt);
		if (n>65536) {
			alert("请输入小于或等于65536的整数！");
			Obj.focus();
			return false;
		}
		return true;
	}
}


/*
==================================================================
功能：检测邮政编码
提示信息：
使用：
返回：
==================================================================
*/
function isPostNum(_this){
	if(isEmpty(_this)){
		return true;
	}
	else if(isBetween(_this.value.length,6,6)==false){
		alert("邮政编码应为6个字符长度!");
		return false;
	}
	else if(isInt(_this.value)==false){
		alert("邮政编码应为数字!");
		return false;
	}
		return true;
}


/*
==================================================================
功能：检测Email地址
提示信息：
使用：
返回：
==================================================================
*/
function isEmail(_theStr){
	var theStr=_theStr.value;
	var atIndex=theStr.indexOf("@");
	var doIndex=theStr.indexOf(".",atIndex);
	var theSub=theStr.substring(0,doIndex+1);
	if(isEmpty(_theStr)){
		return true;
	}
	if((atIndex<1)||(atIndex!=theStr.lastIndexOf("@"))||(doIndex<atIndex+2)||(theStr.length<=theSub.length)){
		alert("输入Mail地址格式有误！");
		return false;
	}
	return true;
}



/*
==================================================================
功能：检测实数,不对外
提示信息：
使用：
返回：
==================================================================
*/
function isReal(_theStr,decLen,intLen){
	var theStr=_theStr.value;
	if(theStr.indexOf("-")==0) theStr=theStr.substring(1,theStr.length);
	var dot1st=theStr.indexOf(".");
	var dot2nd=theStr.lastIndexOf(".");
	var OK=true;

	if(isEmpty(_theStr)){return true;}
	if(intLen==null) intLen=10;
	if(dot1st==-1){
		if(!isInt(theStr)){
			return false;
		}
		else if(theStr.length>intLen){
			alert("整数位太长！");
			return false;
		}
		else{
			return true;
		}
	}
	else if(dot1st!=dot2nd){return false;}
	else if(dot1st==0){return false}
	else{
		var intPart=theStr.substring(0,dot1st);
		var decPart=theStr.substring(dot2nd+1);
		if(!isInt(intPart)||!isInt(decPart)){
			return false;
		}
		else if(intPart.length>intLen){
			alert("整数位太长！");
			return false;
		}
		else if(decPart.length>decLen){
			alert("小数位太长！");
			return false;
		}
		else if(decPart==""){
			return false;
		}
		else{
			return true;
		}
	}
}

/*
==================================================================
功能：检测实数,小数位为n位,整数位为m位
提示信息：请输入正确的数字！
使用：
返回：
==================================================================
*/
function ChkReal(obj,n,m) {
	if (g_Obj == null)
		g_Obj=event.srcElement;
	else if (g_Obj != obj)
	{
		g_Obj = null;
		return true;
	}

	if(obj.value=="") {
		g_Obj = null;
		return true;
	}

	if (!isReal(obj,n,m)) {
		alert("请输入正确的数字！");
		g_Obj.focus();
		return false;
	} else {
		if (eval(obj.value) > 9999999999.99) {
			alert("错误：输入的数字太大！");
			g_Obj.focus();
			return false;
		} else {
			g_Obj = null;
			return true;
		}
	}
}
/*
==================================================================
功能：检测正实数,小数位为n位,整数位为m位
提示信息：请输入正确的数字！
使用：
返回：
==================================================================
*/
function CheckReal(obj,n,m) {
	if (g_Obj == null)
		g_Obj=event.srcElement;
	else if (g_Obj != obj)
	{
		g_Obj = null;
		return true;
	}

	if(obj.value=="") {
		g_Obj = null;
		return true;
	}
	if(obj.value.indexOf("-")==0)
	{
		alert("整数部分请输入正数！");
		g_Obj.focus();
		return false;
	}
	if (!isReal(obj,n,m)) {
		alert("请输入正确的数字！");
		g_Obj.focus();
		return false;
	}
	else 
	{
		g_Obj = null;
		return true;
	}
	
}
function ChkReal1(obj,n,m) {
	if (g_Obj == null)
		g_Obj=event.srcElement;
	else if (g_Obj != obj)
	{
		g_Obj = null;
		return true;
	}

	if(obj.value=="") {
		g_Obj = null;
		return true;
	}

	if (!isReal(obj,n,m)) {
		g_Obj.focus();
		return false;
	} else {
		if (eval(obj.value) > 9999999999.99) {
			alert("错误：输入的数字太大！");
			g_Obj.focus();
			return false;
		} else {
			g_Obj = null;
			return true;
		}
	}
}
//---------------------检测小数,小数点后为n位----------------------------------//
function ChkDot(_theStr,n) {
	var theStr=_theStr.value;
	if(_theStr.value=="") {
		return true;
	}
	if(ChkReal(_theStr,n)) {
		if(eval(theStr)<1) {
			return true;
		} else {
			alert("数字要小于1！");
			return false;
		}
	} else {
		return false;
	}
}

//-------------------检查不超过（或等于）n位的数字----------------------------//
function ChkDigit(obj,n,flag) {		//flag=true 等于;flag=false 不超过.
	var num=obj.value;
	if(num=="") return true;
	for(var i=0;i<num.length;i++){
		if(isDigit(num.charAt(i))==false){
			alert("请输入数字！");
			return false;
		}
	}
	if(flag) {
		if(num.length != n) {
			alert("请输入"+n+"位数字！");
			return false;
		}
	} else {
		if(num.length > n) {
			alert("请输入不超过"+n+"位的数字！");
			return false;
		}
	}
	return true;
}


/*
==================================================================
功能：取一个域的长度(考虑单双字节混合的情况)
提示信息：
使用：
返回：int
==================================================================
*/
function getLength(obj){
var j=0;
var num=obj.value;
if(num=="") return 0;
for(i=0;i<obj.value.length;i++){
	/[^ -~]/.test(obj.value.charAt(i))?j+=2:j++;
}
return j;
}



/*
==================================================================
功能：检查最少长度
提示信息：请输入至少"+n+"位的字符！
使用：
返回：bool
==================================================================
*/
function ChkMinLength(obj,n) {
	var num=obj.value;
	if(num=="") return true;
	if (getLength(obj) < n){
		alert("请输入至少"+n+"位的字符！");
	 	return false;
	}else{
		return true;
	}
}


/*
==================================================================
功能：检查最大长度(考虑单双字节混合的情况)
提示信息：请输入不超过"+n+"位的字符(一个汉字按两个字符算)！
使用：
返回：bool
==================================================================
*/
function ChkMaxLength(obj,n) {
	if (g_Obj == null)
		g_Obj=event.srcElement;
	else if (g_Obj != obj)
	{
		g_Obj = null;
		return true;
	}

	var num=obj.value;
	if(num==""){
		g_Obj = null;
		return true;
	}
	if (getLength(obj)> n){
		alert("请输入不超过"+n+"位的字符(一个汉字按两个字符算)！");
		g_Obj.focus();
	 	return false;
	}else{
		g_Obj=null;
		return true;
	}
}

/*
==================================================================
功能：检查长度范围
提示信息：输入信息的长度应在"+minLength+"~"+maxLength+"位之间！
使用：
返回：bool
==================================================================
*/
function ChkMaxLengthIn(obj,minLength,maxLength) {
	var num=obj.value;
	if(num=="") return true;
	if (getLength(obj) > maxLength || getLength(obj) < minLength){
		alert("输入信息的长度应在"+minLength+"~"+maxLength+"位之间！");
		obj.focus();
	 	return false;
	}else{
		return true;
	}
}

//-----------------------------------------------------------------------------//
function isDate(theDate){
	//加入补齐位数为10的函数
	theStr=theDate.value;
	var the1st=theStr.indexOf("-");
	var the2nd=theStr.lastIndexOf("-");
	if(the1st==the2nd){
		return false;
	}
	else{
		var y=theStr.substring(0,the1st);
		var m=theStr.substring(the1st+1,the2nd);
		var d=theStr.substring(the2nd+1,theStr.length);
		var maxDays=31;
		if(isInt(y)==false||isInt(m)==false||isInt(d)==false){
			return false;
		}
		else if(y.length<4){return false}
		else if(!isBetween(m,1,12)){return false;}
		else if(m==4||m==6||m==9||m==11){maxDays=30;}
		else if(m==2){
			if(y%4>0){maxDays=28;}
			else if(y%100==0&&y%400>0){maxDays=28;}
			else{maxDays=29;}
		}
		if(isBetween(d,1,maxDays)==false){return false;}
		else{return true;}
	}
}

/*
==================================================================
功能：-检测日期格式----yyyy-mm-dd
提示信息：输入信息的长度应在"+minLength+"~"+maxLength+"位之间！
使用：输入的日期格式错误,应该为：YYYY-MM-DD！
返回：bool
==================================================================
*/
function ChkDate(date)
{
   var str=date.value;
   var date_month="";
   var date_day="";
   var date_year="";
   var i=0;
   var y_m=0;
   var m_d=0;
 if (date.value!="") {
	if ((str.length>10)||(str.length<8))
		{
			alert("输入的日期格式错误,应该为：YYYY-MM-DD！");
			return false;
		}
	for(i_loop=0;i_loop<str.length;i_loop++) {
		if (str.charAt(i_loop)=="-") {
			i++;
			if (i==1) {
				if (i_loop!=4) {
					alert("输入的日期中年份的格式错误,应该为：YYYY-MM-DD ");
					return false;
				}
				y_m=i_loop;
			} else if(i==2) {
				m_d=i_loop;
			}
		}
	}
	if ((i==2)&&(m_d==str.length-1)) {
		alert("输入的日期格式错误,应该为：YYYY-MM-DD！");
		return false;
    }
	for(i_loop=0;i_loop<4;i_loop++) {
		date_year=date_year+str.charAt(i_loop);
	}
	if (i==2) {
		for(i_loop=y_m+1;i_loop<m_d;i_loop++) {
			date_month=date_month+str.charAt(i_loop);
        }
    } else {
		for(i_loop=y_m+1;i_loop<str.length;i_loop++) {
			date_month=date_month+str.charAt(i_loop);
        }
    }
	if (i==2) {
		for(i_loop=m_d+1;i_loop<str.length;i_loop++) {
			date_day=date_day+str.charAt(i_loop);
		}
	}
	if (!(ChkYear(date_year) && ChkMon(date_month))){
		return false;
	}
	if (i==2) {
		if (!(ChkDay(date_year,date_month,date_day))) {
			return false;
		}
    }
	if (m_d==6) {
		date.value=InsertStr(date.value,m_d-1,'0');
	}
	if ((i==1)&&(str.length==6)) {
		date.value=InsertStr(date.value,5,'0');
	}
	if (((str.length-m_d-1)==1)&&(i==2)) {
		date.value=InsertStr(date.value,date.value.length-1,'0');
	}
  }
  return true;
}

//
function ChkYear(num)			//invoke in ChkDate
{
  if (!isInt(num)) {
	alert("输入的日期中的年份不正确，必须为数字");
    return false;
  }
  if (num<2000 || num>3000) {
     alert("输入的日期中的年份不正确，必须处于2000年--3000年之间");
     return false;
  }
  return true;
}

//
function ChkMon(num)			//invoke in ChkDate
{
  if (!isInt(num)) {
     alert("输入的日期中的月份不正确，必须为数字");
     return false;
  }
  if (num<1 || num>12) {
     alert("输入的日期中的月份不正确，必须处于1--12之间");
     return false;
  }
  return true;
}

//
function ChkDay(y,m,d)			//invoke in ChkDate
{
	var maxDays=31;
	if(!isInt(d)){
	     alert("输入的日期中的日不正确，必须为数字");
		 return false;
	}
	else if(m==4||m==6||m==9||m==11){maxDays=30;}
	else if(m==2){
		if(y%4>0){maxDays=28;}
		else if(y%100==0&&y%400>0){maxDays=28;}
		else{maxDays=29;}
	}
	if(d<1 || d>maxDays) {
	    alert("输入的日期中的日不正确，必须处于1--"+maxDays+"之间");
		return false;
	} else {
		return true;
	}
}

//
function InsertStr(Str,InsPlace,SubStr)		//invoke in ChkDate
{
  var s1;
  var s2;
  s1=Str.substring(0,InsPlace);
  s2=Str.substring(InsPlace,Str.length);
  s1=s1+SubStr;
  s1=s1+s2;
  return s1;
}


//-----------------------------比较日期的大小-----------------------------------//
function CompareDate(startDate,endDate) { //yyyy-mm-dd
	var sYear=eval(startDate.substring(0,4));
	var sMonth=eval(startDate.substring(5,7));
	var sDay=eval(startDate.substring(8,10));

	var eYear=eval(endDate.substring(0,4));
	var eMonth=eval(endDate.substring(5,7));
	var eDay=eval(endDate.substring(8,10));
//alert(eYear+eMonth+eDay);

	if(eYear>sYear) {
		return 1;
	} else if(eYear<sYear) {
		return -1;
	} else {
		if(eMonth>sMonth) {
			return 1;
		} else if(eMonth<sMonth) {
			return -1;
		} else {
			if(eDay>sDay) {
				return 1;
			} else if(eDay<sDay) {
				return -1;
			} else {
				return 0;
			}
		}
	}
}

/*
==================================================================
功能：检测日期格式,并比较----yyyy-mm-dd
提示信息：日期关系不正确!\n比如:终止日期应该大于开始日期!
使用：onblur="ChkError(ChkCoDate(thisform.gsbeg,this),this)"
返回：bool
==================================================================
*/
function ChkCoDate(Osdate,Oedate) {
//	if(ChkDate(Osdate) && ChkDate(Oedate)) {
	if(ChkDate(Osdate)) {
	  if(ChkDate(Oedate)) {
		if(Osdate.value=="" || Oedate.value=="") return true;
		if(CompareDate(Osdate.value,Oedate.value)==1) {
			return true;
		} else {
			alert("            日期关系不正确!\n比如:终止日期应该大于开始日期!");
			return false;
		}
	  } else {
		Oedate.value="";
		return false;
	  }
	} else {
		Osdate.value="";
		return false;
	}
}


function resetBGColor(obj){
	for(var j=0;j<obj.length;j++){
		obj[j].style.color="black";
		obj[j].style.backgroundColor="white";
	}
}

//---------------------------检测域值是否为空----------------------------------//
//用例：flag=CheckNull('thisform.f1','thisform.f2',...)
/*
==================================================================
功能：检测域值是否为空(通常在表单提交时用来检查)
提示信息：总共有"+num+"个必填项内容不能为空!!!
使用：onsubmit="CheckNull('thisform.f1','thisform.f2',...)"
返回：bool
==================================================================
*/
function CheckNull() {
	var n=CheckNull.arguments.length;
	var obj,objtemp;
	var flag=true;
	var num=0;

	for(i=0;i<n;i++) {
//		alert(checknull.arguments[i]);
	  obj=eval(CheckNull.arguments[i]);
      if(obj) {
	   if(!isNaN(obj.length)){
			for(var j=0;j<obj.length;j++){
				if(obj.value=="") {
					obj[j].style.color="white";
					obj[j].style.backgroundColor="red";
					if(flag) {
						objtemp=obj[j];
						flag=false;
						num=1;
					} else {
					    if (j<1){
							num++;
						}
					}
				} else {
				   if(obj[j].style.backgroundColor=="red") {
					obj[j].style.color="black";
					obj[j].style.backgroundColor="white";
				   }
				}
			}
	   }
	   else {
	    if(obj.value=="") {
			obj.style.color="white";
			obj.style.backgroundColor="red";
			if(flag) {
				objtemp=obj;
				flag=false;
				num=1;
			} else {
				num++;
			}
	    } else {
		   if(obj.style.backgroundColor=="red") {
			obj.style.color="black";
			obj.style.backgroundColor="white";
		   }
		}
	  }
	 }
	}
	if(flag) {
		return true;
	} else {
  		alert("总共有"+num+"个必填项内容不能为空!!!");
  		//objtemp.focus();
  		return false;
	}
}



//-----------检测小数(百分数%)------------------------------------------------//
function isDot(_theStr,n) {
	var theStr=_theStr.value;
	if(_theStr.value=="") {
		return true;
	}
	if(ChkReal(_theStr,n)) {
		if(eval(theStr)<=100) {
			return true;
		} else {
			alert("数字要小于或等于100！");
			return false;
		}
	} else {
		return false;
	}
}


//-----------------------------------------------------------------------------//
function setFocus(obj) {
	obj.focus();
	obj.select();
}



/*
==================================================================
功能：检查一个字段是否为空
提示信息：该字段不能为空！
使用：onblur="ChkError(ChkNull(this),this)"
返回：bool
==================================================================
*/

function ChkNull(obj) {
	return true;
}



/*
==================================================================
功能：确认删除函数
提示信息：
使用：
返回：
==================================================================
*/
function openDeleteConfirmDialog(thewindow, theform, theaction, paraname, paravalue)
{
	window.showModalDialog("/common/delConfirm.jsp",new Array(thewindow, theform, theaction, paraname, paravalue),"dialogHeight:120px;dialogWidth:200px;center:yes;resizable:yes;scroll:no;status:no;help:no");
}


/*
==================================================================
功能：去掉字符串的前后空格
提示信息：该字段不能为空！
使用：
返回：String
==================================================================
*/

String.prototype.trim=function(){     //去左右空格
  return this.replace(/(^\s*)|(\s*$)/g, "");
}


//将YYYYMMDDHHMMSS转化成YYYY-MM-DD
function FormatDate(str){
	if (IsNull(str)){
		return "";
	}else{
		return str.substring(0,4)+"-"+str.substring(4,6)+"-"+str.substring(6,8);
	}
}
//将YYYYMMDDHHMMSS转化成YYYY-MM-DD HH-MM-SS
function FormatDateTime(str){
	if (IsNull(str)){
		return "";
	}else{
		return str.substring(0,4)+"-"+str.substring(4,6)+"-"+str.substring(6,8)+" "+str.substring(8,10)+":"+str.substring(10,12)+":"+str.substring(12,14);
	}
}



//------------------------四舍五入,n为小数位数---------------------------------//
function myround(m,n) {
	return Math.round(m*Math.pow(10,n))/Math.pow(10,n);
}

//-----------------------------Return to TAB-----------------------------------//
function Keypress(ikey) {
  var ieKey=event.keyCode;
  var obj;
//alert(ieKey);
  if (ieKey == 13) {
     for(i_loop = 0;i_loop < document.forms[0].elements.length;i_loop++) {
		if (document.forms[0].elements[i_loop] == ikey) {
			for(i=i_loop+1;;i++) {
				if(i==document.forms[0].elements.length) i=0;
				obj=document.forms[0].elements[i];
				if(obj.type=="hidden" || obj.readOnly==true || obj.disabled==true) {
					continue;
				} else {
					event.keyCode=0;
					obj.focus();
					return;
				}
			}
			return;
		}
     }
  }
}

/*
==================================================================
功能：打印
使用：Print()
返回：
==================================================================
*/
function Print()
{

document.all.print.style.display = "none";
window.print();
window.close();
}

/*
==================================================================
功能：精确验证身份证号码是否有效
提示信息：未输入或输入身份证号不正确！
使用：isIDno(obj)
返回：bool
==================================================================
*/
function isIDno(obj)
{
	var show = true;
	var ShowMsg="未输入或输入身份证号不正确！";

	//aCity={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"};
	var aCity = "11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,82,91"

	var iSum = 0;
	var info = "";
	var idCardLength = obj.value.length;

	if(!/^\d{17}(\d|x)$/i.test(obj.value)&&!/^\d{15}$/i.test(obj.value))
	{
		if (show) alert(ShowMsg);
		obj.focus();
		obj.select();
		return false;
	}

	//在后面的运算中x相当于数字10,所以转换成a
	obj.value = obj.value.replace(/x$/i,"a");

	var curCity = obj.value.substr(0,2);

	if(!(aCity.indexOf(curCity) > 0) )
	{
		if (show) alert(ShowMsg);
			obj.focus();
			obj.select();
			return false;
		}

		if (idCardLength==18)
		{
		sBirthday=obj.value.substr(6,4)+"-"+Number(obj.value.substr(10,2))+"-"+Number(obj.value.substr(12,2));
		var d = new Date(sBirthday.replace(/-/g,"/"))
		if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))
		{
		if (show) alert(ShowMsg);
			obj.focus();
			obj.select();
		return false;
		}

		for(var i = 17;i>=0;i --)
		iSum += (Math.pow(2,i) % 11) * parseInt(obj.value.charAt(17 - i),11);

		if(iSum%11!=1)
		{
			if (show) alert(ShowMsg);
			obj.focus();
			obj.select();
			return false;
		}

	}
	else if (idCardLength==15)
	{
		sBirthday = "19" + obj.value.substr(6,2) + "-" + Number(obj.value.substr(8,2)) + "-" + Number(obj.value.substr(10,2));
		var d = new Date(sBirthday.replace(/-/g,"/"))
		var dd = d.getFullYear().toString() + "-" + (d.getMonth()+1) + "-" + d.getDate();

		if(sBirthday != dd)
		{
			if (show) alert(ShowMsg);
			obj.focus();
			obj.select();
			return false;
		}
	}
	return true;
}
/*
==================================================================
功能：验证身份证号码是否有效
提示信息：未输入或输入身份证号不正确！
isIdCardNo(num)
返回：bool
==================================================================
*/
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字！"); return false;}
var len = num.length, re;
if (len == 15)
  re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
  re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("输入的数字位数不对！"); return false;}
var a = num.match(re);
if (a != null)
{
  if (len==15)
  {
    var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
    var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
  }
  else
  {
    var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
    var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
  }
  if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对！"); return false;}
}
return true;
}

/*
==================================================================
功能：将Html页面中的指定表格打印到excel中
提示信息：未输入或输入身份证号不正确！
使用：<input type="button" name="aa" value="倒入到Excel中察看" onclick="htmlTableToExcel('table1')" >
返回：
==================================================================
*/

function htmlTableToExcel(htmlTableID) {
	window.clipboardData.setData("Text",document.all(htmlTableID).outerHTML);
	try
	{
		var ExApp = new ActiveXObject("Excel.Application");
		var ExWBk = ExApp.workbooks.add();
		var ExWSh = ExWBk.worksheets(1);
		ExApp.DisplayAlerts = false;
		ExApp.visible = true;
	}
	catch(e)
	{
		alert("您的电脑没有安装Microsoft Excel软件！");
		return false;
	}
	ExWBk.worksheets(1).Paste;
 }
/*
==================================================================
功能：无模式提示对话框
提示信息：
使用：
返回：
==================================================================
*/
function modelessAlert(Msg)
{
   window.showModelessDialog("javascript:alert(\""+escape(Msg)+"\");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;");
}

/*
==================================================================
功能：将名字为form的所有名字为 chboxName的checkbox选中
提示信息：
使用：
返回：
==================================================================
*/
function SelectAll(form,chkboxName)  {
  for (var i=0;i<form.elements.length;i++){
    var e = form.elements[i];
	//alert(e.name);
    if (e.name == chkboxName){ e.checked = true; }
   }
}
/*
==================================================================
功能：将名字为form的所有名字为 chboxName的checkbox不选中
提示信息：
使用：
返回：
==================================================================
*/
function UnSelectAll(form,chkboxName)  {
  for (var i=0;i<form.elements.length;i++)    {
    var e = form.elements[i];
    if (e.name == chkboxName) e.checked = false;
   }
}

/*
auther:zyp
target:检查18位身份证号
*/
function isIdentify(_theStr)
{
	 try
	 {
	 var str=_theStr.value;
	 if(str.length==0) return true;
	 var reg;
	 if(str.length==15)
	  	reg=/^\d{15}$/;//15位
	 else
	 		reg = /^\d{17}(?:\d|x)$/;//18位
	 if(!reg.test(str))
	 {
	 		alert('身份证号有误，请检查您的身份证号！');
	 		return false;
	 }
	 return true;
	}
	catch(ex)
	{
		alert('have error'+ex.ErrorMessage);
	}
}


//================================ 
//Cookie操作 
//================================ 
function getCookieVal (offset) 
{ 
var endstr = document.cookie.indexOf (";", offset); 
if (endstr == -1) 
endstr = document.cookie.length; 
return unescape(document.cookie.substring(offset, endstr)); 
} 

function getCookie (name) 
{ 
var arg = name + "="; 
var alen = arg.length; 
var clen = document.cookie.length; 
var i = 0; 
while (i < clen) 
{ 
var j = i + alen; 
if (document.cookie.substring(i, j) == arg) 
return getCookieVal (j); 
i = document.cookie.indexOf(" ", i) + 1; 
if (i == 0) 
break; 
} 
return null; 
} 


function deleteCookie(cname) { 

  var expdate = new Date(); 
  expdate.setTime(expdate.getTime() - (24 * 60 * 60 * 1000 * 369)); 

 // document.cookie =" ckValue="ok"; expires="+ expdate.toGMTString(); 
  setCookie(cname,"",expdate); 

}

function setCookie (name, value, expires) {
  t_cookie=name + "=" + escape(value);
  if(expires!=null)
  {
    t_cookie=t_cookie + "; expires=" + expires.toGMTString() ; 
  }
  document.cookie=t_cookie;
}

/*
 *折叠注释相关脚本
 *初始时判断是否显示注信息框;
 */
function InitAnnotate(objName,none_row_name,annotate_text,img_path,a_img,cookieName)
{
  t_pathname=getAnnoCookieName();
  cookieValue=getCookie(t_pathname);
  textObj= document.getElementById(annotate_text);
  imgObj=document.getElementById(a_img);
    
  if(cookieValue==null || cookieValue=='true' || cookieValue=='')
  {
    viewMes(objName);
    //viewMes(none_row_name);
    if(textObj!=null)
    {
      textObj.innerHTML='隐藏帮助';
    }
    if(imgObj!=null)
    {
      imgObj.src=img_path+'widget_minus_hvr.gif';
    }
  }else{
	hideMes(objName);
   // hideMes(none_row_name);
	
	if(textObj!=null)
    {
      textObj.innerHTML='显示帮助';
    }
    if(imgObj!=null)
    {
      
	  imgObj.src=img_path+'widget_plus_hvr.gif';  
    }
  }
}
/*
 *折叠注释相关脚本
 *根据ACTION的名字生成注释的名字
 */
function getAnnoCookieName()
{
  try
  {
	
  	t_pathname=window.location.pathname;
    t_pathname=t_pathname.substring(t_pathname.lastIndexOf('/')+1,t_pathname.length);
    return 'anno'+t_pathname.substring(0,t_pathname.indexOf('.'));
    //debug('t_pathname='+t_pathname);
    //debug('location.pathname='+window.location.pathname);
  }
  catch (e)
  {
      debug('javaScript脚本异常:<br>\n'
      +'<br>\ne.message='+e.message
      +'<br>\ne.name='+e.name
      +'<br>\ne.number='+e.number
      +'<br>\ne.description='+e.description);
  }
}


/*
 *折叠注释相关脚本
 *改变注释显示模式信息框;
 */
function setAnnotate(objName,none_row_name,annotate_text,img_path,a_img,cookieName)
{
  try
  {
    t_pathname=getAnnoCookieName();
  	obj=document.getElementById(objName);
    //obj2=document.getElementById(none_row_name);
    textObj=document.getElementById(annotate_text);
    imgObj=document.getElementById(a_img);
    if (obj==null)
    {
      return;
    }
    var d=new Date();
    d.setDate(d.getDate()+365);//COOKIE保存1年
  	if(obj.style.display=='')
    {
      obj.style.display='none';
      //if(obj2!=null)
      //{
        //obj2.style.display=obj.style.display;
      //}
      setCookie(t_pathname,'false',d);
      if(textObj!=null)
      {
        textObj.innerHTML='显示帮助';
        
      }
      if(imgObj!=null)
      {
        imgObj.src=img_path+'widget_plus_hvr.gif';
      }
    }
    else
    {
      obj.style.display='';
      //if(obj2!=null)
      //{
        //obj2.style.display=obj.style.display;
      //}
      if(textObj!=null)
      {
        textObj.innerHTML='隐藏帮助';
      }
      if(imgObj!=null)
      {
        imgObj.src=img_path+'widget_minus_hvr.gif';
      }
      setCookie(t_pathname,'true',d);
    }
  }
  catch (e)
  {
      debug('javaScript脚本异常:<br>\n'
      +'<br>\ne.message='+e.message
      +'<br>\ne.name='+e.name
      +'<br>\ne.number='+e.number
      +'<br>\ne.description='+e.description);
  }
}
/*
 *折叠注释相关脚本
 *
 */

/**
* 在调用confirm作对话询问时使焦点默认在false上面
*/
function window.confirm(str,isYes)
{
	var b=36;
	if(!isYes)
	{
		b=289;
	}
	str=str.replace(/\'/g, "'&chr(39)&'").replace(/\r\n|\n|\r/g, "'&VBCrLf&'");
	execScript("n = msgbox('"+ str +"',"+b+", '信息提示')", "vbscript");
    if(b==289)
    {
	    return(n == 1);
    }
    else
    {
        return(n == 6);
    }
}

function viewMes(showObj)
{
	var obj=document.getElementById(showObj);
	obj.style.display="";
}
function hideMes(hidObj)
{
	var obj=document.getElementById(hidObj);
	obj.style.display="none";
}
/*
弹出模式窗口
2006-3-4 add by caoj
*/
function openModal(url)
{
  window.showModalDialog(url,'','dialogWidth:600px;dialogHeight:380px;dialogLeft:220px;dialogTop:230px;center:no;help:no;resizable:no;status:no');
}
/* 弹出日历的窗口
*/
function inputDate(para)
{
		window.showModalDialog('/media/js/calendar/calendar.html',para,'dialogheight=238px;dialogwidth=218px;status=no;edge=raised;scroll=no');
}

/*
 des:提示脚本，用于将鼠标放置于对象上时弹出详细提示用
 added by zyp 070728
*/
var yyy=-2000;xxx=-2000;
function show_tips(msg)
{
        if(msg.trim().length==0) return;
 yyy=0;xxx=18;
 var skn=document.all("tips_table").style;
 document.all("tips_table").innerHTML="<TABLE BORDER=0 BORDERCOLOR=black CELLPADDING=2 CELLSPACING=1 BGCOLOR=#000000><TD BGCOLOR=#ffffe0><FONT COLOR=black >"+msg+"</FONT></TD></TABLE>";
 skn.visibility="visible";
}
function get_mouse(e)
{
 var skn=document.all("tips_table").style;
 var x=event.x+document.body.scrollLeft;
  skn.left=x+xxx;
 var y=event.y+document.body.scrollTop;
  skn.top=y+yyy;
}
function break_tips()
{
 yyy=-1000;
 xxx=-1000;
 document.all("tips_table").innerHTML="";
 var skn=document.all("tips_table").style;
 skn.visibility="hidden";
}
//提示脚本结束
/****************************************页面中的动态表格处理开始*********************************************/
//add by zhangl
/**
*这部分脚本的使用方法为在页面上定义存储当前行号的标量，要插入行中的html标签数组（如var test=new Array('<input type="text" name="test"/>','<input type="text" name="test2"/>');）
*/
//给属性id为table的表格添加1行，obj为string类型的html标签数组
function addRow(table,obj)
{
	try
	{
		if(table!=null&&table!='undefined')
		{
			var theNewRow = table.insertRow(table.rows.length);
			//如果obj是个数组
			if(obj.length!='undefined'&&obj.length>1)
			{
				var newtd=null;
				for(var i=0;i<obj.length;i++)
				{
				  newtd = theNewRow.insertCell();
				  newtd.innerHTML = obj[i];
				}
			}
			else
			{
			  var newtd = theNewRow.insertCell();
			  newtd.innerHTML = obj;
			}
		}
	}
	catch(e)
	{
	}
}
//删除属性id为table的表格的第rowNum行
function delRow(table,rowNum)
{
try{
  if(table.rows.length > 1) 
	{
	  table.deleteRow(rowNum);
	}
  }
  catch(e)
  {
  }
}

/*
==================================================================
功能：判断invalue是否为电话号码     如果条件成立层显示
使用：onkeyup="checkPhone(form1.t1.value,form1.t1)
==================================================================
*/
function isPhone(invalue,intype) {
var str=invalue;
var reg=/(^[0-9]{3,4}-[0-9]{3,8}$)|(^[0-9]{3,8}$)|(^([0-9]{3,4})-[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/
if(!reg.test(str)){
    return false;
}else{
return true;
}
}


/*
==================================================================
功能：判断invalue的是否为汉字
使用：onmouseout="hideDiv('divid','divid',...)"
返回：bool
==================================================================
*/
function isChinese(invalue){
if((invalue.match(/[\u4E00-\u9FA5]/)==null))
  {
    return "应输入汉字！";
  }
  return true;
}
function chkChecked(objs)
{
  if(objs==null)
  {
    alert("chkChecked所收到的对象为不存在.");
    return false;
  }
  if(objs.length>1)
  {
    for(var i=0;i<objs.length;i++)
    {
      if(objs[i].checked)
      {
        return true;
      }
    }
  }else if(objs.checked)
  {
        return true;
  }
	return false;
}
/****************************************页面中的动态表格处理结束*********************************************/