// JavaScript Document
/*
	AJAX Handler
	(c) media touch, 2006-07
*/

function majax(url, params, container) {
	var http = false;
	
	if(typeof ActiveXObject != 'undefined') {
		try {	
			http = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				http = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (E) {
				http = false;
			}
		}
	} else if (XMLHttpRequest) {
		try {http = new XMLHttpRequest();}
		catch (e) {http = false;}
	}
	http.open("POST", url, true);
	
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	
	http.onreadystatechange = function() {
		if(http.readyState == 4 && http.status == 200) {
			// alert("response: " + http.responseText);
			if (container == 'xml') {
					if (http.responseText != '') {
						setMarkers(http.responseText);
					}
			} else {
				document.getElementById(container).innerHTML = http.responseText;
			}
		}
	}
	http.send(params);
}

function showPOI(iID) {
	var i;
	var icon = new GIcon(baseIcon);
	for (i=0; i<poi.length; i++) {
		if (poi[i].id == iID) {
			
			var point = new GLatLng(poi[i].northing , poi[i].easting);
			map.setCenter(point, 15);
			
			djPopUp(poi[i].name,'poi.php?poi_id=' +poi[i].id);
		}
	}
}
var poi = [];
var bounds = new GLatLngBounds();
var arrMarkers = [];

function setMarkers(data, showTT) {
	
	GDownloadUrl(data, function(data, responseCode) {
		mgr.clearMarkers();
		
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("poi");
		
		
		var tmarker;
		bounds = new GLatLngBounds();
		var adresse;
		var outHTML;
		poi = [];
		arrMarkers = [];
		
		outHTML = "<h2>SUCHERGEBNISSE</h2><ul>";
		document.getElementById('suchergebnis').innerHTML = "";
		document.getElementById("status").innerHTML = markers.length + " Einträge wurden gefunden. Symbole werden generiert...";
		for (var i = 0; i < markers.length; i++) {
			
			// poi[i] = new Array();
			if (markers[i].getAttribute("northing") != "") {
				
				var point = new GLatLng(parseFloat(markers[i].getAttribute("northing")),
										parseFloat(markers[i].getAttribute("easting")));
				
				bounds.extend(point);
				
				var icon = new GIcon(baseIcon);
				icon.image = "http://burgenstrasse.regio-city.de/symbols/" + prj + "/" + markers[i].getAttribute("co") + ".png";
				// var marker = new PdMarker(point, icon);
				
				var marker = new GMarker(point, icon);
					
				poi[i] = new Array();
				
				poi[i].id = markers[i].getAttribute("id");
				poi[i].northing = markers[i].getAttribute("northing");
				poi[i].easting = markers[i].getAttribute("easting");
				poi[i].img = markers[i].getAttribute("img");
				
				var name=unescape(markers[i].getAttribute("name"));
				name=name.replace(/\+/g, " ");
				
				var city=unescape(markers[i].getAttribute("city"));
				city=city.replace(/\+/g, " ");
				
				poi[i].name = name;
				
				
				var toolText = '<div class="mtlabel"><table border="0" cellspacing="2" cellpadding="3" width="157"><tr>';
				if ((poi[i].img) && (poi[i].img !=  "http://www.burgenstrasse.de/upmedia/")) {
					toolText += '<td width="47" valign="top"><img src="' + poi[i].img + '" width="47" height="49" style="border:1px solid #FFF;"></td>';
				}
				toolText += '<td valign="top">' + name + '<br/>' + city + '</td></tr></table></div>';
				// poi[i].tooltext = toolText;
				
				marker.tooltip = toolText;
				/*
				marker.setTooltip(toolText);
				marker.setOpacity(90);*/
				
				marker.poi_id = poi[i].id;
				marker.name = poi[i].name;
				 
				
				GEvent.addListener(marker, "click", function() {
					djPopUp(this.name,'poi.php?poi_id=' + this.poi_id);
				});
				
				GEvent.addListener(marker,"mouseover", function() {
				  showTooltip(this);
				}); 
				
				GEvent.addListener(marker,"mouseout", function() {
					tooltip.style.visibility="hidden"
				}); 
				
				// map.addOverlay(marker);
				arrMarkers.push(marker);
				
				outHTML += '<li><a href="javascript:void(0);" onClick="showPOI(' + poi[i].id + ')">' + poi[i].name + '</a></li>';
				document.getElementById('suchergebnis').innerHTML = outHTML;
			}
			
		}
		
		
		outHTML += "</ul>";
		document.getElementById('suchergebnis').innerHTML = outHTML;

	    if (!bounds.isEmpty()) {
			// map.setZoom(map.getBoundsZoomLevel(bounds));
			// var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
			// var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	
			// map.panTo(bounds.getCenter());
		}
		// map.setCenter(new GLatLng(clat,clng));
		
		
		// map.addOverlay(mainLayer);
		
		mgr.addMarkers(arrMarkers, 0); 
		mgr.refresh();

		if (showTT) {
			showTooltip(marker);
		}
		
		document.getElementById("status").innerHTML = "regio-city";
		
		// loadingDialog.hide();

		
	});
}

function showTooltip(marker) {
	if (marker) {
		tooltip.innerHTML = marker.tooltip;
		// console.log(marker.tooltip);
		var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
		var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
		var anchor=marker.getIcon().iconAnchor;
		var width=marker.getIcon().iconSize.width;
		var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width - 67,- offset.y + point.y +anchor.y-4)); 
		pos.apply(tooltip);
		tooltip.style.visibility="visible";
	}
}


function showRoute() {
		if(document.getElementById('routebubble').style.display == 'none') {
			document.getElementById('routebubble').style.display = 'block';
		} else {
			document.getElementById('routebubble').style.display = 'none';
		}
	}

// function geoSearch(strAction, strArg) {
function geoSearch(features) {
	var strParam;
	strParam = "";
	// strParam = strAction + "=" + strArg;

	tooltip.style.visibility="hidden";
	// mgr.clearMarkers();

	document.getElementById("status").innerHTML = 'Daten werden eingelesen...';
	document.getElementById('suchergebnis').innerHTML = '<br/><img src="/global/images/ajax-loader.gif" width="32" height="32"> wird geladen...';
	
	// if (typeof features == "array") {
		for (var key in features) {
			var arrParams = features[key].split("_") 
			if (arrParams[0] == "group") {
				strParam += "group_id[]=" + arrParams[2] + "&";
			}
		}
	/*} else {
		strParam = features + "=" + strArg;
	}*/
	// console.log("/geosearch.php?" + strParam + "format=xml" + "&project=" + prj + "&cstm_id=" + cstm_id);
	
	setMarkers("/geosearch.php?" + strParam + "&format=xml" + "&project=" + prj + "&cstm_id=" + cstm_id);
}

function regioSearch(features) {
	tree.setCheck(0, false);
	var strParam;
	strParam = "";
	// strParam = strAction + "=" + strArg;

	tooltip.style.visibility="hidden";
	// mgr.clearMarkers();

	document.getElementById("status").innerHTML = 'Daten werden eingelesen...';
	document.getElementById('suchergebnis').innerHTML = '<br/><img src="/global/images/ajax-loader.gif" width="32" height="32"> wird geladen...';
	
	setMarkers("/regiosearch.php?poi=" + features + "&format=xml" + "&project=" + prj + "&cstm_id=" + cstm_id);
}
