//	Función ValidarFechas (Valida que el contenido de oElement sea una fecha válida según sFormat)
//	Formato de sFormat: "DD/MM/AAAA", "MM/DD/AAAA", "AAAA/MM/DD"... (Todas las combinaciones)
	function ValidarFechas(oElement, sFormat)
	{
		var sDate=oElement.value;
		var aDaysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
		//	Encuentra el separador de la fecha introducida por el usuario
		var sSepDate=sDate.charAt(sDate.search(/\D/));
		//	Encuentra el separador de la fecha especificada en el formato
		var sSepFormat=sFormat.charAt(sFormat.search(/[^MDY]/i));
		//	Compara los separadores
		if (sSepDate!=sSepFormat)
			return false;

		//	Calcula las tres piezas de la fecha introducida por el usuario y el formato
		var aValueMDY=sDate.split(sSepDate,3);
		var aFormatMDY=sFormat.split(sSepFormat,3);
		var iMonth,iDay,iYear;

		//	Validamos que las tres piezas sean numéricas
		if (isNaN(aValueMDY[0])
			|| isNaN(aValueMDY[1])
			|| isNaN(aValueMDY[2]))
			return false;

		//	Asignamos el día, mes y año basándonos en el formato
		switch (aFormatMDY[0].toUpperCase())
		{
			case "YYYY" :
				iYear=aValueMDY[0];
				break;
			case "DD" :
				iDay=aValueMDY[0];
				break;
			case "MM" :
				iMonth=aValueMDY[0];
				break;
			default :
				return false;
		}
		switch (aFormatMDY[1].toUpperCase())
		{
			case "YYYY" :
				iYear=aValueMDY[1];
				break;
			case "MM" :
				iMonth=aValueMDY[1];
				break;
			case "DD" :
				iDay=aValueMDY[1];
				break;
			default :
				return false;
		}
		switch(aFormatMDY[2].toUpperCase())
		{
			case "MM" :
				iMonth=aValueMDY[2];
				break;
			case "DD" :
				iDay=aValueMDY[2];
				break;
			case "YYYY" :
				iYear=aValueMDY[2];
				break;
			default :
				return false;
		}

		//	El Año se especifica con 4 dígitos
		if(iYear.length!=4)
			return false;
		if(iYear==0000)
			return false;
		//	Control para los años bisiestos
		var iDaysInMonth=(iMonth!=2)?aDaysInMonth[iMonth-1]:
			((iYear%4==0 && iYear%100!=0 || iYear % 400==0)?29:28);

		return (iDay!=null && iMonth!=null && iYear!=null
				&& iMonth<13 && iMonth>0 && iDay>0 && iDay<=iDaysInMonth);
	}