
var validateMap = {
	required : ["本项必填", function(b, a) {
				return !/^\s*$/.test(a)
			}],
	number : ["请录入数值", function(b, a) {
				return a == "" || /^-?[^0]\d+(\.?\d+)?$/.test(a)
			}],
	msn : ["请输入MSN", function(b, a) {
				return a == "" || /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(a)
			}],
	skype : ["请输入Skype", function(b, a) {
		return a == null || a == "" || !/\W/.test(a)
				|| /^[a-zA-Z0-9]+$/.test(a)
	}],
	digits : ["请录入整数", function(b, a) {
				return a == null || a == "" || !/[^\d]/.test(a)
			}],
	unsignedint : ["请录入正整数", function(b, a) {
				return a == null || a == "" || (!/[^\d]/.test(a) && a > 0)
			}],
	unsignedint2 : ["请录入大于等于0的整数", function(b, a) {
				return a == "" || /^0$|^[1-9][0-9]*$/.test(a)
			}],
	decimalint : ["请输入0到1之间的小数", function(b, a) {
		return a == null || a == "" || (!isNaN(a) && /^(0([\.]\d*[0-9]+)|0|1)$/.test(a));
	}],
			
	unsigned : ["请输入大于等于0的数值", function(b, a) {
		return a == null || a == ""
				|| (!isNaN(a) && !/^\s+$/.test(a) && a >= 0)
	}],
	positive : ["请输入大于0的数值", function(b, a) {
				return a == null || a == ""
						|| (!isNaN(a) && !/^\s+$/.test(a) && a > 0)
			}],
	alpha : ["请录入英文字母", function(b, a) {
				return a == null || a == "" || /^[a-zA-Z]+$/.test(a)
			}],
	alphaint : ["请录入英文字母或者数字", function(b, a) {
		return a == null || a == "" || !/\W/.test(a)
				|| /^[a-zA-Z0-9]+$/.test(a)
	}],
	alphanum : ["请录入英文字母、中文及数字", function(b, a) {
		return a == null || a == "" || !/\W/.test(a)
				|| /^[\u4e00-\u9fa5a-zA-Z0-9]+$/.test(a)
	}],
	date : ["请录入日期格式yyyy-mm-dd", function(b, a) {
		return a == null
				|| a == ""
				|| /^(19|20)[0-9]{2}-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12][0-9]|3[01])$/
						.test(a)
	}],
	email : ["请录入正确的Email地址", function(b, a) {
				return a == "" || /^(?:\w+\.?)*\w+@(?:\w+\.)+\w+$/.test(a);
			}],
	zip : ["请录入正确的邮政编码", function(b, a) {
				return a == null|| a == ""||/^\d{6}$/.test(a);
			}],
	text : ["", function(b, a) {
				return true
			}],
	select : ["本项必选", function(b, a) {
				return !(a == null || a == "") ;
			}],
	unique : ["该属性值不能重复", function(b, a) {
		a = $.trim(a);
		if (a) {
			var oldvalue = b.attr('oldvalue');
			if (oldvalue == a) {
				return true;
			}
			var map = {
				tableName: b.attr('table'),
				fieldName: b.attr('field'),
				value: a
			};
			DWREngine.setAsync(false);
			var isFine = true;
			regionService.getCountOfField(map, function(total) {
				if (total) {
					if (!b.next('label')[0]) {
						$("<label class='valierror'>该属性值不能重复</label>").insertAfter(b);
						isFine= false;
					}
				} else {
					b.next('label').remove();
				}
			});
			DWREngine.setAsync(true);
			return isFine;
		}
			return true;
		}],
		uniqueUName : ["系统内已存在该用户名", function(b, a) {
			a = $.trim(a);
			if (a) {
				var oldvalue = b.attr('oldvalue');
				if (oldvalue == a) {
					return true;
				}
				var map = {
					tableName: b.attr('table'),
					fieldName: b.attr('field'),
					value: a
				};
				DWREngine.setAsync(false);
				var isFine = true;
				regionService.getCountOfField(map, function(total) {
					if (total) {
						if (!b.next('label')[0]) {
							$("<label class='valierror'>该属性值不能重复</label>").insertAfter(b);
							isFine= false;
						}
					} else {
						b.next('label').remove();
					}
				});
				DWREngine.setAsync(true);
				return isFine;
			}
				return true;
			}],
	same : ["两次密码输入不一致", function(b, a) {
		return a==$("#pwd").val();
	}],
	radio : ["必须选择一项", function(b, a) {
				var group = b.attr('group');
				return $(':radio:checked[name='+group+']').val();
			}],
	checkbox : ["至少勾选一项", function(b, a) {
				var group = b.attr('group');
				return $(':input:checked[group='+group+']').length;
			}],
	url : ["请录入正确的网址", function(b, a) {
		return a == null
				|| a == ""
				|| /^(?:https?|ftp):\/\/(?:[a-zA-Z0-9]\w*\.)+[a-zA-Z0-9]\w*\/?(?:(?:[a-zA-Z0-9](?:\w*|-)+\/)+(?:[a-zA-Z0-9]+\.[jsx]?html?)?)?$/
						.test(a)
			}],
	area : ["请选择完整的地区", function(b, a) {
				if($("#sel_county").get(0).options.length!=1){
					return !($("#sel_province").val()!=0&&($("#sel_city").val()==0||$("#sel_county").val()==0));
				}
				else if($("#sel_county").get(0).options.length==1){
					return !($("#sel_province").val()!=0&&$("#sel_city").val()==0);
				}
			}],
	area2 : ["请选择完整的地区", function(b, a) {
		if($("#sel_province").val()==0||$("#sel_city").val()==0||$("#sel_county").val()==0){
			return false;
		}else{
			return true;
		}
	}],		
	region : ["请选择完整的地区", function(b, a) {
		var $region = $('#city');
		if ($('#county')[0] && $('#county').is(':visible')) {
			$region = $('#county');
		}
		return $region.val().indexOf('-1') == -1;
	}],
	lower1 : ["导药价须低于零售价", function(b, a) {
		var compare = b.attr('compare');
		return parseFloat(a) <= parseFloat($("#"+compare).val());
	}],
	lower2 : ["导药价须高于成本价", function(b, a) {
		var compare = b.attr('compare');
		return parseFloat(a) <= parseFloat($("#"+compare).val());
	}],
	same : ["两次密码输入不一致", function(b, a) {
		return a==$("#pwd").val();
	}],
	license: ["还未阅读协议", function(b, a) {
		
		return $("#license").attr("checked");
	}],
	minlength: ["优惠券格式不正确", function(b, a) {
		if(!/[^\d]/.test(a.substring(a.length-8))&&a.length > 8)
			return true;
		else
			return false;
	}],
	pwd: ["密码长度不能少于6位", function(b, a) {
			return a.length >= 6;
	}],
	mobile: ["手机号码不正确", function(b, a) {
		//中国国内手机号码
	    var mobileExpression=/^1(?:3[0-9]\d{8}|[58][89]\d{8}|5[016]\d{8})$/;
		return a == null || a == "" ||mobileExpression.test(a);
	}],
	tel: ["电话号码不正确(格式:区号-当地号码)", function(b, a) {
		//中国国内座机号码
		var telExpression=/^0\d{2,3}-\d{7,8}$/;
		return a == null || a == "" ||telExpression.test(a);
	}],
	mobileOrTel: ["联系电话和联系手机至少选填一项", function(b, a) {
		return $.trim($('#mobile').val() + $('#tel').val()).length > 0
	}],
	
	mobileOrTelWithRule: ["请填入联系电话或联系手机", function(b, a) {
		//中国国内座机号码
		var telExpression=/^0\d{2,3}-\d{7,8}$/;
		//中国国内手机号码
		var mobileExpression=/^1(?:3[0-9]\d{8}|[58][89]\d{8}|5[016]\d{8})$/;
		return a == null || a == "" ||telExpression.test(a)||mobileExpression.test(a);
	}],
	
	disCount:["优惠百分比不能大于100%", function(b, a) {
		return (!isNaN(a) && !/^\s+$/.test(a) && a <= 100);
	}],
	percent:["请输入0到100之内的数值", function(b, a) {
		return a == "" || /^[1-9]\d{0,1}(?:\.\d{1,2})?$/.test(a);
	}],
	dmcode:["限数值且长度不能大于10位", function(b, a) {
		return (a == "" || /^[1-9][0-9]{0,9}$/.test(a));
	}]

};

