QG_VALI = {};

QG_VALI.type = function(spec) {
	var type = {};
	type.message = spec['message'] || '验证错误！';
	type.validate = function(inputable) {
		this.inputable = inputable;
		if (!inputable) {
			alert("错误，请调试！");
			return false;
		}
		var text = inputable.filter("input:text, input:password, input:file");
		if (0 != text.length) {
			return this.validateText(text);
		}
		var checkboxes = inputable.filter("input[type='checkbox']");
		if (0 != checkboxes.length) {
			return this.validateCheckBoxes(checkboxes);
		}
		var radios = inputable.filter("input[type='radio']");
		if (0 != radios.length) {
			return this.validateRadios(radios);
		}
		var select = inputable.filter("select");
		if (1 == select.length) {
			return this.validateSelect(select);
		}
		else if (1 < select.length) {
			return this.validateSelects(select);
		}
		var textarea = inputable.filter("textarea");
		if (1 == textarea.length) {
			return this.validateTextArea(textarea);
		}
		alert("只支持输入框、复选框、单选框、下来菜单、文本域的验证！");
		return false;
	};
	
	type.validateText = function(text) {
		return this.message;
	}
	type.validateCheckBoxes = function(checkboxes) {
		return this.message;
	}
	type.validateRadios = function(radios) {
		return this.message;
	}
	type.validateSelect = function(select) {
		return this.message;
	}
	type.validateSelects = function(selects) {
		return this.message;
	}
	type.validateTextArea = function(textarea) {
		return this.message;
	}
	return type;
};

QG_VALI.string = function(spec) {
	var type = QG_VALI.type(spec);
	
	if (false === spec['trim']) {
		type.trim = false;
	}
	else {
		type.trim = true;
	}

	type.validateText = function(text) {
		return this.validateValue(text.val());
	}
	type.validateTextArea = function(textarea) {
		return this.validateValue(textarea.val());
	}

	type.validateValue = function(s) {
		var trimed = s;
		if (this.trim) {
			s = $.trim(s);
		}
		if ('' == s) {
			return false;
		}
		return this.validateString(s);
	};
	return type;
}

QG_VALI.int = function(spec) {
	var type = QG_VALI.string(spec);
	type.min = (spec['min'] && typeof spec['min'] == 'number') ? spec['min'] : -100000;
	type.max = (spec['max'] && typeof spec['max'] == 'number') ? spec['max'] : 100000;
	type.message1 = spec['message1'];
	
	
	type.validateString = function(s) {
		var i = parseInt(s);
		if (!i && 0 != i) {
			return this.message;
		}
		else if (this.min <= i && this.max >= i) {
			return true;
		} else if (i > this.max) {
			return this.message;
		}
		return this.message;
	};
	
	return type;
};

QG_VALI.stringLength = function(spec) {
	var type = QG_VALI.string(spec);
	type.minLength = (spec['minLength'] && typeof spec['minLength'] == 'number') ? spec['minLength'] : 0;
	type.maxLength = (spec['maxLength'] && typeof spec['maxLength'] == 'number') ? spec['maxLength'] : 100000;

	type.validateString = function(s) {
		var length = QG.stringLength(s);
		if (this.minLength <= length && this.maxLength >= length){
			return true;
		}
		return this.message;
	}
	return type;
};

QG_VALI.regex = function(spec) {
	var type = QG_VALI.string(spec);
	if (!spec['expression']) {
		alert("正则表达式不能为空！");
		return;
	}
	type.expression = spec['expression'];

	type.validateString = function(s) {
		if (this.expression.test(s)) {
			return true;
		}
		return this.message;
	}
	return type;
};

QG_VALI.character = function(spec) {
	var number = (spec['number'] && typeof spec['number'] == 'boolean') ? spec['number'] : false;
	var english = (spec['english'] && typeof spec['english'] == 'boolean') ? spec['english'] : false;
	var chinese = (spec['chinese'] && typeof spec['chinese'] == 'boolean') ? spec['chinese'] : false;

	if (!number && !english && !chinese) {
		spec['expression'] = /^.*$/;
	} else {
		var expression = "^[";
		if (number) {
			expression += "0-9";
		}
		if (english) {
			expression += "A-Za-z";
		}
		if (chinese) {
			expression += "\u4e00-\u9fa5";
		}
		expression += "]*$";
		spec['expression'] = new RegExp(expression);
	}
	var type = QG_VALI.regex(spec);
	type.number = number;
	type.english = english;
	type.chinese = chinese;
	return type;
};

