// CSS Browser Selector   v0.2.5
// Documentation:         http://rafael.adm.br/css_browser_selector
// License:               http://creativecommons.org/licenses/by/2.5/
// Author:                Rafael Lima (http://rafael.adm.br)
// Contributors:          http://rafael.adm.br/css_browser_selector#contributors
var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);
var css_browser_selector = function() {
	var 
		ua=navigator.userAgent.toLowerCase(),
		is=function(t){ return ua.indexOf(t) != -1; },
		h=document.getElementsByTagName('html')[0],
		b=(!(/opera|webtv/i.test(ua))&&/msie (\d)/.test(ua))?('ie ie'+RegExp.$1):is('gecko/')? 'gecko':is('opera/9')?'opera opera9':/opera (\d)/.test(ua)?'opera opera'+RegExp.$1:is('konqueror')?'konqueror':is('applewebkit/')?'webkit safari':is('mozilla/')?'gecko':'',
		os=(is('x11')||is('linux'))?' linux':is('mac')?' mac':is('win')?' win':'';
	var c=b+os+' js';
	h.className += h.className?' '+c:c;
}();

///////////////////////////////////////
//                                   //
//   ResStream JavaScript Clendars   //
//                                   //
//   Copyright 2008 RezStream Inc.   //
//                                   //
///////////////////////////////////////

var RSCalTimer = 0;
var animateLoop = 0;
var RSCalObj = {
	RSCalCounter:-1,
	RSCalScriptCounter:0,
	RSCalSucess:0,
	RSCalSizerText:""
}

function RSCal(AID, PID, UID, CNT, LONG, BOOK, SIZE, LOGO, CSS, TAG, PAGE, NEW, FILL){
	if (typeof(FILL) == 'undefined') {
		RSCalObj.RSCalCounter++;
	}
	else {
		RSCalObj.RSCalCounter == 0;
	}
	RSCalID = "RSCal" + RSCalObj.RSCalCounter;
	RSCalObj[RSCalID] = new Object();
	if ((!AID) && typeof(FILL) == 'undefined') {
		document.write("<div>You must enter the Account ID to display a Calendar.</div>");
	}
	else 
		if ((!AID) && typeof(FILL) != 'undefined') {
			document.getElementById(FILL).innerHTML = "<div>You must enter the Account ID to display a Calendar.</div>";
		}
	RSCalObj[RSCalID].RSCalAccount = AID;
	if (typeof(PID) != 'undefined' && PID != 0 && PID != '0') {
		RSCalObj[RSCalID].RSCalProperty = PID;
	}
	else {
		RSCalObj[RSCalID].RSCalProperty = -1;
	}
	if (typeof(UID) != 'undefined') {
		RSCalObj[RSCalID].RSCalUnit = UID;
	}
	else {
		RSCalObj[RSCalID].RSCalUnit = 0;
	}
	if (typeof(CNT) != 'undefined') {
		RSCalObj[RSCalID].RSCalCnt = CNT;
	}
	else {
		RSCalObj[RSCalID].RSCalCnt = 3;
	}
	if (typeof(LONG) != 'undefined') {
		RSCalObj[RSCalID].RSCalLength = LONG;
	}
	else {
		RSCalObj[RSCalID].RSCalLength = 4;
	}
	if (typeof(BOOK) != 'undefined') {
		RSCalObj[RSCalID].RSCalBookable = BOOK;
	}
	else {
		RSCalObj[RSCalID].RSCalBookable = 1;
	}
	if (typeof(SIZE) != 'undefined') {
		RSCalObj[RSCalID].RSCalSize = SIZE + '%';
	}
	else {
		RSCalObj[RSCalID].RSCalSize = '100%';
	}
	if (typeof(CSS) != 'undefined') {
		RSCalObj[RSCalID].RSCalCSSURL = CSS;
	}
	else {
		RSCalObj[RSCalID].RSCalCSSURL = "http://calendars.rezstream.com/cal.css"; //"http://calendars.rezstream.com/cal.css";
	}
	if (typeof(LOGO) != 'undefined') {
		RSCalObj[RSCalID].Logo = LOGO;
	}
	else {
		RSCalObj[RSCalID].Logo = "http://calendars.rezstream.com/pwd-rezstream2.gif";
	}
	if (typeof(TAG) != 'undefined') {
		RSCalObj[RSCalID].Tag = TAG;
	}
	else {
		RSCalObj[RSCalID].Tag = "Book&nbsp;Now&nbsp;&gt;&gt;";
	}
	if (typeof(PAGE) != 'undefined') {
		RSCalObj[RSCalID].Page = PAGE;
	}
	else {
		RSCalObj[RSCalID].Page = 'undefined';
	}
	if (typeof(NEW) != 'undefined') {
		RSCalObj[RSCalID].New = NEW;
	}
	else {
		RSCalObj[RSCalID].New = "1";
	}
	if (typeof(FILL) != 'undefined') {
		RSCalObj[RSCalID].Fill = FILL;
	}
	else {
		RSCalObj[RSCalID].Fill = "false";
	}
	
	
	
	if (RSCalObj[RSCalID].Logo == 1) {
		RSCalObj[RSCalID].Logo = "http://calendars.rezstream.com/pwd-rezstream2.gif"
	}
	if (RSCalObj[RSCalID].RSCalProperty == -1) {
		var KeyCode = new String(new Number(AID) * 13);
	}
	else {
		var KeyCode = new String(new Number(AID) * new Number(PID));
	}
	var KEY = KeyCode.substr(0, 4);
	if (RSCalObj[RSCalID].RSCalUnit == 0) {
		RSCalObj[RSCalID].SingleUnit = false;
	}
	else {
		RSCalObj[RSCalID].SingleUnit = true;
	}
	if (RSCalObj[RSCalID].RSCalBookable == 0) {
		RSCalObj[RSCalID].RSCalBookable = false;
	}
	else {
		RSCalObj[RSCalID].RSCalBookable = true;
	}
	RSCalObj[RSCalID].RSCalOccupancy = new Object();
	RSCalObj[RSCalID].RSCalProperties = new Object();
	var head = document.getElementsByTagName("head")[0];
	if (!document.getElementById('RSCalCSS')) {
		var css = document.createElement('link');
		css.id = 'RSCalCSS';
		css.type = 'text/css';
		css.rel = 'stylesheet';
		css.href = RSCalObj[RSCalID].RSCalCSSURL;
		head.appendChild(css);
	}
	else 
		if (document.getElementById('RSCalCSS').href != RSCalObj[RSCalID].RSCalCSSURL) {
			var css = document.createElement('link');
			css.id = 'RSCalCSS' + RSCalObj.RSCalCounter;
			css.type = 'text/css';
			css.rel = 'stylesheet';
			css.href = RSCalObj[RSCalID].RSCalCSSURL;
			head.appendChild(css);
			
		}
	RSCalObj.RSCalSizerText += "#" + RSCalID + " {font-size:" + RSCalObj[RSCalID].RSCalSize + ";}";
	var script = document.createElement('script');
	if (RSCalObj[RSCalID].Fill == "false") {
		script.id = 'RSCalScript' + RSCalObj.RSCalScriptCounter;
	}
	else {
		script.id = 'RSCalScript0';
	}
	script.type = 'text/javascript';
	script.src = 'http://rezstreamsynch.net/booking_synch/Calendar.aspx?TheCall=GetCalOccupancy&Key=' + KEY + '&AccountID=' + AID + '&PropertyID=' + new String(RSCalObj[RSCalID].RSCalProperty) + '&UnitID=' + RSCalObj[RSCalID].RSCalUnit + '&callback=RSCalObj.' + RSCalID + '.RSCalOccupancy';
	head.appendChild(script);
	RSCalObj.RSCalScriptCounter++;
	var script2 = document.createElement('script');
	if (RSCalObj[RSCalID].Fill == "false") {
		script.id = 'RSCalScript' + RSCalObj.RSCalScriptCounter;
	}
	else {
		script.id = 'RSCalScript1';
	}
	script2.type = 'text/javascript';
	script2.src = 'http://rezstreamsynch.net/booking_synch/Calendar.aspx?TheCall=GetCalProperties&Key=' + KEY + '&AccountID=' + AID + '&PropertyID=' + new String(RSCalObj[RSCalID].RSCalProperty) + '&UnitID=' + RSCalObj[RSCalID].RSCalUnit + '&callback=RSCalObj.' + RSCalID + '.RSCalProperties';
	head.appendChild(script2);
	RSCalObj.RSCalScriptCounter++;
	if (RSCalObj[RSCalID].SingleUnit === true && RSCalObj[RSCalID].RSCalBookable === true) {
		RSCalObj[RSCalID].RSCalMinStay = new Object();
		var script3 = document.createElement('script');
		if (RSCalObj[RSCalID].Fill == "false") {
			script.id = 'RSCalScript' + RSCalObj.RSCalScriptCounter;
		}
		else {
			script.id = 'RSCalScript2'
		}
		script3.type = 'text/javascript';
		script3.src = 'http://rezstreamsynch.net/booking_synch/Calendar.aspx?TheCall=GetCalMinStay&Key=' + KEY + '&AccountID=' + AID + '&PropertyID=' + new String(RSCalObj[RSCalID].RSCalProperty) + '&UnitID=' + RSCalObj[RSCalID].RSCalUnit + '&callback=RSCalObj.' + RSCalID + '.RSCalMinStay';
		head.appendChild(script3);
		RSCalObj.RSCalScriptCounter++;
	}
	var insertHere = '<div id="' + RSCalID + '" class="RSCal" style="font-size:' + RSCalObj[RSCalID].RSCalSize + '; width:' + (12.3 * (RSCalObj[RSCalID].RSCalLength)) + 'em;"><div class="waitBox">Please Wait...<br />Loading the RezStream Availability Calendar.</div></div>';
	if (RSCalObj[RSCalID].Fill == "false") {
		document.write(insertHere);
	}
	else {
		document.getElementById(RSCalObj[RSCalID].Fill).innerHTML = insertHere;
	}
	RSCalTimer = 0;
	animateLoop = 0;
	wait4Script();
}

