
   var car1; /* necesario para validar el password */

   BackColorNormal="#FFFFFF"
   BackColorError="#EDFFB8"  //amarillo claro
//   BackColorError="B8FFF9"   //cyan
//   BackColorError="88FB55"    //verde claro
   var NombreCaja = new Object();
   var DescripCaja = new Object();
   var MAXCAJAS;
   MAXCAJAS=21   /* poner uno mas de lo que marca */

      
   NombreCaja[0] = "CmbTipoDocumento"
   NombreCaja[1] = "CmbTerminosCompra"
   NombreCaja[2] = "CmbAduanaIngreso"
   NombreCaja[3] = "CmbMedioTransporte"
   NombreCaja[4] = "CmbPaisOrigen"
   NombreCaja[5] = "CmbPaisProveedor"
   NombreCaja[6] = "CmbPaisEmbarque"
   NombreCaja[7] = "CmbPuertoEmbarque"
   NombreCaja[8] = "CmbEntregarseEn"
   NombreCaja[9] = "CmbMonedaTrans"
   NombreCaja[10] = "CmbNivelComercial"
   NombreCaja[11] = "CmbVinculacionComercial"
   NombreCaja[12] = "CmbVinculacionFinanciera"
   NombreCaja[13] = "TxtDireccionImportador1"
   NombreCaja[14] = "TxtCiudadImportador"
   NombreCaja[15] = "TxtDireccionImportador2"
   NombreCaja[16] = "TxtEmailImportador"
   NombreCaja[17] = "TxtDireccionImportador3"
   NombreCaja[18] = "TxtResponsableImportador"
   NombreCaja[19] = "TxtTelfImportador"
   NombreCaja[20] = "TxtTituloSuceso"


   DescripCaja[0] = "Tipo de Documento"
   DescripCaja[1] = "Términos de Compra"
   DescripCaja[2] = "Aduana de Ingreso"
   DescripCaja[3] = "Medio de Transporte"
   DescripCaja[4] = "País de Origen"
   DescripCaja[5] = "País Proveedor"
   DescripCaja[6] = "País de Embarque"
   DescripCaja[7] = "Puerto de Embarque"
   DescripCaja[8] = "Entregarse En"
   DescripCaja[9] = "Moneda de Transacción"
   DescripCaja[10] = "Nivel Comercial"
   DescripCaja[11] = "Vinculación Comercial"
   DescripCaja[12] = "Vinculación Financiera"
   DescripCaja[13] = "Dirección #1 del Importador"
   DescripCaja[14] = "Ciudad del Importador"
   DescripCaja[15] = "Direccion #2 del Importador"
   DescripCaja[16] = "Email del Importador"
   DescripCaja[17] = "Direccion #3 del Importador"
   DescripCaja[18] = "Responsable del Importador"
   DescripCaja[19] = "Teléfono del Importador"
   DescripCaja[20] = "Título del Suceso"

