var hp = {};
//var language = 'de';

var HeidePark = Class.create({
	initialize: function() {
		if(window.pageID == 2) this.ticketNavigationTabs = new TabView("BookingTabNavigation");
	
		$$("form.bookingForm").each(function(e,i) {
			this.initForm(e.name.split('resortBooking').join(''));
			e.onsubmit = this.bookingData;
		}.bind(this));
		
		this.bookingLayer();
	},
	
	bookingLayer: function(){
		$$('.layerBookingButton').each(function(e,i) {
			var eID = e.id.split('ButtonA').join('F');
			
			$(e).observe('click', function() {
				LayerBooking.show({
					href: eID,
					rel: 'inline',
					options: {
						width: 535,
						height: 404
					}
				});
			});
		}.bind(this));
	},	
	
	bookingData: function(){
		var f = this;
		var t = f.name.split('resortBooking').join('');
		
		if(t == 'HPR')
			var key = 'hotelportroyal';
		else
			var key = 'holidaycampsoltau';
		
		var arDate = f.arrivalMonth.value.split('/').join('/'+f.arrivalDay.value+'/');
		var deDate = f.departureMonth.value.split('/').join('/'+f.departureDay.value+'/');
		var rooms =  f.room.value;
		var persons = '';
		
		for (var r = 1; r < Number(rooms)+1; r++) {
			var childsGroup3 = '', childsGroup11 = '', childsGroup15 = '';
			
			for (var c = 1; c < Number(eval('f.roomChild' + r + '1.value')) + 1; c++) { childsGroup3 += ',3'; }
			for (var c = 1; c < Number(eval('f.roomChild' + r + '2.value')) + 1; c++) { childsGroup11 += ',11'; }
			if (t == 'HPR') for (var c = 1; c < Number(eval('f.roomChild' + r + '3.value')) + 1; c++) { childsGroup15 += ',15'; }		
			
			persons += '&ra'+r+'='+eval('f.roomAdult'+r+'.value')+childsGroup3+childsGroup11+childsGroup15;
		}		

		if($('etrackerBooking')){
			$('etrackerBooking').src = 'http://www.etracker.de/lnkcnt.php?et=R9b9EK&url=http://www.google.de&lnkname=Buchungsmaske_'+window.et_pagename+'_'+t; 
		}
		
		if(window.language == 'dk'){ window.language = 'da'; }
		window.open('https://secure.hotelwebservice.de/reservation/index.cfm?arrdate='+arDate+'&depdate='+deDate+'&rooms='+rooms+persons+'&hotelid='+key+'&lang='+window.language,'_bookingwindow','width=600,height=700,status=no,scrollbars=yes,resizable=no')
		
		return false;
	},
	
	initForm: function(t) {
		this.updateSelect($w(t+'arrivalDaySelect '+t+'arrivalMonthSelect '+t+'departureDaySelect '+t+'departureMonthSelect '+t+'roomSelect '+t+'roomAdult1Select '+t+'roomChild11Select '+t+'roomChild12Select '+t+'roomChild13Select'));
		
		this.date = new Date();
		this.dayOnMonth = { 1:'31', 2:'29', 3:'31', 4:'30', 5:'31', 6:'30', 7:'31', 8:'31', 9:'30', 10:'31', 11:'30', 12:'31'};
		this.month = {
			1:{ de:'Januar', en:'January', pl:'Styczeń', dk:'Januar' },
			2:{ de:'Februar', en:'February', pl:'Luty', dk:'Februar' },
			3:{ de:'März', en:'March', pl:'Marzec', dk:'Marts' },
			4:{ de:'April', en:'April', pl:'Kwiecień', dk:'April' },
			5:{ de:'Mai', en:'May', pl:'Maj', dk:'Maj' },
			6:{ de:'Juni', en:'June', pl:'Czerwiec', dk:'Juni' },
			7:{ de:'Juli', en:'July', pl:'Lipiec', dk:'Juli' },
			8:{ de:'August', en:'August', pl:'Sierpień', dk:'August' },
			9:{ de:'September', en:'September', pl:'Wrzesień', dk:'September' },
			10:{ de:'Oktober', en:'October', pl:'Październik', dk:'Oktober' },
			11:{ de:'November', en:'November', pl:'Listopad', dk:'November' },
			12:{ de:'Dezember', en:'December', pl:'Grudzień', dk:'December' }
		};
		
		$$("select.roomNaberSelect").each(function(e,i) {
			if (e.up(0).up(0).up(0).name.split('resortBooking').join('') == t) {
				e.onchange = this.addRooms;
				e.writeAttribute('rel', t);
			}
		}.bind(this));		
		this.createDays(this.date.getMonth()+1, false, t);
		this.createMonth(t);	
	},
	
	createDays: function(m, type, t){
		var days = Number(this.dayOnMonth[m])+1;
		var optionsDays;

		$$("select.day").each(function(e,i) {
			if (e.up(0).up(0).up(0).name.split('resortBooking').join('') == t) {
				optionsDays = '';
				if (type == e.name) {
					for (var d = 1; d < days; d++) {
						if (e.identify() == t+'departureDaySelect') 
							optionsDays += this.date.getDate() == Number(d - 1) ? '<option value="' + d + '" selected="selected">' + d + '</option>' : '<option value="' + d + '">' + d + '</option>';
						else 
							optionsDays += this.date.getDate() == d ? '<option value="' + d + '" selected="selected">' + d + '</option>' : '<option value="' + d + '">' + d + '</option>';
					}
					e.update(optionsDays);
				}
				
				if (!type) {
					for (var d = 1; d < days; d++) {
						if (e.identify() == t+'departureDaySelect') 
							optionsDays += this.date.getDate() == Number(d - 1) ? '<option value="' + d + '" selected="selected">' + d + '</option>' : '<option value="' + d + '">' + d + '</option>';
						else 
							optionsDays += this.date.getDate() == d ? '<option value="' + d + '" selected="selected">' + d + '</option>' : '<option value="' + d + '">' + d + '</option>';
					}
					e.update(optionsDays);
				}
			}
		}.bind(this));
		
		$$("select.day option").each(function(e,i) {
			if(e.selected){
				if(e.up(0).id == t+'arrivalDaySelect') $(t+'arrivalDayLabel').update(e.value);
				if(e.up(0).id == t+'departureDaySelect') $(t+'departureDayLabel').update(e.value);
			}
		}.bind(this));
		
	},
	
	createMonth: function(t){
		$(t+'arrivalMonthLabel').update(this.month[this.date.getMonth()+1][window.language].truncate(4, '.')+' '+this.date.getFullYear());
		$(t+'departureMonthLabel').update(this.month[this.date.getMonth()+1][window.language].truncate(4, '.')+' '+this.date.getFullYear());
		
		$$("select.month").each(function(e,i) {
			if (e.up(0).up(0).up(0).name.split('resortBooking').join('') == t) {
				e.writeAttribute('rel', t);
				optionsMonths = '';
				for (var m = (this.date.getMonth() + 1); m < 13; m++) {
					optionsMonths += (this.date.getMonth() + 1) == m ? '<option value="' + m + '/' + this.date.getFullYear() + '" selected="selected">' + this.month[m][window.language].truncate(4, '.') + ' ' + this.date.getFullYear() + '</option>' : '<option value="' + m + '/' + this.date.getFullYear() + '">' + this.month[m][window.language].truncate(4, '.') + ' ' + this.date.getFullYear() + '</option>';
					if (m == '12') {
						var thisYear = true;
					}
				}
				
				if (thisYear) {
					for (var m = 1; m < 13; m++) {
						optionsMonths += '<option value="' + m + '/' + (Number(this.date.getFullYear()) + 1) + '">' + this.month[m][window.language].truncate(4, '.') + ' ' + (Number(this.date.getFullYear()) + 1) + '</option>';
						if (m == '12') {
							var thisYear = false;
						}
					}
				}
				e.update(optionsMonths);
				e.onchange = this.changeMonth;
			}		
		}.bind(this));
	},	

	changeMonth: function(){
		var e = this;	
		var m = e.value.split('/');
		
		hp.base.createDays(m[0], e.name.split('Month').join('Day'), e.readAttribute('rel'));
	},
	
	addRooms: function(){
		var t = this.readAttribute('rel');
		var rooms = '', ids = '';
		var roomsNumbers = $$('div#'+t+'roomsNumbers div.roomNumberDiv').length+1;
		
		for(var i=roomsNumbers; i < (Number(this.value)+1); i++){
			rooms += '<div class="roomNumberDiv roomNumber'+i+'">';
			rooms +=	'<div class="numerLables nr'+i+'"><!--IE--></div>'
			rooms +=	'<div class="bookingIputSmall bookingIputRoomNumberASmall">';
			rooms +=		'<div id="'+t+'roomAdult'+i+'Label" class="selectLabel">1</div>';
			rooms +=		'<select id="'+t+'roomAdult'+i+'Select" class="room" name="roomAdult'+i+'">';
			rooms +=			'<option value="1" selected="selected">1</option>';
			rooms +=			'<option value="2">2</option>';
			rooms +=			'<option value="3">3</option>';														
			rooms +=			'<option value="4">4</option>';																						
			rooms +=		'</select>';
			rooms +=		'<div style="clear: both;"><!--IE--></div>';
			rooms +=	'</div>';
			rooms +=	'<div class="bookingIputSmall bookingIputRoomNumberCSmall">';
			rooms +=		'<div id="'+t+'roomChild'+i+'1Label" class="selectLabel"></div>';
			rooms +=		'<select id="'+t+'roomChild'+i+'1Select" class="room" name="roomChild'+i+'1">';
			rooms +=			'<option value="" selected="selected"></option>';
			rooms +=			'<option value="1">1</option>';
			rooms +=			'<option value="2">2</option>';
			rooms +=			'<option value="3">3</option>';							
			rooms +=		'</select>';
			rooms +=		'<div style="clear: both;"><!--IE--></div>';
			rooms +=	'</div>';
			rooms +=	'<div class="bookingIputSmall bookingIputRoomNumberCSmall">';
			rooms +=		'<div id="'+t+'roomChild'+i+'2Label" class="selectLabel"></div>';
			rooms +=		'<select id="'+t+'roomChild'+i+'2Select" class="room" name="roomChild'+i+'2">';
			rooms +=			'<option value="" selected="selected"></option>';
			rooms +=			'<option value="1">1</option>';
			rooms +=			'<option value="2">2</option>';
			rooms +=			'<option value="3">3</option>';											
			rooms +=		'</select>';
			rooms +=		'<div style="clear: both;"><!--IE--></div>';
			rooms +=	'</div>';
			
			if (t == 'HPR') {
				rooms += '<div class="bookingIputSmall bookingIputRoomNumberCSmall">';
				rooms += '<div id="' + t + 'roomChild' + i + '3Label" class="selectLabel"></div>';
				rooms += '<select id="' + t + 'roomChild' + i + '3Select" class="room" name="roomChild' + i + '3">';
				rooms += '<option value="" selected="selected"></option>';
				rooms += '<option value="1">1</option>';
				rooms += '<option value="2">2</option>';
				rooms += '<option value="3">3</option>';
				rooms += '</select>';
				rooms += '<div style="clear: both;"><!--IE--></div>';
				rooms += '</div>';
				rooms += '</div>';
			}
			
			ids += t+'roomAdult'+i+'Select '+t+'roomChild'+i+'1Select '+t+'roomChild'+i+'2Select '+t+'roomChild'+i+'3Select ';
		}

			
		for(var i=(Number(this.value)+1); i < roomsNumbers; i++){
			$$('div#'+t+'roomsNumbers div.roomNumber'+i)[0].remove();
		};


		$(t+'roomsNumbers').insert(rooms,'after');
		hp.base.updateSelect($w(ids));
	},	

	updateSelect: function(id){
		var local = this;
		for (var i = 0; i < id.length; i++) {
			if($(id[i])){			
				$(id[i]).observe('change', function(event){
					var e = this.previous('.selectLabel');
					$(e.identify()).update(local.getContentFromOption(this, null))
				});
			}
		}
	},
	
	getContentFromOption: function(selectObj, labelObj){
		var selectOptions = $A(selectObj.getElementsByTagName('option'));
		for (var i = 0; i < selectOptions.length; i++) {
			if(!labelObj){
				if(selectOptions[i].selected){
					return selectOptions[i].innerHTML;
				}
			}else{
				if (labelObj.innerHTML == selectOptions[i].value) {
					selectOptions[i].selected = true;
				}
			}
		}
	}	
});

function initpage(){
	hp.base = new HeidePark();
}

document.observe("dom:loaded",initpage);