

function esBisiesto(Any)

{

	//Un aņo es bisiesto si es divisible por 4 y no por 100, excepto los aņos divisibles por 400. 

	return (((Any % 4 == 0) && (Any % 100 != 0)) || (Any % 400 == 0))

}



function isDate(Data)

{

	var esFecha = false;

	var aux = Data.split("/");


	if (aux.length == 3)

	{

		if ( (!isNaN(aux[0])) && (!isNaN(aux[1])) && (!isNaN(aux[2])) )

		{

			if ( (aux[1] >= 1) && (aux[1] <= 12) && ((aux[2].length == 2) || (aux[2].length == 4)))

			{

				if ( (aux[1] == 1) || (aux[1] == 3) || (aux[1] == 5) || (aux[1] == 7) || (aux[1] == 8) || (aux[1] == 10) || (aux[1] == 12) )

				{


						if ( (aux[0] >= 1) && (aux[0] <= 31) )

						{

							esFecha = true;

						}

				}

				else

				{

					if ( (aux[1] == 4) || (aux[1] == 6) || (aux[1] == 9) || (aux[1] == 11) )

					{

						if ( (aux[0] >= 1) && (aux[0] <= 30) )

						{

							esFecha = true;

						}

					}

					else

					{

						if ( aux[1] == 2)

						{

							if ( esBisiesto(aux[2]) )

							{

								if ( (aux[0] >= 1) && (aux[0] <= 29) )

								{

									esFecha = true;

								}

							}

							else

							{

								if ( (aux[0] >= 1) && (aux[0] <= 28) )

								{

									esFecha = true;

								}

							}

						}

					}

				}

			}

		}

	}

	if (Data=="")

	{

		esFecha = true;

	}

	return esFecha;

}



function isTime(Hora)
{
	var esHora = false;
	var aux = Hora.split(":");
	if (aux.length == 2)
	{
		if ( (!isNaN(aux[0])) && (!isNaN(aux[1])) )
		{
			if ( (aux[0] >= 0) && (aux[0] < 24) && (aux[1] >= 0) && (aux[1] < 60) )
			{
				esHora = true;
			}
		}
	}
	return esHora;
}

function formateDate (Element,Data)

{

	var isFecha=Data;

	if (Data!="")

	{

		if (isDate(Data))

		{

			var aux = Data.split("/");

			if (aux[0].length<2) aux[0]="0"+aux[0]; // Formateamos el dia DD

			if (aux[1].length<2) aux[1]="0"+aux[1]; // Formateamos el mes MM

			if (aux[2].length<4) aux[2]="20"+aux[2]; // Formateamos el aņo YYYY



			isFecha=aux[0]+"/"+aux[1]+"/"+aux[2];

		}

		else

		{

			//isFecha="";

			Element.focus();

			alert("'"+Data+"' no es una fecha correcta.");

		}

	}

	return isFecha;

}



function Month(Data)

{

                    

    var isFecha=new String(gNow.getMonth());

		if (isDate(Data) && Data !="")

		{

			var aux = Data.split("/");

			if (aux[1].length<2) aux[1]="0"+aux[1]; // Formateamos el mes MM

			isFecha=aux[1];

		}

	return isFecha;

}



function Year(Data)

{

    var isFecha=new String(gNow.getFullYear().toString());

		if (isDate(Data) && Data !="")

		{

			var aux = Data.split("/");

			if (aux[2].length<4) aux[2]="20"+aux[2]; // Formateamos el aņo YYYY

			isFecha=aux[2];

		}

	return isFecha;

}

function DaysDelta(_v1,_v2) { 
  var _delta = 0; 
  _delta = _v1.getTime() - _v2.getTime(); // in msecs 
  _delta /= (1000 * 60 * 60 * 24); // days 
  return _delta; 
} 

function isLessDate(str_d1, str_d2)
{
	var isLess = false;
	var aux_d1 = str_d1.split("/");
	var aux_d2 = str_d2.split("/");

// Si solo se recibe la fecha se agrega la hora (00:00)
	if (aux_d1.length==3)
	{
		str_d1+='/00:00';
		aux_d1 = str_d1.split("/");
	}
	if (aux_d2.length==3)
	{
		str_d2+='/00:00';
		aux_d2 = str_d2.split("/");
	}

	if ((aux_d1.length==4) && (aux_d2.length==4))
	{
		if ((!isNaN(aux_d1[0])) && (!isNaN(aux_d1[1])) && (!isNaN(aux_d1[2])))
		{
			var aux_h1 = aux_d1[3].split(":");
			if ((!isNaN(aux_h1[0])) && (!isNaN(aux_h1[1])))
			{
				var d1 = new Date();
				d1.setMonth(aux_d1[1]-1);
				d1.setDate(aux_d1[0]);
				d1.setYear(aux_d1[2]);
				d1.setHours(aux_h1[0]);
				d1.setMinutes(aux_h1[1]);
				if ((!isNaN(aux_d2[0])) && (!isNaN(aux_d2[1])) && (!isNaN(aux_d2[2])))
				{
					var aux_h2 = aux_d2[3].split(":");
					if ((!isNaN(aux_h2[0])) && (!isNaN(aux_h2[1])))
					{
						var d2 = new Date() ;
						d2.setMonth(aux_d2[1]-1);
						d2.setDate(aux_d2[0]); 
						d2.setYear(aux_d2[2]);
						d2.setHours(aux_h2[0]);
						d2.setMinutes(aux_h2[1]);
						delta = DaysDelta(d1, d2);
						if (delta<=0)
							isLess = true;
					}
				}
			}
		}
	}
	return isLess;
}
