// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level SIMPLE_OPTIMIZATIONS
// ==/ClosureCompiler==

//****************************************************************************//
//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
//****************************************************************************//
//Total Validator 2.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),'',Title)})
				$(this).blur(function(){CompruebaCampo($(this),'',Title)})
				
				var MaxLength = $(this).attr('maxlength')
				if(MaxLength!='' && MaxLength!=-1){
					$(this).limitMaxlength({
						onEdit: onEditCallback,
						onLimit: onLimitCallback
					});
				}
			}
	})
	
	function TotalValidatorjsEnvio($this){
		Enviamos = true;
		
		$("#"+$($this).attr('id')+" :input").each(function() {
			var Title = $(this).attr('title')				
			if(Title!=''){
				CompruebaCampo($(this),'',Title,true)
			}
	    })
		$("#enviarxxx").val(Enviamos)
		if(settings.ajax == true){ Enviamos = false }
		return Enviamos
	}
	
	function CompruebaCampo(MM_campo1,MM_campo2,MM_tipo,envio){
		//alert("MM_campo1 " + MM_campo1 +" // MM_campo2 " + MM_campo2 + " // MM_tipo " + MM_tipo + " // envio " + 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
		//alert(MM_tipo.split("=")[0])
		switch (MM_tipo.split("=")[0])
		{
			
			//campo vacio - campo vacio - campo vacio - campo vacio
			case 'checkbox_checked':
				MM_valortxt1 = $(MM_campo1).attr('checked'); 								
				if (MM_valortxt1==false){
					Error='1'
					$('#parrafo_confirmacion').css('visibility','visible')
				}
				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_tipo.split("=")[1]).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{4,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+(\,(\d{2}))?$/;

				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;	 	
				
			//usuario + mail - usuario + mail - usuario + mail - usuario + mail - usuario + mail - usuario + mail - usuario + mail
			case 'user':
				if(MM_valortxt1.length>1){
					var filter=/^[A-Za-z][A-Za-z0-9-_.]*@[A-Za-z0-9-_]+\.[A-Za-z0-9-_.]+[A-za-z]$/;
				$.ajax({
					url: "inc/comprobarusuario.asp?user="+MM_valortxt1,
					success: function(datos){						
					if((datos==0)&(filter.test(MM_valortxt1))){
							Error = '0';
						}else{
							Error = '1';
						}
							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()
		}
	}
}



// Hay que arreglarlo

function MarcarError(MM_campo,MM_Error,envio,mensaje){
		//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 = mensaje	
			}else{
				var msgError = $(MM_campo).attr('longdesc')	
			}
			$("#"+$(MM_campo).attr('id')+"_error").html(msgError)
			$("#"+$(MM_campo).attr('id')+"_error").fadeIn()
		}
	}
	

// Max length

var onEditCallback = function(remaining){
	$(this).siblings('.charsRemaining').text("Characters remaining: " + remaining);

	if(remaining > 0){
		//$(this).css('background-color', 'white');
	}
}

var onLimitCallback = function(){
	//$(this).css('background-color', 'red');
	MarcarError($(this),1,false, "Se han sobrepasado los caracteres permitidos")
}
	

jQuery.fn.limitMaxlength = function(options){
		var settings = jQuery.extend({
			attribute: "maxlength",
			onLimit: function(){},
			onEdit: function(){}
		}, options);
	
		// Event handler to limit the textarea
		var onEdit = function(){
			var textarea = jQuery(this);
			var maxlength = parseInt(textarea.attr(settings.attribute));
	
			if(textarea.val().length > maxlength){
				textarea.val(textarea.val().substr(0, maxlength));
	
				// Call the onlimit handler within the scope of the textarea
				//jQuery.proxy(settings.onLimit, this)();
			}
	
			// Call the onEdit handler within the scope of the textarea
			//jQuery.proxy(settings.onEdit, this)(maxlength - textarea.val().length);
		}
	
		this.each(onEdit);
	
		return this.keyup(onEdit)
					.keydown(onEdit)
					.focus(onEdit);
		}



$(document).ready(function(){
	$("#addseccion").TotalForm({});//formulario de añadir categoria
	$("#editcategoria").TotalForm({});//formulario de editar categoria
	
	$("#addproducto").TotalForm({});//formulario añadir Producto
	$("#editarproducto").TotalForm({});//formulario añadir Producto
	$("#frmaddcoor").TotalForm({});//formulario añadir Color
	
	
	$("#frmlogin").TotalForm({});//formulario login cliente
	$("#frmnuevopedido").TotalForm({});//formulario nuevo pedido
	
	$("#frmcontacto").TotalForm({});//formulario de contacto
	$("#frmcarrito").TotalForm({});//formulario añadir Color
});

// 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>  