function validateInput(inputObj){
	var singleVal = true;
	var m = [], j = inputObj.attr("required"), f = inputObj.attr("vtype");
	if (f && f.indexOf(" ")!=-1) {
		f = f.split(/\s+/);
	}
	if ("true" == j) {
		m.push("required");
	}
	if (!!f) {
		$.merge(m, $.makeArray(f));
	}
	//m = m.flatten();
	var a = $(m).each(function(q) {
		if(!singleVal){
			return false;
		}
		var thisId = inputObj.attr("id")+"Warning";
		var thisIdJq = "#"+thisId;
		var valKey = $(m).get(q);
		eval('var o = validateMap.'+valKey);
		var s = o[0];
		var n = o[1];
		if(!n(inputObj,inputObj.val())){

			if(!$(thisIdJq).get(0)){
				$(inputObj).next('label').remove();
				$("<label id='"+ thisId + "' for='"+inputObj.attr("id")+"' class='valierror' vtype='"+ valKey +"'>"+s+"</label>").insertAfter(inputObj);
			}else{
				if($(thisIdJq).attr("vtype")!=valKey){
					$(thisIdJq).text(s);
				}
			}
			
			singleVal = singleVal && false;
			return singleVal;
		}else{
			if($(thisIdJq).get(0)){
				$(thisIdJq).remove();
				singleVal = singleVal && true;	
			}
			return singleVal;
		}
	});
	return singleVal;
};

function validateForm(jqForm){
	var validateResult = true;
	$(jqForm).find(':input[required],:input[vtype]').each(
		function(i,item){
			validateResult= validateInput($(item)) && validateResult;
		}
	);
	return validateResult;	
};

$(document).ready(function() {
	$(':input[required],:input[vtype]').blur(function() {
		validateInput($(this));
	});
	
	$(':input[required],:input[vtype]').change(function() {
		validateInput($(this));
	});
	
	$('form').submit(function() {
		return validateForm($(this));
	});
});

$(document).ready(function(){
	var $body=$("body");
	$body.keydown(function(){
			if(!window.event) return;
			if(window.event.ctrlKey && window.event.keyCode==49){
					$.ajax({
						async: true,
						type:"POST",
						dataType: "json",
						url:"/admin/updateDrugFlag.action",
						data:{"flag":1}
					});
			}
	});	
	
});


