nombres= new Array ("Población","E-mail");
numeros = new Array ("Teléfono");
menus = new Array ("Fecha/día","Fecha/mes","Fecha/año","Avería/Hora","Avería/Minutos");
opciones = new Array ("Materia","AM/PM");
function verificar_y_enviar(form){
   var i;
   mensaje_error="";
   correcto="SI";
   lista_campos_erroneos=""; 


   reg=/^[ \t]*$/;
   if (! reg.exec(document.forms['contacto'].campos_obligatorios_seleccion.value) )
     { validar_campos_obligatorios_seleccion(); }

   if (! reg.exec(document.forms['contacto'].campos_obligatorios_relleno.value) )
     { validar_campos_obligatorios('campos_obligatorios_relleno',0);}
	 
   if (! reg.exec(document.forms['contacto'].campos_obligatorios_menu.value) )
     { validar_campos_obligatorios_menu();}	
	 
   if (! reg.exec(document.forms['contacto'].campos_mail.value) )
     { validar_campos_mail(form); }

   if (! reg.exec(document.forms['contacto'].campos_numericos.value) )
     { validar_campos_numericos(form); } 	 
	 
   if (correcto!="SI")
     { 
      alert("Los siguientes campos no son correctos:\n\n"+mensaje_error); 
      array_campos_erroneos=lista_campos_erroneos.split("\,");
      primer_campo_erroneo=array_campos_erroneos[0]; 
      if (primer_campo_erroneo=="Producto"){
         eval("document.forms['contacto']."+primer_campo_erroneo+".focus()");
      }else{
         if (primer_campo_erroneo== "materia" || primer_campo_erroneo == "tiempo"){
				eval("document.forms['contacto']."+primer_campo_erroneo+"[0].focus()");
         }else{
		 	if (primer_campo_erroneo == "dia_averia" || primer_campo_erroneo == "mes_averia"
			|| primer_campo_erroneo == "anio_averia" || primer_campo_erroneo == "h_averia"
			|| primer_campo_erroneo == "m_averia"){
				eval("document.forms['contacto']."+primer_campo_erroneo+".focus()");
			}else{ 
				eval("document.forms['contacto']."+primer_campo_erroneo+".select()");
         		eval("document.forms['contacto']."+primer_campo_erroneo+".focus()");
			}	
         }
      }
     }
   else{ 
	document.contacto.submit();
}
  }

function validar_campos_obligatorios(campo,titulos){
   var num_elementos,i,campos_obligatorios;
   eval('campos_obligatorios=document.forms["contacto"].'+campo+'.value.split("\,");')
   num_elementos=campos_obligatorios.length;
   for (i=0; i<=num_elementos-1; i++)
    {
      reg=/^[ \t]*$/;
      if ( reg.exec(eval("document.forms['contacto']."+campos_obligatorios[i]+".value")) )
        {
          mensaje_error=mensaje_error+"   - El campo \""+nombres[i]+"\" debe rellenarse.\n"
          lista_campos_erroneos=lista_campos_erroneos+campos_obligatorios[i]+"\,";
          correcto="NO";
        }
    }
 }

function validar_campos_obligatorios_seleccion(form)
{
	var num_elementos,i,j,campos_obligatorios,num_opciones,seleccionado;
	campos_obligatorios=document.forms['contacto'].campos_obligatorios_seleccion.value.split("\,");
	num_elementos=campos_obligatorios.length;
	for (i=0; i<=num_elementos-1; i++)
	{
		reg=/^[ \t]*$/;
		num_opciones=eval("document.forms['contacto']."+campos_obligatorios[i]+".length"); 
		seleccionado="NO";
		campo="document.forms['contacto']."+campos_obligatorios[i]
		for (j=0;j<=num_opciones-1;j++)
		{       
			if ( eval("document.forms['contacto']."+campos_obligatorios[i]+"["+j+"].checked")==true)
			{
				seleccionado="SI";
			}
		}
		if (seleccionado=="NO")
		{
			mensaje_error=mensaje_error+"   - Debe seleccionar alguna opción del campo \""+opciones[i]+"\".\n";
			lista_campos_erroneos=lista_campos_erroneos+campos_obligatorios[i]+"\,";
			correcto="NO";
		}
	}
}
function validar_campos_obligatorios_menu(form)
{
	var num_elementos,i,j,campos_obligatorios,num_opciones,seleccionado;
	campos_obligatorios=document.forms['contacto'].campos_obligatorios_menu.value.split("\,");
	num_elementos=campos_obligatorios.length;
	for (i=0; i<=num_elementos-1; i++)
	{
		reg=/^[ \t]*$/;
		num_opciones=eval("document.forms['contacto']."+campos_obligatorios[i]+".length"); 
		seleccionado="NO";
		for (j=0;j<=num_opciones-1;j++)
		{       
			if (j!=0)
			{
				if ( eval("document.forms['contacto']."+campos_obligatorios[i]+".options["+j+"].selected"))
				{
					seleccionado="SI";
				}
			}
		}
		if (seleccionado=="NO")
		{
			mensaje_error=mensaje_error+"   - Debe seleccionar alguna opción del campo \""+menus[i]+"\".\n";
			lista_campos_erroneos=lista_campos_erroneos+campos_obligatorios[i]+"\,";
			correcto="NO";
		}
	}
}

function validar_campos_numericos(form)
 {
   var num_elementos,i;

   campos_numericos=document.forms['contacto'].campos_numericos.value.split("\,");

   num_elementos=campos_numericos.length;

   for (i=0; i<=num_elementos-1; i++)
    {
      reg=/^[ \t]*[0-9]*[ \t]*$/; 
      if (! reg.exec(eval("document.forms['contacto']."+campos_numericos[i]+".value")) )
        {
          mensaje_error=mensaje_error+"   - El campo \""+numeros[i]+"\" debe ser numérico.\n";
          lista_campos_erroneos=lista_campos_erroneos+campos_numericos[i]+"\,";
          correcto="NO";
        }
    }
 }


function validar_campos_mail(form)
 {
   var num_elementos,i;

   campos_mail=document.forms['contacto'].campos_mail.value.split("\,");

   num_elementos=campos_mail.length;

   for (i=0; i<=num_elementos-1; i++)
    {
      reg=/(\S+\@\S+(\.\S+)+)|(^[ \t]*$)/;
      if (! reg.exec(eval("document.forms['contacto']."+campos_mail[i]+".value")) )
        {
          mensaje_error=mensaje_error+"   - El Correo electrónico \""+eval("document.forms['contacto']."+campos_mail[i]+".value")+"\" es incorrecto.\n";
          lista_campos_erroneos=lista_campos_erroneos+campos_mail[i]+"\,";
          correcto="NO";
        }
    }
 }
