// JavaScript Document
// JavaScript Comprovació de fecha

   var aMonth = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//Dies de cada mes
   
   function padNmb(nStr, nLen, sChr){
    var sRes = String(nStr);
    for (var i = 0; i < nLen - String(nStr).length; i++)
     sRes = sChr + sRes;
    return sRes;
   }

   function makeDateFormat(nDay, nMonth, nYear){
    var sRes;
    sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 4, "0");
    return sRes;
   }
   
   function addOpt(oCntrl, iPos, sTxt, sVal){
    var selOpcion = new Option(sTxt, sVal);
    oCntrl.options.add(selOpcion, iPos);
   }

   function lastDayOfMonth(nMonth, nYear){
   if ((nMonth == 2) && (nYear % 4 == 0)){aMonth[1]=29;}//Si es un any Bixest o ke
    if ((nMonth == 2) && (nYear % 4 == 0)){
     aMonth[1]=29;
	 return 29;
    }else{
     return aMonth[nMonth - 1];}
   }

   function cambia(nCambiado){
    var nAno;
    var nMes;
    with (document.frm){
     nAno = parseInt(ano.options[ano.selectedIndex].value);
	 nAno2 = parseInt(ano2.options[ano2.selectedIndex].value);
     switch (nCambiado){
      case 0:
       llenaMes(mes, nAno);
       break;
      case 1:
       nMes = parseInt(mes.options[mes.selectedIndex].value);
	   nMes2 = parseInt(mes2.options[mes2.selectedIndex].value);
	   nDia = parseInt(dia.options[dia.selectedIndex].value);
       llenaDia(dia, nAno, nMes);
	  if (nDia<aMonth[nMes]){dia.value=nDia;}else{dia.value=aMonth[nMes];}
	   //window.status=nDia;
       break;
	  case 2:
       nMes2 = parseInt(mes2.options[mes2.selectedIndex].value);
	   nDia = parseInt(dia2.options[dia2.selectedIndex].value);
       llenaDia(dia2, nAno2, nMes2);
  	    if (nDia<aMonth[nMes2]){dia2.value=nDia;}else{dia2.value=aMonth[nMes2];}
	   //window.status=nDia;
	   case 3:
	   nAno=parseInt(anotarjeta.options[anotarjeta.selectedIndex].value);
	   llenaMes(mestarjeta,anotarjeta);
       break;
     }

		 
    }
   }

   function llenaAno(oAno,nAno){
    var hoy = new Date();
    var ini = nAno;
    for (var i = ini; i <= hoy.getYear()+15; i++){
												  addOpt(oAno, eval(i - ini + 1), String(i), String(i));
												  }
												 // window.status= "20"+ eval(i - ini + 1);
   }

   function llenaMes(oMes, nAno){
    var hoy = new Date();
    var nFin = 11;
    while (oMes.length > 0) oMes.remove(0);
    for (var i = 0; i <= 11; i++)
     addOpt(oMes, i+1, aMeses[i], String(i));
   }

   function llenaDia(oDia, nAno, nMes){
    var hoy = new Date();
    var nFin = lastDayOfMonth(nMes + 1, nAno);
    while (oDia.length > 0) oDia.remove(0);
    for (var i = 1; i <= aMonth[nMes]; i++){addOpt(oDia, i + 1, String(i), String(i));}
   }
   
   function sincroniza(){
		with(document.frm){
		nDia = parseInt(dia.options[dia.selectedIndex].value);
		nDia2 = parseInt(dia2.options[dia2.selectedIndex].value);
		nAno = parseInt(ano.options[ano.selectedIndex].value);
		nAno2 = parseInt(ano2.options[ano2.selectedIndex].value);
		nMes = parseInt(mes.options[mes.selectedIndex].value);
		nMes2 = parseInt(mes2.options[mes2.selectedIndex].value);

			 //reconstruccio llista d´anys // sempre es igual o superior al de entrada
			 nElem=ano2.length;
 			 for (x=0;x<nElem;x++){ano2.remove(0);}
			 llenaAno(ano2,nAno);
			 if (nAno<nAno2){ano2.value=nAno2;}

			 //reconstrucció llista de mesos // sempre es igual o superior al de entrada
			 if (nMes>=nMes2){
			 	llenaMes(mes2,nAno2)
				if (parseInt(nAno)==parseInt(nAno2)){for (x=nMes;x>0;x--){mes2.remove(0);}}
				mes2.value=nMes2;
				//(nAno!=nAno2)
				//window.status="mes 1 "+ nAno +"-"+ nAno2;
			 }
			 else if(nMes<nMes2){
	 			 	llenaMes(mes2,nAno2);
					if (parseInt(nAno)==parseInt(nAno2)){for (x=nMes;x>0;x--){mes2.remove(0);}}
					mes2.value=nMes2;
					//window.status="mes 2";
			 }
			
			if ((nMes>nMes2)&&(nAno==nAno2)){
				//alert("aaaaaaaaaaaaaaaaaa");
			 	llenaMes(mes2,nAno2);
				for (x=nMes;x>0;x--){mes2.remove(0);}
				mes2.value=mes2.options[0].value;
				}

			 //reconstrucció llista de dies // sempre es superior al de entrada
			 llenaDia(dia2,nAno2,nMes2);
				 if ((nDia>=nDia2)&&(nMes==nMes2)&&(nAno==nAno2)){
					//nDia=nDia+1;
					if (nDia<=aMonth[nMes2]){
							for (x=nDia;x>0;x--){dia2.remove(0);}
							//alert("a");
							if(dia2.value==""){
							mes2.remove(0);
							llenaDia(dia2,nAno2,nMes2);							
							}
							
							if ((mes.value==11)&&(ano.value==ano2.value)&&(dia2.value==1)){
							//llenaAno(ano2,nAno);
							ano2.remove(0);
							ano2.value=ano2.options[0].value;
							llenaMes(mes2,nAno2)
							//mes2.value=0;
							}
							
						}
						else{
							for (x=nDia;x>0;x--){dia2.remove(0);}
							alert("a");
							window.status="A "+ nDia +"-"+ aMonth[nMes2];
						}
					//dia2.value=eval(dia2.options[0].value);
					//window.status="dia 1";
				}
				else if((nMes!=nMes2)&&(nAno==nAno2)){
				nDia=nDia+1;
				if (nMes==nMes2){for (x=nDia;x>1;x--){dia2.remove(0);}}
				//if (nDia2<nDia-1){dia2.value=nDia2;}else{dia2.value=dia2.options[0].value;}
				dia2.value=nDia2
					//window.status="dia 2";
				}
				else {
				nDia=nDia+1;
				//if (nMes==nMes2){for (x=nDia;x>1;x--){dia2.remove(0);}}
				if (nDia==nDia2){for (x=nDia;x>1;x--){dia2.remove(0);}}
				if ((nDia2>nDia)&&(nAno<nAno2)){dia2.value=nDia2;}else{dia2.value=dia2.options[0].value;}
					//window.status="dia 3";
				}
			 
			 				  
			//else
			 //}
		 }
		 
   }


