// ---------------------------------------------------------------------- //
//                                VARIABLES                               //
// ---------------------------------------------------------------------- //

// Esta variable indica si est� bien dejar las casillas
// en blanco como regla general
var defaultEmptyOK = false

// Esta variable indica si se debe verificar la presencia de comillas
// u otros s�mbolos extra�os en un campo, por omisi�n no, porque
// siempre crea problemas con las bases de datos o programas CGI
var checkNiceness = true;

// listas de caracteres
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz�������"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ������"
var whitespace = " \t\n\r";

// caracteres admitidos en nos de telefono
var phoneChars = "()-+ ";

// ---------------------------------------------------------------------- //
//                     TEXTOS PARA LOS MENSAJES                           //
// ---------------------------------------------------------------------- //

// m abrevia "missing" (faltante)
var mMessage = "Error: no puede dejar este espacio vacio"

// p abrevia "prompt"
var pPrompt = "Error: ";
var pAlphanumeric = "ingrese un texto que contenga solo letras y/o numeros";
var pAlphabetic   = "ingrese un texto que contenga solo letras";
var pInteger = "ingrese un numero entero";
var pNumber = "ingrese un numero";
var pPhoneNumber = "ingrese un n�mero de tel�fono";
var pEmail = "ingrese una direcci�n de correo electr�nico v�lida";
var pName = "ingrese un texto que contenga solo letras, numeros o espacios";
var pNice = "no puede utilizar comillas aqui";


// ---------------------------------------------------------------------- //
//                  CODIGO PARA FUNCIONES BASICAS                         //
// ---------------------------------------------------------------------- //


// s es vacio
function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

// s es vacio o solo caracteres de espacio
function isWhitespace (s)
{   var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        // si el caracter en que estoy no aparece en whitespace,
        // entonces retornar falso
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

// Quita todos los caracteres que que estan en "bag" del string "s" s.
function stripCharsInBag (s, bag)
{   var i;
    var returnString = "";

    // Buscar por el string, si el caracter no esta en "bag",
    // agregarlo a returnString

    for (i = 0; i < s.length; i++)
    {   var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

// Lo contrario, quitar todos los caracteres que no estan en "bag" de "s"
function stripCharsNotInBag (s, bag)
{   var i;
    var returnString = "";
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }

    return returnString;
}

// Quitar todos los espacios en blanco de un string
function stripWhitespace (s)
{   return stripCharsInBag (s, whitespace)
}

// La rutina siguiente es para cubrir un bug en Netscape
// 2.0.2 - seria mejor usar indexOf, pero si se hace
// asi stripInitialWhitespace() no funcionaria

function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}

// Quita todos los espacios que antecedan al string
function stripInitialWhitespace (s)
{   var i = 0;
    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    return s.substring (i, s.length);
}

// c es una letra del alfabeto espanol
function isLetter (c)
{
    return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
            ( lowercaseLetters.indexOf( c ) != -1 ) )
}

// c es un digito
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

// c es letra o digito
function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

// ---------------------------------------------------------------------- //
//                          NUMEROS                                       //
// ---------------------------------------------------------------------- //

