var jq = jQuery.noConflict();

var lastArrivalYear;
var lastArrivalMonth;
var lastArrivalDate;
var lastDepartureYear;
var lastDepartureMonth;
var lastDepartureDate;

jq(document).ready(function() {						
	jq('#areaDdl').val('-1');
	jq("#resortDdl").val('-1');
	jq('#subAreaDdl').hide();
	
	switch(jq("input[name='bookingGroup']:checked").val()){
		case 'package':
			hideAllForms();
			jq('#packageDiv').show();
		break;
		case 'booking':
			hideAllForms();
			jq('#livingArrangementsDiv').show();
		break;
		case 'giftCard':
			hideAllForms();
			jq('#giftCardDiv').show();
		break;
		default:
			hideAllForms();
			jq('#livingArrangementsDiv').show();
		break;
	}
	
	jq('#packageDiv').click(function() {
		var startURL = 'index.php/bokning?onlineid=1893785582';
		//var startURL = 'http://localhost/wordpress/?page_id=37&onlineid=1893785582';

		startURL += '&listingtype=package';
		var languageCode = jq.query.get('lang');
	
		switch(languageCode){
			case 'en':
				startURL += '&lang=en';
			break;
			case 'sv':
				startURL += '&lang=sv';
			break;
			default:
				startURL += '&lang=sv';
			break;
		}
		
		window.location = startURL;
	});
	
	initDateFields();
	
	jq("input[name='bookingGroup']").click(function(){
		switch(jq("input[name='bookingGroup']:checked").val()){
			case 'package':
				hideAllForms();
				jq('#packageDiv').show();
			break;
			case 'booking':
				hideAllForms();
				jq('#livingArrangementsDiv').show();
			break;
			case 'giftCard':
				hideAllForms();
				jq('#giftCardDiv').show();
			break;
			default:
				hideAllForms();
				jq('#livingArrangementsDiv').show();
			break;
		}
	});

	jq('#areaDdl').change(function() {
		var languageCode = jq.query.get('lang');						   	
		var resorts = '';
		
		if(jq(this).val() == '-1'){
			jq('#subAreaDdl').hide();
			
			switch(languageCode){
				case 'en':
					resorts += '<option value="-1">All</option>';
				break;
				case 'sv':
					resorts += '<option value="-1">Alla</option>';
				break;
				default:
					resorts += '<option value="-1">Alla</option>';
				break;
			}
			
			resorts += '<option value="26575">Art &amp; Design Villas</option>';
			resorts += '<option value="16666">Aspa Herrgård</option>';
			resorts += '<option value="18779">Bastedalens Herrgård</option>';
			resorts += '<option value="14856">Björholmens Marina, Tjörn</option>';
			resorts += '<option value="23795">Björkhaga Hotell &amp; Konferens</option>';
			resorts += '<option value="17029">Björknäsgården</option>';
			resorts += '<option value="19301">Björkuddens Hotell och Restaurang</option>';
			resorts += '<option value="18752">Bryggan i Fjällbacka</option>';
			resorts += '<option value="19733">Buustamons Fjällgård</option>';
			resorts += '<option value="7744">Bykrogen</option>';
			resorts += '<option value="14997">Bäcka Herrgård, Orsa</option>';
			resorts += '<option value="18794">Dala-Floda Värdshus</option>';
			resorts += '<option value="28914">Gryts Varv Hotell & Konferens</option>';
			resorts += '<option value="18754">Guö Värdshus</option>';
			resorts += '<option value="2523">Hotell &amp; Restaurang Hovs Hallar</option>';
			resorts += '<option value="18783">Hotell Västanå Slott</option>';
			resorts += '<option value="18782">Idas Skepparehus</option>';
			resorts += '<option value="19657">Idas Strandgård</option>';
			resorts += '<option value="22330">Jöns Andersgården, Rättvik</option>';
			resorts += '<option value="21943">Kilafors Herrgård</option>';
			resorts += '<option value="10903">Korstäppans Herrgård, Leksand</option>';
			resorts += '<option value="16242">Kungskvarnen</option>';
			resorts += '<option value="9130">Lumber &amp; Karle, Kvänum</option>';
			resorts += '<option value="18795">Lungsundet Hotell och konferens</option>';
			resorts += '<option value="6603">Maritim Krog &amp; Hotell</option>';
			resorts += '<option value="21227">Pensionat Styrsö Skäret</option>';
			resorts += '<option value="20285">Ridgemor Villa</option>';
			resorts += '<option value="3209">Ringsjö Krog och Wärdshus </option>';
			resorts += '<option value="5244">Spångens Gästgivaregård</option>';
			resorts += '<option value="22402">Stegeborgs Trädgårdshotell</option>';
			resorts += '<option value="22386">Teleborgs Slott</option>';
			resorts += '<option value="10963">Tällbergsgårdens Hotell, Tällberg</option>';
			resorts += '<option value="18796"> Värdshuset Lugnet</option>';
			resorts += '<option value="18751">Wallby Säteri</option>';
		}else{
			jq('#subAreaDdl').show();
			
			var subAreas = '';
			
			switch(languageCode){
				case 'en':
					subAreas += '<option value="-1">All</option>';
					resorts += '<option value="-1">All</option>';
				break;
				case 'sv':
					subAreas += '<option value="-1">Alla</option>';
					resorts += '<option value="-1">Alla</option>';
				break;
				default:
					subAreas += '<option value="-1">Alla</option>';
					resorts += '<option value="-1">Alla</option>';
				break;
			}
			
			switch(jq(this).val()){
				case '6069':
					subAreas += '<option value="6078">Bohuslän/Fjällbacka</option>';
					subAreas += '<option value="6074">Bohuslän/Klövedal, Tjörn</option>';
					subAreas += '<option value="6073">Bohuslän/Styrsö</option>';
					subAreas += '<option value="6088">Dalarna/Dala Floda</option>';
					subAreas += '<option value="6090">Dalarna/Leksand</option>';
					subAreas += '<option value="6089">Dalarna/Malung</option>';
					subAreas += '<option value="6092">Dalarna/Orsa</option>';
					subAreas += '<option value="6360">Dalarna/Rättvik</option>';
					subAreas += '<option value="6091">Dalarna/Tällberg</option>';
					//subAreas += '<option value="6087">Dalarna/Ulfshyttan</option>';
					subAreas += '<option value="6081">Närke/Hammar</option>';
					subAreas += '<option value="6080">Småland/Gränna</option>';
					subAreas += '<option value="6079">Småland/Vetlanda</option>';
					subAreas += '<option value="6374">Småland/Växjö</option>';
					subAreas += '<option value="6084">Värmland/Borgvik</option>';
					//subAreas += '<option value="6085">Värmland/Brunskog</option>';
					subAreas += '<option value="6086">Värmland/Storfors</option>';
					subAreas += '<option value="6083">Västergötland/Karlsborg</option>';
					subAreas += '<option value="6082">Västergötland/Kvänum</option>';
					subAreas += '<option value="7287">Västergötland/Mullsjö</option>';
					subAreas += '<option value="6372">Östergötland/Söderköping</option>';
					subAreas += '<option value="7762">Östergötland/Valdemarsvik</option>';
					
					resorts += '<option value="16666">Aspa Herrgård</option>';
					resorts += '<option value="18779">Bastedalens Herrgård</option>';
					resorts += '<option value="14856">Björholmens Marina, Tjörn</option>';
					resorts += '<option value="23795">Björkhaga Hotell &amp; Konferens</option>';
					resorts += '<option value="18752">Bryggan i Fjällbacka</option>';
					resorts += '<option value="14997">Bäcka Herrgård, Orsa</option>';
					resorts += '<option value="18794">Dala-Floda Värdshus</option>';
					resorts += '<option value="28914">Gryts Varv Hotell & Konferens</option>';
					resorts += '<option value="18783">Hotell Västanå Slott</option>';
					resorts += '<option value="18782">Idas Skepparehus</option>';
					resorts += '<option value="19657">Idas Strandgård</option>';
					resorts += '<option value="22330">Jöns Andersgården, Rättvik</option>';
					resorts += '<option value="10903">Korstäppans Herrgård, Leksand</option>';
					resorts += '<option value="16242">Kungskvarnen</option>';
					resorts += '<option value="9130">Lumber &amp; Karle, Kvänum</option>';
					resorts += '<option value="18795">Lungsundet Hotell och konferens</option>';
					resorts += '<option value="21227">Pensionat Styrsö Skäret</option>';
					resorts += '<option value="22402">Stegeborgs Trädgårdshotell</option>';
					resorts += '<option value="22386">Teleborgs Slott</option>';
					resorts += '<option value="10963">Tällbergsgårdens Hotell, Tällberg</option>';
					resorts += '<option value="18751">Wallby Säteri</option>';
				break;
				case '7269':
					subAreas += '<option value="7270">Anttola</option>';
					resorts += '<option value="26575">Art & Design Villas</option>';
				break;
				case '6068':
					subAreas += '<option value="8058">Hälsingland/Bollnäs-Söderhamn</option>';
					subAreas += '<option value="6983">Jämtland/Bräcke</option>';
					subAreas += '<option value="6128">Jämtland/Åre</option>';
					subAreas += '<option value="6071">Ångermanland/Härnön</option>';
					subAreas += '<option value="6072">Ångermanland/Sandöverken</option>';
					
					resorts += '<option value="17029">Björknäsgården</option>';
					resorts += '<option value="19301">Björkuddens Hotell och Restaurang</option>';
					resorts += '<option value="19733">Buustamons Fjällgård</option>';
					resorts += '<option value="21943">Kilafors Herrgård</option>';
				break;
				case '7230':
					subAreas += '<option value="7232">Kapstaden</option>';
					
					resorts += '<option value="20285">Ridgemor Villa</option>';
				break;
				case '6070':
					subAreas += '<option value="6096">Blekinge/Trensum</option>';
					subAreas += '<option value="6100">Halland/Halmstad</option>';
					subAreas += '<option value="6568">Skåne/Kristianstad</option>';
					subAreas += '<option value="7453">Skåne/Ljungbyhed</option>';
					subAreas += '<option value="6098">Skåne/Arild</option>';
					subAreas += '<option value="6099">Skåne/Båstad</option>';
					subAreas += '<option value="6097">Skåne/Höör</option>';
					subAreas += '<option value="6094">Skåne/Löderup</option>';
					subAreas += '<option value="6095">Skåne/Simrishamn</option>';
					subAreas += '<option value="6093">Skåne/Skanör</option>';
					
					resorts += '<option value="7744">Bykrogen</option>';
					resorts += '<option value="18754">Guö Värdshus</option>';
					resorts += '<option value="2523">Hotell &amp; Restaurang Hovs Hallar</option>';
					resorts += '<option value="6603">Maritim Krog &amp; Hotell</option>';
					resorts += '<option value="3209">Ringsjö Krog och Wärdshus </option>';
					resorts += '<option value="5244">Spångens Gästgivaregård</option>';
				break;
				default:
				break;
			}
			
			jq("#subAreaDdl").html(subAreas);
		}
		
		jq("#resortDdl").html(resorts);
	});
	
	jq('#subAreaDdl').change(function() {
		var languageCode = jq.query.get('lang');							  	
		var resorts = '';
		
		switch(languageCode){
			case 'en':
				resorts += '<option value="-1">All</option>';
			break;
			case 'sv':
				resorts += '<option value="-1">Alla</option>';
			break;
			default:
				resorts += '<option value="-1">Alla</option>';
			break;
		}
		
		switch(jq('#areaDdl').val()){
			case '6069':
				switch(jq(this).val()){
					case '-1':
						resorts += '<option value="16666">Aspa Herrgård</option>';
						resorts += '<option value="18779">Bastedalens Herrgård</option>';
						resorts += '<option value="14856">Björholmens Marina, Tjörn</option>';
						resorts += '<option value="23795">Björkhaga Hotell &amp; Konferens</option>';
						resorts += '<option value="18752">Bryggan i Fjällbacka</option>';
						resorts += '<option value="14997">Bäcka Herrgård, Orsa</option>';
						resorts += '<option value="18794">Dala-Floda Värdshus</option>';
						resorts += '<option value="28914">Gryts Varv Hotell & Konferens</option>';
						resorts += '<option value="18783">Hotell Västanå Slott</option>';
						resorts += '<option value="18782">Idas Skepparehus</option>';
						resorts += '<option value="19657">Idas Strandgård</option>';
						resorts += '<option value="22330">Jöns Andersgården, Rättvik</option>';
						resorts += '<option value="10903">Korstäppans Herrgård, Leksand</option>';
						resorts += '<option value="16242">Kungskvarnen</option>';
						resorts += '<option value="9130">Lumber &amp; Karle, Kvänum</option>';
						resorts += '<option value="18795">Lungsundet Hotell och konferens</option>';
						resorts += '<option value="21227">Pensionat Styrsö Skäret</option>';
						resorts += '<option value="22402">Stegeborgs Trädgårdshotell</option>';
						resorts += '<option value="22386">Teleborgs Slott</option>';
						resorts += '<option value="10963">Tällbergsgårdens Hotell, Tällberg</option>';
						resorts += '<option value="18751">Wallby Säteri</option>';
					break;
					
					case '6078':
						resorts += '<option value="18752">Bryggan i Fjällbacka</option>';
					break;
					case '6074':
						resorts += '<option value="14856">Björholmens Marina, Tjörn</option>';
					break;
					case '6073':
						resorts += '<option value="21227">Pensionat Styrsö Skäret</option>';
					break;
					case '6088':
						resorts += '<option value="18794">Dala-Floda Värdshus</option>';
					break;
					case '6090':
						resorts += '<option value="10903">Korstäppans Herrgård, Leksand</option>';
					break;
					case '6089':
						resorts += '<option value="18796">Värdshuset Lugnet</option>';
					break;
					case '6092':
						resorts += '<option value="-1">Alla</option>';
						resorts += '<option value="14997">Bäcka Herrgård, Orsa</option>';
					break;
					case '6360':
						resorts += '<option value="22330">Jöns Andersgården, Rättvik</option>';
					break;
					case '6091':
						resorts += '<option value="10963">Tällbergsgårdens Hotell, Tällberg</option>';
					break;
					case '6087':
					break;
					case '6081':
						resorts += '<option value="18779">Bastedalens Herrgård</option>';
					break;
					case '6080':
						resorts += '<option value="18783">Hotell Västanå Slott</option>';
					break;
					case '6079':
						resorts += '<option value="18751">Wallby Säteri</option>';
					break;
					case '6374':
						resorts += '<option value="22386">Teleborgs Slott</option>';
					break;
					case '6084':
						resorts += '<option value="16242">Kungskvarnen</option>';
					break;
					case '6085':
					break;
					case '6086':
						resorts += '<option value="18795">Lungsundet Hotell och konferens</option>';
					break;
					case '6083':
						resorts += '<option value="18782">Idas Skepparehus</option>';
						resorts += '<option value="19657">Idas Strandgård</option>';
					break;
					case '6082':
						resorts += '<option value="9130">Lumber & Karle, Kvänum</option>';
					break;
					case '7287':
						resorts += '<option value="23795">Björkhaga Hotell &amp; Konferens</option>';
					break;
					case '6372':
						resorts += '<option value="22402">Stegeborgs Trädgårdshotell</option>';
					break;
					case '7762':
						resorts += '<option value="28914">Gryts Varv Hotell & Konferens</option>';
					break;
					default:
					break;
				}
			break;
			case '7269':
				switch(jq(this).val()){
					case '-1':
						resorts += '<option value="26575">Art & Design Villas</option>';
					break;
					case '7270':
						resorts += '<option value="26575">Art & Design Villas</option>';
					break;
					default:
					break;
				}
			break;
			case '6068':
				switch(jq(this).val()){
					case '-1':
						resorts += '<option value="17029">Björknäsgården</option>';
						resorts += '<option value="19301">Björkuddens Hotell och Restaurang</option>';
						resorts += '<option value="19733">Buustamons Fjällgård</option>';
						resorts += '<option value="21943">Kilafors Herrgård</option>';
					break;
					case '6983':
						resorts += '<option value="17029">Björknäsgården</option>';
					break;
					case '6128':
						resorts += '<option value="19733">Buustamons Fjällgård</option>';
					break;
					case '6071':
					break;
					case '6072':
						resorts += '<option value="19301">Björkuddens Hotell och Restaurang</option>';
					break;
					case '8058':
						resorts += '<option value="21943">Kilafors Herrgård</option>';
					break;
					default:
					break;
				}
			break;
			case '7230':
				switch(jq(this).val()){
					case '-1':
						resorts += '<option value="20285">Ridgemor Villa</option>';
					break;
					case '7232':
						resorts += '<option value="20285">Ridgemor Villa</option>';
					break;
					default:
					break;
				}
			break;
			case '6070':
				switch(jq(this).val()){
					case '-1':
						resorts += '<option value="7744">Bykrogen</option>';
						resorts += '<option value="18754">Guö Värdshus</option>';
						resorts += '<option value="2523">Hotell &amp; Restaurang Hovs Hallar</option>';
						resorts += '<option value="6603">Maritim Krog &amp; Hotell</option>';
						resorts += '<option value="3209">Ringsjö Krog och Wärdshus </option>';
						resorts += '<option value="5244">Spångens Gästgivaregård</option>';
					break;
					case '6096':
						resorts += '<option value="18754">Guö Värdshus</option>';
					break;
					case '6100':
					break;
					case '6568':
						resorts += '<option value="7744">Bykrogen</option>';
					break;
					case '7453':
						resorts += '<option value="5244">Spångens Gästgivaregård</option>';
					break;
					case '6098':
					break;
					case '6099':
						resorts += '<option value="2523">Hotell &amp; Restaurang Hovs Hallar</option>';	
					break;
					case '6097':
						resorts += '<option value="3209">Ringsjö Krog och Wärdshus </option>';
					break;
					case '6094':
					break;
					case '6095':
						resorts += '<option value="6603">Maritim Krog &amp; Hotell</option>';
					break;
					case '6093':
					break;
					default:
					break;
				}
			break;
			default:
			break;
		}
			
		jq("#resortDdl").html(resorts);						  
	});
	
	jq('#arrivalDiv .year').change(function() {								   
		adjustDates(true);
	});
	
	jq('#arrivalDiv .month').change(function() {
		adjustDates(true);
	});
	
	jq('#arrivalDiv .day').change(function() {
		adjustDates(true);
	});
	
	jq('#departureDiv .year').change(function() {
		adjustDates(false);
	});
	
	jq('#departureDiv .month').change(function() {
		adjustDates(false);
	});
	
	jq('#departureDiv .day').change(function() {
		adjustDates(false);
	});
	
	jq('#numberOfRoomsDdl').change(function() {
		updateRoomDiv();
	});
	
	jq('#gotoBookingButton').click(function() {
		gotoBooking();
	});
	
	jq('#gotoGiftCardButton').click(function() {
		var newWindow = window.open('http://shop.textalk.se/se/shop.php?lang=sv&id=13942', '_blank');
		newWindow.focus();
		return false;
	});
	
	initRoomDdl();
	setUpRoomDiv();
	
	jq('#roomDiv .numberOfChildrenDdl').change(function() {
		var i = 0;
		var numberOfChildren = parseInt(jq(this).val());
	
		jq(this).parent().find('.childAgesDiv div').each(function() {
			if(i<numberOfChildren){
				jq(this).show();
			}else{
				jq(this).hide();
			}
			
			i++;
		});											   							 
	});
	
	jq('#hotelNightsTextBox').keydown(function(e){
    	var key = e.which;
		
		if(key == 13){
			setDatesByHotelNights(true);
		}
	});
	
	jq('#calenderDiv').click(function(){
    	var lblYearArrival = 'ddArrYear';
		var lblMonthArrival = 'ddArrMonth';
		var lblDayArrival = 'ddArrDay';

		var lblYearDeparture = 'ddDepYear';
		var lblMonthDeparture = 'ddDepMonth';
		var lblDayDeparture = 'ddDepDay';
		
		var calenderURL = 'http://online2.citybreak.com/Search/Calendar.aspx?onlineid=1893785582';
		calenderURL += '&arrdate=';
		calenderURL += parseInt(jq('#arrivalDiv .year').val()) + '/';
		calenderURL += parseInt(jq('#arrivalDiv .month').val()) + '/';
		calenderURL += parseInt(jq('#arrivalDiv .day').val());
		calenderURL += '&depdate=';
		calenderURL += parseInt(jq('#departureDiv .year').val()) + '/';
		calenderURL += parseInt(jq('#departureDiv .month').val()) + '/';
		calenderURL += parseInt(jq('#departureDiv .day').val());
		calenderURL += '&arryear=' + lblYearArrival;
		calenderURL += '&arrmonth=' + lblMonthArrival;
		calenderURL += '&arrday=' + lblDayArrival;
		calenderURL += '&depyear=' + lblYearDeparture;
		calenderURL += '&depmonth=' + lblMonthDeparture;
		calenderURL += '&depday=' + lblDayDeparture;

		//window.open (calenderURL,"Calendar", 'height=180, width=450, toolbar=no, top=' + (screen.availHeight - 165) / 2 + ', left=' + (screen.availWidth - 340) / 2 + ', screenX=' + (screen.availWidth - 340) / 2 + ', screenY=' + (screen.availHeight - 165) / 2);

	});
});

