
  function accommodationBookingFormInit() {
    var accommodaton_destination_whisper = new EditWhisper({
      id: 'accommodation_destination',
      id_edit: 'arrival_destination_edit',
      default_to_whisper: getOptionsData('accommodation_destination_whisper_default'),
      call: 'AresAccommodationBooking.suggest',
      params: {lang: document.getElementById('lang').value}
    });
//    __attachEvent('accommodation_room_1', 'select', doVisibleChild1);
//    __attachEvent('accommodation_room_2', 'select', doVisibleChild2);
    doVisibleChild1();
    doVisibleChild2();
  }

  function getOptionsData(a_element_id) {
    var result = Array();
    if (element = document.getElementById(a_element_id)) {
      for (i = 0; i < element.options.length; i++)
        result[i] = {value: element.options[i].value, text: element.options[i].text};
    }
    return result;
  }

  function submitAccommodationBookingForm() {
    var params = {
      call: 'AresAccommodationBooking.submit',
      destination: document.getElementById('arrival_destination_edit').value,
      arrival_date_day: document.getElementById('accommodation_arrival_date_day').value,
      arrival_date_month_year: document.getElementById('accommodation_arrival_date_month_year').value
    };
    request(params,
      {method: submitAccommodationBookingFormCallback, params: {}}
    );
    return false;
//    submitAccommodationBookingFormCallback({error: 0}, null);
//    return true;
  }

  function submitAccommodationBookingFormCallback(a_data, a_params)
  {
    if (a_data.error != 0) {
      alert(a_data.message); // here bude vyhodnoceni chyby, pripadne focus na element ktery to zpusobil
    }
    else {
      document.getElementById('dateFrom').value = document.getElementById('accommodation_arrival_date_day').value + '.' + document.getElementById('accommodation_arrival_date_month_year').value;
      document.getElementById('accommodation_form').submit();
    }
  }

  function openAccommodationDestinationBrowse(a_name) {
    try {
//      script = document.getElementById('destination_browser_script').value;
      var lang = document.getElementById('lang').value;
      var width = document.getElementById('accommodation_destination_browser_window_width').value;
      var height = document.getElementById('accommodation_destination_browser_window_height').value;
      var top = (screen.height - height) / 2;
      var left = (screen.width - width) / 2;
      return window.open('', a_name, 'width=' + width + ',height=' + height + ',top=' + top + ',left=' + left, ',resizable=1,scrollbars=1');
    }
    catch (e) {
      alert('openAccommodationDestinationBrowse: ' + e);
    }
  }

  function initAccommodationDestinationBrowser(a_handle, a_callback, a_default_list) {
	var w = a_handle.document;
	w.write('<html><head><title>' + document.title + '</title>');
	w.write('<link rel="stylesheet" href="styles/accommodation_booking_destination_browser.css">');
	w.write('</head><body><div id="locations"><div id="defaults"></div>');
	w.write('</body></html>');
	w.close();
    a_handle.callback = a_callback;
    a_handle.defaultList = a_default_list;

    a_handle.loadStatesCallback = function(a_data, a_params) {
      defaults = a_params.handle.defaultList;
      for (id in defaults) {
        elocation = a_params.handle.document.createElement('div');
        elocation.className = 'location';
        elocation.innerHTML = '<b>' + defaults[id].text + '</b>';
        elocation.result = defaults[id].value;
//        elocation.iata = defaults[id].value;
        __attachEvent(elocation, 'click', doAccommodationDestinationBrowserClick);
        e = a_params.handle.document.getElementById('defaults');
        e.__this = a_params.handle;
        e.appendChild(elocation);
      }
      for (id in a_data) {
        if (a_data[id].id != undefined) {
          estate = a_params.handle.document.createElement('div');
          estate.className = 'state';
          estate.innerHTML = '<b>' + a_data[id].state + '</b> (' + a_data[id].continent + ')';
          elocations = a_params.handle.document.createElement('div');
          elocations.id = 'locations:' + a_data[id].id;
          __attachEvent(estate, 'click', doAccommodationDestinationBrowserClick);
          ediv = a_params.handle.document.createElement('div');
          ediv.className = 'packed';
          ediv.appendChild(estate);
          ediv.appendChild(elocations);
          e = a_params.handle.document.getElementById('locations');
          e.__this = a_params.handle;
          e.appendChild(ediv);
        }
      }
    }
    a_handle.loadLocationsCallback = function(a_data, a_params) {
      for (id in a_data) {
        if (a_data[id].city != undefined) {
          elocation = a_params.handle.document.createElement('div');
          elocation.className = 'location';
          elocation.innerHTML = '<b>' + a_data[id].city + '</b>';
          elocation.result = a_data[id].city;
          __attachEvent(elocation, 'click', doAccommodationDestinationBrowserClick);
          a_params.parent.appendChild(elocation);
        }
      }
    }
    var params = {
      call: 'AresAccommodationBooking.getDestinationBrowserStates',
      lang: document.getElementById('lang').value
    }
    request(params, {method: a_handle.loadStatesCallback, params: {handle: a_handle}});
  }

  function doAccommodationDestinationBrowserClick(e) {
    var element = e.target ? e.target : e.srcElement;
    c = element;
    while (c.__this == undefined) {
      c = c.parentNode;
    }
    if (element.nodeName == 'B') {
      element = element.parentNode;
    }
    if (element.className.indexOf('state') != -1) {  // is state
      if (element.parentNode.className.indexOf('unpacked') == -1) {
        element.parentNode.className = 'unpacked';
        ea = element.parentNode.lastChild;
        if (ea.childNodes.length == 0) {
          var id = ea.id.split(':');
          var params = {
            call: 'AresAccommodationBooking.getDestinationBrowserLocations',
            lang: document.getElementById('lang').value,
            state: id[1]
          }
          request(params, {method: c.__this.loadLocationsCallback, params: {handle: c.__this, parent: element.parentNode.lastChild}});
        }
      }
      else
        element.parentNode.className = 'packed';
    }
    else if (element.className.indexOf('location') != -1) {
      c.__this.callback.call(this, element.result, element.iata);
      c.__this.close();
    }
  }

  function doAccommodationDestinationBrowse() {
    handle = openAccommodationDestinationBrowse('wnd_accommodation_destination_browser');
    initAccommodationDestinationBrowser(handle, doAccommodationDestinationBrowseCallback, getOptionsData('accommodation_destination_browser_default'));
  }

  function doAccommodationDestinationBrowseCallback(a_contents, a_iata) {
    document.getElementById('arrival_destination_edit').value = a_contents;
//    document.getElementById('from_iata').value = a_iata;
  }

  function checkChild(id_child_age, id_room_type) {
    var v = document.getElementById(id_room_type).value;
    r = (v == 'DBLCHD' || v == 'TWNCHD');
    document.getElementById(id_child_age).style.display = r ? 'block' : 'none';
  }

  function doVisibleChild1() {
    checkChild('accommodation_room_1_child_age_div', 'accommodation_room_1');
  }

  function doVisibleChild2() {
    checkChild('accommodation_room_2_child_age_div', 'accommodation_room_2');
  }

  function __attachEvent(a_element, a_event_name, a_function) {
//alert('set event');
    try {
      a_element.detachEvent('on' + a_event_name, a_function); // zatim takto... aby nastavil udalost jen jednou
      a_element.attachEvent('on' + a_event_name, a_function);
    }
    catch (e) {
//alert('set event');
      try {
        a_element.addEventListener(a_event_name, a_function, false);
      }
      catch (e) {
        alert('problem with attachEvent(): ' + e);
      }
    }
  }
/**/
//  alert('ready');
