﻿<!--公共变量定义结束-->

	//去掉字串左边的空格
	function lTrim(str)
	{
		if (str.charAt(0) == " ")
		{
		//如果字串左边第一个字符为空格
		str = str.slice(1);//将空格从字串中去掉
		//这一句也可改成 str = str.substring(1, str.length);
		str = lTrim(str); //递归调用
		}
		return str;
	}

	//去掉字串右边的空格
	function rTrim(str)
	{
		var iLength;
		iLength = str.length;
		if (str.charAt(iLength - 1) == " ")
		{
		//如果字串右边第一个字符为空格
		str = str.slice(0, iLength - 1);//将空格从字串中去掉
		//这一句也可改成 str = str.substring(0, iLength - 1);
		str = rTrim(str); //递归调用
		}
		return str;
	}

	//去掉字串两边的空格
	function trim(str)
	{
		return lTrim(rTrim(str));
	}
	
function TimeChk(srcElement)
{
  if (!IsTime(srcElement))
  {
     alert(Err_Time);
     srcElement.select();
  }
}

function TelChk(srcElement)
{
	return true;
}

function IsTime(srcElement){
    var vTime = srcElement.value;
    if (vTime.length!=5)
    {
       return false;
    }
    if (vTime.indexOf(':')!=2)
    {
      return false;
    }
    vHour = vTime.substring(0,2);
    if (!isInt(vHour))
    {
      return false;
    }
    else
    {
       if (eval(vHour)>24)
       {
       	  return false;
       }
    }
    vMin = vTime.substring(3,5);
    if (!isInt(vMin))
    {
       return false;
    }
    else
    {
       if (eval(vMin)>59)
       {
          return false;
       }
    }
    return true;
   }

function IsInt(Expression)
{
	var Reg=new RegExp("^[0-9]{1,}$", "g");
	var Str=new String();
	Str=Expression;
	return Str.match(Reg);
}

function IsUntrimInt(Expression){
	var Reg=new RegExp("^ {0,}[0-9]{1,} {0,}$", "g");
	var Str=new String();
	Str=Expression;
	return Str.match(Reg);
}

function IsSpace(Expression){
	var Reg=new RegExp("^ {0,}$", "g");
	var Str=new String();
	Str=Expression;
	return Str.match(Reg);
}

function IsDate(Expression){
    var Reg=new RegExp("^[0-9]{4}-[]$", "g");
}

function IsDouble(Expression){
	var Reg=new RegExp("^[0-9]{1,}.?[0-9]{0,}$", "g");
	var Str=new String();
	Str=Expression;
	return Str.match(Reg);
}


function NullChk(srcElement, strPrompt) {
  value = srcElement.value;
  if (IsSpace(value)) {
     alert(strPrompt+Err_Null);
     srcElement.select();
     return false;
  }
  return true;
}

//检查输入框srcElement中是否为空(全是空格也认为是空)。
//  若否，则直接返回True；
//  若是，则按strPrompt提示，根据用户选择的结果返回布尔值。
function DoubleChk(srcElement, strPrompt){
    VALUE=srcElement.value;
    if(IsDouble(VALUE)){
        return confirm(strPrompt);
    }
    return true;
}

//检查输入框srcElement中的值是否为正确的整数值。
//	允许空。若输入框中全部为空格，则将其置空，以避免服务器端取到一个非空的空值。
function IntNumChk(srcElement, bSetZero){
	VALUE=srcElement.value;
	if(IsSpace(VALUE)){
		srcElement.value=bSetZero? "0" : "";
		return true;
	}
	//检查数字输入是否正确。
	if(!IsUntrimInt(VALUE)){
		alert("请正确填写整数。\n注意数字中间不要留有空格。");
		srcElement.select();
		return false;
	}
	return true;
}

//检查输入框srcElement中的值是否为正确的整数值。
//	允许空。若输入框中全部为空格，则将其置空，以避免服务器端取到一个非空的空值。
function DoubleNumChk(srcElement){
	VALUE=srcElement.value;
	if(IsSpace(VALUE)){
		srcElement.value="";
		return true;
	}
	//检查数字输入是否正确。
	if(!IsDouble(VALUE)){
		alert("请正确填写数字。\n注意数字中间不要留有空格。\n若是小数，则小数点前的数字不能省略。");
		srcElement.select();
		return false;
	}
	return true;
}

