/* MISC
===============================*/
function showImage(targetImg, srcPath, a_element)
{
	document.getElementById(targetImg).src = srcPath;	
	document.getElementById(targetImg).title = a_element.getElement('img').title;
}





/* REQUESTFORM 
===============================*/
window.addEvent('domready', function()
{
		var scrollToTop = new Fx.Scroll($(document.body));
		//var scrollToTop = new SmoothScroll({duration:1000}, $(document.body));

		$$('.top_link').addEvent('click', function(e){
			scrollToTop.toTop();
		});

		$('language_selector').addEvent('click', function(e)
		{
				var lang = this.get('class');

				new Request({
						url: '/ajax/switch_language/1/lang/'+lang,
						method: 'get',
						async: false,
						evalScripts: true, /* this is the default */
						onComplete: function(response_json)
						{
								var response = JSON.decode(response_json, true);
								if (response['result']=='success')
								{
										if (lang!='DE') var url = 'http://www.luitpoldbad.de/'+lang.toLowerCase()+'/';
										else var url = 'http://www.luitpoldbad.de/';
										window.location.href = url;
								}
						}
				}).send();
		});


		$$('.datepicker').addEvent('click',function(event)
		{
				displayDatePicker(this.id, this, 'dmy', '.');
		});
		
		$$('.openrequestform').addEvent('click',function(event)
		{
				if (this.id=='button_requestbox')
				{
						if ($('requestbox_room_id').selectedIndex>0) $(document.body).getElement('[name=room_id]').selectedIndex = $('requestbox_room_id').selectedIndex;
						if ($('requestbox_arrival').value!="") $(document.body).getElement('[name=arrival]').value = $('requestbox_arrival').value;
						if ($('requestbox_departure').value!="") $(document.body).getElement('[name=departure]').value = $('requestbox_departure').value;
				}
				else if (((this.id).split('id').join('')).toInt()>0)
				{
						for (var i=0; i<$(document.body).getElement('[name=room_id]').options.length; i++)
						{
								if ($(document.body).getElement('[name=room_id]').options[i].value==((this.id).split('id').join('')).toInt())
								{
										$(document.body).getElement('[name=room_id]').selectedIndex = i;
								}
						}
				}

				openRequestForm();
		});

		$('room_id').addEvent('change',function(event)
		{
				calculatePrice();
		});
		$('room_type').addEvent('change',function(event)
		{
				calculatePrice();
		});

		$('button_page1_goto2').addEvent('click',function(event)
		{
				request('validate_fields', 'request', 2);
		});

		$('button_page2_goto1').addEvent('click',function(event)
		{
				gotoPage(1);
		});

		$('button_page2_request').addEvent('click',function(event)
		{
				request('save_request', 'request', 4);
		});

		$('button_page2_booking').addEvent('click',function(event)
		{
				if (check_agb())
				{
						request('save_request', 'booking', 4);
				}
		});

		$('button_page3_accept').addEvent('click',function(event)
		{
				agb('accept');
		});

		$('button_page3_deny').addEvent('click',function(event)
		{
				agb('deny');
		});

		$('link_agb').addEvent('click',function(event)
		{
				show_agb();
				gotoPage(3);
		});

		$('comment').addEvent('focus',function(event)
		{
				if (this.value=='Hier können Sie eine Nachricht eingeben.'
						|| this.value=='Please leave a comment here.') this.value='';
		});

		$('close_button').addEvent('click',function(event)
		{
				closeRequestForm();
		});


		$('emlr').innerHTML = 'info'+'&#x040;'+'luitpol'+'dbad'+'.de';
		$('emlr').href = 'mai'+'lto:'+'info'+'@'+'luitpol'+'dbad'+'.de';
});