function hideAllForms(){
	jq('#livingArrangementsDiv').hide();
	jq('#packageDiv').hide();
	jq('#giftCardDiv').hide();
}

function gotoBooking(){
	var startURL = 'index.php/bokning?onlineid=1893785582';
	//var startURL = 'http://localhost/wordpress/?page_id=37&onlineid=1893785582';
	//var startURL = 'http://online.citybreak.com/Search/Auto/Accommodation/Search.aspx?onlineid=1893785582';
	//culture=se&datefrom=2010-04-12&dateto=2010-04-13&geo=7287&pr=1

	startURL += '&listingtype=booking';
	
	var geo = '';
	var propID = '';
	var dateFrom = '';
	var dateTo = '';
	
	if(parseInt(jq('#areaDdl').val()) > 0){
		if(parseInt(jq('#subAreaDdl').val()) > 0){
			geo = jq('#subAreaDdl').val();
		}else{
			geo = jq('#areaDdl').val();
		}
		
		startURL += '&geo=' + parseInt(geo);
	}
	
	if(parseInt(jq("#resortDdl").val()) > 0){
		propID = jq("#resortDdl").val();
		
		startURL += '&PropertyId=' + parseInt(propID);
	}
	
	dateFrom += parseInt(jq('#arrivalDiv .year').val()) + '-';
	
	if(parseInt(jq('#arrivalDiv .month').val()) < 10){
		dateFrom += '0' + jq('#arrivalDiv .month').val() + '-';
	}else{
		dateFrom += parseInt(jq('#arrivalDiv .month').val()) + '-';
	}
	
	if(parseInt(jq('#arrivalDiv .day').val()) <10 ){
		dateFrom += '0' + jq('#arrivalDiv .day').val();
	}else{
		dateFrom += parseInt(jq('#arrivalDiv .day').val());
	}
	
	startURL += '&datefrom=' + dateFrom;
	
	dateTo += parseInt(jq('#departureDiv .year').val()) + '-';
	
	if(parseInt(jq('#departureDiv .month').val()) <10 ){
		dateTo += '0' + jq('#departureDiv .month').val() + '-';
	}else{
		dateTo += parseInt(jq('#departureDiv .month').val()) + '-';
	}
	
	if(parseInt(jq('#departureDiv .day').val()) <10 ){
		dateTo += '0' + jq('#departureDiv .day').val();
	}else{
		dateTo += parseInt(jq('#departureDiv .day').val());
	}
	
	startURL += '&dateto=' + dateTo;
	
	var roomParameters = '';
	roomParameters = '&pr=';
	
	var isFirstRoom = true;
	
	jq('#roomDiv .room').each(function() {							  
		if(jq(this).css('display') == 'none'){
			return;
		}
		
		if(isFirstRoom){
			isFirstRoom = false;
		}else{
			roomParameters += 'r';
		}
		
		roomParameters += parseInt(jq(this).find('.numberOfAdultsDdl').val());
		
		if(parseInt(jq(this).find('.numberOfChildrenDdl').val()) > 0){
			roomParameters += 'a';
			
			var isFirstChild = true;
			
			jq(this).find('.childAgesDiv select').each(function() {
				if(jq(this).parent().css('display') == 'none'){
					return;
				}
				
				if(isFirstChild){
					isFirstChild = false;
				}else{
					roomParameters += 'c';
				}
				
				roomParameters += parseInt(jq(this).val());
			});
		}
	});
	
	startURL += roomParameters;
	
	var languageCode = jq.query.get('lang');
	
	startURL += '&lang=' + languageCode.toString();
	
	window.location = startURL;
}

