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=="Bitte geben Sie ihre PLZ ein") || (!(address.match(/^[0-9]{5}$/)))) {
		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = 'Bitte geben Sie eine gültige PLZ ein (5 Ziffern).';
		return;	 
	}

	searchByPLZ(address);
}

function searchByPLZ(address) {
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '<img src="images/layout/loading.gif" /><br />suche...';

	var b1 = document.getElementById('b1').checked;
	var b2 = document.getElementById('b2').checked;
		
	var searchUrl = 'phpsearch.php?plz=' + address + '&b1=' + b1 + '&b2=' + b2;

	GDownloadUrl(searchUrl, function(data) {
		var xml = GXml.parse(data);
		var root_name = xml.documentElement;
		var markers=root_name.getElementsByTagName('marker'); 	   

		map.clearOverlays();

		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 = 'Zu ihrer PLZ "' + address + '" konnten Leider keine Händler gefunden werden.';
			map.setCenter(new GLatLng(50, 13), 4);
			return;
		}
		
		var bounds = new GLatLngBounds();

		for (var i = 1; i < markers.length; i++) { // bei 1 anfangen, da 0.er = Fake
			var hname = trim(GXml.value(markers[i].getElementsByTagName("name")[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 htelefon = trim(GXml.value(markers[i].getElementsByTagName("telefon")[0]));
			var hfax = trim(GXml.value(markers[i].getElementsByTagName("fax")[0]));
			var hmobil = trim(GXml.value(markers[i].getElementsByTagName("mobil")[0]));			
			var hemail = trim(GXml.value(markers[i].getElementsByTagName("email")[0]));
			var hansprechpartner = trim(GXml.value(markers[i].getElementsByTagName("ansprechpartner")[0]));			

			var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),	parseFloat(markers[i].getAttribute('lng')));
			var marker = createMarker(i, point, hname, hstrasse, hplz, hort, htelefon, hfax, hmobil, hemail, hansprechpartner);
			
			map.addOverlay(marker);
			var sidebarEntry;
			if (b2) { // langen Sidebar-Entry kreieren
				sidebarEntry = createSidebarEntryLong(i, marker, hname, hstrasse, hplz, hort, hansprechpartner, htelefon, hfax, hmobil, hemail);
			} else {
				//sidebarEntry = createSidebarEntry(i, marker, hname, hstrasse, hplz, hort);
				sidebarEntry = createSidebarEntryLong(i, marker, hname, hstrasse, hplz, hort, "Ansprechpartner:<br />" + hansprechpartner + "<br />", htelefon, hfax, hmobil, hemail);
			}
			sidebar.appendChild(sidebarEntry);

			bounds.extend(point);
		}
		//map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
		map.setCenter(bounds.getCenter(), 12);
	});

}

function createMarker(index, point, hname, hstrasse, hplz, hort, htelefon, hfax, hmobil, hemail, hansprechpartner) {

	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 /><br />';
	if (htelefon.length > 0) { html += '			Tel: ' + htelefon + '<br />'; }
	if (hfax.length > 0) { html += '			Fax: ' + hfax + '<br />'; }
	if (hmobil.length > 0) { html += '			Mobil: ' + hmobil + '<br />'; }
	if (hemail.length > 0) { html += '			E-Mail: <a href="mailto:' + hemail + '">' + hemail + '</a><br />'; }
	if (hansprechpartner.length > 0) { html += '			<br />Ansprechpartner:<br />' + hansprechpartner + '<br />'; }	
		
	
	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>";
	
	//marker.openInfoWindowHtml(html);
	GEvent.addListener(marker, 'click', function() {marker.openInfoWindowHtml(html);});

	return marker;
}

function createSidebarEntry(index, marker, firma, 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><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 createSidebarEntryLong(index, marker, firma, strasse, plz, ort, ansprechpartner, telefon, fax, mobil, email) {
	var buchstabe = String.fromCharCode("A".charCodeAt(0) + index - 1);  
	var div = document.createElement('div');
	var html = "";
	html = '<span class="sidebarentrylink">' + buchstabe + ': ' + firma + '</span><br/>' + strasse + '<br />' + plz + ' ' + ort + '<br /><br />';
	if (ansprechpartner.length > 0) { html +=	ansprechpartner + '<br />'; }
	if (telefon.length > 0) { html += 'Tel: ' + telefon + '<br />'; }
	if (fax.length > 0) { html += 'Fax: ' + fax + '<br />'; }
	if (mobil.length > 0) { html += 'Mobil: ' + mobil + '<br />'; }
	if (email.length > 0) { html += 'E-Mail: <a href="mailto:' + email + '">' + email + '</a><br />'; }
	
	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';
	});
	
	var htooptiptext = firma;
	
	var tooltip = new Tooltip(marker, htooptiptext, ort, 4); /**/
	marker.tooltip = tooltip; /**/
	map.addOverlay(tooltip); /**/
			
	GEvent.addListener(marker,'mouseover',function(){ this.tooltip.show(); });
	GEvent.addListener(marker,'mouseout',function(){ this.tooltip.hide(); });	
	
	return div;
}


function trim (text) {
	return text.replace(/^\s*|\s*$/g,'');
}

function toggle_auswahl(art) {
	if (art==1) { document.getElementById('b2').checked = false; document.getElementById('b1').checked = true; }
	if (art==2) { document.getElementById('b1').checked = false; document.getElementById('b2').checked = true; }
}