function wait4Script(){

	if (RSCalObj["RSCal" + RSCalObj.RSCalSucess].SingleUnit === true && RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalBookable === true) {
		if (typeof(RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalOccupancy.D) != 'undefined' && typeof(RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalProperties.MaxChildren) != 'undefined' && typeof(RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalMinStay.MinStayWeekend) != 'undefined') {
			RSCalSetVars(RSCalObj.RSCalSucess);
		}
		else {
			if (animateLoop >= 0 && animateLoop < 30) {
				document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait<br />Loading the RezStream Availability Calendar.</div>';
			}
			else 
				if (animateLoop >= 30 && animateLoop < 60) {
					document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait.<br />Loading the RezStream Availability Calendar.</div>';
				}
				else 
					if (animateLoop >= 60 && animateLoop < 90) {
						document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait..<br />Loading the RezStream Availability Calendar.</div>';
					}
					else 
						if (animateLoop >= 90 && animateLoop < 120) {
							document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait...<br />Loading the RezStream Availability Calendar.</div>';
						}
			if (RSCalTimer <= 9000) {
				RSCalTimer++;
				animateLoop++;
				if (animateLoop > 120) {
					animateLoop = 0
				}
				setTimeout(wait4Script, 10);
			}
			
			else {
				document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Loading of the Calendar Failed.</div>';
				RSCalObj.RSCalSucess++;
			}
		}
	}
	
	else {
		if (typeof(RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalOccupancy.D) != 'undefined' && typeof(RSCalObj["RSCal" + RSCalObj.RSCalSucess].RSCalProperties.MaxChildren) != 'undefined') {
			RSCalSetVars(RSCalObj.RSCalSucess);
		}
		else {
			if (animateLoop >= 0 && animateLoop < 30) {
				document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait<br />Loading the RezStream Availability Calendar.</div>';
			}
			else 
				if (animateLoop >= 30 && animateLoop < 60) {
					document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait.<br />Loading the RezStream Availability Calendar.</div>';
				}
				else 
					if (animateLoop >= 60 && animateLoop < 90) {
						document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait..<br />Loading the RezStream Availability Calendar.</div>';
					}
					else 
						if (animateLoop >= 90 && animateLoop < 120) {
							document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Please Wait...<br />Loading the RezStream Availability Calendar.</div>';
						}
			if (RSCalTimer <= 4500) {
				RSCalTimer++;
				animateLoop++;
				if (animateLoop > 1200) {
					animateLoop = 0
				}
				setTimeout(wait4Script, 10);
			}
			
			else {
				document.getElementById("RSCal" + RSCalObj.RSCalSucess).innerHTML = '<div class="waitBox">Loading of the Calendar Failed.</div>';
				RSCalObj.RSCalSucess++;
			}
		}
	}
}
			
function RSCalSetVars(num){
	var a = RSCalObj['RSCal' + num].RSCalProperties.CDate.split('/');
    RSCalObj.RSCalTodaysDate = new Date(a[2], a[0] - 1, a[1]);
	RSCalObj.RSCalSucess++;
	RSCalObj.RSCalTodaysDay = RSCalObj.RSCalTodaysDate.getDate();
	RSCalObj.RSCalTodaysMonth = RSCalObj.RSCalTodaysDate.getMonth();
	RSCalObj.RSCalTodaysYear = RSCalObj.RSCalTodaysDate.getFullYear();
	RSCalObj['RSCal' + num].RSCalDefaultStay = RSCalObj['RSCal' + num].RSCalProperties.LengthofStay;
	RSCalObj['RSCal' + num].RSCalAvailable = new Array();
	RSCalObj['RSCal' + num].RSCalDateID = new Array();
	RSCalObj['RSCal' + num].RSCalDate = new Array();
	RSCalObj['RSCal' + num].RSCalMinStayDay = new Array();
	RSCalObj['RSCal' + num].RSCalRemoveHighlight = new Array();
	RSCalObj['RSCal' + num].RSCalDepartureDate = new Date();
	RSCalObj['RSCal' + num].RSCalArrivalDate = new Date();
	RSCalObj['RSCal' + num].RSCalArrivalDay = new Date().getDate();
	RSCalObj['RSCal' + num].RSCalArrivalMonth = new Date().getMonth();
	RSCalObj['RSCal' + num].RSCalArrivalYear = new Date().getFullYear();
	RSCalObj['RSCal' + num].RSCalDisplayMonth = new Date().getMonth();
	RSCalObj['RSCal' + num].RSCalDisplayYear = new Date().getFullYear();
	RSCalObj['RSCal' + num].RSCalOldArrivalDate = new Date();
	RSCalObj['RSCal' + num].RSCalOldDepartureDate = new Date();
	RSCalObj['RSCal' + num].RSCalOldDefaultStay = 0;
	RSCalObj['RSCal' + num].RSCalBookedErrorMsg = new String();
	RSCalObj['RSCal' + num].RSCalBookedErrorCount = 0;
	RSCalObj['RSCal' + num].RSCalDisplayError = 0;
	RSCalObj['RSCal' + num].RSCalFirstRun = true;
	RSCalObj['RSCal' + num].RSCalSelectedCount = new Array();
	RSCalObj['RSCal' + num].RSCalStayOptions = new String();
	RSCalObj['RSCal' + num].RSCalAdults = new String();
	RSCalObj['RSCal' + num].RSCalKids1 = new String();
	RSCalObj['RSCal' + num].RSCalKids2 = new String();
	RSCalObj['RSCal' + num].RSCalMinStayTest = new Array();

	if(RSCalObj['RSCal' + num].RSCalProperties.UCount){
		RSCalObj['RSCal' + num].RSCalAvailableUnits = new Number(RSCalObj['RSCal' + num].RSCalProperties.UCount);
	}
	else{
		RSCalObj['RSCal' + num].RSCalAvailableUnits = new Number(1);
	}
	
	if(RSCalObj['RSCal' + num].RSCalProperties.Bookable == "False" || RSCalObj['RSCal' + num].RSCalProperties.Active == "False" || RSCalObj['RSCal' + num].RSCalProperties.DisplayOnly == "1"){
		RSCalObj['RSCal' + num].RSCalBookable = false;
	}
	
	for(var i=0; i<(RSCalObj['RSCal' + num].RSCalOccupancy.D.length); i++){
		RSCalObj['RSCal' + num].RSCalAvailable[i] = new Number(RSCalObj['RSCal' + num].RSCalAvailableUnits - new Number(RSCalObj['RSCal' + num].RSCalOccupancy.UCount[i]));
		RSCalObj['RSCal' + num].RSCalDate[i] = RSCalObj['RSCal' + num].RSCalOccupancy.D[i];
		RSCalObj['RSCal' + num].RSCalDateID[i] = new String(new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getFullYear());
			if((new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getMonth() + 1) < 10){RSCalObj['RSCal' + num].RSCalDateID[i] += '0' + (new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getMonth() + 1);}
			else{RSCalObj['RSCal' + num].RSCalDateID[i] += (new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getMonth() + 1);}
			if(new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getDate() < 10){RSCalObj['RSCal' + num].RSCalDateID[i] += '0' + new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getDate();}
			else{RSCalObj['RSCal' + num].RSCalDateID[i] += new Date(RSCalObj['RSCal' + num].RSCalDate[i]).getDate();}
			RSCalObj['RSCal' + num].RSCalDateID[i] += num;
	}
	RSCalObj['RSCal' + num].RSCalMinOutStay = new Date(RSCalObj.RSCalTodaysYear, RSCalObj.RSCalTodaysMonth, (new Number(RSCalObj.RSCalTodaysDay) + new Number(RSCalObj['RSCal' + num].RSCalProperties.MinAcceptValue)));
	RSCalObj['RSCal' + num].RSCalMaxOutStay = new Date(RSCalObj.RSCalTodaysYear, RSCalObj.RSCalTodaysMonth, (new Number(RSCalObj.RSCalTodaysDay) + new Number(RSCalObj['RSCal' + num].RSCalProperties.FutureAcceptValue)));
	RSCalObj['RSCal' + num].RSCalMinOutID = new String(RSCalObj['RSCal' + num].RSCalMinOutStay.getFullYear());
		if((RSCalObj['RSCal' + num].RSCalMinOutStay.getMonth() + 1) < 10){RSCalObj['RSCal' + num].RSCalMinOutID += '0' + (RSCalObj['RSCal' + num].RSCalMinOutStay.getMonth() + 1);}
		else{RSCalObj['RSCal' + num].RSCalMinOutID += (RSCalObj['RSCal' + num].RSCalMinOutStay.getMonth() + 1);}
		if(RSCalObj['RSCal' + num].RSCalMinOutStay.getDate() < 10){RSCalObj['RSCal' + num].RSCalMinOutID += '0' + RSCalObj['RSCal' + num].RSCalMinOutStay.getDate();}
		else{RSCalObj['RSCal' + num].RSCalMinOutID += RSCalObj['RSCal' + num].RSCalMinOutStay.getDate();}
	RSCalObj['RSCal' + num].RSCalMaxOutID = new String(RSCalObj['RSCal' + num].RSCalMaxOutStay.getFullYear());
		if((RSCalObj['RSCal' + num].RSCalMaxOutStay.getMonth() + 1) < 10){RSCalObj['RSCal' + num].RSCalMaxOutID += '0' + (RSCalObj['RSCal' + num].RSCalMaxOutStay.getMonth() + 1);}
		else{RSCalObj['RSCal' + num].RSCalMaxOutID += (RSCalObj['RSCal' + num].RSCalMaxOutStay.getMonth() + 1);}
		if(RSCalObj['RSCal' + num].RSCalMaxOutStay.getDate() < 10){RSCalObj['RSCal' + num].RSCalMaxOutID += '0' + RSCalObj['RSCal' + num].RSCalMaxOutStay.getDate();}
		else{RSCalObj['RSCal' + num].RSCalMaxOutID += RSCalObj['RSCal' + num].RSCalMaxOutStay.getDate();}
	
	RSCalBuildFrameWork(num);
}

