// JavaScript Document

var map;
    var geocoder;

    function load() {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode("au");
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(-25.244695951306028, 133.76953125), 4);		
		//prompt('Something',);
      }
    }

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

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = 'dealer_locator/map_searcher.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     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 = '<strong>No dealers found.</strong>';
         map.setCenter(new GLatLng(-25.244695951306028, 133.76953125), 3);
         return;
       }
		
		var premiumHeader = false;
		var normalHeader = false;
       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
		 var premium = markers[i].getAttribute('premium');
         var address = markers[i].getAttribute('address');
  		 var website = markers[i].getAttribute('website');		 
 		 var phone = markers[i].getAttribute('phone');
		 var email = markers[i].getAttribute('email');
		 var desc = markers[i].getAttribute('desc');
		 var products = markers[i].getAttribute('products');
         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, premium, address, website, phone, email, desc, products);
         map.addOverlay(marker);
		 
		 if(premium == "1")
		 {
			 if(!premiumHeader)
			 {
				 var div1 = document.createElement('div');	 
				 div1.className = 'premiumHeader';
				 div1.innerHTML = "Premium Stockist <img src='dealer_locator/question-mark.png' style='float: right;' onclick=\"alert('Premium Stockist carry the entire VMS range with live demo units on display.');\" />";
				 sidebar.appendChild(div1);
				 premiumHeader = true;
			 }
		 }		 
		 else if(!normalHeader)
		 {
			 var div2 = document.createElement('div');
			 div2.className = 'normalHeader';
			 div2.innerHTML = "Dealer <img src='dealer_locator/question-mark.png' style='float: right;' onclick=\"alert('VMS products are available through our dealer network.');\" />";
			 sidebar.appendChild(div2);
			 normalHeader = true;
		 }
		 
         var sidebarEntry = createSidebarEntry(marker, name, premium, address, distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
	   var zoom = map.getBoundsZoomLevel(bounds);
	   if(zoom > 12)
	   	zoom = 12;
       map.setCenter(bounds.getCenter(), zoom);
     });
   }

    function createMarker(point, name, premium, address, website, phone, email, desc, products) {
		var markerOptions;
		if(premium == "1")
		{
			var premiumIcon = new GIcon(G_DEFAULT_ICON);
			premiumIcon.image = "http://www.vms4x4.com/dealer_locator/marker.png";
			markerOptions = { icon:premiumIcon };
		}
		else
		{
			var dealerIcon = new GIcon();
			dealerIcon.image = "http://www.vms4x4.com/dealer_locator/dot.png";
			dealerIcon.shadow = "http://www.vms4x4.com/dealer_locator/dot.png";
			dealerIcon.iconSize = new GSize(10, 10);
			dealerIcon.shadowSize = new GSize(0, 0);
			dealerIcon.iconAnchor = new GPoint(5, 5);
			dealerIcon.infoWindowAnchor = new GPoint(5, 5);
			markerOptions = { icon:dealerIcon };
		}
		
      var marker = new GMarker(point, markerOptions);
      var html = '<b>' + name + '</b> <br/>' + address + "<br/>";
	  if(website != "")
	  	html += "<b>web:</b> <a target='_blank' href='"+website+"'>"+website+"</a><br/>";
	  if(phone != "")
	  	html += "<b>ph:</b> "+phone+"<br/>";
	  if(email != "")
		html +="<b>email:</b> "+email+"<br />";
	  if(desc != "")
		html +=desc;
	  if(products != "")
		html += "<b>products:</b> "+ products;	
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, premium, address, distance) {
      var div = document.createElement('div');
	  if(premium == "1")
	  {
	  	div.className = 'premiumDealer';
		GEvent.addDomListener(div, 'mouseover', function() {
			div.style.backgroundColor = '#FC6';
		});
		GEvent.addDomListener(div, 'mouseout', function() {
			div.style.backgroundColor = '#FF6';
		});
	  }
	  else
	  {
		div.className = 'dealer';
		GEvent.addDomListener(div, 'mouseover', function() {
			div.style.backgroundColor = '#eee';
		});
		GEvent.addDomListener(div, 'mouseout', function() {
			div.style.backgroundColor = '#fff';
		});
	  }
      var html = '<b>' + name + '</b> (' + distance.toFixed(1) + 'km)<br/>' + address;
      div.innerHTML = html;
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
	       	  
      return div;
    }
	
	function showLongLat()
	{
		alert(map.getCenter().toUrlValue(6));
	}
