// Función para abrir una ventana nueva.
function openWindow(url, name, rs, w, h) {
  var resize = "";
  if (rs) {
    resize = "resizable,";
  }
  popupWin = window.open(url, name, 'scrollbars,menubar,' + resize + 'width=' + w + ',height=' + h);
}
// Función para determinar si una cadena está vacía.
function estavacio(s)
{
	for (var i= 0; i<s.length;i++)
	{
		var c=s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
	}
	return true;
}

// Esta función realiza la validación de la forma. *del libro*
function valida(forma)
{
	var msg;
	var campos_vacios="";
	var errores="";
	var nombre="";
	// pasa por todos los campos de la forma , buscando los campos "text" y 
	// "textarea" que no tengan definida la propiedad "optional" . 
	//Verifica aquellos que están en blanco y forma una lista de ellos.
	//también verifica los campos con un máximo y un mínimo y vallida que sean
	//números.
	for (var ni=0; ni<forma.length;ni++)
	{
		var e=forma.elements[ni];
//	alert(e.name);
//	alert(e.value);
//	alert(e.type);
//	alert(e.optional);
//	alert(e.style.display);
//	        if (e.style.display=="") { //LMT 19/10/00
		if (!e.nomreal)
				nombre=e.name;
			else
				nombre=e.nomreal;
				
		if ((e.type=="select-one")&&(!e.optional))
			if (e.options[0].selected)  
				errores += "- Seleccione una opción para el campo "+nombre+".\n";
			
		if ( ( (e.type=="text")||(e.type=="textarea")|| (e.type=="password") ) )// && !(e.optional))
		{
			if (!e.nomreal)
				nombre=e.name;
			else
				nombre=e.nomreal;
				
			// primero verifica si el campo está vacío
			if ((e.optional==false) &&( (e.value == null) || (e.value == "") || (estavacio(e.value)) ))
			{
				campos_vacios +="\n        "+nombre; //iba .name
				continue;
			}
				
			if (e.formato&&(!estavacio(e.value)))
			{ //validar el formato del texto
				if ((e.formato=='X')||(e.formato=='A'))
					e.value=AMayusculas(e.value);
					 
				if ((e.formato=='X') && !Val_Tipo(e.value,e.formato))
				{
					errores += "- El campo "+nombre+" debe ser capturado sin (Enter) o caracteres especiales ejemplo:#$%&/!¡'()=?.\n";
				}
				
				if ((e.formato == 'A') && !Val_Tipo(e.value,e.formato))
					errores += "- El campo "+nombre+" tiene caracteres no válidos.\n";
					
				if ((e.formato == 'email')) 
				   if (!Val_Tipo(e.value,e.formato))
					  errores += "- El campo "+nombre+" tiene caracteres no válidos.\n";
				   else
					  if (!emailvalido(e.value))
					    errores += "- El correo electrónico no  es válido.\n";
				
			}
			//ahora verifica los campos que debe ser numéricos
			if (e.formato=="9") e.numeric=true;
			//if ((e.numeric) && (!Val_Tipo(e.value,"9")) &&(!estavacio(e.value)) && e.value!=null) // LMT 17/10/00  08/11/00 agregar (!estavacio(e.value)), e.value!=null  23/07/01 se inhibe
			//LMT 13/07/01 se agrega  && !Val_Tipo(e.value,"d") 
			if (e.formato=="d") e.numeric=true;
			if ((e.numeric==true)&&(e.formato!="d")) e.formato="9";
			if ((e.numeric) && (!Val_Tipo(e.value,e.formato)) && (!estavacio(e.value)) && e.value!=null) // LMT 17/10/00  08/11/00 agregar (!estavacio(e.value)), e.value!=null  //23/07/01 cambia "9" por e.formato para validartipo 
				{
					errores += "- El campo "+nombre+" debe ser un número."; //iba .name
					errores += "\n";
				}

			if ( ( (e.numeric) || (e.min !=null) || (e.max!=null) )&&(!estavacio(e.value)) && e.value!=null) //LMT 08/11/00 agregado e.value!= null
			{
				var v = parseFloat(e.value);
				if ( isNaN(v) || ((e.min!=null) && (v < e.min)) || ((e.max !=null) && (v>e.max)))
				{
					errores += "- El campo "+nombre+" debe ser un número,"; //iba .name
					if (e.min != null)
						errores += " mayor que " + e.min;
					if (e.max != null && e.min != null)
						errores += " y menor que " + e.max;
					else if (e.max != null)
							errores += " menor que " + e.max;
					errores += "\n";
				}
			}
			if (e.fecha&&(!estavacio(e.value))) //validar la fecha. LAP 07/07/2000.
			{
				if (!Val_Tipo(e.value,"D"))	
					errores += "- El campo "+nombre+" tiene caracteres no válidos.\n";
				else
					if (!Val_Fecha(e,e.formato))	
						errores += "- El campo "+nombre+" no es válido.\n";
					else //validar rango de la fecha. LMT 15/12/2000
						if (!Val_rango_fecha(e))
						errores += "- El campo "+nombre+" debe encontrarse en el rango entre "+e.min+" y "+e.max+".\n";
			}
			
			if (e.hora&&(!estavacio(e.value))) //validar la hora. LAP 11/07/2000.
			{
				if (!Val_Tipo(e.value,"H"))	
					errores += "- El campo "+nombre+" tiene caracteres no válidos.\n";
				else
					if (e.valida2) //LMT
					{
					if (!Val_hora2(e.value,e.formato))	
						errores += "- El campo "+nombre+" no es válido.\n";
					}
					else
					{
					if (!Val_hora(e.value,e.formato))	
						errores += "- El campo "+nombre+" no es válido.\n";

					}
				
			}			
					

		}

//		} //LMT 19/10/00

	}
	// Si hubo algún error, desplegará los mensajes y regresará falso .
	
	if (!campos_vacios && !errores) return true;
	
	msg  = "____________________________________________________\n\n";
	msg += "La forma no fue enviada debido a los siguientes errores.\n";
	msg += "Por favor, corrijalos y vuelva a enviarla.\n";
	msg += "____________________________________________________\n\n";
	
	if (campos_vacios)
		{
		msg += "- Los siguientes campos obligatorios están vacios:" + campos_vacios +"\n";
		if (errores) msg += "\n";
		}
		msg += errores;
		alert (msg);
		return false;
}

