jQuery.extend(jQuery.validator.prototype, {
check: function(element){
			element = this.clean( element );
			
			// if radio/checkbox, validate first element in group instead
			if (this.checkable(element)) {
				element = this.findByName( element.name )[0];
			}
			
			var rules = $(element).rules();
			var dependencyMismatch = false;
			for( method in rules ) {
				var rule = { method: method, parameters: rules[method] };
				try {
					var result = jQuery.validator.methods[method].call( this, jQuery.trim(element.value), element, rule.parameters );
					
					// if a method indicates that the field is optional and therefore valid,
					// don't mark it as valid when there are no other rules
					if ( result == "dependency-mismatch" ) {
						dependencyMismatch = true;
						continue;
					}
					dependencyMismatch = false;
					
					if ( result == "pending" ) {
						this.toHide = this.toHide.not( this.errorsFor(element) );
						return;
					}
					
					if( !result ) {
						var message = this.defaultMessage( element, rule.method );
						if ( typeof message == "function" ) 
							message = message.call(this, rule.parameters, element);
							if(jQuery.validator.mensagem){
						  jQuery.validator.mensagem = jQuery.validator.mensagem + '\n- '+element.title + ': '+ message;
						}else{
				jQuery.validator.mensagem ='\n- '+element.title + ': '+ message;						
						}
						jQuery(element).addClass( this.settings.errorClass );
						this.formatAndAdd( element, rule );
						return false;
					}
				} catch(e) {
					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
						 + ", check the '" + rule.method + "' method");
					throw e;
				}
			}
			if (dependencyMismatch)
				return;
			if ( this.objectLength(rules) )
				this.successList.push(element);
			return true;
		},
		
		
		formatAndAdd: function( element, rule ) {
			var message = this.defaultMessage( element, rule.method );
			if ( typeof message == "function" ) 
				message = message.call(this, rule.parameters, element);
			this.errorList.push({
				//message: message,
				element: element
			});
			this.errorMap[element.name] = message;
			this.submitted[element.name] = message;
		},
		
				defaultMessage: function( element, method) {
			return this.customMessage( element.name, method ) 
				// title is never undefined, so handle empty string as undefined
			|| 	jQuery.validator.messages[method]
				
			
		}

});	
