/*
 * Datei nimmt Anfragen des Users bzgl. der Strassensuche entgegen
 * und leitet sie an die PHP-Datei street_search.php weiter.
 * Wichtig ist hier nur die Unterscheidung zwischen Start- und Stoppfeld.
 * Nach der Rueckgabe der PHP wird das Ergebnis mit
 * interpretRequest auf der Seite angezeigt.
 */

//Variablen zur Unterscheidung
var startoderstopp = " ";
var fertig = 0;
var suche = " ";

/*
 * Funktion zur Erstellung des Request an die PHP-Datei
 * @param startstoppzwischen Startpunkt, Stopppunkt oder Zwischenpunkt
 * @param autosuche Autovervollstaendigung im Einsatz oder nicht
 */
function setRequest(startstoppzwischen, autosuche) {
	//alert("du wirst gar nichts finden!!");
	startoderstopp = startstoppzwischen;
	suche = autosuche;

	// Request erzeugen
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest(); // Mozilla, Safari, Opera
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
		} catch (e) {
			try {
				request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
			} catch (e) {
			}
		}
	}

	// überprüfen, ob Request erzeugt wurde
	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		var url = "street_search.php";
		// Request öffnen
		request.open('post', url, true);
		// Requestheader senden
		request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		// Request senden
		var value = null;
		var typ = null;

	if (startoderstopp == "start") {
		val=document.myform.startname.value;
		var koordinaten="string";
		if(val.indexOf(" ")!=-1)koordinaten=val.split(" ");
		if(val.indexOf(",")!=-1)koordinaten=val.split(",");
		if(val.indexOf("  ")!=-1)koordinaten=val.split("  ");
		if(val.indexOf(", ")!=-1)koordinaten=val.split(", ");
		if(val.indexOf(" , ")!=-1)koordinaten=val.split(" , ");
		
		var x_coord=koordinaten[0]; var y_coord=koordinaten[1];
	
		if (document.myform.startname.value && isNaN(x_coord) ) {
			
			value = null;
			value = document.myform.startname.value;
			typ = "start";
			request.send('name=' + value + '&type=' + typ + '&suchtyp='+ suche);
			// Request auswerten
			request.onreadystatechange = interpretRequest;
		}else if (!isNaN(x_coord)&& !isNaN(y_coord) ){
			
				setzeStartpunkt(transformWGStoGoogle(x_coord,y_coord,"x"), transformWGStoGoogle(x_coord,y_coord,"y"));
				verschiebekartezustrasse(transformWGStoGoogle(x_coord,y_coord,"x"), transformWGStoGoogle(x_coord,y_coord,"y"));
		}
		else {
				document.getElementById('namen').innerHTML = "Bitte etwas ins Textfeld eingeben!!";

		}
	}
	if (startoderstopp == "stop") {
		
		val=document.myform.endname.value;
		var koordinaten="string";
		if(val.indexOf(" ")!=-1)koordinaten=val.split(" ");
		if(val.indexOf(",")!=-1)koordinaten=val.split(",");
		if(val.indexOf("  ")!=-1)koordinaten=val.split("  ");
		if(val.indexOf(", ")!=-1)koordinaten=val.split(", ");
		if(val.indexOf(" , ")!=-1)koordinaten=val.split(" , ");
		
		var x_coord=koordinaten[0]; var y_coord=koordinaten[1];
		if (document.myform.endname.value && isNaN(x_coord)) {
			value = null;
			value = document.myform.endname.value;
			typ = "stop";
			request.send('name=' + value + '&type=' + typ + '&suchtyp='+ suche);
			// Request auswerten
			request.onreadystatechange = interpretRequest;
			
		}else if (!isNaN(x_coord)&& !isNaN(y_coord) ){
				setzeStoppunkt(transformWGStoGoogle(x_coord,y_coord,"x"), transformWGStoGoogle(x_coord,y_coord,"y"));
				verschiebekartezustrasse(transformWGStoGoogle(x_coord,y_coord,"x"), transformWGStoGoogle(x_coord,y_coord,"y"));
		} else {
				document.getElementById('ergebnisse').innerHTML = "Bitte etwas ins Textfeld eingeben!!";

		}
	}
	if (startoderstopp == "zwischen") {
		if (document.zwischenpunkte.zwischen.value) {
			value = null;
			value = document.zwischenpunkte.zwischen.value;
			typ = "zwischen";
			request.send('name=' + value + '&type=' + typ + '&suchtyp='+ suche);
			
			// Request auswerten
			request.onreadystatechange = interpretRequest;
			} else {
				document.getElementById('ergebnisse').innerHTML = "Bitte etwas ins Textfeld eingeben!!";

			}
	}

	}
}

