// JavaScript Document

// Mootools Library Needed

var OnlineReservationManager = {
	
	// System Language UID -> Default 0
	fSystemLanguageUID: 0,
	
	fNumberOfChildrenClassName: {0: 'powermail_uid35',
								 1: 'powermail_uid246',
								 2: 'powermail_uid274'},
	
	fNumberOfChildren: 4,
	
	fAgeChildrenFieldNames : {0: { 1: 'uid36',
   								   2: 'uid37',
								   3: 'uid38',
								   4: 'uid39'},
							  1: { 1: 'uid247',
							   	   2: 'uid248',
							   	   3: 'uid249',
							   	   4: 'uid250'},
							  2: { 1: 'uid275',
							   	   2: 'uid276',
							   	   3: 'uid277',
							   	   4: 'uid278'}},
							   
	fIsStatusBoxClosed : false,
	
	fCloseEffect: null,
	
	init: function(){
		// Get System Language UID
		if($('system_language_uid')){
			OnlineReservationManager.fSystemLanguageUID = parseInt($('system_language_uid').value);
		}
		// 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 -13px');
																			}else{
																				close_link.setStyle('background-position', '0px 0px');
																			}
																		}
																	});
			close_link.addEvent('click', OnlineReservationManager.closeBoxListener);		
		}
		// Conditions
		var number_of_children_class_name = OnlineReservationManager.fNumberOfChildrenClassName[OnlineReservationManager.fSystemLanguageUID];
		if ($$('.'+number_of_children_class_name).length>0){  
			$$('.'+number_of_children_class_name).each(function(el){	   
				new OnlineReservationCondition({num:0, element:el });
			});            
		}
	},
	
	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', '110px');
				close_link.setStyle('background-position', '0px -13px');
				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)
		var type = 'online_reservation';
		var action = 'get_form_content';
		// -> 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/php_contents/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='+OnlineReservationManager.fSystemLanguageUID+'&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';
			switch(OnlineReservationManager.fSystemLanguageUID){
				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);
			// Localized Age of Children field names
			var age_of_children_field_name = OnlineReservationManager.fAgeChildrenFieldNames[OnlineReservationManager.fSystemLanguageUID];
			// 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[' + age_of_children_field_name[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[' + age_of_children_field_name[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, 110] 
														  });
			OnlineReservationManager.fIsStatusBoxClosed = true;
			Cookie.write('box', 'close');	
		}else{
			OnlineReservationManager.fCloseEffect.start({
														  'margin-top': [110, 0] 
														  });
			OnlineReservationManager.fIsStatusBoxClosed = false;
			Cookie.write('box', 'open');	
		}
	}
	
};

var OnlineReservationCondition = new Class({
	Implements: [Options, Events],
	options: {
		element: null,
		num: null
	},
	initialize: function(options){
		this.setOptions(options);
		options.element.addEvent('change', function(e){ 		
			if(e) e.stop();
			var value = options.element.get('value');
			value = parseInt(value);
			if(isNaN(value)){
				value = 0;    
			}
			// Localized Age of Children field names
			var age_of_children_field_name = OnlineReservationManager.fAgeChildrenFieldNames[OnlineReservationManager.fSystemLanguageUID];
			for(var i=1; i<=OnlineReservationManager.fNumberOfChildren; i++){
				//console.log('.powermail_'+OnlineReservationManager.fAgeChildrenFieldNames[i]);
				$$('.powermail_'+age_of_children_field_name[i]).each(function(elm,index){
					if(value>=i){              
						elm.getParent('div').setStyle('display','block');
						elm.removeProperty('disabled');
					}else{
						elm.getParent('div').setStyle('display','none');
						elm.setAttribute('disabled', 'disabled');        
					}
				});
			}
		});
		options.element.fireEvent('change');
	}
});

// Mootools DOM ready
window.addEvent('domready', function(){
	OnlineReservationManager.init();
										 
	if($$('#link_booking') || $$('#booking_form')){	
		var SrchFromDay = new Date().get('day');
		var SrchFromMonth = new Date().get('month')+1;
		var SrchFromYear = new Date().get('year');
		var SrchDays = 1;
		var checkin = '';
		var checkout = '';
		var SrchRooms = '';
		var SrchPax = '';
			
		function getDataPage(){
			checkin = $$('#uid11').get('value');
			checkout = $$('#uid12').get('value');
			SrchRooms = $$('#SrchRooms').get('value');
			SrchPax = $$('#SrchPax').get('value');
		}		
			
		function getDataBox(){
			checkin = $$('#date_arrival').get('value');
			checkout = $$('#date_departure').get('value');	
			SrchRooms = $$('#adult').get('value');
			SrchPax = $$('#room').get('value');
		}
			
		function calculate(){			
			if(checkin != ''){
				checkin = checkin.toString();
				var c = checkin.split(".");
				SrchFromDay = c[0];
				SrchFromMonth = c[1];
				SrchFromYear = c[2];
			}
			
			if(checkout != ''){
				var adate = new Date();
				adate.format('%d.%m.%Y');
				adate.set('date', SrchFromDay);
				adate.set('month', SrchFromMonth-1);
				adate.set('year', SrchFromYear);
				
				//alert('arrivaldate '+adate);
				
				checkout = checkout.toString();
				checkout = checkout.split(".");
				
				var ddate = new Date();
				ddate.format('%d.%m.%Y');
				ddate.set('date', checkout[0]);
				ddate.set('month', checkout[1]-1);
				ddate.set('year', checkout[2]);
				
				//alert('departuredate '+ddate);				
				SrchDays = adate.diff(ddate);
			}
		}
		
		function send(){
			var sendLang = 1;
			switch(OnlineReservationManager.fSystemLanguageUID){
				case 1:
					var sendLang = 2; // english
				break;
				case 2:
					sendLang = 4; // italiano
				break;
				default:
					sendLang = 1; // deutsch
				break;
			}
			Mediabox.open('http://ch.concentrator.net/tosc2/tosc.asp?OC=POSCHIAVO&ID=73001195&RG=IT&FC=HO&TOSCNEW=TRUE&PLANNER=TRUE&FN=QFIND&LG='+sendLang+'&SrchBookOnly=on&SrchFromDay='+SrchFromDay+'&SrchFromMonth='+SrchFromMonth+'&SrchFromYear='+SrchFromYear+'&SrchDays='+SrchDays+'&SrchRooms='+SrchRooms+'&SrchPax='+SrchPax, 'Online Reservation', '870 670');
						
			/*				window.open('http://ch.concentrator.net/tosc2/tosc.asp?OC=POSCHIAVO&ID=73001195&RG=IT&FC=HO&TOSCNEW=TRUE&PLANNER=TRUE&FN=QFIND&LG=1&SrchBookOnly=on&SrchFromDay='+SrchFromDay+'&SrchFromMonth='+SrchFromMonth+'&SrchFromYear='+SrchFromYear+'&SrchDays='+SrchDays+'&SrchRooms='+SrchRooms+'&SrchPax='+SrchPax, 'Online booking', '780 600')
			*/			
		}
			
		$$('#link_booking').addEvent('click', function(){
			getDataBox();
			calculate();
			send();											   
		});	
		
		$$('#booking_form').addEvent('submit', function(){	
			getDataPage();
			calculate();
			send();					
		});
	}
	
});
