//set up


		YAHOO.widget.Calendar.prototype.renderOutOfBoundsDate = function(workingDate, cell) {
			YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_OOM);
			cell.innerHTML=workingDate.getDate();
			return YAHOO.widget.Calendar.STOP_RENDER;
		};
		

		YAHOO.widget.Calendar.prototype.renderBookedCell = function(workingDate, cell) {
		    cell.innerHTML = workingDate.getDate();
		    YAHOO.util.Dom.addClass(cell, "confirmedBooking"); 
		    return YAHOO.widget.Calendar.STOP_RENDER; 
		};

		YAHOO.widget.Calendar.prototype.renderOnHoldCell = function(workingDate, cell) {
		    cell.innerHTML = workingDate.getDate();
		    YAHOO.util.Dom.addClass(cell, "onholdBooking"); 
		    return YAHOO.widget.Calendar.STOP_RENDER; 
		};
		
		YAHOO.widget.Calendar.prototype.bookingStartDate = null;
		YAHOO.widget.Calendar.prototype.bookingEndDate = null;
		
		
		var selectDateFunction = function (type,args,obj){

			c = obj;
			
			var d =  YAHOO.widget.DateMath.getDate(args[0][0][0], args[0][0][1] - 1, args[0][0][2]);
			
			if (null != c.bookingStartDate && null != c.bookingEndDate) {

				c.deselectAll();
				
				c.bookingStartDate = d;
				c.bookingEndDate = null;
				
				var d1 = (d.getMonth()+1) +"/"+ d.getDate() + "/" + d.getFullYear();
				c.cfg.setProperty('selected', d1, false);
				
				
			} else if ( null != c.bookingStartDate && null == c.bookingEndDate ) {
				
				c.bookingEndDate = d;
				var d1 = (c.bookingStartDate <= c.bookingEndDate ? c.bookingStartDate : c.bookingEndDate );				
				var d2 = (c.bookingStartDate > c.bookingEndDate ? c.bookingStartDate : c.bookingEndDate );				
				
				var intervalString = (d1.getMonth()+1) +"/"+ d1.getDate() + "/" + d1.getFullYear() + "-" +(d2.getMonth()+1) +"/"+ d2.getDate() + "/" + d2.getFullYear();
				
				c.cfg.setProperty('selected', intervalString, false);

				
				
			} else if (null == c.bookingStartDate){
				c.bookingStartDate = d;
				var d1 = (d.getMonth()+1) +"/"+ d.getDate() + "/" + d.getFullYear();
				c.cfg.setProperty('selected', d1, false);				
			}
			c.render();
			
		};
		
		var deselectDateFunction = function (type,args,obj){
			c = obj;
			if (obj.getSelectedDates().length > 0 ){
				
		        var cfgSelected = 'selected',
	    	        selected = c.cfg.getProperty(cfgSelected),
	        	    count = selected.length,
	            	sel = selected.concat();
	
		        if (c.parent) {
	    	        c.parent.cfg.setProperty(cfgSelected, []);
		        } else {
	    	        c.cfg.setProperty(cfgSelected, []);
	        	}
				
			}
			c.render();		
		};

		
		function roomListCalendarFactory(calendarId,calendarContainerId,bookedDates){
			var c = new YAHOO.widget.Calendar(calendarId, calendarContainerId );			
			c.selectEvent.subscribe(selectDateFunction, c, true);
			c.deselectEvent.subscribe(deselectDateFunction,c,true);	
			
			for(var i=0; i < bookedDates.length; i++){
				c.addRenderer(bookedDates[i],c.renderBookedCell);	
			}
			c.render();
			window['_' + calendarId] = c;
		}