//Build the Tables and Divs to be filled with the calendars
function RSCalBuildFrameWork(num){
	//Create an area for the calendars
	var RSCalFrameWork = '<div id="' + num + 'cals"></div>';
	//Create the basic layout for the details section
//	RSCalFrameWork += '<div id="choices' + num + '" class="choices">';
	RSCalFrameWork += '<table cellpadding="0" cellspacing="0" border="0" class="cal choices" id="choices' + num + '">';
	RSCalFrameWork += '<tr><td class="month">Make Reservation</td></tr>';
	RSCalFrameWork += '<tr class="week"><td>&nbsp;</td></tr>';
	RSCalFrameWork += '<tr><td><div id="detailsMain' + num + '">';
	RSCalFrameWork += '<table cellpadding="0" cellspacing="0" id="select" align="center" style=" margin:.5em auto; padding:0;">';
	RSCalFrameWork += '<tr><td style="width:5em;"><strong>Arrive:</strong></td><td><div id="dropDownDiv0' + num + '" style="position:relative; height:1px; width:1px; overflow:visible;"><iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" class="RSCalDropDownSTYLE" id="dropDown0' + num + '" style="visibility:hidden;"></iframe></div><div class="RSCalDateSelect" onclick="RSCalDropDownInit(0,' + num + '); RSCalDropDownView(0,' + num + ');"><p class="RSCalDate" name="arrivalDate' + num + '" id="arrivalDate' + num + '"></p><img class="RSCalDateIcon" src="http://calendars.rezstream.com/calendar_icon.png" /></a></div></td></tr>';
	RSCalFrameWork += '<tr><td style="width:5em;"><strong>Depart:</strong></td><td><div id="dropDownDiv1' + num + '" style="position:relative; height:1px; width:1px; overflow:visible;"><iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" class="RSCalDropDownSTYLE" id="dropDown1' + num + '" style="visibility:hidden;"></iframe></div><div class="RSCalDateSelect" onclick="RSCalDropDownInit(1,' + num + '); RSCalDropDownView(1,' + num + ');"><p class="RSCalDate" name="departureDate' + num + '" id="departureDate' + num + '"></p><img class="RSCalDateIcon" src="http://calendars.rezstream.com/calendar_icon.png" /></a></div></td></tr>';
	RSCalFrameWork += '<tr><td style="width:5em;"><strong>Length:</strong></td><td><div id="lStay' + num + '"></div></td></tr>';
	RSCalFrameWork += '<tr><td style="width:5em;"><strong>Adults:</strong></td><td><div id="adult' + num + '"></div></td></tr>';
	RSCalFrameWork += '<tr><td style="width:5em;"><div id="kids1' + num + '"></div></td><td><div id="kids2' + num + '"></div></td></tr>';
	RSCalFrameWork += '</table>';
	RSCalFrameWork += '<input class="button" type="button" onclick="RSCalBookingError(\'go\', ' + num + ');" value=' + RSCalObj['RSCal' + num].Tag + '>';
	RSCalFrameWork += '</div></td></tr>';
	RSCalFrameWork += '</table>';
	RSCalFrameWork += '</div>';
	//Navagation
	
	if(RSCalObj['RSCal' + num].RSCalCnt > 0 && RSCalObj['RSCal' + num].RSCalLength > 1){
		RSCalFrameWork += '<div style="position:relative; float:left; font-size:.9em; clear:both; border:0; width:10.5em; background-color:" onclick="if(document.getElementById(\'legend' + num + '\').style.display == \'none\'){document.getElementById(\'legend' + num + '\').style.display = \'block\';}else{document.getElementById(\'legend' + num + '\').style.display = \'none\';}"><p style="text-decoration:underline; cursor:pointer; border:0; width:auto; background-color:transparent;">Click Here for Legend</p>';
		RSCalFrameWork += '<div id=legend' + num + ' style="width:210px;clear:both; border:.01em #555 solid; display:none; position:absolute; margin-top:0; background-color:#f8f8f8; padding:.2em z-index:300;">';
		RSCalFrameWork += '<p  style="border:0; width:auto; text-decoration:underline; cursor:pointer; font-size:.8em; text-align:right; margin:.08em;">Close X</p>';
		RSCalFrameWork += '<div style="float:left; margin:.1em;">';
		RSCalFrameWork += '<div><div style="float:left; margin:.1em;" class="legend"><div>&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Available</p></div>'; 
		RSCalFrameWork += '<div style="clear:both; margin:.1em; float:left;" class="legend"><div class="selected">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Selected</p>'; 
		RSCalFrameWork += '</div><div style="float:left; margin:.1em; border:0; width:auto;">';
		RSCalFrameWork += '<div><div style="float:left; margin:.1em;" class="legend"><div class="booked">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Unavailable</p></div>';
		RSCalFrameWork += '<div style="clear:both; margin:.1em; float:left" class="legend"><div class="booked2">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Selected Unavailable</p>';
		RSCalFrameWork += '</div></div></div>';
		if(RSCalObj['RSCal' + num].Logo == 0 || RSCalObj['RSCal' + num].Logo != 0){RSCalFrameWork += '<div style="float:right; width:9em"><a href="http://www.rezstream.com/online_reservations.htm" id="RSCalPowered">Powered by RezStream</a></div>';}
		else{RSCalFrameWork += '<div style="float:right;"><a href="http://www.rezstream.com/online_reservations.htm" id="RSCalPowered" target=_blank rel=external><img id="RSCalLogo" style="height:2em;" src="http://calendars.rezstream.com/pwd-rezstream2.gif"></a></div>';}
		if(RSCalObj['RSCal' + num].RSCalLength == 2){
			RSCalFrameWork += '<div style="clear:both; margin-top:.2em; height:1.6em; text-align:center;"><p>';
		}
		else{
			RSCalFrameWork += '<div class="RSCalNavigation" style="text-align:center;"><p style="width:11em; text-align:center; margin:auto;">';
		}
		RSCalFrameWork += '<a title="Back One Month" onmouseover="RSCalSetNavTip(\'Back One Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth - 1;RSCalDrawCalendars(RSCalObj[\'RSCal' + num + '\'].RSCalDisplayYear, RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth, ' + num + ')"><img style="height:1.1932em; vertical-align:middle;" src="http://calendars.rezstream.com/left-arrow.gif" /></a>';
		RSCalFrameWork += '&nbsp;&nbsp;<a title="Reset to the Current Month" onmouseover="RSCalSetNavTip(\'Reset to the Current Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj.RSCalTodaysMonth; RSCalDrawCalendars(RSCalObj.RSCalTodaysYear, RSCalObj.RSCalTodaysMonth, ' + num + ')" id="navMonth">Current Month</a>';
		RSCalFrameWork += '&nbsp;&nbsp;<a title="Forward One Month" onmouseover="RSCalSetNavTip(\'Forward One Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth + 1; RSCalDrawCalendars(RSCalObj[\'RSCal' + num + '\'].RSCalDisplayYear, RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth, ' + num + ')"><img style="height:1.1932em; vertical-align:middle;" src="http://calendars.rezstream.com/rght-arrow.gif" /></a><br/>';
		RSCalFrameWork += '<span id="RSCalNavTip' + num + '" style="height:1em; font-size:.75em; text-align:center; color:#444">Change Visible Months</span></p></div>';
	}
	else if (RSCalObj['RSCal' + num].RSCalCnt > 0 && RSCalObj['RSCal' + num].RSCalLength == 1) {
		RSCalFrameWork += '<div class="RSCalNavigation" style="text-align:center;"><p style="width:11em; text-align:center; margin:auto;">';
		RSCalFrameWork += '<a title="Back One Month" onmouseover="RSCalSetNavTip(\'Back One Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth - 1;RSCalDrawCalendars(RSCalObj[\'RSCal' + num + '\'].RSCalDisplayYear, RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth, ' + num + ')"><img style="height:1.1932em; vertical-align:middle;" src="http://calendars.rezstream.com/left-arrow.gif" /></a>';
		RSCalFrameWork += '&nbsp;&nbsp;<a title="Reset to the Current Month" onmouseover="RSCalSetNavTip(\'Reset to the Current Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj.RSCalTodaysMonth; RSCalDrawCalendars(RSCalObj.RSCalTodaysYear, RSCalObj.RSCalTodaysMonth, ' + num + ')" id="navMonth">Current Month</a>';
		RSCalFrameWork += '&nbsp;&nbsp;<a title="Forward One Month" onmouseover="RSCalSetNavTip(\'Forward One Month\', ' + num + ');" onmouseout="RSCalSetNavTip(\'Change Visible Months\', ' + num + ');" href="Javascript:RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth = RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth + 1; RSCalDrawCalendars(RSCalObj[\'RSCal' + num + '\'].RSCalDisplayYear, RSCalObj[\'RSCal' + num + '\'].RSCalDisplayMonth, ' + num + ')"><img style="height:1.1932em; vertical-align:middle;" src="http://calendars.rezstream.com/rght-arrow.gif" /></a><br/>';
		RSCalFrameWork += '<span id="RSCalNavTip' + num + '" style="height:1em; font-size:.75em; text-align:center; color:#444">Change Visible Months</span></p></div>';
		RSCalFrameWork += '<table style="float:left; margin-top:0; border:0; width:auto; background-color:transparent;"><tr><td style="clear:both; border:0; width:auto; background-color:transparent;"><div style=" float:left; font-size:.9em; clear:both; border:0; width:10.5em; background-color:transparent;" onclick="if(document.getElementById(\'legend' + num + '\').style.display == \'none\'){document.getElementById(\'legend' + num + '\').style.display = \'block\';}else{document.getElementById(\'legend' + num + '\').style.display = \'none\';}"><p style="text-decoration:underline; cursor:pointer; border:0; width:auto; background-color:transparent;">Click Here for Legend</p></div>';
		RSCalFrameWork += '<div id=legend' + num + ' style="width:auto;clear:both; border:.01em #555 solid; display:none; position:absolute; margin-top:1.1em; background-color:#f8f8f8; padding:.2em z-index:300;">';
		RSCalFrameWork += '<div style="border:0; width:auto; text-decoration:underline; cursor:pointer; font-size:.8em; text-align:right; margin:.08em; background-color:transparent;" onclick="document.getElementById(\'legend' + num + '\').style.display = \'none\'">Close X</div>';
		RSCalFrameWork += '<div style="float:left; margin:.1em;">';
		RSCalFrameWork += '<div><div style="float:left; margin:.1em;" class="legend"><div>&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Available</p></div>'; 
		RSCalFrameWork += '<div style="clear:both; margin:.1em; float:left;" class="legend"><div class="selected">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Selected</p>'; 
		RSCalFrameWork += '</div><div style="float:left; margin:.1em; border:0; width:auto;">';
		RSCalFrameWork += '<div><div style="float:left; margin:.1em;" class="legend"><div class="booked">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Unavailable</p></div>';
		RSCalFrameWork += '<div style="clear:both; margin:.1em; float:left" class="legend"><div class="booked2">&nbsp;</div></div><p style="border:0; width:auto; background-color:transparent; float:left; margin:.3em .3em; font-size:.75em;">Selected Unavailable</p>';
		RSCalFrameWork += '</div></div></td></tr></table>';
		RSCalFrameWork += '<div style="float:right; width:9em"><a href="http://www.rezstream.com/online_reservations.htm" id="RSCalPowered" target=_blank rel=external>Powered by RezStream</a></div>';
	}
	else if (RSCalObj['RSCal' + num].RSCalCnt <= 0) {
			if (RSCalObj['RSCal' + num].Logo == 1) {
				RSCalFrameWork += '<div style="text-align:center;"><p><a href="http://www.rezstream.com/online_reservations.htm" id="RSCalPowered"><img id="RSCalLogo" style="height:2.4em;" src="http://calendars.rezstream.com/pwd-rezstream2.gif"></a></p></div><div style="clear:both;"></div>';
			}
			else {
				RSCalFrameWork += '<div style="float:right; tex-align:center;"><a href="http://www.rezstream.com/online_reservations.htm" id="RSCalPowered" target=_blank rel=external>Powered by RezStream</a></div><div style="clear:both;"></div>';
			}
		}
	document.getElementById("RSCal" + num).innerHTML = RSCalFrameWork;
	if(RSCalObj['RSCal' + num].RSCalBookable === false){
		document.getElementById("choices" + num).style.display = "none";
		if(RSCalObj['RSCal' + num].RSCalProperties.Bookable == "False" || RSCalObj['RSCal' + num].RSCalProperties.Active == "False"){
			document.getElementById("RSCal" + num).innerHTML += "";
			if (RSCalObj['RSCal' + num].RSCalAccount == "9017") {
				document.getElementById("RSCal" + num).innerHTML += "<p>We will be activating our online reservations soon.</p><p>To make a reservation please call 858-869-5746</p>";
			}
			else {
				document.getElementById("RSCal" + num).innerHTML += "<p>We will be activating our online reservations soon.</p><p>To make a reservation now please call.</p>";
			}
		}

		};
	RSCalSetDates(num);
}