// Request auswerten
function interpretRequest() {

  switch (request.readyState) {
	// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
	case 4:
	  if (request.status != 200) {
			alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"
					+ request.status);

	  } else {
		    var content;
			content = request.responseText;
			document.getElementById('ergebnisse').innerHTML = " ";
			var wktpoint = OpenLayers.Geometry.fromWKT(content);

		//Das Startfeld ist aktiv; dort wurde die Suche eingegeben
	      if (startoderstopp == "start") {
				var strasse = request.responseXML.getElementsByTagName('str');
				var vertippt=strasse[0].getElementsByTagName('vorschlag')[0].firstChild.data;
				//Normale Suche, der Eintrag wurde so in der Datenbank gefunden
				if(vertippt=="false") {
					document.getElementById('ergebnisse').innerHTML = "<b>Straßensuche</b><br /><div style='padding-top:5px'></div>"
					+ "Es wurde(n) "
					+ strasse.length
					+ " Straße(n) gefunden.<br /><div style='padding-top:3px'></div> Bitte eine auswählen!<br /><div style='margin-top:3px'></div> ";
				}//User hat sich evtl. vertippt, da keine Eintraege in der DB gefunden wurden
				else if(vertippt=="true"){
					document.getElementById('ergebnisse').innerHTML = "<b>Straßensuche</b><br /><div style='padding-top:5px'></div>"
						+ "Fehler bei der Sucheingabe.Sie haben sich wohl vertippt. Als Vorschlaege wurden  "
						+ strasse.length
						+ " Straße(n) gefunden.<br /><div style='padding-top:3px'></div> Bitte eine auswählen!<br /><div style='margin-top:3px'></div> ";
				
					}
			//Alle gefundenen Strassen in aufbereiteter Form ausgeben		
			for ( var i = 0; i < strasse.length; i++) {

				//alert(strasse[i].getElementsByTagName('name')[0].firstChild.data);
				var name = strasse[i].getElementsByTagName('name')[0].firstChild.data;
				var geom = strasse[i].getElementsByTagName('wkt')[0].firstChild.data;
				var gemeinde = strasse[i].getElementsByTagName('gemeinde')[0].firstChild.data;
				var extent = strasse[i].getElementsByTagName('extent')[0].firstChild.data;
			
				var gesamtestrasse = extent=="nothing"?null:strasse[i].getElementsByTagName('gesamtestrasse')[0].firstChild.data;
				document.getElementById('ergebnisse').innerHTML += " <div id='shit' style='border-bottom: solid 1px #0c0'><br /><a href=\"javascript:ausgabe_startpunkt('"
					+ geom
					+ "');\">"
					+ name
					+ "</a>,<br />"
					+ gemeinde
					+ "<a href=\"javascript:zoomToStrassenExtent('"
					+ extent
					+ "','"
					+ gesamtestrasse
					+ "');\"><div id='rechts' style='float:right; color:#707070; padding-right:3px;'> [Zoom]</div></a></div>";

				}//wenn nur eine Strasse gefunden: anzeigen und direkt dahin panen
				if (strasse.length == 1) {
					var geom = strasse[0].getElementsByTagName('wkt')[0].firstChild.data;
					var wktpoint = OpenLayers.Geometry.fromWKT(geom);
					setzeStartpunkt(wktpoint.x, wktpoint.y);
					verschiebekartezustrasse(wktpoint.x, wktpoint.y);
				} else
					oeffnen('namen'); //Slidebar mit den Ergebnissen oeffnen
			}
	    //Das Stoppfeld ist aktiv; dort wurde die Suche eingegeben
			if (startoderstopp == "stop") {
				var strasse = request.responseXML.getElementsByTagName('str');
				if(strasse[0].getElementsByTagName('vorschlag')[0].firstChild.data=="true"){
					document.getElementById('ergebnisse').innerHTML = "<b>Straßensuche</b><br /><div style='padding-top:5px'></div>"
						+ "Fehler bei der Sucheingabe. Vielleicht haben Sie sich vertippt. Als Vorschlag wurden "
						+ strasse.length
						+ " Straße(n) ausgewählt. <br /><div style='padding-top:3px'></div> Bitte wählen Sie eine Straße aus!<br /><div style='margin-top:3px'></div> ";
				
					}else{
				
						document.getElementById('ergebnisse').innerHTML = "<b>Straßensuche</b><br /><div style='padding-top:5px'></div>"
						+ "Es wurde(n) "
						+ strasse.length
						+ " Straße(n) gefunden.<br /><div style='padding-top:3px'></div> Bitte wählen Sie eine Straße aus!<br /><div style='margin-top:3px'></div> ";
					}
				for ( var i = 0; i < strasse.length; i++) {

					var name = strasse[i].getElementsByTagName('name')[0].firstChild.data;
					var geom = strasse[i].getElementsByTagName('wkt')[0].firstChild.data;
					var gemeinde = strasse[i].getElementsByTagName('gemeinde')[0].firstChild.data;
					var extent = strasse[i].getElementsByTagName('extent')[0].firstChild.data;
					var gesamtestrasse = extent=="nothing"?null:strasse[i].getElementsByTagName('gesamtestrasse')[0].firstChild.data;
     				document.getElementById('ergebnisse').innerHTML += " <div id='shit2' style='border-bottom: solid 1px #0c0'><br /><a href=\"javascript:ausgabe_stoppunkt('"
							+ geom
							+ "');\">"
							+ name
							+ "</a>,<br />"
							+ gemeinde
							+ "<a href=\"javascript:zoomToStrassenExtent('"
							+ extent
							+ "','"
							+ gesamtestrasse
							+ "');\"><div id='rechts' style='float:right; color:#707070; padding-right:3px;'> [Zoom]</div></a></div>";

				}

				if (strasse.length == 1) {
					//alert(strasse.length);
					var geom = strasse[0].getElementsByTagName('wkt')[0].firstChild.data;
					var wktpoint = OpenLayers.Geometry.fromWKT(geom);
					setzeStoppunkt(wktpoint.x, wktpoint.y);
					verschiebekartezustrasse(wktpoint.x, wktpoint.y);
				} else
					oeffnen('namen');
			}

			if (startoderstopp == "zwischen") {

				var strasse = request.responseXML.getElementsByTagName('str');
				document.getElementById('ergebnisse').innerHTML = "<b>Straßensuche für Zwischenpunkte</b><br /><div style='padding-top:5px'></div>"
						+ "Es wurde(n) "
						+ strasse.length
						+ " Straße(n) gefunden.<br /><div style='padding-top:3px'></div> Bitte wählen Sie eine Straße aus!<br /><div style='margin-top:3px'></div> ";

				for ( var i = 0; i < strasse.length; i++) {

					//alert(strasse[i].getElementsByTagName('name')[0].firstChild.data);
					var name = strasse[i].getElementsByTagName('name')[0].firstChild.data;
					var geom = strasse[i].getElementsByTagName('wkt')[0].firstChild.data;
					var gemeinde = strasse[i].getElementsByTagName('gemeinde')[0].firstChild.data;
					var extent = strasse[i].getElementsByTagName('extent')[0].firstChild.data;
					var gesamtestrasse = strasse[i].getElementsByTagName('gesamtestrasse')[0].firstChild.data;
					document.getElementById('ergebnisse').innerHTML += " <div id='shit2' style='border-bottom: solid 1px #0c0'><br /><a href=\"javascript:ausgabe_zwischenpunkt('"
							+ geom
							+ "');\">"
							+ name
							+ "</a>,<br />"
							+ gemeinde
							+ "<a href=\"javascript:zoomToStrassenExtent('"
							+ extent
							+ "','"
							+ gesamtestrasse
							+ "');\"><div id='rechts' style='float:right; color:#707070; padding-right:3px;'> [Zoom]</div></a></div>";

				}

				if (strasse.length == 1) {
					//alert(strasse.length);
					var geom = strasse[0].getElementsByTagName('wkt')[0].firstChild.data;
					var wktpoint = OpenLayers.Geometry.fromWKT(geom);
					insertViaOnIndex(wktpoint.x, wktpoint.y,
							parseInt(document.zwischenpunkte.viadropdown.value));
					verschiebekartezustrasse(wktpoint.x, wktpoint.y);
				} else
					oeffnen('namen');
			}

			value = null;
			content = null;
			wktpoint = null;
			startoderstopp = 0;
			wktpoint2 = null;
			fertig = 1;
			request.close;
		}
		break;
	default:
		break;
	}

}

//---------------------------------------------------------------------------

