// JavaScript Document

// Mootools Library Needed

var OnlineReservationManager = {
	
	fAgeChildrenFieldNames : { 1: 'uid36',
							   2: 'uid37',
							   3: 'uid38',
							   4: 'uid39'},
							   
	fIsStatusBoxClosed : false,
	
	fCloseEffect: null,
	
	init: function(){
		// Check if fIsStatusBoxClosed
		OnlineReservationManager.checkIfSessionIsSet();
		// Check If Online Reservation 'Container' Exists
		if($$('div.online_reservation_form').length > 0){
			 OnlineReservationManager.getFormContent($$('div.online_reservation_form'));
		}
		// Select Box - Number Of Children -----------------------
		var select_children = $('children');
		if(select_children){
			select_children.addEvent('change', OnlineReservationManager.changeElementStateListener);
			OnlineReservationManager.changeElementState(select_children);
		}
		// -------------------------------------------------------
		// Check If Online Reservation Close Icon and Box Exists
		var close_link = $('online_reservation_close_link');
		var box = $$('div.page_panel_bottom_right')[0];
		if(close_link && box){
			OnlineReservationManager.fCloseEffect = new Fx.Morph(box, {
																		duration: 1000,
																		wait: true, 
																		transition: Fx.Transitions.Sine.easeOut,
																		onComplete: function(){
																			if(OnlineReservationManager.fIsStatusBoxClosed){
																				close_link.setStyle('background-position', '0px -11px');
																			}else{
																				close_link.setStyle('background-position', '0px 0px');
																			}
																		}
																	});
			close_link.addEvent('click', OnlineReservationManager.closeBoxListener);
		}
	},
	
	checkIfSessionIsSet: function(e){	
		var page_panels = $$('div.page_panel_bottom_right');
		if(page_panels && page_panels.length > 0){
			var cookie = Cookie.read('box');
			var page_panel = page_panels[0];
			var close_link = $('online_reservation_close_link');
			if(cookie == 'close'){
				page_panel.setStyle('margin-top', '116px');
				close_link.setStyle('background-position', '0px -11px');
				OnlineReservationManager.fIsStatusBoxClosed = true;
			} else {
				page_panel.setStyle('margin-top', '0px');
				OnlineReservationManager.fIsStatusBoxClosed = false;
				close_link.setStyle('background-position', '0px 0px');
			}
		}
	},
	
	getFormContent: function(elements){
		// Preparing AJAX CALL
		// Host To Ajax Request
		var host = window.location.host;
		// Paramter to Controller Dispatching (type, action, system_language)
		var type = 'online_reservation';
		var action = 'get_form_content';
		// -> Default System Language UID = 0 => ENGLISH
		var system_language_uid = 0;
		// -> Get System Language UID
		if($('system_language_uid')){
			system_language_uid = $('system_language_uid').value;
		}
		// -> Get Page Type (Homepage or Page Content)
		var page = 'page';
		if(!$('page_content_right')){
			var page = 'home';	
		}
		// Controller URL
		var url_controller = 'http://'+host+'/fileadmin/chesa_silva/php/online_reservation/controller_online_reservation.php';
		// Ajax Request 
		var req = new Request({  
				url: url_controller,
				async: false,
				method: 'post',
				data: 'type='+type+'&action='+action+'&system_language_uid='+system_language_uid+'&page='+page,
				onComplete: function(response){
					if(response == 'parameter_error'){
						alert('Error: Online Reservation: Invalid Parameters!');
						return false;
					}
					// Set Ajax Response To Html Content
					for(var i=0;i<elements.length;i++){
						elements[i].innerHTML = response;	
					}
					return true;
				}  
			}  
		).send();
	},
	
	// Listener of Select Box - Number Of Children
	changeElementStateListener: function(event){
		//OnlineReservationManager.changeElementState(this);
		event.preventDefault();
	},
	
	// Function of Select Box - Number Of Children
	changeElementState: function(select_element){
		if($$('div.online_reservation_form_children_age')[0] && $$('div.online_reservation')[0]){
			// Clear Content Node
			$$('div.online_reservation_form_children_age')[0].empty();
			// Create and Set DIV Element
			var div_title = document.createElement('div');
			div_title.className = 'online_reservation_form_title';
			var system_language_uid = '0';
			// -> Get System Language UID
			if($('system_language_uid')){
				system_language_uid = $('system_language_uid').value;
			}
			switch(system_language_uid){
				case '0':
					div_title.innerHTML = 'Alter Kinder';
					break;
				case '1':
					div_title.innerHTML = 'Age Children';
					break;
				case '2':
					div_title.innerHTML = 'Età Bambini';
					break;
				default:
					div_title.innerHTML = 'Age Children';
					break;
			}
			// Append Child
			$$('div.online_reservation_form_children_age')[0].appendChild(div_title);
			// Create and Set DIV and SELECT Element
			var div_field = null;
			var select_box = null;
			for(var i=1;i<=select_element.selectedIndex;i++){
				div_field = document.createElement('div');
				div_field.className = 'online_reservation_form_field';
				select_box = document.createElement('select');
				select_box.name = 'tx_powermail_pi1[' + OnlineReservationManager.fAgeChildrenFieldNames[i] + ']';
				select_box.id = 'children_age_' + i;
				select_box.className = 'select online_reservation_select';
				var option = null;
				for(var j=0;j<18;j++){
					option = document.createElement('option');
					if(j==0){
						option.innerHTML = '-';
						option.value = '-';
					}else{
						option.innerHTML = ''+(j-1);
						option.value = ''+(j-1);
					}
					select_box.appendChild(option);
				}
				// Append Child
				div_field.appendChild(select_box);
				// Append Child
				$$('div.online_reservation_form_children_age')[0].appendChild(div_field);
			}
			var input_hidden = null;
			var tmp = select_element.selectedIndex+1;
			for(var h=tmp;h<=4;h++){
				div_field = document.createElement('div');
				div_field.className = 'online_reservation_form_field';
				input_hidden = document.createElement('input');
				input_hidden.name = 'tx_powermail_pi1[' + OnlineReservationManager.fAgeChildrenFieldNames[h] + ']';
				input_hidden.type = 'hidden';
				input_hidden.value = '-';
				// Append Child
				div_field.appendChild(input_hidden);
				// Append Child
				$$('div.online_reservation_form_children_age')[0].appendChild(div_field);
			}
			// Display DIV
			$$('div.online_reservation_form_children_age')[0].setStyle('display', 'block');
			$$('div.online_reservation_bottom')[0].setStyle('width', '144px');
			if(select_element.selectedIndex == 0){
				// Hide DIV
				$$('div.online_reservation_form_children_age')[0].setStyle('display', 'none');
				$$('div.online_reservation_bottom')[0].setStyle('width', '430px');
			}
		}
	},
	
	// Listener Of Link to Close Box
	closeBoxListener: function(event){
		OnlineReservationManager.closeBox(this);
		event.preventDefault();
	},
	
	// Close Box Function
	closeBox: function(event){
		if(!OnlineReservationManager.fIsStatusBoxClosed){
			OnlineReservationManager.fCloseEffect.start({
														  'margin-top': [0, 116] 
														  });
			OnlineReservationManager.fIsStatusBoxClosed = true;
			Cookie.write('box', 'close');	
		} else {
			OnlineReservationManager.fCloseEffect.start({
														  'margin-top': [116, 0] 
														  });
			OnlineReservationManager.fIsStatusBoxClosed = false;
			Cookie.write('box', 'open');
		}
	}
	
};

// Mootools DOM ready
window.addEvent('domready', function(){
		OnlineReservationManager.init();
	}
);