function Val_Tipo(ValorEnt, Tipo)
{

   posibles = new String();
   posibles = '';
   if (Tipo == '9')  posibles = "0123456789";
   if (Tipo == 'X')  posibles = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ 0123456789-+/'#&.,;:ÁÉÍÓÚ%"; //LMT 28/03/2001 se agrega % &
   if (Tipo == 'x')  posibles = "abcdefghijklmnñopqrstuvwxyz 0123456789-+/'#&.,;:áéíóú%"; //LMT 28/03/2001 se agrega % &
   if (Tipo == "Xx") posibles = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ 0123456789-+/'#&.,;:ÁÉÍÓÚ"+"abcdefghijklmnñopqrstuvwxyzáéíóú%"; //LMT 28/03/2001 se agrega % &
   if (Tipo == 'D')  posibles = "0123456789/-";
   if (Tipo == 'H')  posibles = "0123456789:"; //LMT
   if (Tipo == 'd')  posibles = "0123456789."; //LMT 13/07/01
   if (Tipo == 'A')  posibles = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ";
   if (Tipo == 'a')  posibles = "abcdefghijklmnñopqrstuvwxyzáéíóú";	   
   if (Tipo =='email') posibles = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_abcdefghijklmnopqrstuvwxyz.@";
   var tamano=0;
   todoOK = new Boolean();
   carOK = new Boolean();
   
   cadena = new String(ValorEnt); 
   todoOK = true;
   if (cadena.length == 0) 
      {
         todoOK= false;
       }
   else
   {
    i=0;

   	while (i< cadena.length && todoOK)
   	{
      carOK = false;
      j=0;
      while (j < posibles.length && !carOK)
      {
         if (cadena.charAt(i) == posibles.charAt(j))
         {
            carOK = true;
         }
         j++;
      };
      if (!carOK) 
         {
           todoOK = false;
         }
      i++      
    }
   }
return todoOK;
}