// s es un numero entero (con o sin signo)
function isInteger (s)
{   var i;
    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if( i != 0 ) {
            if (!isDigit(c)) return false;
        } else {
            if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

// s es un numero (entero o flotante, con o sin signo)
function isNumber (s)
{   var i;
    var dotAppeared;
    dotAppeared = false;
    if (isEmpty(s))
       if (isNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isNumber.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else
                if (!isDigit(c)) return false;
        } else {
            if ( c == "." ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else
                if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}


function isAlfanumerico (valor)
{

   var valorBien = "";
   if (valor)
   {
      for (var i=0; i<valor.length; i++){
	  	 var c = valor.charAt(i);
		 if ((isLetter(c) || isDigit(c) ) )
		  		valorBien = valorBien + c;
	  }

    }
	return valorBien;
}


// s tiene solo letras
function isAlfabetico (valor)
{   var i;

   var valorBien = "";
   if (valor)
   {
      for (var i=0; i<valor.length; i++){
	  	 var c = valor.charAt(i);
		 if (isLetter(c) )
		  		valorBien = valorBien + c;
	  }

    }
	return valorBien;
}


function comprueba_extension2(campo,extensiones_permitidas){
   var ids="tagFileExtension_"+campo.name;

   mierror = "";
   if (campo.value) {
      //recupero la extensión de este nombre de archivo
      extension = (campo.value.substring(campo.value.lastIndexOf("."))).toLowerCase();
      //alert (extension);
      //compruebo si la extensión está entre las permitidas
      permitida = false;
      for (var i = 0; i < extensiones_permitidas.length; i++) {
         if (extensiones_permitidas[i] == extension) {
         permitida = true;
         break;
         }
      }
      if (!permitida) {
         mierror = "Sólo se pueden subir archivos con extensiones: " + extensiones_permitidas.join();
      	 ChangeClass(mierror,ids,'textFileExtensionMsgError');
      	 return false;
      }else{
       	 ChangeClass(mierror,ids,'textFileExtensionMsg');
         return true;
       }
   }

}

//FUNCIONES PARA FORMATEAR MONEDA
function formatNumber2(campo) {
	//campo.value=SoloNumeros(campo.value);
	if (campo) {
		num = campo;
		num = num.toString().replace(/\$|\,/g,'');
		if (isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if (cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		campo=(((sign)?'':'-') + '$' + num + '.' + cents);
		return campo;
	}
}


function formatNumber(campo) {
	if (campo) {
		num = campo.value;
		num = num.toString().replace(/\$|\,/g,'');
		if (isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if (cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		campo.value=(((sign)?'':'-') + '$' + num + '.' + cents);
	}
}

function formatNumberInt(field) {
	if (field) {
		num = field.value;
        num = num.toString().replace(/\$|\./g,'');
        if (isNaN(num))
               num = "0";
        sign = (num == (num = Math.abs(num)));
        num = Math.floor(num*100+0.50000000001);
        cents = num%100;
        num = Math.floor(num/100).toString();
        if (cents<10)
        cents = "0" + cents;
        for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = '$'+num.substring(0,num.length-(4*i+3))+'.'+num.substring(num.length-(4*i+3));
        field.value = num;
	}
}

function unformatNumber(num) {
	num=num.toString();
    return num.replace(/([^0-9\.\-])/g,'')*1;
}


///
/* FUNCIONES PARA LA DIRECCION
*/
function actualizarCampos() {
   window.opener.document.form1.DIRECCION.value = ShowDir();
   window.close();
}

var direccion = new Array();
var z=0;

function BorrarUltimo() {
 direccion.pop();
 z--;
 document.form1.direccionfull.value=ShowDir();
}

function BorrarTodo() {
	z=0;
	direccion=0;
	direccion = new Array();
	document.form1.direccionfull.value=ShowDir();

}


function ShowDir() {
	var dir='';
	for(i=0; i<direccion.length; i++) {
		dir+=direccion[i];
	}
	return dir;
}

var desnom=''
function AddDes(descorta,descripcion,shownom) {

	descripcion=descripcion.replace('_'," ");
	if (document.form1.nombre.style.visibility=='visible' || document.form1.desnombre.style.visibility=='visible') {

	} else {
			if (' '+descorta==direccion[z-1]) {
				alert('No puede seleccionar dos nomenclaturas iguales');
			} else {
				if (shownom==1) {
					visibility('descnombre',descripcion+' con nombre?','visible');
					document.form1.nombre.style.visibility='visible';
					desnom=descripcion;
				}
				direccion[z++]=' '+descorta;
				document.form1.direccionfull.value=ShowDir();
			}
	}
}

function ShowNombre(campo) {
 if (campo=='SI') {

	visibility('descnombrefull','Digite el nombre '+desnom,'visible');
	visibility('descnombre','','hidden');

	document.form1.desnombre.style.visibility='visible';
	document.form1.nombre.style.visibility='hidden';
 } else if (campo=='NO') {
 	document.form1.desnombre.style.visibility='hidden';
	document.form1.nombre.style.visibility='hidden';

	visibility('descnombre','','hidden');
	visibility('descnombrefull','','hidden');
 }
 document.form1.nombre.selectedIndex=0;
}


function visibility(id,msg,visible) {
		var elementos=document.getElementsByTagName("label");
				for(i=0; i<elementos.length; i++) {
					idelements = elementos[i].getAttribute("id");
					if (idelements == id) {
						elementos[i].style.visibility=visible;
						elementos[i].innerHTML=msg;
					}
				}
}

function AddDesNom(campo) {

	if (campo!='') {
		direccion[z++]=' '+campo.toUpperCase();
		document.form1.direccionfull.value=ShowDir();
		visibility('descnombrefull','','hidden');
		document.form1.desnombre.style.visibility='hidden';
		document.form1.desnombre.value='';

	}
}

function Add(campo) {
	if (document.form1.nombre.style.visibility=='visible' || document.form1.desnombre.style.visibility=='visible') {

	} else {
			if (isNaN(direccion[z-1])==true) {
				direccion[z++]=' '+campo;
			} else {
				direccion[z++]=campo;
				}
			document.form1.direccionfull.value=ShowDir();
		}
}
function AddNom(campo) {
	if (document.form1.nombre.style.visibility=='visible' || document.form1.desnombre.style.visibility=='visible') {

	} else {
						direccion[z++]=' '+campo;
						document.form1.direccionfull.value=ShowDir();
		}
}

/////////////////FIN FUNCIONES PARA LA DIRECCI?N



function check_fechas(fecha1,fecha2)  {
  var control,control1;
   control=check_fecha(fecha1.value);
   if (control==false) {
	     return false;
	 } else {
		   		control1=check_fecha(fecha2.value);
		   }
	if (control1==false) {
	     return false;
	 } else {
		 control2=Comparar_Fecha(fecha1.value,fecha2.value);
		 }

  if (control2==false) {
	     return false;
	 } else return true;
 }

function Comparar_Fecha(fecha1,fecha2) {
var campo1,campo2, cadena,cadena1,control;
var Error1 = "El a?o inicial debe ser menor o igual que el final.\n"
	       + "               Rev?selo, por favor.                  ";
var Error2 = "El mes inicial debe ser menor o igual que el final.\n"
	       + "               Rev?selo, por favor.                  ";
var Error3= "El d?a inicial debe ser menor que el final.\n"
	      + "           Rev?selo, por favor.              ";
var Dia1, Mes1, Anyo1, Dia2, Mes2, Anyo2;
campo1=fecha1;
campo2=fecha2;

Dia1=campo1.substring(8,10);
Mes1=campo1.substring(5,7);
Anyo1=campo1.substring(0,4);
Dia2=campo2.substring(8,10);
Mes2=campo2.substring(5,7);
Anyo2=campo2.substring(0,4);

 if (Anyo1>Anyo2) {
  	  alert(Error1);  return false;
   }

   if (Anyo1==Anyo2) {
	 if (Mes1>Mes2) {
		    alert(Error2); return false;
		   } else if (Mes1==Mes2) {
	               if (Dia1>Dia2) {
		    		alert(Error3); return false;
				   } else {}
			}
	}

}


function check_fecha(fecha) {
var campo, cadena,cadena1,control;
var Error = "La fecha introducida es inv?lida.\n"
          + "       Rev?sela, por favor.        ";
var Error1 = "El rango de fecha no puede ser menor de 01/08/2005.\n"
           + "        &oacute; es incorrecta. Rev?selo, por favor.        ";
var Dia, Mes, Anyo, Dia_Mes_Mal = false;
campo=fecha;
cadena="Fecha incorrecta\n"
     + " Revise por favor ";
Error="La fecha es incorrecta\n"
    + "    Revise por favor    ";
Dia=campo.substring(8,10);
Mes=campo.substring(5,7);
Anyo=campo.substring(0,4);
//Dia = parseInt(Dia);
//Mes = parseInt(Mes);
//Anyo = parseInt(Anyo);

cadena1="Fecha incorrecta. Solo n&uacute;meros\n"
           + "        Revise sus datos";
control=1;
if (campo == "")  {
      alert(Error);  return false; control=0;
	  }
if ( campo.length !=10 || campo.substring(4,5) != "-" || campo.substring(7,8) != "-" ) {
	   alert(cadena); return false; control=0;
	   } else if (isNaN(Anyo)==true || isNaN(Mes)==true || isNaN(Dia)==true) {
					   alert(cadena1); return false; control=0;
	          } else if (Dia<=0 || Mes<=0 || Anyo<=0 || Mes>12 || Mes<=0) {
   			        alert(Error1); return false; control=0;
			  	  } else if (control==1) {
					/* Los meses de Enero, Marzo, Mayo, Julio, Agosto,  Octubre y Diciembre tienen 31 d?as */
					if (( Mes == 1 || Mes == 3 || Mes == 5 || Mes == 7 || Mes == 10 || Mes == 12 || Mes == 8 )  && Dia > 31 )
							  Dia_Mes_Mal = true;

							/* Los meses de Mayo, Junio, Septiembre  y Noviembre tienen 30 d?as */

							if ( (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11)  && Dia > 30  )
							 Dia_Mes_Mal = true;

						/* Febrero tiene 28 &oacute; 29 d?as, dependiendo de si es bisiesto o no. Un a?o es
						bisiesto si es m&uacute;ltiplo de 4 pero no de  100 salvo que sea m&uacute;ltiplo de 400.
						Por ejemplo, 12 y 400  son bisiestos, pero 100 y 700 no. */
        if ( Mes == 2 && ( Dia > 29 || ( Dia == 29 && ( (Anyo % 400 != 0) && ((Anyo % 4 != 0) ||
		         (Anyo % 100 == 0) ) ) ) ) )  Dia_Mes_Mal = true;


							   if (Dia_Mes_Mal)  {
								  alert(Error);
								  return false;
								  }
								 } else return true;///FIN DE MI FUNCI?N
}



function OpenMunicipio(Url,Titulo,Width,Height,Top,Left)
{

   var styleStr = 'width='+Width+',height='+Height+', top='+Top+',left='+Left+',scrollbars=NO,titlebar=no,menubar=no,toolbar=no,location=no,CloseForm("Yes")=no;>';
   window.name = "main";
   window.open(Url,Titulo, styleStr);
}



function SoloNumeros(caja)
{
   var cajaBien = "";
   if (caja)
   {
      for (var i=0; i<caja.length; i++)
         if (isNaN(caja.charAt(i))==false)
            cajaBien = cajaBien + caja.charAt(i);
    }
	return cajaBien;
}


function SoloNumerosMoneda(campo)
{
   var cajaBien = "";
 //  alert(caja);
 var caja=campo.value;
   if (caja)
   {
      for (var i=0; i<caja.length; i++)
         if (isNaN(caja.charAt(i))==false || caja.charAt(i)=='.' || caja.charAt(i)==',' || caja.charAt(i)=='$')
            cajaBien = cajaBien + caja.charAt(i);
    }
	campo.value=cajaBien;
}



function ChangeClass(msg,id,classname) {
	 var elementos=document.getElementsByTagName("span");
	for (i=0;i<elementos.length;i++) {
			idelements = elementos[i].getAttribute("id");
		if (idelements == id) {
			elementos[i].className=classname;
			elementos[i].innerHTML=msg;
		}
	}
}


function CheckOption(id,msg) {

 var objeto=document.getElementsByName(id+'[]');
 var con=0;
 var ids="tagOptionChecked_"+id;

 for (i=0;i<objeto.length;i++) {
		if (objeto[i].checked) {
		  con++;
		}
	}

	if (con==0) {
		ChangeClass(msg,ids,'textOptionMsgError');
		return false;
	} else {
			ChangeClass(msg,ids,'textOptionMsg');
			return true;
	}

}

function CheckInputArray(id,msg) {
 var objeto=document.getElementsByName(id+'[]');
 var con=0;
 var ids="tagOptionChecked_"+id;
 for (i=0;i<objeto.length;i++) {
		if (objeto[i].value!='') {
		  con++;
		}
	}

	if (con==0) {
		ChangeClass(msg,ids,'textOptionMsgError');
		return false;
	} else {
			ChangeClass(msg,ids,'textOptionMsg');
			return true;
	}

}


function IsEmpty(campo,msg) {
	var id="tagRequered_"+campo.name;
	var id2="tagPass_"+campo.name;
	if (campo.value=='') {
				ChangeClass(msg,id,'textRequiredMsgError');
				return false;
		} else {
				ChangeClass(msg,id,'textRequiredMsg');

				ChangeClass(msg,id2,'textPassMsg');
				return true;
			}
}



function IsNoEmptyOption(id,msg) {

 var objeto=document.getElementById(id);
 var con=0;
 var ids="IsNoEmptyOption";
 alert(objeto);
 /*for (i=0;i<objeto.length;i++) {
		if (objeto[i].value!='') {
		  con++;
		}
	}
	*/
	if (con==0) {
		ChangeClass(msg,ids,'textIsNoEmptyOptionMsgError');
		return false;
	} else {
			ChangeClass(msg,ids,'textIsNoEmptyOption');
			return true;
	}

}
function IsEmptySelect(campo,msg) {
	var id="tagRequered_"+campo.name;

	if (campo.options[campo.selectedIndex].value==0) {
				ChangeClass(msg,id,'textRequiredMsgError');
				return false;
		} else {
				ChangeClass(msg,id,'textRequiredMsg');
				return true;
			}
}

function IsRange(campo,msg,valmin,valmax) {
	var id="tag2_"+campo.name;
	if (valmax>0) {
			if (unformatNumber(campo.value)<valmin || unformatNumber(campo.value)>valmax) {
					ChangeClass(msg,id,'textRequiredMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textfieldMaxValueMsg');
					return true;
				}
	} else if (valmin>0) {
			if (unformatNumber(campo.value)<valmin) {
					ChangeClass(msg,id,'textRequiredMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textfieldMaxValueMsg');
					return true;
				}
	}

}

function IsLengthMin(campo,msg,valmin) {
	var id="tagLengthMin_"+campo.name;
	var id2="tagPass_"+campo.name;

			if (campo.value.length<valmin) {
					ChangeClass(msg,id,'textLengthMinMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textLengthMinMsg');
					ChangeClass(msg,id2,'textPassMsg');
					return true;
				}


}

function IsPassEqual(pass1,pass2,msg) {
	var id="tagPass_"+pass1.name;
	var id2="tagPass_"+pass2.name;

			if (pass1.value!=pass2.value) {
					ChangeClass(msg,id,'textPassMsgError');
					ChangeClass(msg,id2,'textPassMsgError');
					pass1.value='';
					pass2.value='';
					return false;
			} else {
					ChangeClass(msg,id,'textPassMsg');
					ChangeClass(msg,id2,'textPassMsg');
					return true;
				}

}

function IsRangeDate(campo,msg,fechainicial,fechafinal,patron,mask) {
	var id="tagDateRange_"+campo.name;

	if (fechainicial!='' && fechainicial!='') {
			if (comparar_2_fechas(fechainicial,campo.value,patron,mask)==false || comparar_2_fechas(campo.value,fechafinal,patron,mask)==false) {
					ChangeClass(msg,id,'textDateMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textDateMsg');
					return true;
				}
	} else if (fechainicial!='') {
			if (comparar_2_fechas(fechainicial,campo.value,patron,mask)==false) {
					ChangeClass(msg,id,'textDateMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textDateMsg');
					return true;
				}
	} else if (fechafinal!='') {
			if (comparar_2_fechas(campo.value,fechafinal,patron,mask)==false) {
					ChangeClass(msg,id,'textDateMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textDateMsg');
					return true;
				}
	}

}


function IsCheckDate(campo,msg,patron,mask) {
	var id="tagDate_"+campo.name;

	if (check_fecha_2(campo.value,patron,mask)==false) {
					ChangeClass(msg,id,'textDateMsgError');
					return false;
			} else {
					ChangeClass(msg,id,'textDateMsg');
					return true;
				}
}
function comparar_2_fechas(fecha1,fecha2,patron,mask) {

var Dia1, Mes1, Anyo1, Dia2, Mes2, Anyo2;
campo1=fecha1;
campo2=fecha2;

Dia1=campo1.substring(8,10);
Mes1=campo1.substring(5,7);
Anyo1=campo1.substring(0,4);
Dia2=campo2.substring(8,10);
Mes2=campo2.substring(5,7);
Anyo2=campo2.substring(0,4);
 if (Anyo1>Anyo2) {
  	  return false;
   }

   if (Anyo1==Anyo2) {
	 if (Mes1>Mes2) {
		    return false;
		   } else if (Mes1==Mes2) {
	               if (Dia1>Dia2) {
		    		return false;
				   } else {
				   		return true; }
			}
	}

}

function check_fecha_2(fecha,patron,mask) {
var campo, cadena,cadena1,control;
var Dia, Mes, Anyo, Dia_Mes_Mal = false;
campo=fecha;

Dia=campo.substring(8,10);
Mes=campo.substring(5,7);
Anyo=campo.substring(0,4);

control=1;
if (campo == "")  {
       return false; control=0;
	  }
if ( campo.length !=10 || campo.substring(4,5) != patron || campo.substring(7,8) != patron ) {
	   return false; control=0;
	   } else if (isNaN(Anyo)==true || isNaN(Mes)==true || isNaN(Dia)==true) {
					   return false; control=0;
	          } else if (Dia<=0 || Mes<=0 || Anyo<=0 || Mes>12 || Mes<=0) {
   			        return false; control=0;
			  	  } else if (control==1) {
					/* Los meses de Enero, Marzo, Mayo, Julio, Agosto,  Octubre y Diciembre tienen 31 d?as */
					if (( Mes == 1 || Mes == 3 || Mes == 5 || Mes == 7 || Mes == 10 || Mes == 12 || Mes == 8 )  && Dia > 31 )
							  Dia_Mes_Mal = true;

							/* Los meses de Mayo, Junio, Septiembre  y Noviembre tienen 30 d?as */

							if ( (Mes == 4 || Mes == 6 || Mes == 9 || Mes == 11)  && Dia > 30  )
							 Dia_Mes_Mal = true;

						/* Febrero tiene 28 &oacute; 29 d?as, dependiendo de si es bisiesto o no. Un a?o es
						bisiesto si es m&uacute;ltiplo de 4 pero no de  100 salvo que sea m&uacute;ltiplo de 400.
						Por ejemplo, 12 y 400  son bisiestos, pero 100 y 700 no. */
        if ( Mes == 2 && ( Dia > 29 || ( Dia == 29 && ( (Anyo % 400 != 0) && ((Anyo % 4 != 0) ||
		         (Anyo % 100 == 0) ) ) ) ) )  Dia_Mes_Mal = true;


							   if (Dia_Mes_Mal)  {

								  return false;
								  }
								 } else return true;///FIN DE MI FUNCI?N
}






function checkMail(campo,msg) {
 var id="tagMail_"+campo.name;
 var email=campo.value;
 if (email!='') {
						if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)) {
							ChangeClass(msg,id,'textMailMsg'); return true;
						 } else {
						 	ChangeClass(msg,id,'textMailMsgError'); return false;
						 }


  } else {
	  	ChangeClass(msg,id,'textMailMsg');return true;
  		}
}

/**************************************************************
M?scara de entrada. Script creado por Tunait! (21/12/2004)
Si quieres usar este script en tu sitio eres libre de hacerlo con la condici&oacute;n de que permanezcan intactas estas l?neas, osea, los cr?ditos.
No autorizo a distribu?r el c&oacute;digo en sitios de script sin previa autorizaci&oacute;n
Si quieres distribu?rlo, por favor, contacta conmigo.
Ver condiciones de uso en http://javascript.tunait.com/
tunait@yahoo.com
****************************************************************/
var patron = new Array(2,2,4);
var patron2 = new Array(4,2,2);
var patron3 = new Array(2,2,2);
var patron4 = new Array(2);
var patron5 = new Array(4,2);
var patron6 = new Array(2,2);

function mascara(d,pat,sep,nums) {

switch(pat) {
		case 'yyyymm':
			pat=patron5;
		break;
		case 'ddmmyyyy':
			pat=patron;
		break;
		case 'yyyymmdd':
			pat=patron2;
		break;
		case 'ddmmyy':
			pat=patron3;
		break;
		case '(##) ######':
			pat=patron4;
		break;
		case 'hhmm':
			pat=patron6;
		break;
	}
if (d.valant != d.value) {

	val = d.value
	largo = val.length
	val = val.split(sep)
	val2 = ''
	for(r=0;r<val.length;r++) {
		val2 += val[r]
	}
	if (nums) {
		for(z=0;z<val2.length;z++) {
			if (isNaN(val2.charAt(z))) {
				letra = new RegExp(val2.charAt(z),"g")
				val2 = val2.replace(letra,"")
			}
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<pat.length; s++) {
		val3[s] = val2.substring(0,pat[s])
		val2 = val2.substr(pat[s])
	}
	for(q=0;q<val3.length; q++) {
		if (q ==0) {
			val = val3[q]
		}
		else {
			if (val3[q] != "") {
				val += sep + val3[q]
				}
		}
	}
	d.value = val
	d.valant = val
	}
}


/////OCULTACIONES DE COMBOS DE FORMULARIOS
function ocultaCombo(obj,obj2,obj3,valor) {
var objeto=document.getElementById(obj);
var objeto2=document.getElementById(obj2);
var objeto3=document.getElementById(obj3);

	if (objeto.value==valor) {
		objeto2.style.visibility='visible';
   		objeto3.style.visibility='visible';
	} else if (objeto.value!=valor) {
		objeto2.value=0;
		objeto2.style.visibility='hidden';
		objeto3.style.visibility='hidden';

	}

}

function ocultaCombo1(obj,obj2,valor) {
var objeto=document.getElementById(obj);
var objeto2=document.getElementById(obj2);

	if (objeto.value==valor) {
		objeto2.style.visibility='visible';
	} else if (objeto.value!=valor) {
		objeto2.value=0;
		objeto2.style.visibility='hidden';
	}

}

function habilitaCombo(obj,obj2,valor) {
var objeto=document.getElementById(obj);
var objeto2=document.getElementById(obj2);

	if (objeto.value==valor) {
		objeto2.disabled=true;
		objeto2.value=0;
		objeto2.value='';
	} else {
		objeto2.disabled=false;
	}

}

function habilitaCombos(obj,obj2,valor) {
var objeto=document.getElementById(obj);
var objeto2=document.getElementById(obj2);

	if (objeto.value==valor) {
		objeto2.disabled=false;
	} else {
		objeto2.disabled=true;
		objeto2.value=0;
		objeto2.value='';
	}

}


function habilitaCombosVarios(obj,obj2,valores) {
var objeto  = document.getElementById(obj);
var objeto2 = document.getElementById(obj2);
var valores = valores.split(',');
var existe	= false;
	for(r=0;r<valores.length;r++) {
		if (objeto.value==valores[r]) {
			existe = true;
		}
	}
	if (existe == true) {
			objeto2.disabled=false;
		} else {
			objeto2.disabled=true;
			objeto2.value=0;
			objeto2.value='';
		}
}

function soloHabilita(obj,habilita) {
var objeto  = document.getElementById(obj);

	if (habilita == true) {
			objeto.disabled=false;
		} else {
			objeto.disabled=true;
			objeto.value=0;
			objeto.value='';
		}
}

function habilitaCombo1(obj,obj2,valor1,valor2) {
var objeto=document.getElementById(obj);
var objeto2=document.getElementById(obj2);

	if (objeto.value==valor1 || objeto.value==valor2) {
		objeto2.disabled=true;
		objeto2.value=0;
	} else {
		objeto2.disabled=false;
	}

}