//Build the Calendars
function RSCalBuilder(date, n, num){
	var RSCalWeek = 0;
	RSCalObj['RSCal' + num].RSCalHighlightID = 0;

	//If no parameter is passed use the current date.
	if(date === null){date = new Date();}

	//Break the date down.
	var RSCalDay = date.getDate();
	var RSCalMonth = date.getMonth();
	var RSCalYear = date.getFullYear();

	//Set names for the months.
	var RSCalMonths = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
	var RSCalWeekDays = new Array('Sunday','Monday', 'Tuesday', 'Wednsday', 'Thursday', 'Friday', 'Saturday');
	var RSCalThisMonth = new Date(RSCalYear, RSCalMonth, 1);
	var RSCalNextMonth = new Date(RSCalYear, RSCalMonth + 1, 1);

	//Find out when this month starts and ends.
	var RSCalFirstWeekDay = RSCalThisMonth.getDay();
	var RSCalDaysInThisMonth = Math.round((RSCalNextMonth.getTime() - RSCalThisMonth.getTime()) / (1000 * 60 * 60 * 24));
	
	//Start the Calendar Table
	var RSCalBuilderHTML = '<table cellpadding="0" cellspacing="0" border="0" class="cal">';
	
	//Add Month and Year
	RSCalBuilderHTML += '<tr><td class="month" colspan="7">' + RSCalMonths[RSCalMonth] + ' ' + RSCalYear + '</td></tr>';

	//Add the Days of the Week
	RSCalBuilderHTML += '<tr class="week"><td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>Fri</td><td>Sat</td></tr>';
	
	//Start the first row
	RSCalBuilderHTML += '<tr>';
	//Fill the first week of the month with the appropriate number of blanks.
	for(var RSCalWeekday = 0; RSCalWeekday < RSCalFirstWeekDay; RSCalWeekday++){
		if (RSCalFirstWeekDay != 0) {
			RSCalBuilderHTML += '<td></td>';
		}
	}

	//Start Building the Calendar		
	RSCalWeekday = RSCalFirstWeekDay;
	for(var RSCalDayCounter = 1; RSCalDayCounter <= RSCalDaysInThisMonth; RSCalDayCounter++){
		RSCalWeekday %= 7;

		//Start a new week.
		if(RSCalWeekday === 0){
			if ((RSCalFirstWeekDay == 0 && RSCalWeek == 0)) {
				RSCalWeek++;
			}
			else {
				RSCalBuilderHTML += '</tr><tr>';
				RSCalWeek++;
			}
		}

		//Set some variables to test individual RSCalDays
		var RSCalTheDay = new Date(RSCalYear, RSCalMonth, RSCalDayCounter);
		var RSCalDayOut = Math.round((RSCalTheDay.getTime() - RSCalObj.RSCalTodaysDate.getTime()) / (1000 * 60 * 60 * 24)) + 1;
		RSCalObj['RSCal' + num].RSCalArrival = document.getElementById('arrivalDate' + num).innerHTML;
		RSCalObj['RSCal' + num].RSCalDeparture = document.getElementById('departureDate' + num).innerHTML;
		var RSCalDayVal = "'" + (RSCalMonth + 1) + '/' + RSCalDayCounter + '/' + RSCalYear + "'";
		var RSCalHTMLDateID = new String(RSCalYear);
			if((RSCalMonth + 1) < 10){RSCalHTMLDateID += '0' + (RSCalMonth + 1);}
			else{RSCalHTMLDateID += (RSCalMonth + 1);}
			if(RSCalDayCounter < 10){RSCalHTMLDateID += '0' + RSCalDayCounter;}
			else{RSCalHTMLDateID += RSCalDayCounter;}
			RSCalHTMLDateID += num;

	//Minimum Stay
	if (RSCalObj['RSCal' + num].SingleUnit === true && RSCalObj['RSCal' + num].RSCalBookable === true) {
		for (i = 0; i < RSCalObj['RSCal' + num].RSCalMinStay.D.length; i++) {
			if (new Date(RSCalObj['RSCal' + num].RSCalMinStay.D[i]) <= RSCalTheDay && (new Date(RSCalObj['RSCal' + num].RSCalMinStay.D[i + 1]) > RSCalTheDay || typeof(RSCalObj['RSCal' + num].RSCalMinStay.D[i + 1]) == 'undefined')) {
				switch (RSCalWeekday) {
					case 0:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D1[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 1:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D2[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 2:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D3[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 3:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D4[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 4:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D5[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 5:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D6[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
					case 6:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D7[i] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[i];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[i];
						}
						break;
				}
			}
		}
	}
		//Start the cell.
		RSCalBuilderHTML += '<td>';

		//Non-Bookable
		if(RSCalHTMLDateID < RSCalObj['RSCal' + num].RSCalMinOutID || RSCalHTMLDateID > RSCalObj['RSCal' + num].RSCalMaxOutID){
			RSCalBuilderHTML += '<p id="' + RSCalHTMLDateID + '" class="disabled">';

			if(RSCalObj.RSCalTodaysDay == RSCalDayCounter && RSCalObj.RSCalTodaysMonth == RSCalMonth && RSCalObj.RSCalTodaysYear == RSCalYear){
				RSCalBuilderHTML += '<b>' + RSCalDayCounter + '</b>';
			}
			else{
				RSCalBuilderHTML += RSCalDayCounter;
			}
		}

		//Bookable
		else{
			var alreadySet = 0;
			var onceADay = 1;
			for(j=0; j<=RSCalObj['RSCal' + num].RSCalDateID.length; j++){
				if(RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHTMLDateID && RSCalObj['RSCal' + num].RSCalAvailable[j] <= 0){
				RSCalBuilderHTML += '<p id="' + RSCalHTMLDateID;

					if(new Date(RSCalYear, RSCalMonth, RSCalDayCounter) >= new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML) && new Date(RSCalYear, RSCalMonth, RSCalDayCounter) < new Date(RSCalObj['RSCal' + num].RSCalDeparture.innerHTML) && RSCalObj['RSCal' + num].RSCalBookable === true){
						RSCalObj['RSCal' + num].RSCalRemoveHighlight[RSCalHighlightID] = RSCalHTMLDateID;
						RSCalBuilderHTML += '" class="booked2">';
						RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = j;
						RSCalHighlightID++;
					}
					else{
						RSCalBuilderHTML += '" class="booked">';
					}
					if(RSCalObj.RSCalTodaysDay == RSCalDayCounter && RSCalObj.RSCalTodaysMonth == RSCalMonth && RSCalObj.RSCalTodaysYear == RSCalYear){
						RSCalBuilderHTML += '<b>' + RSCalDayCounter + '</b>';
					}
		
					else{
						RSCalBuilderHTML += RSCalDayCounter;
					}
					RSCalBuilderHTML += '</p></td>';
					alreadySet = 1;
				}	
				else if((RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHTMLDateID && RSCalObj['RSCal' + num].RSCalAvailable[j] > 0) || (RSCalObj['RSCal' + num].RSCalDateID[j] != RSCalHTMLDateID && alreadySet == 0 && j == (RSCalObj['RSCal' + num].RSCalDateID.length - 1) && onceADay == 1)){
						if((RSCalMonth+1) < 10){RSCalMonthString = new String("0" + (RSCalMonth + 1));}
						else{RSCalMonthString = new String(RSCalMonth + 1);}
						if(RSCalDayCounter < 10){RSCalDayCounterString = new String("0" + RSCalDayCounter);}
						else{RSCalDayCounterString = RSCalDayCounter;}					
					RSCalDayVal = new String("'" + RSCalMonthString + '/' + RSCalDayCounterString + '/' + new String(RSCalYear + "'"));

					if(new Date(RSCalYear, RSCalMonth, RSCalDayCounter) >= new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML) && new Date(RSCalYear, RSCalMonth, RSCalDayCounter) < new Date(RSCalObj['RSCal' + num].RSCalDeparture.innerHTML) && RSCalObj['RSCal' + num].RSCalBookable === true && alreadySet == 0){
						RSCalBuilderHTML += '<div class="toolTip" id="' + RSCalHTMLDateID + 'tip"><p>' + RSCalWeekDays[RSCalTheDay.getDay()] + ", " + RSCalMonths[RSCalTheDay.getMonth()] + " " + RSCalTheDay.getDate() + ", " + RSCalTheDay.getFullYear() + '</p>';
						if(RSCalObj['RSCal' + num].SingleUnit == true){
							if(new Number(RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID]) > 1){
								RSCalBuilderHTML += '<p>Minimum Stay: ' + RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] + '</p>';
							}
							else{
								RSCalBuilderHTML += '<p>No Minimum Stay</p>';
							}
						}
						else{
							if(RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHTMLDateID){var avail = RSCalObj['RSCal' + num].RSCalAvailable[j];}else{var avail = RSCalObj['RSCal' + num].RSCalAvailableUnits;}
							RSCalBuilderHTML += '<p>Units Available: ' + avail + '</p>';
						}
						RSCalBuilderHTML += '</div>';  
						RSCalBuilderHTML += '<p id="' + RSCalHTMLDateID + '" class="selected"><a href="Javascript:void(0);" onclick="document.getElementById(\'arrivalDate' + num + '\').innerHTML = ' + RSCalDayVal + '; RSCalSetDates(' + num + ');" onmouseover="RSCalShowToolTip(\'' + RSCalHTMLDateID + 'tip\',1);" onmouseout="RSCalShowToolTip(\'' + RSCalHTMLDateID + 'tip\',0);">';
						RSCalObj['RSCal' + num].RSCalRemoveHighlight[RSCalHighlightID] = RSCalHTMLDateID;
						RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = j;
						RSCalHighlightID++;
					}

					else{
						RSCalBuilderHTML += '<div class="toolTip" id="' + RSCalHTMLDateID + 'tip"><p>' + RSCalWeekDays[RSCalTheDay.getDay()] + ", " + RSCalMonths[RSCalTheDay.getMonth()] + " " + RSCalTheDay.getDate() + ", " + RSCalTheDay.getFullYear() + '</p>';
						if(RSCalObj['RSCal' + num].SingleUnit == true && RSCalObj['RSCal' + num].RSCalBookable === true){
							if(new Number(RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID]) > 1){
								RSCalBuilderHTML += '<p>Minimum Stay: ' + RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalHTMLDateID] + '</p>';
							}
							else{
								RSCalBuilderHTML += '<p>No Minimum Stay</p>';
							}
						}
						else{
							if(RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHTMLDateID){var avail = RSCalObj['RSCal' + num].RSCalAvailable[j];}else{var avail = RSCalObj['RSCal' + num].RSCalAvailableUnits;}
							if (RSCalObj['RSCal' + num].RSCalBookable === true){
								RSCalBuilderHTML += '<p>Units Available: ' + avail + '</p>';
							}
							else if(RSCalObj['RSCal' + num].RSCalBookable === false){
								RSCalBuilderHTML += '<p>Unit Available</p>';
							}
						}
						RSCalBuilderHTML += '</div>';  
						RSCalBuilderHTML += '<p id="' + RSCalHTMLDateID + '"><a href="Javascript:void(0);" onclick="document.getElementById(\'arrivalDate' + num + '\').innerHTML = ' + RSCalDayVal + '; RSCalSetDates(' + num + ');" onmouseover="RSCalShowToolTip(\'' + RSCalHTMLDateID + 'tip\',1);" onmouseout="RSCalShowToolTip(\'' + RSCalHTMLDateID + 'tip\',0);">';
					}

					if(RSCalObj.RSCalTodaysDay == RSCalDayCounter && RSCalObj.RSCalTodaysMonth == RSCalMonth && RSCalObj.RSCalTodaysYear == RSCalYear){
						RSCalBuilderHTML += '<b>' + RSCalDayCounter + '</b>';
					}

					else{
						RSCalBuilderHTML += RSCalDayCounter;
					}
					RSCalBuilderHTML += '</a>';
					RSCalBuilderHTML += '</p></td>';
					onceADay = 0;
				}
			}
		}
		RSCalWeekday++;
	}
	RSCalBuilderHTML += '</tr>';

	//Add an extra row for the months that only have 5.
	if(RSCalWeek <= 5 && RSCalWeekday > 1 && RSCalFirstWeekDay != 6){RSCalBuilderHTML += '<tr><td></td></tr>';}

	//Add another row for leap year Febs that start on a Sunday... (Like Feb 2009).
	if(RSCalWeek <= 5 && RSCalWeekday == 7 && RSCalFirstWeekDay === 0){RSCalBuilderHTML += '<tr><td></td></tr>';}
	RSCalBuilderHTML += '</table>';

	//Display the Calendar.
	document.getElementById(num + 'cals' + n).innerHTML = RSCalBuilderHTML;
}