QG_VALI.email = function(spec) {
	spec['expression'] = /^[_A-Za-z0-9-]([\._A-Za-z0-9-])*@([A-Za-z0-9-]+\.)+[A-Za-z]{2,3}$/;
	var type = QG_VALI.regex(spec);

	return type;
};

QG_VALI.required = function(spec) {
	var type = QG_VALI.type(spec);
	
	type.validateText = function(text) {
		var value = text.val();
		if ($.trim(value)) {
			return true;
		}
		return this.message;
	}
	type.validateCheckBoxes = function(checkboxes) {
		var checked = checkboxes.filter(":checked");
		if (0 == checked.length) {
			return this.message;
		}
		return true;
	}
	type.validateRadios = function(radios) {
		var checked = radios.filter(":checked");
		if (0 == checked.length) {
			return this.message;
		}
		return true;
	}
	type.validateSelect = function(select) {
		var sizeAttr = select.attr("size");
		var size = select.find("option").length;
		var selectedValue = select.find("option:selected").val();
		if (sizeAttr && 1 < sizeAttr) {
			if (size > 0) {
				return true;
			}
			else {
				return this.message;
			}
		}
		else {
			if ("0" !== selectedValue && selectedValue) {
				return true;
			}
			else {
				return this.message;
			}
		}
	}
	type.validateSelects = function(selects) {
		for ( var i = 0; i < selects.length; i++) {
			if ("0" === selects.eq(i).val()) {
				return this.message;
			}
		}
		return true;
	}
	type.validateTextArea = function(textarea) {
		var value = textarea.val();
		if ($.trim(value)) {
			return true;
		}
		return this.message;
	}
	return type;
};

QG_VALI.selectSize = function(spec) {
	var type = QG_VALI.type(spec);
	type.minSize = (spec['minSize'] && typeof spec['minSize'] == 'number') ? spec['minSize'] : 0;
	type.maxSize = (spec['maxSize'] && typeof spec['maxSize'] == 'number') ? spec['maxSize'] : 100000;

	type.validateSelect = function(select) {
		var sizeAttr = select.attr("size");
		var size = select.find("option").length;
		if (sizeAttr && 1 < sizeAttr) {
			if (0 == size) {
				return false;
			}
			if (this.minSize <= size && this.maxSize >= size) {
				return true;
			}
			else {
				return this.message;
			}
		}
		else {
			alert("selectSize validator is only valid for multiple select!");
			return this.message;
		}
	}
	return type;
};

QG_VALI.telNo = function(spec) {
	var type = QG_VALI.type(spec);
	
	type.validateText = function(text) {
		if (3 != text.length) {
			alert("电话号码必须包含3部分！");
			return this.message;
		}
		var telAreaCode = text.filter("[name$=AreaCode]").val();
		var telExt = text.filter("[name$=Ext]").val();
		var tel = text.not("[name$=AreaCode]", "[name$=Ext]").val();
		if (!tel && !telAreaCode && !telExt) {
			return false;
		}
		
		if (!/^[0-9]{3,4}$/.test(telAreaCode)) {
			return this.message;
		}
		if (!/^[0-9]{7,8}$/.test(tel)) {
			return this.message;
		}
		if (!/^[0-9]{0,5}$/.test(telExt)) {
			return this.message;
		}
		return true;
	}
	
	return type;
};

QG_VALI.birthday = function(spec) {
	var type = QG_VALI.type(spec);
	
	type.validateSelects = function(selects) {
		if (3 != selects.length) {
			alert("生日必须包含3部分！");
			return this.message;
		}
		var birthYear = selects.filter("[name='birthYear']").val();
		var birthMonth = selects.filter("[name='birthMonth']").val();
		var birthDay = selects.filter("[name='birthDay']").val();
		if ("0" == birthYear && "0" == birthMonth && "0" == birthDay) {
			return false;
		}
		
		if ("0" == birthYear || "0" == birthMonth || "0" == birthDay) {
			return this.message;
		}
		return true;
	}
	
	return type;
};

