function EsNumero(sChr)
{
	var sCod = sChr.charCodeAt(0); 
	return ((sCod > 47) && (sCod < 58)); 
}

function StrToInt(aCadena)
{
	var Resultado = 0;
	var Cont  = aCadena.length - 1;
	var nCalc1 = 1;
	var nCalc2 = 0;
	var aAlfa = "";

	while (Cont >= 0)
	{
//		aAlfa = aCadena[Cont];
		aAlfa = aCadena.substring(Cont,Cont+1);
		if (aAlfa == '1') { nCalc2 = 1; }
		if (aAlfa == '2') { nCalc2 = 2; }
		if (aAlfa == '3') { nCalc2 = 3; }
		if (aAlfa == '4') { nCalc2 = 4; }
		if (aAlfa == '5') { nCalc2 = 5; }
		if (aAlfa == '6') { nCalc2 = 6; }
		if (aAlfa == '7') { nCalc2 = 7; }
		if (aAlfa == '8') { nCalc2 = 8; }
		if (aAlfa == '9') { nCalc2 = 9; }
		Resultado = Resultado + (nCalc2 * nCalc1);
		nCalc1 = nCalc1 * 10; 
		nCalc2 = 0;
		Cont = Cont - 1;
	}
	return Resultado;
}

function ValidaSep(oTxt)
{
	var bOk = false; 
	bOk = bOk || ((oTxt.value.charAt(2) == "-") && (oTxt.value.charAt(5) == "-")); 
	bOk = bOk || ((oTxt.value.charAt(2) == "/") && (oTxt.value.charAt(5) == "/")); 
	return bOk; 
}

function ObtenFinMes(oTxt)
{
	var nMes = parseInt(oTxt.value.substr(3, 2), 10); 
	var nAno = parseInt(oTxt.value.substr(6), 10); 
	var nRes = 0; 
	switch (nMes)
	{
		case 1: nRes = 31; break; 
		case 2: nRes = 28; break; 
		case 3: nRes = 31; break; 
		case 4: nRes = 30; break; 
		case 5: nRes = 31; break; 
		case 6: nRes = 30; break; 
		case 7: nRes = 31; break; 
		case 8: nRes = 31; break; 
		case 9: nRes = 30; break; 
		case 10: nRes = 31; break; 
		case 11: nRes = 30; break; 
		case 12: nRes = 31; break; 
	}
	return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); 
}

function FormateaFechas(aFecha, nIncD)
{
	var fecha  = new Date();
	var aAlfa  = "";
	var aAlfa1 = "";
	var aAlfa2 = "";
	var nCont  = 0;
	var Dia    = 0;
	var Mes    = 0;
	var Anyo   = 0;
	var nDias  = 0;

	nDias = nIncD;
	aAlfa = String(aFecha);
	while (nCont < aAlfa.length)
	{
//		aAlfa1 = aAlfa[nCont];
		aAlfa1 = aAlfa.substring(nCont,nCont+1);
		if (aAlfa1 != "/")
		{
			aAlfa2 = aAlfa2 + aAlfa1;
		}
		else
		{
			if (Dia == 0)
			{
				Dia = StrToInt(aAlfa2);
			}
			else
			{
				if (Mes == 0)
				{
					Mes = StrToInt(aAlfa2);
				}
				else
				{
					if (Anyo == 0)
					{
						Anyo = StrToInt(aAlfa2);
					}
				}
			}
			aAlfa2 = "";
		}
		nCont = nCont + 1;
	}
	if (aAlfa2 != "")
	{
		if (Dia == 0)
		{
			Dia = StrToInt(aAlfa2);
		}
		else
		{
			if (Mes == 0)
			{
				Mes = StrToInt(aAlfa2);
			}
			else
			{
				if (Anyo == 0)
				{
					Anyo = StrToInt(aAlfa2);
				}
			}
		}
	}

	if (nDias != 0)
	{
		nDias = nDias*(24*60*60*1000);
		fecha.setDate(Dia);
		fecha.setMonth(Mes-1);
		fecha.setYear(Anyo);
		tiempo=fecha.getTime();
		tiempo=tiempo+nDias;
		nCont=fecha.setTime(tiempo);
		Dia=fecha.getDate();
		Mes=fecha.getMonth()+1;
		Anyo=fecha.getFullYear();
	}
	if (Dia > 0 && Mes > 0 && Anyo > 0)
	{
		aAlfa1 = "00"+Dia;
		aAlfa = Right(aAlfa1,2) + "/";
		aAlfa1 = "00"+Mes;
		aAlfa = aAlfa + Right(aAlfa1,2) + "/";
		aAlfa1 = "0000"+Anyo;
		aAlfa = aAlfa + Right(aAlfa1,4);
	}
	return aAlfa;
}


function ValidaDia(oTxt)
{
	var bOk = false; 
	var nDia = parseInt(oTxt.value.substr(0, 2), 10); 
	bOk = bOk || ((nDia >= 1) && (nDia <= ObtenFinMes(oTxt))); 
	return bOk; 
}

function ValidaMes(oTxt)
{
	var bOk = false; 
	var nMes = parseInt(oTxt.value.substr(3, 2), 10); 
	bOk = bOk || ((nMes >= 1) && (nMes <= 12)); 
	return bOk; 
}

function ValidaAnyo(oTxt)
{
	var bOk = true; 
	var nAno = oTxt.value.substr(6); 
	bOk = bOk && ((nAno.length == 2) || (nAno.length == 4)); 
	if (bOk)
	{
		for (var i = 0; i < nAno.length; i++)
		{
			bOk = bOk && EsNumero(nAno.charAt(i)); 
		}
	}
	return bOk; 
}

function ValidaFecha(aFecha)
{
	var bOk = true; 
	if (aFecha.value != "")
	{
		bOk = bOk && (ValidaAnyo(aFecha));
		bOk = bOk && (ValidaMes(aFecha));
		bOk = bOk && (ValidaDia(aFecha));
		bOk = bOk && (ValidaSep(aFecha));
		return bOk; 
	} 
}

function DiferenciaFechas (aFecha1, aFecha2) 
{
        // Formatea las fechas
	aFecha1 = FormateaFechas(aFecha1,0);
	aFecha2 = FormateaFechas(aFecha2,0);

//	alert('Desglose fecha 1 (' + aFecha1 + ") : "+StrToInt(aFecha1.substring(0,2))+","+StrToInt(aFecha1.substring(3,5))+","+StrToInt(aFecha1.substring(6,10)));
//	alert('Desglose fecha 2 (' + aFecha2 + ") : "+StrToInt(aFecha2.substring(0,2))+","+StrToInt(aFecha2.substring(3,5))+","+StrToInt(aFecha2.substring(6,10)));

        var mes1 = 0;
        var mes2 = 0;
        mes1 = StrToInt(aFecha1.substring(3,5));
        mes2 = StrToInt(aFecha2.substring(3,5));

	var fecha1 = new Date(StrToInt(aFecha1.substring(6,10)), mes1 - 1, StrToInt(aFecha1.substring(0,2)));
	var fecha2 = new Date(StrToInt(aFecha2.substring(6,10)), mes2 - 1, StrToInt(aFecha2.substring(0,2)));

//	alert(StrToInt(aFecha1.substring(6,10))+","+mes1+","+StrToInt(aFecha1.substring(0,2)));
//	alert(StrToInt(aFecha2.substring(6,10))+","+mes2+","+StrToInt(aFecha2.substring(0,2)));

	//Resta fechas y redondea  
	var diferencia = fecha1.getTime() - fecha2.getTime()
	var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24))

	return dias
}