function RSCalShowToolTip(tip,m){
	if(m==1){
		document.getElementById(tip).className = 'toolTipShow';
	}
	else{
		document.getElementById(tip).className = 'toolTip';
	}
}

//Adjust the Dates
function RSCalSetDates(num){
	RSCalObj['RSCal' + num].RSCalArrival = document.getElementById('arrivalDate' + num);
	RSCalObj['RSCal' + num].RSCalDeparture = document.getElementById('departureDate' + num);

	if(!RSCalObj['RSCal' + num].RSCalArrival.innerHTML){
		RSCalObj['RSCal' + num].RSCalArrivalDate = RSCalObj['RSCal' + num].RSCalMinOutStay;
		RSCalObj['RSCal' + num].RSCalArrival.innerHTML = (RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth() + 1)  + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear();
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (new Number(RSCalObj['RSCal' + num].RSCalArrivalDate.getDate()) + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1)  + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
		RSCalObj['RSCal' + num].RSCalDefaultStay = Math.round((RSCalObj['RSCal' + num].RSCalDepartureDate - RSCalObj['RSCal' + num].RSCalArrivalDate) / (1000 * 60 * 60 * 24));
	}

	if(RSCalObj['RSCal' + num].RSCalArrival.innerHTML != RSCalObj['RSCal' + num].RSCalOldArrivalDate || RSCalObj['RSCal' + num].RSCalDefaultStay != RSCalObj['RSCal' + num].RSCalOldDefaultStay){ 
		RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML);
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
	}
	if(RSCalObj['RSCal' + num].RSCalDeparture.innerHTML != RSCalObj['RSCal' + num].RSCalOldDepartureDate){
		RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML);
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalDeparture.innerHTML);
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
		RSCalObj['RSCal' + num].RSCalDefaultStay = Math.round((RSCalObj['RSCal' + num].RSCalDepartureDate - RSCalObj['RSCal' + num].RSCalArrivalDate) / (1000 * 60 * 60 * 24));
	}

	if(new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML) < RSCalObj['RSCal' + num].RSCalMinOutStay){
		if(RSCalObj['RSCal' + num].RSCalFirstRun == false){
			alert('The arrival date you chose, ' + RSCalObj['RSCal' + num].RSCalArrival.innerHTML + ' is before the first night reservation are accepted.\nYour reservation dates have been adjusted, your start date has been moved to the first bookable day.\n\nPlease make a new selection.');
		}
		RSCalObj['RSCal' + num].RSCalArrivalDate = RSCalObj['RSCal' + num].RSCalMinOutStay;
		RSCalObj['RSCal' + num].RSCalArrival.innerHTML = (RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth() + 1)  + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear();
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
	}

	if(new Date(RSCalObj['RSCal' + num].RSCalDeparture.innerHTML) > new Date(new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay.getFullYear()), new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay.getMonth()), new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay.getDate() + 1))){
		if(RSCalObj['RSCal' + num].RSCalFirstRun == false){
			alert('The departure date you chose, ' + RSCalObj['RSCal' + num].RSCalDeparture.innerHTML + ' is after the last night reservation are accepted.\nYour reservation dates have been adjusted, your end date has been moved to the last bookable day.\n\nPlease make a new selection.');
		}
		RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay).getFullYear(), new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay).getMonth(), new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay).getDate() - RSCalObj['RSCal' + num].RSCalDefaultStay + 1);
		RSCalObj['RSCal' + num].RSCalArrival.innerHTML = (RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth() + 1)  + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear();
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalMaxOutStay.getFullYear(), RSCalObj['RSCal' + num].RSCalMaxOutStay.getMonth(), (RSCalObj['RSCal' + num].RSCalMaxOutStay.getDate() + 1));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() +1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
	}

	if(RSCalObj['RSCal' + num].RSCalDefaultStay > RSCalObj['RSCal' + num].RSCalProperties.MaxStay){
		if(RSCalObj['RSCal' + num].RSCalFirstRun == false){
			alert('You have selected ' + RSCalObj['RSCal' + num].RSCalDefaultStay + ' nights. The maximum number of nights for this unit is ' + RSCalObj['RSCal' + num].RSCalProperties.MaxStay + '.\nYour reservation dates have been adjusted, your reservation has been shortened to the maximum number of nights.\n\nPlease make a new selection.');
		}
		RSCalObj['RSCal' + num].RSCalDefaultStay = RSCalObj['RSCal' + num].RSCalProperties.MaxStay;
		RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML);
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
	}
	if(RSCalObj['RSCal' + num].SingleUnit === true && RSCalObj['RSCal' + num].RSCalBookable === true){
		RSCalCheckMinStay(num);
	}
	RSCalDrawForm(num);
	RSCalObj['RSCal' + num].RSCalOldArrivalDate = RSCalObj['RSCal' + num].RSCalArrival.innerHTML;
	RSCalObj['RSCal' + num].RSCalOldDepartureDate = RSCalObj['RSCal' + num].RSCalDeparture.innerHTML;			
	RSCalObj['RSCal' + num].RSCalOldDefaultStay = RSCalObj['RSCal' + num].RSCalDefaultStay;
	RSCalObj['RSCal' + num].RSCalArrivalDay = new Date(RSCalObj['RSCal' + num].RSCalOldArrivalDate).getDate();
	RSCalObj['RSCal' + num].RSCalArrivalMonth = new Date(RSCalObj['RSCal' + num].RSCalOldArrivalDate).getMonth();
	RSCalObj['RSCal' + num].RSCalArrivalYear = new Date(RSCalObj['RSCal' + num].RSCalOldArrivalDate).getFullYear();
	RSCalDrawCalendars(RSCalObj['RSCal' + num].RSCalArrivalYear, RSCalObj['RSCal' + num].RSCalArrivalMonth, num);
	RSCalBookingError("no", num);
	RSCalObj['RSCal' + num].RSCalFirstRun = false;
}


