var map;
var geocoder;

var baseIcon = new GIcon();

baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);	

function load() {
	if (GBrowserIsCompatible()) {
		geocoder = new GClientGeocoder();
		map = new GMap2(document.getElementById('map'));
		map.setUIToDefault();
		map.setCenter(new GLatLng(50, 13), 4);
	}
}

function searchLocations() {
	var address = document.getElementById('addressInput').value;
	
	if (address=="Straße, PLZ oder Ort") {
		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = 'Bitte geben Sie eine Straße, eine PLZ oder einen Ort ein.';
		return;	 
	}

	var l = document.getElementById('land').selectedIndex
	var h_land = document.getElementById('land').options[l].text;
	
	//address += " Deutschland";
	address += ", " + h_land;
	
	geocoder.getLatLng(address, function(latlng) {
		if (!latlng) { // nicht gefunden
			var sidebar = document.getElementById('sidebar');
			sidebar.innerHTML = 'Ihre Adresse "' + address + '" konnte leider nicht gefunden werden';
		} else { // gefunden
			searchLocationsNear(latlng, h_land);
		}
	});
}

function searchLocationsNear(center, land) {
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '<img src="images/layout/loading.gif" /><br />suche...';

	var b1 = false; //document.getElementById('b1').checked;
	var b2 = false; //document.getElementById('b2').checked;
	var b3 = false; //document.getElementById('b3').checked;
	var b0 = true; //document.getElementById('b0').checked;

	
	searchUrl = 'phpsearch.php?lat=' + center.lat() + '&lng=' + center.lng() + '&b1=' + b1 + '&b2=' + b2 + '&b3=' + b3 + '&land=' + land;

	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var root_name = xml.documentElement;
		var markers=root_name.getElementsByTagName('marker'); 	   

		map.clearOverlays();

		// "Ihr Standort"
		var standortIcon = new GIcon(baseIcon);  
		standortIcon.image = "http://www.google.com/mapfiles/dd-start.png";  
		markerOptions = { icon:standortIcon };
		var marker = new GMarker(center, markerOptions);			
		map.addOverlay(marker);		

		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = '';
		if (markers.length == 1) { // da XML 1 Fake-Händler liefert -> für IE7-Bug (leeres XML => null = Null)
			sidebar.innerHTML = 'Leider keine Partner gefunden.';
			map.setCenter(new GLatLng(50, 13), 4);
			return;
		}

		var bounds = new GLatLngBounds();
		bounds.extend(center);

		for (var i = 1; i < markers.length; i++) { // bei 1 anfangen, da 0.er = Fake
			var hname = trim(GXml.value(markers[i].getElementsByTagName("firma")[0]));
			var hstrasse = trim(GXml.value(markers[i].getElementsByTagName("strasse")[0]));		
			var hplz = trim(GXml.value(markers[i].getElementsByTagName("plz")[0]));
			var hort = trim(GXml.value(markers[i].getElementsByTagName("ort")[0]));
			var hland = trim(GXml.value(markers[i].getElementsByTagName("land")[0]));
			var htelefon = trim(GXml.value(markers[i].getElementsByTagName("telefon")[0]));
			var hfax = trim(GXml.value(markers[i].getElementsByTagName("fax")[0]));
			var hemail = trim(GXml.value(markers[i].getElementsByTagName("email")[0]));
			var hurl = trim(GXml.value(markers[i].getElementsByTagName("url")[0]));
			var hinfo = trim(GXml.value(markers[i].getElementsByTagName("ansprechpartner")[0]));			
			
			var hb1 = trim(GXml.value(markers[i].getElementsByTagName("b1")[0]));
			var hb2 = trim(GXml.value(markers[i].getElementsByTagName("b2")[0]));
			var hb3 = trim(GXml.value(markers[i].getElementsByTagName("b3")[0]));

			var distance = parseFloat(markers[i].getAttribute('distance'));
			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
			parseFloat(markers[i].getAttribute('lng')));

			
			var marker = createMarker(i, point, center, hname, hstrasse, hplz, hort, hland, htelefon, hfax, hemail, hurl, hinfo, hb1, hb2, hb3);

			map.addOverlay(marker);
			var sidebarEntry = createSidebarEntry(i, marker, hname, distance, hstrasse, hplz, hort);
			sidebar.appendChild(sidebarEntry);

			bounds.extend(point);

		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});

}