function initRoomDdl(){
	var roomOption = '';
	
	for(var i=1; i<10; i++){
		roomOption += '<option value="'+i+'">'+i+'</option>';
	}
	
	jq('#numberOfRoomsDdl').html(roomOption);
}

function updateRoomDiv(){
	var i = 0;
	
	jq('#roomDiv .room').each(function() {
		if(i<parseInt(jq('#numberOfRoomsDdl').val())){
			jq(this).show();
		}else{
			jq(this).hide();
		}
		
		i++;
	});
}

function setUpRoomDiv(){
	var roomDiv = '';
	var i, j, k;
	var languageCode = jq.query.get('lang');
	
	for(i=1; i<10; i++){
		roomDiv += '<div class="room">';
		roomDiv += '<div class="floatLeft">';
		
		switch(languageCode){
			case "en":
				roomDiv += 'Room '+i+':';
			break;
			case "sv":
				roomDiv += 'Rum '+i+':';
			break;
			default:
				roomDiv += 'Rum '+i+':';
		}
		
		roomDiv += '</div>';
		roomDiv += '<div class="floatRight">';
		
		switch(languageCode){
			case "en":
				roomDiv += '<label>Adults:</label> ';
			break;
			case "sv":
				roomDiv += '<label>Vuxna:</label> ';
			break;
			default:
				roomDiv += '<label>Vuxna:</label> ';
		}
		
		roomDiv += '<select class="numberOfAdultsDdl" style="width: 45px">';
		
		for(j=1; j<10; j++){
			roomDiv += '<option value="'+j+'">' + j + '</option>';
		}
		
		roomDiv += '</select>';
		
		switch(languageCode){
			case "en":
				roomDiv += '<label>Children:</label> ';
			break;
			case "sv":
				roomDiv += '<label>Barn:</label> ';
			break;
			default:
				roomDiv += '<label>Barn:</label> ';
		}
		
		roomDiv += '<select class="numberOfChildrenDdl" style="width: 45px">';
		
		for(j=0; j<10; j++){
			roomDiv += '<option value="'+j+'">' + j + '</option>';
		}
		
		roomDiv += '</select>';
		roomDiv += '<div style="clear:both"></div>';
		roomDiv += '<div class="childAgesDiv" style="float: right">';
		
		for(j=0; j<9; j++){
			roomDiv += '<div>';
			
			switch(languageCode){
				case "en":
					roomDiv += 'Age of child '+(j+1)+': <select style="width: 45px">';
				break;
				case "sv":
					roomDiv += 'Ålder på barn '+(j+1)+': <select style="width: 45px">';
				break;
				default:
					roomDiv += 'Ålder på barn '+(j+1)+': <select style="width: 45px">';
			}
			
			for(k=0; k<19; k++){
				roomDiv += '<option value="'+ k +'">'+ k +'</option>';
			}
			
			roomDiv += '</select>';
			roomDiv += '</div>';
		}
		
		roomDiv += '</div>';
		roomDiv += '</div>';
		roomDiv += '<div style="clear:both"></div>';
		roomDiv += '</div>';
	}
	
	jq('#roomDiv').html(roomDiv);
	
	var isFirstRoom = true;
	
	jq('#roomDiv .room').each(function() {
		if(isFirstRoom){
			isFirstRoom = false;
		}else{
			jq(this).hide();
		}
		
		jq('#roomDiv .room .childAgesDiv div').each(function() {
			jq(this).hide();
		});
	});
}