function Val_rango_fecha(e)
{
	var lRegreso=new Boolean();
	lRegreso=false;	
	if ((e.max!=null) && (e.min!=null))
	{
		f_min=new String(e.min);
		f_max=new String(e.max);
		fe_min=f_min.split("/");
		fe_max=f_max.split("/");
		fec_min = new Date(anhoCompleto(parseInt(fe_min[2])),fe_min[1],fe_min[0]);
		fec_max = new Date(anhoCompleto(parseInt(fe_max[2])),fe_max[1],fe_max[0]);
		f_real = new String(e.value);
		fe_real = f_real.split("/");
		fec_real = new Date(anhoCompleto(parseInt(fe_real[2])),fe_real[1],fe_real[0]);
		//alert(fec_real);
		//alert(fec_min);
		//alert(fec_max);
		if (fec_real <= fec_max && fec_real >= fec_min)
			lRegreso=true;	
	}
	else
		lRegreso=true;
	return (lRegreso);
}

function Val_Fecha(dFecha, cFormato)
{
	var lRegreso=new Boolean();
	var cFecha=new String(dFecha.value);
	var nDia=0;
	var nAnho=0;
	var nMes=0;
	var a;
	lRegreso=true;
	
	//if ((dFecha.optional=false)&&!estavacio(dFecha)) LMT17/10/00
	if (!estavacio(dFecha.value))
	{
		a=cFecha.split("/");
		
		if (cFormato=="dd/mm/aaaa")
		{
			nAnho=anhoCompleto(parseInt(a[2]));
			nDia=a[0];
			nMes=a[1];
		}	
		if (cFormato=="aaaa/mm/dd")
		{
			nAnho=anhoCompleto(parseInt(a[0]));
			nDia=a[2];
			nMes=a[1];
		}
		
		dFecRes=new Date (nAnho,(nMes-1),nDia);
		
		if (nAnho>2200)
			lRegreso=false;
			
		if (lRegreso)
			if (dFecRes.getDate()!=nDia) lRegreso=false;
		
		if (lRegreso)
			if ( dFecRes.getMonth() != (nMes-1) ) lRegreso=false;
		
		if (lRegreso)
			if ( anhoCompleto(dFecRes.getYear()) !=nAnho ) lRegreso=false;
	}
	return (lRegreso);
}

function anhoCompleto (nAnho1)
{
var nAnho=nAnho1;
if (nAnho<50) nAnho+=2000;
if (nAnho<1000) nAnho += 1900;
return nAnho;
}

function volteafecha(dOFecha)
{
	var dFecha=new String(dOFecha.value);
	var cFormato=new String(dOFecha.formato);
	var lRegreso=new Boolean();
	var cFecha=new String(dFecha);
	var nDia=0;
	var nAnho=0;
	var nMes=0;
	var a;
	lRegreso=true;
	
	if (!estavacio(cFecha))
	{
		a=cFecha.split("/");
		
		if (cFormato=="dd/mm/aaaa")
		{
			nAnho=anhoCompleto(parseInt(a[2]));
			nDia=a[0];
			nMes=a[1];
		}	
		if (cFormato=="aaaa/mm/dd")
		{
			nAnho=anhoCompleto(parseInt(a[0]));
			nDia=a[2];
			nMes=a[1];
		}
		
		dFecRes=nAnho+"/"+nMes+"/"+nDia;
		dOFecha.value="";
		dOFecha.value=dFecRes;
	}
	return (true);
}

function verifcad(campo)
{
 var lRegresa=new Boolean;
 var cCadena=new String (campo.value);
 var error=new String;
 var nombre="";
 error="";
 lRegresa=true;
 
if (!campo.nomreal)
	nombre=campo.name;
else
	nombre=campo.nomreal;
	
 if (! Val_Tipo(cCadena,'Xx') )
 	error += "Introdujo caracteres no permitidos en "+nombre;
 else
 	if (cCadena.length!=9)
		error += "La cadena "+nombre+" debe tener 9 caracteres.";
 if (error)
 	{
	lRegresa=false;
 	alert (error);
	}
	
 return lRegresa;
}

function valMayusculas(campo)
	{
	var lRegresa=new Boolean;
	lRegresa=true
	if (!Val_Tipo(campo.value,'X'))
		{
			alert ("El campo "+campo.nomreal+" debe ser capturado en mayusculas");
			lRegresa=false;
		}
	return lRegresa;
	}
	