function createMarker(index, point, center, hname, hstrasse, hplz, hort, hland, htelefon, hfax, hemail, hurl, hinfo, hb1, hb2, hb3) {

	var buchstabe = String.fromCharCode("A".charCodeAt(0) + index - 1);  
	var buchstabesymbol = new GIcon(baseIcon);  
	buchstabesymbol.image = "http://projekt.atrivio.net/al-ko/haendler-gh/marker/marker" + buchstabe + ".png";  
	markerOptions = { icon:buchstabesymbol };
	var marker = new GMarker(point, markerOptions);	

	var html = "";
	html = '<div style="width: 400px;"><span class="sidebarentrylink">' + hname + '</span><br /><br />';	
	html += '			' + hstrasse + '<br />';
	html += '			' + hplz + ' ' + hort + '<br />';
	html += '			' + hland + '<br /><br />';
	if (htelefon.length > 0) { html += '			Tel: ' + htelefon + '<br />'; }
	if (hfax.length > 0) { html += '			Fax: ' + hfax + '<br />'; }
	if (hemail.length > 0) { html += '			E-Mail: <a href="mailto:' + hemail + '">' + hemail + '</a><br />'; }
	if (hurl.length > 0) { html += '			Internet: <a href="http://' + hurl + '" target="_blank">' + hurl + '</a><br />'; }
	if (hinfo.length > 0) { html += '			Ansprechpartner: ' + hinfo + '<br />'; }	
		
	var detailbeschreibung = "";
	if (hb1 == 1) {
		detailbeschreibung += "Anlagenbauer";
		if ((hb2 + hb3) > 0) detailbeschreibung += ", ";
	}

	if (hb2 == 1) {
		detailbeschreibung += "Händler";
		if ((hb3) > 0) detailbeschreibung += ", ";
	}

	if (hb3 == 1) {
		detailbeschreibung += "Service";
	}

	
	if (detailbeschreibung.length > 0) {
		html += "<br />" + detailbeschreibung;
	}
	
	var startadresse = escape(document.getElementById('addressInput').value);
	var zieladresse = escape(hstrasse + ", " + hplz + " " + hort);
	
	//html += '		<br /><br /><span class="bubble_link"><a href="http://maps.google.com/maps?saddr=' + center.lat() + ',' + center.lng() + '&daddr=' + point.lat() + ',' + point.lng() + '&maptype=roadmap" target="_blank">Route hierhin im Popup öffnen</a></span>';
	html += '		<br /><br /><span class="bubble_link"><a href="http://maps.google.com/maps?saddr=' + startadresse + '&daddr=' + zieladresse + '&maptype=roadmap" target="_blank">Route hierhin im Popup öffnen</a></span>';
	html += "</div>";

	var htooptiptext = hname;
	
	var tooltip = new Tooltip(marker, htooptiptext, hort, 4); /**/
	marker.tooltip = tooltip; /**/
	map.addOverlay(tooltip); /**/
			
	GEvent.addListener(marker,'mouseover',function(){ this.tooltip.show(); });
	GEvent.addListener(marker,'mouseout',function(){ this.tooltip.hide(); });	
	
	GEvent.addListener(marker, 'click', function() {marker.openInfoWindowHtml(html);});

	return marker;
}

function createSidebarEntry(index, marker, firma, distanz, strasse, plz, ort) {
	var buchstabe = String.fromCharCode("A".charCodeAt(0) + index - 1);  
	var div = document.createElement('div');
	var html = "";
	html = '<span class="sidebarentrylink">' + buchstabe + ': ' + firma + '</span> (' + distanz.toFixed(1) + ' km)<br/>' + strasse + '<br />' + plz + ' ' + ort;

	div.innerHTML = html;
	div.style.cursor = 'pointer';
	div.style.marginBottom = '10px'; 
	GEvent.addDomListener(div, 'click', function() {
		GEvent.trigger(marker, 'click');
	});
	GEvent.addDomListener(div, 'mouseover', function() {
		div.style.backgroundColor = '#ffffff';
	});
	GEvent.addDomListener(div, 'mouseout', function() {
		div.style.backgroundColor = '#e7ebed';
	});
	return div;
}

function trim (text) {
	return text.replace(/^\s*|\s*$/g,'');
}

function pruefe_checkboxen(art) {
	var b0 = document.getElementById('b0').checked;	
	var b1 = document.getElementById('b1').checked;	
	var b2 = document.getElementById('b2').checked;
	var b3 = document.getElementById('b3').checked;

	if ((art==1) && (b0 == true)) {
		document.getElementById('b1').checked = false;		
		document.getElementById('b2').checked = false;
		document.getElementById('b3').checked = false;
	} else {
		if ((b1 || b2 || b3) == false) {
			document.getElementById('b0').checked = true;
		} else {
			document.getElementById('b0').checked = false;
		}
	}
}