// 检查两个输入域中的值是否构成一个合法的区间。
function IsValidNumInterval(Element_1, Element_2){
    if ((Element_1.value != "") && (Element_2.value != "")) {
        eval("var bValid = (" + Element_1.value + " <= " + Element_2.value + ")");
        return bValid;
    }
    return true;
}

// 由一个表示日期的字符串(yyyy-mm-dd)返回一个日期型对象。
function getDate(dateString) {
    if (IsSpace(dateString))
        return NaN;
	var date = new Date();
    var str = new String();
    str = dateString;
    first = str.indexOf("-");
    second = str.lastIndexOf("-");
    var length = str.length;
    date.setYear(str.substring(0, first));
    date.setMonth(parseInt(str.substring(first + 1, second)) - 1);
    date.setDate(parseInt(str.substring(second + 1, length)) - 1);
	return date;
}

// 检查两个HTML元素中的值，是否构成一个合法的日期区间。
function IsValidDateInterval(Element_1, Element_2)
{
    var strDate_1 = Element_1.value;
    var strDate_2 = Element_2.value;
    if ((strDate_1 != "") && (strDate_2 != ""))
	{
        var date_1 = getDate(strDate_1);
        var date_2 = getDate(strDate_2);
        return (date_1 <= date_2);
	}
	return true;
}

// 检查两组<input>域构成的“日期-时间”区间是否符合要求。
function IsValidDatetimeInterval(strName_1, strName_2){
    if (document.all(strName_1 + "_date").value == "" || document.all(strName_2 + "_date").value == "")
        return true;
    var date_1 = getDate(document.all(strName_1 + "_date").value);
    var date_2 = getDate(document.all(strName_2 + "_date").value);
    var nHour_1 = parseInt(document.all(strName_1 + "_hour").value);
    var nHour_2 = parseInt(document.all(strName_2 + "_hour").value);
    var nMinute_1 = parseInt(document.all(strName_1 + "_minute").value);
    var nMinute_2 = parseInt(document.all(strName_2 + "_minute").value);

    if (date_1 > date_2)
        return false;
    else if (date_1.valueOf() == date_2.valueOf()) {
        if (nHour_1 > nHour_2)
            return false;
        else if (nHour_1 == nHour_2) {
            if (nMinute_1 > nMinute_2)
                return false;
        }
    }
    return true;
}

// 检查输入框中的值是否为一个合法的“时”值。
//    允许空，此时将输入框的值置为默认的“00”。
function HourNumChk(srcElement) {
    var bIsHour = true;
    if (IntNumChk(srcElement) == false)
        return false;
    else if (IsSpace(srcElement.value))
        srcElement.value = "00";
    else {
        var nHour = parseInt(srcElement.value);
        if (nHour < 0 || nHour > 24) {
            alert("请注意：小时应介于0点和24点之间!");
            srcElement.select();
            return false;
        }
        else if (srcElement.value.length < 2)
            srcElement.value = "0" + srcElement.value;
    }
    return true;
}

// 检查输入框中的值是否为一个合法的“分”值。
//    允许空，此时将输入框的值置为默认的“00”。
function MinuteNumChk(srcElement) {
    var bIsHour = true;
    if (IntNumChk(srcElement) == false)
        return false;
    else if (IsSpace(srcElement.value))
        srcElement.value = "00";
    else {
        var nMinute = parseInt(srcElement.value);
        if (nMinute < 0 || nMinute > 59) {
            alert("请注意：分钟应介于00和59点之间!");
            srcElement.select();
            return false;
        }
        else if (srcElement.value.length < 2)
            srcElement.value = "0" + srcElement.value;
    }
    return true;
}

<!--整形检测 isInt(theStr) 返回值为true or false-->
function isEmptyNum(str)
{
   if((str==null)||(str.length==0)) return true;
   else return (false);
 }

function isIntDigit(theNum)
{
   var theMask ='-0123456789';
   if (isEmptyNum(theNum)) return (false);
   else if (theMask.indexOf(theNum) == -1) return (false);
   return(true);
}

