// Devuelve true si estan rellenos todos los campos marcados como required en el 
// array de campos de formulario dado como parametro
function checkrequired(fields_array)
{		
		var ok = true;
		
		fields_array.each( function (field) 
								{
									field.removeClassName('combos-error');		
								});
		fields_array.each( function (field) 
								{
									if (field.value.blank()) 
									{
										alert("El campo '" + field.title + "' es obligatorio");
										field.focus();
										field.addClassName('combos-error');										
										ok = false;		
										throw $break;																								
									}
									
								}										
							);		
		return ok;
}

function checknumber(str)
{
	
	var expreg = new RegExp(/^[0-9]+$/);	
	return expreg.test(str);
		
}

function checkdouble(str)
{
	
	
	var expreg = new RegExp(/^\d{1,4}(\.\d{1,2}){0,1}$/);	
	return expreg.test(str);		
}


function checkemail(str)
{
	str = str.strip();
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
 	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
  	return (!reg1.test(str) && reg2.test(str));
}


// comprueba si la cadena dada esta formada por letras, numeros y/o _ (guion bajo)
function check_alphanum(str)
{	
	var rgExp = /^([0-9a-zA-Z_]){0,20}$/;		
	return rgExp.test(str); 	
}

function is_date(day, month, year)
{
	
	var TheDate=new Date();
	TheDate.setFullYear(year, month-1, day);
	
	return (TheDate.getDate()==day) && (TheDate.getMonth()==month-1) &&	(TheDate.getFullYear()==year);
}

// comprueba si una cadena tiene la forma dd/mm/aaaa
function check_date_ddmmyyyy(fecha)
{	
	var rgExp = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;			
	return rgExp.test(fecha);		
}


/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////// VALIDACION FORMULARIOS DE SECCIONES            ////////////////////////////
function check_newsletter_form()
{

	var required_fields = $$(".required"); 		
	var ok = checkrequired(required_fields);
	
	if (ok)
	{
		if (!$("newsletter_acepto").checked)
		{
			alert("Debes indicar si quieres aceptar la suscripción a la newsletter");
			$("newsletter_acepto").focus();
			ok = false;
		}
	}
	return ok;	
}	

function check_registro_form()
{

	var required_fields = $$(".required"); 		

	if (checkrequired(required_fields))
	{
			
		if (!checkemail($F("email")))
		{
			
			alert("El campo 'Email' no tiene un formato correcto");
			$("email").select();
			$("email").focus();
			$("email").addClassName('combos-error');	
			return false;
		}	
		
		if (!checknumber($F("cp")))
		{
			
			alert("El campo 'Código Postal' no tiene un formato correcto. Sólo puede estar formado por dígitos");
			$("cp").select();
			$("cp").focus();
			$("cp").addClassName('combos-error');
			return false;
		}	
		
		
		if ($F("usuario").length < 6)
		{
			alert("El campo 'Usuario' debe tener una longitud mínima de 6 caracteres");
			$("usuario").select();
			$("usuario").focus();
			$("usuario").addClassName('combos-error');
			return false;			
		}
		
		if (!check_alphanum($F("usuario")))
		{
			alert("El campo 'Usuario' debe estar formado por letras, dígitos y/o guiones bajos (_)");
			$("usuario").select();
			$("usuario").focus();
			$("usuario").addClassName('combos-error');
			return false;			
		}
		
		if ($F("password").length < 6)
		{
			alert("El campo 'Password' debe tener una longitud mínima de 6 caracteres");
			$("password").select();
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;			
		}
		
		if (!check_alphanum($F("password")))
		{
			alert("El campo 'Password' debe estar formado por letras, dígitos y/o guiones bajos (_)");
			$("password").select();
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;			
		}
		
		if ( $F("password") != $F("password2") )
		{
			
			alert("El campo 'Password' debe ser igual al campo 'Confirmar password'");
			$("password").select();
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;
		}	
			
		return true;
			
	}
	return false;	
}	

function check_login_form()
{

	if ($F("login_usuario").blank())
	{
		alert("El campo 'Usuario' es obligatorio");
		$("login_usuario").focus();
		return false;
	}
	
	if ($F("login_password").blank())
	{
		alert("El campo 'Clave' es obligatorio");
		$("login_password").focus();
		return false;
	}
	
	return true;
}	


function check_datospersonales_form()
{

	var required_fields = $$(".required"); 		

	if (checkrequired(required_fields))
	{
			
		if (!checkemail($F("email")))
		{
			
			alert("El campo 'Email' no tiene un formato correcto");
			$("email").select();
			$("email").focus();
			$("email").addClassName('combos-error');
			return false;
		}	
				
		
		if ($F("password").length < 6)
		{
			alert("El campo 'Clave' debe tener una longitud mínima de 6 caracteres");
			$("password").select();
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;			
		}
		
		if (!check_alphanum($F("password")))
		{
			alert("El campo 'Password' debe estar formado por letras, dígitos y/o guiones bajos (_)");
			$("password").select();			
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;			
		}
		
		if ( $F("password") != $F("password2") )
		{
			
			alert("El campo 'Password' debe ser igual al campo 'Confirmar password'");
			$("password").select();
			$("password").focus();
			$("password").addClassName('combos-error');
			return false;
		}	
			
		return true;
			
	}
	return false;	
}	


