var map;
var markerIcon;
var clusterIcon;
var cluster;

var close = [];


function createMarker(vector, jobIndex) 
{
   var marker;
   if (topJobs[jobIndex] == 1)
   {
     marker = new GMarker(vector, {icon:  topJobIcon});   
     GEvent.addListener(marker, 
                        "mouseover", 
                        function() 
                        {
                            marker.openExtInfoWindow(map,
                                                     "job_opening",
                                                     getTopJobHtml(jobIndex),
                                                     {beakOffset: 3,
                                                      paddingX:   40,
                                                      paddingY:   20});
                        }
                       );

   }
   else
   {
     marker = new GMarker(vector, {icon:  jobIcon});   
     GEvent.addListener(marker, 
                        "mouseover", 
                        function() 
                        {
                            marker.openExtInfoWindow(map,
                                                     "job_opening",
                                                     getJobHtml(jobIndex),
                                                     {beakOffset: 3,
                                                      paddingX:   40,
                                                      paddingY:   20});
                        }
                       );
   }
   marker.jobIndex = jobIndex;

   
   GEvent.addListener(marker, 
                      "click", 
                      function() 
                      {
                         window.location = "/" + jobIds[jobIndex] + "/" + titles[jobIndex];
                      }
                     );
   return marker;              
}



function initialize()
 {      
   if (GBrowserIsCompatible()) 
   {            
      map = new GMap2(document.getElementById("google_maps_canvas"));
      map.setCenter(new GLatLng(52.1326335, 5.29126595), 7);
      map.addMapType(G_PHYSICAL_MAP);
      map.removeMapType(G_HYBRID_MAP);
      map.removeMapType(G_SATELLITE_MAP);
      map.setMapType(G_PHYSICAL_MAP);       
      map.setMapType(G_PHYSICAL_MAP);       

      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.enableGoogleBar();
                
      jobIcon                     = new GIcon();
      jobIcon.image               = "/images/indicator_googlemaps_brown_size1.png";
      jobIcon.iconSize            = new GSize(35, 36);
      jobIcon.iconAnchor          = new GPoint(19, 19);
      jobIcon.infoWindowAnchor    = new GPoint(137, 10);           

      topJobIcon                  = new GIcon();
      topJobIcon.image            = "/images/indicator_googlemaps_yellow_size2.png";
      topJobIcon.iconSize         = new GSize(43, 44);
      topJobIcon.iconAnchor       = new GPoint(19, 19);
      topJobIcon.infoWindowAnchor = new GPoint(130, 10);           

      clusterIcon = new GIcon();
      clusterIcon.image = "/images/indicator_googlemaps_alt.png";
      clusterIcon.iconSize = new GSize(50, 50);
      clusterIcon.iconAnchor = new GPoint(19, 19);
      clusterIcon.infoWindowAnchor = new GPoint(19, 19);           

      GEvent.addListener(map,
                         "zoomend",
                         function()
                         {
                            map.closeExtInfoWindow(); 	                            
                         } 
                        );
   }
}

function myMouseOver(args)
{
   if(args.clusteredMarkers)
   {
      var html = '<div style="width: 180px;" overflow="auto">';
      var min = Math.min(args.clusteredMarkers.length, 5);
      window.status = args.clusteredMarkers.length;
      window.status += "min: " + min+ " ";
         
      for(index = 0; index < min; index++)
      {
         window.status += index + ":";
         marker = args.clusteredMarkers[index]
         html = html + getJobHtml(marker.jobIndex);
      }
      html = html + "</div>";
      args.clusterMarker.openInfoWindowHtml(html);
   }   
}

function getTopJobHtml(jobIndex)
{
   return "<div class=\"googlemaps_infobox\">"
      +   "  <div style=\"display: block; float: left; position: relative;\">"
      +   "  <img src=\"" + organisationLogos[jobIndex] + "\" />"
      +   "  </div>"
      +   "  <div style=\"display: block; float: left; position: relative;\">"
      +   "    <a href=\"" + "/" + titlesUrls[jobIndex] + "\"><b>" + titles[jobIndex] + "</b></a>"
      +   "    <br />" 
      +   "    <a href=\"" + organisationUrls[jobIndex] + "?wis-selecties=1\">" + organisations[jobIndex] + "</a>" 
      +   "    <br /> " 
      +   "  </div>";                                                
      +   "</div>";                                                
}

function getJobHtml(jobIndex)
{
   return "<div class=\"googlemaps_infobox\">" 
      +   "  <div>"
      +   "    <a href=\"" + "/" + titlesUrls[jobIndex] + "\"><b>" + titles[jobIndex] + "</b></a>"
      +   "    <br />" 
      +   "    <a href=\"" + organisationUrls[jobIndex] + "?wis-selecties=1\">" + organisations[jobIndex] + "</a>" 
      +   "    <br /> " 
      +   "  </div>";                                                
      +   "</div>";                                                
}


function placeMarkers()
{
   var markers          = [];   

   for (var job = 0; job < latLngs.length; job++) 
   {                 
      var latitude   = latLngs[job].split(',')[0];
      var longitude  = latLngs[job].split(',')[1];
      if(latitude != '' && longitude != '')
      {                    
         var vector = new GLatLng(latitude, longitude);
         marker = createMarker(vector, job);
         markers.push(marker);
      }
   }                        
   cluster = new ClusterMarker(map, {markers:                 markers,
                                     clusterMarkerIcon:       clusterIcon,
                                     clusterMarkerMouseOver : myMouseOver}
                              );
   cluster.fitMapToMarkers();
}