function RSCalDrawForm(num){
	for(i = 0; i<RSCalObj['RSCal' + num].RSCalProperties.MaxStay; i++){
		if(i == 0){RSCalObj['RSCal' + num].RSCalStayOptions = '<select name="leinghtOfStay' + num + '" id="leinghtOfStay' + num + '" onchange="RSCalObj.RSCal' + num + '.RSCalDefaultStay = document.getElementById(\'leinghtOfStay' + num + '\').value; RSCalSetDates(' + num + ');">';}
		if(i == RSCalObj['RSCal' + num].RSCalDefaultStay - 1){RSCalObj['RSCal' + num].RSCalStayOptions +=' <option selected="selected" value="' + (i+1) + '">' + (i+1) + '</option>';}
		else{
			RSCalObj['RSCal' + num].RSCalStayOptions +='<option value="' + (i+1) + '">' + (i+1) + '</option>';
		}
	}
	for(i = 0; i<(RSCalObj['RSCal' + num].RSCalProperties.MaxAdults); i++){
		if(i == 0){RSCalObj['RSCal' + num].RSCalAdults = '<select onchange="RSCalCheckCapacity(' + num + ', 0)" name="adults' + num + '" id="adults' + num + '">';}
		if(i == RSCalObj['RSCal' + num].RSCalProperties.NumberAdults - 1){RSCalObj['RSCal' + num].RSCalAdults += '<option selected="selected" value="' + (i+1) + '">' + (i+1) + '</option>';}
		else{
			RSCalObj['RSCal' + num].RSCalAdults +='<option value="' + (i+1) + '">' + (i+1) + '</option>';
		}
	}
	if(RSCalObj['RSCal' + num].RSCalProperties.MaxChildren != 0){
		RSCalObj['RSCal' + num].RSCalKids1 = '<strong>Children:</strong>';
		for(i = 0; i<=(RSCalObj['RSCal' + num].RSCalProperties.MaxChildren); i++){
			if(i == 0){RSCalObj['RSCal' + num].RSCalKids2 = '<select onchange="RSCalCheckCapacity(' + num + ', 0)" name="children' + num + '" id="children' + num + '">';}
			if(i == RSCalObj['RSCal' + num].RSCalProperties.NumberChildren){RSCalObj['RSCal' + num].RSCalKids2 +='<option selected="selected" value="' + i + '">' + i + '</option>';}
			else{
				RSCalObj['RSCal' + num].RSCalKids2 +='<option value="' + i + '">' + i + '</option>';
			}
		}
		RSCalObj['RSCal' + num].RSCalKids2 += '</select>';
	}
	else{RSCalObj['RSCal' + num].RSCalKids1 = ""; RSCalObj['RSCal' + num].RSCalKids2 = "";}
	document.getElementById('lStay' + num).innerHTML = RSCalObj['RSCal' + num].RSCalStayOptions + '</select>';
	document.getElementById('adult' + num).innerHTML = RSCalObj['RSCal' + num].RSCalAdults + '</select>';
	document.getElementById('kids1' + num).innerHTML = RSCalObj['RSCal' + num].RSCalKids1;
	document.getElementById('kids2' + num).innerHTML = RSCalObj['RSCal' + num].RSCalKids2;

}

function RSCalCheckCapacity(num, silent){
	
	if (RSCalObj['RSCal' + num].RSCalProperties.MaxChildren > 0){
		occReq = new Number(document.getElementById('adults' + num).value) + new Number(document.getElementById('children' + num).value);
	}
	else{
		occReq = new Number(document.getElementById('adults' + num).value);
	}
	
	if(new Number(occReq) > RSCalObj['RSCal' + num].RSCalProperties.Capacity){
		RSCalObj['RSCal' + num].RSCalCapErrorMsg = "The number of people selected exceeds the maximum capacity for this unit type.\n";
		RSCalObj['RSCal' + num].RSCalCapErrorMsg += "The maximum Capacity for this unit is " + RSCalObj['RSCal' + num].RSCalProperties.Capacity + ".\n\n";
		RSCalObj['RSCal' + num].RSCalCapError = 1;
		if(silent == 0){
			alert(RSCalObj['RSCal' + num].RSCalCapErrorMsg);
		}
	}
	else{
		RSCalObj['RSCal' + num].RSCalCapErrorMsg =+ "";
		RSCalObj['RSCal' + num].RSCalCapError = 0;
	}
}

