// JavaScript Document


var planManager = Class.create();

planManager.prototype = {
	
	initialize : function(){
		this.planField = $("jsPlanId");
		this.dateField = $("jsDate");
		this.roomsField = $("jsRooms");
		this.guestsField = $("jsGuests");
		if(this.guestsField.value == 0){
			this.guestsField.value = $("guests").value;
		}
		
		this.addObserver();
	},
	
	addObserver : function(){
		Event.observe($("plan"), "change", this.changePlan.bind(this));
		Event.observe($("rooms"), "change", this.changeRooms.bind(this));
		Event.observe($("guests"), "change", this.changeGuests.bind(this));
	},
	
	removeObserver : function(){
		Event.stopObserving($("plan"), "change", this.changePlan);
		Event.stopObserving($("rooms"), "change", this.changeRooms);
		Event.stopObserving($("guests"), "change", this.changeGuests);
	},
	
	changePlan : function(){
		//this.update($("plan").value, this.dateField.value, this.roomsField.value, this.guestsField.value);
		this.update($("plan").value, this.dateField.value, $("rooms").value, $("guests").value);
	},
	
	changeDate : function(inDate){
		this.update(this.planField.value, inDate, this.roomsField.value, this.guestsField.value);
	},
	
	changeRooms : function(){
		this.update(this.planField.value, this.dateField.value, $("rooms").value, this.guestsField.value);
	},
	
	changeGuests : function(){
		this.update(this.planField.value, this.dateField.value, this.roomsField.value, $("guests").value);
	},
	
	update : function(inPlan, inDate, inRooms, inGuests){
		this.removeObserver();
		
		this.planField.value = inPlan;
		this.roomsField.value = inRooms;
		this.guestsField.value = inGuests;
		
		
		urlPrefix = "./calendar_" + inPlan + "_" + inDate + "_" + inRooms + "_" + inGuests;
		headerUrl = urlPrefix + "_h.html";
		mainlUrl = urlPrefix + "_m.html"
		
		
		this.updateHeader(inDate);
		this.updateCalendar(inDate);
	},
	
	updateHeader: function(inDate){
		urlPrefix = "./calendar_" + this.planField.value + "_" + inDate + "_" + this.roomsField.value + "_" + this.guestsField.value;
		headerUrl = urlPrefix + "_h.html";
		
		new Ajax.Request(
				headerUrl,
				{
					method: 'get',
					onLoading: function(){
						$("calendarHeader").innerHTML = '<div style="text-align:center;"><img src="/hotel/reserve/images/ajax-loading.gif" width="32" height="32" /></div>';
					},
					onComplete: function(res){
						$("calendarHeader").innerHTML = res.responseText;
						calendarObserver();
					}.bind(this)
				}
			);
	},
	
	updateCalendar: function(inDate){
		urlPrefix = "./calendar_" + this.planField.value + "_" + inDate + "_" + this.roomsField.value + "_" + this.guestsField.value;
		mainlUrl = urlPrefix + "_m.html"
		new Ajax.Request(
				mainlUrl,
				{
					method: 'get',
					onLoading: function(){
						$("calendarMain").innerHTML = '<div style="text-align:center;"><img src="/hotel/reserve/images/ajax-loading.gif" width="32" height="32" /></div>';
					},
					onComplete: function(res){
						$("calendarMain").innerHTML = res.responseText;
					}.bind(this)
				}
			);
		
	}
	
}


function calendarObserver(isInit){
	objCalendar = {};
	objCalendar = new planManager();
	if(isInit){
		objCalendar.updateCalendar($("jsDate").value);
	}
}


var objCalendar = {};

Event.observe(window, "load", function(){ calendarObserver(true); });

