/*@author Andiriad*/
var locations = {};
var map;

    function googlemaps(witdh, length, zoom)  
    {
      var map = new GMap2(document.getElementById("map"));
      map.setCenter(new GLatLng(witdh, length), zoom);
      map.enableScrollWheelZoom();
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      
      GDownloadUrl("upload/googlemaps/markerdata.xml", function(data) {
        var xml = GXml.parse(data);
        var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          var company = markers[i].getAttribute("company");
	  var daddress = markers[i].getAttribute("daddress");
          var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                   parseFloat(markers[i].getAttribute("lng")));
          markercolor = markers[i].getAttribute("markercolor");
          label = markers[i].getAttribute("label");
          htmlfilepath = markers[i].getAttribute("htmlfilepath");
          
          store = {latlng: latlng, markercolor : markercolor, label : label, htmlfilepath: htmlfilepath, company: company, daddress: daddress};  

          var latlngHash = (latlng.lat().toFixed(6) + "" + latlng.lng().toFixed(6));
          latlngHash = latlngHash.replace(".","").replace(".", "").replace("-","");
          if (locations[latlngHash] == null) {
              locations[latlngHash] = [];
          }
          locations[latlngHash].push(store);
        }
        
        for (var latlngHash in locations) {
          var stores = locations[latlngHash];     
          map.addOverlay(createMarker(stores)); 
          }
        });
}
    
    function createMarker(stores)
     {
      var store = stores[0];

      var newIcon = new GIcon();
      newIcon.image = 'upload/googlemaps/markers/image.png';
      newIcon.printImage = 'upload/googlemaps/markers/printImage.gif';
      newIcon.mozPrintImage = 'upload/googlemaps/markers/mozPrintImage.gif';
      newIcon.iconSize = new GSize(32,33);
      newIcon.shadow = 'upload/googlemaps/markers/shadow.png';
      newIcon.transparent = 'upload/googlemaps/markers/transparent.png';
      newIcon.shadowSize = new GSize(49,33);
      newIcon.printShadow = 'upload/googlemaps/markers/printShadow.gif';
      newIcon.iconAnchor = new GPoint(16,33);
      newIcon.infoWindowAnchor = new GPoint(16,0);
      newIcon.imageMap = [20,0,23,1,25,2,26,3,27,4,28,5,29,6,29,7,30,8,30,9,31,10,31,11,31,12,31,13,31,14,31,15,31,16,31,17,31,18,31,19,31,20,31,21,30,22,31,23,31,24,31,25,31,26,30,27,30,28,29,29,28,30,26,31,24,32,7,32,5,31,3,30,2,29,1,28,1,27,0,26,0,25,0,24,0,23,1,22,0,21,0,20,0,19,0,18,0,17,0,16,0,15,0,14,0,13,0,12,0,11,1,10,1,9,1,8,2,7,3,6,3,5,4,4,5,3,7,2,8,1,11,0];

      //var newIcon = MapIconMaker.createLabeledMarkerIcon({width: 32, height: 32, primaryColor: store.markercolor, label: store.label, labelColor: "#EEEEEE", strokeColor: "#333333"});
      var marker = new GMarker(store.latlng, {icon: newIcon});
      GDownloadUrl(store.htmlfilepath, function(data) {
                                        
      GEvent.addListener(marker, 'click', function(){                          
            marker.openInfoWindowHtml(data); 
 
            storecalculate = store;  //Objektstatus muss in ein anderes Objekt geschrieben werden, da die Werte des Objekts weiter inkrementierten!
            setTimeout("AddressandCalcutlateRouteButton(storecalculate);", 500);  //Timeout wird gesetzt da das DOM vorzeitig aufbaut (opneINfoWindowHtml --> externe File) und die nachfolgenden DIV's NULL sind! 
       }); 
      });
      return marker;     
}

        function AddressandCalcutlateRouteButton(storecalculate)
        { 
               document.getElementById('address').innerHTML = '<strong>' + storecalculate.company + '</strong><br/>' + storecalculate.daddress + ''; 
               document.getElementById('calculateroutebutton').innerHTML = '<a href="javascript:void(0)" onclick="calculateRoute('+ "storecalculate.daddress" +'); return true;">Route berechnen</a>';               
        }
               
	function calculateRoute(storedaddress)
	{
             document.getElementById('openroute').innerHTML = '<form method="get" target="_blank" action="http://maps.google.at/maps?saddr=GET[saddr] to:daddr=GET[daddr])"><strong>Startadresse: </strong><input name="saddr" type="text" value="" size="25" /><input type="hidden" name="daddr" value="'+ storedaddress + '"/><br><strong>Zieladresse: </strong>&nbsp;&nbsp;'+ storedaddress + '<br/><input type="submit" value="Los" />&nbsp;&nbsp;<a href="javascript:void(0)" onclick="calculateRouteClose(); return false;">&lt;&lt;schlie&szlig;en</a></form>';   
        }
       
        function calculateRouteClose ()
	{	      
             document.getElementById('openroute').innerHTML = '';
	}

  
