<!--
/*===========================================================================
 * (c)copyright 2000 liqwei
 * Email: liqwei(at)liqwei.com
 *  Site: http://www.liqwei.com/
 *===========================================================================
 * 功能：负责表单效验；
 * 版本：v1.0；
 * 发布：2009-01-01
 *===========================================================================
 */

//===========================================================================【高级效验函数】
// 功能：检验指定文本框输入是否为空；
function checkEmpty(objHandle){
	return isEmpty(objHandle.value);
}

// 功能：检验指定文本框输入是否在指定长度范围内；
function checkTextLength(objHandle, nameOfCheck, minLength, maxLength){
	var value = objHandle.value;
	if(minLength>0 && isEmpty(value)){
		focusIt(objHandle);
		return error("“"+ nameOfCheck + "”不能为空！");
	}
	if(!isLengthBetween(value, minLength, maxLength)){
		focusIt(objHandle);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	return true;
}

// 功能：检验指定文本框输入是否为数字；
function checkNumberLength(objHandle, nameOfCheck, minLength, maxLength){
	var value = objHandle.value;
	if(minLength>0 && !isNumber(value)){
		focusIt(objHandle);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	if(!isLengthBetween(value, minLength, maxLength)){
		focusIt(objHandle);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	return true;
}

// 功能：检验指定文本框输入是否在指定数值范围内；
function checkValue(objHandle, nameOfCheck, minValue, maxValue){
	var value = objHandle.value;
	if(!isNumber(value)){
		focusIt(objHandle);
		return error("“"+ nameOfCheck + "”的格式错误！");	
	}
	if(!isValueBetween(value, minValue, maxValue)){
		focusIt(objHandle);
		return errorValueBetween(nameOfCheck, minValue, maxValue);
	}
	return true;
}

// 功能：检验指定文本框输入是否相同；
function checkSame(objHandle1, objHandle2, nameOfCheck){
	var value1 = objHandle1.value;
	var value2 = objHandle2.value;
	
	if(!isSame(value1, value2)){
		focusIt(objHandle1);
		return error("两次“"+ nameOfCheck + "”输入不一致！");
	}
	return true;
}

// 功能：检验指定文本框输入是否为邮件地址；
function checkEmail(objHandle, nameOfCheck, minLength, maxLength){
	var email = objHandle;
	if(!isLengthBetween(email.value, minLength, maxLength)){
		focusIt(email);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	if(minLength>0 && !isEmail(email.value)){
		focusIt(email);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	return true;
}

// 功能：检验指定文本框输入是否为Url地址；
function checkUrl(objHandle, nameOfCheck, minLength, maxLength){
	var url = objHandle;
	if(!isLengthBetween(url.value, minLength, maxLength)){
		focusIt(url);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	if(minLength>0 && !isUrl(url.value)){
		focusIt(url);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	return true;
}

// 功能：检验指定文本框输入是否为电话号码；
function checkPhoneCode(objHaddle, nameOfCheck, minLength, maxLength){
	var phoneCode = objHaddle;
	if(!isLengthBetween(phoneCode.value, minLength, maxLength)){
		focusIt(phoneCode);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	if(minLength>0 && !isPhoneCode(phoneCode.value)){
		focusIt(phoneCode);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	return true;
}

// 功能：检验指定文本框输入是否为手机号码；
function checkMobileCode(objHaddle, nameOfCheck, minLength, maxLength){
	var mobileCode = objHaddle;
	if(!isLengthBetween(mobileCode.value, minLength, maxLength)){
		focusIt(mobileCode);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	if(minLength>0 && !isMobileCode(mobileCode.value)){
		focusIt(mobileCode);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	return true;
}

// 功能：检验指定文本框输入是否为邮政号码；
function checkPostCode(objHaddle, nameOfCheck, minLength, maxLength){
	var postCode = objHaddle;
	if(!isLengthBetween(postCode.value, minLength, maxLength)){
		focusIt(postCode);
		return errorLengthBetween(nameOfCheck, minLength, maxLength);
	}
	if(minLength>0 && !isPostCode(postCode.value)){
		focusIt(postCode);
		return error("“"+ nameOfCheck + "”的格式错误！");
	}
	return true;	
}

// 功能：检验是否选择了指定的单选框；
function checkSelect(objHandle, nameOfCheck){
	if(!isSelect(objHandle)){
		focusIt(objHandle);
		return error("请选择“"+ nameOfCheck + "”！");
	}
	return true;
}

// 功能：检验是否选择了指定数量的复选框；
function checkSelectCount(objHandle, nameOfCheck, minCount, maxCount){
	if(!isSelectBetween(objHandle, minCount, maxCount)){
		focusIt(objHandle);
		return errorCountBetween(nameOfCheck, minCount, maxCount);
	}
	return true;
}

// 功能：检验是否选择下拉列表框；
function checkList(objHandle, nameOfCheck, errorValue){
	var list = objHandle;
	if(isEmpty(list.value)){
		focusIt(list);
		return error("请选择“"+ nameOfCheck + "”！");
	}
	if(list.multiple){  // 多选情况；
		with(list){
			for(var i=0; i<length; i++){
				if(options[i].selected)
					return true;
			}
		}
		focusIt(list);
		return error("请选择“"+ nameOfCheck + "”！");
	}else if(isSame(list.value, errorValue)){  // 单选情况；
		focusIt(list);
		return error("请选择“"+ nameOfCheck + "”！");
	}
	return true;
}

// 功能：检验是否选择了指定数量的下拉列表框选项（针对可多选的情况）；
function checkListCount(objHandle, nameOfCheck, minCount, maxCount){
	var list = objHandle;
	if(!isValueBetween(list.length, minCount, maxCount)){
		focusIt(list);
		return errorCountBetween(nameOfCheck, minCount, maxCount);
	}
	return true;
}

// 功能：检验是否选择了指定数量的下拉列表框选项（针对可多选的情况）；
function checkListSelectedCount(objHandle, nameOfCheck, minCount, maxCount){
	var list = objHandle;
	if(isEmpty(list.value)){
		focusIt(list);
		return error("请选择“"+ nameOfCheck + "”！");
	}
	if(list.multiple){  // 多选情况；
		var selectedCount = 0;
		with(list){
			for(var i=0; i<length; i++){
				if(options[i].selected)
					selectedCount ++;
			}
		}
		if(!isValueBetween(selectedCount, minCount, maxCount)){
			focusIt(list);
			return errorCountBetween(nameOfCheck, minCount, maxCount);
		}
	}
	return true;
}

//功能：将指定内容和值插入到列表中，过滤重复选项；
function insertItemIntoList(objHandle, text, value){
	var length = objHandle.length;
	for(var i=0; i<length; i++){
		if(objHandle.options[i].value==value) return;
	}
	objHandle.options[length] = new Option(text, value);
}

//功能：从列表中删除所有选中的选项；
function deleteSelectedItemInList(objHandle){
	for(var i=0; i<objHandle.length; i++){
		if(objHandle.options[i].selected){
			objHandle.remove(i); 
			i=-1;
		}
	}
}

//功能：从列表中删除所有选项；
function deleteAllItemInList(objHandle){
	while(objHandle.length>0){
		objHandle.remove(0);
	}
}

//功能：在两个列表间复制所有被选中的选项，过滤重复选项；
function copySelectedItemBetweenList(objHandleSrc, errorValue, objHandleAim){
	var arguments = copySelectedItemBetweenList.arguments;
	var length = arguments.length;
	var isEnableRelationParent = (length>3);
	
	for(var i=0; i<objHandleSrc.length; i++){
		var theOption = objHandleSrc.options[i];
		if(theOption.selected){
			if(theOption.value==errorValue){
				break;
			}
			
			var isExist = false;
			for(var j=0; j<objHandleAim.length; j++){
				if(objHandleAim.options[j].value==theOption.value){
					isExist = true;
					break;
				}
			}
			if(!isExist){
				if(isEnableRelationParent){
					var text = "";
					for(var j=3; j<length; j++){
						var obj = arguments[j];
						if(j==3){
							text=obj.options[obj.selectedIndex].text;
						}else{
							text+=" / "+obj.options[obj.selectedIndex].text;
						}
					}
					text += " / " + theOption.text;
					objHandleAim.options[objHandleAim.length] = new Option(text, theOption.value);
				}else{
					objHandleAim.options[objHandleAim.length] = new Option(theOption.text, theOption.value);
				}
			}
		}
	}	
}

//功能：在两个列表间复制所有选项，过滤重复选项；
function copyAllItemBetweenList(objHandleSrc, objHandleAim){
	for(var i=0; i<objHandleSrc.length; i++){
		var theOption = objHandleSrc.options[i];
		var isExist = false;
		for(var j=0; j<objHandleAim.length; j++){
			if(objHandleAim.options[j].value==theOption.value){
				isExist = true; 
				break;
			}
		}
		if(!isExist)
			objHandleAim.options[objHandleAim.length] = new Option(theOption.text, theOption.value);
	}
}

//功能：在两个列表间移动所有被选中的选项；
function moveSelectedItemBetweenList(objHandleSrc, objHandleAim){
	for(var i=0; i<objHandleSrc.length; i++){
		var theOption = objHandleSrc.options[i];
		if(theOption.selected){
			objHandleAim.options[objHandleAim.length] = new Option(theOption.text, theOption.value);
			objHandleSrc.remove(i);
			i=-1;
		}
	}
}

//功能：在两个列表间移动所有选项；
function moveAllItemBetweenList(objHandleSrc, objHandleAim){
	for(var i=0; i<objHandleSrc.length; i++){
		var theOption = objHandleSrc.options[i];
		objHandleAim.options[objHandleAim.length] = new Option(theOption.text, theOption.value);
		objHandleSrc.remove(i);
		i=-1;
	}
}

//功能：将列表中的所有选项都选中；
function selectAllItemInList(objHandle){
	for(var i=0; i<objHandle.length; i++){
		objHandle.options[i].selected = true;
	}
}
//===========================================================================【提示函数】
// 功能：确认操作相关函数；
function onDelete(){
	return confirm("系统提示：\n\n所选数据一旦被删除将无法恢复，确实要删除？\t\n\n（删除请点击“确定”，否则点击“取消”）\t");
}
// 功能：提交表单前确认；
function onSubmit(){
	return confirm("系统提示：\n\n输入数据一旦被提交将无法恢复，确实要提交？\t\n\n（提交请点击“确定”，否则点击“取消”）\t");
}
// 功能：重置表单前确认；
function onReset(){
	return confirm("系统提示：\n\n输入数据一旦被重设将无法恢复，确实要重设？\t\n\n（重设请点击“确定”，否则点击“取消”）\t");
}

// 功能：onMouseOver 事件下，聚焦指定对象；
function onOver(obj){
	try{ obj.focus(); }catch(e){}
}

// 功能：聚焦指定对象；
function focusIt(obj){
	try{ obj.focus(); }catch(e){}
}

// 功能：提示错误信息，并返回“假”；
function error(msg){
	alert("错误提示：\n\n"+ msg +"\t");
	return false;
}
//===========================================================================【获取指定对象】
// 功能：获取指定名称的控件对象；
function getById(fieldName){
	return document.getElementById(fieldName);
}

// 功能：获取指定名称的控件对象数组；
function getByName(fieldName){
	return document.getElementsByName(fieldName);
}

// 功能：获取指定表单，指定名称的控件对象或对象数组；
function getByForm(formName, fieldName){
	return eval("document."+ formName +"."+ fieldName);
}

// 功能：获取指定控件对象的值；
function getValue(fieldName){
	return document.getElementById(fieldName).value;
}

// 功能：获取指定的单选框控件对象的值；
function getValueByRadio(objHaddle){
	for(var i=0; i<objHaddle.length; i++){
		if(objHaddle[i].checked) return objHaddle[i].value;
	}
}

// 功能：获取指定的多选框控件对象的值；
function getValueByCheck(objHaddle, splitor){
	var value = new Array();
	var j=0;
	for(var i=0; i<objHaddle.length; i++){
		if(objHaddle[i].checked){
			value[j++]=objHaddle[i].value;
		}
	}
	return value.join(splitor);
}
//===========================================================================【基础校验函数】
// 功能：检测数据是否在指定的长度范围内(包含边界值)，当为 -1 时忽略边界值；
function isLengthBetween(value, minLength, maxLength){
	value = trim(value);
	if(minLength<0 && maxLength<0){
		return true;
	}else if(minLength<0){
		return (value.length<(maxLength+1));
	}else if(maxLength<0){
		return (value.length>(minLength-1));
	}else{
		return (value.length>(minLength-1) && value.length<(maxLength+1));
	}
}

// 功能：检测数据是否在指定的数据范围内(包含边界值),当为 -1 时忽略边界值；
function isValueBetween(value, minValue, maxValue){
	if(!isNumber(value)) return false;
	var temp = parseInt(value);
	if(minValue<0 && maxValue<0){
		return true;
	}else if(minValue<0){
		return (value<(maxValue+1));
	}else if(maxValue<0){
		return (value>(minValue-1));
	}else{
		return (temp>(minValue-1) && temp<(maxValue+1));
	}
}

// 功能：检测是否选择了指定对象，针对 checkbox，radio 控件；
function isSelect(obj){
	var checkedFlag = false;
	if(obj.length != "undifine" && obj.length>0){
		for(var i=0; i<obj.length; i++){
			if(obj[i].checked){
				checkedFlag = true;
				break;
			}
		}
	}else{
		if(obj.checked){ checkedFlag = true; }
	}
	
	return checkedFlag;
}

// 功能：检测是否选择了指定数目的对象，针对 checkbox，radio 控件；
function isSelectBetween(obj, minCount, maxCount){
	var selectedCount = 0;
	if(obj.length>0){
		for(var i=0; i<obj.length; i++){
			if(obj[i].checked){
				selectedCount ++;
			}
		}
	}else{
		if(obj.checked){ selectedCount ++; }
	}
	if(minCount<0)
		return (selectedCount<(maxCount+1));
	else if(maxCount<0)
		return (selectedCount>(minCount-1));
	else
		return (selectedCount>(minCount-1) && selectedCount<(maxCount+1));
}
// 功能：根据不同的长度返回错误信息；
function errorLengthBetween(nameOfCheck, minLength, maxLength){
	if(minLength<0)
		return error("“"+ nameOfCheck + "”的字数最多不超过："+ maxLength +" 个字符！");
	else if(maxLength<0)
		return error("“"+ nameOfCheck + "”的字数最少不低于："+ maxLength +" 个字符！");
	else if(minLength==maxLength)
		return error("“"+ nameOfCheck + "”的字符数量为："+ minLength +"个！");
	else
		return error("“"+ nameOfCheck + "”的字数范围为："+ minLength +"～"+ maxLength +"！");
}
// 功能：根据不同的数值返回错误信息；
function errorValueBetween(nameOfCheck, minValue, maxValue){
	if(minValue<0)
		return error("“"+ nameOfCheck + "”的数值最大不超过："+ maxValue +" ！");
	else if(maxValue<0)
		return error("“"+ nameOfCheck + "”的数值最小不低于："+ minValue +" ！");
	else
		return error("“"+ nameOfCheck + "”的数值范围为："+ minValue +"～"+ maxValue +"！");
}
// 功能：根据不同的个数返回错误信息；
function errorCountBetween(nameOfCheck, minCount, maxCount){
	if(minCount<0)
		return error("至多选择 "+ minCount +" 个“"+ nameOfCheck +"”！");
	else if(maxCount<0)
		return error("至少选择 "+ minCount +" 个“"+ nameOfCheck +"”！");
	else
		return error("“"+ nameOfCheck + "”的选择范围为："+ minCount +"～"+ maxCount +" 个！");
}
//===========================================================================
// 功能：去除指定文本中的HTML标记：/<(.*)>.*<\/>|<(.*) \/>/；
function abstractText(html){
	if(isEmpty(html)) return "";
	html = trim(html.replace(/<[^>]*>/g,"").replace(/&nbsp;/ig,"")).replace(/&quot;/ig,"\"");
	html = html.replace(/&ldquo;/ig,"“").replace(/&rdquo;/ig,"”").replace(/&mdash;/ig,"—");
	html = html.replace(/&hellip;/ig,"…");
	return html;
}

// 功能：去除指定文本中的空白行；
function stripBlankLine(text){
	if(isEmpty(text)) return "";
	return text.replace(/\n[\s| ]*\r/g,"");
}
//===========================================================================【底层校验函数】
// 功能：检测指定值是否为空；
function isEmpty(value){
	return (value == null)||(trim(value).length == 0);
}

// 功能：检测两个值是否相同；
function isSame(value1, value2){
	return (trim(value1) == trim(value2));
}

// 功能：去处空格(包括空格，tab，form feed，换行符，等价于[ \f\n\r\t\v])；
function trim(value){
	if(value==null) return null;
	return value.replace(/(^\s*)|(\s*$)/g,"");
}

// 功能：检测指定值是否包含非法字符('或")；
function isValidString(value){
	if(isEmpty(value)) return false;
	if(value.indexOf("\"")!=-1) return false;
	if(value.indexOf("'")!=-1) return false;
	return true;
}

// 功能：检测指定值是否为字母和数字的组合；
function isLetterNumber(value){
	return (new RegExp("[A-Za-z0-9]+$","gi")).test(value);
}

// 功能：检测指定值是否为数字；
function isNumber(value){
	return (new RegExp("[0-9]+$","gi")).test(value);
}

// 功能：检测指定值是否为字母，不区分大小写；
function isLetter(value){
	return (new RegExp("^[A-Za-z]+$","gi")).test(value);
}

// 功能：检测指定值是否为汉字；
function isChinese(value){
	return (new RegExp("[\u4e00-\u9fa5]","gi")).test(value);
}

// 功能：检测指定值是否为合法 Email 地址；
function isEmail(value){
	return (new RegExp("\\w+@{1}((\\w)+[-]?(\\w)+\\.)+[a-z]{2,3}$","gi")).test(value);
}

// 功能：检测指定值是否为合法 URL 地址；
function isUrl(value){
	return (new RegExp("http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?","gi")).test(value);
}

// 功能：检测是否为电话号码，例如：0311-82261131；
function isPhoneCode(value){
	return (new RegExp("(\\d{3}-\\d{8}|\\d{4}-\\d{7})","gi")).test(value);
}

// 功能：检测是否为电话号码，例如：13522487523；
function isMobileCode(value){
	return (new RegExp("\\d{11}","gi")).test(value);
}

// 功能：检测是否为邮政编码；
function isPostCode(value){
	return (new RegExp("\\d{6}","gi")).test(value);
}
-->