function SelectRegions(TargetId, Value, Text, RequestURL)
{
  function Callback(Response)
  {
    if (Response && (Response.readyState == 4) && (Response.status == 200))
		{
			var SelectEmpty = document.getElementById("RegionOrtDummy");

			// alle vorhandenen Elemente löschen (bis auf Auswahl "beliebig")
			for (var i = (SelectEmpty.length - 1); i >= 0; --i)
				SelectEmpty.options[i] = null;

			// geänderte Auswahlliste einfügen
			document.getElementById(TargetId).innerHTML = Response.responseText;

			// wenn Rückgabe erfolgte, diese ausgeben
			if (Response.responseText.length)
			{
				document.getElementById("RegionOrtEmpty").style.display = "none";
				document.getElementById(TargetId).style.display         = "inline";
			}
			else
			{
				document.getElementById(TargetId).style.display         = "none";
				document.getElementById("RegionOrtEmpty").style.display = "inline";
			}
		}
  }

	// HTTP-Request erzeugen und absenden
	var CallingURL = "" + RequestURL;
	var Parameter  = "TopRegionTTId=" + escape(Value) + "&Name=" + escape(Text);

	new Ajax.Request(CallingURL, {method: 'get', parameters: Parameter, onComplete: Callback.bind(this)});
}

//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
function SelectCityCountry(TargetId, Value, RequestURL, RequestPath, Country, City)
{
 //alert(Value);
  //TODO: GOSSE KACKE BESEITIGEN, encoding
  if(Value == 'S%FCdamerika') {
    Value = 'Südamerika';
  }
  
  if(Value == 'Australien%2FNeusseland%20und%20S%FCdpazifik' || Value == 'Australien%2FNeusseland%20und20S%FCdpazifik') {
    //alert(Value);
    Value = 'Australien/Neuseeland und Südpazifik';   
  }

    
  function SelectCityCountry_Callback(Response)
  {
    if (Response && (Response.readyState == 4) && (Response.status == 200))
		{
			var SelectEmpty = document.getElementById("CityCountryDummy");

			if (SelectEmpty)
			{
				// alle vorhandenen Elemente löschen (bis auf Auswahl "beliebig")
				for (var i = (SelectEmpty.length - 1); i >= 0; --i)
					SelectEmpty.options[i] = null;
			}

			// geänderte Auswahlliste einfügen
			document.getElementById(TargetId).innerHTML = Response.responseText;

			// wenn Rückgabe erfolgte, diese ausgeben
			if (Response.responseText.length)
			{
				document.getElementById(TargetId).style.display = "inline";

				// Standardauswahl
				var Select   = document.getElementById("CityCountryDummy");
				var Selected = Select.options[0].value;
				var Length   = Select.length;

				// Standardauswahl bestimmen
				for (var i = 0; i < Length; ++i)
				{
					if (Select.options[i].defaultSelected)
					{
						Selected = Select.options[i].value;
						break;
					}
				}

				// Subselektion durchführen
				SelectCity("CityValue", escape(Selected), RequestURL, "SelectCity.htm", City);
			}
		}
  }

	// HTTP-Request erzeugen und absenden
	var CallingURL = "" + RequestURL + RequestPath;
	var Parameter  = "RegionName=" + Value;

	// erweiterte Parameter
	if (Country.length) Parameter += "&CountryName=" + Country;
	if (City.length)    Parameter += "&City="        + City;

	new Ajax.Request(CallingURL, {method: 'get', parameters: Parameter, onComplete: SelectCityCountry_Callback.bind(this)});
}

