(function($){
	
	$.fn.validar = function(parametros){
		valida = true;
		var  padrao
			,padroes = {
				destacarCampos : true
				,corborda : '#000'
				,flag : 'erroo'
				,msgflag :'msgerro'
				,senha : 'senha'
				,confirmacaosenha : 'csenha'
				,email : 'email'
			}
			
		padrao = $.extend({},padroes,parametros);
		
		$.fn.destacarCampos = function(){
			if(padrao.destacarCampos == true) $elemento.css({ borderColor : padrao.corborda });
		}
		
		$('#'+padrao.msgflag).empty();
		this.each(function(){
			
			$elemento = $(this);
			$valorelemento = $elemento.val();
			$nomeelemento = $elemento.prev().html();
			
			if($elemento.is('input:text') || $elemento.is('textarea') || $elemento.is('input:password') || $elemento.is('select') ||  $elemento.is('input:file')){
				
				if($valorelemento == "" ){
					$.fn.destacarCampos();
					$('#'+padrao.msgflag).append('<p>Preencha o campo <span>'+ $nomeelemento +'</span></p>')
					valida = false;
				}
				
			}
			if($elemento.is('input[name='+padrao.confirmacaosenha+']')){
				if($valorelemento != ""){
					if( $valorelemento != $('input[name='+padrao.senha+']').val()){
						$.fn.destacarCampos();
						$('#'+padrao.msgflag).append('<p>A <span>senha</span> n&atilde;o corresponde &agrave; <span>senha de confirma&ccedil;&atilde;o</span></p>')
						valida = false;
					}else{
						if( $valorelemento.length < 4){
							$.fn.destacarCampos();
							$('#'+padrao.msgflag).append('<p><span>Senha</span> muito curta</span></p>')
							valida = false;
						}
					}
				}
			}
			
			if($elemento.is('input[name='+padrao.email+']')){
				if($valorelemento != ""){
					
					var emailFilter=/^.+@.+\..{2,}$/;
					var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
					if(!(emailFilter.test($valorelemento))||$valorelemento.match(illegalChars)){
						$.fn.destacarCampos();
						$('#'+padrao.msgflag).append('<p>Preencha o campo <span>'+ $nomeelemento +'</span> corretamente. Informe um e-mail v&aacute;lido</p>')
						valida = false;
					}
				}
			}
			
			if($elemento.is('input:checkbox')){
				
				if(!$elemento.is(':checked')){
					$.fn.destacarCampos();
					$('#'+padrao.msgflag).append('<p>Marque o campo <span>'+ $(this).next().html() +'</span></p>')
					valida = false;
				}
				
			}
			
			
		});
		if(valida == false){
			$.fn.sdDw = function(){ $('#'+padrao.flag).slideUp() }

			$('#'+padrao.flag).slideDown();
			slideUp = setTimeout('$.fn.sdDw()', 5500)			
			
			$('#'+padrao.flag).click(function(){
				clearTimeout(slideUp);
				$(this).slideUp()
			})
		}else{
			$(this).parents('form:first').submit();
		}
		
		
	}
	
})(jQuery);