QG_VALI.doubleDates = function(spec) {
	var type = QG_VALI.type(spec);
	
	type.validateSelects = function(selects) {
		if (4 != selects.length) {
			alert("双日期必须包含4部分！");
			return this.message;
		}
		var beginYear = selects.filter("[name='beginYear']").val();
		var beginMonth = selects.filter("[name='beginMonth']").val();
		var endYear = selects.filter("[name='endYear']").val();
		var endMonth = selects.filter("[name='endMonth']").val();
		
		if ("0" == beginYear || "0" == beginMonth || "0" == endMonth) {
			return this.message;
		}
		return true;
	}
	
	return type;
};

QG_VALI.fieldValidator = function(spec) {

	return function(params) {
		var validator = {};
		var types = spec['types'] || [];
		var tip = spec['tip'];
		var inputable = params['inputable'];
		if (!inputable) {
			alert("inputable is required.");
		}
		var tipBindable = params['tipBindable'] || inputable;
		var validationBindable = params['validationBindable'] || inputable;
		var tipEvent = params['tipEvent'] || "focus";
		var validationEvent = params['validationEvent'] || "blur";
		var messageBox = params['messageBox'] || inputable.nextAll("span[title='showMessage']");
		var success = params['success'] || $("<cite class='right'></cite>");
		var failure = params['failure'] || $("<cite class='wrong'></cite>");
		var tipInfo = params['tipInfo'] || $("<cite class='flag'><span></span></cite>");

		var showMessage = function(params) {
			messageBox.empty();
			messageBox.hide();
			if (!params) {
				return;
			}
			if (params['tip']) {
				tipInfo.find("span").text(tip);
				messageBox.append(tipInfo);
			}
			else if (params['message']) {
				if (1 == messageBox.size()) {
					messageBox.append(failure.text(params['message']));
				}
				else {
					alert(params['message']);
				}
			}
			else if (params['success']) {
				messageBox.append(success);
			}
			messageBox.show();
		};
		validator.showMessage = showMessage;

		var validate = function() {
			for ( var i = 0; i < types.length; i++) {
				if (types[i].max == -1) {
					types[i].max = params.max;
				}
				var message = types[i].validate(inputable);
				if (false == message) {
					showMessage();
					return true;
				}else if (true != message) {
					showMessage({message:message});
					return false;
				}
			}
			showMessage({success:true});
			return true;
		};
		validator.validate = validate;
		
		tipBindable.bind(tipEvent, function() {
			showMessage({tip:tip});
		});
		validationBindable.bind(validationEvent, function() {
			validate();
		});
		return validator;
	};
};

QG_VALI.formValidator = function(spec) {
	var validator = {};
	validator.fields = spec['fields'] || [];
	validator.validate = function() {
		var result = true;
		for (var i = 0; i < this.fields.length; i++) {
			result = result & this.fields[i].validate();
		}
		return result;
	};
	
	return validator;
}

QG_VALI.userName = QG_VALI.fieldValidator({
	tip:"以英文字母开头，6-16位字母或数字，字母区分大小写，不能使用中文，注册成功后不可修改。",
	types:[QG_VALI.required({
		message:"账号名称不能为空"
	}),
	QG_VALI.character({
		message:"帐号名称格式不正确",
		trim:false,
		number:true,
		english:true
	}),
	QG_VALI.stringLength({
		message:"帐号名称长度不正确",
		trim:false,
		minLength:6,
		maxLength:16
	})]
});

QG_VALI.password = QG_VALI.fieldValidator({
	tip:"请输入6-16位字母、数字和符号。",
	types:[QG_VALI.required({
		message:"密码不能为空"
	}),
	QG_VALI.stringLength({
		message:"密码长度不正确",
		trim:false,
		minLength:6,
		maxLength:16
	})]
});

QG_VALI.securityEmail = QG_VALI.fieldValidator({
	tip:"请填写真实有效的电子邮箱，便于找回密码或帐户名称。",
	types:[QG_VALI.required({
		message:"E-mail不能为空"
	}),
	QG_VALI.email({
		trim: false,
		message:"E-mail格式不正确"
	}),
	QG_VALI.stringLength({
		message:"E-mail长度不正确",
		trim:false,
		minLength:1,
		maxLength:40
	})]
});

QG_VALI.validationCode = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"验证码不能为空"
	}),
	QG_VALI.stringLength({
		message:"验证码不正确",
		minLength:4,
		maxLength:4
	}),
	QG_VALI.character({
		message:"验证码不正确",
		number:true
	})]
});

