
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;
}
