//本js文件为客户端验证所使用的js文件
/**
@param obj 要做验证的对象
@param showId 验证结束后显示在哪个Id
@param callBack 验证函数，当前使用哪个验证函数，自己指定
@param message 验证失败后的提示信息
*/
function validObj(obj,showId,callBack,message) {
	var flag = eval(callBack + "('" + obj.value + "')");
	showError(flag,showId,message);
}

/**
@param flag boolean值，如果为true，代表验证失败
@param showId 验证结束后显示在哪个Id
@param message 验证失败后的提示信息
*/
function showError(flag,showId,message){
	if(flag){
		showMessage(showId,"ico_cross",message);
	}else{
		showMessage(showId,"","&nbsp;");
	}
}

/**
@param showId 验证结束后显示在哪个Id
@className 显示成什么className
@param message 验证失败后的提示信息
*/
function showMessage(showId,className,message){
	if(className == ' '){
		$('#'+showId).removeClass();
	}else{
		$('#'+showId).addClass(className);	
	}

	//使用统一的消息提示接口
	$('#'+showId).html(message);
}

/**
@param fieldValue 要验证的值
@return 验证失败,返回true
*/
function isAccount(fieldValue){ 
	//帐户名合法性验证
	
	var patrn = /^[a-zA-Z][a-zA-Z\d]{3,19}$/;
	
	if (patrn.exec(fieldValue)) {
		return false;
	}
	return true;
} 

/**
@param fieldValue 要验证的值
@return 验证失败,返回true
*/
function isPassword(fieldValue){
	//密码合法性验证
	var patrn = /^[a-zA-Z\d]{6,20}$/;
	
	if (patrn.exec(fieldValue)) {
		return false;
	}
	return true;
}

/**
@param fieldValue 要验证的值
@return 验证失败，返回true
*/
function isIdCard(fieldValue) {
	//身份证验证，数字验证,长度验证
	var len = fieldValue.length;
	if(len==15){
	var reg=/^([1-9]{0,1})?(\d){1,13}((\d)|x)?$/
	}else if(len==18){
	var reg=/^([1-9]{0,1})?(\d){1,16}((\d)|x)?$/
	}else{
	   return true;
	}
	if(reg.exec(fieldValue)){
	   return false;
	}
}

/**
对于修改界面所使用的onLoad事件,提前调用所有要验证的input对象的onblur事件
@param fieldIds 要验证的input的id集合
*/
function initPageValidate(fieldIds){
	for(i=0;i<fieldIds.length;i++){
		if(fieldIds[i].onblur != null)
		$(fieldIds[i]).onblur();
	}
}

/**
@param checkItems 要验证的div的id集合
@return 如果有未通过的验证，返回false
*/
function checkForm(checkItems){
	var className;
	for(i=0;i<checkItems.length;i++){
		className = $('#'+checkItems[i]).attr("class");
		if(className != 'ico_tick'){
			return false;
		}
	}
	return true;
}

/**
@formName form表单的名称
@actionName 提交到的服务器端链接
*/
function submitForm(formName,actionName){
	$('#'+formName).attr('method','post');
	$('#'+formName).attr('action',actionName);
	//$('#'+formName).submit();
	document.getElementById(formName).submit();
}

/**
提供给弹出窗口使用的提交表单方法
@formName form表单的名称
@actionName 提交到的服务器端链接
*/
function openWindow(formName,actionName){
	$('#'+formName).attr('method','post');
	$('#'+formName).attr('action',actionName);
	$('#'+formName).attr('target','_blank');
	//$('#'+formName).submit();
	document.getElementById(formName).submit();
}

