/*************************************************************
|
|	CHANGE SEASON OPEN/CLOSE DATES in seasonIsClosed function
|
**************************************************************/


		// this function returns true if the passed date is special and should be highlighted
		function dateIsSpecial(year, month, day) {
			var m = SPECIAL_DAYS[month];
			if (!m) {
				return false;
			} else {
				for (var i in m) {
					if (m[i] == day) {
						return true;
					}
				}
				return false; // leave other dates normal
			}
		}

		// this function returns true if the passed date is unavailable and should be greyed out
		function dateIsDisabled(year,month,day) {
			var m = BLACKOUT_DAYS[month];
			if (!m) {
				return false;
			} else {
				for (var i in m) {
					if (m[i] == day) {
						return true;
					}
				}
				return false; // leave other dates enabled
			}
		}


		function departureDateIsDisabled(date,year,month,day) {
			var m = 0;
			if(day==1) {
				var m = BLACKOUT_DAYS[month-1];
			} else {
				var m = BLACKOUT_DAYS[month];
			}
			//var arrival = document.getElementById("arrival_date");
			//arrival = formatDate(arrival, "yyyy,mm,dd");
			//alert("arrival: " + arrival);
			//var datevar = new Date(year,month,day);
			//if (datevar <= arrival) {
				//return true;
			//} else if (!m) {
			if (!m) {
				return false;
			} else {
				for (var i in m) {
					var tempdate = new Date(year,month,m[i]);
					tempdate.setDate(tempdate.getDate()+1);
					tempdate = formatDate(tempdate, "dd");
					if (tempdate == day) {
						return true;
					}
				}
				return false; // leave other dates enabled
			}
		}


/****************************************************
|	+++++++++++++++++++++++++++++++++++				|
|	CHANGE SEASON OPEN/CLOSE DATES HERE				|
|	+++++++++++++++++++++++++++++++++++				|
*****************************************************/

// this function returns true if the passed date is off season and should be greyed out
		function seasonIsClosed(date) {
			var min = new Date(2012,4,27); // first available date (zero-based: 4=May)
			var max = new Date(2012,8,11); // last available date (zero-based: 9=October)
			if (date.getTime() < min.getTime() ||
				date.getTime() > max.getTime()) {
				return true; // true says "disable"
			} else {
				return false; // leave other dates enabled
			}
		}
		
		// this function returns true if the passed date is in the past and therefore invalid
		function dateIsPassed(date) {
			var curtime = new Date();
			if (date.getTime() < curtime) {
				return true; // true says "disable"
			} else {
				return false; // leave other dates enabled
			}
		}

		// this was "borrowed" from somewhere online.  supposed to prevent the departure date from being earlier than arrival date
		function disallowDateBefore(dateCheckOut) { 
			dateCheckOut.setHours(0,0,0,0) 
			if ((document.reserve.arrival_date != null) && document.reserve.arrival_date > dateCheckOut)  return true;   // true says "disable"
			var now = new Date() 
			now.setHours(0,0,0,0) 
			if (dateCheckOut < now)  return true;  // true says "disable"
			return false; 
		} 

		// this is the actual date status handler.  Note that it receives the
		// date object as well as separate values of year, month and date, for
		// your confort.
		function dateStatusHandler(date, y, m, d) {
			var blockdate = false;
			
			if (seasonIsClosed(date)) {
				blockdate = true;
			} else if (dateIsDisabled(y, m, d)) {
				blockdate = true;
			} else if (dateIsPassed(date)) {
				blockdate = true;
			} 
			/* else if (dateIsSpecial(y, m, d)) {
				blockdate = true;
			} */
			
			return blockdate;
		}

		function departureDateStatusHandler(date, y, m, d) {
			var blockdate = false;
			
			if (seasonIsClosed(date)) {
				blockdate = true;
			} else if (dateIsPassed(date)) {
				blockdate = true;
			//} else if (departureDateIsDisabled(y, m, d)) {
			} else if (departureDateIsDisabled(date, y, m, d)) {
				blockdate = true;
			//} else if (disallowDateBefore(date)) {
				//blockdate = true;
			}
			/* else if (dateIsSpecial(y, m, d)) {
				blockdate = true;
			} */
			
			return blockdate;
		}


		function addZero(vNumber){ 
			return ((vNumber < 10) ? "0" : "") + vNumber 
		} 

		function formatDate(vDate, vFormat){ 
			var vDay              = addZero(vDate.getDate()); 
			var vMonth            = addZero(vDate.getMonth()+1); 
			var vYearLong         = addZero(vDate.getFullYear()); 
			var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
			var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
			var vHour             = addZero(vDate.getHours()); 
			var vMinute           = addZero(vDate.getMinutes()); 
			var vSecond           = addZero(vDate.getSeconds()); 
			var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
			vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
			return vDateString 
		}

