/** Tiehui.Lu (Danny.Lu) dannyteihui@hotmail.com utf-8 [Mon Jul 07 10:39:52 CST 2008] */

jQuery.format = function(source, params) {	
	if ( arguments.length == 1 ) {
		var args = jQuery.makeArray(arguments);
		args.unshift(source);
		return jQuery.format.apply( this, args );
	}
	if ( arguments.length > 2 && params.constructor != Array  ) {
		params = jQuery.makeArray(arguments).slice(1);
	}
	if ( params.constructor != Array ) {
		params = [ params ];
	}
	jQuery.each(params, function(i, n) {
		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
	});
	return source;		
};

var messages = {
	required: "This field is required.",
	remote: "Please fix this field.",
	email: "Please enter a valid email address.",
	url: "Please enter a valid URL.",
	date: "Please enter a valid date.",
	dateISO: "Please enter a valid date (ISO).",
	number: "Please enter a valid number.",
	digits: "Please enter only digits",
	creditcard: "Please enter a valid credit card.",
	equalTo: "Please enter the same value again.",
	accept: "Please enter only the letters, numbers, underscores.",
	accept2: "Please enter a value between {0} and {1} characters long (include the letters, numbers, underscores).",
	maxlength: "Please enter no more than {0} characters.",
	maxLength: "Please enter no more than {0} characters.",
	minlength: "Please enter at least {0} characters.",
	minLength: "Please enter at least {0} characters.",
	rangelength: "Please enter a value between {0} and {1} characters long.",
	rangeLength: "Please enter a value between {0} and {1} characters long.",
	rangeValue: "Please enter a value between {0} and {1}.",
	range: "Please enter a value between {0} and {1}.",
	maxValue: "Please enter a value less than or equal to {0}.",
	max: "Please enter a value less than or equal to {0}.",
	minValue: "Please enter a value greater than or equal to {0}.",
	min: "Please enter a value greater than or equal to {0}."
};	

(function($) {	 	
	$.error = function(obj,msg){
		obj.next("label").remove(); 
		var h = "<label class='error'>"+msg+"</label>";	
		obj.after(h); 
	}
	
	$.success = function(obj){			
		obj.next("label").remove(); 
	}
	
})(jQuery); 


(function($) {	  
		  
	$.fn.v = function(options) {
		
		var o = $.extend({
			rules:'accept',
			min:0,
			max:0,
			judge:false,
			callback:function(e){}
		}, options);
		
		var validate = function(obj,reg,o){
			var re = new RegExp(reg,"ig");  // 创建正则表达式对。
			var txt = $.trim(obj.val());
			var len = txt.length;
			if(o.max == 0 && len >= o.min && re.test(txt)){
				var o = $.extend(o, {judge:true});
			}else if(len >= o.min && len <= o.max && re.test(txt)){
				var o = $.extend(o, {judge:true});
			}
			return o;			
		}
		
		var accept = function(obj,o){
			//var reg = "^[A-Za-z0-9_]+$";  //	创建正则表达式对。数字+26个英文字母+'_' 组成	
			var reg = "[^\f\n\r\t\v]+$";	//	匹配任何非空白字符
			return validate(obj,reg,o);
		}
		
		var email = function(obj,o){
			var re = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; //email
			var txt = $.trim(obj.val());
			if(re.test(txt)){
				var o = $.extend(o, {judge:true});
			}
			return o;
		}
		
		var phone = function(obj,o){
			var reg = "^[0-9-]+$";  // 创建正则表达式对。数字+'_' 组成	;
			return validate(obj,reg,o);
		}
		
		var number = function(obj,o){
			var reg = "^[0-9]*$";  // 创建正则表达式对。数字 组成			
			return validate(obj,reg,o);
		}
		
		switch(o.rules){			
			case 'phone':
				phone(this,o);
				break;
			case 'number':
				number(this,o);
				break;
			case 'email':
				email(this,o);
				break;
			default:
				accept(this,o);
				break;
		}
		
		return this.each(function(i){
			$(this).attr("judge",o.judge);
		});
	};
	
})(jQuery); 