/**
处理表单提交时，客户端按钮所使用的js对象
*/
function ButtonShow(){
	//私有的扩展的其他验证方法的名称
	var otherValidateFunc;
	 
	this.setOtherValidateFunc = function(v){
		otherValidateFunc = v;
	} 
	/**
	根据验证的结果，处理按钮显示的效果
	@fieldErrorIds 要验证的id集合
	@yesButtonId 可以提交的按钮的id
	@noButtonId 不能提交的按钮的id
	@return 
	*/
	this.dealButtonShowOrClose = function(fieldErrorIds,yesButtonId,noButtonId){
		var flag = !checkForm(fieldErrorIds);
		
		//如果有外部验证函数，则还需要执行外部验证函数
		if(otherValidateFunc != null && otherValidateFunc != '')
			flag = eval(otherValidateFunc+"()") || flag;
			
		if(flag){
			$('#'+yesButtonId).css('display','none');
			$('#'+noButtonId).css('display','block');
			return;
		}
		
		$('#'+yesButtonId).css('display','block');
		$('#'+noButtonId).css('display','none');
	}
}

/**
显示验证question的图层
@param flag true 代表显示
*/
function showDiv(divId,flag){
	if(flag){
		$('#'+divId).css('display','block');
	}else{
		$('#'+divId).css('display','none');
	}
}

/**
为验证提供的重用方法，如果未填写，则不显示提示信息，返回true
加强isNull方法
@param fieldValue 待验证的值
@param idName 要显示值的div的id
@return true验证失败
*/
function isNullShow(fieldValue,idName){
	//先判断下是否填写，如果没填写，则置把div从有值修改为空
	if(isNull(fieldValue)){
		showMessage(idName,'','&nbsp;');
		return true;
	}
	
	//提示验证成功信息
	showError(false,idName,'&nbsp;');
	return false;
}

/**
为验证提供的重用方法，如果未填写，则不显示提示信息，返回true
加强isNull方法
@param fieldValue 待验证的值
@param idName 要显示值的div的id
@param msg 要提示的信息
@return true验证失败
*/
function isNullShowForBuyer(fieldValue,idName,msg){
	//先判断下是否填写，如果没填写，则置把div从有值修改为空
	if(isNull(fieldValue)){
		showMessage(idName,'ico_cross',msg);
		return true;
	}
	
	//提示验证成功信息
	showError(false,idName,'&nbsp;');
	return false;
}

/**
验证长度提供的普通重用的方法
加强isBetweenLength验证
*/
function isBetweenLengthShow(fieldValue,min,max,idName,msg){
	if(isBetweenLength(fieldValue,min,max)){
		showMessage(idName,'ico_cross',msg);
		return true;
	}
	
	//提示验证成功信息
	showError(false,idName,'&nbsp;');
	return false;
}

/**
	移动电话验证封装
**/
function isMovePhoneNumberShow(fieldValue,idName,msg){
	if(!isNull(fieldValue)){
		if(isMovePhoneNumber(fieldValue)){
			showMessage(idName,'ico_cross',msg);
			return true;
		}
	}
	showError(false,idName,'&nbsp;');
	return false;
}

/**
	固定电话验证封装
**/
function isPhoneNumberShow(fieldValue,idName,msg){
	if(!isNull(fieldValue)){
		if(isPhoneNumber(fieldValue)){
			showMessage(idName,'ico_cross',msg);
			return true;
		}
	}
	showError(false,idName,'&nbsp;');
	return false;
}


function isBetweenLength(fieldValue,min,max){
	if(fieldValue.length < min){
		return true;
	}
	
	if(fieldValue.length > max){
		return true;
	}
	return false;
}

/**
@param fieldValue 要验证的输入框的值
@return true 代表验证失败
*/
function isNull(fieldValue) {
	if (fieldValue.replace(/(^\s*)|(\s*$)/g, "") == "") {
		return true;
	} else {
		return false;
	}
}

/**
@param fieldValue 要验证的输入框的值
@param 要输入验证值的长度
@return true 代表验证失败
*/
function isLength(fieldValue,fieldLen) {
	if (fieldValue.length <= fieldLen) {
		return false;
	} else {
		return true;
	}
}

function isIP(fieldValue) {
	var patrn = /^[0-9.]{1,20}$/;
	if (!patrn.exec(fieldValue)) {
		return false;
	}
	return true;
}

