function strLen(key) {
	var l = escape(key), len;
	len = l.length - (l.length - l.replace(/\%u/g, "u").length) * 4;
	l = l.replace(/\%u/g, "uu");
	len = len - (l.length - l.replace(/\%/g, "").length) * 2;
	return len;
}
function subEstr(o,len){
	if(o.value.strLen()>len){
		o.value=o.value.subCHStr(0,len);
	}
}
        	     	                    	                      
eworlding_global_checkform_error = "";
//如果页面上没任何错误信息输入的地址都没有焦点返回到最后一个有效的作用域
e_global_noerror_gobackobj = null;
e_global_public_error=null;
e_global_ind = 0;
e_global_intputRealonly = "";// 如果是文本框，是只读。
function setEGCE(error) {
	eworlding_global_checkform_error = eworlding_global_checkform_error
			+ "<div >" + error + "!</div>";
}
function checkForm(oForm, oThis) {

	oForm.target = "_self";
	isSubmit = true;

	var els = oForm.elements;
	// 遍历所有表元素

	for ( var i = 0; i < els.length; i++) {
		//是单个验证还是全部验证	

		e_global_intputRealonly = els[i].readOnly;
		
		if (oThis == 'all' || oThis == els[i]) {
			//是否需要验证		alert(els[i])
			if (els[i].getAttribute("check")) {
				//取得表单的值,用通用取值函数
				GoViewError("", els[i]);
				var sVal = etrim(GetValue(els[i]));
				var error = els[i].getAttribute("warning");

				// alert(els[i].warning)
				// 取得验证的正则字符串
				var e_check = els[i].getAttribute("check");
				var e_checks = e_check.split(",");

				for ( var j = 0; j < e_checks.length; j++) {
					//字符串->正则表达式,不区分大小写
					if (isEmpty(e_checks[j])) {
						if (isEmpty(sVal)) {
							j = e_checks.length;
						}
					} else if (e_checks[j] != "true") {
						if(e_checks[j] =='fck'){
							if(isEmpty(e_fck(els[i].getAttribute('id')))){
									var msg = error + "不能为空";
									// 在一起显示错误信息的全局变量值
									setEGCE(msg);
									isSubmit = GoViewError(msg, els[i]);
									isSubmit = false;
							}else{
								setEGCE(msg);
								GoViewError(msg, els[i]);
							}
						}else{
							var reg = GetRegExp(e_checks[j]);
							var sVals = sVal.split(",");
							for ( var m = 0; m < sVals.length; m++) {
								if (!reg.test(etrim(sVals[m]))) {
	
									var msg = error + "格式不正常";
									// 在一起显示错误信息的全局变量值
									setEGCE(msg);
									isSubmit = GoViewError(msg, els[i]);
									isSubmit = false;
									// 验证不通过,弹出提示warning
									// alert(els[i].warning);
									// 该表单元素取得焦点,用通用返回函数
									// GoBack(els[i])
									// isSubmit=false;
	
								}
							}
						}
					} else {
						if (isEmpty(sVal)) {
							var msg = getErrorHead(els[i]) + error;
							// 在一起显示错误信息的全局变量值
							setEGCE(msg);
							isSubmit = GoViewError(msg, els[i]);
							isSubmit = false;
							j = e_checks.length;
						}
					}
			


				}
			}
		}

	}
	//alert(eworlding_global_checkform_error)
	if (!isSubmit && oThis == 'all') {
		if(!isEmpty(e_global_public_error)){
			GoViewErrors(eworlding_global_checkform_error,e_global_public_error)
		}
		GoBack(e_global_noerror_gobackobj)
	}
	eworlding_global_checkform_error = "";
	e_global_noerror_gobackobj = null;
	e_global_ind = 0;

	return isSubmit;

}
function GoViewError(msg, obj) {
	e_global_noerror_gobackobj=obj
	errObj = eod(obj.name + "_error")
	if (!isEmpty(errObj)) {
		errObj.style.display = isEmpty(msg) ? "none" : "";
		if (!isEmpty(msg)) {
			errObj.style.color="red";
			errObj.innerHTML = msg + "!";
			if (e_global_ind == 0) {
				e_global_ind = 1;
			}
		}
	} else {
		if (!isEmpty(eod("e_global_error"))) {
			e_global_public_error = eod("e_global_error")
		} else {
			alert(obj.name + "没有相对应的错误显示位置");
			isSubmit=false;
		}
	}
}
function GoViewErrors(msg, obj) {

	obj.style.display = isEmpty(msg) ? "none" : "";
		if (!isEmpty(msg)) {
			obj.style.color="red";
			obj.innerHTML = msg ;
			if (e_global_ind == 0) {
				e_global_ind = 1;
			}
		}

}
function GetRegExp(regExp) {
	switch (regExp) {
	case "allnumber":
		return />|<|,|\[|\]|\{|\}|\?|\/|\+|=|\||\'|\\|\"|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i;
	case "mail":
		return /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	case "phone":
		return /^[0-9]{3,4}\-[0-9]{7,8}$/i;
	case "fex":
		return /^[0-9]{3,4}\-[0-9]{7,8}$/i;
	case "mphone":
		return /^0{0,1}1[0-9]{10}$/i;
	case "number":
		return /^[0-9]$/i;
	case "znumber":
		return /^[0-9]*[1-9][0-9]*$/i;
	case "regno":
		return /^[0-9]-[0,1]$/i;
	case "user":
		return /^[0-9a-zA-z_]{6,}$/i;
	case "price":
		return /^\d+(\.\d{1,2})?$/i;
	default:
		return "";
	}

}
//通用取值函数分三类进行取值
// 文本输入框,直接取值el.value
// 单多选,遍历所有选项取得被选中的个数返回结果"00"表示选中两个
// 单多下拉菜单,遍历所有选项取得被选中的个数返回结果"0"表示选中一个
function GetValue(el) {
	//取得表单元素的类型
	var sType = el.type;
	switch (sType) {
	case "text":
	case "hidden":
	case "password":
	case "file":
	case "textarea":
		return el.value;
	case "checkbox":
	case "radio":
		return GetValueChoose(el);
	case "select-one":
	case "select-multiple":
		return GetValueSel(el);
	default:
		return "";
	}
}
//不为空错误头分二类
// 文本输入框,直接取值:"请输入"
// 单多选，单多下拉菜单，取值为："请选择"
function getErrorHead(el) {
	//取得表单元素的类型
	var sType = el.type;

	switch (sType) {
	case "text":
	case "hidden":
	case "password":
	case "file":
	case "textarea":
		return e_global_intputRealonly ? "请选择" : "请输入";
	case "checkbox":
	case "radio":
	case "select-one":
	case "select-multiple":
		return "请选择";
	default:
		return "";
	}
}
//取得radio,checkbox的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueChoose(el) {
	var sValue = "";
	// 取得第一个元素的name,搜索这个元素组
	var tmpels = document.getElementsByName(el.name);
	for ( var i = 0; i < tmpels.length; i++) {
		if (tmpels[i].checked) {
			sValue += "0";
		}
	}
	return sValue;
}
//取得select的选中数,用"0"来表示选中的个数,我们写正则的时候就可以通过0{1,}来表示选中个数
function GetValueSel(el) {
	var sValue = "";
	for ( var i = 0; i < el.options.length; i++) {
		//单选下拉框提示选项设置为value=""
		if (el.options[i].selected && el.options[i].value != "") {
			sValue += "0";
		}
	}
	return sValue;
}

