//****************************************************************************//
//Total Validator jQuery 2.0
//	LLamada - $("#id_del_formuario").TotalForm({})
//	valores de MM_tipo = vacio / iguala / mail / fecha / tamanyo / checkbox_checked / string / numeric / password
//  Se insertan en el "title" del input
//  El "longdesc" sirve para el mensaje de error
//MarcarError(MM_campo,MM_Error)
//	Funcion para cambiar estilos del error 
//	MM_campo = id del input
//	MM_Error = valor de l error = 1 / 0
//****************************************************************************//

jQuery.fn.TotalForm = function( settings ) {
    return this.each(function() {
		jQuery.fn.TotalForm.run( jQuery( this ), settings );
    });
};

jQuery.fn.TotalForm.run = function( $this, settings ) {
	var Enviamos = true
	// Definimos el onsubmit
	$($this).bind("submit", function() { return TotalValidatorjsEnvio(this) })
	
	// Comprobamos cada campo obligatorio 
	$("#"+$($this).attr('id')+" :input").each(function() {
			var Title = $(this).attr('title')
			if(Title!=''){				
				$(this).keyup(function(){CompruebaCampo($(this),$(this).attr('alt'),Title)})
				$(this).blur(function(){CompruebaCampo($(this),$(this).attr('alt'),Title)})
			}
	})
	
	function TotalValidatorjsEnvio($this){
		Enviamos = true;
		
		$("#"+$($this).attr('id')+" :input").each(function() {
			var Title = $(this).attr('title')				
			if(Title!=''){
				CompruebaCampo($(this),'',Title,true)
			}
	    })
		return Enviamos
	}
	
	function CompruebaCampo(MM_campo1,MM_campo2,MM_tipo,envio){
		//inicializamos el valor del error a cero
		Error = '0'
		//recuperamos el valor del campo 1
		MM_valortxt1 = $(MM_campo1).attr('value');
		//tipos de validaciones
		//vacio - iguala campo2 - mail - fecha - string - numeric - password - tamanyo
		switch (MM_tipo)
		{
			
			//campo vacio - campo vacio - campo vacio - campo vacio
			case 'checkbox_checked':
				MM_valortxt1 = document.getElementById(MM_campo1).checked 				
				if (MM_valortxt1==false){
					Error='1'
					MarcarError(MM_campo1,Error,envio)
				}
				MarcarError(MM_campo1,Error,envio)
				break;
			//campo vacio - campo vacio - campo vacio - campo vacio
			case 'vacio':
				if (MM_valortxt1==''){
					Error='1'
				}
				MarcarError(MM_campo1,Error,envio)
				break;
			//campo = campo - campo = campo - campo = campo - campo = campo
			case 'iguala':
				MM_valortxt2 = document.getElementById(MM_campo2).value;
				Error='1'
				if (MM_valortxt1 == MM_valortxt2){
					Error='0'
				}
				MarcarError(MM_campo1,Error,envio)
				MarcarError(MM_campo2,Error,envio)
				break;
			//mail - mail - mail - mail - mail - mail - mail - mail - mail
			case 'mail':

				var filter=/^[A-Za-z][A-Za-z0-9_.]*@[A-Za-z0-9-_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
				if (MM_valortxt1.length == 0 );
				if (filter.test(MM_valortxt1)){
					Error = '0';
				}
				else{
					Error = '1';
				}
				MarcarError(MM_campo1,Error,envio)
				break;
			//fecha - fecha - fecha - fecha - fecha - fecha - fecha - fecha
			case 'fecha':
				var filter= /^\d{1,2}\/\d{1,2}\/\d{2,4}$/;
				if (MM_valortxt1.length == 0 );
				if (filter.test(MM_valortxt1)){
					Error = '0';
				}
				else{
					Error = '1';
				}
				MarcarError(MM_campo1,Error,envio)
				break;

			case 'string':	
				if (MM_valortxt1.length == 0 )
				{
					Error = '1';
				}
				else
				{
					if(MM_campo2.length > 0)
					{
						tipo=MM_campo2.substr(0, 3);
						
						switch (tipo)
						{
							case "min":
								if (MM_valortxt1.length >= MM_campo2.substr(3))
								{
									Error = '0';
								}
								else{
									Error = '1';
								}
								MarcarError(MM_campo1,Error,envio)
								break;
							case "max":
								if (MM_valortxt1.length <= MM_campo2.substr(3) ){
									Error = '0';
								}
								else{
									Error = '1';
								}
								MarcarError(MM_campo1,Error,envio)
								break;
							case "tam":
								//alert (MM_campo2.substr(3));
								if (MM_valortxt1.length == MM_campo2.substr(3) ){
									Error = '0';
								}
								else{
									Error = '1';
								}
								MarcarError(MM_campo1,Error,envio)
								break;
							}
						}
				
				}
				MarcarError(MM_campo1,Error,envio)
				break;
				
			case 'numeric':
				var filter= /^\d*$/;
				if (MM_valortxt1.length == 0 )
				{
					Error = '1';
					MarcarError(MM_campo1,Error,envio)
				}
				else{
					if (filter.test(MM_valortxt1))
					{
						if(MM_campo2.length > 0)
						{
							tipo=MM_campo2.substr(0, 3);
							
							switch (tipo)
							{
								case "min":
									if (MM_valortxt1.length >= MM_campo2.substr(3))
									{
										Error = '0';
									}
									else{
										Error = '1';
									}
									MarcarError(MM_campo1,Error,envio)
									break;
								case "max":
									if (MM_valortxt1.length <= MM_campo2.substr(3) ){
										Error = '0';
									}
									else{
										Error = '1';
									}
									MarcarError(MM_campo1,Error,envio)
									break;
								case "tam":
									//alert (MM_campo2.substr(3));
									if (MM_valortxt1.length == MM_campo2.substr(3) ){
										Error = '0';
									}
									else{
										Error = '1';
									}
									MarcarError(MM_campo1,Error,envio)
									break;
							}
						}
					}
					else
					{
						Error='1';
					}
					MarcarError(MM_campo1,Error,envio)
				}
										
					
					break;

			//Contraseña - Contraseña - Contraseña - Contraseña - Contraseña - Contraseña - Contraseña - Contraseña - Contraseña
			case 'password':
				var filter= /^(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{4,10})$/;
				if (MM_valortxt1.length == 0 );
				if (filter.test(MM_valortxt1)){
					Error = '0';
				}
				else{
					Error = '1';
				}
				MarcarError(MM_campo1,Error,envio)
				break;	 	
				
			
			case 'user':
				if(MM_valortxt1.length>4){
					$.ajax({
						url: "inc/control_ajax_alta_usuario.asp?user="+MM_valortxt1,
							success: function(datos){						
								if(datos!=0){
									Error = '1';
								}else{
									Error = '0';
								}
								MarcarError(MM_campo1,Error,envio)
							}
					});				
				}
			
			break;	 	


		}
	}
	
	function MarcarError(MM_campo,MM_Error,envio){
		//estilos validado ok
		//alert(MM_campo+" "+MM_Error+" "+envio)
		if (MM_Error == '0' )  {
			$(MM_campo).removeClass('TV_campo_KO').addClass('TV_campo_OK')
			$("#"+$(MM_campo).attr('id')+"_error").fadeOut()
		}
		//estilos no valido ko
		if (MM_Error == '1' )  {
			Enviamos = false;
			
			$(MM_campo).removeClass('TV_campo_OK').addClass('TV_campo_KO')						
			if($(MM_campo).attr('longdesc')==""){
				var msgError = "Campo erróneo"	
			}else{
				var msgError = $(MM_campo).attr('longdesc')	
			}
			$("#"+$(MM_campo).attr('id')+"_error").html(msgError)
			$("#"+$(MM_campo).attr('id')+"_error").fadeIn()
		}
	}
}


// EJEMPLO //


//  $(document).ready(function(){
//		$( "#formContacto" ).TotalForm({});
//	})






//<form id="formContacto" name="formContacto" action="contacto.asp?mail=1" method="post">

//	<div class="clear cont_seccion">
//		<div class="floatleft">
//			<div class="contacto_label">Nombre</div>
//			<div class="requerido_label">requerido</div>
//		 </div>
//		<input class="input_contacto" type="text" id="nombrexxx" name="nombrexxx" title="vacio" longdesc="" maxlength="30" />                            	
//		<div class="clear"></div>
//		<div id="nombrexxx_error" class="TV_campo_error"></div>                                
//	</div>

//	<div class="clear cont_seccion">                            
//		<div class="floatleft">
//			<div class="contacto_label">Telefono</div>
//			<div class="requerido_label">requerido</div>
//		 </div>
//		<input class="input_contacto" type="text" id="telefonoxxx" name="telefonoxxx" title="numeric" longdesc="El campo debe ser numérico" maxlength="30" />
//		<div class="clear"></div>
//		<div id="telefonoxxx_error" class="TV_campo_error"></div>
//	</div>

//	<div class="clear cont_seccion">
//		<div class="floatleft">
//			<div class="contacto_label">Email</div>
//			<div class="requerido_label">requerido</div>
//		 </div>
//		<input class="input_contacto" type="text" id="emailxxx" name="emailxxx" title="mail" longdesc="Email no válido" maxlength="30" />
//		<div class="clear"></div>
//		<div id="emailxxx_error" class="TV_campo_error"></div>
//	</div>

//	<div class="clear cont_seccion">
//		<div class="floatleft">
//			<div class="contacto_label">Comentario</div>
//			<div class="requerido_label">requerido</div>
//		 </div>
//		<textarea class="input_contacto textarea_contacto" type="text" id="comentariosxxx" name="comentariosxxx" title="vacio" longdesc="" maxlength="30"></textarea>
//		<div class="clear"></div>
//		<div id="comentariosxxx_error" class="TV_campo_error"></div>
//	</div>

//	<div class="clear">
//		<input name="inEnviar" type="submit" class="envButton" value="Enviar" id="inEnviar"/>
//	</div>
//</form>  
