var dayArray = new Array (13);
dayArray [0] = -1;
dayArray [1] = 31;
dayArray [2] = 28;
dayArray [3] = 31;
dayArray [4] = 30;
dayArray [5] = 31;
dayArray [6] = 30;
dayArray [7] = 31;
dayArray [8] = 31;
dayArray [9] = 30;
dayArray [10] = 31;
dayArray [11] = 30;
dayArray [12] = 31;

function isInteger (pValue) {
	var lIsInteger = true;
	var lChar;
	for (var i = 0; i < pValue.length; i++) {
		lChar = pValue.toString().substring(i, i+1);
		if (! (lChar >= "0" && lChar <= "9")) {
			lIsInteger = false;
			break;
		}
	}	// End of for
	return lIsInteger;
}	// End of function isInteger

function isLeapYear (pYear) {
	if (((pYear % 400) == 0) || ((pYear % 4) == 0 && (pYear % 100) != 0)) {
		return true;
	} else {
		return false;
	}	// End of function isLeapYear
}

function isValidDate (pYear, pMonth, pDay, pDescr) {
	var error_msg= "Fecha no valida en el campo '" + pDescr + "' :\n ";
	var lIsValid = true;
	var lYear = parseInt (pYear, 10);
	var lMonth = parseInt (pMonth, 10);
	var lDay = parseInt (pDay, 10);

	//	All components must be numeric
	if ( (! (isInteger (pYear) && isInteger (pMonth) && isInteger (pDay))) ||
            (   isNaN(lYear) || isNaN(lMonth) || isNaN(lDay) )) {
			lIsValid = false;
			error_msg=error_msg + "\nFecha debe ser numérica.";
	}

	//	Month should be in range of 1-12
	if (lMonth < 1 || lMonth > 12) {
		lIsValid = false;
		error_msg=error_msg + "\nMes debe estar entre 1 y 12.";
	}

	//	Day should be within the range
	if (lDay < 1 || lDay > (dayArray[lMonth] + ((isLeapYear (lYear) && lMonth == 2) ? 1 : 0))) {
		lIsValid = false;
		error_msg=error_msg + "\nEl día para ese mes no esta en un intervalo válido.";
	}

	//	Year should be 4 digits..year 2000 compliance =)
	if (pYear.length < 4) {
		lIsValid = false;
		error_msg=error_msg + "\nAño debe  tener 4 dígitos."
	}

	if ( lIsValid == false ) {
		alert (error_msg);
	}

	return lIsValid;
}	// End of function isValidDate

function isDiffLower (diffDays, dayL, monthL, yearL, dayU, monthU, yearU) {
    var dateLower = new Date(yearL, monthL-1, dayL);
    var dateUpper = new Date(yearU, monthU-1, dayU);

    var difference = dateUpper.getTime() - dateLower.getTime();
    var days = Math.floor(difference / (1000 * 60 * 60 * 24));

    if (days <= diffDays)
        return true
    else {
        alert("El rango de fechas es superior a "+diffDays+" días");
        return false
    }
}   // End of function isDiffLower