function Val_hora(hHora, cFormato)
{
	var lRegreso=new Boolean();
	var cHora=new String (hHora);
	var nPPunto;
	var nHr;
	var nMin;
	var cHr;
	var cMin;
	
	lRegreso=true;
	nPPunto=cHora.indexOf(":");
	
	if (nPPunto==-1)
		lRegreso=false;
	else
		{
		nHr=cHora.substring(0,nPPunto);
		cHr=new String(cHora.substring(0,nPPunto));
		nMin=cHora.substring(nPPunto+1,cHora.length);
		cMin=new String(cHora.substring(nPPunto+1,cHora.length));
		
				
		if ((cHr.length<1)||(cHr.length>2)) 
		  lRegreso=false;
		if (cMin.length!=2)
		  lRegreso=false;	
		if (nHr<0 || nHr>23)
			lRegreso=false;
		if (nMin<0 || nMin>59)
			lRegreso=false;
		}
		
	return (lRegreso);
}

function Val_hora2(hHora, cFormato)
{//LMT
	var lRegreso=new Boolean();
	var cHora=new String (hHora);
	var nPPunto;
	var nHr;
	var nMin;
	var cHr;
	var cMin;
	
	lRegreso=true;
	nPPunto=cHora.indexOf(":");
	
	if (nPPunto==-1)
		lRegreso=false;
	else
		{
		nHr=cHora.substring(0,nPPunto);
		cHr=new String(cHora.substring(0,nPPunto));
		nMin=cHora.substring(nPPunto+1,cHora.length);
		cMin=new String(cHora.substring(nPPunto+1,cHora.length));
		
				
		if ((cHr.length<1)||(cHr.length>2)) 
		  lRegreso=false;
		if (cMin.length!=2)
		  lRegreso=false;	
		if (nHr<0 || nHr>24)
			lRegreso=false;
		if (nMin<0 || nMin>59)
			lRegreso=false;
		if (nHr==24 && nMin!=0 )
			lRegreso=false;
		}
		
	return (lRegreso);
}

function AbreVentana(cdir)
{
window.open(cdir,'Ayuda','width=530, height=330');
return;
}

function Limpiamenu()
{
parent.frames['menu'].location="../HTML/menuc_bco.html";
return true;
}

function emailvalido(email)
{
var cEmail= new String(email);
var nArroba,nPunto;
nArroba=cEmail.indexOf("@");

if ((nArroba==-1)||(nArroba==(cEmail.length-1)))
	return false;
	
nPunto = cEmail.indexOf(".",nArroba-1)
if ((nPunto==-1)||(nPunto==(cEmail.length-1)))
	return false;

if (Math.abs(nPunto-nArroba)==1)
	return false;
	
return true;
}

function AMayusculas(cCad)
{
	
	var cCad1 = new String(cCad);
	var cReg = cCad1.toUpperCase();
	return cReg;
}
function activa(o)
	{
	desmarcaop();  
	
	o.style.backgroundColor='orange';
	o.style.color='white';
	desact.oA=o;		
		
	return true;
	}
function desact(o)
	{
	
	o.style.backgroundColor='';
	o.style.color='';
	
	return true;	 
	}
function marcaop(id)
	{
	if (!(desact.oA==null))
	{
		marcaop.oM=id;
		desact.oA.style.backgroundColor="teal"; 
	}
	return true;
	}
function desmarcaop()
	{
	if (!(desact.oA==null))
		{
		desact.oA.style.backgroundColor="";
		}
	return true;
	}