function isInt(theStr)
{
   var flag =true;
   if(isEmptyNum(theStr)) { flag =false;}
   else
   {
     if ((theStr.indexOf('-')!=-1)&&(theStr.indexOf('-')!=0)) {flag=false;}
	 for (var i=0;i< theStr.length;i++)
       {
         if (isIntDigit(theStr.substring(i,i+1))==false) {
          flag =false ; break;
          }
        }
    }
   return (flag);
}
<!--整形检测结束-->

<!--浮点数检测-->
function isNum(theStr)
{
    if (theStr.length==0) {return false;}
    else return (!isNaN(theStr));
}
<!--浮点数检测结束-->

<!--格式化数据 使用方法为Number.toFixed(n)-->
function Stretch(Q, L, c) { var S = Q
   if (c.length>0) while (S.length<L) { S = c+S }
   return S
}
function StrU(X, M, N) { // X>=0.0
   var T, S=new String(Math.round(X*Number("1e"+N)))
   if (S.search && S.search(/\D/)!=-1) { return ''+X }
   with (new String(Stretch(S, M+N, '0')))
   return substring(0, T=(length-N)) + '.' + substring(T)
}
function Sign(X) { return X<0 ? '-' : ''; }
function StrS(X, M, N) { return Sign(X)+StrU(Math.abs(X), M, N) }
Number.prototype.toFixed= new Function('n','return StrS(this,1,n)')
<!--格式化数据结束-->

<!--字符转化为数字-->
function toNum(theStr)
{
    if (isEmptyNum(theStr)) {return 0;}
    else
    {
        if (isNaN(theStr)) {return 0;}
        else {return (eval(theStr));}
    }
}
<!--字符转化为数字结束-->

<!--textarea长度检测-->
function textCounter(field,maxlimit) {
   if (field.value.length > maxlimit) // if too long...trim it!
   {
    field.value = field.value.substring(0, maxlimit);
    alert(Err_Long);
   }
}
<!--textarea长度检测结束-->

<!-- email 检测-->
function isEmail (emailStr)
{
    var checkTLD=1;
    var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);

    if (matchArray==null) {
        //alert("Email address seems incorrect (check @ and .'s)");
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) {
            alert("Ths username contains invalid characters.");
            return false;
        }
    }
    for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) {
            //alert("Ths domain name contains invalid characters.");
             return false;
         }
    }
    if (user.match(userPat)==null) {
        //alert("The username doesn't seem to be valid.");
        return false;
    }
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                //alert("Destination IP address is invalid!");
                return false;
            }
        }
        return true;
    }
    var atomPat=new RegExp("^" + atom + "$");
    var domArr=domain.split(".");
    var len=domArr.length;
    for (i=0;i<len;i++) {
        if (domArr[i].search(atomPat)==-1) {
            //alert("The domain name does not seem to be valid.");
            return false;
        }
    }
    if (checkTLD && domArr[domArr.length-1].length!=2 &&
        domArr[domArr.length-1].search(knownDomsPat)==-1) {
        //alert("The address must end in a well-known domain or two letter " + "country.");
        return false;
    }
    if (len<2) {
        //alert("This address is missing a hostname!");
        return false;
    }
    return true;
}