function adjustDates(alteredArrival){
	if(!isValidDate(alteredArrival)){
		return;
	}
	
	if(jq('#arrivalDiv .year').val() > jq('#departureDiv .year').val()){
			if(alteredArrival){
				pushDepartureDate();
			}else{
				pushArrivalDate();
			}
	}else{
		if(parseInt(jq('#arrivalDiv .year').val()) == parseInt(jq('#departureDiv .year').val())){
			if(parseInt(jq('#arrivalDiv .month').val()) > parseInt(jq('#departureDiv .month').val())){
				if(alteredArrival){
					pushDepartureDate();
				}else{
					pushArrivalDate();
				}
			}else{
				if(parseInt(jq('#arrivalDiv .month').val()) == parseInt(jq('#departureDiv .month').val())){
					if(parseInt(jq('#arrivalDiv .day').val()) >= parseInt(jq('#departureDiv .day').val())){
						if(alteredArrival){
							pushDepartureDate();
						}else{
							pushArrivalDate();
						}	
					}
				}
			}
		}
	}
	
	lastArrivalYear = jq('#arrivalDiv .year').val();
	lastArrivalMonth = jq('#arrivalDiv .month').val();
	lastArrivalDate = jq('#arrivalDiv .day').val();
	lastDepartureYear = jq('#departureDiv .year').val();
	lastDepartureMonth = jq('#departureDiv .month').val();
	lastDepartureDate = jq('#departureDiv .day').val();
	
	var arrivalDate = new Date();
	var arrivalYear = parseInt(jq('#arrivalDiv .year').val());
	var arrivalMonth = parseInt(jq('#arrivalDiv .month').val())-1;
	var arrivalDay = parseInt(jq('#arrivalDiv .day').val())-1;
	
	arrivalDate.setFullYear(arrivalYear,arrivalMonth,arrivalDay);
	
	var departureDate = new Date();
	var departureYear = parseInt(jq('#departureDiv .year').val());
	var departureMonth = parseInt(jq('#departureDiv .month').val())-1;
	var departureDay = parseInt(jq('#departureDiv .day').val())-1;
	
	departureDate.setFullYear(departureYear,departureMonth,departureDay);
	
	var duration = new Date();
	
	duration.setTime(Math.abs(departureDate.getTime() - arrivalDate.getTime()));
	
	var hotelNights = Math.floor(duration.getTime() / (1000 * 60 * 60 * 24));
	
	if(parseInt(hotelNights) < 33){
		jq('#hotelNightsTextBox').val(hotelNights);
	}else{
		jq('#hotelNightsTextBox').val(32);
		
		if(alteredArrival){
			setDatesByHotelNights(true);
		}else{
			setDatesByHotelNights(false);
		}
	}
}

