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;	 
	}

	address += " Deutschland";
	
	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);
		}
	});
}

function searchLocationsNear(center) {
	var sidebar = document.getElementById('sidebar');
	sidebar.innerHTML = '<img src="images/layout/loading.gif" /><br />suche...';

	var b01 = document.getElementById('b01').checked;
	var b02 = document.getElementById('b02').checked;
		
	var b1 = document.getElementById('b1').checked;
	var b2 = document.getElementById('b2').checked;
	var b3 = document.getElementById('b3').checked;
	var b4 = document.getElementById('b4').checked;
	var b5 = document.getElementById('b5').checked;
	var b6 = document.getElementById('b6').checked;

	var searchUrl;
	if (b01) {
		searchUrl = 'phpsearch.php?lat=' + center.lat() + '&lng=' + center.lng() + '&b1=1&b2=false&b3=false&b4=false&b5=false&b6=false';
	} else {
		searchUrl = 'phpsearch.php?lat=' + center.lat() + '&lng=' + center.lng() + '&b1=2&b2=' + b2 + '&b3=' + b3 + '&b4=' + b4 + '&b5=' + b5 + '&b6=' + b6;
	}

	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 Händler 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("name")[0]));
			var hstrasse = trim(GXml.value(markers[i].getElementsByTagName("strasse")[0]));		
			var hplz = trim(GXml.value(markers[i].getElementsByTagName("plz")[0]));
			if (hplz.length < 5) hplz = "0" + hplz;
			var hort = trim(GXml.value(markers[i].getElementsByTagName("ort")[0]));
			var hvorwahl = trim(GXml.value(markers[i].getElementsByTagName("vorwahl")[0]));
			if (hvorwahl.substring(0,1) != "0") hvorwahl = "0" + hvorwahl;
			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("info")[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 hb4 = trim(GXml.value(markers[i].getElementsByTagName("b4")[0]));
			var hb5 = trim(GXml.value(markers[i].getElementsByTagName("b5")[0]));
			var hb6 = trim(GXml.value(markers[i].getElementsByTagName("b6")[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, hvorwahl, htelefon, hfax, hemail, hurl, hinfo, hb1, hb2, hb3, hb4, hb5, hb6);
			map.addOverlay(marker);
			
			var sidebarEntry = createSidebarEntry(i, marker, hname, distance, hstrasse, hplz, hort, hb1);
			sidebar.appendChild(sidebarEntry);

			bounds.extend(point);

		}
		map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
	});

}

function createMarker(index, point, center, hname, hstrasse, hplz, hort, hvorwahl, htelefon, hfax, hemail, hurl, hinfo, hb1, hb2, hb3, hb4, hb5, hb6) {

	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";  
	if (hb1 == 1) {
		buchstabesymbol.image = "http://projekt.atrivio.net/al-ko/haendler-gh/marker/power/marker" + buchstabe + ".png";  		
	}
	markerOptions = { icon:buchstabesymbol };
	var marker = new GMarker(point, markerOptions);	

	var html = "";
	if (hb1 == 1) {
		html = '<div style="width: 400px;"><span class="sidebarentrylink">AL-KO Power Partner<br />' + hname + '</span><br /><br />';
	} else {
		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: ' + hvorwahl + '-' + htelefon + '<br />'; }
	if (hfax.length > 0) { html += '			Fax: ' + hvorwahl + '-' + 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 += '			Info: ' + hinfo + '<br />'; }	
		
	var detailbeschreibung = "";
	if (hb3 == 1) {
		detailbeschreibung += "Rasentraktor Aufsitzmäher";
		if ((hb2 + hb4 + hb5 + hb6) > 0) detailbeschreibung += ", ";
	}

	if (hb4 == 1) {
		detailbeschreibung += "Garten- und Heimwerkergeräte mit Elektromotor";
		if ((hb2 + hb5 + hb6) > 0) detailbeschreibung += ", ";
	}

	if (hb6 == 1) {
		detailbeschreibung += "Garten- und Heimwerkergeräte mit 2-Takt Motor";
		if ((hb2 + hb5) > 0) detailbeschreibung += ", ";
	}

	if (hb2 == 1) {
		detailbeschreibung += "Gartengeräte mit 4-Takt Motor (ausser Rasentraktoren)";
		if (hb5 > 0) detailbeschreibung += ", ";
	}

	if (hb5 == 1) detailbeschreibung += "Wassertechnik";
	
	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;
	if (hb1 == 1) { htooptiptext = htooptiptext + "\r\n" + "Powerpartner"; }
	
	var tooltip = new Tooltip(marker, htooptiptext, hort, 4); /**/
	marker.tooltip = tooltip; /**/
	map.addOverlay(tooltip); /**/
			
	GEvent.addListener(marker, 'click', function() {marker.openInfoWindowHtml(html);});
	
	GEvent.addListener(marker,'mouseover',function(){ this.tooltip.show(); });
	GEvent.addListener(marker,'mouseout',function(){ this.tooltip.hide(); });
	
	return marker;
}

function createSidebarEntry(index, marker, firma, distanz, strasse, plz, ort, powerpartner) {
	var buchstabe = String.fromCharCode("A".charCodeAt(0) + index - 1);  
	var div = document.createElement('div');
	var html = "";
	if (powerpartner == 1) {
		html = '<span class="sidebarentrylink">' + buchstabe + ': ' + firma + '<br />AL-KO Power Partner</span> (' + distanz.toFixed(1) + ' km)<br/>' + strasse + '<br />' + plz + ' ' + ort;
	} else {
		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 toggle_auswahl(art) {
	if (art==1) { document.getElementById('b02').checked = false; document.getElementById('b01').checked = true; }
	if (art==2) { document.getElementById('b01').checked = false; document.getElementById('b02').checked = true }

	var b01 = document.getElementById('b01').checked;
	var b02 = document.getElementById('b02').checked;	

	if (b02) {
		document.getElementById('servicepartnercheckboxen').style.display = "block";
		document.getElementById('sidebar').style.height = "150px";
	} else {
		document.getElementById('servicepartnercheckboxen').style.display = "none";		
		document.getElementById('sidebar').style.height = "270px";		
		document.getElementById('b1').checked = true;		
		document.getElementById('b2').checked = false;
		document.getElementById('b3').checked = false;
		document.getElementById('b4').checked = false;
		document.getElementById('b5').checked = false;
		document.getElementById('b6').checked = false;	
	}
}



function pruefe_checkboxen(art) {
	var b1 = document.getElementById('b1').checked;	
	var b2 = document.getElementById('b2').checked;
	var b3 = document.getElementById('b3').checked;
	var b4 = document.getElementById('b4').checked;
	var b5 = document.getElementById('b5').checked;
	var b6 = document.getElementById('b6').checked;

	if ((art==1) && (b1 == true)) {
		document.getElementById('b2').checked = false;		
		document.getElementById('b3').checked = false;
		document.getElementById('b4').checked = false;
		document.getElementById('b5').checked = false;
		document.getElementById('b6').checked = false;		
	} else {
		 
		if ((b2 || b3 || b4 || b5 || b6) == false) {
			document.getElementById('b1').checked = true;
		} else {
			document.getElementById('b1').checked = false;
		}
	}
}