function limitatamano(Campo, limitemax)
 {//LMT
if (Campo.value.length > limitemax) //Limitarlo
Campo.value = Campo.value.substring(0, limitemax);
}
function verifica_necesarios(forma)
 {//LMT 05/09/2001
 var vacios=0;
	for (var ni=0; ni<forma.length;ni++)
	{
		var e=forma.elements[ni];
		//alert(e.name);
		//alert(e.value);
		if (e.name == "V_CON_TIPO_CONTRATO" || e.name == "V_CON_EXPED" || e.name == "V_CON_ANIO_EXPED" 
		|| e.name == "V_RIN_RAMA" || e.name == "V_ENT_CLAVE" || e.name == "V_CON_TEMPORALIDAD" 
		|| e.name == "V_CON_FPRIMER_DEP")   
		{
			if ( (e.value == null) || (e.value == "") || (estavacio(e.value)) )
			{
				vacios+=1;
			}		
			else
			{
				if ((e.name=="V_CON_TIPO_CONTRATO" && e.value=="SEL") ||
				 	(e.name=="V_RIN_RAMA" && e.value=="SELEC") ||
					(e.name=="V_ENT_CLAVE" && e.value==1))
				{
					vacios+=1;
				}	
			}
		}
		//alert(vacios);
	};
	if ((vacios > 0) && (vacios < 7))
	{
		msg  = "____________________________________________________\n\n";
		msg += "La forma no fue enviada debido a los siguientes errores.\n";
		msg += "Por favor, corrijalos y vuelva a enviarla.\n";
		msg += "____________________________________________________\n\n";
		msg += "Los siguientes campos deben tener todos un valor,\n";
		msg += "o bien, todos deben estar vacíos.\n";
		//msg += "Tipo contrato - "+forma.elements["V_CON_TIPO_CONTRATO"].value+"\n";
		//msg += "Expediente - "+forma.elements["V_CON_EXPED"].value+"\n";
		//msg += "Año - "+forma.elements["V_CON_ANIO_EXPED"].value+"\n";
		//msg += "Rama de actividad - "+forma.elements["V_RIN_RAMA"].value+"\n";
		//msg += "Entidad Federativa - "+forma.elements["V_ENT_CLAVE"].value+"\n";
		//msg += "Temporalidad - "+forma.elements["V_CON_TEMPORALIDAD"].value+"\n";
		//msg += "Fecha de primer depósito - "+forma.elements["V_CON_FPRIMER_DEP"].value+"\n";
		msg += "Tipo contrato\n";
		msg += "Expediente\n";
		msg += "Año\n";
		msg += "Rama de actividad\n";
		msg += "Entidad Federativa\n";
		msg += "Temporalidad\n";
		msg += "Fecha de primer depósito\n";
		alert (msg);
		return false;
	}
}
<!-- GABCER GABCER GABCER  (FUNCION PARA VALIDAR LA FECHA,ADICINAR LAS DIAGONALES Y COMPLETAR EL AÑO A CUATRO DIGITOS) -->