QG_VALI.realName = QG_VALI.fieldValidator({
	tip:"2-8个汉字",
	types:[QG_VALI.stringLength({
		message:"真实姓名长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"真实姓名格式不正确",
		english:true,
		chinese:true
	})]
});

QG_VALI.tel = QG_VALI.fieldValidator({
	tip:"真实的电话号码可以让享受到更好的服务，体现您良好的信誉",
	types:[QG_VALI.telNo({
		message:"固定电话格式不正确"
	})]
});

QG_VALI.cellPhone = QG_VALI.fieldValidator({
	tip:"请填写您的11位真实手机号码",
	types:[QG_VALI.stringLength({
		message:"手机长度不正确",
		minLength:11,
		maxLength:11
	}),
	QG_VALI.character({
		message:"手机格式不正确",
		number:true
	})]
});

QG_VALI.qq = QG_VALI.fieldValidator({
	tip:"请填写您的QQ号码",
	types:[QG_VALI.stringLength({
		message:"QQ长度不正确",
		minLength:5,
		maxLength:15
	}),
	QG_VALI.character({
		message:"QQ格式不正确",
		number:true
	})]
});

QG_VALI.msn = QG_VALI.fieldValidator({
	tip:"请填写您的MSN帐号",
	types:[QG_VALI.stringLength({
			message:"MSN长度不正确",
			minLength:1,
			maxLength:40
		}),
		QG_VALI.email({
		message:"MSN格式不正确"
	})]
});

QG_VALI.userEmail = QG_VALI.fieldValidator({
	tip:"请填写您的Email",
	types:[QG_VALI.stringLength({
		message:"E-mail格式不正确",
		minLength:1,
		maxLength:40
	}),
	QG_VALI.email({
		message:"Email格式不正确"
	})]
});

QG_VALI.officeName = QG_VALI.fieldValidator({
	tip:"5-15个汉字，申请成功后不可修改",
	types:[QG_VALI.required({
		message:"办公室名称不能为空"
	}),
	QG_VALI.stringLength({
		message:"办公室名称长度不正确",
		minLength:10,
		maxLength:30
	})]
});

QG_VALI.officeDomainId = QG_VALI.fieldValidator({
	tip:"请选择您申请的网络办公室的所属行业，申请成功后不可修改",
	types:[QG_VALI.required({
		message:"办公室所属行业不能为空"
	})]
});

QG_VALI.officeServiceCategoryIds = QG_VALI.fieldValidator({
	tip:"请选择1-4个您专长的领域",
	types:[QG_VALI.required({
		message:"办公室专长领域不能为空"
	}),
	QG_VALI.selectSize({
		message:"办公室专长领域最多4个",
		minSize:1,
		maxSize:4
	})]
});

QG_VALI.officeRegionId = QG_VALI.fieldValidator({
	tip:"请选择您所在的城市。",
	types:[QG_VALI.required({
		message:"办公室所在地不能为空"
	})]
});

QG_VALI.personOfficeRealName = QG_VALI.fieldValidator({
	tip:"2-8个汉字",
	types:[QG_VALI.required({
		message:"负责人真实姓名不能为空"
	}),
	QG_VALI.stringLength({
		message:"负责人真实姓名长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"负责人真实姓名格式不正确",
		english:true,
		chinese:true
	})]
});

QG_VALI.officeBirthday = QG_VALI.fieldValidator({
	tip:"请选择您的出生年月",
	types:[QG_VALI.required({
		message:"负责人出生年月不能为空"
	}),
	QG_VALI.birthday({
		message:"负责人出生年月不能为空"
	})]
});

QG_VALI.officeDescription = QG_VALI.fieldValidator({
	tip:"50-1000个汉字",
	types:[QG_VALI.required({
		message:"办公室简介不能为空"
	}),
	QG_VALI.stringLength({
		message:"办公室简介长度不正确",
		minLength:100,
		maxLength:2000,
		trim:false
	})]
});

QG_VALI.officeContactPerson = QG_VALI.fieldValidator({
	tip:"2-8个汉字",
	types:[QG_VALI.required({
		message:"办公室联系人不能为空"
	}),
	QG_VALI.stringLength({
		message:"办公室联系人长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"办公室联系人格式不正确",
		english:true,
		chinese:true
	})]
});

