//以下是JavaScript函数头注释模板
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: 函数语法
//功能描述: 功能描述
//传入参数: 参数名称 - 参数数据类型 - 参数说明
//　　　　  参数名称 - 参数数据类型 - 参数说明
//返回结果: 结果数据类型 - 结果说明
//附加说明: 附加说明
//作者名称: 作者名称

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: alterRowStyle(rowToAlter, newStyleClassName)
//功能描述: 改变表格行的风格
//传入参数: rowToAlter - 表格行对象 - 要改变风格的表格行
//　　　　  newStyleClassName - 字符串型 - 表格行新的风格类的名称
//返回结果: 无
//附加说明: 无
//作者名称: 陈楠
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function alterRowStyle(rowToAlter, newStyleClassName)
{
	rowToAlter.className = newStyleClassName;
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: existCheckedRadioButton(radioButtonGroupToCheck)
//功能描述: 检测一个单选按钮组中是否有一个单选按钮被选中了
//传入参数: radioButtonGroupToCheck - 单选按钮集合 - 要检测的单选按钮组
//返回结果: 布尔型 - 当有一个单选按钮被选中了返回true; 否则返回false
//附加说明: 未做参数的有效性检查
//作者名称: 陈楠
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function existCheckedRadioButton(radioButtonGroupToCheck)
{
	var blnExistCheckedRadioButton; //是否有一个单选按钮被选中了

	blnExistCheckedRadioButton = false;
	for (var intCounter = 0; intCounter < radioButtonGroupToCheck.length; intCounter ++)
	{
		if (radioButtonGroupToCheck[intCounter].checked)
		{
			blnExistCheckedRadioButton = true;
			break;
		}
	}

	return (blnExistCheckedRadioButton);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: generateRandomNumber(minNumber, maxNumber)
//功能描述: 随机生成给定范围内的整数（包括边界）
//传入参数: minNumber - 整型 - 允许生成的最小整数
//　　　　  maxNumber - 整型 - 允许生成的最大整数
//返回结果: 整型 - 随机生成的给定范围内的整数
//附加说明: 未做参数的有效性检查
//作者名称: 陈楠
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function generateRandomNumber(minNumber, maxNumber)
{
	var intRandomNumber; //随机生成的整数

	intRandomNumber = Math.floor((maxNumber - minNumber + 1) * Math.random());
	intRandomNumber += minNumber;

	return (intRandomNumber);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: addOption(sourceOptionList, optionList, categoryName, maxOptionCount)
//功能描述: 将一个列表框的选项添加到另一个列表框中
//传入参数: sourceOptionList - 列表框 - 来源列表框
//　　　　  optionList - 列表框 - 目标列表框
//　　　　  categoryName - 字符串型 - 内容类别名称
//　　　　  maxOptionCount - 整型 - 允许添加的最大的选项数目
//返回结果: 无
//附加说明: 未做参数的有效性检查
//作者名称: 陈楠
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function addOption(sourceOptionList, optionList, categoryName, maxOptionCount)
{
	switch (sourceOptionList.selectedIndex)
	{
		case -1:
			if (sourceOptionList.length > 0)
			{
				sourceOptionList.selectedIndex = 0;
			}
			break;

		case 0:
			//清除目标列表框的选项
			while (optionList.length > 0)
			{
				//optionList.options.remove(0); //NetScape不支持这种写法
				optionList.options[0] = null;
			}

			//添加选项到目标列表框
			optionList.options.add(new Option(sourceOptionList.options[sourceOptionList.selectedIndex].text, sourceOptionList.options[sourceOptionList.selectedIndex].value));
			break;

		default:
			//检测是否已经达到允许添加的最大的选项数目
			if (optionList.options.length == maxOptionCount)
			{
				alert("最多只能添加" + maxOptionCount + "个" + categoryName + "选项");
				return;
			}

			//检测是否已经存在“不限”或相同的选项
			var blnExistSameOption; //是否存在相同的选项

			blnExistSameOption = false;
			for (var intCounter = 0; intCounter < optionList.length; intCounter ++)
			{
				if (optionList.options[intCounter].value == "")
				{
					alert("已包含了" + categoryName + "选项: " + sourceOptionList.options[sourceOptionList.selectedIndex].text);
					return;
				}

				if (optionList.options[intCounter].value == sourceOptionList.options[sourceOptionList.selectedIndex].value)
				{
					blnExistSameOption = true;
				}
			}

			//添加选项
			if (! blnExistSameOption)
			{
				optionList.options.add(new Option(sourceOptionList.options[sourceOptionList.selectedIndex].text, sourceOptionList.options[sourceOptionList.selectedIndex].value));
			}

			//选中下一条要添加的选项
			if (sourceOptionList.selectedIndex != sourceOptionList.options.length - 1)
			{
				sourceOptionList.selectedIndex ++;
			}
			break;
	}
}

//删除选项
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数语法: removeOption(optionList, categoryName)
//功能描述: 将一个列表框的选项删除
//传入参数: optionList - 列表框 - 目标列表框
//　　　　  categoryName - 字符串型 - 内容类别名称
//返回结果: 无
//附加说明: 未做参数的有效性检查
//作者名称: 陈楠
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function removeOption(optionList, categoryName)
{
	if (optionList.options.length > 0)
	{
		switch (optionList.selectedIndex)
		{
			case -1:
				optionList.selectedIndex = 0;
				break;

			default:
				var intFocusingOptionIndex; //删除完选项后将被选中的选项的索引

				//获取删除完选项后将被选中的选项的索引
				intFocusingOptionIndex = (optionList.selectedIndex == optionList.options.length - 1) ? (optionList.selectedIndex - 1) : (optionList.selectedIndex);

				//删除选项
				//optionList.options.remove(optionList.selectedIndex); //NetScape不支持这种写法
				optionList.options[optionList.selectedIndex] = null;

				//选中下一条要删除选项
				optionList.selectedIndex = intFocusingOptionIndex;
				break;
		}
	}
}







//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//文件名称: func.js
//功能描述: 提供公用的JavaScript函数
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

//以下是函数列表
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// appendZeros
// bothTrim
// checkRadioButton
// isDate
// isDay
// isEmail
// isHour
// isMinute
// isMonth
// isNumber
// isSecond
// isYear
// leftTrim
// rightTrim
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



//格式化操作提示
function formatOpPrompt(opPrompt, opPromptPrefix, opPromptSuffix)
{
	var strFormattedOpPrompt; //格式化后的操作提示
	var strOpPromptPrefix; //操作提示前缀
	var strOpPromptSuffix; //操作提示后缀

	strOpPromptPrefix = (opPromptPrefix == null) ? " * " : opPromptPrefix;
	strOpPromptSuffix = (opPromptSuffix == null) ? " \n" : opPromptSuffix;
	strFormattedOpPrompt = strOpPromptPrefix + opPrompt + strOpPromptSuffix;

	return strFormattedOpPrompt;
}

function selectRadio(radioGroup, selectValue)
{
	var colRadioGroup;
	var intCounter;
	var intRadioCount;

	colRadioGroup = radioGroup;
	intRadioCount = colRadioGroup.length;

	for (intCounter = 0; intCounter < intRadioCount; intCounter ++)
	{
		if (colRadioGroup[intCounter].value == selectValue)
		{
			colRadioGroup[intCounter].checked = true;
			break;
		}
	}
}

function selectOption(select, selectValue)
{
	var eleSelect;
	var intCounter;
	var intOptionCount;

	eleSelect = select;
	intOptionCount = eleSelect.options.length;

	for (intCounter = 0; intCounter < intOptionCount; intCounter ++)
	{
		if (eleSelect.options[intCounter].value == selectValue)
		{
			eleSelect.selectedIndex = intCounter;
			break;
		}
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: appendZeros
//功能描述: 对一个整数/整型字符串进行定长补零操作
//传入参数: stringToAppend - 整型/字符串型 - 将要进行补零操作的字符串（默认为空字符串）
//　　　　  finalStringLength - 整型 - 补零操作后该字符串应该达到的长度（默认为2）
//　　　　  appendDirection - 整型 - 补零操作的方向（0: 左边补零（默认） 1: 右边补零）
//返回结果: 字符串型 - 已经进行完补零操作的字符串
//附加说明: -
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function appendZeros(stringToAppend, finalStringLength, appendDirection)
{
	//获取传入参数
	//---------------------------------------------------------------------------------
	var strStringToAppend; //将要进行补零操作的字符串
	var intFinalStringLength; //补零操作后该字符串应该达到的长度
	var intAppendDirection; //补零操作的方向

	//获取将要进行补零操作的字符串
	//===================================================================
	if (stringToAppend == null)
	{
		strStringToAppend = ""; //默认
	}
	else
	{
		strStringToAppend = stringToAppend + "";
	}

	//获取补零操作后该字符串应该达到的长度
	//===================================================================
	if (finalStringLength == null)
	{
		intFinalStringLength = 2; //默认
	}
	else
	{
		intFinalStringLength = finalStringLength;
	}

	//获取补零操作的方向
	//===================================================================
	if (appendDirection == null)
	{
		intAppendDirection = 0; //默认
	}
	else
	{
		intAppendDirection = appendDirection;
	}


	//进行补零操作
	//---------------------------------------------------------------------------------
	var intCounter; //计数器
	var intZeroCount; //应该补充的零的数量
	var strZeroString; //由应该补充的零组成的字符串
	var strStringAppended; //已经进行完补零操作的字符串

	intZeroCount = intFinalStringLength - strStringToAppend.length;
	strZeroString = "";

	for (intCounter = 1; intCounter <= intZeroCount; intCounter ++)
	{
		strZeroString += "0";
	}

	if (intAppendDirection == 0)
	{
		strStringAppended = strZeroString + strStringToAppend;
	}
	else
	{
		strStringAppended = strStringToAppend + strZeroString;
	}


	return (strStringAppended);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: bothTrim
//功能描述: 从给定字符串的左边开始清除空格直到遇到一个非空格字符为止
//　　　　  从给定字符串的右边开始清除空格直到遇到一个非空格字符为止
//传入参数: stringToTrim - 字符串型 - 要进行清除空格操作的字符串
//返回结果: 字符串型 - 已经进行完清除空格操作的字符串
//附加说明: 需要调用leftTrim和rightTrim两个函数
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function bothTrim(stringToTrim)
{
	var strStringToTrim; //要进行清除空格操作的字符串
	var strStringTrimmed; //已经进行完清除空格操作的字符串

	strStringToTrim = stringToTrim;
	strStringTrimmed = rightTrim(leftTrim(strStringToTrim));


	return (strStringTrimmed);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: checkRadioButton
//功能描述: 根据给定的值选中单选按钮组的一个单选按钮
//传入参数: radioButtonGroup - 页面元素 - 要进行选择的单选按钮组
//　　　　  checkValue - 字符串型 - 给定的值
//返回结果: -
//附加说明: -
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function checkRadioButton(radioButtonGroup, checkValue)
{
	var eleRadioButtonGroup; //要进行选择的单选按钮组
	var strCheckValue; //给定的值
	var intCounter; //计数器
	var intRadioButtonCount; //单选按钮的个数

	eleRadioButtonGroup = radioButtonGroup;
	intRadioButtonCount = eleRadioButtonGroup.length;

	//先清除单选按钮组当前已有的选择
	//===================================================================
	for (intCounter = 0; intCounter < intRadioButtonCount; intCounter ++)
	{
		eleRadioButtonGroup[intCounter].checked = false;
	}

	//根据给定的值选中单选按钮组的一个单选按钮
	//===================================================================
	strCheckValue = checkValue + "";
	strCheckValue = strCheckValue.toUpperCase();

	for (intCounter = 0; intCounter < intRadioButtonCount; intCounter ++)
	{
		if (eleRadioButtonGroup[intCounter].value.toUpperCase() == strCheckValue)
		{
			eleRadioButtonGroup[intCounter].checked = true;
			break;
		}
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isDate
//功能描述: 检测给定的字符串是否包含了合法的日期值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的日期值时返回true，否则返回false
//附加说明: stringToCheck必须完全符合yyyy/mm/dd格式，如2003/08/29，否则函数可能失效
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isDate(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var dtmTheDate; //临时用日期对象
	var strNewDateString; //根据该字符串重新生成的日期型字符串

	//将给定的字符串带入Date对象，然后通过Date对象的属性，按照yyyy/mm/dd格式重新
	//组合成一个日期型字符串，若新生成的字符串和给定的字符串相同，则表示给定的字符串
	//包含了合法的日期值。这是基于以下的原因：如"2003/02/31"这是个格式正确但值不合法的
	//日期型字符串，将该字符串带入Date对象会生成新字符串"2003/03/03"
	//（因为Date对象会将多出来的3天放到3月份），值发生了改变，说明原来的值不合法
	//而用合法的字符串如"2003/05/31"生成出来的的新字符串值则保持不变
	//===================================================================
	strStringToCheck = stringToCheck;
	dtmTheDate = new Date(strStringToCheck);

	strNewDateString = "";
	strNewDateString += dtmTheDate.getFullYear() + "/";
	strNewDateString += appendZeros(dtmTheDate.getMonth() + 1) + "/";
	strNewDateString += appendZeros(dtmTheDate.getDate());

	if (strStringToCheck == strNewDateString)
	{
		return (true);
	}
	else
	{
		return (false);
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isDay
//功能描述: 检测给定的字符串是否包含了合法的日的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的日的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  日的值的说明：这里认定1至31的整数值为合法的日的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isDay(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intDay; //日的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//日的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//日的值范围是1至31
	//===================================================================
	intDay = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intDay = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intDay < 1) || (intDay > 31)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isEmail
//功能描述: 检测给定的字符串是否符合Email的格式
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串符合Email的格式时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  Email的格式说明：
//　　　　    只能由英文大小写字母、0~9的数字、下划线、减号、@和.组成；
//　　　　    长度不能小于5；中间不能包含空格；必须且只能有1个@；
//　　　　    @不能出现在最左和最右；@右边最少应该有1个.；
//　　　　    @右边的.不能和@相接，.之间也不能互相连接，@右边的.也不能出现在最右
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isEmail(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var strStringRightPart; //该字符串中符号@右边的字符串部分

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;

	//长度不能小于5
	//===================================================================
	if (intStringLength < 5) return (false);

	//中间不能包含空格
	//===================================================================
	if (strStringToCheck.indexOf(" ") != -1) return (false);

	//只能由英文大小写字母、0~9的数字、下划线、减号、@和.组成
	//===================================================================
	strCharRange = "";
	strCharRange += "abcdefghijklmnopqrstuvwxyz";
	strCharRange += "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	strCharRange += "0123456789";
	strCharRange += "_-@.";

	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//必须且只能有1个@
	//===================================================================
	if (strStringToCheck.indexOf("@") == -1) return (false);
	if (strStringToCheck.indexOf("@") != strStringToCheck.lastIndexOf("@")) return (false);

	//@不能出现在最左和最右
	//===================================================================
	if (strStringToCheck.indexOf("@") == 0) return (false);
	if (strStringToCheck.indexOf("@") == intStringLength - 1) return (false);

	//@右边最少应该有1个.
	//===================================================================
	strStringRightPart = strStringToCheck.substring(strStringToCheck.indexOf("@") + 1, intStringLength);
	if (strStringRightPart.indexOf(".") == -1) return (false);

	//@右边的.不能和@相接，.之间也不能互相连接，@右边的.也不能出现在最右
	//===================================================================
	if (strStringRightPart.indexOf(".") == 0) return (false);
	if (strStringRightPart.lastIndexOf(".") == strStringRightPart.length - 1) return (false);
	if (strStringRightPart.indexOf("..") != -1) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isHour
//功能描述: 检测给定的字符串是否包含了合法的时的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的时的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  时的值的说明：这里认定0至23的整数值为合法的时的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isHour(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intHour; //时的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//时的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//时的值范围是0至23
	//===================================================================
	intHour = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intHour = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intHour < 0) || (intHour > 23)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isMinute
//功能描述: 检测给定的字符串是否包含了合法的分的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的分的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  分的值的说明：这里认定0至59的整数值为合法的分的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isMinute(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intMinute; //分的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//分的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//分的值范围是0至59
	//===================================================================
	intMinute = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intMinute = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intMinute < 0) || (intMinute > 59)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isMonth
//功能描述: 检测给定的字符串是否包含了合法的月的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的月的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  月的值的说明：这里认定1至12的整数值为合法的月的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isMonth(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intMonth; //月的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//月的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//月的值范围是1至12
	//===================================================================
	intMonth = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intMonth = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intMonth < 1) || (intMonth > 12)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isSecond
//功能描述: 检测给定的字符串是否包含了合法的秒的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的秒的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  秒的值的说明：这里认定0至59的整数值为合法的秒的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isSecond(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intSecond; //秒的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//秒的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//秒的值范围是0至59
	//===================================================================
	intSecond = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intSecond = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intSecond < 0) || (intSecond > 59)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: isYear
//功能描述: 检测给定的字符串是否包含了合法的年的值
//传入参数: stringToCheck - 字符串型 - 将要进行检测的字符串
//返回结果: 布尔型 - 当给定的字符串包含了合法的年的值时返回true，否则返回false
//附加说明: 需要调用bothTrim函数
//　　　　  年的值的说明：这里认定100至9999的整数值为合法的年的值
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isYear(stringToCheck)
{
	var strStringToCheck; //将要进行检测的字符串
	var intStringLength; //该字符串的长度
	var strCharRange; //该字符串的合法字符范围
	var intCounter; //计数器
	var intYear; //年的值

	strStringToCheck = bothTrim(stringToCheck);
	intStringLength = strStringToCheck.length;
	strCharRange = "0123456789";

	//年的值必须是整数
	//===================================================================
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strCharRange.indexOf(strStringToCheck.charAt(intCounter)) == -1) return (false);
	}

	//年的值范围是0至9999
	//===================================================================
	intYear = 0;
	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		if (strStringToCheck.charAt(intCounter) != "0")
		{
			intYear = parseInt(strStringToCheck.substring(intCounter, intStringLength));
			break;
		}
	}
	if ((intYear < 100) || (intYear > 9999)) return (false);


	return (true);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: leftTrim
//功能描述: 从给定字符串的左边开始清除空格直到遇到一个非空格字符为止
//传入参数: stringToTrim - 字符串型 - 要进行清除空格操作的字符串
//返回结果: 字符串型 - 已经进行完清除空格操作的字符串
//附加说明: -
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function leftTrim(stringToTrim)
{
	var strStringToTrim; //要进行清除空格操作的字符串
	var strStringTrimmed; //已经进行完清除空格操作的字符串
	var intCounter; //计数器
	var intStringLength; //要进行清除空格操作的字符串的长度

	strStringToTrim = stringToTrim;
	strStringTrimmed = "";
	intStringLength = strStringToTrim.length;

	for (intCounter = 0; intCounter < intStringLength; intCounter ++)
	{
		//当遇到左边第一个非空格字符后
		//将从该字符起至最右的子字符串作为结果并中止循环
		if (strStringToTrim.charAt(intCounter) != " ")
		{
			strStringTrimmed = strStringToTrim.substring(intCounter, intStringLength);
			break;
		}
	}


	return (strStringTrimmed);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称: rightTrim
//功能描述: 从给定字符串的右边开始清除空格直到遇到一个非空格字符为止
//传入参数: stringToTrim - 字符串型 - 要进行清除空格操作的字符串
//返回结果: 字符串型 - 已经进行完清除空格操作的字符串
//附加说明: -
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function rightTrim(stringToTrim)
{
	var strStringToTrim; //要进行清除空格操作的字符串
	var strStringTrimmed; //已经进行完清除空格操作的字符串
	var intCounter; //计数器
	var intStringLength; //要进行清除空格操作的字符串的长度

	strStringToTrim = stringToTrim;
	strStringTrimmed = "";
	intStringLength = strStringToTrim.length;

	for (intCounter = intStringLength - 1; intCounter >= 0; intCounter --)
	{
		//当遇到右边第一个非空格字符后
		//将从该字符起至最左的子字符串作为结果并中止循环
		if (strStringToTrim.charAt(intCounter) != " ")
		{
			strStringTrimmed = strStringToTrim.substring(0, intCounter + 1);
			break;
		}
	}


	return (strStringTrimmed);
}


//--------------------------------------------------------以下函数有待整理
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	openWin
//功能描述:	打开一个窗口
//传入参数:	URL		 - 字符串型	- 窗口要装载的文档的URL
//			Name	 - 字符串型	- 窗口的名字
//			Features - 字符串型	- 窗口的特性
//			PosMode	 - 整数型	- 窗口的位置模式
//			Replace	 - 布尔型	- 该URL是否代替原浏览历史项
//返回结果:	无
//附加说明:
//更新列表:	2002/05/09	修改函数
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function openWin(URL, Name, Features, PosMode, Replace)
{
	var strURL;
	var strName;
	var strFeatures;
	var intPosMode;
	var blnReplace;

	if (URL == null)
		strURL = "";
	else
		strURL = URL;
	//alert("strURL: " + strURL);

	if (Name == null)
		strName = "";
	else
		strName = Name;
	//alert("strName: " + strName);

	var intWidth;
	var intHeight;
	var intLeft;
	var intTop;

	intWidth	= 500;
	intHeight	= 500;
	intLeft		= 50;
	intTop		= 15;
	//alert("intWidth\t: " + intWidth + "\nintHeight\t: " + intHeight + "\nintLeft\t: " + intLeft + "\nintTop\t: " + intTop);

	strFeatures = "";
	strFeatures = strFeatures + "Width = " + intWidth + ", ";
	strFeatures = strFeatures + "Height = " + intHeight + ", ";
	strFeatures = strFeatures + "Left = " + intLeft + ", ";
	strFeatures = strFeatures + "Top = " + intTop + ", ";

	strFeatures = strFeatures + "ChannelMode = 0" + ", ";
	strFeatures = strFeatures + "Directories = 0" + ", ";
	strFeatures = strFeatures + "FullScreen = 0" + ", ";
	strFeatures = strFeatures + "Location = 0" + ", ";
	strFeatures = strFeatures + "MenuBar = 0" + ", ";
	strFeatures = strFeatures + "Resizable = 0" + ", ";
	strFeatures = strFeatures + "ScrollBars = 1" + ", ";
	strFeatures = strFeatures + "Status = 0" + ", ";
	strFeatures = strFeatures + "TitleBar = 0" + ", ";
	strFeatures = strFeatures + "ToolBar = 0" + ", ";

	if (Features == null || Features == "")
	{}
	else
	{
		strFeatures = strFeatures + Features + ", ";
	}
	//alert("strFeatures: " + strFeatures);

	if (PosMode == null)
		intPosMode = 0;
	else
		intPosMode = PosMode;
	//alert("intPosMode: " + intPosMode);

	switch (intPosMode)
	{
		case 0:	//用户定义窗口的放置位置
			break;

		case 1:	//窗口放置在屏幕的左上角
			intLeft	= 50;
			intTop	= 15;
			strFeatures = strFeatures + "Left = " + intLeft + ", ";
			strFeatures = strFeatures + "Top = " + intTop + ", ";
			break;

		case 2:	//窗口放置在屏幕的中上部
			intLeft	= 250;
			intTop	= 15;
			strFeatures = strFeatures + "Left = " + intLeft + ", ";
			strFeatures = strFeatures + "Top = " + intTop + ", ";
			break;

		case 3:	//窗口放置在屏幕的右上角
			intLeft	= 480;
			intTop	= 15;
			strFeatures = strFeatures + "Left = " + intLeft + ", ";
			strFeatures = strFeatures + "Top = " + intTop + ", ";
			break;

		case 4:	//窗口全屏
			intWidth	= screen.availWidth;
			intHeight	= screen.availHeight;
			intLeft		= 0;
			intTop		= 0;

			strFeatures = strFeatures + "Width = " + intWidth + ", ";
			strFeatures = strFeatures + "Height = " + intHeight + ", ";
			strFeatures = strFeatures + "Left = " + intLeft + ", ";
			strFeatures = strFeatures + "Top = " + intTop + ", ";
			break;

		default:
			break;
	}
	strFeatures = strFeatures.slice(0, -2);

	if (Replace == null)
		blnReplace = false;
	else
		blnReplace = Replace;
	//alert("blnReplace: " + blnReplace);

	//alert("strURL\t\t: " + strURL + "\nstrName\t\t: " + strName + "\nstrFeatures\t: " + strFeatures + "\nintPosMode\t: " + intPosMode + "\nblnReplace\t: " + blnReplace);
	window.open(strURL, strName, strFeatures, blnReplace);
}


//以上函数经过//附加说明 OK!
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	disableTextBox
//功能描述:	禁用指定的文本框
//传入参数:	要禁用的文本框对象
//返回结果:	无
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function disableTextBox(txtTemp)
{
	txtTemp.readOnly = true;
	txtTemp.style.backgroundColor = "Silver";
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	enableTextBox
//功能描述:	使指定的文本框可用
//传入参数:	要使能用的文本框对象
//返回结果:	无
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function enableTextBox(txtTemp)
{
	txtTemp.readOnly = false;
	txtTemp.style.backgroundColor = "";
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	enableTextBox
//功能描述:	使能用指定的文本框
//传入参数:	要使能用的文本框对象
//返回结果:	无
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function enableTextBox(txtTemp)
{
	txtTemp.readOnly = false;
	txtTemp.style.backgroundColor = "";
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	decideRdoBtn
//功能描述:	选中Value与给定字符串相等的单选按钮/复选框
//传入参数:	1、单选按钮/复选框对象(集合) 2、给定字符串
//返回结果:	无
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function decideRdoBtn(rdoTemp, strValue)
{
	var intCounter;
	var iRdoCnt;

	iRdoCnt = rdoTemp.length;
	//alert("iRdoCnt: " + iRdoCnt);

	for (intCounter = 0; intCounter < iRdoCnt; intCounter ++)
		if (rdoTemp[intCounter].value.toUpperCase() == strValue.toUpperCase())
		{
			rdoTemp[intCounter].checked = true;
			break;
		}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	isValidStr
//功能描述:	检测某字符串是否由指定的字符序列组成
//传入参数:	1、要检测的字符串 2、字符序列
//返回结果:	True/False
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isValidStr(strToChk, strChrRng)
{
	//获得合法字符范围
	if (strChrRng == null)
	{
		var strChrRng1;
		var strChrRng2;
		var strChrRng3;
		var strChrRng4;

		strChrRng1	= "0123456789";
		strChrRng2	= "abcdefghijklmnopqrstuvwxyz";
		strChrRng3	= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		strChrRng4	= "_";
		strChrRng = strChrRng1 + strChrRng2 + strChrRng3 + strChrRng4;
	}
	//alert("strChrRng: " + strChrRng);

	//检索整个字符串
	var intCounter;
	var iStrLen;
	var iChrIdx;

	iStrLen = strToChk.length;
	for (intCounter = 0; intCounter < iStrLen; intCounter ++)
	{
		iChrIdx = strChrRng.indexOf(strToChk.charAt(intCounter));
		if (iChrIdx == -1) return false;
	}

	return true;
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	isIDNo
//功能描述:	检测某字符串是否是正确的身份证号码格式
//传入参数:	要检测的字符串
//返回结果:	True/False
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function isIDNo(strIDNo)
{
	if (strIDNo == null) return false;

	//检测身份证号码长度
	var intStrLen;

	strIDNo += "";
	intStrLen = strIDNo.length;
	//alert(intStrLen);

	if (intStrLen != 15 && intStrLen != 18)
		return false;

	//检测身份证号码字符组成
	var intCounter;
	var iChrIdx;
	var strChrRng;

	strChrRng = "0123456789";
	for (intCounter = 0; intCounter < intStrLen; intCounter ++)
	{
		iChrIdx = strChrRng.indexOf(strIDNo.charAt(intCounter));
		if (iChrIdx == -1) return false;
	}

	return true;
}

function getHMS(iMSec, iReturn)
{
	var iHour, iMin, iSec;
	var iSpan;
	var strTime

	if (iMSec > 0)
	{
		iSpan	= Math.round(iMSec / 1000);
		iHour	= Math.floor(iSpan / 3600);

		iSpan	= iSpan - iHour * 3600;
		iMin	= Math.floor(iSpan / 60);

		iSpan	= iSpan - iMin * 60;
		iSec		= iSpan;
	}
	else
	{
		iHour	= 0;
		iMin	= 0;
		iSec		= 0;
	}

	if (iReturn == null) iReturn = 0;
	switch (iReturn)
	{
		case 0:
			strTime = addZero(iHour) + ":" + addZero(iMin) + ":" + addZero(iSec);
			break;

		case 1:
			strTime = iHour + "小时" + iMin + "分" + iSec + "秒";
			break;
	}

	return strTime;
}


function banRefresh()
{
	var objEvt;

	objEvt = window.event;
	//alert("Event Type: " + window.event.type + "\nEvent KeyCode: " + window.event.keyCode);

	if (objEvt.keyCode == 116 || objEvt.keyCode == 122)
	{
		objEvt.keyCode = 0;
		return false;
	}
}



function valueSlt(ary, slt, strDft, optStart)
{
	var opt;
	var iX, iY;
	var iLen, intCounter;

	iLen = ary.length;
	slt.innerHTML = "";

	slt = eval(slt);
	if (optStart == null)
	{
		optStart = document.createElement("OPTION");
		optStart.value	= "";
		optStart.text	= "";
	}
	slt.options.add(optStart);

	for (intCounter = 0; intCounter < iLen; intCounter ++)
	{
		opt = document.createElement("OPTION");
		opt.value	= ary[intCounter][0];
		opt.text	= ary[intCounter][1];

		slt.options.add(opt);
	}

	//alert("strDft: " + strDft);
	if (strDft == null)
		slt.selectedIndex = 0;
	else
	{
		strDft	+= "";
		slt.value = strDft;
	}
}

function getQstSts(iStatus)
{
	var strStatus;

	switch (iStatus)
	{
		case 0:
			strStatus = "确定";
			break;

		case 1:
			strStatus = "不确定";
			break;
	}

	return strStatus;
}

function altEmpStr(str)
{
	var strResult;

	if (str == null || str == "")
		strResult = "无";
	else
		strResult = str;

	return strResult;
}

function isNumeric(strNum)
{
	var strRef;
	var strChar;
	var intCounter, iStrLen;

	if (strNum == null) return false;
	if (strNum == "") return false;
	strNum += "";

	strRef	= "0123456789";
	iStrLen	= strNum.length;

	//Start to Test
	for (intCounter = 0; intCounter < iStrLen; intCounter ++)
	{
		strChar = strNum.charAt(intCounter);
		if (strRef.indexOf(strChar) < 0) return false;
	}

	return true;
}

function repStr(strSrc, strOld, strNew)
{
	var iIndex, iSrcLen, iOldLen;
	var str1, str2, strResult;

	////传入参数校验
	if (strSrc == null || strSrc == "")
		return null;

	if (strOld == null || strOld == "")
		return strSrc;

	if (strNew == null)
		strNew = "";

	strSrc	+= "";
	strOld	+= "";
	strNew+= "";

	iSrcLen	= strSrc.length;
	iOldLen	= strOld.length;
	if (iOldLen > iSrcLen) return strSrc;

	//得到新串
	iIndex = strSrc.indexOf(strOld);
	if (iIndex == -1) return strSrc;

	str1 = strSrc.substring(0, iIndex);
	str2 = strSrc.substring(iIndex + iOldLen);
	strResult = str1 + strNew + str2;

	return strResult;
}

function rptStr(strBase, iRpt, strSep)
{
	var strResult;
	var intCounter, iStrLen;

	if (strBase == null) return null;
	if (strSep == null) strSep = "";

	if (iRpt == null) iRpt = 2;
	if (iRpt < 1) iRpt = 0;

	strResult = "";
	for (intCounter = 1; intCounter <= iRpt; intCounter ++)
		strResult += strBase + strSep;

	iStrLen = strResult.length;
	strResult = strResult.slice(0, iStrLen - strSep.length)

	return strResult;
}


function addZero(iNum, iBit)
{
	var strNum;
	var intCounter, iNumLen;

	if (iNum == null) iNum = 0;
	if (iBit == null) iBit = 2;

	strNum	= iNum + "";
	iNumLen	= strNum.length;

	for (intCounter = 1; intCounter <= (iBit - iNumLen); intCounter ++)
		strNum = "0" + strNum;

	return strNum;
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	get2bNumStr
//功能描述	:	转换2位的数字成2位的数字字符串
//传入参数	:	1、iNumber:	要转换的数字。整型
//返回结果	:	转换后得到的数字字符串。整型
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function get2bNumStr(iNumber)
{
	var str2bNum;
	/*------------------------------------------
	常变量说明
	str2bNum:	数字字符串。字符串型
	------------------------------------------*/

	if (parseInt(iNumber) < 10)
		str2bNum = "0" + iNumber;
	else
		str2bNum = "" + iNumber;

	return str2bNum;
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function setNavBar(option)
{
	if (option == 1)
	{
		setNavBar_Link("SELALL", 0);
		setNavBar_Link("UNSELALL", 0);
	}

	if (m_iPageCount < 2)
	{
		setNavBar_Link("FIRST", 1);
		setNavBar_Link("PREVIOUS", 1);
		setNavBar_Link("NEXT", 1);
		setNavBar_Link("LAST", 1);
	}
	else
	{
		switch (m_iCurPageNo)
		{
			case 1:
				setNavBar_Link("FIRST", 1);
				setNavBar_Link("PREVIOUS", 1);
				setNavBar_Link("NEXT", 0);
				setNavBar_Link("LAST", 0);
				break;

			case m_iPageCount:
				setNavBar_Link("FIRST", 0);
				setNavBar_Link("PREVIOUS", 0);
				setNavBar_Link("NEXT", 1);
				setNavBar_Link("LAST", 1);
				break;

			default:
				setNavBar_Link("FIRST", 0);
				setNavBar_Link("PREVIOUS", 0);
				setNavBar_Link("NEXT", 0);
				setNavBar_Link("LAST", 0);
		}
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function setNavBar_Link(strLinkName, iStatus)
{
	var strLinkHead;
	var strLinkBody;
	var strLinkFoot;
	var strFunc;

	var iPageNo;
	var eleLinkParent;

	strLinkHead	= "<A HREF='";
	strLinkFoot	= "</A>"

	switch (strLinkName.toUpperCase())
	{
		case "FIRST":
			if (iStatus == 0)
			{
				iPageNo	= 1;
				eleLinkParent = spnFirstPage;

				strFunc		= "javascript: locatePage(" + iPageNo + ")";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;

		case "PREVIOUS":
			if (iStatus == 0)
			{
				iPageNo = m_iCurPageNo - 1;
				eleLinkParent = spnPreviousPage;

				strFunc		= "javascript: locatePage(" + iPageNo + ")";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;

		case "NEXT":
			if (iStatus == 0)
			{
				iPageNo = m_iCurPageNo + 1;
				eleLinkParent = spnNextPage;

				strFunc		= "javascript: locatePage(" + iPageNo + ")";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;

		case "LAST":
			if (iStatus == 0)
			{
				iPageNo = m_iPageCount;
				eleLinkParent = spnLastPage;

				strFunc		= "javascript: locatePage(" + iPageNo + ")";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;

		case "SELALL":
			if (iStatus == 0)
			{
				eleLinkParent = spnSelAll;

				strFunc		= "javascript: selAll()";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;

		case "UNSELALL":
			if (iStatus == 0)
			{
				eleLinkParent = spnUnselAll;

				strFunc		= "javascript: unselAll()";
				strLinkHead	= strLinkHead + strFunc + ";'>";
				strLinkBody	= eleLinkParent.innerText;

				eleLinkParent.innerHTML = strLinkHead + strLinkBody + strLinkFoot;
				//alert("eleLinkParent.innerHTML: \n" + eleLinkParent.innerHTML);
			}
			break;
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function assignFunc(ele, func, event)
{
	var intCounter, iEleCnt;
	var strEvent;

	/*------------------------------------------
	常变量说明
	intCounter		:	计数器。整型
	iEleCnt	:	同名元素集合中元素的个数。整型
	strEvent	:	事件类型。字符串型
	------------------------------------------*/

	if (event == null)
		strEvent = "onclick";
	else
		strEvent = event;
	//alert("strEvent: " + strEvent);
	//alert("tagName: " + ele.tagName)

	iEleCnt = ele.length;
	//alert("iEleCnt: " + iEleCnt);
	if (iEleCnt == null)
		eval("ele." + strEvent + " = " + func);
	else
		for (intCounter = 0; intCounter < iEleCnt; intCounter ++)
			eval("ele[intCounter]." + strEvent + " = " + func);
	//alert("Ok");
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function getEleIndex(eleSrc)
{
	var colSrc;
	var strCol;
	var intCounter, iEleCnt;

	/*------------------------------------------
	常变量说明
	//colSrc		:	同名元素集合。对象型数组
	//intCounter	:	计数器。整型
	//iEleCnt	:	同名元素集合中元素的个数。整型
	------------------------------------------*/
	//
	if (eleSrc.name != "")
		strCol = eleSrc.name;
	else
		if (eleSrc.id != "")
			strCol = eleSrc.id;
	//
	if (eleSrc.form != null)
		colSrc = eval("eleSrc.form." + strCol);
	else
		colSrc = eval(strCol);
	//
	iEleCnt = colSrc.length;
	if (iEleCnt == null) return (-1);

	for (intCounter = 0; intCounter < iEleCnt; intCounter ++)
		if (colSrc[intCounter] == eleSrc)
			return (intCounter);
}


//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	showArray
//功能描述	:	显示一维数组的元素（调试用）
//传入参数	:	1、array	 :	要显示的一维数组。数组
//返回结果	:	无
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function showArray(array)
{
	var intCounter, iEleCnt;
	var strShow;

	/*------------------------------------------
	常变量说明
	//intCounter			:	计数器。整型
	//iEleCnt	:	数组元素的个数。整型
	//strShow		:	数组元素值构成的字符串。字符串型
	------------------------------------------*/

	iEleCnt	= array.length;
	strShow	  = "Array Length: " + iEleCnt;
	strShow += "\n---------------------------------\n";

	for (intCounter = 0; intCounter < iEleCnt; intCounter ++)
	{
		if (typeof(array[intCounter]) == "object")
			strShow += array[intCounter].id + " ";
		else
			strShow += array[intCounter] + " ";
	}

	alert(strShow);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function show2DArray(array)
{
	var iX, iY, iLen1, iLen2;
	var strShow;

	/*------------------------------------------
	常变量说明
	//iX				:	计数器。整型
	//iY				:	计数器。整型
	//iLen1		:	数组一维的数目。整型
	//iLen2		:	数组二维的数目。整型
	//strShow	:	数组元素值构成的字符串。字符串型
	------------------------------------------*/

	iLen1 = array.length;
	strShow	  = "Array 1D Length: " + iLen1;
	strShow += "\n---------------------------------";

	for (iX = 0; iX < iLen1; iX ++)
	{
		strShow += "\n";
		iLen2 = array[iX].length;
		for (iY = 0; iY < iLen2; iY ++)
			strShow += array[iX][iY] + " ";
	}

	alert(strShow);
}

function removeOpt(slt, iStart, iEnd)
{
	var intCounter, iEleCnt;

	iEleCnt = slt.options.length;
	if (iEleCnt == 0) return;

	if (iStart < 0 || iStart == null)
		iStart = 0;

	if (iEnd > iEleCnt || iEnd == null)
		iEnd = iEleCnt;

	if (iEnd < 0)
		iEnd = iEnd + iEleCnt;

	for (intCounter = iStart; intCounter < iEnd; intCounter ++)
		slt.options.remove(iStart);
}

function genStrOpt(astr, slt)
{
	var opt;
	var intCounter, iEleCnt;

	/*------------------------------------------
	常变量说明
	opt		：下拉列表框选项。对象型
	intCounter	：计数器。整型
	iEleCnt：数组元素个数。整型
	------------------------------------------*/

	iEleCnt = astr.length;
	for (intCounter = 0; intCounter < iEleCnt; intCounter ++)
	{
		opt = document.createElement("OPTION");
		opt.value	= astr[intCounter];
		opt.text	= astr[intCounter];

		eval(slt ).options.add(opt);
	}
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//函数名称:	show
//功能描述:	显示全局常变量值
//传入参数:	要规整的字符串
//返回结果:	规整后的字符串
//附加说明:
//更新列表:	2002/05/05
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function show(variant)
{
	//常变量
	//数组
	//其他对象
	//undefined, null, true/false
	var strShow;

	strShow = variant + ": " + eval(variant);
	alert(strShow);
}