function setDatesByHotelNights(alterByArrival){
	var year;
	var month;
	var date;
	var hotelNights = parseInt(jq('#hotelNightsTextBox').val());
	
	if(alterByArrival){
		year = parseInt(jq('#arrivalDiv .year').val());
		month = parseInt(jq('#arrivalDiv .month').val());
		date = parseInt(jq('#arrivalDiv .day').val());
	}else{
		year = parseInt(jq('#departureDiv .year').val());
		month = parseInt(jq('#departureDiv .month').val());
		date = parseInt(jq('#departureDiv .day').val());
	}
	
	if(isNaN(parseInt(jq('#hotelNightsTextBox').val()))){
		return;
	}
	
	if(hotelNights < 1){
		hotelNights = 1;
		jq('#hotelNightsTextBox').val(1);
	}else{
		if(hotelNights > 32){
			hotelNights = 32;
			jq('#hotelNightsTextBox').val(32);
		}
	}
	
	if(alterByArrival){
		date = date + parseInt(jq('#hotelNightsTextBox').val());
	}else{
		date = date - parseInt(jq('#hotelNightsTextBox').val());
	}
	
	pushDateByHotelNights(year, month, date, alterByArrival);
}

function pushDateByHotelNights(startYear, startMonth, startDate, alterByArrival){
	if(alterByArrival){
		var exceedingMonthNights = parseInt(startDate) - parseInt(getNofDays(startYear.toString(), startMonth.toString())); 
		
		if(exceedingMonthNights > 0){
			startDate = exceedingMonthNights;
			
			startMonth++;
			 
			if(startMonth > 12){
				startMonth = 1;
				startYear++;
				
				if(startYear > parseInt((new Date).getFullYear())+3){
					jq('#hotelNightsTextBox').val('');
					return;
				}
			}
			
			pushDateByHotelNights(startYear, startMonth, startDate, alterByArrival);
		}else{
			jq('#departureDiv .day').val(startDate);
			jq('#departureDiv .month').val(startMonth);
			jq('#departureDiv .year').val(startYear);
		}
	}else{
		if(startDate > 0){
			jq('#arrivalDiv .day').val(startDate);
			jq('#arrivalDiv .month').val(startMonth);
			jq('#arrivalDiv .year').val(startYear);
		}else{
			startMonth--;
			
			if(startMonth < 1){
				startMonth = 12;
				startYear--;
				
				if(startYear < parseInt((new Date).getFullYear())){
					jq('#hotelNightsTextBox').val('');
					return;
				}
				
				if(startYear == parseInt((new Date).getFullYear())){
					if(startMonth < parseInt((new Date).getMonth())+1){
						jq('#hotelNightsTextBox').val('');
						return;
					}
					
					if(startMonth == parseInt((new Date).getMonth())+1){
						if(startDate < parseInt((new Date).getDate())+1-parseInt(getNofDays(startYear.toString(), startMonth.toString()))){
							jq('#hotelNightsTextBox').val('');
							return;
						}
					}
				}
			}
			
			startDate = parseInt(startDate) + parseInt(getNofDays(startYear.toString(), startMonth.toString()));
			
			pushDateByHotelNights(startYear, startMonth, startDate, alterByArrival);
		}
	}
}