QG_VALI.entrepriseOfficeRealName = QG_VALI.fieldValidator({
	tip:"5-30个汉字",
	types:[QG_VALI.required({
		message:"公司/机构名称不能为空"
	}),
	QG_VALI.stringLength({
		message:"公司/机构名称长度不正确",
		minLength:10,
		maxLength:60
	}),
	QG_VALI.character({
		message:"公司/机构名称格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.entrepriseSize = QG_VALI.fieldValidator({
	tip:"请选择您企业的规模",
	types:[QG_VALI.required({
		message:"规模不能为空"
	})]
});

QG_VALI.entrepriseMainBusiness = QG_VALI.fieldValidator({
	tip:"最多20个汉字",
	types:[QG_VALI.required({
		message:"公司主要业务不能为空"
	}),
	QG_VALI.stringLength({
		message:"公司主要业务长度不正确",
		minLength:1,
		maxLength:40
	})]
});

QG_VALI.entrepriseBusinessAddress = QG_VALI.fieldValidator({
	tip:"最多30个汉字",
	types:[QG_VALI.required({
		message:"经营地址不能为空"
	}),
	QG_VALI.stringLength({
		message:"经营地址长度不正确",
		minLength:1,
		maxLength:60
	})]
});

QG_VALI.officeLegalPerson = QG_VALI.fieldValidator({
	tip:"2-8个汉字",
	types:[QG_VALI.required({
		message:"负责人/法人不能为空"
	}),
	QG_VALI.stringLength({
		message:"负责人/法人长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"负责人/法人格式不正确",
		english:true,
		chinese:true
	})]
});

QG_VALI.officeTel = QG_VALI.fieldValidator({
	tip:"请填写您申请的办公室联系人的固定电话",
	types:[QG_VALI.telNo({
		message:"办公室联系人固定电话格式不正确"
	})]
});

QG_VALI.officeCellPhone = QG_VALI.fieldValidator({
	tip:"请输入11位真实手机号码",
	types:[QG_VALI.stringLength({
		message:"办公室联系人手机格式不正确",
		minLength:11,
		maxLength:11
	}),
	QG_VALI.character({
		message:"手机格式不正确",
		number:true
	})]
});

QG_VALI.officeQq = QG_VALI.fieldValidator({
	tip:"请填写您申请的办公室联系人的QQ号码",
	types:[QG_VALI.stringLength({
		message:"办公室联系人QQ格式不正确",
		minLength:5,
		maxLength:15
	}),
	QG_VALI.character({
		message:"办公室联系人QQ格式不正确",
		number:true
	})]
});

QG_VALI.officeMsn = QG_VALI.fieldValidator({
	tip:"请填写您申请的办公室联系人的MSN帐",
	types:[QG_VALI.stringLength({
		message:"办公室联系人MSN格式不正确",
		minLength:1,
		maxLength:40
	}),
	QG_VALI.email({
		message:"办公室联系人MSN格式不正确"
	})]
});


QG_VALI.officeEmail = QG_VALI.fieldValidator({
	tip:"请填写您申请的办公室联系人的E-mail",
	types:[QG_VALI.stringLength({
		message:"办公室联系人E-mail格式不正确",
		minLength:1,
		maxLength:40
	}),
	QG_VALI.email({
		message:"办公室联系人E-mail格式不正确"
	})]
});

QG_VALI.personEducationBackgroundSchool = QG_VALI.fieldValidator({
	tip:"最多20个汉字",
	types:[QG_VALI.required({
		message:"教育背景学校不能为空"
	}),
	QG_VALI.stringLength({
		message:"教育背景学校长度不正确",
		minLength:1,
		maxLength:40
	}),
	QG_VALI.character({
		message:"教育背景学校格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.personEducationBackgroundMajor = QG_VALI.fieldValidator({
	tip:"最多10个汉字",
	types:[QG_VALI.required({
		message:"教育背景专业不能为空"
	}),
	QG_VALI.stringLength({
		message:"教育背景专业长度不正确",
		minLength:1,
		maxLength:20
	}),
	QG_VALI.character({
		message:"教育背景专业格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.personEducationBackgroundDates = QG_VALI.fieldValidator({
	types:[QG_VALI.doubleDates({
		message:"教育背景时间不能为空"
	})]
});


QG_VALI.personWorkExperienceCompany = QG_VALI.fieldValidator({
	tip:"最多20个汉字",
	types:[QG_VALI.required({
		message:"工作经验公司/机构不能为空"
	}),
	QG_VALI.stringLength({
		message:"工作经验公司/机构长度不正确",
		minLength:1,
		maxLength:40
	}),
	QG_VALI.character({
		message:"工作经验公司/机构格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.personWorkExperiencePosition = QG_VALI.fieldValidator({
	tip:"最多5个汉字",
	types:[QG_VALI.required({
		message:"工作经验职位不能为空"
	}),
	QG_VALI.stringLength({
		message:"工作经验职位长度不正确",
		minLength:1,
		maxLength:10
	}),
	QG_VALI.character({
		message:"工作经验职位格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.personWorkExperienceDescription = QG_VALI.fieldValidator({
	tip:"最多100个汉字",
	types:[QG_VALI.required({
		message:"工作经验描述不能为空"
	}),
	QG_VALI.stringLength({
		message:"工作经验描述长度不正确",
		minLength:1,
		maxLength:200
	})]
});

QG_VALI.personWorkExperienceDates = QG_VALI.fieldValidator({
	types:[QG_VALI.doubleDates({
		message:"工作经验时间不能为空"
	})]
});

QG_VALI.entrepriseHistoryDescription = QG_VALI.fieldValidator({
	tip:"最多200个汉字",
	types:[QG_VALI.required({
		message:"发展历程时间不能为空"
	}),
	QG_VALI.stringLength({
		message:"发展历程描述长度不正确",
		minLength:1,
		maxLength:400
	})]
});

QG_VALI.entrepriseHistoryDate = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"发展历程时间不能为空"
	})]
});


QG_VALI.personIdentityHolderName = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"身份认证真实姓名不能为空"
	}),
	QG_VALI.stringLength({
		message:"身份认证真实姓名长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"身份认证真实姓名格式不正确",
		chinese:true
	})]
});

QG_VALI.entrepriseIdentityHolderName = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"身份认证企业真实姓名不能为空"
	}),
	QG_VALI.stringLength({
		message:"身份认证企业真实姓名长度不正确",
		minLength:10,
		maxLength:60
	}),
	QG_VALI.character({
		message:"身份认证企业真实姓名格式不正确",
		english:true,
		chinese:true,
		number:true
	})]
});

