var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

function CalGreg2CalJul(sFecha)
{ 
	tFecha = sFecha.split("/");
	
	dia = tFecha[0];
	mes = tFecha[1];
	ano = tFecha[2];

	if (dia.charAt(0) == "0") dia = dia.charAt(1);
	if (mes.charAt(0) == "0") mes = mes.charAt(1);

	dia = parseInt(dia);
	mes = parseInt(mes);
	ano = parseInt(ano);
	
	a = Math.floor((14 - mes) / 12);
	y = ano + 4800 - a;
	m = mes + 12 * a - 3;
	k = dia + Math.floor((153 * m + 2) / 5);
	k = k + y * 365 + Math.floor(y / 4);
	k = k - 32083;

	return k;
}

function comprueba_dias_entre(fecha1,fecha2,destino){
	dias = dias_entre(fecha1.value,fecha2.value);
	if(dias>=0){
		if(destino) destino.value = dias;
	}else{
		alert("La fecha final no puede ser anterior a la fecha inicial");
		if(destino){
			destino.value = 1;
			fecha2.value = addToDate(fecha1.value,1);
		}
	}
}

function comprueba_fecha_inicio_fecha_fin(fecha1,fecha2,campo){
  miFechaInicio = document.getElementById(fecha1);
  miFechaFin = document.getElementById(fecha2);
  if ((miFechaInicio.value!='') && (miFechaFin.value!='')){
    dias = dias_entre(miFechaInicio.value,miFechaFin.value);
    if(dias>=0){
      return true;
    }else{
      eval ("alert('La fecha final no puede ser anterior a la fecha inicial en"+campo+"');");
      miFechaInicio.value='';
      miFechaFin.value='';
      return false;
    }
  }
}

function dias_entre(fecha1,fecha2,destino){

	dias = CalGreg2CalJul(fecha2) - CalGreg2CalJul(fecha1);
	
	if(destino) destino.value = dias;
	return dias;

}

function comprueba_fecha_min(fecha,fecha_min_busqueda){
	if(dias_entre(fecha_min_busqueda,fecha.value)<0){
		alert('La fecha inicial no puede ser inferior a '+fecha_min_busqueda);
		fecha.value = fecha_min_busqueda;
		return false;
	}
	return true;
}

function comprueba_fecha_max(fecha,fecha_max_busqueda){
	if(dias_entre(fecha.value,fecha_max_busqueda)<0){
		alert('La fecha final no puede ser posterior a '+fecha_max_busqueda);
		fecha.value = fecha_max_busqueda;
		return false;
	}
	return true;
}

function finMes(nMes, nAno){
	return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
}

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 makeDateFormatMySQL(nDay, nMonth, nYear){
	var sRes;
	sRes = padNmb(nYear, 4, "0") + "-" + padNmb(nMonth, 2, "0") + "-" + padNmb(nDay, 2, "0");
	return sRes;
}

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 incDateMySQL(sFec0){

	var nAno = parseInt(sFec0.substr(0, 4), 10);
	var nMes = parseInt(sFec0.substr(5, 2), 10);
	var nDia = parseInt(sFec0.substr(8, 2), 10);
	nDia += 1;
	if (nDia > finMes(nMes, nAno)){
		nDia = 1;
		nMes += 1;
		if (nMes == 13){
			nMes = 1;
			nAno += 1;
		}
	}
	return makeDateFormatMySQL(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 decDateMySQL(sFec0){
	var nAno = parseInt(sFec0.substr(0, 4), 10);
	var nMes = parseInt(sFec0.substr(5, 2), 10);
	var nDia = parseInt(sFec0.substr(8, 2), 10);
	nDia -= 1;
	if (nDia == 0){
		nMes -= 1;
		if (nMes == 0){
			nMes = 12;
			nAno -= 1;
		}
		nDia = finMes(nMes, nAno);
	}
	return makeDateFormatMySQL(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;
}

function addToDateMySQL(sFec0, sInc){
	var nInc = Math.abs(parseInt(sInc));
	var sRes = sFec0;
	if (parseInt(sInc) >= 0)
	for (var i = 0; i < nInc; i++) sRes = incDateMySQL(sRes);
	else
	for (var i = 0; i < nInc; i++) sRes = decDateMySQL(sRes);
	return sRes;
}

function recalcF1(){
	with (document.formulario){
		fecha1.value = addToDate(fecha0.value, increm.value);
	}
}

function onKeyPressNumberHora(campo) {
      if ((event.keyCode > 31 && event.keyCode < 48 ) || event.keyCode > 57){
              event.returnValue=false;
      }else{
         valor = String(campo.value);
         tam = valor.length;
         if(tam==2){
           campo.value = valor+':';
         }else if(tam==5){
           campo.value = valor+':';
				 }
      }
  }