function $(obj)
{
	return document.getElementById(obj);
}
var FormValid = function(frm) {
    this.frm = frm;
    this.errMsg = new Array();
	this.errName = new Array();
   //必填
    this.required = function(inputObj) {
        if (typeof(inputObj) == "undefined" || inputObj.value.trim() == "") 
		{
            return false;
        }
		return true;
    }
    //两个值必须相同
    this.eqaul = function(inputObj, formElements) {
		var fstObj = inputObj;
		var sndObj = formElements[inputObj.getAttribute('eqaulName')];
		
        if (fstObj != null && sndObj != null) {
            if (fstObj.value != sndObj.value) {
               return false;
            }
        }
		return true;
    }
	//必须大于另一个值
    this.gt = function(inputObj, formElements) {
		var fstObj = inputObj;
		var sndObj = formElements[inputObj.getAttribute('eqaulName')];
		
        if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') {
            if (parseFloat(fstObj.value) <= parseFloat(sndObj.value)) {
                 return false;
            }
        }
		return true;
    }
	//对比两个值
	this.compare = function(inputObj, formElements) {
		var fstObj = inputObj;
		var sndObj = formElements[inputObj.getAttribute('objectName')];
        if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') {
            if (!(eval(parseFloat(fstObj.value) + inputObj.getAttribute('operate') + parseFloat(sndObj.value)))) {
                 return false;
            }
        }
		return true;
	}
	//长度限制
	this.limit = function (inputObj) {
		var len = inputObj.value.length;
		if (len) {
			var minv = parseInt(inputObj.getAttribute('min'));
			var maxv = parseInt(inputObj.getAttribute('max'));
			minv = minv || 0;
			maxv = maxv || Number.MAX_VALUE;
			return minv <= len && len <= maxv;
		}
		return true;
	}
	this.comenys = function (inputObj){
		if(/^[\u4E00-\u9FA5a-zA-Z\(\)\（\）\ ]*$/.test(inputObj.value)){
			return true;
		}else{
			return false;
		}   
	}
	//值范围限制
	this.range = function (inputObj) {
		var val = parseInt(inputObj.value);
		if (inputObj.value) {
			var minv = parseInt(inputObj.getAttribute('min'));
			var maxv = parseInt(inputObj.getAttribute('max'));
			minv = minv || 0;
			maxv = maxv || Number.MAX_VALUE;
		
			return minv <= val && val <= maxv;
		}
		return true;
	}
	//单复选框选择限制
	this.requireChecked = function (inputObj,formElements) {
		var minv = parseInt(inputObj.getAttribute('min'));
		var maxv = parseInt(inputObj.getAttribute('max'));
		var arrayName = null;
		var pos = inputObj.name.indexOf('[');
		if (pos!=-1)
			arrayName = inputObj.name.substr(0,pos);
		minv = minv || 1;
		maxv = maxv || Number.MAX_VALUE;
	
		var checked = 0;
		if (!arrayName) {
			var groups = document.getElementsByName(inputObj.name);
			for(var i=0;i<groups.length;i++) {
				if(groups[i].checked) checked++;
			}
			
		} else {
			for (var i=0;i<formElements.length;i++) {
				var e = formElements[i];
				if (e.checked==true && e.type=='checkbox' 
					&& e.name.substring(0,arrayName.length)==arrayName) {
					checked++;
				}
				
			}
		}
		return minv <= checked && checked <= maxv;
	}
	//扩展名限制以","隔开
	this.filter = function (inputObj) {
		var value = inputObj.value;
		var allow = inputObj.getAttribute('allow');
		if (value.trim()) {
			return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, allow.split(/\s*,\s*/).join("|")), "gi").test(value);
		}
		return true;
	}
	//值不等于
	this.isNo = function (inputObj) {
		var value = inputObj.value;
		var noValue = inputObj.getAttribute('noValue');
		return value!=noValue;
	}
	//电话或者手机
 	this.isTelephone = function (inputObj) {
        inputObj.value = inputObj.value.trim();
        if (inputObj.value == '') {
            return true;
        } else {
            if (!RegExps.isMobile.test(inputObj.value) && !RegExps.isPhone.test(inputObj.value)) {
				return false;
			}
        }
        return true;
	}
	//正侧表达式
    this.checkReg = function(inputObj, reg, msg,many) {
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return true;
        } else {
			if(many == 1)
			{
				if(inputObj.value.indexOf(',') == -1)
				{
					return reg.test(inputObj.value);
				}
				else
				{
					var array_value = inputObj.value.split(',');
					for(i=0;i<array_value.length;i++)
					{
						if(!reg.test(array_value[i]))
						{
							return false;
						}
					}
					return true;
				}
			}
			else
			{
          		return reg.test(inputObj.value);
			}
        }
    }

    this.passed = function() 
	{
        if (this.errMsg.length > 0) 
		{
            FormValid.showError(this.errMsg,this.errName);
			if (this.errName[0].indexOf('[')==-1) 
		   {
            	frt = document.getElementsByName(this.errName[0])[0];
				if (frt.type=='text' || frt.type=='password') 
				{
					frt.focus();
				}
			}
            return false;
        } 
		else 
		{
          return FormValid.succeed();
        }
    }

    this.addErrorMsg = function(name,str) {
        this.errMsg.push(str);
		this.errName.push(name);
    }
	
    this.addAllName = function(name) {
		FormValid.allName.push(name);
    }
}
FormValid.allName = new Array();
if(typeof(check_type) == "number" && check_type == 1)
{
	FormValid.showError = function(errMsg,errName) 
	{
		for (key in errMsg) {
			if(errName[key].indexOf("ajax_") >= 0 && $(errName[key]).value !="")
			{
				continue;
			}
			else
			{
				$('info_'+errName[key]).style.color = "#FF0000";
				$('info_'+errName[key]).innerHTML = "<img src='http://www.qjy168.com/user/images/error.gif' align=\"texttop\"> "+errMsg[key];
			}
		}
	}
}
else
{
	FormValid.showError = function(errMsg) {
		var msg = "";
		for (i = 0; i < errMsg.length; i++) {
			msg += "- " + errMsg[i] + "\n";
		}
		alert(msg);
	}
}
FormValid.succeed = function () {
		return true;
	}

