// JavaScript Document
//Browser Support Code

    
    function createMarker(latlng, number) {
      var marker = new GMarker(latlng);
      marker.value = number;
      GEvent.addListener(marker,"click", function() {
        var myHtml = "<b>#" + number + "</b><br/>" + message[number -1];
        map.openInfoWindowHtml(latlng, myHtml);
      });
      return marker;
	   }
	   
    function GM_initialize(mapLat,mapLong,mapZoom,divId) {
      if (GBrowserIsCompatible()) {
		document.getElementById(divId).style.width = '100%';
		document.getElementById(divId).style.height = '250px';
        mappoint = new GLatLng(mapLat, mapLong);
        var map = new GMap2(document.getElementById(divId));
        map.setCenter(mappoint, mapZoom); //
        map.addControl(new GSmallMapControl());
        map.addControl(new GOverviewMapControl());
		map.enableScrollWheelZoom();
        var marker = new GMarker(mappoint);
        map.addOverlay(marker);
        return map;
      }
      else {
        return false;
      }
    }
 
    function toggleGmapGroup(type) {
      for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
        if (marker.isHidden()) {
          marker.show();
        } else {
          marker.hide();
        }
      } 
    }

    function showGmapGroup(type,map,unzoom) {
      for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
          marker.show();
      }
      if(unzoom){
        unzoomToShowGroup(type,map);
      }
    }
    
    function unzoomToShowGroup(type,map) {
      //get max/min val
      var minLng = markerGroups[type][0].getLatLng().lng();
      var maxLng = markerGroups[type][0].getLatLng().lng();
      var minLat = markerGroups[type][0].getLatLng().lat();
      var maxLat = markerGroups[type][0].getLatLng().lat();
      for(var i = 0; i < markerGroups[type].length; i++){
        if(markerGroups[type][i].getLatLng().lng() < minLng) minLng = markerGroups[type][i].getLatLng().lng();
        if(markerGroups[type][i].getLatLng().lng() > maxLng) maxLng = markerGroups[type][i].getLatLng().lng();
        if(markerGroups[type][i].getLatLng().lat() < minLat) minLat = markerGroups[type][i].getLatLng().lat();
        if(markerGroups[type][i].getLatLng().lat() > maxLat) maxLat = markerGroups[type][i].getLatLng().lat();
      }
      var rngLat = Math.abs(maxLat - minLat);
      var rngLng = Math.abs(maxLng - minLng);
      //check if points are in visible area
      var maxZoomOut = 5;
      while(maxZoomOut>0){
        if(map.getBounds().containsLatLng(new GLatLng(minLat, minLng)) && map.getBounds().containsLatLng(new GLatLng(maxLat, maxLng))){
          return true;
        }
        else {
          //check if points can be visible by panTo (without zoomout)
          mapRngLat = Math.abs(map.getBounds().getSouthWest().lat() - map.getBounds().getNorthEast().lat());
          mapRngLng = Math.abs(map.getBounds().getSouthWest().lng() - map.getBounds().getNorthEast().lng());
          if(mapRngLat > rngLat && mapRngLng > rngLng){
            // if yes - just panTo
            newcenter = new GLatLng(minLat + (rngLat/2), minLng + (rngLng/2));
            map.panTo(newcenter);
            return true;
          }
          else {
            // if no unzoom and try to check again
            map.zoomOut();
            maxZoomOut--;
            if(maxZoomOut < 1) return false;
          }
        }
      }
    }

    function createPropertyMarker(point, id, address, stat, cat, price, type) {
      var marker = new GMarker(point, customIcons[type]);
      var html = "<b><a href=\"viewt.php?pid=" + id + "\">" + address + "</a></b><br />Price: " + price + "<br />Property Type: " + cat + "<br />Status: " + stat;      
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }
	



