//Set the highlights
function RSCalHighlightSelected(num){
	for (i = 0; i < RSCalObj['RSCal' + num].RSCalRemoveHighlight.length; i++) {
		var RSCalHighlightDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalYear, RSCalObj['RSCal' + num].RSCalArrivalMonth, RSCalObj['RSCal' + num].RSCalArrivalDay + i);
		if (RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalObj['RSCal' + num].RSCalRemoveHighlight[i] && RSCalObj['RSCal' + num].RSCalAvailable[j] <= 0) {
			if (document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i])) {
				document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className = 'booked';
			}
			RSCalObj['RSCal' + num].RSCalBookedErrorCount++;
			if (RSCalObj['RSCal' + num].RSCalBookedErrorCount == 1) {
				RSCalObj['RSCal' + num].RSCalBookedErrorMsg += 'You have selected nights that do not have any availability.\n';
				RSCalObj['RSCal' + num].RSCalBookedErrorMsg += 'The following nights are already booked:\n\n';
			}
			RSCalObj['RSCal' + num].RSCalBookedErrorMsg += RSCalHighlightDate.getMonth() + '/' + RSCalHighlightDate.getDate() + '/' + RSCalHighlightDate.getFullYear() + '\n';
			RSCalObj['RSCal' + num].RSCalDisplayError = 0;
			RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = RSCalHighlighted;
			alreadySet = 1;
			RSCalHighlightID++;
		}
		else 
			if ((RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHighlighted && RSCalObj['RSCal' + num].RSCalAvailable[j] > 0) || (RSCalObj['RSCal' + num].RSCalDateID[j] != RSCalHighlighted && alreadySet == 0 && j == (RSCalObj['RSCal' + num].RSCalDateID.length - 1))) {
				if (document.getElementById(RSCalHighlighted)) {
					document.getElementById(RSCalHighlighted).className = 'selected';
				}
				RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = RSCalHighlighted;
				RSCalHighlightID++;
			}
		RSCalObj['RSCal' + num].RSCalRemoveHighlight[i] = RSCalHighlighted;
	}
	for (i = 0; i < RSCalObj['RSCal' + num].RSCalRemoveHighlight.length; i++) {
		if (document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]) && document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className == ('booked2' || 'booked')) {
			document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className = 'booked';
		}
		else 
			if (document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]) && document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className == 'disabled') {
				document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className = 'disabled';
			}
			else 
				if (document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]) && document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className != ('booked2' || 'booked' || 'disabled')) {
					document.getElementById(RSCalObj['RSCal' + num].RSCalRemoveHighlight[i]).className = '';
				}
	}
	RSCalObj['RSCal' + num].RSCalBookedErrorMsg = "";
	RSCalObj['RSCal' + num].RSCalBookedErrorCount = 0;
	RSCalHighlightID = 0;
	RSCalObj['RSCal' + num].RSCalSelectedCount = new Array();
	RSCalObj['RSCal' + num].RSCalRemoveHighlight = new Array();
	for (i = 0; i < RSCalObj['RSCal' + num].RSCalDefaultStay; i++) {
		var RSCalHighlightDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalYear, RSCalObj['RSCal' + num].RSCalArrivalMonth, RSCalObj['RSCal' + num].RSCalArrivalDay + i);
		var RSCalHighlightDay = RSCalHighlightDate.getDate();
		var RSCalHighlightMonth = RSCalHighlightDate.getMonth();
		var RSCalHighlightYear = RSCalHighlightDate.getFullYear();
		var RSCalHighlighted = new String(RSCalHighlightYear);
		if ((RSCalHighlightMonth + 1) < 10) {
			RSCalHighlighted += '0' + (RSCalHighlightMonth + 1);
		}
		else {
			RSCalHighlighted += (RSCalHighlightMonth + 1);
		}
		if (RSCalHighlightDay < 10) {
			RSCalHighlighted += '0' + RSCalHighlightDay;
		}
		else {
			RSCalHighlighted += RSCalHighlightDay;
		}
		RSCalHighlighted += num;
		var alreadySet = 0;
		for (j = 0; j < RSCalObj['RSCal' + num].RSCalDateID.length; j++) {
			if (RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHighlighted && RSCalObj['RSCal' + num].RSCalAvailable[j] <= 0) {
				if (document.getElementById(RSCalHighlighted)) {
					document.getElementById(RSCalHighlighted).className = 'booked2';
				}
				RSCalObj['RSCal' + num].RSCalBookedErrorCount++;
				if (RSCalObj['RSCal' + num].RSCalBookedErrorCount == 1) {
					RSCalObj['RSCal' + num].RSCalBookedErrorMsg += 'You have selected nights that do not have any availability.\n';
					RSCalObj['RSCal' + num].RSCalBookedErrorMsg += 'The following nights are already booked:\n\n';
				}
				RSCalObj['RSCal' + num].RSCalBookedErrorMsg += (RSCalHighlightDate.getMonth() + 1) + '/' + RSCalHighlightDate.getDate() + '/' + RSCalHighlightDate.getFullYear() + '\n';
				RSCalObj['RSCal' + num].RSCalDisplayError = 0;
				RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = RSCalHighlighted;
				alreadySet = 1;
				RSCalHighlightID++;
			}
			else 
				if ((RSCalObj['RSCal' + num].RSCalDateID[j] == RSCalHighlighted && RSCalObj['RSCal' + num].RSCalAvailable[j] > 0) || (RSCalObj['RSCal' + num].RSCalDateID[j] != RSCalHighlighted && alreadySet == 0 && j == (RSCalObj['RSCal' + num].RSCalDateID.length - 1))) {
					if (document.getElementById(RSCalHighlighted)) {
						document.getElementById(RSCalHighlighted).className = 'selected';
					}
					RSCalObj['RSCal' + num].RSCalSelectedCount[RSCalHighlightID] = RSCalHighlighted;
					RSCalHighlightID++;
				}
			RSCalObj['RSCal' + num].RSCalRemoveHighlight[i] = RSCalHighlighted;
		}
	}
}


