//	Aplicar la clase 'set_validacion' al formulario que queramos validar.
//	Crear una función validadora con el nombre 'validar_' + id del formulario.

function set_validacion(){
 $$('form.set_validacion').each(function(f){
  var manevent=eval('validar_'+f.id);
  if(typeof manevent=='function'){
	 //f.getInputs('submit')[0].writeAttribute({type:'button'}).observe('click', manevent);  //No funciona en IE.
	 var boton=f.getInputs('submit')[0], idBoton=boton.identify();
	 
	 //Se utiliza Element porque en Opera no se puede usar directamente la referencia a los input para replace.
	 Element.replace(boton, boton.inspect().sub(' ', ' type="button" '));
	 boton.id="";
	 $(idBoton).observe('click', manevent);
	}
	else alert("Error en el validador del formulario o bien este no se ha creado.");
 });
}

//--------------------------------------------------------------------------------------------------------------
//                                   funciones validadoras de campos individuales
//--------------------------------------------------------------------------------------------------------------

function esTelefono(valor){return /^\d{9}$/.test(valor)}

function esEmail(valor){return /^[0-9a-zA-Z]+([._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+([._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3}$/.test(valor)}

//--------------------------------------------------------------------------------------------------------------
//                                   funciones validadoras de formularios
//--------------------------------------------------------------------------------------------------------------

//El nombre de la función que valida es 'validar_' + id del formulario.
function validar_commentform(){
 var re;
 
 if($('author')){
  if($F('author')==""){
 	 $('author').focus();
   mensaje.mostrar("Por favor, introduzca su nombre.");
   return;
  }
	
	re=/^[0-9a-zA-Z]+([._][0-9a-zA-Z]+)*@[0-9a-zA-Z]+([._-][0-9a-zA-Z]+)*\.[0-9a-zA-Z]{2,3}$/; //validar dirección de correo
  if(!re.test($F('email'))){
   $('email').focus();
   if($F('email')=="") mensaje.mostrar("Por favor, introduzca una direcci&oacute;n de correo de contacto.");
   else mensaje.mostrar("La direcci&oacute;n de correo tiene un formato incorrecto.");
   return; 
  }
 }

 if($F('comment')==""){
	$('comment').focus();
  mensaje.mostrar("Por favor, introduzca contenido.");
  return;
 }
 
 this.form.submit();
}

//El nombre de la función que valida es 'validar_' + id del formulario.
function validar_searchformheader(){
 if($F('sfh')==""){
	$('sfh').focus();
  mensaje.mostrar("Por favor, introduzca algo que buscar.");
  return;
 }
 
 this.form.submit();
}

//El nombre de la función que valida es 'validar_' + id del formulario.
function validar_searchform(){
 //Aquí las funciones $F() y $() no funcionan correctamente en Opera.
 if(this.form['s'].value==""){
	this.form['s'].focus();
  mensaje.mostrar("Por favor, introduzca algo que buscar.");
  return;
 }
 
 this.form.submit();
}

//El nombre de la función que valida es 'validar_' + id del formulario.
function validar_formCorreo(){
/*  'modo' puede tener los siguientes valores:
*	 		'test'		 -> no envia. Sirve para comprobar la dirección de correo.
*			'local'	 	 -> envia y utiliza el servidor de correo remoto.
*			ninguno		 -> envia y utiliza el servidor de correo del servidor.
*/
 var modo="";
 
 if(modo=='test'){
  var cad="";
  for(var i=0;i<indices.length;i++) cad+=alfabeto[indices[i]-1];
	mensaje.mostrar(cad+arroba+dominio+punto+ext, 3);
	return;
 }

 //Validar el formulario
 //validar teléfono
 if(!esTelefono($F('telefono')) && $F('telefono')!=""){
  $('telefono').focus();
  mensaje.mostrar("El tel&eacute;fono tiene un formato incorrecto.");
  return;
 }
 
 //validar dirección de correo
 if(!esEmail($F('email'))){
	$('email').focus();
  if($F('email')=="") mensaje.mostrar("Por favor, introduzca una direcci&oacute;n de correo de contacto.");
  else mensaje.mostrar("La direcci&oacute;n de correo tiene un formato incorrecto.");
  return; 
 }
 
 if($F('textoCorreo').length<10){
	$('textoCorreo').focus();
  mensaje.mostrar("El texto del correo es demasiado breve.");
  return; 
 }
 // Fin Validar el formulario
 
 //Enviando el formulario
 //Sin Ajax
 if(Ajax.getTransport()==false){
  this.form.submit();
	return;
 } 
 
 //Con Ajax
 this.form.action=bloginfo.template_url+"/phps/correo-1-9.php";
 
 $('formCorreo').request({
  encoding:'UTF-8',
	
	parameters:{'modo':modo=='local'?'local':'servidor'},
	
	onSuccess:function(transport){
   var respuesta=eval(transport.responseText);
   mensaje.mostrar(respuesta[0], respuesta[1]);
   $('formCorreo').reset();
  },
	
	onFailure:function(transport){
	 var cadError=transport.statusText;
	 mensaje.mostrar('Se ha producido un error. Int&eacute;ntelo m&aacute;s tarde o pruebe con su cliente de correo.<br />'+cadError);
	},
	
	onException:function(req, excep){
	 var cadError=excep.description;
	 mensaje.mostrar('Se ha producido un error. Int&eacute;ntelo m&aacute;s tarde o pruebe con su cliente de correo.<br />'+cadError);
	}
 });
 
 if(mensaje) mensaje.mostrar("Enviando...",2);
}

