var fc = '#CCC'; // 被锁定焦点的提示颜色
var bc = '#F00'; // 锁定焦点之外的颜色
// Event为出发验证行为的事件，可以设置多项，
// 建议一定要使用blur，其他的任意选择。
var E = ['blur','keyup','click'];
var id = "";
function CheckBlur(b, c) {
	var d = P();
	for (var i = 0;i < E.length; i++) {
		eval("d.bind(\"" + E[i] + "\",function (){F($(this),2,b,c);});")
	}
	d.focus(function() {
		var a = $('span[inputid="' + $(this).attr('name') + '"]');
		
		$('span[inputid]').css('color', bc);
		a.css('color', fc)
	})
}
function SubmitForm(a) {
	var b = 0;
	var c = 0;
	if (a == 1)
		b = '';
	P().each(function() {
		c = F($(this), a);
		b += (a == 1) ? (c ? (b.indexOf(c) > -1 ? '' : c) : '') : (c ? 1 : 0)
	});
	if (a == 1 && b != '') {
		alert('\n\n错误提示！\n' + b);
		b = true
	};
	return !b
}
function P() {
	var a;
	var b;
	$("[inputid]").each(function() {
		b = $(':input[name="' + $(this).attr('inputid') + '"]');
		a = (a) ? a.add(b) : b
	});
	return a
}
function F(a, b, c, d) {
	var e = false;
	M = false;
	var f = false;
	var g = false;
	var h = a.attr('name');
	var i = $('span[inputid="' + h + '"]');
	var j = i.attr('datatype');
	var k = (i.is('[fck]')) ? GetFCKMsg(h) : a.attr('value');
	var l = i.attr('min');
	var m = i.attr('max');
	var n = i.attr('only');
	if (d == 1 && !n) {
		n = m
	};
	if (a.is(':radio') || a.is(':checkbox')) {
		e = $('[name="' + a.attr('name') + '"]:checked').size() < l
	} else {
		if (c == 1)
			i.attr('focus', '1');
		if (c == 0)
			i.removeAttr('focus');
		if (a.is('select')) {
			e = a.children(':selected[value!=""]').size() < l
		} else {
			g = (j && (k.length > 0)) ? (!CD(j, k)) : false;
			if (j == 'float' || j == 'currency') {
				if (!g) {
					if (k.length == 0 && !!l) {
						k = l - 1
					}
					M = (parseFloat(k) < l && !!l);
					f = (parseFloat(k) > m && !!m)
				}
			} else {
				M = (k.length < l && !!l);
				f = (k.length > m && !!m)
			}
			e = M || f || g
		}
	}
	if (!!n && k.length > n) {
		a.val(a.val().substr(0, n))
	};
	if (e) {
		if (b == 1) {
			return ' \n ' + i.attr('msg')
		} else {
			i.text(' ' + i.attr('msg'));
			if ((id == h || id == "") && i.attr('focus') == 1) {
				a.focus();
				id = h
			}
			return true
		}
	} else {
		i.empty();
		id = '';
		if (!!n && k.length > n) {
			var o = P().index(a);
			P().eq(o + 1).focus()
		};
		return false
	}
}
function CD(a, b) {
	var c = '';
	switch (a) {
		case "english" :
			c = /^[A-Za-z]+$/;
			break;
		case "chinese" :
			c = /^[\u0391-\uFFE5]+$/;
			break;
		case "number" :
			c = /^\d+$/;
			break;
		case "float" :
			c = /^\d+$/;
			break;
		case "currency" :
			c = /^[+-]?[0-9]{0,}\.[0-9]{2}$/;
			break;
		case "zipcode" :
			c = /^[1-9]\d{5}$/;
			break;
		case "email" :
			c = /^\w+(?:[-.]\w+)*[@]\w{2,}(?:[-.]\w{2,})*\.[a-z]{2,4}$/;
			break;
		case "phone" :
			c = /^(\d{3,4})-\d{7,8}$/;
			break;
		case "cellphone" :
			c = /^0{0,1}1[358]\d{9}$/;
			break;
		case "ip" :
			c = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){3}$/;
			break;
		case "qq" :
			c = /^[1-9]\d{4,11}$/;
			break;
		case "qqormsn":
			c = /^([1-9]\d{4,11})|(\w+(?:[-.]\w+)*[@]\w{2,}(?:[-.]\w{2,})*\.[a-z]{2,4})$/;
			break;
		case "notempty":
			c = /^[\s|\S]{1,}$/;
			break;
		case "id":
			if(b.length==15){
				b=b.substr(0,6)+"19"+b.substr(6,9)+"x"
			}
			c = /^\d{6}(?:19|20)\d{2}(?:0[1-9]|1[12])(?:0[1-9]|[12]\d|3[01])\d{3}[\dx]$/;
			break;
		case "gcode":
			if(b!='________-_'){
				c = /^[A-Z0-9]{8}[\-]{1}\d{1}$/;
				break;		
			}else{
				return true;	
			}
			
		case "url" :
			c = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
			break
	}
	return c.test(b)
}