var map;
var geocoder;     

function initialize() {
  if (GBrowserIsCompatible()) {
	geocoder = new GClientGeocoder();
	map = new GMap2(document.getElementById('map'));
	map.setUIToDefault();	
	map.setCenter(new GLatLng(63, 15.1419), 4);
	
		/*
		//Visa alla återförsäljare från start
		var searchUrl = 'http://wellbeloved.se/google_maps/xml.php?lat=64&lng=15&radius=3000';
		 
		 GDownloadUrl(searchUrl, function(data) {
		   var xml = GXml.parse(data);
		   var markers = xml.documentElement.getElementsByTagName('marker');
		   
		   map.clearOverlays();
		
		   var sidebar = document.getElementById('sidebar');
		   sidebar.innerHTML = '';
		
		   if (markers.length == 0) {
			 sidebar.innerHTML = 'Tillfälligt fel, försök igen senare!';
			 map.setCenter(new GLatLng(63,15.1419), 4);
			 return;
		   }
		
		   var bounds = new GLatLngBounds();
		   for (var i = 0; i < markers.length; i++) {
			 var name = markers[i].getAttribute('name');
			 var address = markers[i].getAttribute('address');
			 var distance = parseFloat(markers[i].getAttribute('distance'));
			 var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
									 parseFloat(markers[i].getAttribute('lng')));
			 
			 var marker = createMarker(point, name, address);
			 map.addOverlay(marker);
			 bounds.extend(point);
		   }
		   map.setCenter(new GLatLng(63, 15.1419), 4);
		 });
		 */

  }
}

function searchLocations() {
 var address = document.getElementById('addressInput').value;
 
 geocoder.getLatLng(address, function(latlng) {
   if (!latlng) {
	 alert(address + ' hittades ej!');
   } else {
	 searchLocationsNear(latlng);
   }
 });
}

function searchLocationsNear(center) {
 var radius = 25;
 var lat = center.lat();
 var lng = center.lng();
	  
 var searchUrl = 'http://wellbeloved.se/google_maps/xml.php?lat=' + lat + '&lng=' + lng + '&radius=' + radius;
 //var searchUrl = 'http://wellbeloved.se/google_maps/test.xml';
 //alert(searchUrl); 
 
 GDownloadUrl(searchUrl, function(data) {
   
   var xml = GXml.parse(data);
   var markers = xml.documentElement.getElementsByTagName('marker');
   
   map.clearOverlays();

   var sidebar = document.getElementById('sidebar');
   sidebar.innerHTML = '';

   if (markers.length == 0) {
	 sidebar.innerHTML = 'Inga återförsäljare hittades inom radien av 25km från sökt ort eller stad!<br/><br/>';
	 map.setCenter(new GLatLng(63,15.1419), 4);
	 return;
   }

   var bounds = new GLatLngBounds();
   document.getElementById('sidebar').innerHTML='<p>Klicka på en återförsäljare på kartan för mer information!</p><p>Återförsäljare upp till 25km från sökt stad/ort visas i sökresultatet.</p><br/>';
   for (var i = 0; i < markers.length; i++) {
	 var name = markers[i].getAttribute('name');
	 var address = markers[i].getAttribute('address');
	 var zip = markers[i].getAttribute('zip');
	 var city = markers[i].getAttribute('city');
	 var phone = 'Tel:' + markers[i].getAttribute('phone');
	 var distance = parseFloat(markers[i].getAttribute('distance'));
	 var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
							 parseFloat(markers[i].getAttribute('lng')));
	 
	 var marker = createMarker(point, name, address, zip, city, phone);
	 map.addOverlay(marker);
	 //var sidebarEntry = createSidebarEntry(marker, name, address, zip, city, distance, phone);
	 //sidebar.appendChild(sidebarEntry);
	 bounds.extend(point);
   }
   //map.setCenter(new GLatLng(lat, lng), 4);
   map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
 });
}

function createMarker(point, name, address, zip, city, phone) {
  var marker = new GMarker(point);
  var html = '<b>' + name + '</b> <br/>' + address + '<br/>' + zip + ' ' + city + '<br/>' + phone;
  GEvent.addListener(marker, 'click', function() {
	marker.openInfoWindowHtml(html);
  });
 return marker;
}

function createSidebarEntry(marker, name, address, zip, city, distance, phone) {
  var div = document.createElement('div');
  var km = "";
  if (distance.toFixed(1)>10) {
	km = ' (Avstånd: '+distance.toFixed(1)+'km)';  
  }
  var html = '<b>' + name + '</b>' + km + '<br/>'+address+'<br/>' + zip + ' ' + city + '<br/>'+phone+'<br/>';
  div.innerHTML = html;
  div.style.cursor = 'pointer';
  div.style.marginBottom = '5px'; 
  GEvent.addDomListener(div, 'click', function() {
	GEvent.trigger(marker, 'click');
  });
  GEvent.addDomListener(div, 'mouseover', function() {
	div.style.backgroundColor = '#eee';
  });
  GEvent.addDomListener(div, 'mouseout', function() {
	div.style.backgroundColor = '#fff';
  });
  return div;
}