function openRequestForm()
{
		calculatePrice();
		gotoPage(1);

		//var scrollToTop = new SmoothScroll({duration:1000}, $(document.body));
		var scrollToTop = new Fx.Scroll($(document.body));
		scrollToTop.toTop();

//		$('overlay').setStyle('display', 'block');
//		$('requestform').setStyle('display', 'block');
//
//		$('overlay').fade('in');
//		$('requestform').fade('in');

		overlayFx = new Fx.Tween('overlay', {
			property: 'opacity',
			duration: 1000,
			transition: Fx.Transitions.Quart.easeInOut,
			onStart: function()
			{
					$('overlay').setStyle('display', 'block');
			}
		});
		overlayFx.start(0,1);

		requestformFx = new Fx.Tween('requestform', {
			property: 'opacity',
			duration: 1000,
			transition: Fx.Transitions.Quart.easeInOut,
			onStart: function()
			{
					$('requestform').setStyle('display', 'block');
			},
			onComplete: function()
			{
					$('page1').setStyle('opacity', '1');
			}
		});
		requestformFx.start(0,1);
}

function closeRequestForm()
{
		overlayFx = new Fx.Tween('overlay', {
			property: 'opacity',
			duration: 1000,
			transition: Fx.Transitions.Quart.easeInOut,
			onComplete: function()
			{
					$('overlay').setStyle('display', 'none');
			}
		});
		overlayFx.start(1,0);

		requestformFx = new Fx.Tween('requestform', {
			property: 'opacity',
			duration: 1000,
			transition: Fx.Transitions.Quart.easeInOut,
			onComplete: function()
			{
					$('requestform').setStyle('display', 'none');
			}
		});
		requestformFx.start(1,0);
}

function gotoPage(page)
{
		$('error').setStyle('display', 'none');
		if (page==2) fill_infolines();
		
		$('page1').setStyle('display', 'none');
		$('page2').setStyle('display', 'none');
		$('page3').setStyle('display', 'none');
		$('page4').setStyle('display', 'none');
		$('page'+page).setStyle('display', 'block');
}

function agb(type)
{
		$('agb').checked = type=="accept" ? true : false;
		gotoPage(2);
}

function datePickerClosed()
{
		calculatePrice();
}

function calculatePrice()
{
		if ($('arrival').value!="")
		{
				var arrival_array = ($('arrival').value).split('.');
				var arrival = arrival_array[2]+'-'+arrival_array[1]+'-'+arrival_array[0];
		}
		if ($('departure').value!="")
		{
				var departure_array = ($('departure').value).split('.');
				var departure = departure_array[2]+'-'+departure_array[1]+'-'+departure_array[0];
		}
		var room_id = $('room_id').value;
		var room_type = $(document.body).getElement('[name=room_type]').value;
		

		if (arrival && departure && room_id>0 && room_type!="")
		{
				new Request({
						url: '/ajax/calculate_price/1/arrival/'+arrival+'/departure/'+departure+'/room_id/'+room_id+'/room_type/'+room_type,
						method: 'get',
						//update: update_element,
						async: false,
						evalScripts: true, /* this is the default */
						onComplete: function(response_json)
						{
								$(document.body).getElement('[name=arrival]').setStyle('background-color', '#FFFFFF');
								$(document.body).getElement('[name=departure]').setStyle('background-color', '#FFFFFF');
								$(document.body).getElement('[name=room_id]').removeClass('error_marked');
								$(document.body).getElement('[name=room_type]').removeClass('error_marked');

								var response = JSON.decode(response_json, true);

								if (response['error_message'])
								{
										$('price').innerHTML = '';
										$('error').innerHTML = response['error_message']['top'];
										$('error').setStyle('display', 'block');
								}
								else
								{
										$('error').setStyle('display', 'none');

										if (response['result']['nobooking']==true)
										{
												$('info_price').innerHTML = response['result']['nobooking_text'];
												$('button_page2_booking').setStyle('display', 'none');
										}
										else
										{
												$('info_price').innerHTML = '';
												$('button_page2_booking').setStyle('display', 'inline');
										}


										if (response['result']['price_text']!=undefined && response['result']['nobooking']!=true)
										{
												$('price').innerHTML = response['result']['price_text']+'<br /><span id="price_includes">'+response['result']['price_includes']+'</span>';
										}
										else $('price').innerHTML = '';
										
										if ($('info_price').innerHTML == '') $('info_price').innerHTML = response['result']['price'];
										$('info_room').innerHTML = response['result']['room'];

										if (response['result']['message'])
										{
												$('message').innerHTML = response['result']['message'];
												$('message').setStyle('display', 'block');
										}
										else
										{
												$('message').setStyle('display', 'none');
										}
								}
						}
				}).send();
		}
}