QG_VALI.identityNumber = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"身份认证证件号码不能为空"
	}),
	QG_VALI.stringLength({
		message:"身份认证证件号码长度不正确",
		minLength:13,
		maxLength:18
	})]
});

QG_VALI.uploadFileName = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"认证上传资料不能为空"
	}),
	QG_VALI.regex({
		message:"认证上传资料格式不正确",
		expression:/.*(jpg|gif|bmp)$/i
	})]
});

QG_VALI.certificateName = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"资格认证证件名称不能为空"
	}),
	QG_VALI.stringLength({
		message:"资格认证证件名称长度不正确",
		minLength:10,
		maxLength:30
	})]
});

QG_VALI.certificateNumber = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"资格认证证件号码不能为空"
	}),
	QG_VALI.stringLength({
		message:"资格认证证件号码长度不正确",
		minLength:1,
		maxLength:20
	})]
});

QG_VALI.articleTitle = QG_VALI.fieldValidator({
	tip:"最多40个字符，1个中文占2个字符",
	types:[QG_VALI.required({
		message:"文章标题不能为空"
	}),
	QG_VALI.stringLength({
		message:"文章标题长度不正确",
		minLength:1,
		maxLength:40
	})]
});

QG_VALI.articleContent = QG_VALI.fieldValidator({
	tip:" ",
	types:[QG_VALI.required({
		message:"不能为空"
	}),
	QG_VALI.stringLength({
		message:"内容太长",
		minLength:1,
		maxLength:8000
	})]
});


QG_VALI.serviceName = QG_VALI.fieldValidator({
	tip:"10-30个字符",
	types:[QG_VALI.required({
		message:"服务名称不能为空"
	}),
	QG_VALI.stringLength({
		message:"服务名称长度不正确",
		trim:false,
		minLength:10,
		maxLength:30
	})]
});

QG_VALI.service2categoryIds = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"所属领域不能为空"
	}),
	QG_VALI.selectSize({
		message:"所属领域最多4个",
		minSize:1,
		maxSize:4
	})]
});

QG_VALI.serviceRegionId = QG_VALI.fieldValidator({
	tip:"请选择您所在的城市。",
	types:[QG_VALI.required({
		message:"服务区域不能为空"
	})]
});