function isValidDate(arrivalDate){
	var year;
	var month;
	var date;
	
	if(arrivalDate){
		year = jq('#arrivalDiv .year').val();
		month = jq('#arrivalDiv .month').val();
		date = jq('#arrivalDiv .day').val();
	}else{
		year = jq('#departureDiv .year').val();
		month = jq('#departureDiv .month').val();
		date = jq('#departureDiv .day').val();
	}
	
	if(year<(new Date).getFullYear()){
		resetDate(arrivalDate);
		return false;
	}else{
		if(year == (new Date).getFullYear() && month < parseInt((new Date).getMonth()) + 1){
			resetDate(arrivalDate);
			return false;
		}else{
			if(year == (new Date).getFullYear() && month == parseInt((new Date).getMonth()) + 1 && date < (new Date).getDate()){
				resetDate(arrivalDate);
				return false;
			}
		}
	}

	if(arrivalDate){
		if(year == parseInt((new Date).getFullYear()) + 3 && month == 12 && date == 31){
			resetDate(arrivalDate);
			return false;	
		}
	}else{
		if(year == (new Date).getFullYear()){
			if(month == parseInt((new Date).getMonth()) + 1){
				if(parseInt(date) + 1 == parseInt((new Date).getDate()) +1){
					resetDate(arrivalDate);
					return false;	
				}
			}	
		}
	}
	
	var maxDate = getNofDays(year, month);
	
	if(date > maxDate){
		if(arrivalDate){
			jq('#arrivalDiv .day').val(maxDate);
		}else{
			jq('#departureDiv .day').val(maxDate);
		}
	}
	
	return true;
}

