function addOpenSearch() {
  if (window.external && ("AddSearchProvider" in window.external)) {
    window.external.AddSearchProvider('opensearch_xml.php');
  }
}

/* Währung-Funktion */
function getCurrencyToCent(curVal){
  var powVal=1;
  Result = curVal.toString().replace(/\s+/g,'').replace(/\D+/g,'#').replace(/(\#\d{1})$/,'$1'+'0').replace(/(\#)$/,'#00');
  if(Result.indexOf('#') < 0) powVal=100;
  return Result.replace(/\D+/g,'')*powVal;
}

/* Währung-Funktionen (decimalSeparator und thousandSeparator sind in main.inc.php definiert) */
function getCurrency(curVal){
  if(curVal==0) curVal="000";
  return curVal.toString().replace(/(\d{2})$/,'#$1').replace(/^(\#\d+)/,'0$1').replace(/(\d{3}\#)/,'§$1').replace(/(\d{3}\§)/g,'§$1').replace(/\§/g,thousandSeparator).replace(/\#/,decimalSeparator);
}

/* Währung-Funktion - onblur="javascript:setCurrencyField(this)" */
function setCurrencyField(curField){
  curField.value=getCurrency(getCurrencyToCent(curField.value));
  return;
}

/* Zahleneingabe anpassen */
function inputValueFloat(txt)
{
  return parseFloat(txt.replace(/,/, '.'));
}
function cmpFloat(val1, val2)
{
  val1 = Math.round(val1 * 100);
  val2 = Math.round(val2 * 100);
  return val1 > val2;
}

/*
  Menü-Funktionen für IE6
*/
var lastaction = new Array(0, 0, 0, 0);
function enableMenu(id, menu, menutitel, enabled, mainstyle)
{
  if (enabled) {
    if (document.getElementById(menu)) {
      document.getElementById(menu).style.display='block';
      document.getElementById(menutitel).className='other active';
    }
    lastaction[id]++;
  } else {
    setTimeout('disableMenu('+id+', "'+menu+'", "'+menutitel+'", "'+mainstyle+'", '+lastaction[id]+')', 100);
  }
}
function disableMenu(id, menu, menutitel, mainstyle, lastid)
{
  if (lastaction[id] == lastid) {
    if (document.getElementById(menu)) {
      document.getElementById(menu).style.display='none';
      document.getElementById(menutitel).className=mainstyle;
    }
  }
}

/*
  Funktionen für Google-Maps
*/
function createMarker(point, text, moptions, importance)
{
  var marker = new GMarker(point, moptions);
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml(text);
  });
  marker.importance = importance;
  return marker;
}

function mapzindex(marker, ud)
{
  return marker.importance;
}

var mapmarker = Array();
var map;
var infoWindow;
var onMarkerClick = function() {
  var marker = this;
  infoWindow.setContent(marker.infoContent);
  infoWindow.open(map, marker);
  map.setCenter(marker.position);
};

function showMapPosition(obj, zoom, points) {
  maplist = document.getElementById('CityMapContentList');
  if (maplist) maplist.innerHTML="";
  var mapCenter = new google.maps.LatLng(points[0][0], points[0][1]);
  var mapOptions = {
    zoom: zoom,
    center: mapCenter,
    scaleControl: false,
    streetViewControl: false,
    scrollwheel: false,
//    panControl: false,
    mapTypeControl: false,
    zoomControl: true,
    zoomControlOptions: {style: google.maps.ZoomControlStyle.SMOLL},
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(obj, mapOptions);
  if (map) {
    infoWindow = new google.maps.InfoWindow;
    var mapBounds = new google.maps.LatLngBounds();
    var maplistclass = '';
    for (var cnt = 0; cnt < points.length; cnt++) {
      if (points[cnt][2] == 'blueIcon') {
        var markerIco = new google.maps.MarkerImage(portalurl+'/images/piktogramme/map_hotel_inactive.gif',
                                                new google.maps.Size(17,17));
        maplistclass = 'CityMapContentListInactive';
      } else if (points[cnt][2] == 'redIcon') {
        var markerIco = new google.maps.MarkerImage(portalurl+'/images/piktogramme/map_hotel_active.gif',
                                                new google.maps.Size(17,17));
        maplistclass = 'CityMapContentListActive';
      } else if (points[cnt][2] == 'portalIcon') {
        var markerIco = new google.maps.MarkerImage(portalurl+'/images/map_hotelicon.gif',
                                                new google.maps.Size(24,24));
          maplistclass = 'CityMapContentListInactive';
      }
      mapmarker[cnt] = new google.maps.Marker(
                                              {
                                                position: new google.maps.LatLng(points[cnt][0], points[cnt][1]),
                                                title: points[cnt][4],
                                                infoContent: '<span class="CityMapOverlay">'+points[cnt][3]+'</span>',
                                                map: map,
                                                icon: markerIco
                                              });
      google.maps.event.addListener(mapmarker[cnt], 'click', onMarkerClick);
      mapBounds.extend(mapmarker[cnt].position);
      if (maplist) {
        var mapParagraph = document.createElement('p');
        mapParagraph.className=maplistclass;
        var mapAnchor = document.createElement('a');
        mapAnchor.href='javascript:showHotel('+cnt+');';
        var mapAnchorBold = document.createElement('b');
        mapAnchorBold.innerHTML = points[cnt][4];
        mapAnchor.appendChild(mapAnchorBold);
        mapParagraph.appendChild(mapAnchor);
        mapParagraph.innerHTML += points[cnt][5];
        maplist.appendChild(mapParagraph);
      }
    }
    if (!zoom) map.fitBounds(mapBounds);
  }
//  google.maps.event.addDomListener();
}


var mappoints;
var mapzoom;

function showHotel(marker)
{
  if (map.getZoom() < 12 ) map.setZoom(12);
  infoWindow.setContent('<span class="CityMapOverlay">'+maparray[marker][3]+'</span>');
  infoWindow.open(map, mapmarker[marker]);
  map.setCenter(mapmarker[marker].position);
}

function showMap()
{
  showMapPosition(document.getElementById("CityMapContent"), mapzoom, mappoints);
}

function openCloseMap(mclose, points, zoom)
{
  if (mclose || (document.getElementById('CityMap').style.display == 'none')) {
    document.getElementById('CityMap').style.display = '';
    mappoints = points;
    mapzoom = zoom;
    setTimeout('showMap()', 100);
  } else {
    document.getElementById('CityMap').style.display = 'none';
  }
}

function findGooglePlaces()
{
  try {
    var mapDiv = document.getElementById('district0');
    if (mapDiv) {
      var geocoder = new window.google.maps.Geocoder();
      var address = document.getElementById('OrtEingabe').value;
        geocoder.geocode({'address': address}, function(results, status) {
          if (status == window.google.maps.GeocoderStatus.OK) {
              mapDiv.innerHTML="";
              var lat = results[0].geometry.location.lat();
              var lng = results[0].geometry.location.lng();
              var name =  results[0].formatted_address;
               var placeAnchor = document.createElement('a');
               placeAnchor.className='formtablecitymap';
			   placeAnchor.href='javascript: selectOrt("G", "'+lng+','+lat+'", "'+name+'")';
               placeAnchor.innerHTML = name;
              mapDiv.appendChild(placeAnchor);
          }
        });
    }
  } catch(err) {
    return;
  }
}

/*
  Disclaimer Popup
*/
function DisclaimerBox()
{
  openurl=window.open('disclaimer_popup.php'+systemsessionparamez, 'fenster', 'directories=no,scrollbars=yes,status=no,resizable=yes,toolbar=yes,width=600,height=500,screenX=0,screenY=0');
}


/*
  Disclaimer Popup für Angebotsbedingungen
*/
function AdminDisclaimerBox(rid)
{
  openurl=window.open('admin_disclaimer_popup.php?RID='+rid+systemsessionparammz, 'fenster', 'directories=no,scrollbars=yes,status=no,resizable=yes,toolbar=yes,width=600,height=500,screenX=0,screenY=0');
}


/*
  Infobox Trefferliste
*/
function closeInfobox()
{
  document.getElementById('CitySpecials').style.display='none';
  document.getElementById('CityMap').style.display='none';
  setInfoboxStatus('CLOSE');
}

function activateMap()
{
  document.getElementById('CitySpecials').style.display='none';
  document.getElementById('CityMap').style.display='';
  openCloseMap(true, maparray, 0);
  setInfoboxStatus('MAP');
}

function showSpecialList()
{
  var speciallist = '';
  var speciallisticon;
  for (var cnt = 0; cnt < specialarray.length; cnt++) {
    if (specialarray[cnt][7]) {
      if (specialarray[cnt][6]) {
        speciallisticon = 'CitySpecialsContentListActive';
      } else {
        speciallisticon = 'CitySpecialsContentListInactive';
      }
      speciallist=speciallist+'<p class="'+speciallisticon+'"><a href="javascript:showSpecialContent('+specialarray[cnt][0]+');"><b>'+specialarray[cnt][2]+'</b></a>'+specialarray[cnt][10]+'</p>';
    }
  }
  if (document.getElementById('CitySpecialsContentList')) {
    document.getElementById('CitySpecialsContentList').innerHTML=speciallist;
  }
}

function showSpecialContent(hid)
{
  var specialcontent = '';
  for (var cnt = 0; cnt < specialarray.length; cnt++) {
    if (((hid == 0) && specialarray[cnt][7]) || (hid == specialarray[cnt][0])) {
      specialcontent = specialcontent + '<div class="CitySpecialsContentBox"><h2>'+specialarray[cnt][2]+'&nbsp;<nobr>'+showStars(specialarray[cnt][8], specialarray[cnt][9], true)+'</nobr></h2><h1>'+specialarray[cnt][3]+'</h1><p>'+specialarray[cnt][5]+' - '+specialarray[cnt][4]+' ... <a href="/homespecials.php?Kundenid='+specialarray[cnt][0]+systemsessionparammz+'">[mehr]</a></p></div>';
    }
  }
  if (document.getElementById('CitySpecialsContent')) {
    document.getElementById('CitySpecialsContent').innerHTML=specialcontent;
  }
}

function activateSpecials()
{
  document.getElementById('CitySpecials').style.display='';
  document.getElementById('CityMap').style.display='none';
  showSpecialList();
  showSpecialContent(0);
  setInfoboxStatus('SPECIALS');
}

function setInfoboxStatus(status) 
{
  with (new Ajax()) {
    url="/ajax/infoboxstatus.php";
    params = "Status="+status+"&rand="+Math.floor(Math.random()*99999999999)+systemsessionparammz;
    onSuccess=infoBoxStatusSuccess;
    onError=infoBoxStatusError;
    doRequest();
  }
  return true;
}
function infoBoxStatusSuccess(txt, xml) {}
function infoBoxStatusError(msg) {}


/*
  Nachsortierung Trefferliste
*/
var lastcheckid = '';
function showNavSearchInfo(checkid)
{
  var chainstr = '';
  for (var key in sortchain) {
    if (document.getElementById('ErweitertHotelKette'+sortchain[key])) {
      if (document.getElementById('ErweitertHotelKette'+sortchain[key]).checked &&
      !document.getElementById('ErweitertHotelKette'+sortchain[key]).disabled) {
        chainstr = chainstr+','+sortchain[key];
      }
    }
  }
  var catstr = '';
  for (var key in sortcat) {
    if (document.getElementById('ErweitertHotelKat'+sortcat[key]).checked) {
      catstr = catstr+','+sortcat[key];
    }
  }
  var typestr = '';
  for (var key in sorttype) {
    if (document.getElementById('ErweitertHotelTyp'+sorttype[key]).checked) {
      typestr = typestr+''+sorttype[key];
    }
  }
  var techstr = '';
  for (var key in sorttech) {
    if (document.getElementById('ErweitertHotelTech'+sorttech[key]).checked) {
      techstr = techstr+''+sorttech[key];
    }
  }
  var roomstr = '';
  for (var key in sortroom) {
    if (document.getElementById('ErweitertHotelZimmer'+sortroom[key]).checked) {
      roomstr = roomstr+''+sortroom[key];
    }
  }
  var apartstr = '';
  for (var key in sortapart) {
    if (document.getElementById('ErweitertHotelApartment'+sortapart[key]).checked) {
      apartstr = apartstr+''+sortapart[key];
    }
  }
  var hotelstr = '';
  for (var key in sorthotel) {
    if (document.getElementById('ErweitertHotelAusstattung'+sorthotel[key]).checked) {
      hotelstr = hotelstr+''+sorthotel[key];
    }
  }
  var spastr = '';
  for (var key in sortspa) {
    if (document.getElementById('ErweitertHotelSpa'+sortspa[key]).checked) {
      spastr = spastr+''+sortspa[key];
    }
  }
  var certstr = '';
  for (var key in sortcert) {
    if (document.getElementById('ErweitertHotelZert'+sortcert[key]).checked) {
      certstr = certstr+''+sortcert[key];
    }
  }
  with (new Ajax()) {
    url="/ajax/navisort.php";
    params = "CheckID="+checkid+"&SortKategorie="+encodeURI(catstr)+"&SortCert="+certstr+"&SortHotelketten="+encodeURI(chainstr)+"&SortSchwerpunkt="+encodeURI(typestr)+"&SortTagung="+encodeURI(techstr)+"&SortZimmer="+encodeURI(roomstr)+"&SortApart="+encodeURI(apartstr)+"&SortHotel="+encodeURI(hotelstr)+"&SortFreizeit="+encodeURI(spastr)+"&rand="+Math.floor(Math.random()*99999999999)+systemsessionparammz;
    onSuccess=sortSuccess;
    onError=sortError;
    doRequest();
  }
  lastcheckid = checkid;
}

function sortSuccess(txt, xml)
{
  if (txt.substring(0, 3) == 'OK#') {
    var elements = txt.split('#');
    var anzahl = elements[1];
    document.getElementById('NaviSearchHotelCount').innerHTML=anzahl;
    if (elements[2] != lastcheckid) {
      return true;
    }
    var schwerpunkte = elements[3].split(';');
    for (var key in sorttype) {
      document.getElementById('NaviSearchTypeItem'+sorttype[key]).className = 'NavSearchListThemeItemGray';
      document.getElementById('NaviSearchType'+sorttype[key]).innerHTML ='0';
      document.getElementById('ErweitertHotelTyp'+sorttype[key]).disabled = true;
    }
    if (schwerpunkte.length) {
      for (var cnt = 0; cnt < schwerpunkte.length; cnt++) {
        schwerpunkt = schwerpunkte[cnt].split('=');
        if (document.getElementById('NaviSearchType'+schwerpunkt[0])) {
          document.getElementById('NaviSearchType'+schwerpunkt[0]).innerHTML = schwerpunkt[1];
          document.getElementById('NaviSearchTypeItem'+schwerpunkt[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelTyp'+schwerpunkt[0]).disabled = false;
        }
      }
    }
    var technik = elements[4].split(';');
    for (var key in sorttech) {
      if (document.getElementById('NaviSearchTechItem'+sorttech[key])) {
        document.getElementById('NaviSearchTechItem'+sorttech[key]).className = 'NavSearchListThemeItemGray';
        document.getElementById('NaviSearchTech'+sorttech[key]).innerHTML ='0';
        document.getElementById('ErweitertHotelTech'+sorttech[key]).disabled = true;
      }
    }
    if (technik.length) {
      for (var cnt = 0; cnt < technik.length; cnt++) {
        ttechnik = technik[cnt].split('=');
        if (document.getElementById('NaviSearchTech'+ttechnik[0])) {
          document.getElementById('NaviSearchTech'+ttechnik[0]).innerHTML = ttechnik[1];
          document.getElementById('NaviSearchTechItem'+ttechnik[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelTech'+ttechnik[0]).disabled = false;
        }
      }
    }
    var rooms = elements[5].split(';');
    for (var key in sortroom) {
      if (document.getElementById('NaviSearchRoomItem'+sortroom[key])) {
        document.getElementById('NaviSearchRoomItem'+sortroom[key]).className = 'NavSearchListThemeItemGray';
        document.getElementById('NaviSearchRoom'+sortroom[key]).innerHTML ='0';
        document.getElementById('ErweitertHotelZimmer'+sortroom[key]).disabled = true;
      }
    }
    if (rooms.length) {
      for (var cnt = 0; cnt < rooms.length; cnt++) {
        rrooms = rooms[cnt].split('=');
        if (document.getElementById('NaviSearchRoom'+rrooms[0])) {
          document.getElementById('NaviSearchRoom'+rrooms[0]).innerHTML = rrooms[1];
          document.getElementById('NaviSearchRoomItem'+rrooms[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelZimmer'+rrooms[0]).disabled = false;
        }
      }
    }
    var apart = elements[6].split(';');
    for (var key in sortapart) {
      if (document.getElementById('NaviSearchApartItem'+sortapart[key])) {
        document.getElementById('NaviSearchApartItem'+sortapart[key]).className = 'NavSearchListThemeItemGray';
        document.getElementById('NaviSearchApart'+sortapart[key]).innerHTML ='0';
        document.getElementById('ErweitertHotelApartment'+sortapart[key]).disabled = true;
      }
    }
    if (rooms.length) {
      for (var cnt = 0; cnt < apart.length; cnt++) {
        aapart = apart[cnt].split('=');
        if (document.getElementById('NaviSearchApart'+aapart[0])) {
          document.getElementById('NaviSearchApart'+aapart[0]).innerHTML = aapart[1];
          document.getElementById('NaviSearchApartItem'+aapart[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelApartment'+aapart[0]).disabled = false;
        }
      }
    }
    var hotels = elements[7].split(';');
    for (var key in sorthotel) {
      document.getElementById('NaviSearchHotelItem'+sorthotel[key]).className = 'NavSearchListThemeItemGray';
      document.getElementById('NaviSearchHotel'+sorthotel[key]).innerHTML ='0';
      document.getElementById('ErweitertHotelAusstattung'+sorthotel[key]).disabled = true;
    }
    if (hotels.length) {
      for (var cnt = 0; cnt < hotels.length; cnt++) {
        hotel = hotels[cnt].split('=');
        if (document.getElementById('NaviSearchHotel'+hotel[0])) {
          document.getElementById('NaviSearchHotel'+hotel[0]).innerHTML = hotel[1];
          document.getElementById('NaviSearchHotelItem'+hotel[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelAusstattung'+hotel[0]).disabled = false;
        }
      }
    }
    var spa = elements[8].split(';');
    for (var key in sortspa) {
      document.getElementById('NaviSearchSpaItem'+sortspa[key]).className = 'NavSearchListThemeItemGray';
      document.getElementById('NaviSearchSpa'+sortspa[key]).innerHTML ='0';
      document.getElementById('ErweitertHotelSpa'+sortspa[key]).disabled = true;
    }
    if (spa.length) {
      for (var cnt = 0; cnt < spa.length; cnt++) {
        spaitem = spa[cnt].split('=');
        if (document.getElementById('NaviSearchSpa'+spaitem[0])) {
          document.getElementById('NaviSearchSpa'+spaitem[0]).innerHTML = spaitem[1];
          document.getElementById('NaviSearchSpaItem'+spaitem[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelSpa'+spaitem[0]).disabled = false;
        }
      }
    }
    var cert = elements[9].split(';');
    for (var key in sortcert) {
      document.getElementById('NaviSearchCertItem'+sortcert[key]).className = 'NavSearchListThemeItemGray';
      document.getElementById('NaviSearchCert'+sortcert[key]).innerHTML ='0';
      document.getElementById('ErweitertHotelZert'+sortcert[key]).disabled = true;
    }
    if (cert.length) {
      for (var cnt = 0; cnt < cert.length; cnt++) {
        certitem = cert[cnt].split('=');
        if (document.getElementById('NaviSearchCert'+certitem[0])) {
          document.getElementById('NaviSearchCert'+certitem[0]).innerHTML = certitem[1];
          document.getElementById('NaviSearchCertItem'+certitem[0]).className = 'NavSearchListThemeItem';
          document.getElementById('ErweitertHotelZert'+certitem[0]).disabled = false;
        }
      }
    }
    var cat = elements[10].split(';');
    for (var key in sortcat) {
    }
    if (cat.length) {
      for (var cnt = 0; cnt < cat.length; cnt++) {
        catitem = cat[cnt].split('=');
        if (document.getElementById('NaviSearchCat'+catitem[0])) {
          if (catitem[1] > 0) {
            document.getElementById('NaviSearchCat'+catitem[0]).innerHTML = catitem[1];
            document.getElementById('NaviSearchCatItem'+catitem[0]).className = 'NavSearchListThemeItem';
          } else {
            document.getElementById('NaviSearchCatItem'+catitem[0]).className = 'NavSearchListThemeItemGray';
            document.getElementById('NaviSearchCat'+catitem[0]).innerHTML ='0';
          }
        }
      }
    }
    var chains = elements[11].split(';');
    if (chains.length) {
      for (var cnt = 0; cnt < chains.length; cnt++) {
        chainsitem = chains[cnt].split('=');
        if (document.getElementById('NaviSearchChain'+chainsitem[0])) {
          if (chainsitem[1] > 0) {
            document.getElementById('NaviSearchChain'+chainsitem[0]).innerHTML = chainsitem[1];
            document.getElementById('NaviSearchChainItem'+chainsitem[0]).className = 'NavSearchListThemeItem';
          } else {
            document.getElementById('NaviSearchChainItem'+chainsitem[0]).className = 'NavSearchListThemeItemGray';
            document.getElementById('NaviSearchChain'+chainsitem[0]).innerHTML ='0';
          }
        }
      }
    }
    document.getElementById('NaviSearchInfo').style.display='';
    navScroll();
  }
}

function sortError(msg)
{
}

/*
  Stadtauswahl Daten holen
*/
function checkAJAX() 
{
  with (new Ajax()) {
    url="/ajax/check_ajax.php";
    params = "rand="+Math.floor(Math.random()*99999999999)+systemsessionparammz;
    onSuccess=checkAJAXSuccess;
    onError=checkAJAXError;
    doRequest();
  }
  return true;
}

function checkAJAXSuccess(txt, xml)
{
}

function checkAJAXError(msg)
{
}

/*
  Stadtauswahl Suche
*/
//var lastAjaxRequest = 0;
var findCityObject;
var findCityMap;
var maxCityObjects = -1;
var selCityObjects = -1;
var cityObjects = new Array();
var openCitySel = 0;
var findCityIsHome = 0;

function initFindCity(obj, disableMap, ishome)
{
  if (obj) {
    findCityObject = obj;
    findCityMap = disableMap;
    findCityIsHome = ishome;
    obj.onfocus=findCityFocus;
    obj.onblur=findCityBlur;
    obj.onkeyup=findCityKey;
    document.ErweiterForm.onsubmit=returnCheck;
    if (findCityIsHome && (document.ErweiterForm.OrtEingabe.value == '')) {
      document.ErweiterForm.OrtEingabe.value=inputcitydefault; 
      document.ErweiterForm.OrtEingabe.style.color='#909090';
    }
  }
}

function findCityFocus(res)
{
  if ((findCityIsHome > 0) && (findCityObject.value == inputcitydefault)) {
    findCityObject.value = ''; 
    findCityObject.style.color='#000';
  }
}

function findCityBlur(res)
{
  if (findCityIsHome > 0) {
    showHideCityBox('INPUT', false); 
    if (findCityObject.value == '') {
      findCityObject.value = inputcitydefault; 
      findCityObject.style.color='#909090';
    }
  }
  openCitySel = 0;
}

function returnCheck(res)
{
  if (openCitySel == 1) {
    if (selCityObjects >= 0) {
      eval(cityObjects[selCityObjects]);
      findCityObject.blur();
    }
    openCitySel = 0;
    if (findCityIsHome > 0) {
      showHideCityBox(false);
      if (document.getElementById('SearchSubmitButton')) {
        document.getElementById('SearchSubmitButton').focus();
      }
    }
    return false;
  } else {
    return true;
  }
}

function findCityKey(res)
{
  if (!res)
    res = window.event;
  if (res.which) {
    code = res.which;
  } else if (res.keyCode) {
    code = res.keyCode;
  }
  if ((code == 38)) {
    if ((selCityObjects > 0) && (maxCityObjects > 0)) {
      selCityObjects--;
      highlightCity(selCityObjects);
      openCitySel=1;
    }
  } else if ((code == 40)) {
    if (selCityObjects < maxCityObjects-1) {
      selCityObjects++;
      highlightCity(selCityObjects);
      openCitySel=1;
    }
  } else {
    showHideCityBox('INPUT', true);
    if (document.ErweiterForm.OrtValue) document.ErweiterForm.OrtValue.value = '0';
    if (document.ErweiterForm.Land) document.ErweiterForm.Land.value = '';
    findCity(findCityObject.value, findCityMap); 
  }
  if (document.getElementById('NavSearchListButton')) {
    document.getElementById('NavSearchListButton').className='NavSearchListNew';
  }
}

function highlightCity(id)
{
  for (var cnt = 0; cnt < maxCityObjects; cnt++) {
  document.getElementById('AjaxObject'+cnt).className='formtablecity';
  }
  document.getElementById('AjaxObject'+id).className='formtablecityhighlight';
}

var findCityParams="";

function findCity(txt, disableMap)
{
  var findParams="";
  if (disableMap) disableMap = 1; else disableMap = 0;
  if (txt.length) {
    showHideCityBox(true);
    if (document.getElementById("CityListInput")) {
      document.getElementById("CityListInput").style.height = '199px';
    }
    findParams="Text="+encodeURI(txt);
	findParams+="&Lang="+encodeURI(language);
	findParams+="&DisableMap="+disableMap;
	findParams+="&RequestID="+Math.floor(Math.random()*99999999999);
    if (ajaxcountryid) findParams+="&Land="+ajaxcountryid;
    findParams+=systemsessionparammz;
	findCityParams=findParams;
	setTimeout("findCityAjax('"+findParams+"')",0.5*1000);
  } else {
    showHideCityBox(false);
    if (document.getElementById("CityListInput")) {
      document.getElementById("CityListInput").style.height = '27px';
    }
  }
}

function findCityAjax(curParams)
{
//	clearTimeout(findTimeout);
  if (curParams.indexOf(findCityParams)===0) {
    with (new Ajax()) {
      url="/ajax/find_city.php";
      params = curParams;
      onSuccess=findCitySuccess;
      onError=findCityError;
      doRequest();
    }
  }
  return;
}

function findCitySuccess(txt, xml)
{
  var cnt = 0;
  var cname = '';
  var data = txt.split("<|>");
  document.getElementById("CityList").innerHTML = data[5];
  maxCityObjects = data[6];
  cityObjects = data[7].split("|");
  selCityObjects = -1;
  findGooglePlaces();
}

function findCityError(msg)
{
  findCityParam="";
}

function selectOrt(ortType, ortId, ortEingabe)
{
  document.ErweiterForm.OrtValue.value = ortId;
  document.ErweiterForm.OrtType.value = ortType;
  document.ErweiterForm.OrtEingabe.value = ortEingabe;
  showHideCityBox('INPUT', false);
  showHideCityBox('DIV', false);
//  if (document.getElementById("CityListInput")) document.getElementById("CityListInput").style.height = '27px';
}
/*
function selectCity(id, cityname, countryid, countryname)
{
  document.ErweiterForm.Ort.value = id;
  document.ErweiterForm.OrtEingabe.value = cityname;
  document.ErweiterForm.Land.value = countryid;
  document.ErweiterForm.RegionUmkreisID.value = "0";
  document.ErweiterForm.Koordinaten.value = '';
  showHideCityBox('INPUT', false);
  showHideCityBox('DIV', false);
  if (document.getElementById("CityListInput")) {
    document.getElementById("CityListInput").style.height = '27px';
  }
  if (document.getElementById("SelCity")) {
    document.getElementById("SelCity").value = '1';
  }
}

function selectDistrict(id, distname, countryid, countryname)
{
  document.ErweiterForm.Ort.value = "0";
  document.ErweiterForm.OrtEingabe.value = distname;
  document.ErweiterForm.Land.value = countryid;
  document.ErweiterForm.RegionUmkreisID.value = id;
  document.ErweiterForm.Koordinaten.value = '';
  showHideCityBox('INPUT', false);
  showHideCityBox('DIV', false);
  if (document.getElementById("CityListInput")) {
    document.getElementById("CityListInput").style.height = '27px';
  }
  if (document.getElementById("SelCity")) {
    document.getElementById("SelCity").value = '1';
  }
}

function selectCoordinate(id, coordname, countryid, countryname, long, lat)
{
  document.ErweiterForm.Ort.value = "0";
  document.ErweiterForm.OrtEingabe.value = coordname;
  document.ErweiterForm.Land.value = countryid;
  document.ErweiterForm.RegionUmkreisID.value = '0';
  document.ErweiterForm.Koordinaten.value = long+','+lat;
  showHideCityBox('INPUT', false);
  showHideCityBox('DIV', false);
  if (document.getElementById("CityListInput")) {
    document.getElementById("CityListInput").style.height = '27px';
  }
  if (document.getElementById("SelCity")) {
    document.getElementById("SelCity").value = '1';
  }
}
*/

function selectMoreCities()
{
  if (document.ErweiterForm) {
    document.ErweiterForm.OrtType.value='';
    document.ErweiterForm.OrtValue.value='';
    document.ErweiterForm.submit();
  }
}

var showHideInput = false;
var showHideDiv = false;

function showHideCityBox(type, active)
{
  if (type == 'DIV') {
    if (active) {
      showHideDiv = true;
    } else {
      showHideDiv = false;
    }
  }
  else if (type == 'INPUT') {
    if (active) {
      showHideInput = true;
    } else {
      showHideInput = false;
    }
  }
  if (showHideInput || showHideDiv) {
    document.getElementById('CityListFrame').style.display = '';
    hideSelectBox('none');
  } else {
    document.getElementById('CityListFrame').style.display = 'none';
    hideSelectBox('');
  }
}

function hideSelectBox(status) 
{
  if (!window.XMLHttpRequest) {
  if (document.ErweiterForm.Umkreissuche) {
    document.ErweiterForm.Umkreissuche.style.display = status;
  }
  if (document.ErweiterForm.Hotelketten) {
    document.ErweiterForm.Hotelketten.style.display = status;
  }
  if (document.ErweiterForm.Kategorie) {
    document.ErweiterForm.Kategorie.style.display = status;
  }
  }
}

/*
  Hotelauswahl Trefferliste
*/
function showStars(stars, superior, smallstars)
{
  var imgtxt = "";
  for (cnt=0; cnt < stars; cnt++) {
    if (smallstars == true) {
      imgtxt=imgtxt+'<img border="0" src="/images/piktogramme/stern_neu_klein.gif" width="9" height="9" align="absmiddle">';
    } else {
      imgtxt=imgtxt+'<img border="0" src="/images/piktogramme/stern_neu.gif" width="13" height="12" align="absmiddle">';
    }
  }
  if (superior == 1) {
    if (smallstars == true) {
      imgtxt=imgtxt+'<img border="0" src="/images/piktogramme/stern_neu_halb_klein.gif" width="9" height="9" align="absmiddle">';
    } else {
      imgtxt=imgtxt+'<img border="0" src="/images/piktogramme/stern_neu_halb_blau.gif" width="13" height="12" align="absmiddle">';
    }
  }
  return imgtxt;
}

function getBoxMoveID()
{
  CartBoxMove = Math.floor(Math.random()*99999999999);
  return CartBoxMove;
}

function cartHide(boxmoveid)
{
  if (CartBoxMove == boxmoveid) {
    if (CartBoxMouseOver) {
      window.setTimeout("cartHide('"+boxmoveid+"')", 3000)
    } else {
      if (CartBoxPosition<160) {
        CartBoxPosition += 10;
        document.getElementById("CartBox").style.top=CartBoxPosition+"px";
        window.setTimeout("cartHide('"+boxmoveid+"')", 50);
      } else {
        CartBoxPosition = 160;
        CartBoxMove = 0;
        document.getElementById("CartBox").style.top="160px";
      }
    }
  }
}

var cartxoffset = 110;

function cartScroll()
{
  cartRefresh(false, false, 0);
  navScroll();
}

function cartRefresh(init, autoshow, xoffset)
{
  if (init) {
    window.onscroll=cartScroll;
  }
  
  if (document.getElementById('ShoppingCartHotelsSelected')) {
    var obj = document.getElementById('ShoppingCartHotelsSelected');
  } else if (document.getElementById('ShoppingCartHotelsNotSelected')) {
    var obj = document.getElementById('ShoppingCartHotelsNotSelected');
  }
  
  if (obj) {
    var cartposition = getPosY(document.getElementById('ShoppingCart')) + 53;
    var scrollpos = getScrollXY();
    var newpos = 0;
    if (cartposition < scrollpos[1]) {
      newpos = scrollpos[1] - cartposition + 53;
      obj.style.top=newpos+'px';
    } else {
      obj.style.top='53px';
    }
//  document.getElementById('TestDIV').innerHTML = cartposition+' '+scrollpos[0]+' '+scrollpos[1];
  }
}

function navScroll()
{
  if (document.getElementById('NaviSearchInfo').style.display != 'none') {
    var naviposition = getPosY(document.getElementById('NaviSearchInfo')) + 10;
    var divheight = document.getElementById('NavSearchList').offsetHeight;
    var scrollpos = getScrollXY();
    var newpos = 0;
    if (scrollpos[1] > (divheight + naviposition - 340)) {
      newpos = divheight - 240;
      document.getElementById('NaviSearchInfo').style.top=newpos+'px';
    } else if (naviposition < scrollpos[1] + 170) {
      newpos = scrollpos[1] - naviposition + 170;
      document.getElementById('NaviSearchInfo').style.top=newpos+'px';
    } else {
      document.getElementById('NaviSearchInfo').style.top='10px';
    }
  }
}

var insertOK = 0;
function addtofavorites(hid, id, disabledelete)
{
  if ((maxsel >= maxcart) && (!favcart[hid][0])) {
    alert(CardErrorMessage);
    insertOK = -1;
  } else {
    with (new Ajax()) {
      url="/ajax/add_cart.php";
      params = "Hotelid="+hid+"&DisableDelete="+disabledelete+"&rand="+Math.floor(Math.random()*99999999999)+systemsessionparammz;
      onSuccess=listSuccess;
      onError=listError;
      doRequest();
      insertOK = 0;
    }
  }
}

function listSuccess(txt, xml)
{
  if (txt != "ERROR")
  {
  for (cnt = 0; cnt < maxcart; cnt++) {
    if (document.getElementById("NavCart"+cnt)) {
      document.getElementById("NavCart"+cnt).style.display = "none";
      document.getElementById("NavCartPhoto"+cnt).src = "/images/dummies/62.jpg";
      document.getElementById("NavCartText"+cnt).innerHTML = "";
      document.getElementById("NavCartStars"+cnt).innerHTML = "";
    }
    if (document.getElementById("BarCart"+cnt)) {
      document.getElementById("BarCart"+cnt).style.display = "none";
      document.getElementById("BarCartPhoto"+cnt).src = "/images/piktogramme/search_cartbar_nophoto.gif";
      document.getElementById("BarCartText"+cnt).innerHTML = '';
    }
  }
    for (var hid in favcart) {
      if (document.getElementById("add"+hid)) {
        document.getElementById("add"+hid).src='/images/piktogramme/search_unchecked.gif';
        document.getElementById("hotelcheck"+hid).style.backgroundColor='';
        favcart[hid][0] = 0;
      }
    }
    var hids = txt.split("+");
    maxsel = 0;
    for (var hid in hids) { 
      if ((hid>0) && favcart[hids[hid]]) {
        if (document.getElementById("add"+hids[hid])) {
          document.getElementById("add"+hids[hid]).src='/images/piktogramme/search_checked.gif';
          document.getElementById("hotelcheck"+hids[hid]).style.backgroundColor='#90b3d9';
        }
        if (document.getElementById("NavCart"+maxsel)) {
          document.getElementById("NavCart"+maxsel).style.display = "";
          document.getElementById("NavCartText"+maxsel).innerHTML = favcart[hids[hid]][1]+' <nobr>'+showStars(favcart[hids[hid]][3], favcart[hids[hid]][4], true)+'</nobr>';
          document.getElementById("NavCartPhoto"+maxsel).src = favcart[hids[hid]][2];
          document.getElementById("NavCartStars"+maxsel).innerHTML = '<a href="javascript: addtofavorites(\''+hids[hid]+'\', 0, 0)"><img src="/images/templates/'+privatelabel+'/request_cancel_small.gif" width="12" height="12" border="0" /></a>';
        }
        if (document.getElementById("BarCart"+maxsel)) {
          document.getElementById("BarCart"+maxsel).style.display = '';
          document.getElementById("BarCartText"+maxsel).innerHTML = '<a href="home.php?Kundenid='+hids[hid]+systemsessionparamez+'" class="BarCartHotelLink">'+favcart[hids[hid]][1]+'</a> '+showStars(favcart[hids[hid]][3], favcart[hids[hid]][4], false);
          document.getElementById("BarCartPhoto"+maxsel).src = favcart[hids[hid]][2];
          document.getElementById("BarCartLink"+maxsel).href = "javascript: addtofavorites("+hids[hid]+", 0, 0)";
          document.getElementById("BarCartDel"+maxsel).style.display = '';
        }
        favcart[hids[hid]][0] = 1;
        maxsel++;
      }
    }
    if (maxsel > 0) {
      if (document.getElementById("NavCartSend")) {
        document.getElementById("NavCartSend").value = CardButton.replace('[ANZAHL]', maxsel);
      }
      if (document.getElementById("ShoppingCart")) {
        var newheight = 100 + (maxsel * 26);
        document.getElementById("ShoppingCart").style.height=newheight+'px';
        document.getElementById("ShoppingCartHotelsNotSelected").style.display = 'none';
        document.getElementById("ShoppingCartHotelsSelected").style.display = '';
        document.getElementById("BarCartButtonNum").value = CardButton.replace('[ANZAHL]', maxsel);
      }
    } else {
      if (document.getElementById("ShoppingCart")) {
        document.getElementById("ShoppingCart").style.height='100px';
        document.getElementById("ShoppingCartHotelsNotSelected").style.display = '';
        document.getElementById("ShoppingCartHotelsSelected").style.display = 'none';
      }
    }
    if (document.getElementById("BarCartCounter")) {
      document.getElementById("BarCartCounter").innerHTML = maxsel;
    }
    if (document.getElementById("TitleCounter")) {
      document.getElementById("TitleCounter").innerHTML = maxsel;
    } 
    cartRefresh(false, false, 0);
    if (maxsel > 0) {
      if (document.getElementById("CartLayerInfoSend")) {
        document.getElementById("CartLayerInfoSend").style.display = '';
      }
      if (document.getElementById("NavCartRequest")) {
        document.getElementById("NavCartRequest").style.display = '';
        document.getElementById("NavCartNoSelection").style.display = 'none';
      }
    } else {
      if (document.getElementById("CartLayerInfoSend")) {
        document.getElementById("CartLayerInfoSend").style.display = 'none';
      }
      if (document.getElementById("NavCartRequest")) {
        document.getElementById("NavCartRequest").style.display = 'none';
        document.getElementById("NavCartNoSelection").style.display = '';
      }
    }
    insertOK = 1;
  } else {
    insertOK = -1;
  }
}

function forwardToList(url)
{
  if (insertOK != 0) {
    if (insertOK > 0) {
      location.href=url;
    }
  } else {
    window.setTimeout('forwardToList(\''+url+'\')', 500);
  }
}

function listError(msg)
{
  alert(msg);
}

var deletehotelid = 0;
function delfromfavorites(hid)
{
  with (new Ajax()) {
    url="/ajax/add_cart.php";
    params = "Hotelid="+hid+"&rand="+Math.floor(Math.random()*99999999999)+systemsessionparammz;
    onSuccess=delSuccess;
    onError=delError;
    doRequest();
    deletehotelid = hid;
  }
}

function delSuccess(txt, xml)
{
  if (deletehotelid>0) {
    if (document.getElementById('Hotel'+deletehotelid)) {
      document.getElementById('Hotel'+deletehotelid).style.display = 'none';
      deletehotelid = 0;
    }
  }
}

function delError(msg)
{
  alert(msg);
}

/*
  Datumboxen
*/
function setArrivalDay(adatum, arrivalday, arrivalmonth)
{
  arrivalday.selectedIndex = adatum.getDate();
  if (adatum.getYear() < 2000) {
    year = adatum.getYear() + 1900;
  } else {
    year = adatum.getYear();
  }
  monat = adatum.getMonth()+1;
  if (monat < 10) {
    yearmonth = year+'-0'+monat;
  } else {
    yearmonth = year+'-'+monat;
  }
  for(var no=0;no<arrivalmonth.options.length;no++) {
    if(arrivalmonth.options[no].value==yearmonth) {
      arrivalmonth.selectedIndex=no;
      break;
    }        
  }
}

function setDepartureDay(ddatum, departureday, departuremonth)
{
  departureday.selectedIndex = ddatum.getDate();
  if (ddatum.getYear() < 2000) {
    year = ddatum.getYear() + 1900;
  } else {
    year = ddatum.getYear();
  }
  monat = ddatum.getMonth()+1;
  if (monat < 10) {
    yearmonth = year+'-0'+monat;
  } else {
    yearmonth = year+'-'+monat;
  }

  for(var no=0;no<departuremonth.options.length;no++) {
    if(departuremonth.options[no].value==yearmonth) {
      departuremonth.selectedIndex=no;
      break;
    }        
  }
}

function arrivalDayCalculate(arrivalday, arrivalmonth, daynameobject)
{
  if (!daynameobject) {
    daynameobject = document.getElementById('ARRIVAL_WEEKDAY');
  }
  monatjahr = arrivalmonth.value.split('-');
  datum = new Date(monatjahr[0], monatjahr[1]-1, arrivalday.value);
  if (daynameobject) {
    daynameobject.innerHTML = Wochentage[datum.getDay()];
  }
}

function departureDayCalculate(departureday, departuremonth, daynameobject)
{
  if (!daynameobject) {
    daynameobject = document.getElementById('DEPARTURE_WEEKDAY');
  }
  monatjahr = departuremonth.value.split('-');
  datum = new Date(monatjahr[0], monatjahr[1]-1, departureday.value);  
  if (daynameobject) {
    daynameobject.innerHTML = Wochentage[datum.getDay()];
  }
}

function arrivalDateCalculate(arrivalday, arrivalmonth, departureday, departuremonth, doffset, arrobjname, depobjname)
{
  if (!arrobjname || !arrobjname.length) {
    arrobjname = 'ARRIVAL_WEEKDAY';
  }
  if (!depobjname || !depobjname.length) {
    depobjname = 'DEPARTURE_WEEKDAY';
  }
  if ((arrivalmonth.value != '0000-00') && (arrivalday.value != '00')) {
    monatjahr = arrivalmonth.value.split('-');
    adatum = new Date(monatjahr[0], monatjahr[1]-1, arrivalday.value); 
    if (departuremonth != null) {
      monatjahr = departuremonth.value.split('-');
      ddatum = new Date(monatjahr[0], monatjahr[1]-1, departureday.value);  
      if ((departuremonth.value == '0000-00') && (departureday.value == '00')) {
        ddatum = new Date(adatum.getTime()+(86400000*doffset));
      }
      if (adatum.getTime() >= ddatum.getTime()) {
        ddatum = new Date(adatum.getTime()+(86400000*doffset));
      }
    }
    setArrivalDay(adatum, arrivalday, arrivalmonth);
    if (departuremonth != null) {
      setDepartureDay(ddatum, departureday, departuremonth);
    }
    arrivalDayCalculate(arrivalday, arrivalmonth, document.getElementById(arrobjname));
    if (departuremonth != null) {
      departureDayCalculate(departureday, departuremonth, document.getElementById(depobjname));
    }
  } else {
    if (document.getElementById(arrobjname)) {
      document.getElementById(arrobjname).innerHTML = '-';
      if (departuremonth != null) {
        document.getElementById(depobjname).innerHTML = '-';
      }
    }
  }
}

/*
  Statistiken
*/
function stats(prms)
{
  with (new Ajax()) {
    url = '/ajax/hotelstats.php';
    params = prms+systemsessionparammz;
    onSuccess=statsSuccess;
    onError=statsError;
    doRequest();
  }
}
function statsSuccess(txt, xml)
{
}
function statsError(msg)
{
}

/*
  Dreamweaver-Code
*/
function MM_preloadImages() { //v3.0
  var d=document; 
  if(d.images) { 
    if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0) { 
    d.MM_p[j]=new Image; 
    d.MM_p[j++].src=a[i];
    }
  }
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n]; 
    for (i=0;!x&&i<d.forms.length;i++) 
      x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) 
    x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) 
    x=document.getElementById(n); 
  return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; 
  document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3) {
    if ((x=MM_findObj(a[i]))!=null) {
      document.MM_sr[j++]=x; 
      if(!x.oSrc) x.oSrc=x.src; 
      x.src=a[i+2];
    }
  }
}

/*
  Browserfenstergröße
*/
function getSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return [ myWidth, myHeight ];
}


/*
  Scroll-Position des Fensters
*/
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return [ scrOfX, scrOfY ];
}

/*
  Position eines Elementes ermitteln
*/
function getPosY(inputObj)
{
  var returnValue = 0; //inputObj.offsetTop + inputObj.offsetHeight;
  while((inputObj = inputObj.offsetParent) != null) returnValue += inputObj.offsetTop;
  return returnValue + calendar_offsetTop;
}

function getPosX(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null) returnValue += inputObj.offsetLeft;
  return returnValue + calendar_offsetLeft;
}

/*
  AJAX
*/
function Ajax() {
  //Eigenschaften deklarieren und initialisieren
  this.url="";
  this.params="";
  this.method="GET";
  this.onSuccess=null;
  this.onError=function (msg) {
    alert(msg)
  }
}

Ajax.prototype.doRequest=function() {
  //eberpruefen der Angaben
  if (!this.url) {
    this.onError("Es wurde kein URL angegeben. Der Request wird abgebrochen.");
    return false;
  }
  if (!this.method) {
    this.method="GET";
  } else {
    this.method=this.method.toUpperCase();
  }
  //Zugriff auf Klasse fr readyStateHandler ermglichen  
  var _this = this;
  //XMLHttpRequest-Objekt erstellen
  var xmlHttpRequest=getXMLHttpRequest();
  if (!xmlHttpRequest) {
    this.onError("Es konnte kein XMLHttpRequest-Objekt erstellt werden.");
    return false;
  }
  //Fallunterscheidung nach bertragungsmethode
  switch (this.method) {
    case "GET": xmlHttpRequest.open(this.method, this.url+"?"+this.params, true);
                xmlHttpRequest.onreadystatechange = readyStateHandler;
                xmlHttpRequest.send(null);
                break;
    case "POST": xmlHttpRequest.open(this.method, this.url, true);
                 xmlHttpRequest.onreadystatechange = readyStateHandler;
                 xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                 xmlHttpRequest.send(this.params);
                 break;
  }  

  //Private Methode zur Verarbeitung der erhaltenen Daten
  function readyStateHandler() {
    if (xmlHttpRequest.readyState < 4) {
      return false;
    }
    if (xmlHttpRequest.status == 200 || xmlHttpRequest.status==304) {
      if (_this.onSuccess) {
        _this.onSuccess(xmlHttpRequest.responseText, xmlHttpRequest.responseXML);
      }
    } else {
      if (_this.onError) {
        _this.onError("["+xmlHttpRequest.status+" "+xmlHttpRequest.statusText+"] Es trat ein Fehler bei der Datenbertragung auf.");
      }
    }
  }
}

//Gibt browserunabhngig ein XMLHttpRequest-Objekt zurck
function getXMLHttpRequest() 
{
  if (window.XMLHttpRequest) {
    //XMLHttpRequest fr Firefox, Opera, Safari, ...
    var obj = new XMLHttpRequest();
    return obj;
  } else if (window.ActiveXObject) {
    try {   
      //XMLHTTP (neu) fr Internet Explorer 
      return new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {        
        //XMLHTTP (alt) fr Internet Explorer
        return new ActiveXObject("Microsoft.XMLHTTP");  
      } catch (e) {
        return null;
      }
    }
  }
  return false;
}