QG_VALI.serviceUnit = QG_VALI.fieldValidator({
	tip:"最多5个汉字",
	types:[QG_VALI.required({
		message:"服务单位不能为空"
	}),
	QG_VALI.character({
		message:"服务单位格式不正确",
		trim:false,
		english:true,
		chinese:true,
		number:true
	}),
	QG_VALI.stringLength({
		message:"服务单位长度不正确",
		trim:false,
		minLength:1,
		maxLength:10
	})]
});


QG_VALI.servicePrice = QG_VALI.fieldValidator({
	tip:"请填写您发布服务的单价，最小单位为人民币元，最大金额为99999元",
	types:[QG_VALI.required({
		message:"服务单价不能为空"
	}),
	QG_VALI.character({
		message:"服务单价格式不正确",
		trim:false,
		number:true
	}),
	QG_VALI.stringLength({
		message:"服务单价长度不正确",
		trim:false,
		minLength:1,
		maxLength:5
	})]
});

QG_VALI.serviceWay = QG_VALI.fieldValidator({
	tip:"最多20个汉字",
	types:[QG_VALI.required({
		message:"服务方式不能为空"
	}),
	QG_VALI.stringLength({
		message:"服务方式长度不正确",
		trim:false,
		minLength:1,
		maxLength:40
	})]
});

QG_VALI.serviceMinQuantity = QG_VALI.fieldValidator({
	tip:"请填写最小服务数量。",
	types:[QG_VALI.character({
		message:"最小服务数量格式不正确",
		trim:false,
		number:true
	}),QG_VALI.int({
		message:"最小服务数量不正确",
		min:1,
		max:999
	})]
});

QG_VALI.serviceTime = QG_VALI.fieldValidator({
	tip:"最多50个汉字",
	types:[QG_VALI.stringLength({
		message:"可提供服务时间长度不正确",
		trim:false,
		minLength:0,
		maxLength:100
	})]
});

QG_VALI.serviceDescription = QG_VALI.fieldValidator({
	tip:"100-1000个汉字",
	types:[QG_VALI.required({
		message:"服务介绍不能为空"
	}),
	QG_VALI.stringLength({
		message:"服务介绍长度不正确",
		minLength:200,
		maxLength:2000
	})]
});

QG_VALI.serviceRelatedExperience = QG_VALI.fieldValidator({
	tip:"请填写您从事相关工作的年限 例如:10年",
	types:[QG_VALI.stringLength({
		message:"工作经验长度不正确",
		trim:false,
		minLength:0,
		maxLength:100
	})]
});

QG_VALI.message = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"留言内容不能为空"
	}),
	QG_VALI.stringLength({
		message:"留言长度不正确",
		minLength:0,
		maxLength:400
	})]
});



QG_VALI.requirementName = QG_VALI.fieldValidator({
	tip:"5-15个汉字，不充许填写符号。",
	types:[QG_VALI.required({
		message:"需求名称不能为空"
	}),
	QG_VALI.stringLength({
		message:"需求名称长度不正确",
		minLength:10,
		maxLength:30
	}),
	QG_VALI.character({
		message:"需求名称格式不正确",
		number:true,
		english:true,
		chinese:true
	})]
});

QG_VALI.requirementServiceCategoryIds = QG_VALI.fieldValidator({
	tip:"请选择您的需求有可能属于的0-3个领域",
	types:[QG_VALI.selectSize({
		message:"需求可能属于领域最多3个",
		minSize:0,
		maxSize:3
	})]
});

QG_VALI.requirementRegionId = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"希望解决地区不能为空"
	})]
});

QG_VALI.requirementDomainId = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"需求属于的行业不能为空"
	})]
});

QG_VALI.requirementServiceCategoryId = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"需求最可能属于领域不能为空"
	})]
});

QG_VALI.requirementEstimatedExpenditure = QG_VALI.fieldValidator({
	tip:"请填写您解决此需求期望支付的金额，不填默认为面议",
	types:[QG_VALI.stringLength({
		message:"期望支出长度不正确",
		minLength:0,
		maxLength:5
	}),
	QG_VALI.character({
		message:"期望支出格式不正确",
		number:true
	})]
});

QG_VALI.requirementTimeOfValidity = QG_VALI.fieldValidator({
	types:[QG_VALI.required({
		message:"有效期限不能为空"
	})]
});