function resetDate(arrivalDate){
	if(arrivalDate){
		jq('#arrivalDiv .day').val(lastArrivalDate);
		jq('#arrivalDiv .month').val(lastArrivalMonth);
		jq('#arrivalDiv .year').val(lastArrivalYear);
	}else{
		jq('#departureDiv .day').val(lastDepartureDate);
		jq('#departureDiv .month').val(lastDepartureMonth);
		jq('#departureDiv .year').val(lastDepartureYear);
	}
}

function initDateFields(){
	var currentYear = (new Date).getFullYear();
	var currentMonth = (new Date).getMonth();
	var currentDate = (new Date).getDate();
	
	var bookableYears = '';
	
	for (var i=0; i<4; i++){
		bookableYears += '<option value=' + (currentYear+i) + '>' + (currentYear+i) + '</option>';
	}
	
	jq('.year').each(function() {
		jq(this).html(bookableYears);
	});
	
	jq('.month').each(function() {
		jq(this).val(currentMonth+1);
	});
	
	jq('#arrivalDiv .day').html(getDatesOptions(currentYear.toString(), (currentMonth+1).toString()));
	jq('#arrivalDiv .day').val(currentDate);
	
	pushDepartureDate();
	
	lastArrivalYear = jq('#arrivalDiv .year').val();
	lastArrivalMonth = jq('#arrivalDiv .month').val();
	lastArrivalDate = jq('#arrivalDiv .day').val();
	lastDepartureYear = jq('#departureDiv .year').val();
	lastDepartureMonth = jq('#departureDiv .month').val();
	lastDepartureDate = jq('#departureDiv .day').val();
}