<!-- Original:  Richard Gorremans (RichardG@spiritwolfx.com) -->
<!-- Web Site:  http://www.spiritwolfx.com -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->
<!-- Begin
// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.
var vDateType = 3; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // Set the error code to a default of zero
if(navigator.appName == "Netscape") {
if (navigator.appVersion < "5") {
isNav4 = true;
isNav5 = false;
}
else
if (navigator.appVersion > "4") {
isNav4 = false;
isNav5 = true;
   }
}
else {
isIE4 = true;
}
function DateFormat(vDateName, vDateValue,    e,    dateCheck, dateType) {
vDateType = dateType;
// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck 
// True  = Verify that the vDateValue is a valid date
// False = Format values being entered into vDateValue only
// vDateType
// 1 = mm/dd/yyyy
// 2 = yyyy/mm/dd
// 3 = dd/mm/yyyy
//Enter a tilde sign for the first number and you can check the variable information.
if (vDateValue == "~") {
alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
vDateName.value = "";
vDateName.focus();
return true;
}
var whichCode = (window.Event) ? e.which : e.keyCode;
// Check to see if a seperator is already present.
// bypass the date if a seperator is present and the length greater than 8
if (vDateValue.length > 8 && isNav4) {
if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
return true;
}
//Eliminate all the ASCII codes that are not valid
var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
if (alphaCheck.indexOf(vDateValue) >= 1) {
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else {
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
   }
}
if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
return false;
else {
//Create numeric string values for 0123456789/
//The codes provided include both keyboard and keypad values
var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
if (strCheck.indexOf(whichCode) != -1) {
if (isNav4) {
if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
alert("Fecha inválida\nVerifique");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
if (vDateValue.length == 6 && dateCheck) {
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
//Turn a two digit year into a 4 digit year
if (mYear.length == 2 && vYearType == 4) {
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
}
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Fecha inválida\nVerifique");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
return true;
}
else {
// Reformat the date for validation and set date type to a 1
if (vDateValue.length >= 8  && dateCheck) {
if (vDateType == 1) // mmddyyyy
{
var mDay = vDateName.value.substr(2,2);
var mMonth = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
}
if (vDateType == 2) // yyyymmdd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(4,2);
var mDay = vDateName.value.substr(6,2);
vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
}
if (vDateType == 3) // ddmmyyyy
{
var mMonth = vDateName.value.substr(2,2);
var mDay = vDateName.value.substr(0,2);
var mYear = vDateName.value.substr(4,4)
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
}
//Create a temporary variable for storing the DateType and change
//the DateType to a 1 for validation.
var vDateTypeTemp = vDateType;
vDateType = 1;
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (!dateValid(vDateValueCheck)) {
alert("Fecha inválida\nVerifique");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Fecha inválida\nVerifique");
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
         }
      }
   }
}
else {
// Non isNav Check
if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
alert("Fecha inválida\nVerifique");
vDateName.value = "";
vDateName.focus();
return true;
}
// Reformat date to format that can be validated. mm/dd/yyyy
if (vDateValue.length >= 8 && dateCheck) {
// Additional date formats can be entered here and parsed out to
// a valid date format that the validation routine will recognize.
if (vDateType == 1) // mm/dd/yyyy
{
var mMonth = vDateName.value.substr(0,2);
var mDay = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vDateType == 2) // yyyy/mm/dd
{
var mYear = vDateName.value.substr(0,4)
var mMonth = vDateName.value.substr(5,2);
var mDay = vDateName.value.substr(8,2);
}
if (vDateType == 3) // dd/mm/yyyy
{
var mDay = vDateName.value.substr(0,2);
var mMonth = vDateName.value.substr(3,2);
var mYear = vDateName.value.substr(6,4)
}
if (vYearLength == 4) {
if (mYear.length < 4) {
alert("Fecha inválida\nVerifique");
vDateName.value = "";
vDateName.focus();
return true;
   }
}
// Create temp. variable for storing the current vDateType
var vDateTypeTemp = vDateType;
// Change vDateType to a 1 for standard date format for validation
// Type will be changed back when validation is completed.
vDateType = 1;
// Store reformatted date to new variable for validation.
var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
if (mYear.length == 2 && vYearType == 4 && dateCheck) {
//Turn a two digit year into a 4 digit year
var mToday = new Date();
//If the year is greater than 30 years from now use 19, otherwise use 20
var checkYear = mToday.getFullYear() + 30; 
var mCheckYear = '20' + mYear;
if (mCheckYear >= checkYear)
mYear = '19' + mYear;
else
mYear = '20' + mYear;
vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
// Store the new value back to the field.  This function will
// not work with date type of 2 since the year is entered first.
if (vDateTypeTemp == 1) // mm/dd/yyyy
vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
if (vDateTypeTemp == 3) // dd/mm/yyyy
vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
} 
if (!dateValid(vDateValueCheck)) {
alert("Fecha inválida\nVerifique");
vDateType = vDateTypeTemp;
vDateName.value = "";
vDateName.focus();
return true;
}
vDateType = vDateTypeTemp;
return true;
}
else {
if (vDateType == 1) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
if (vDateType == 2) {
if (vDateValue.length == 4) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 7) {
vDateName.value = vDateValue+strSeperator;
   }
} 
if (vDateType == 3) {
if (vDateValue.length == 2) {
vDateName.value = vDateValue+strSeperator;
}
if (vDateValue.length == 5) {
vDateName.value = vDateValue+strSeperator;
   }
}
return true;
   }
}
if (vDateValue.length == 10&& dateCheck) {
if (!dateValid(vDateName)) {
// Un-comment the next line of code for debugging the dateValid() function error messages
//alert(err);  
alert("Fecha inválida\nVerifique");
vDateName.focus();
vDateName.select();
   }
}
return false;
}
else {
// If the value is not in the string return the string minus the last
// key entered.
if (isNav4) {
vDateName.value = "";
vDateName.focus();
vDateName.select();
return false;
}
else
{
vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
return false;
         }
      }
   }
}
function dateValid(objName) {
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
// var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
//strDate = datefield.value;
strDate = objName;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
}
//Adjustment for short years entered
if (strYear.length == 2) {
strYear = '20' + strYear;
}
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
   }
}
else {
if (intday > 28) {
err = 10;
return false;
      }
   }
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
//  End -->

<!--  GABCER GABCER GABCER-->

function AbreVentana22(cdir)
{
window.open(cdir,'Ayuda');
return;
}
<!--  GABCER GABCER GABCER  (TERMINA FUNCION PARA VALIDAR LA FECHA,ADICINAR LAS DIAGONALES Y COMPLETAR EL AÑO A CUATRO DIGITOS)-->