/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONS PER OPERAR AMB DATES (SUMA-RESTA)
  function finMes(nMes, nAno){
   return aMonth[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
  }

////

   
  function incDate(sFec0){
   var nDia = parseInt(sFec0.substr(0, 2), 10);
   var nMes = parseInt(sFec0.substr(3, 2), 10);
   var nAno = parseInt(sFec0.substr(6, 4), 10);
   nDia += 1;
   if (nDia > finMes(nMes, nAno)){
    nDia = 1;
    nMes += 1;
    if (nMes == 13){
     nMes = 1;
     nAno += 1;
    }
   }
   return makeDateFormat(nDia, nMes, nAno);
  }

  function decDate(sFec0){
   var nDia = Number(sFec0.substr(0, 2));
   var nMes = Number(sFec0.substr(3, 2));
   var nAno = Number(sFec0.substr(6, 4));
   nDia -= 1;
   if (nDia == 0){
    nMes -= 1;
    if (nMes == 0){
     nMes = 12;
     nAno -= 1;
    }
    nDia = finMes(nMes, nAno);
   }
   return makeDateFormat(nDia, nMes, nAno);
  }

  function addToDate(sFec0, sInc){
   var nInc = Math.abs(parseInt(sInc));
   var sRes = sFec0;
   if (parseInt(sInc) >= 0)
    for (var i = 0; i < nInc; i++) sRes = incDate(sRes);
   else
    for (var i = 0; i < nInc; i++) sRes = decDate(sRes);
   return sRes;
  }
   
// FI DE FUNCIONS PER OPERAR AMB DATES
/////////////////////////////////////////////////////////////////////////////////////////////




function XTCcal(){//Inicialització de llistes
any_actual=new Date();
llenaAno(document.frm.ano,any_actual.getYear());
llenaAno(document.frm.ano2,any_actual.getYear());
llenaMes(document.frm.mes,document.frm.ano.value);
llenaMes(document.frm.mes2,document.frm.ano2.value);
llenaDia(document.frm.dia,document.frm.ano.value,document.frm.mes.value);
llenaDia(document.frm.dia2,document.frm.ano2.value,document.frm.mes2.value);
llenaAno(document.frm.anotarjeta,any_actual.getYear());
//llenaMes(document.frm.mestarjeta,document.frm.anotarjeta.value);
}

function XTCtest(){
entrada = new Date(ano.value, mes.value, dia.value);
window.status=entrada;
sortida = new Date(ano2.value, mes2.value, dia2.value);
if (sortida<entrada){
alert("La fecha de entrada no puede ser posterior a la de salida.");	
}
}
