$(document).ready(function(){
	
	array_campos = $("input, textarea");
	var errores_validacion  = false;
	
	$("input, textarea")
		.blur(function (event) {
        	 comprobar_campo($(this), array_campos, false);
			 event.preventDefault();
    });
	
	$("#envio")	
		.click(function (event) {
         	var errores_validacion = comprobar_campo($(this), array_campos, true);
			if(errores_validacion)
				event.preventDefault();
	});

	

    function comprobar_campo(campo, array_campos, enviar){
		
		if(enviar)
			var orden = $(array_campos).length - 1;
		else	
			var orden = campo.attr("tabindex");
		var j = 0;
		
		for(i=0; i < orden; i++)
		{
			var valor = $(array_campos[i]).attr("value");
			var nombre_campo = $(array_campos[i]).attr("name");
			var tipo = $(array_campos[i]).attr("class");
			
			if(valor == "")
			{				
				if(tipo == "obligatorio" || tipo == "obligatorio marcado")
					form_error($(array_campos[i]), "vacio")
				else
					form_aviso($(array_campos[i]), "vacio")									
			}
			else{
					
				if(nombre_campo == "telefono")
					comprobar_telefono($(array_campos[i]))
			
				else if(nombre_campo == "email")
					comprobar_email($(array_campos[i]))
				else{
					var estado_campo = $(array_campos[i]).attr("class")
					if(estado_campo == "obligatorio marcado" || estado_campo == "marcado" )
					{
						$(array_campos[i]).removeClass("marcado")	
						form_correcto($(array_campos[i]), tipo)
					}
				}
			}
						
	
		}
		if($("#listado_errores ul li.error").length == 0)
			return false
		else
			return true
		
	}
	
	function comprobar_telefono(telefono){
		$("#a_telefono").remove();
		
		v_telefono = $(telefono).attr("value");
		var er_tlfono = /^([0-9\s\+\-])+$/
		 var num_telefono = v_telefono.length
		 if(!er_tlfono.test(v_telefono))
		 	form_aviso(telefono, "no-num")
		 else if(num_telefono < 8)
		 	form_aviso(telefono, "corto")
		 else
		 {
		 	var estado_campo = $(telefono).attr("class") 
			if(estado_campo == "obligatorio marcado" || estado_campo == "marcado" )
			{
				$(telefono).removeClass("marcado")
		 		form_correcto(telefono)
			}
		 }
	}
	
	function comprobar_email(email){
		 $("#e_email").remove();
		 
		 v_email = $(email).attr("value");
		 var er_email = /^(.+\@.+\..+)$/		
		 if(!er_email.test(v_email))
		 	form_error(email, "email")
		else
		{
			var estado_campo = $(email).attr("class") 
			if(estado_campo == "obligatorio marcado" || estado_campo == "marcado" )
			{
				$(email).removeClass("marcado")
		 		form_correcto(email)
			}
		}
	}
	
	function form_error(campo, error)
	{	
	    $(campo).animate({ 
  			backgroundColor: "#d04949",
			color: "#000"
        }, 1500 );
		
		$(campo).addClass("marcado")
		var id_error = "#e_" + $(campo).attr("name")
		
		switch(error)
		{
		case "vacio": 
			
			if($(id_error).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='e_" + $(campo).attr("name") + "' class='error' style='color:#be0000; font-size:11px; list-style-image: url(images/error.png); *margin-left:20px'><span>El campo obligatorio <strong>" + $(campo).attr("name") + "</strong> se encuentra vacio</span></a></li>")
			}
		break;
		case "nombre":
		    if($(id_error).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='e_" + $(campo).attr("name") + "' class='error' style='color:#be0000; font-size:11px; list-style-image: url(images/error.png); *margin-left:20px'><span>Debe introducir un  <strong>Nombre</strong></span></a></li>")
			}
		break;	
		case "email": 
			if($(id_error).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='e_" + $(campo).attr("name") + "' class='error' style='color:#be0000; font-size:11px; list-style-image: url(images/error.png) ; *margin-left:20px'><span>El <strong>e-mail</strong> introducido es incorrecto</span></a></li>")
			}
		break;
		}		
	}
	
	function form_aviso(campo, aviso)
	{		
		$(campo).animate({ 
  			backgroundColor: "#fdf028",
			color: "#000"
        }, 1500 );
		
		$(campo).addClass("marcado")
		
		var id_aviso = "#a_" + $(campo).attr("name")
		
		switch(aviso)
		{
		case "vacio": 
			
			if($(id_aviso).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='a_" + $(campo).attr("name") + "' class='aviso' style='color:#db7c00; font-size:11px; list-style-image: url(images/aviso.png) ; *margin-left:20px' ><span>Aviso: El campo  <strong>" + $(campo).attr("name") + "</strong> se encuentra vacio</span></a></li>")
			}
		break;
		
		case "no-num": 
			if($(id_aviso).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='a_" + $(campo).attr("name") + "' class='aviso' style='color:#db7c00; font-size:11px; list-style-image: url(images/aviso.png); *margin-left:20px'><span>Aviso: El <strong>numero de telefono</strong> introducido es incorrecto (Utilizar solo números o los siguientes simbolos : +, -)</span></a></li>")
			}
		break;
		
		case "corto": 
			if($(id_aviso).attr("class") == undefined)
			{
				$("#listado_errores ul").append("<li id='a_" + $(campo).attr("name") + "' class='aviso' style='color:#db7c00; font-size:11px; list-style-image: url(images/aviso.png); *margin-left:20px'><span>Aviso: El <strong>numero de telefono</strong> introducido es demasiado corto</span></a></li>")
			}
		break;
		
			
		}		
		
	}	
	
	function form_correcto(campo, tipo)
	{		
		$(campo).animate({ 
  			backgroundColor: "#579f22",
			color: "#000"
        }, 800 );
		
		$(campo).animate({ 
  			backgroundColor: "#FFF",
			color: "#999"
        }, 800 );
		
		$(campo).removeClass("marcado")	
		
		c_correcto = $(campo).attr("name");
				
		if(tipo == "obligatorio" || tipo == "obligatorio marcado")
		{
			e_correcto = "#e_" + c_correcto;
			$(e_correcto).remove();			
		}
		else
		{
			a_correcto = "#a_" + c_correcto;
			$(a_correcto).remove();			
		}
	}	
});