QG_VALI.requirementDescription = QG_VALI.fieldValidator({
	tip:"50-600个汉字",
	types:[QG_VALI.required({
		message:"需求描述不能为空"
	}),
	QG_VALI.stringLength({
		message:"需求描述长度不正确",
		minLength:100,
		maxLength:1200
	})]
});

QG_VALI.requirementContactPerson = QG_VALI.fieldValidator({
	tip:"2-8个汉字",
	types:[QG_VALI.required({
		message:"需求联系人不能为空"
	}),
	QG_VALI.stringLength({
		message:"需求联系人长度不正确",
		minLength:4,
		maxLength:16
	}),
	QG_VALI.character({
		message:"需求联系人格式不正确",
		english:true,
		chinese:true
	})]
});


QG_VALI.complaintDescription = QG_VALI.fieldValidator({
	tip:"最多200个字符，1个中文占2个字符",
	types:[QG_VALI.required({
		message:"投诉原因不能为空"
	}),
	QG_VALI.stringLength({
		message:"投诉原因长度不正确",
		minLength:1,
		maxLength:200
	})]
});


QG_VALI.adviceType = QG_VALI.fieldValidator({
	tip:"请选择建议类型",
	types:[QG_VALI.required({
		message:"请选择建议类型"
	})]
});

QG_VALI.adviceContent = QG_VALI.fieldValidator({
	tip:"最多400个字符",
	types:[QG_VALI.required({
		message:"建议内容不能为空"
	}),
	QG_VALI.stringLength({
		message:"建议长度不正确",
		minLength:1,
		maxLength:400
	})]
});

QG_VALI.inpouringAmount = QG_VALI.fieldValidator({
	tip:"请输入>0的整数",
	types:[QG_VALI.required({
		message:"充值金额不能为空"
	}),
	QG_VALI.character({
		message:"充值金额填写格式不正确",
		trim:false,
		number:true
	}),
	QG_VALI.int({
		message:"充值金额不能为0",
		min: 1,
		max: 9999999
	})]
});
QG_VALI.withdrawAmount = QG_VALI.fieldValidator({
	tip:"请输入不低于100元的整数金额",
	types:[QG_VALI.required({
		message:"提现金额不能为空"
	}),
	QG_VALI.character({
		message:"提现金额填写格式不正确",
		trim:false,
		number:true
	}),
	QG_VALI.int({
		message:"提现金额低于最低限额",
		message1: '提现金额超过余额',
		min: 100,
		max: -1
	})]
});
QG_VALI.accountRealName = QG_VALI.fieldValidator({
	tip:"请输入您想转账的银行账户的开户人",
	types:[QG_VALI.required({
		message:"开户人真实姓名不能为空"
	}),
	QG_VALI.character({
		message:"开户人真实姓名格式不正确",
		english:true,
		chinese:true
	}),
	QG_VALI.stringLength({
		message:"开户人真实姓名长度不正确",
		minLength:4,
		maxLength:16
	})]
});
QG_VALI.oldPayPassword = QG_VALI.fieldValidator({
	tip:"请输入您的旧密码",
	types:[QG_VALI.required({
		message:"密码不能为空"
	})]
});
QG_VALI.newPayPassword = QG_VALI.fieldValidator({
	tip:"请输入6-16位新密码",
	types:[QG_VALI.required({
		message:"密码不能为空"
	}),
	QG_VALI.stringLength({
		message:"密码长度不正确",
		trim:false,
		minLength:6,
		maxLength:16
	})]
});
QG_VALI.bankAccount = QG_VALI.fieldValidator({
	tip:"请输入您的银行账号",
	types:[QG_VALI.required({
		message:"银行账号不能为空"
	}),
	QG_VALI.character({
		message:"银行账号格式不正确",
		english:true,
		chinese:false,
		number:true
	}),
	QG_VALI.stringLength({
		message:"银行账号长度不正确",
		trim:true,
		minLength:16,
		maxLength:25
	})]
});
QG_VALI.regionId = QG_VALI.fieldValidator({
	tip:"请选择您开户银行的所在地",
	types:[QG_VALI.required({
		message:"开户银行所在地没有选择"
	})]
});
QG_VALI.bank = QG_VALI.fieldValidator({
	tip:"请选择您转账账户的开户银行",
	types:[QG_VALI.required({
		message:"转账银行没有选择"
	})]
});

