// Declaring valid date character, minimum year and maximum year
var minYearDefault = 1900;
var maxYearDefault = 1992;

function isInteger(s){
	var i;
	for(i = 0; i < s.length; i++){
		// Check that current character is number.
		var c = s.charAt(i);
		if(((c < '0') || (c > '9'))){
			return false;
		}
	}
	// All characters are numbers.
	return true;
}

function stripCharsInBag(s, bag){
	var i;
	var returnString = '';
	// Search through string's characters one by one.
	// If character is not in bag, append to returnString.
	for(i = 0; i < s.length; i++){
		var c = s.charAt(i);
		if(bag.indexOf(c) == -1){
			returnString += c;
		}
	}
	return returnString;
}

function daysInFebruary(year){
	// February has 29 days in any year evenly divisible by four,
	// EXCEPT for centurial years which are not also divisible by 400.
	return (((year % 4 == 0) && ((!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28);
}

function DaysArray(n){
	for(var i = 1; i <= n; i++){
		this[i] = 31;
		if(i == 4 || i == 6 || i == 9 || i == 11){
			this[i] = 30;
		}
		if(i == 2){
			this[i] = 29;
		}
	}
	return this;
}

function isValidDate(strMonth, strDay, strYear, minYear, maxYear){
	var minYear = (minYear == null) ? minYearDefault : minYear;
	var maxYear = (maxYear == null) ? maxYearDefault : maxYear;
	var daysInMonth = DaysArray(12);

	month = strMonth * 1;
	day = strDay * 1;
	year = strYear * 1;

	if(strMonth.length < 1 || month < 1 || month > 12){
		alert('Please enter a valid month!');
		return false;
	}

	if(strDay.length < 1 || day < 1 || day > 31 || (month == 2 && day > daysInFebruary(year)) || day > daysInMonth[month]){
		//alert('Please enter a valid day!');
		return false;
	}

	if((strYear.length != 4) || (year == 0) || (year < minYear) || (year > maxYear)){
		//alert('Please enter a valid 4 digit year between ' + minYear + ' and ' + maxYear);
		return false;
	}

	return true;
}

function isFutureDate(y, m, d){
	var myDate = new Date();
	myDate.setFullYear(y, m - 1, d);

	var today = new Date();

	if(myDate > today){
		return true;
	} else {
		return false;
	}
}