//////////////////////////////////////////////////////////////////////////////////////////
/***Chequea que el campo contenga un número decimal, si no lo contiene, llena con cero***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberDecCheckNotMandatory (field)
 {
   var valid = ",.0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

//   alert( field.name + ">" + field.value + "<");
   if (field.value.length==0)
     {field.value = "0"
      field.style.backgroundColor= BackColorNormal;
      return true;
      }

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {field.value = "** Sólo se permiten caracteres numéricos para " + Descripcion + ". Intente usando sólo: " + valid;
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }

    field.style.backgroundColor= BackColorNormal;
    return true;

 }

//////////////////////////////////////////////////////////////////////////////////////////
/***Check NumberDec***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberDecCheck (field)
 {
   var valid = ".,0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (field.value.length==0 || field.value == 0 || field.value == 0.00 || field.value == 0.0)
     {field.value = "** " + Descripcion + " es un campo necesario.";
      field.style.backgroundColor= BackColorError;
      return false;
      }

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {field.value = "** " + "Hay caracteres no numéricos en " + Descripcion ;
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }

    field.style.backgroundColor= BackColorNormal;
    return true;

 }

//////////////////////////////////////////////////////////////////////////////////////////
/***Check NumberDec***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberDecCheckCustomMessage (field, message)
 {
   var valid = ".,0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (field.value.length==0 || field.value == 0 || field.value == 0.00 || field.value == 0.0)
     {field.value = "** " + Descripcion + message;
      field.style.backgroundColor= BackColorError;
      return false;
      }

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {field.value = "** " + "Hay caracteres no numéricos en " + Descripcion ;
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }

    field.style.backgroundColor= BackColorNormal;
    return true;

 }


//////////////////////////////////////////////////////////////////////////////////////////
/***Check NumberDec***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberCheckMaxChar (field, max)
 {
   var valid = "0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {field.value = "** Hay caracteres no numéricos en " + Descripcion + ". Los caracteres válidos son: " + valid;
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }


   if (field.value.length > max)
     {field.value = "** " + Descripcion + " no debe tener más de " + max + " caracteres.";
      field.style.backgroundColor= BackColorError;
      return false;
      }

    field.style.backgroundColor= BackColorNormal;
    return true;

 }



//////////////////////////////////////////////////////////////////////////////////////////
/***Check NumberDec***/
//////////////////////////////////////////////////////////////////////////////////////////
function EmptyNumberCheckMaxChar (field, max)
 {
   var valid = "0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {field.value = "** Hay caracteres no numéricos en " + Descripcion + ". Los caracteres válidos son: " + valid;
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }


   if (field.value.length > max)
     {field.value = "** " + Descripcion + " no debe tener más de " + max + " caracteres.";
      field.style.backgroundColor= BackColorError;
      return false;
      }


   if (field.value.length == 0)
     {field.value = "** " + Descripcion + " es un campo necesario.";
      field.style.backgroundColor= BackColorError;
      return false;
      }

    field.style.backgroundColor= BackColorNormal;
    return true;

 }