function fill_infolines()
{
		var translations;

		new Request({
						url: '/ajax/get_infoline_translations/1',
						method: 'get',
						//update: update_element,
						async: false,
						evalScripts: true, /* this is the default */
						onComplete: function(response_json)
						{
								var fields = JSON.decode(response_json, true);
								translations = fields['result'];
						}
		}).send();

		$('info_salutation').innerHTML = $(document.body).getElement('[name=salutation]').value=='mr' ? translations['mr'] : translations['ms'];
		$('info_name').innerHTML = $(document.body).getElement('[name=firstname]').value+' '+$(document.body).getElement('[name=lastname]').value;
		$('info_email').innerHTML = $(document.body).getElement('[name=email]').value;
		$('info_phone').innerHTML = $(document.body).getElement('[name=phone]').value;
		$('info_street').innerHTML = $(document.body).getElement('[name=street]').value;
		$('info_zipcity').innerHTML = $(document.body).getElement('[name=zipcode]').value+' '+$(document.body).getElement('[name=city]').value;
		$('info_dates').innerHTML = $(document.body).getElement('[name=arrival]').value+' - '+$(document.body).getElement('[name=departure]').value;
		$('info_room_type').innerHTML = $(document.body).getElement('[name=room_type]').value=='double' ? translations['double'] : translations['single'];
		$('info_phonecall').innerHTML = $(document.body).getElement('[name=phonecall_wanted]').checked==1 ? translations['yes'] : translations['no'];
		$('info_infomaterial').innerHTML = $(document.body).getElement('[name=infomaterial_wanted]').checked ? translations['yes'] : translations['no'];
}


function show_agb()
{
		new Request({
						url: '/ajax/show_agb/1',
						method: 'get',
						//update: update_element,
						onComplete: function(response_json)
						{
								var fields = JSON.decode(response_json, true);

								$('agb_js_header').innerHTML = fields['result']['agb_js_header'];
								$('agb_js_text').innerHTML = fields['result']['agb_js_text'];
						}
		}).send();
}



function check_agb()
{
		if ($(document.body).getElement('[name=agb]').checked==1)
		{
				return true;
		}
		else
		{
				$('error').innerHTML = '<b>Achtung:</b> Um eine Buchung abzuschließen, müssen Sie die AGB akzeptieren! Alternativ können Sie eine unverbindliche Anfrage stellen.';
				$('error').setStyle('display', 'block');
				return false;
		}
}