<!-- emailCheck End -->
	/**
	 * name: getLeftPos(objName)
	 * purpose: 取得一个HTML Element的模坐标值
	 * parameter: objName --Element的ID name.
	 * return: 横坐标
	 */
	function getLeftPos(objName)
	{
		var posLeft = 0;
		var obj1 = document.all(objName);
		while( obj1 != null )
		{
			posLeft += obj1.offsetLeft;
			obj1 = obj1.offsetParent;
		}
		return posLeft;
	}

	/**
	 * name: getTopPos(objName)
	 * purpose: 取得一个HTML Element的纵坐标值
	 * parameter: objName --Element的ID name.
	 * return: 纵坐标.
	 */
	function getTopPos(objName)
	{
		var posTop = 0;
		var obj1 = document.all(objName);
		while( obj1 != null )
		{
			posTop += obj1.offsetTop;
			obj1 = obj1.offsetParent;
		}
		return posTop;
	}


	/**
	 * name: getSelectValue(selectName)
	 * purpose:	取得一个select控件已选的一个或多个值,如有多个值，中间用逗号隔开
	 * parameter:	selectName	--控件name
	 * return:	已选定的值，如有多个，中间用逗号隔开
	 */
	function getSelectValue(selectName)
	{
		var objSelect = document.all(selectName);
		var selectedValue = "";
		for(var i = 0; i < objSelect.options.length; i++)
		{
			if (objSelect.options(i).selected)
			{
				if (objSelect.options(i).value != "")
					selectedValue += objSelect.options(i).value + ",";
			}
		}
		return selectedValue.substring(0, selectedValue.length - 1);
	}


	/**
	 * name: getSelectText(selectName)
	 * purpose:	取得一个select控件已选的一个或多个值的文本,如有多个值，中间用逗号隔开
	 * parameter:	selectName	--控件name
	 * return:	已选定的值，如有多个，中间用逗号隔开
	 */
	function getSelectText(selectName)
	{
		var objSelect = document.all(selectName);
		var selectedText = "";
		for(var i = 0; i < objSelect.options.length; i++)
		{
			if (objSelect.options(i).selected)
			{
				if (objSelect.options(i).value != "")
					selectedText += objSelect.options(i).text + ",";
			}
		}
		return selectedText.substring(0, selectedText.length - 1);
	}

	/**
	 * name: setSelectValue(selectName, strValue)
	 * purpose: 设定一个select控件的值
	 * parameter: selectName	--select控件的name;
	 *			  strValue  	--预选值，如有多个值，中间用逗号隔开
	 */
	function setSelectValue(selectName, strValue)
	{
		if ( strValue == "" ) return;

		var objSelect	= document.all(selectName);

		var strArray = strValue.split(",");
		for ( var i = 0; i < objSelect.options.length; i++)
		{
			objSelect.options(i).selected = false;
			for ( var k = 0; k < strArray.length; k++ )
			{
				if ( objSelect.options(i).value == strArray[k] )
				{
					objSelect.options(i).selected = true;
					break;
				}
			}
		}
	}


	/**
	 * 检查一个checkbox是否有被check的记录
	 * checkElementName -- HTML元素的name
	 * return: 如果有check的记录，返回true,反之，false
	 */
    function hasChecked(checkElementName)
    {
        var objCheck = document.all(checkElementName);

        if ( objCheck != null )
        {
            var len = objCheck.length;
            if ( isNaN(parseInt(len)) ) return objCheck.checked;
            for ( var i = 0; i < len; i++ )
                if ( objCheck[i].checked ) return true;
        }
        return false;
    }

	/**
	 * checkBox全选
	 * checkElementName -- HTML元素的name
	 * return: none
	 */
    function checkAll(checkElementName)
    {
        var objCheck = document.all(checkElementName);

        if ( objCheck != null )
        {
            var len = objCheck.length;
            if ( isNaN(parseInt(len)) ) objCheck.checked = true;
            for ( var i = 0; i < len; i++ )
                objCheck[i].checked = true;
        }
    }

	/**
	 * checkBox的check全取消
	 * checkElementName -- HTML元素的name
	 * return: none
	 */
    function cancelCheck(checkElementName)
    {
        var objCheck = document.all(checkElementName);

        if ( objCheck != null )
        {
            var len = objCheck.length;
            if ( isNaN(parseInt(len)) ) objCheck.checked = false;
            for ( var i = 0; i < len; i++ )
                objCheck[i].checked = false;
        }
    }

	/**
	 * name: getCheckValue(chkName)
	 * purpose:	取得一个checkbox控件已选的一个或多个值,如有多个值，中间用逗号隔开
	 * parameter:	chkName	--控件name
	 * return:	已选定的值，如有多个，中间用逗号隔开
	 */
	function getCheckValue(chkName)
	{
		var objCheck = document.all(chkName);
		var chkedValue = "";

		var chkLen = objCheck.length;
		if ( isNaN(parseInt(chkLen)) )
		{
			if ( objCheck.checked ) return objCheck.value;
		}

		for(var i = 0; i < chkLen; i++)
		{
			if (objCheck[i].checked)
			{
				if (objCheck[i].value != "")
					chkedValue += objCheck[i].value + ",";
			}
		}
		return chkedValue.substring(0, chkedValue.length - 1);
	}

    /**
     * 获取一组checkbox或radio对象中，被选中的对象的值构成的数组。
     */
	function GetCheckedValueArray(elementName, strPropertyName) {
		var obj = GetObject(elementName);
	 	var arrChecked = new Array();
		var nLength = GetLength(elementName);
		switch (nLength) {
			case 0:
				break;
			case 1:
				if (obj.checked) {
					arrChecked[0] = GetElementProperty(obj, strPropertyName);
				}
				break;
			default:
				for (var i = 0, j = 0; i < nLength; i++) {
					if (obj.item(i).checked) {
			            arrChecked[j++] = GetElementProperty(obj.item(i), strPropertyName);
			        }
				}
		}
	    return arrChecked;
	}


    function GetCheckedPropertyValue(elementName, strPropertyName)
    {
		var obj = GetObject(elementName);
		var strSeparator = ", ";
	 	var strValues = "";
		var nLength = GetLength(elementName);
		switch (nLength) {
			case 0:
				break;
			case 1:
				if (obj.checked) {
					strValues += GetElementProperty(obj, strPropertyName);
				}
				break;
			default:
				for (var i = 0; i < nLength; i++) {
					if (obj.item(i).checked) {
			            strValues += ((strValues == "")? "" : strSeparator)
			            	+ GetElementProperty(obj.item(i), strPropertyName);
			        }
				}
		}
	    return strValues;
    }

    function GetElementProperty(oElement, strPropertyName) {
		if (strPropertyName == null)
			return oElement.value;
		else
			return eval("oElement." + strPropertyName);
	}


	/**
	 * 若有多个被选中，则用', '分隔。
	 */
    function GetCheckedValue(elementName) {
		var obj = GetObject(elementName);
		var nLength = GetLength(elementName);
		var strValue = "";
		switch (nLength) {
			case 0:
				break;
			case 1:
				if (obj.checked)
					strValue = obj.value;
				break;
			default:
				for (var i = 0; i < nLength; i++) {
					if (obj.item(i).checked) {
						if (strValue == "")
							strValue = obj.item(i).value;
						else
							strValue += "," + obj.item(i).value;
			        }
				}
		}
	    return strValue;

    }

	function SetCheckedValue(elementName, strValue)
	{
		var obj = GetObject(elementName);
		var nLength = GetLength(elementName);
		var nChecked = 0;
		switch (nLength) {
			case 0:
				break;
			case 1:
				if (obj.value == strValue) {
					obj.checked = true;
					nChecked++;
				}
				break;
			default:
				for (var i = 0; i < nLength; i++) {
					if (obj.item(i).value == strValue) {
						obj.item(i).checked = true;
						nChecked++;
			        }
				}
		}
		return nChecked;
	}

	/**
	 * name: setCheckValue(checkElementName, strValue)
	 * purpose: 设定一个checkbox控件的值
	 * parameter: checkElementName	--checkbox控件的name;
	 *			  strValue  	--预选值，如有多个值，中间用逗号隔开
	 */
	function setCheckValue(checkElementName, strValue)
	{
		if ( strValue == "" ) return;

		var objCheckbox	= document.all(checkElementName);
        cancelCheck(checkElementName);

		var strArray = strValue.split(",");

		for ( var i = 0; i < strArray.length; i++)
		{

			chkOptionLen = objCheckbox.length;
			if ( isNaN(parseInt(chkOptionLen)) )
			{
				if ( objCheckbox.value == strArray[i] )
					objCheckbox.checked;
				continue;
			}

			for ( var k = 0; k < chkOptionLen; k++ )
			{
				if ( objCheckbox[k].value == strArray[i] )
				{
					objCheckbox[k].checked = true;
					break;
				}
			}
		}
	}