function check_solicitarspass01_form()
{

	var required_fields = $$(".required"); 		

	if (checkrequired(required_fields))
	{		
		
		if (!checkemail($F("email_comprador")) )
		{
			alert("El campo 'Email del Comprador' no tiene un formato correcto");
			$("email_comprador").select();
			$("email_comprador").focus();
			return false;
		}
		
		if (!checknumber($F("telefono_comprador")) )
		{
			alert("El campo 'Teléfono del Comprador' no tiene un formato correcto");
			$("telefono_comprador").select();
			$("telefono_comprador").focus();
			return false;
		}
		
		if (!$F("email_beneficiario").blank()) 
		{
			if (!checkemail($F("email_beneficiario")) )
			{
				alert("El campo 'Email del Beneficiario' no tiene un formato correcto");
				$("email_beneficiario").select();
				$("email_beneficiario").focus();
				return false;
			}
		}	
		
		if (!$F("telefono_beneficiario").blank()) 
		{
			if (!checknumber($F("telefono_beneficiario")) )
			{
				alert("El campo 'Teléfono del Beneficiario' no tiene un formato correcto");
				$("telefono_beneficiario").select();
				$("telefono_beneficiario").focus();
				return false;
			}
		}	
		
		if (!checkdouble($F("importe")))
		{			
			alert("El campo 'Cantidad' debe ser un número (utilizar el punto como separador de decimales)");
			$("importe").select();
			$("importe").focus();
			return false;
		}	
		
		return true;
	}
		
	return false;
	
	
}	




function check_contacto_form()
{
	var required_fields = $$(".required"); 		

	if (checkrequired(required_fields))
	{		
		if (!checkemail($F("contacto_email")))
		{
			
			alert("El campo 'Email' no tiene un formato correcto");
			$("contacto_email").select();
			$("contacto_email").focus();
			$("contacto_email").addClassName('combos-error');
			return false;
		}	
		return true;

	}
		
	return false;
}






function check_atencionalcliente_form()
{
	var required_fields = $$(".required"); 		

	return (checkrequired(required_fields))			
		
}

function check_sugerencias_form()
{
	var required_fields = $$(".required"); 		

	if (checkrequired(required_fields))
	{		
		if (!checkemail($F("sugerencias_email")))
		{
			
			alert("El campo 'Email' no tiene un formato correcto");
			$("sugerencias_email").select();
			$("sugerencias_email").focus();
			$("sugerencias_email").addClassName('combos-error');
			return false;
		}	
		return true;
	}
	return false;	
}

function check_reserva_form()
{

	var required_fields = $$(".required");

	if (checkrequired(required_fields))
	{
		
		if ($F("telefono").length < 9)
		{
			alert("El campo 'Telefono' debe tener una longitud de 9 caracteres");
			$("telefono").select();
			$("telefono").focus();
			return false;
		}
		
		if (!checkemail($F("email")))
		{
			alert("El campo 'E-Mail' no tiene un formato correcto");

			$("email").select();
			$("email").focus();

			return false;
		}

		if ($F("email") != $F("email2"))
		{
			alert("El campo 'E-Mail' debe ser igual al campo 'Reescriba su E-Mail'");

			$("email").select();
			$("email").focus();

			return false;
		}
		
		return true;
	}
	
	return false;
}

function check_buscadorarticulos_form()
{		

	// chequear fecha
	var fecha = $F("articulo_fecha");	

	if (!fecha.blank() && !check_date_ddmmyyyy(fecha))// chequear que tiene el formato correcto dd/mm/yyyyy
	{
		alert("El campo 'Fecha' no tiene un formato correcto. Introducir dd/mm/aaaa");
			$("articulo_fecha").select();
			$("articulo_fecha").focus();
			return;
	}

	// chequear palabra clave
	var keyword = $F("articulo_keyword");	

	if (!keyword.blank() && (keyword.length <3)) 
	{
		alert("La palabra clave debe tener una longitud mínima de 3 caracteres");
		$("articulo_keyword").select();
		$("articulo_keyword").focus();
		return;
	}
	document.f_buscador_articulos.submit();
}


function check_buscadornoticias_form()
{		

	// chequear fecha
	var fecha = $F("noticia_fecha");	
	if (!fecha.blank() && !check_date_ddmmyyyy(fecha))// chequear que tiene el formato correcto dd/mm/yyyyy
	{
		alert("El campo 'Fecha' no tiene un formato correcto. Introducir dd/mm/aaaa");
			$("noticia_fecha").select();
			$("noticia_fecha").focus();
			return;
	}

	// chequear palabra clave
	var keyword = $F("noticia_keyword");	

	if (!keyword.blank() && (keyword.length <3)) 
	{
		alert("La palabra clave debe tener una longitud mínima de 3 caracteres");
		$("noticia_keyword").select();
		$("noticia_keyword").focus();
		return;
	}
	document.f_buscador_noticias.submit();
}



function check_recordardatosacceso_form()
{
	var required_fields = $$(".required");

	if (checkrequired(required_fields))
	{		
				
		if (!checkemail($F("email")))
		{
			alert("El campo 'E-Mail' no tiene un formato correcto");

			$("email").select();
			$("email").focus();

			return false;
		}
				
		return true;
	}
	
	return false;		
		
}


function check_comentarios_form()
{
	var required_fields = $$(".required");

	if (checkrequired(required_fields))
	{		
				
		if (!checkemail($F("email")))
		{
			alert("El campo 'E-Mail' no tiene un formato correcto");

			$("email").select();
			$("email").focus();

			return false;
		}
				
		return true;
	}
	
	return false;		
			
		
}