function validator(frm) {
	var formElements = frm.elements;
	var fv = new FormValid(frm);
	FormValid.allName = new Array();
	for (var i=0; i<formElements.length;i++) {
		if (formElements[i].disabled==true) continue;
		var msgs = fvCheck(formElements[i],fv,formElements);
		if (msgs.length>0) {
			for (n in msgs) {
				fv.addErrorMsg(formElements[i].name,msgs[n]);
			}
		}
		else
		{//通过ajax检测,有错误,或者正在测试中,不给提交
			if(formElements[i].name.indexOf("ajax_") >= 0)
			{
				var ajax_msg = $("info_"+formElements[i].name).innerHTML.indexOf('error');
				var ajax_chking = $("info_"+formElements[i].name).innerHTML.indexOf('loading');
				if(ajax_msg >= 0 || ajax_chking >= 0)
				{
					fv.addErrorMsg(formElements[i].name,"");
				}
			}
		}
	}
	return fv.passed();
}
function fvCheck(f,fv,formElements) {
	var validType = f.getAttribute('valid');
	var errorMsg = f.getAttribute("errmsg");
	if (!errorMsg) {
		errorMsg = '';
	}
	if (validType==null) return [];
	fv.addAllName(f.name);
	var vts = validType.split('|');
	var ems = errorMsg.split('|');
	var r = [];
	for (var j=0; j<vts.length; j++) {
		var curValidType = vts[j];
		var curErrorMsg = ems[j];
		var validResult;
		switch (curValidType) {
		case 'isPasswd':	
		case 'isUsername':	
		case 'isNumber':
		case 'isEmail':
		case 'isMobile':
		case 'isIdCard':
		case 'isMoney':
		case 'isZip':
		case 'isQQ':
		case 'isInt':
		case 'isEnglish':
		case 'isChinese':
		case 'isUrl':
		case 'isDate':
		case 'isTime':
		case 'isCompany':
			validResult = fv.checkReg(f,RegExps[curValidType],curErrorMsg);
			break;
		case 'isPhone':
			validResult = fv.checkReg(f,RegExps[curValidType],curErrorMsg,1);
			break;
		case 'regexp':
			validResult = fv.checkReg(f,new RegExp(f.getAttribute('regexp'),"g"),curErrorMsg);
			break;
		case 'custom':
			validResult = eval(f.getAttribute('custom')+'(f,formElements)');
			break;
		default :
			validResult = eval('fv.'+curValidType+'(f,formElements)');
			break;
		}
		if (!validResult) {r.push(curErrorMsg);};
	}
	return r;
}
String.prototype.trim = function() {
	return this.replace(/^\s*|\s*$/g, "");
}
var RegExps = function(){};
RegExps.isPasswd = /^[a-zA-Z0-9_]{6,16}$/;//密码
RegExps.isUsername = /^[a-zA-Z][a-zA-Z0-9_]{5,17}$/;//用户名
RegExps.isNumber = /^[-\+]?\d+(\.\d+)?$/;//数字
RegExps.isEmail = /([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;//email
RegExps.isPhone = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;//电话
RegExps.isMobile = /^((\(\d{2,3}\))|(\d{3}\-))?(13|15|18|14)\d{9}$/;//手机
RegExps.isIdCard = /(^\d{15}$)|(^\d{17}[0-9Xx]$)/;//身份证
RegExps.isMoney = /^\d+(\.\d+)?$/;//货币值
RegExps.isZip = /^[1-9]\d{5}$/;//邮编
RegExps.isQQ = /^[1-9]\d{4,10}$/;//QQ
RegExps.isInt = /^[-\+]?\d+$/;//整型
RegExps.isEnglish = /^[A-Za-z]+$/;//英语
RegExps.isChinese =  /^[\u0391-\uFFE5]+$/;//中文
RegExps.isUrl = /^http[s]?:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;//网址
RegExps.isDate = /^\d{4}-\d{1,2}-\d{1,2}$/;//日期格式
RegExps.isTime = /^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;//时间
RegExps.isCompany=/^[\u4e00-\u9fa5\A-\Z\a-\z]+$/;