//删除表中的一行
function delRows(tableIdName,iRowIndex){
	var tb=document.all(tableIdName);
	if(tb && tb.tagName=="TABLE")
	{
	   tb.deleteRow(iRowIndex) ;
	}
}
//在table中增加tr行
//tableIdName:table表的ID号名称，类型为字符串
//trClassName:tr行的样式类名称，类型为字符串
//arrHtml:tr行的td中的内容，类型为字符串数组
function addDetails(tableIdName,trClassName,arrHtml)
{
	var tb=document.all(tableIdName);
	if(tb && tb.tagName=="TABLE")
	{

	   var rowId=tb.rows.length;
	   var row=tb.insertRow(rowId);
	   var cols=arrHtml.length;
	   if(row)
	   {
	      row.className=trClassName ;
	      for(var j=0;j<cols;j++)
	      {
		 var cell=row.insertCell(j);
		 if(cell)
		 {
		    cell.innerHTML=arrHtml[j];
		 }
	       }
	    }
	}
}

function addTableRowAt(tableIdName,trClassName,tdClassName,arrHtml,rowIndex)
{
	var tb=document.all(tableIdName);
	var i = rowIndex;
	if(tb && tb.tagName=="TABLE")
	{
	   var rowId=tb.rows.length - 1;
	   if (rowId < i || i < 0)
	   {
	   		i = rowId;
	   }
	   var row=tb.insertRow(i);
	   var cols=arrHtml.length;
	   if(row)
	   {
	      row.className=trClassName ;
	      for(var j=0;j<cols;j++)
	      {
		 var cell=row.insertCell(j);
		 if(cell)
		 {
		 	cell.className=tdClassName;
		    cell.innerHTML=arrHtml[j];
		 }
	       }
	    }
	}
}

	/**
	 * 在表格中动态增加一行
	 * @param trName --需要复制的trName名
	 * @param funcInit --复制一行后需执行的函数。
	 *                   注意：该函数执行时会传递一个index参数（已复制多少行的index,从0开始)
	 */
	function addRow(trName, funcInit)
	{
		var objTr = document.all(trName);

		var len = objTr.length;
		if ( isNaN(parseInt(len)) )
		{
			objTr.insertBefore(objTr.cloneNode(true));
			len = 1;
		} else {
			objTr[len - 1].insertBefore(objTr[len - 1].cloneNode(true));
		}
		funcInit(len);	//传递index给初始化函数
	}

	/**
	 * 在表格中删除一行
	 * @param trName --需要删除的trName名，只删除同ID名tr的最后一行，如只发现一个tr,拒绝删除。
	 */
	function deleteRow(trName)
	{
		var objTr = document.all(trName);

		var len = objTr.length;
		if ( isNaN(parseInt(len)) || len <= 1 )
		{
			alert("不能删除所有行！");
		} else {
			objTr[len - 1].removeNode(true);
		}
	}


