

function validateForm(theForm){      // return true if all is well
 var elArr = theForm.elements;       // get all elements of the form into array
 var valor = 0 ;
 var retorna = 0;
 for(var i = 0; i < elArr.length; i++)
  with(elArr[i]){                    // for each element of the form...
   var v = elArr[i].validator;       // get validator, if any
   if(!v) continue;                  // no validator property, skip
   var thePat = PatternsDict[v];     // select the validating regular expr
   
   valor = elArr[i].value;
   var gotIt = thePat.exec(valor);   // run it on value of elArr[i]
   
   if(!gotIt){
    var str = elArr[i].alerta;
    if(!str) str = "Revise los contenidos de los campos";
    var nomstr = elArr[i].nombre;
    
    if(!nomstr) str = "";
   // alert("Error en el valor del Parámetro : " + nomstr + ". Fallo de concordancia de la regla " + v + " con el valor :" + value); return false;}
   alert("VALOR =" + valor + " , CAMPO : " + nomstr + ". AVISO : " + str ); 
   var sigue = elArr[i].obl;
   elArr[i].value = "";
  // return false;
   if(sigue == "TRUE"){
   	retorna = 1;
   	}
   
   }
  } 
  if(retorna == 1)
  	return false;
  	
  return true;
}



var PatternsDict = new Object();

PatternsDict.zipPat = /^\d{5}(-\d{4})?$/;
  // matches zip codes

PatternsDict.eurosPat = /^\d{1,3}(\.\d{3})*(\,\d{2})?$/;
  // matches 14.281.545,45 or ...
  
PatternsDict.pesetasPat = /^\d{1,3}(\.\d{3})*$/;
  // matches 14.281.545 or ...

PatternsDict.timePat = /^\d{2}:\d{2}$/;
  // matches 12:34 but also 75:83

PatternsDict.timePat2=/^([1-9]|1[0-2]):[0-5]\d$/;
  // matches 5:04 or 12:34 but not 75:83
  
PatternsDict.textoPat = /\w*([-,. ])?/;
  // matches texto en general y algunos simbolos
  
PatternsDict.texto1Pat = /^\w+/;
  // matches texto en general y el simbolo -
  
PatternsDict.texto2Pat = /^(\w)([a-zA-Z0-9\-\_\ \,\.\á\é\í\ó\ú\ñ\Ñ\@\Ø\:\/\¿\?\!\¡])+/;
  
PatternsDict.texto3Pat = /(^\w+)/;
  // matches empieza con texto y - no inserta caract especiales
 
PatternsDict.numeroenteroPat = /\d{1,}/;
  // matches digitos
  
PatternsDict.fechaPat = /^\d{1,2}[/]\d{1,2}[/]\d{2,4}$/;
  // matches fecha en formato dd/mm/aaaa y dd/mm/aa

PatternsDict.emailPat = /^.+\@.+\..+$/;
  // matches email permisivo

PatternsDict.email1Pat = /^([\w-_]+\.)*[\w-_]+\@ ([\w-_]+\.)+[a-zA-Z] {2,3}$/;
  // matches email mas restrictivo
  
PatternsDict.email2Pat =  /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; 

PatternsDict.telefPat = /^(\w)([0-9\-\ \,\.\(\)])+/;