function request(action, type, page)
{
		$(document.body).getElement('[name=firstname]').removeClass('error_marked');
		$(document.body).getElement('[name=lastname]').removeClass('error_marked');
		$(document.body).getElement('[name=email]').removeClass('error_marked');
		$(document.body).getElement('[name=phone]').removeClass('error_marked');
		$(document.body).getElement('[name=street]').removeClass('error_marked');
		$(document.body).getElement('[name=zipcode]').removeClass('error_marked');
		$(document.body).getElement('[name=city]').removeClass('error_marked');
		$(document.body).getElement('[name=arrival]').setStyle('background-color', '#FFFFFF');
		$(document.body).getElement('[name=departure]').setStyle('background-color', '#FFFFFF');
		$(document.body).getElement('[name=room_id]').removeClass('error_marked');
		$(document.body).getElement('[name=room_type]').removeClass('error_marked');

		var arrival = '';
		var departure = '';

		if ($('arrival').value!="")
		{
				var arrival_array = ($('arrival').value).split('.');
				arrival = arrival_array[2]+'-'+arrival_array[1]+'-'+arrival_array[0];
		}

		if ($('departure').value!="")
		{
				var departure_array = ($('departure').value).split('.');
				departure = departure_array[2]+'-'+departure_array[1]+'-'+departure_array[0];
		}


		var request_vars = 'type='+type;
		request_vars += arrival!='' ? '&arrival='+arrival : '';
		request_vars += departure!='' ? '&departure='+departure : '';
		request_vars += $('room_id').value!='' ? '&room_id='+$('room_id').value : '';
		request_vars += $(document.body).getElement('[name=room_type]').value!='' ? '&room_type='+$(document.body).getElement('[name=room_type]').value : '';
		request_vars += $(document.body).getElement('[name=salutation]').value!='' ? '&salutation='+$(document.body).getElement('[name=salutation]').value : '';
		request_vars += $(document.body).getElement('[name=firstname]').value!='' ? '&firstname='+encodeURIComponent($(document.body).getElement('[name=firstname]').value) : '';
		request_vars += $(document.body).getElement('[name=lastname]').value!='' ? '&lastname='+encodeURIComponent($(document.body).getElement('[name=lastname]').value) : '';
		request_vars += $(document.body).getElement('[name=email]').value!='' ? '&email='+encodeURIComponent($(document.body).getElement('[name=email]').value) : '';
		request_vars += $(document.body).getElement('[name=phone]').value!='' ? '&phone='+encodeURIComponent($(document.body).getElement('[name=phone]').value) : '';
		request_vars += $(document.body).getElement('[name=street]').value!='' ? '&street='+encodeURIComponent($(document.body).getElement('[name=street]').value) : '';
		request_vars += $(document.body).getElement('[name=zipcode]').value!='' ? '&zipcode='+encodeURIComponent($(document.body).getElement('[name=zipcode]').value) : '';
		request_vars += $(document.body).getElement('[name=city]').value!='' ? '&city='+encodeURIComponent($(document.body).getElement('[name=city]').value) : '';
		request_vars += $(document.body).getElement('[name=infomaterial_wanted]').checked!='' ? '&infomaterial_wanted='+$(document.body).getElement('[name=infomaterial_wanted]').checked : '';
		request_vars += $(document.body).getElement('[name=phonecall_wanted]').checked!='' ? '&phonecall_wanted='+$(document.body).getElement('[name=phonecall_wanted]').checked : '';
		request_vars += $(document.body).getElement('[name=comment]').value!='' ? '&comment='+encodeURIComponent($(document.body).getElement('[name=comment]').value) : '';
		request_vars += $(document.body).getElement('[name=agb]').checked!='' ? '&agb='+$(document.body).getElement('[name=agb]').checked : '';
		request_vars += $(document.body).getElement('[name=beauty]').checked!='' ? '&beauty='+$(document.body).getElement('[name=beauty]').checked : '';
		request_vars += $(document.body).getElement('[name=groups]').checked!='' ? '&groups='+$(document.body).getElement('[name=groups]').checked : '';
		request_vars += $(document.body).getElement('[name=spa]').checked!='' ? '&spa='+$(document.body).getElement('[name=spa]').checked : '';
		request_vars += $(document.body).getElement('[name=health]').checked!='' ? '&health='+$(document.body).getElement('[name=health]').checked : '';
		request_vars += $(document.body).getElement('[name=vacation]').checked!='' ? '&vacation='+$(document.body).getElement('[name=vacation]').checked : '';
		request_vars += $(document.body).getElement('[name=specials]').checked!='' ? '&specials='+$(document.body).getElement('[name=specials]').checked : '';
		request_vars += $(document.body).getElement('[name=alpine]').checked!='' ? '&alpine='+$(document.body).getElement('[name=alpine]').checked : '';
		request_vars += $(document.body).getElement('[name=misc]').checked!='' ? '&misc='+$(document.body).getElement('[name=misc]').checked : '';

		new Request({
				url: '/ajax/'+action+'/1/',
				data: request_vars,
				method: 'post',
				noCache: true,
				onComplete: function(response_json)
				{
						var response = JSON.decode(response_json, true);

						if (response['error_message'])
						{
								$('error').innerHTML = response['error_message']['top'];
								$('error').setStyle('display', 'block');

								response['error_fields'].each(function(value, key)
								{
										if (value=='arrival' || value=='departure')
										{
												$(document.body).getElement('[name='+value+']').setStyle('background-color', '#FF999A');
										}
										else $(document.body).getElement('[name='+value+']').addClass('error_marked');
								});
						}
						else
						{
								if (response['result']['nobooking']==true)
								{
										$('info_room').innerHTML = '';
										$('info_price').innerHTML = '';
										if ($('info_dates').innerHTML == ' - ') $('info_dates').innerHTML = '';
										$('button_page2_booking').setStyle('display', 'none');
								}
								
								gotoPage(page);
						}
				}
		}).send();
}