function isDate(fieldValue) {
	var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
	if (r == null) {
		return false;
	}
	var d = new Date(r[1], r[3] - 1, r[4]);
	return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]);
}

/**
@param fieldValue 要验证的输入框的值
@return true 代表验证失败 
*/
function isEmail(fieldValue) {
	var patrn = /^((\w)|[-]|[.])+@(((\w)|[-])+[.])+[a-z]{2,4}$/;
	if (patrn.exec(fieldValue)) {
		return false;
	}
	return true;
}

function isNumber(fieldValue){
	var numReg = /^\d+\s*$/;
	if(!numReg.test(fieldValue))	return false;
	return true;
}

function isInt(s){
	var patrn =/^([1-9]\d{0,9})$/;
	if (patrn.exec(s)) 
		return false;
	else
		return true;
}   

/**
@param obj 要验证的对象
@param id 错误提示显示的层对象
@return true 代表验证失败 false 验证成功
*/
function isNeedPic(obj,id){
	isNullShow(obj.value,id);
	if(isNullShow(obj.value,id)){
		return false;
	}
	
	var imgFormat = obj.value ;
	var patrn = /^(([a-zA-Z]:)|(\\))((\\)[^\\\*\?\|/:"<>]{1,255})+\.(([j,J][p,P][g,G])|([g,G][i,I][f,F]))$/;
	
	if (!patrn.exec(imgFormat)) {
		showError(true,id,"format is error,please upload gif or jpg!")
		return true;
	}	
	showError(false,id,"&nbsp;")
	return false;
}

/**
 用于更换验证码图片
由于火狐不支持弃用，方法写在事件中
var validateCode = "../ValidateCode?id="+Math.random();
function changeValidateCode(){
	$('validateCode').src=validateCode;
	$('anotherValidateCode').src=validateCode;
}
**/

/**
	验证是否是移动电话号码11位
**/
function isMovePhoneNumber(mobile){
	var mobilePhoneNum=/^(\d{11}[-/]*)$/;
	if(mobilePhoneNum.exec(mobile)){
		return true;
	}
	return false;
}

/**
	验证是否是固定电话
**/
function isPhoneNumber(phone){
	var p1 = /^(\d+[-/]*)$/;
	//var phoneNum=/^\d{1,}$/;
	if(p1.exec(phone)){
		return true;
	}
	return false;
}

/**
	验证是否是区号
**/
function isSection(section){
	var sectionNum=/^0\d{2,3}$/;
	if(sectionNum.exec(section)){
		return false;
	}
	return true;
}

/**
 验证密码合法性同时显示密码强度
@param fieldValue 待验证的值
@param idName 要显示值的div的id
@param msg 显示的信息
@return true 验证失败
*/
function validPassword(idName,msg,fieldValue){
	
	//密码格式验证
	var flag = isPassword(fieldValue);
	if(flag){
		showMessage(idName,'ico_cross',msg);
		return true;
	}
	getPasswordStrong(fieldValue);
	return false;
}

/**
根据密码判断密码强度
长度简单判断，6-10，10-15，15-20
*/
function getPasswordStrong(userPass){
	
   	if(userPass != null && userPass.length < 10){
   		$('#pwd_strength').css('display','block');
   		$('#pwdPic').attr('src','http://image.linkchina.com/buyer/password_weak.gif');
   	}else if(userPass != null && userPass.length >= 10 && userPass.length < 15){
   		$('#pwd_strength').css('display','block');
   		$('#pwdPic').attr('src','http://image.linkchina.com/buyer/password_middling.gif');
   	}else if(userPass != null && userPass.length >=15 && userPass.length <20){
   		$('#pwd_strength').css('display','block');
   		$('#pwdPic').attr('src','http://image.linkchina.com/buyer/password_strong.gif');
   	}else{
   		$('#pwd_strength').css('display','none');
   	}
    
}

