	    function checkSearchForm() {
	    	if(document.getElementById('country').value == '') {
	    		alert(error_country);
	    		return false;	
	    	}

	    	if(document.getElementById('city').value == '') {
	    		alert(error_city);
	    		return false;	
	    	}

	    	if(		document.getElementById('hotelName').value.length > 0
	    		&&	document.getElementById('hotelName').value.length < 3) {
	    		alert(min_3_chars);
	    		return false;	
	    	}
	    	
    		if(allRoomCount() > maxAllRoomCount) {
    			alert(too_many_rooms + ": " + maxAllRoomCount);
    			return false;
    		}
    		if(paxCount() > maxPaxCount) {
    			alert(too_many_pax + ": " + maxPaxCount);
    			return false;
    		}
	    	
	    	if(!checkInfants()) {
	    		return false;
	    	}
	    	
	    	if(!checkPeriod()) {
	    		return false;
	    	}
	    	
			hide_show_screen();
			return true;
	    }
	    
	    function countrySelected() {
        	dwr.util.removeAllOptions("city");
        	dwr.util.addOptions("city", [{value:'', text:vyberte_mesto}], "value", "text");

        	var country_code = dwr.util.getValue("country");
        	if(country_code != '') {
        		IFormCombiHotel.getCitiesForCountry(country_code, function(data) {
		        	dwr.util.addOptions("city", data, "id" , "text");
		        	if(fCity != '') {
		        		document.getElementById('city').value = fCity;
	    	    		fCity = '';
	    	    		citySelected();
	        		}
        		});
        	}
        	
	     	document.getElementById('city').disabled = false;
    	}

	    function citySelected() {
        	dwr.util.removeAllOptions("location");
        	dwr.util.addOptions("location", [{value:'', text:bez_omezeni}], "value", "text");

        	var city_code = dwr.util.getValue("city");
        	if(city_code != '') {
        		IFormCombiHotel.getLocationsForCity(city_code, function(data) {
		        	dwr.util.addOptions("location", data, "id" , "text");
		        	if(fLocation != '') {
		        		document.getElementById('location').value = fLocation;
		        		fLocation = '';
	        		}
        		});
        	}
        	
        	document.getElementById('location').disabled = false;
    	}

	    window.onload = function() {
	    	initialSettings();
        	dwr.util.addOptions("country", [{value:'', text:vyberte_stat}], "value", "text");
        	dwr.util.addOptions("city", [{value:'', text:vyberte_mesto}], "value", "text");
        	dwr.util.addOptions("location", [{value:'', text:bez_omezeni}], "value", "text");
        	document.getElementById('city').disabled = true;
        	document.getElementById('location').disabled = true;
        	document.getElementById('country').onchange = countrySelected;
        	document.getElementById('city').onchange = citySelected;
        
        	IFormCombiHotel.getAllCountries(function(data) {
        		dwr.util.addOptions("country", data, "id", "text");
	        	if(fCountry != '') {
	        		document.getElementById('country').value = fCountry;
	        		countrySelected();
	        	}
        	});
        	
        	setDays('arrivalDay', 'arrivalMonthYear');
        	setDays('departureDay', 'departureMonthYear');
        	if(fArrivalDay != '' && fDepartureDay != '') {
        		document.getElementById('arrivalDay').value = fArrivalDay;
        		document.getElementById('departureDay').value = fDepartureDay;
	        	updateDoW('arrivalDoW', 'arrivalDay', 'arrivalMonthYear');
	        	updateDoW('departureDoW', 'departureDay', 'departureMonthYear');
        	} else {
        		date = new Date();
        		date.setTime(date.getTime() + (defaultDaysFromNow * 3600 * 24000));        		
        		document.getElementById('arrivalDay').value = date.getDate().numberFormat("00");
			    document.getElementById('arrivalMonthYear').value = (date.getMonth()+1).numberFormat("00") + ' ' + date.getFullYear();
	        	updateDoW('arrivalDoW', 'arrivalDay', 'arrivalMonthYear');
    	    	updateDeparture();
        	}
        
        	if(fRooms.length > 0) {
        		for(var x = 0; x < fRooms.length; x++) {
        			rNo = addRoom();
        			document.getElementById('rooms' + rNo + '.type').value = fRooms[x].type;
        			document.getElementById('rooms' + rNo + '.count').value = fRooms[x].count;
        			roomChanged(rNo);
        			for(var y = 0; y < fRooms[x].childrenAges.length; y++) {
        				document.getElementById('rooms' + rNo + '.childrenAges' + y).value = fRooms[x].childrenAges[y];
        			}
        			for(var y = 0; y < fRooms[x].symPassTypes.length; y++) {
        				document.getElementById('rooms' + rNo + '.symPassTypes' + y).value = fRooms[x].symPassTypes[y];
        			}
        			document.getElementById('rooms' + rNo + '.cots').value = fRooms[x].cots;
        		}
        	} else {
        		addRoom();
        	}
    	}
    	
    	
    	function extendedSearch(link) {
    		if(document.getElementById('extended').value == 'false') {
    			document.getElementById('extended').value = 'true';
    			document.getElementById('extended_form').style.display = 'block';
    			link.innerHTML = zakladni_hledani;
    		} else {
    			document.getElementById('extended').value = 'false';
    			document.getElementById('extended_form').style.display = 'none';
    			link.innerHTML = rozsirene_hledani;
    			document.getElementById('hotelName').value = '';
    			facs = document.getElementsByName('facilities');
    			for(var i = 0; i < facs.length; i++) {
    				facs[i].checked = false;
    			}
    		}
    	}
    	
    	function updateDeparture() {
     		var my = document.getElementById('arrivalMonthYear').value.split(/[ ]/);
    		var month = (my[0] - 1);
    		var year = my[1];
    		var day = document.getElementById('arrivalDay').value;
    		var date = new Date();
    		date.setFullYear(year);
    		date.setMonth(month);
    		date.setDate(day);
     		date.setHours(0);
    		date.setMinutes(0);
    		date.setSeconds(0);
    		date.setMilliseconds(0);

     		var now = new Date();
    		now.setHours(0);
    		now.setMinutes(0);
    		now.setSeconds(0);
    		now.setMilliseconds(0);
     		now.setTime(now.getTime() + 24000 * 3600 * defaultDaysFromNow);
    		
    		if(date < now) {
    			alert(in_past);
    			return false;
    		}
    		date.setTime(date.getTime() + (daysPeriod * 3600 * 24000));
    		var depM = new Number(date.getMonth() + 1);
    		document.getElementById('departureMonthYear').value = depM.numberFormat("00") + ' ' + date.getFullYear();
        	if(document.getElementById('departureMonthYear').selectedIndex == -1) {
        		alert(too_short_period);
        		document.getElementById('arrivalDay').selectedIndex = document.getElementById('arrivalDay').selectedIndex - daysPeriod;
				updateDoW('arrivalDoW', 'arrivalDay', 'arrivalMonthYear');
        		updateDeparture();
        		return;
        	}
        	setDays('departureDay', 'departureMonthYear');
        	var depD = new Number(date.getDate());
    		document.getElementById('departureDay').value = depD.numberFormat("00");
			updateDoW('departureDoW', 'departureDay', 'departureMonthYear');
    	}
    	
    	function checkPeriod() {
     		var my = document.getElementById('arrivalMonthYear').value.split(/[ ]/);
    		var month = (my[0] - 1);
    		var year = my[1];
    		var day = document.getElementById('arrivalDay').value;
    		var arrival = new Date();
    		arrival.setFullYear(year);
    		arrival.setMonth(month);
    		arrival.setDate(day);
    		arrival.setHours(0);
    		arrival.setMinutes(0);
    		arrival.setSeconds(0);
    		arrival.setMilliseconds(0);

     		my = document.getElementById('departureMonthYear').value.split(/[ ]/);
    		month = (my[0] - 1);
    		year = my[1];
    		day = document.getElementById('departureDay').value;
    		var departure = new Date();
    		departure.setFullYear(year);
    		departure.setMonth(month);
    		departure.setDate(day);
    		departure.setHours(0);
    		departure.setMinutes(0);
    		departure.setSeconds(0);
    		departure.setMilliseconds(0);

     		var now = new Date();
     		now.setHours(0);
    		now.setMinutes(0);
    		now.setSeconds(0);
    		now.setMilliseconds(0);
      		now.setTime(now.getTime() + 24000 * 3600 * defaultDaysFromNow);
    		
    		if(arrival < now || departure < now) {
    			alert(in_past);
    			return false;
    		}

			if((departure - arrival) / 24000 / 3600 < daysPeriod) {
				alert(too_short_period);
				updateDeparture();
				return false;
			}
			
			return true;
    	}
    	
    	function setDays(daysComboId, monthYear) {
    		var d = dwr.util.getValue(daysComboId);
    		var my = document.getElementById(monthYear).value.split(/[ ]/);
    		var month = (my[0] - 1);
    		var year = my[1];
			var daycount = 0;
			switch(month) {
	        	case 1:
    	        	if ((year%4 == 0 && year%100 !=0 ) || 
              			 year%400 == 0)
               			daycount = 29;
               		 else 
               			daycount = 28;
               		
           			break;
         	case 3:
	        case 5:
    	    case 8:
        	case 10:
            	daycount = 30;
            	break;
         	default:
            	daycount = 31;
            }
			dwr.util.removeAllOptions(daysComboId);
			for(i = 1; i <= daycount; i++) {
				var day = new Number(i);
				dwr.util.addOptions(daysComboId, [day.numberFormat("00")]);
			}
			dwr.util.setValue(daysComboId, d);
    	}
    	
    	function updateDoW(DoWspan, d, my) {
    		var day = document.getElementById(d).value;
    		var monthYear = document.getElementById(my).value;
    		var mya = monthYear.split(/[ ]/);
    		var month = (mya[0] - 1);
    		var year = mya[1];
    		var date = new Date();
    		date.setFullYear(year);
    		date.setMonth(month);
    		date.setDate(day);
    		document.getElementById(DoWspan).innerHTML = daysOfWeek[date.getDay()];
    	}
    	
    	function addRoom() {
    		var nextRoom = nextFreeRoomNo();
    		if(nextRoom == -1) {
    			return;
    		}
    		
    		var new_room = document.createElement('div');
    		document.getElementById('rooms').appendChild(new_room);
    		new_room.setAttribute('id', 'room' + nextRoom);
    		new_room.setAttribute('class', 'room');
    		var room_form = '';
    		if(nextRoom > 0) {
    			room_form += '<a href="#" onclick="removeRoom(' + nextRoom + '); return false">' + odebrat + '</a>';
    		}
        	room_form += '<select id="rooms' + nextRoom + '.type" name="rooms[' + nextRoom + '].type" class="sel_big" onchange="roomChanged(' + nextRoom + ')">';
          	for(var i in roomTypes) {
          		room_form += '<option value="'+roomTypes[i].id+'">'+roomTypes[i].desc+'</option>';
          	}
        	room_form += '</select><br />'
        			   + '<label for="rooms' + nextRoom + '.count">' + pocet + '</label>'
        			   + '<select id="rooms' + nextRoom + '.count" name="rooms[' + nextRoom + '].count"  onchange="roomChanged(' + nextRoom + ')">';
			for(var i = roomCountCombo.min; i <= roomCountCombo.max; i++) {
				room_form += '<option value="' + i + '"';
				if(i == roomCountCombo.def) {
					room_form += ' selected="selected"';
				}
				room_form += '>' + i + '</option>';
			}
			room_form += '</select><br />'
					   + '<div id="adults' + nextRoom + '"><label for="rooms' + nextRoom + '.adultAges0">' + vek_dospelych + '</label>'
					   + '<span id="adults_combos' + nextRoom + '"></span></div>'
					   + '<div id="children' + nextRoom + '"><label for="rooms' + nextRoom + '.childrenAges0">' + vek_deti + '</label>'
					   + '<span id="age_combos' + nextRoom + '"></span></div>'
					   + '<div id="cots' + nextRoom + '"><label for="rooms' + nextRoom + '.cots">' + deti02 + '</label>'
					   + '<select id="rooms' + nextRoom + '.cots" name="rooms[' + nextRoom + '].cots">';
			for(var i = cotsCountCombo.min; i <= cotsCountCombo.max; i++) {
				room_form += '<option value="' + i + '"';
				if(i == cotsCountCombo.def) {
					room_form += ' selected="selected"';
				}
				room_form += '>' + i + '</option>';
			}
			room_form  += '</select></div>';
			new_room.innerHTML = room_form;
			
			roomChanged(nextRoom);
			
    		if(nextFreeRoomNo() == -1 || allRoomCount() == maxAllRoomCount) {
    			document.getElementById('next_room_link').style.display = 'none';
    		}
    		
    		return nextRoom;
	   	}
    	
    	function removeRoom(i) {
    		document.getElementById('rooms').removeChild(document.getElementById('room' + i));
   			document.getElementById('next_room_link').style.display = 'block';
    	}
    	
    	function nextFreeRoomNo() {
    		for(var i = 0; i < maxRoomTypeCount; i++) {
    			if(document.getElementById('room' + i) == null) {
    				return i;
    			}
    		}
    		return -1;
    	}

    	function roomChanged(i) {
    		var typeId = document.getElementById('rooms' + i + '.type').value;
    		
    		if(roomTypes[typeId].code == 'SB') { // singly nemají­ cots
    			document.getElementById('rooms' + i + '.cots').value = 0;
    			document.getElementById('cots' + i).style.display = 'none';
    		} else {
    			document.getElementById('cots' + i).style.display = 'block';
    		}
    		
   			var combo_html = '';
   			for(var j = 0; j < roomTypes[typeId].bedsCount * document.getElementById('rooms' + i + '.count').value; j++) {
   				combo_html += '<select id="rooms' + i + '.symPassTypes' + j + '" name="rooms[' + i + '].symPassTypes">';
   				j % roomTypes[typeId].bedsCount == 0 ? combo_html += '<option value="YTH">18-24</option><option value="ADT">24-59</option><option value="YCD">60+</option>'
   					   : combo_html += '<option value="CHD">2-12</option><option value="YTH">12-24</option><option value="ADT">24-59</option><option value="YCD">60+</option>';
   				combo_html += '</select>';
   			}
   			document.getElementById('adults_combos' + i).innerHTML = combo_html;

    		if(roomTypes[typeId].childrenCount == 0) {
    			document.getElementById('children' + i).style.display = 'none';
    			document.getElementById('age_combos' + i).innerHTML = '';
    		} else {
    			document.getElementById('children' + i).style.display = 'block';
    			combo_html = '';
    			for(var j = 0; j < roomTypes[typeId].childrenCount * document.getElementById('rooms' + i + '.count').value; j++) {
    				combo_html += '<select id="rooms' + i + '.childrenAges' + j + '" name="rooms[' + i + '].childrenAges">';
					for(var x = childrenAgesCombo.min; x <= childrenAgesCombo.max; x++) {
						combo_html += '<option value="' + x + '"';
						if(x == childrenAgesCombo.def) {
							combo_html += ' selected="selected"';
						}
						combo_html += '>' + x + '</option>';
					}
    				combo_html += '</select>';
    			}
    			document.getElementById('age_combos' + i).innerHTML = combo_html;
    		}

    		if(allRoomCount() >= maxAllRoomCount || paxCount() >= maxPaxCount) {
    			document.getElementById('next_room_link').style.display = 'none';
    		} else {
	   			document.getElementById('next_room_link').style.display = 'block';
    		}
    		if(allRoomCount() > maxAllRoomCount) {
    			alert(too_many_rooms + ": " + maxAllRoomCount);
    		}
    		if(paxCount() > maxPaxCount) {
    			alert(too_many_pax + ": " + maxPaxCount);
    		}
    	}
    	
    	function allRoomCount() {
    		var totalRooms = new Number(0);
    		for(var i = 0; i < maxRoomTypeCount; i++) {
    			combo = document.getElementById('rooms' + i + '.count')
    			if(combo != null) {
    				totalRooms += new Number(combo.value);
    			}
    		}
    		return totalRooms;
    	}
    	
    	function paxCount() {
    		var totalPax = new Number(0);
    		for(var i = 0; i < maxRoomTypeCount; i++) {
    			room = document.getElementById('room' + i)
    			if(room != null) {
    				rt = roomTypes[document.getElementById('rooms' + i + '.type').value];
    				beds = rt.bedsCount + rt.childrenCount;
    				count = new Number(document.getElementById('rooms' + i + '.count').value);
    				totalPax += beds * count;
    			}
    		}
    		return totalPax;
    	}
    	
    	function checkInfants() {
    		var selects = document.getElementsByTagName("SELECT");
    		var cots = 0;
    		var adults = 0;
    		var select;
    		for(var i = 0; i < selects.length; i++) {
    			select = selects[i];
    			if(select.id.indexOf('rooms') == 0 && select.id.indexOf('.cots') > 0) {
    				cots += select.value;
    			}
    			if(select.id.indexOf('rooms') == 0 && select.id.indexOf('.symPassTypes') > 0) {
    				if(select.value != 'CHD') {
    					adults++;
    				}
    			}
    		}
    		
    		if(adults < cots) {
    			alert(more_infants_than_adults);
    			return false;
    		}
    		
    		return true;
    	}