//通用返回函数,验证没通过返回的效果.分三类进行取值
// 文本输入框,光标定位在文本输入框的末尾
// 单多选,第一选项取得焦点
// 单多下拉菜单,取得焦点
function GoBack(el) {
	//取得表单元素的类型
	var sType = el.type;
	switch (sType)

	{
	//文本输入框,光标定位在文本输入框的末尾
	case "text":
	case "hidden":
	case "password":
	case "file":
	case "textarea":
		try {
			el.focus();
			var rng = el.createTextRange();
			rng.collapse(false);
			rng.select();
		} catch (e) {
		}
		;
		break;

	// 单多选,第一选项非失效控件取得焦点
	case "checkbox":
	case "radio":
		var els = document.getElementsByName(el.name);
		for ( var i = 0; i < els.length; i++) {
			if (els[i].disabled == false) {
				els[i].focus();
				break;
			}
		}
		break;
	case "select-one":
	case "select-multiple":
		el.focus();
		break;
	}
}
function getRandom(){
	vNum = Math.random();
	vNum = Math.floor(vNum*10)
	return vNum;
}
function onChangeCheck(){
	m=getRandom();
	n=getRandom();
	k=m+n;
	document.getElementById("e_r_title").innerHTML=m+"+"+n+"=";
	e_r_value=k;
}
function isNumber(input ,Letters) { 
	var c; 
	var reVal=true
	for(var i = 0; i < input.length; i ++ ) { 
		c = input.charAt( i ); 
		if (Letters.indexOf( c ) ==-1) 	{ 
			reVal= false; 
			break;
		} 
	} 
	return reVal; 
} 
function floats(input){
	return isNumber(input ,'1234567890.');
}
//input>=0
function number(input){
	return isNumber(input ,'1234567890') 
}
//input>0
function znumber(input){
	bvalue=number(input);
	if(bvalue){
		bvalue=input>0;
	}
	return bvalue;
}
function e_fck(id){
	return (FCKeditorAPI.GetInstance(id).GetXHTML(true));

}