/**
 * 在一个对象集合中找到具体某个对象的index,该对象通常由this获得
 * @param obj -需要获得index的对象
 * @return 该对象的index
 */
function findObjIndex(obj)
{
	var objCollection = document.all(obj.name);
	var objLen = objCollection.length;
	if ( isNaN(objLen) ) return NaN;

	for ( var i = 0; i < objLen; i++ )
	{
		if ( obj == objCollection[i] )
			return i;
	}
	return NaN;
}

/**
 * 取得两个日期间隔的天数
 * @param dateValue1 -表启始日期的字符串，yyyy-mm-dd格式
 * @param dateValue2 -表结束日期的字符串，yyyy-mm-dd格式
 * @return 返回间隔的天数
 */
function getDayInterval(dateValue1, dateValue2)
{
	var objDate1 = dateValue1;
	if (isNaN(objDate1))
		objDate1 = getDate(dateValue1);
	var objDate2 = dateValue2;
	if (isNaN(objDate2))
		objDate2 = getDate(dateValue2);

	if ( isNaN(objDate1) || isNaN(objDate2) )
		return 0;

	var dayMill = 24 * 60 * 60 * 1000;

	var date1Mill = objDate1.getTime();
	var date2Mill = objDate2.getTime();

	return (date2Mill - date1Mill) / dayMill;
}

/**
 * 将yyyy-mm-dd格式的字符串转换成Date对象，如果是非法的格式，返回NaN
 * 也可以用此方法判断是否为合法的日期字符串
 * @param strDate -代表日期的字符串
 */
function transDate(strDate)
{
	if ( strDate == null || strDate == "" ) return NaN;

	var eleArray = strDate.split("-");
	if ( eleArray.length != 3 ) return NaN;

	return new Date(eleArray[0], eleArray[1], eleArray[2]);
}