//////////////////////////////////////////////////////////////////////////////////////////
/***Check NumberDec from Min to Max***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberDecCheckMinMax (field,min,max)
 {
   var valid = ".,0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (NumberDecCheck(field)==false)
      return false;

   if (field.value<min)
     {alert("The entry: " + Descripcion + " must be greater than or equals to " + min);
      field.style.backgroundColor= BackColorError;
      return false;
      }

   if (field.value>max)
     {alert("The entry: " + Descripcion + " must be lower than or equals to " + max);
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;
 
 }

//////////////////////////////////////////////////////////////////////////////////////////
/***Check Number***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberCheck (field)
 {
   var valid = "0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (field.value.length==0)
     {alert(Descripcion + " is a mandatory field.\nPlease try again.");
      field.style.backgroundColor= BackColorError;
      return false;
      }

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {alert("There are non numeric characters on " + Descripcion + "\nPlease retype it using only numbers. Allowed chars are " + valid);
         field.style.backgroundColor= BackColorError;
         return false;
         }
    }

   field.style.backgroundColor= BackColorNormal;
   return true;
 
 }

//////////////////////////////////////////////////////////////////////////////////////////
/***Check Number from Min to Max***/
//////////////////////////////////////////////////////////////////////////////////////////
function NumberCheckMinMax (field,min,max)
 {
   var valid = "0123456789";
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (NumberCheck(field)==false)
      return false;

   if (field.value<min)
     {alert("The entry: " + Descripcion + " must be greater than or equals to " + min);
      field.style.backgroundColor= BackColorError;
      return false;
      }

   if (field.value>max)
     {alert("The entry: " + Descripcion + " must be lower than or equals to " + max);
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;
 
 }

//////////////////////////////////////////////////////////////////////////////////////////
/***Check Empty***/
//////////////////////////////////////////////////////////////////////////////////////////
function EmptyCheck (field)
 {


   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;


   if (field.value=="** " + Descripcion + " es un campo necesario. **************************************")
     {
      return false;
      }


stringTemp = "** Demasiados caracteres en el campo: " + Descripcion ;

   if (field.value.substring(0,40)==stringTemp.substring(0,40))
     {
      return false;
      }


   if (field.value.length==0)
     {field.value = "** " + Descripcion + " es un campo necesario. **************************************";
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;

 }


//////////////////////////////////////////////////////////////////////////////////////////
/***Check Empty***/
//////////////////////////////////////////////////////////////////////////////////////////
function EmptyCheckCustomMessage (field, message)
 {


   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (field.value=="** " + Descripcion + " " + message)
     {
      return false;
      }

stringTemp = "** Demasiados caracteres en el campo: " + Descripcion ;

   if (field.value.substring(0,40)==stringTemp.substring(0,40))
     {
      return false;
      }

   if (field.value.length==0)
     {field.value = "** " + Descripcion + " " + message;
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;

 }




//////////////////////////////////////////////////////////////////////////////////////////
/***Check Empty to Max***/
//////////////////////////////////////////////////////////////////////////////////////////
function EmptyCheckMax(field, max)
 {

   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (EmptyCheck(field)==false)
      return false;

   if (field.value.length>max)
     {
      field.value = "** Demasiados caracteres en el campo: " + Descripcion + "\n El número máximo de caracteres es: " + max + ". **************************************";
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;
 }


//////////////////////////////////////////////////////////////////////////////////////////
/***Check Empty to Max***/
//////////////////////////////////////////////////////////////////////////////////////////
function EmptyCheckMaxCustomMessage(field, max, message)
 {

   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (EmptyCheckCustomMessage(field, message)==false)
      return false;

   if (field.value=="** " + Descripcion + " " + message)
      return false;
      

       if (field.value.length>max)
         {
          field.value = "** Demasiados caracteres en el campo: " + Descripcion + "\n El número máximo de caracteres es: " + max + ". **************************************";
          field.style.backgroundColor= BackColorError;
          return false;
          }
      
   field.style.backgroundColor= BackColorNormal;
   return true;
 }


//////////////////////////////////////////////////////////////////////////////////////////
/***Check SelectDifferent***/
//////////////////////////////////////////////////////////////////////////////////////////
function SelectDifferentCheck(field,text)
{
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;


   if (field.options[field.selectedIndex].value==text)
     {//alert(field.name)
      alert("Por favor escoja un ítem distinto de \"" + field.options[field.selectedIndex].text + "\" para: " + Descripcion );
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;
 
}


//////////////////////////////////////////////////////////////////////////////////////////
//function SelectDifferentCheckNoMessage(field,text)
//////////////////////////////////////////////////////////////////////////////////////////
function SelectDifferentCheckNoMessage(field,text)
{
   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;


   if (field.options[field.selectedIndex].value==text)
     {
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;
 
}




//////////////////////////////////////////////////////////////////////////////////////////
//function CheckMaxNoMessage(field, max)
//////////////////////////////////////////////////////////////////////////////////////////
function CheckMaxNoMessage(field, max)
{

   var Descripcion;
   var Bandera;

   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

   if (field.value.length>max)
     {
      field.value = "** Demasiados caracteres en el campo: " + Descripcion + "\n El número máximo de caracteres es: " + max + ". **************************************";
      field.style.backgroundColor= BackColorError;
      return false;
      }

   field.style.backgroundColor= BackColorNormal;
   return true;

}


//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function noFocus(pObjeto) {
        if (document.all)
         	pObjeto.blur();
}

//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function redcol(pObjeto) {
	pObjeto.style.color = "#ff0000";
}

//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function blucol(pObjeto) {
	pObjeto.style.color = "#0000ff";
}


//////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////
function CheckDate(field)
{
        Bandera=1;
        strDia = ""
        strMes = ""
        strAnio = ""
        var j=0;
   var valid = "/0123456789";

        if (field.value.length == 0)
           return true;


   Bandera=0;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

   if (Bandera==0)
      Descripcion=field.name;

        Bandera=1;

   for (var i=0; i < field.value.length; i++)
   {temp = "" + field.value.substring(i, i+1);
       if (valid.indexOf(temp) == "-1")
        {
         alert(Descripcion + " debe tener el formato \'dd/mm/aaaa\' " + "\nPor favor intentelo nuevamente usando sólo los caracteres: " + valid);
         field.style.backgroundColor= BackColorError;
         return false;

         }
    }

        if (field.value.length <= 10)
          {
             for (j=0; j<10; j++)
               {
                 if (field.value.charAt(j)=="/")
                     {Bandera=Bandera+1;
                      j=j+1
                      }
                  switch (Bandera)
                    {
                     case 1:
                          strDia = strDia + field.value.charAt(j);
                         break;
                     case 2:
                          strMes = strMes + field.value.charAt(j);
                         break;
                     case 3:
                          strAnio = strAnio + field.value.charAt(j);
                         break;
                     default:
                         alert(Descripcion + " debe tener el formato \'dd/mm/aaaa\' " + "\nPor favor intentelo nuevamente usando sólo los caracteres: " + valid);
                         field.style.backgroundColor= BackColorError;
                         return false;
                         break;
                    }
                }
           }
        else
          {
             alert(Descripcion + " debe tener el formato \'dd/mm/aaaa\' " + "\nPor favor intentelo nuevamente usando sólo los caracteres: " + valid);
             field.style.backgroundColor= BackColorError;
             return false;
           }

      if ( Bandera > 3 || isNaN(parseInt(strDia))  || isNaN(parseInt(strMes)) || isNaN(parseInt(strAnio)) ) 
          {
            alert(Descripcion + " debe tener el formato \'dd/mm/aaaa\' " + "\nPor favor intentelo nuevamente usando sólo los caracteres: " + valid);
            field.style.backgroundColor= BackColorError;
            return false;
           }

      if ( parseInt(strDia) > 31 || parseInt(strMes) >12 || strAnio.length != 4 ) 
          {
            alert(Descripcion + " debe tener el formato \'dd/mm/aaaa\' " + "\nPor favor intentelo nuevamente usando sólo los caracteres: " + valid);
            field.style.backgroundColor= BackColorError;
            return false;
           }


      if (strDia.length == 1 )
           strDia = "0" + strDia;

      if (strMes.length == 1 )
           strMes = "0" + strMes;

      field.value = strDia + "/" + strMes + "/" + strAnio;

      field.style.backgroundColor= BackColorNormal;
      return true;
}



/*
function revisarFechas() {
	var objFechaDocumento, objFechaEmbarque;
	
	objFechaDocumento = document.forms[0].TxtFechaDocumento;
	objFechaEmbarque = document.forms[0].TxtFechaEmbarque;

	if((objFechaDocumento.value != '') && 
		((objFechaDocumento.value.length < 10) || (objFechaDocumento.value.charAt(2) != '/') 
			|| (objFechaDocumento.value.charAt(5) != '/') || isNaN(parseInt(objFechaDocumento.value.substr(0, 2)))
			|| isNaN(parseInt(objFechaDocumento.value.substr(3, 2))) || isNaN(parseInt(objFechaDocumento.value.substr(6, 4)))
		))
	{
		alert('Debe ingresar una Fecha de Emisión inicial con el formato \'dd/mm/aaaa\'.');
		objFechaDocumento.focus();
		return false;
	}

	if((objFechaEmbarque.value != '') && 
		((objFechaEmbarque.value.length < 10) || (objFechaEmbarque.value.charAt(2) != '/') 
			|| (objFechaEmbarque.value.charAt(5) != '/') || isNaN(parseInt(objFechaEmbarque.value.substr(0, 2)))
			|| isNaN(parseInt(objFechaEmbarque.value.substr(3, 2))) || isNaN(parseInt(objFechaEmbarque.value.substr(6, 4)))
		))
	{
		alert('Debe ingresar una Fecha de Emisión final con el formato \'dd/mm/aaaa\'.');
		objFechaEmbarque.focus();
		return false;
	}
	
	return true;
}


*/

/***JHON ORELLANA***/



function emailCheck (field) {

   emailStr = field.value;

   for (i=0; i < MAXCAJAS; i++)
     { if (field.name==NombreCaja[i])
         { Descripcion = DescripCaja[i];
           i=500;
           Bandera=1;
          }
      }

/* The following pattern is used to check if the entered e-mail address
   fits the user@domain format.  It also is used to separate the username
   from the domain. */
var emailPat=/^(.+)@(.+)$/
/* The following string represents the pattern for matching all special
   characters.  We don't want to allow special characters in the address. 
   These characters include ( ) < > @ , ; : \ " . [ ]    */
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
/* The following string represents the range of characters allowed in a 
   username or domainname.  It really states which chars aren't allowed. */
var validChars="\[^\\s" + specialChars + "\]"
/* The following pattern applies if the "user" is a quoted string (in
   which case, there are no rules about which characters are allowed
   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
   is a legal e-mail address. */
var quotedUser="(\"[^\"]*\")"
/* The following pattern applies for domains that are IP addresses,
   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
   e-mail address. NOTE: The square brackets are required. */
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
/* The following string represents an atom (basically a series of
   non-special characters.) */
var atom=validChars + '+'
/* The following string represents one word in the typical username.
   For example, in john.doe@somewhere.com, john and doe are words.
   Basically, a word is either an atom or quoted string. */
var word="(" + atom + "|" + quotedUser + ")"
// The following pattern describes the structure of the user
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
/* The following pattern describes the structure of a normal symbolic
   domain, as opposed to ipDomainPat, shown above. */
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")


/* Finally, let's start trying to figure out if the supplied address is
   valid. */

/* Begin with the coarse pattern to simply break up user@domain into
   different pieces that are easy to analyze. */
var matchArray=emailStr.match(emailPat)
if (matchArray==null) {
  /* Too many/few @'s or something; basically, this address doesn't
     even fit the general mould of a valid e-mail address. */
	alert("El campo " + Descripcion + " es incorrecto, verifique el símbolo @ y puntos")
	return false
}
var user=matchArray[1]
var domain=matchArray[2]

// See if "user" is valid 
if (user.match(userPat)==null) {
    // user is not valid
    alert("El bloque correspondiente al nombre de usuario en el campo " + Descripcion + " no es válido.")
    return false
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
   host name) make sure the IP address is valid. */
var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
    // this is an IP address
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("El número IP de destino en el campo " + Descripcion + " no es válido!")
		return false
	    }
    }
    field.style.backgroundColor= BackColorNormal;
    return true
}

// Domain is symbolic name
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("El nombre de dominio en el campo " + Descripcion + " no es válido.")
    return false
}

/* domain name seems valid, but now make sure that it ends in a
   three-letter word (like com, edu, gov) or a two-letter word,
   representing country (uk, nl), and that there's a hostname preceding 
   the domain or country. */

/* Now we need to break up the domain to get a count of how many atoms
   it consists of. */
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {
   // the address must end in a two letter or three letter word.
   alert("El campo " + Descripcion + " debe terminar en un bloque de tres letras correspondiente al tipo de dominio, o dos letras que identifiquen el país.")
   return false
}

// Make sure there's a host name preceding the domain.
if (len<2) {
   var errStr = "El campo " + Descripcion + " es inválido, falta el nombre del host.!"
   alert(errStr)
   return false
}

// If we've gotten this far, everything's valid!
field.style.backgroundColor= BackColorNormal;
return true;
}






