/*Google Maps JS library*/

var map;
var markers_on_map = new Array();
var marker_htmls =new Array();

//var marker_url="http://localhost/suzuki_svn/trunk";
//var marker_url="http://10.0.0.104:8888/suzuki";
var marker_url="http://www.suzuki.hu";

function display_map() {
  if (GBrowserIsCompatible()) { 
   // Display the map, with some controls and set the initial location 
   map = new GMap2(document.getElementById("map"));
   map.addControl(new GLargeMapControl());
   map.addControl(new GMapTypeControl());
   map.setCenter(new GLatLng(47.0401, 19.0777),7);
   map.enableScrollWheelZoom(); //mouse scroll zoom
   map.enableContinuousZoom();
  }
}

function dealer_admin_init() {
  display_map();
  display_dealer_marker();
  user_place_marker();
}

/* Displays a marker specified by DealerLat and DealerLng values */
function display_dealer_marker() {
  var Icon=new GIcon(G_DEFAULT_ICON);                                 //creating new Icon
  var lat=parseFloat(document.getElementById("DealerLat").value);     //getting LAT and LNG
  var lng=parseFloat(document.getElementById("DealerLng").value);
  if (lat>0) {
    map.clearOverlays();
    var point = new GLatLng(lat,lng);                                   //create a POINT from LAT and LNG 
    map.setCenter(point,13);
    var marker = new GMarker(point, Icon);                              // POINT + ICON = MARKER
    map.addOverlay(marker); 
  }
}

/* Adds a click event listener to the map */
function user_place_marker() {
  GEvent.addListener(map, 'click', 
   function(overlay, point){
  		map.clearOverlays();
  		if (point) {
  		  var Icon=new GIcon(G_DEFAULT_ICON);
  			map.addOverlay(new GMarker(point, Icon));
  			map.panTo(point);
  			document.getElementById('DealerLat').value = point.lat();
  			document.getElementById('DealerLng').value = point.lng();
  		}
  	});
}

/*Displays a dealer on the map of his profile */
function show_profile_map() {
  GUnload();
  if (GBrowserIsCompatible()) { 
    // Display the map, with some controls and set the initial location 
    map = new GMap2(document.getElementById("profile_map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    /*map.setCenter(new GLatLng(47.0401, 19.0777),7);*/
    map.enableScrollWheelZoom(); /*scroll zoom*/
		map.enableContinuousZoom();
    /*creating the marker of the sealer*/
    var Icon=new GIcon(G_DEFAULT_ICON);                         //creating new Icon
    var lat=parseFloat(document.getElementById("DealerLat").value);      //getting LAT and LNG
    var lng=parseFloat(document.getElementById("DealerLng").value);
    var point = new GLatLng(lat,lng);                           //create a POINT from LAT and LNG 
    map.setCenter(point,13);
    var marker = new GMarker(point, Icon);                      // POINT + ICON = MARKER
    map.addOverlay(marker);
  }    
}

function show_markers_on_map() {
  
  var bounds = new GLatLngBounds(); //For fitting the zoom to the data 
  var gmarkers = [];  //array for markers, needed to enable info window popup
  
  GDownloadUrl(marker_url+"/dealers/search_xml", function(data) {
      map.clearOverlays();
  	  var xml = GXml.parse(data);
  	  var markers = xml.documentElement.getElementsByTagName("marker");
  	  for (var i = 0; i < markers.length; i++) {
        var marker_in_xml=markers[i];
        
        var marker=create_marker(marker_in_xml);
        
        var lat=parseFloat(marker_in_xml.getAttribute("lat"));      //getting LAT and LNG
        var lng=parseFloat(marker_in_xml.getAttribute("lng"));
        var point = new GLatLng(lat,lng);                           //create a POINT from LAT and LNG 
        bounds.extend(point);
        
        var id = marker_in_xml.getAttribute("id");
        markers_on_map[id]=marker;
  	    map.addOverlay(markers_on_map[id]);
  	  }

  	  if (bounds.isEmpty()) {
  	    map.setCenter(new GLatLng(47.1801, 19.20007),7);
  	  }
  	  else {
  	    map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds)-1);
  	  }

  });

}

function popup_dealer_info(id) {
  markers_on_map[id].openInfoWindowHtml(marker_htmls[id]);
}