function openWindow(URL, nHeight, nWidth)
{
	var sFeatures = "menubar=no, toolbar=no, scrollbars=yes, resizable=yes";
	nHeight = parseInt(nHeight);
	nWidth = parseInt(nWidth);
	if (!isNaN(nHeight))
		sFeatures += ", height=" + nHeight;
	if (!isNaN(nWidth))
		sFeatures += ", width=" + nWidth;
    window.open(URL, "_blank", sFeatures);

}

// 取元素数组的长度。
function GetLength(elementName)
{
    var obj = GetObject(elementName);
    if (obj == null)
        return 0;
    var nLength = obj.length;
    if (nLength == undefined)
        nLength = 1;

    return nLength;
}

function GetChildrenLength(elementName)
{
	var obj = GetObject(elementName);
	if (obj == null)
		return -2;
	if (GetLength(elementName) > 1)
		return -1;
	return obj.children.length;
}

/**
 * 取得一组checkbox或radio对象中(每一个)被选中的元素的序号。
 * @return
 *     正常   IndexValue
 *     异常
 *          -1 对象不存在
 *          -2 没有元素被选中
 */
function GetCheckedIndex(strElementName)
{
    var nLength = GetLength(strElementName);
    if (nLength <= 0)
        return -1;
    for (var i = 0; i < nLength; i++) {
        if (document.all(strElementName, i).checked)
            return i;
    }
    return -2;
}

/**
 * 返回一组同名checkbox元素中被选中元素的序号组成的数组。
 * @param strElementName
 *     元素(checkbox)名(或ID)
 * @param bValidOnDisabled (default: true)
 *     当元素disabled属性为真时，是否将元素计入。
 */
function GetCheckedIndexArray(elementName, bValidOnDisabled) {
	var obj = GetObject(elementName);
 	var arrChecked = new Array();
	var nLength = GetLength(elementName);
	if (bValidOnDisabled == null)
		bValidOnDisabled = true;
	switch (nLength) {
		case 0:
			break;
		case 1:
			if (obj.checked && (!obj.disabled || bValidOnDisabled)) {
				arrChecked[0] = 0;
			}
			break;
		default:
		for (var i = 0, j = 0; i < nLength; i++) {
			if (obj.item(i).checked &&
				(!obj.item(i).disabled || bValidOnDisabled)) {
	            arrChecked[j++] = i;
	        }
		}
	}
    return arrChecked;
}

function GetCheckedLength(elementName, bValidOnDisabled) {
	return GetCheckedIndexArray(elementName, bValidOnDisabled).length;
}

/**
 * 根据表单元素的不同类别，引用不同的方法取其值。
 */
function GetValue(elementName) {
	var oElement = GetObject(elementName);
	if (oElement == null)
		return;
	if (GetLength(elementName) > 1)
		oElement = oElement.item(0);
    if (oElement.tagName == "SELECT")
        return getSelectValue(elementName);
    if (oElement.tagName == "INPUT")
        if (oElement.type == "radio" || oElement.type == "checkbox")
            return GetCheckedValue(elementName);
        else if (oElement.type == "text" || oElement.type == "hidden")
            return oElement.value;
}

/**
 * 若参数为一对象，则直接返回此对象；若参数为一字符串，则返回以此字符串为ID的对象(或对象集合)。
 */
function GetObject(elementName) {
	var obj;
	if (typeof elementName == "object") {
		obj = elementName;
	}
	else {
		obj = document.all(elementName);
	}
	return obj;
}

function LoadImage(targetImg, imageSrc, restrainedWidth, restrainedHeight) {
    var oImage = new Image();
    oImage.src = imageSrc;
    restrainedWidth  += 0.0;
    restrainedHeight += 0.0;
    while (oImage.width == 0) {
        oImage.width += 1;
    }
    while (oImage.height == 0) {
        oImage.height += 1;
    }
    if ( (0.0 + oImage.width) / oImage.height >
        restrainedWidth / restrainedHeight ) {
        targetImg.width  = restrainedWidth;
        targetImg.height = oImage.height * (restrainedWidth / oImage.width);
    }
    else {
        targetImg.height = restrainedHeight;
        targetImg.width  = oImage.width * (restrainedHeight / oImage.height);
    }
    targetImg.src = oImage.src;
}
