//
// Advanced-Fecha 1.0 SADIEL.SA
//
// fecha de creación: 29/6/2001 última revisión: 16/8/2001
//
// Miguel A. Moreno Martín
//
// Descripción: Librería que implementa en javascript la creación de campos de fecha
// Funciona en iexplore y NS
//
// Uso: en aquel lugar que necesitemos el campo de fecha, pondremos una llamada a la función
// 'genera_campo_fecha'
// Interfaz:
// genera_campo_fecha(formulario, campo, fecha, primero, numanyos, permitenulo)
//
// donde: formulario - nombre del formulario donde irá el campo de fecha
// campo - nombre con que queremos recoger el campo fecha en el formulario
// fecha - fecha de inicialización en formato: dd/mm/yyyy"
// primero - primer año que queremos que aparezca en la lista desplegable
// numanyos - número de años que queremos que aparezcan en la lista desplegable
// permitenulo - (opcional) a true si queremos que la fecha pueda ser nula
//
// Requisitos:
//
// - Los podremos declarar más de un campo fecha con el mismo nombre, no funcionarán
// - Los nombres de campo que sean el de un campo fecha con el sufijo "_dia" "_mes" o "_anyo" no deben emplearse pues
// son utilizados en esta impplemantación y fallaría.
//
// NOTA en este documento la salida del campo será en foto. fecha MySQL, yyyy-MM-dd
//
// Modificación: José Antonio González Seco (JAGS) Fecha: 26/02/2003
// -- Añadida la posiblidad de cambiar los nombres de los meses: parámetro opcional 'nombresDeMeses'
// -- Añadida la posiblidad de configurar un código adicional a ejecutar al cambiar la selección de cualquiera de las 3 casillas: parámetro opcional 'codigoCambio'
// ***************************************************************************************
var nombremeses= new Array();
nombremeses[0]="Ninguna";
nombremeses[1]="Enero";
nombremeses[2]="Febrero";
nombremeses[3]="Marzo";
nombremeses[4]="Abril";
nombremeses[5]="Mayo";
nombremeses[6]="Junio";
nombremeses[7]="Julio";
nombremeses[8]="Agosto";
nombremeses[9]="Septiembre";
nombremeses[10]="Octubre";
nombremeses[11]="Noviembre";
nombremeses[12]="Diciembre";
var diasmes= new Array();
diasmes[0]=31;
diasmes[1]=31;
diasmes[2]=28;
diasmes[3]=31;
diasmes[4]=30;
diasmes[5]=31;
diasmes[6]=30;
diasmes[7]=31;
diasmes[8]=31;
diasmes[9]=30;
diasmes[10]=31;
diasmes[11]=30;
diasmes[12]=31;
function diasen(mes, anyo)
{
mes = parseInt(mes);
anyo=parseInt(anyo);
if (mes!=2)
return diasmes[mes];
else
return (((anyo%4==0&&!anyo%100==0)||anyo%400==0)?29:28)
}
function escribemeses(_formulario, _campo, permiteninguna, codigoCambio)
{
window.document.write("");
}
function escribeanyos(_formulario, _campo, primero,numanyos, permiteninguna, codigoCambio)
{
window.document.write("");
}
function escribedias(_formulario, _campo, mes, anyo, permiteninguna, codigoCambio)
{
cadena = "");
}
function controlafecha(formul, cam, campo, permiteninguna)
{
selectdia=eval("window.document." + formul + "." + cam + "_dia");
selectmes=eval("window.document." + formul + "." + cam + "_mes");
selectanyo=eval("window.document." + formul + "." + cam + "_anyo");
campohidden= eval("window.document." + formul + "." + cam);
// Comprobamos si el cambio requiere reajuste de los combos
dia = selectdia.options[selectdia.selectedIndex].value;
mes = selectmes.options[selectmes.selectedIndex].value;
anyo = selectanyo.options[selectanyo.selectedIndex].value;
// alert(dia + "-" + mes + "-" + anyo)
if (dia=="-1" || mes=="-1" || anyo=="-1")
{
switch (campo)
{
case "dia": if (dia=="-1") si=false; else si=true;
break;
case "mes": if(mes=="-1") si=false; else si=true;
break;
case "anyo": if (anyo=="-1") si=false; else si=true;
break;
default: alert("que haces aqui?");
break;
}
if (!si)
{
dia = "-1" ;
mes = "-1";
anyo = "-1" ;
campohidden.value = "";
selectdia.options[0].selected=true;
selectmes.options[0].selected=true;
selectanyo.options[0].selected=true;
}
else {
if(selectdia.options[0].selected)
selectdia.options[1].selected=true;
if(selectmes.options[0].selected)
selectmes.options[1].selected=true;
if(selectanyo.options[0].selected)
selectanyo.options[1].selected=true;
dia = selectdia.options[selectdia.selectedIndex].value;
mes = selectmes.options[selectmes.selectedIndex].value;
anyo = selectanyo.options[selectanyo.selectedIndex].value;
/* controlafecha(formul, cam, permiteninguna) */
}
}
else
{
// si el número de dias para el mes es correcto no hay problema
nuevonumdias = diasen(mes,anyo);
if(permiteninguna){
nuevonumdias+=1;
}
antiguonumdias = selectdia.length;
if(antiguonumdias < nuevonumdias) // reajuste
{
selectdia.length = nuevonumdias;
var i;
if (permiteninguna==true)
i=2;
else i=1;
for( i; i<= nuevonumdias; i++)
{
if (permiteninguna==true)
value=i-1;
else value=i;
selectdia.options[i-1].text=value;
selectdia.options[i-1].value=value;
}
}
else if (antiguonumdias > nuevonumdias){
selectdia.length = nuevonumdias;
if(permiteninguna==true)
dia++;
if (dia > nuevonumdias)
selectdia.options[selectdia.length - 1].selected = true ;
}
else {
// no necesitamos cambiar nada
}
// lo único que puede haber cambiado desde que miramos los select fue el dia...
dia = selectdia.options[selectdia.selectedIndex].value;
// Formato MySql
// aquí fallaba
//campohidden.value = dia + "/" + mes + "/" + anyo;
}
if(dia!=-1)
campohidden.value = dia + "/" + mes + "/" + anyo;
}
function escribehidden(_campo,_value)
{
window.document.write("");
}
function genera_campo_fecha(formulario, campo, fecha, primero, numanyos, permiteninguna, nombresDeMeses, codigoCambio)
{
// JAGS - I
//nombresDeMeses es un parámetro opcional, de establecerlo, su valor es un array con los nombres que se dará a los meses. Por defecto, toman sus nombres clásicos en español
if (nombresDeMeses != null)
{
for (var i = 0; i dFecMayor)
return false;
else
return true;
}
function validaFecha( ){
var dFechaMenor = document.all.FechaEntrada.value;
var dFechaMayor = document.all.FechaSalida.value;
if(comparaFecha( formato,dFechaMenor,dFechaMayor) == true)
return true;
else
return false;
}
function validaFechaActual( ){
var dFechaMayor = document.all.FechaEntrada.value;
var mydate=new Date();
var year=mydate.getYear();
if (year < 1000)
year+=1900;
var day=mydate.getDay();
var month=mydate.getMonth()+1;
if (month<10)
month="0"+month;
var daym=mydate.getDate();
if (daym<10)
daym="0"+daym;
var dFechaMenor = daym +"/"+ month +"/"+ year;
if(comparaFecha2( formato,dFechaMenor,dFechaMayor) == true){
return true;
}
else{
return false;
}
}