function create_marker(marker_in_xml) {
  /*Process of creating a marker  (marker=point+icon)*/
  var Icon=new GIcon(G_DEFAULT_ICON);                         //creating new Icon
  var lat=parseFloat(marker_in_xml.getAttribute("lat"));      //getting LAT and LNG
  var lng=parseFloat(marker_in_xml.getAttribute("lng"));
  var point = new GLatLng(lat,lng);                           //create a POINT from LAT and LNG 
  var marker = new GMarker(point, Icon);                      // POINT + ICON = MARKER
  
  /*Process of creating the HTML popup window*/ 
  var name=marker_in_xml.getAttribute("name");
  var zipcode=marker_in_xml.getAttribute("zipcode");
  var city=marker_in_xml.getAttribute("city");
  var address=marker_in_xml.getAttribute("address");
  var id=marker_in_xml.getAttribute("id");
  var phone=marker_in_xml.getAttribute("phone");
  var html = "<b>"+name+"</b><br>"+
              "Cím: "+zipcode+" "+city+", "+address+"<br>"+
              "<a onclick='details("+id+")'>Részletek |></a>";
  marker_htmls[marker_in_xml.getAttribute("id")]=html;    
  GEvent.addListener(marker, 'click', function() {
    marker.openInfoWindowHtml(html);
    });
  return marker;
}

function details(id) {
  new Ajax.Updater('dealer','/dealers/profile/'+id, {
                asynchronous:true, 
                evalScripts:true, 
                onComplete:function(request, json) { 
                  javascript: show_dealer_profile(); 
                }, 
          requestHeaders:['X-Update', 'dealer']
  });
}


/*function put_markers_on_map() 
	GDownloadUrl("http://localhost:8888/suzuki/dealers/search", function(data) {
	  var xml = GXml.parse(data);
	  var markers = xml.documentElement.getElementsByTagName("marker");
	  for (var i = 0; i < markers.length; i++) {
	    var name = markers[i].getAttribute("name");*/
	    /*var address = markers[i].getAttribute("address");
	    var type = markers[i].getAttribute("type");*/
/*	    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
	                            parseFloat(markers[i].getAttribute("lng")));
	    var marker = createMarker(point, name);
	    map.addOverlay(marker);
	  }
	});
}*/




/*document.getElementById("DealerCity").value="OK";*/
/*	var Icon=new GIcon();*/

/*	var point = new GLatLng();
	map.addOverlay(new GMarker(point, Icon));
	map.setZoom(15);
	map.panTo(point);*/

/*  GEvent.addListener(map, 'click', 
		function(overlay, point){
			map.clearOverlays();
			if (point) {
				map.addOverlay(new GMarker(point, Icon));
				map.panTo(point);
				/*document.getElementById('lat').value = point.lat();*/
				/*document.getElementById('lng').value = point.lng();*/
/*			}
		});
			
	function wheelevent(e) {
		if (!e){
			e = window.event
		}
		if (e.preventDefault){
			e.preventDefault()
		}
		e.returnValue = false;
	}
	GEvent.addDomListener(map.getContainer(), 'DOMMouseScroll', wheelevent);
	map.getContainer().onmousewheel = wheelevent; 
	*/
		
		/*
    function load() {
      if (GBrowserIsCompatible()) {
    	  var map = new GMap2(document.getElementById('map'));
    	  map.addControl(new GLargeMapControl());
    	  map.addControl(new GMapTypeControl());
    	  map.addControl(new GOverviewMapControl  ());
    		map.enableScrollWheelZoom();
    		map.enableContinuousZoom();
    		map.setCenter(new GLatLng(47.0401, 19.0777), 8);

    		GDownloadUrl("http://10.0.0.104:8888/temp/markers.xml", function(data) {
      	  var xml = GXml.parse(data);

      	  var markers = xml.documentElement.getElementsByTagName("marker");		
    	    // Cycle through the array of markers 
      	  for (var i = 0; i < markers.length; i++) {							
      	    var newlat=parseFloat(markers[i].getAttribute("lat"));
      	    var newlng=parseFloat(markers[i].getAttribute("lng"));
      	    var point = new GLatLng(newlat,newlng);
      	    var marker = createMarker(point);
      	    map.addOverlay(marker);
      	  }

      	});

    	}
    }

    function createMarker(point) {
      var Icon=new GIcon();
      var marker = new GMarker(point, Icon);
      var html = "<b>hello</b>";
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
        });
      return marker;
    }

    */
    