//Display an error if nights selected are already booked
function RSCalBookingError(s, num){
	RSCalCheckCapacity(num, "1");
	if(RSCalObj['RSCal' + num].RSCalBookedErrorCount !== 0 && RSCalObj['RSCal' + num].RSCalFirstRun == false || RSCalObj['RSCal' + num].RSCalCapError > 0){
		if(RSCalObj['RSCal' + num].RSCalDisplayError == 0){
			if(RSCalObj['RSCal' + num].RSCalCapError > 0){
				RSCalObj['RSCal' + num].RSCalBookedErrorMsg += RSCalObj['RSCal' + num].RSCalCapErrorMsg;
			}
			RSCalObj['RSCal' + num].RSCalBookedErrorMsg += '\nPlease make a new selection.';
			RSCalObj['RSCal' + num].RSCalDisplayError++;
		}
		alert(RSCalObj['RSCal' + num].RSCalBookedErrorMsg);
		RSCalObj['RSCal' + num].RSCalFirstRun = false;
	}
	else if(RSCalObj['RSCal' + num].RSCalBookedErrorCount == 0 && s == "go"){
		if(RSCalObj[RSCalID].Page != "undefined"){
			var RSCalPassInfo = RSCalObj['RSCal' + num].Page + "http%3a%2f%2frezstream.net%2fbooking_availability%2fCalendarPassThru.aspx%3f";
			RSCalPassInfo += "acct%3d" + RSCalObj['RSCal' + num].RSCalAccount;
			RSCalPassInfo += "%26prop%3d" + RSCalObj['RSCal' + num].RSCalProperty;
			RSCalPassInfo += "%26unit%3d" + RSCalObj['RSCal' + num].RSCalUnit;
			RSCalPassInfo += "%26na%3d" + document.getElementById("adults" + num).value;
			RSCalPassInfo += "%26ad%3d" + new String(RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth() + 1) + "%2f" + RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + "%2f" + RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear();
			RSCalPassInfo += "%26dd%3d" + new String(RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "%2f" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "%2f" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
			if(RSCalObj['RSCal' + num].RSCalKids2 == ""){
				RSCalPassInfo += "%26nc%3d0";
			}
			else{
				RSCalPassInfo += "%26nc%3d" + document.getElementById('children' + num).value;
			}
		}
		else{
			var RSCalPassInfo = "http://rezstream.net/booking_availability/CalendarPassThru.aspx?";
			RSCalPassInfo += "acct=" + RSCalObj['RSCal' + num].RSCalAccount;
			RSCalPassInfo += "&prop=" + RSCalObj['RSCal' + num].RSCalProperty;
			RSCalPassInfo += "&unit=" + RSCalObj['RSCal' + num].RSCalUnit;
			RSCalPassInfo += "&na=" + document.getElementById("adults" + num).value;
			RSCalPassInfo += "&ad=" + new String(RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear();
			RSCalPassInfo += "&dd=" + new String(RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
			if(RSCalObj['RSCal' + num].RSCalKids2 == ""){
				RSCalPassInfo += "&nc=0";
			}
			else{
				RSCalPassInfo += "&nc=" + document.getElementById('children' + num).value;
			}
		}
		if(RSCalObj['RSCal' + num].New == "1"){
			window.open(RSCalPassInfo);
		}
		else{
			location = RSCalPassInfo;
		}
	}
}

//Set the number of calendars
function RSCalDrawCalendars(year, m, num){
	RSCalObj['RSCal' + num].RSCalDisplayYear = year;
	RSCalObj['RSCal' + num].RSCalDisplayMonth = m;
	RSCalHighlightID = new Array();
	for(var i=0; i<RSCalObj['RSCal' + num].RSCalCnt; i++){
		if(!document.getElementById(num + 'cals' + i)){
			document.getElementById(num + 'cals').innerHTML += '<div style="float:left;" id="' + num + 'cals' + i + '"><div>';
		}
		RSCalBuilder(new Date(year, m + i , 1), i, num);
	}
	if(RSCalObj['RSCal' + num].RSCalBookable === true){
		RSCalHighlightSelected(num);
	}	
}

function RSCalSetNavTip(msg, num){
	document.getElementById("RSCalNavTip" + num).innerHTML = msg;
}

function RSCalCheckMinStay(num){
	if(RSCalObj['RSCal' + num].RSCalDefaultStay <= 0){RSCalObj['RSCal' + num].RSCalDefaultStay = 1;
		RSCalObj['RSCal' + num].RSCalDefaultStay = RSCalObj['RSCal' + num].RSCalMinStayDay[RSCalObj['RSCal' + num].RSCalSelectedCount[0]];
		RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML);
		RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
		RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
	}
	var RSCalMinStayVal = 0;
	RSCalObj['RSCal' + num].RSCalMinStayTest = new Array();
	for(i=0; i<RSCalObj['RSCal' + num].RSCalDefaultStay; i++){
		var testDay = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + i));
		for(j=0; j<RSCalObj['RSCal' + num].RSCalMinStay.D.length; j++){
			if (new Date(RSCalObj['RSCal' + num].RSCalMinStay.D[j]) <= testDay && (typeof(RSCalObj['RSCal' + num].RSCalMinStay.D[j + 1]) == "undefined" || new Date(RSCalObj['RSCal' + num].RSCalMinStay.D[j + 1]) > testDay)) {
				switch (testDay.getDay()) {
					case 0:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D1[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 1:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D2[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 2:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D3[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 3:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D4[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 4:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D5[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 5:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D6[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
					case 6:
						if (RSCalObj['RSCal' + num].RSCalMinStay.D7[j] == -1) {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStayWeekend[j];
						}
						else {
							RSCalObj['RSCal' + num].RSCalMinStayTest[i] = RSCalObj['RSCal' + num].RSCalMinStay.MinStay[j];
						}
						break;
				}
				
			}
			if(RSCalObj['RSCal' + num].RSCalDefaultStay < new Number(RSCalObj['RSCal' + num].RSCalMinStayTest[i])){
				if(RSCalObj['RSCal' + num].RSCalFirstRun == false){
					alert('You have selected ' + RSCalObj['RSCal' + num].RSCalDefaultStay + ' nights. The minimum number of nights for this unit during this period is ' + RSCalObj['RSCal' + num].RSCalMinStayTest[i] + '.\nYour reservation dates have been adjusted, your reservation has been lenghtened to the minimum number of nights.\n\nPlease make a new selection.');
				}
				RSCalObj['RSCal' + num].RSCalDefaultStay = RSCalObj['RSCal' + num].RSCalMinStayTest[i];
				RSCalObj['RSCal' + num].RSCalArrivalDate = new Date(RSCalObj['RSCal' + num].RSCalArrival.innerHTML);
				RSCalObj['RSCal' + num].RSCalDepartureDate = new Date(RSCalObj['RSCal' + num].RSCalArrivalDate.getFullYear(), RSCalObj['RSCal' + num].RSCalArrivalDate.getMonth(), (RSCalObj['RSCal' + num].RSCalArrivalDate.getDate() + new Number(RSCalObj['RSCal' + num].RSCalDefaultStay)));
				RSCalObj['RSCal' + num].RSCalDeparture.innerHTML = (RSCalObj['RSCal' + num].RSCalDepartureDate.getMonth() + 1) + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getDate() + "/" + RSCalObj['RSCal' + num].RSCalDepartureDate.getFullYear();
				RSCalMinStayVal++;
			}
		}
	}
}

function RSCalDropDownInit(CAL, NUM){
	if (CAL == 0) {
		DDFIELD = "arrivalDate" + NUM;
	}
	else {
		DDFIELD = "departureDate" + NUM;
	}
	datesplit = document.getElementById(DDFIELD).innerHTML.split("/");
	day = datesplit[1];
	month = datesplit[0] - 1;
	year = datesplit[2];
	if ((month + 1) < 10) {
		monthString = new String("0" + (month + 1));
	}
	else {
		monthString = new String(month + 1);
	}
	nextMonthDate = new Date(year, month + 1, day);
	nextMonthDay = nextMonthDate.getDate();
	nextMonthMonth = nextMonthDate.getMonth();
	nextMonthYear = nextMonthDate.getFullYear();
	if (nextMonthDay < 10) {
		nextMonthDayString = "0" + new String(nextMonthDay);
	}
	else {
		nextMonthDayString = nextMonthDay;
	}
	if ((nextMonthMonth + 1) < 10) {
		nextMonthMonthString = "0" + new String(nextMonthMonth + 1);
	}
	else {
		nextMonthMonthString = new String(nextMonthMonth + 1);
	}
	nextMonthDateString = nextMonthMonthString + "/" + nextMonthDayString + "/" + new String(nextMonthYear);
	prevMonthDate = new Date(year, month - 1, day);
	prevMonthDay = prevMonthDate.getDate();
	prevMonthMonth = prevMonthDate.getMonth();
	prevMonthYear = prevMonthDate.getFullYear();
	if (prevMonthDay < 10) {
		prevMonthDayString = "0" + new String(prevMonthDay);
	}
	else {
		prevMonthDayString = prevMonthDay;
	}
	if ((prevMonthMonth + 1) < 10) {
		prevMonthMonthString = "0" + new String(prevMonthMonth + 1);
	}
	else {
		prevMonthMonthString = new String(prevMonthMonth + 1);
	}
	prevMonthDateString = prevMonthMonthString + "/" + prevMonthDayString + "/" + new String(prevMonthYear);
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
	this_month = new Date(year, month, 1);
	next_month = new Date(year, month + 1, 1);
	RSCalDrawDropDown(CAL, NUM);
}

function RSCalDropDownView(CAL, NUM){
	if(document.getElementById("dropDown" + new String(CAL) + new String(NUM)).style.visibility == "hidden"){
		document.getElementById("dropDown" + new String(CAL) + new String(NUM)).style.visibility = "visible";
	}
	else{
		document.getElementById("dropDown" + new String(CAL) + new String(NUM)).style.visibility = "hidden";
	}
}

function RSCalDrawDropDown(CAL, NUM){
	// Find out when this month starts and ends.
	if (CAL == 0) {
		DDFIELD = "'arrivalDate";
	}
	else {
		DDFIELD = "'departureDate";
	}
	first_week_day = this_month.getDay();
	days_in_this_month = Math.round((next_month.getTime() - this_month.getTime()) / (1000 * 60 * 60 * 24));
	calendar_html = '<html><head><link rel=stylesheet type="text/css" href="' + RSCalObj[RSCalID].RSCalCSSURL + '" /></head><body class="RSCalDropDownCal"><link type="text/css" rel="stylesheet" href="' + RSCalObj["RSCal" + NUM].RSCalCSSURL + '" /></head>';
	calendar_html += '<table style="width:15em; margin:auto;">';
	if (month == new Date().getMonth() && year == new Date().getFullYear()) {
		calendar_html += '<tr><td></td>';
	}
	else {
		calendar_html += '<tr><td id="Previous"><a onclick="parent.document.getElementById(' + DDFIELD + NUM + '\').innerHTML = \'' + prevMonthDateString + '\'; parent.RSCalDropDownInit(' + new String(CAL) + ', ' + new String(NUM) + ');">&lt;</a></td>';
	}
	calendar_html += '<td colspan="5" style="text-size:1.1em; font-weight:bold;">' + months[month] + '&nbsp;' + year + '</td>';
	if (month == RSCalObj['RSCal' + NUM].RSCalMaxOutStay.getMonth() && year == RSCalObj['RSCal' + NUM].RSCalMaxOutStay.getFullYear()) {
		calendar_html += '<td></td></tr>';
	}
	else {
		calendar_html += '<td id="Next"><a onclick="parent.document.getElementById(' + DDFIELD + NUM + '\').innerHTML = \'' + nextMonthDateString + '\'; parent.RSCalDropDownInit(' + new String(CAL) + ', ' + new String(NUM) + ');">&gt;</a></td></tr>';
	}
	calendar_html += '<tr><td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td></tr>';
	calendar_html += '<tr>';
	
	// Fill the first week of the month with the appropriate number of blanks.
	for (week_day = 0; week_day < first_week_day; week_day++) {
		calendar_html += '<td> </td>';
	}
	
	week_day = first_week_day;
	for (day_counter = 1; day_counter <= days_in_this_month; day_counter++) {
		week_day %= 7;
		if (week_day == 0) 
			calendar_html += '</tr><tr>';
		
		if (day_counter < 10) {
			var day_counterString = new String("0" + day_counter);
		}
		else {
			var day_counterString = new String(day_counter);
		}
		var dateString = new String(monthString + "/" + day_counterString + "/" + new String(year));
		var RSCalDDHTMLDateID = new String(year) + monthString + day_counterString + NUM;
		
		if (RSCalDDHTMLDateID < RSCalObj['RSCal' + NUM].RSCalMinOutID || RSCalDDHTMLDateID > RSCalObj['RSCal' + NUM].RSCalMaxOutID) {
			if (new Date().getFullYear() == year && new Date().getMonth() == month && new Date().getDate().toString() == day_counter) {
				calendar_html += '<td><p class="RSCalNonBookable" style="font-weight:bold;">' + day_counter + '</p></td>';
			}
			else {
				calendar_html += '<td><p class="RSCalNonBookable">' + day_counter + '</p></td>';
			}
		}
		
		// Do something different for the current day.
		else 
			if (RSCalDDHTMLDateID >= RSCalObj['RSCal' + NUM].RSCalMinOutID || RSCalDDHTMLDateID <= RSCalObj['RSCal' + NUM].RSCalMaxOutID) {
				if (new Date().getFullYear() == year && new Date().getMonth() == month && new Date().getDate().toString() == day_counter) {
					calendar_html += '<td><p class="RSCalDDDays" style="font-weight:bold;"><a onclick="parent.document.getElementById(' + DDFIELD + NUM + '\').innerHTML = new String(\'' + dateString + '\'); parent.RSCalSetDates(' + NUM + '); parent.RSCalDropDownView(' + new String(CAL) + ', ' + new String(NUM) + ')">' + day_counter + '</a></p></td>';
				}
				else {
					calendar_html += '<td><p class="RSCalDDDays"><a onclick="parent.document.getElementById(' + DDFIELD + NUM + '\').innerHTML = new String(\'' + dateString + '\'); parent.RSCalSetDates(' + NUM + '); parent.RSCalDropDownView(' + new String(CAL) + ', ' + new String(NUM) + ')">' + day_counter + '</a></p></td>';
				}
			}
		week_day++;
	}
	
	calendar_html += '</tr>';
	calendar_html += '<tr><td colspan="7" class=RSCalDorpDownClose><a onclick="parent.RSCalDropDownView(' + new String(CAL) + ', ' + new String(NUM) + ');">Close</a></td></tr>';
	calendar_html += '</table></html>';
	
	// Display the calendar.
	var ifrme = document.getElementById('dropDown' + new String(CAL) + new String(NUM));
	var ifrm = ifrme.contentDocument || ifrme.contentWindow;
	if (ifrm.document) {
		ifrm = ifrm.document;
	}
	ifrm.open("text/html");
	ifrm.write(calendar_html);
	ifrm.close();
}