function pushDepartureDate(){
	var year = jq('#arrivalDiv .year').val();
	var month = jq('#arrivalDiv .month').val();
	var date = jq('#arrivalDiv .day').val();
	
	if(date<getNofDays(year, month)){
		jq('#departureDiv .day').html(jq('#arrivalDiv .day').html());
		jq('#departureDiv .day').val(parseInt(date)+1);
		jq('#departureDiv .month').val(month);
		jq('#departureDiv .year').val(year);
	}else{
		if(month < 12){
			jq('#departureDiv .day').html(getDatesOptions(year.toString(), (parseInt(month)+1).toString()));
			jq('#departureDiv .day').val(1);
			jq('#departureDiv .month').val(parseInt(month)+1);
			jq('#departureDiv .year').val(year);
		}else{
			jq('#departureDiv .day').html(getDatesOptions((parseInt(year)+1).toString(), '1'));
			jq('#departureDiv .month').val(1);
			jq('#departureDiv .year').val(parseInt(year)+1);
		}
	}
}

function pushArrivalDate(){
	var year = jq('#departureDiv .year').val();
	var month = jq('#departureDiv .month').val();
	var date = jq('#departureDiv .day').val();
	
	if(date>1){
		jq('#arrivalDiv .day').html(jq('#departureDiv .day').html());
		jq('#arrivalDiv .day').val(parseInt(date)-1);
		jq('#arrivalDiv .month').val(month);
		jq('#arrivalDiv .year').val(year);
	}else{
		if(month > 1){
			jq('#arrivalDiv .day').html(getDatesOptions(year.toString(), (parseInt(month)-1).toString()));
			jq('#arrivalDiv .day').val(getNofDays(year, parseInt(month)-1));
			jq('#arrivalDiv .year').val(year);
		}else{
			jq('#arrivalDiv .day').html(getDatesOptions(parseInt(year)-1, 12));
			jq('#arrivalDiv .day').val(getNofDays(parseInt(year)-1, 12));
			jq('#arrivalDiv .month').val(12);
			jq('#arrivalDiv .year').val(parseInt(year)-1);
		}
		
	}
}

function getDatesOptions(year, month){
	var daysInCurrentMonth = getNofDays(year, month);
	var datesOptions = '';
	
	for (i=0; i<daysInCurrentMonth; i++){
		datesOptions += '<option value="' + (i+1) + '">' + (i+1) + '</option>';
	}
	
	return datesOptions.toString();
}

function isLeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) return true;
		else return false;
	} else {
		if (intYear % 4 == 0) return true;
		else return false;
	}
}

function getNofDays(intYear, intMonth) {
	switch(intMonth) {
		case '1':
		case '3':
		case '5':
		case '7':
		case '8':
		case '10':
		case '12':
			return 31;
		case '2':
			if(isLeapYear(intYear)) return 29;
			else return 28;
		case '4':
		case '6':
		case '9':
		case '11':
			return 30;
		default:
		break;	
	}
}