//--------------------------------------------------------------------------
//
//--------------------------------------------------------------------------
function SelectCity(TargetId, Value, RequestURL, RequestPath, City)
{
  function SelectCity_Callback(Response)
  {
    if (Response && (Response.readyState == 4) && (Response.status == 200))
		{
			var SelectEmpty = document.getElementById("CityDummy");

			if (SelectEmpty)
			{
				// alle vorhandenen Elemente löschen (bis auf Auswahl "beliebig")
				for (var i = (SelectEmpty.length - 1); i >= 0; --i)
					SelectEmpty.options[i] = null;
			}

			// geänderte Auswahlliste einfügen
			document.getElementById(TargetId).innerHTML = Response.responseText;

			// wenn Rückgabe erfolgte, diese ausgeben
			if (Response.responseText.length)
				document.getElementById(TargetId).style.display = "inline";
		}
  }

	// HTTP-Request erzeugen und absenden
	var CallingURL = "" + RequestURL + RequestPath;
	var Parameter  = "CountryName=" + Value;

	// erweiterte Parameter
	if (City.length)
		Parameter += "&City=" + City;

	new Ajax.Request(CallingURL, {method: 'get', parameters: Parameter, onComplete: SelectCity_Callback.bind(this)});
}

//--------------------------------------------------------------------------
// Funktion führt ein AJAX-Request aus und liefert ein Suchformular zurück.
//--------------------------------------------------------------------------
function SwitchForm(TargetForm, RequestURL, RequestPath, RefreshHeader, OrganizerName, OrganizerCode)
{
	function CheckSelection()
	{
		var Form_ReiseArt         = document.getElementById("Form_ReiseArt");
		var Form_ReiseArtElements = Form_ReiseArt.getElementsByTagName("input");
		var Form_ReiseArtLength   = Form_ReiseArtElements.length;

		// für alle Radiobuttons die Klasse des Labels ändern
		for (var i = 0; i < Form_ReiseArtLength; ++i)
		{
			if (Form_ReiseArtElements[i].type == "radio")
			{
				document.getElementById("lbl" + Form_ReiseArtElements[i].id).className = "unchecked";

				if (Form_ReiseArtElements[i].checked)
					document.getElementById("lbl" + Form_ReiseArtElements[i].id).className = "checked";
			}
		}

		if (TargetForm == "Linienflug")
		{
			if (document.getElementById("Linienflug").checked)
				document.getElementById("ClickAndMix").value = "Flight";
			else
				document.getElementById("ClickAndMix").value = "FlightAndRentalCar";
		}
	}

  function Callback(Response)
  {
    if (Response && (Response.readyState == 4) && (Response.status == 200))
		{
			var ResponseText = Response.responseText;

			if (ResponseText.length)
			{

				document.getElementById("SearchForm").style.display = "none";
				document.getElementById("SearchForm").innerHTML     = ResponseText;

				// wenn Rückgabe erfolgte, diese ausgeben
				document.getElementById("SearchForm").style.display = "block";

				if (typeof SetupCalendar == "function") SetupCalendar("Anreisetag");
				if (typeof SetupCalendar == "function") SetupCalendar("Abreisetag");
			}

			document.getElementById("LastForm").innerHTML     = TargetForm;
			document.getElementById("LastForm").style.display = "none";

			CheckSelection();

			// Subselektion für Städtereisen durchführen
			if (TargetForm == "Staedtereisen")
			{
				// Standardauswahl
				var Select   = document.getElementById("Region");
				var Selected = Select.options[0].value;
				var Length   = Select.length;

				// Standardauswahl bestimmen
				for (var i = 0; i < Length; ++i)
				{
					if (Select.options[i].defaultSelected)
					{
						Selected = Select.options[i].value;
						break;
					}
				}

				// Subselektion durchführen (Vorauswahl: Europa, Deutschland, Berlin)
				SelectCityCountry("CityCountryValue", escape(Selected), RequestURL, "SelectCityCountry.htm", "Deutschland", "179892");
			}
		}
  }

  // gleiches Formular -> nichts machen
  if (!RefreshHeader && (document.getElementById("LastForm").innerHTML == TargetForm))
  	CheckSelection();
  else
  {
		// HTTP-Request erzeugen und absenden
		var CallingURL = "" + RequestURL + RequestPath;
		var Parameter  = "NoCache=1&TargetForm=" + escape(TargetForm) + "&Refresh=" + escape(document.getElementById("LastForm").innerHTML == TargetForm) + "&OrganizerName=" + escape(OrganizerName) + "&OrganizerCode=" + escape(OrganizerCode);

		new Ajax.Request(CallingURL, {method: 'get', parameters: Parameter, onComplete: Callback.bind(this)});
	}
}

