var map        = null;
var moveOK     = true;
var iconCnt    = 0;
var iconMrk    = new Array();
var iconHtml   = new Array();
var iconLink   = new Array();
var polyPoints = new Array();
var rectangle;
var ourIcon;
var image;
var mrkNW;
var mrkSE;
var topLat;
var rightLng;
var botLat;
var leftLng;
var zoomStart;
var clng; 
var clat; 
var defLat;
var defLng;
var defZoom;
var bounds;
var center;

function Load()
  {
  var doPoly = true;
  var initZoom;
  
  myDiv = document.getElementById("frameDiv");
  myDiv.innerHTML = '<iframe name="count" id="count" src="/fine/real/estate/getcount" frameborder="0" width="130" height="30" scrolling="no"></iframe>';

  mapobj = document.getElementById("myMap");
  mapobj.style.visibility = "visible";

  center = new google.maps.LatLng(clat, clng);

  if(zoomStart > 9000) 
    {
    if(zoomStart == 9999)
      initZoom = defZoom;
    else
      initZoom = 9999 - zoomStart;
    
    doPoly = false;
    }
  else
    initZoom = defZoom;

  var myOptions = {
      zoom: initZoom,
      center: center, 
      streetViewControl: false,
      zoomControl: true,
      panControl: true,
      scrollwheel: false,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    
  map = new google.maps.Map(document.getElementById("myMap"), myOptions);

  if(topLat && doPoly)
    {
    polyPoints = [];
    bds = new google.maps.LatLngBounds(new google.maps.LatLng(topLat, leftLng), new google.maps.LatLng(botLat, rightLng));
    map.fitBounds(bds);
    polyPoints = [];
    polyPoints[0] = new google.maps.LatLng(topLat, leftLng);
    polyPoints[1] = new google.maps.LatLng(botLat, rightLng);
    drawCoordinates();
    }

  google.maps.event.addListener(map, 'bounds_changed', moveEnd);
  google.maps.event.addListener(map, 'dragstart',      dragStart);
  google.maps.event.addListener(map, 'dragend',        dragEnd);
  }

function drawCoordinates() 
  {
  if(polyPoints.length == 2) 
    {
    var rectOptions = {
       strokeColor: "#000000",
       strokeOpacity: 0.25,
       strokeWeight: 2,
       fillColor: "#0000FF",
       fillOpacity: 0.25,
       map: map,
       bounds: new google.maps.LatLngBounds(polyPoints[0], polyPoints[1])
      };

    ClearOverlays();
    
    rectangle = new google.maps.Rectangle(rectOptions);

    image = new google.maps.MarkerImage('http://www.proagentwebsites.com/images/icon_move.png', new google.maps.Size(33, 33), new google.maps.Point(0,0), new google.maps.Point(16, 16));
	mrkNW = new google.maps.Marker({position: polyPoints[0], map: map, icon: image, animation: 'DROP', raiseOnDrag: false});
	mrkSE = new google.maps.Marker({position: polyPoints[1], map: map, icon: image, animation: 'DROP', raiseOnDrag: false});
    
    mrkNW.setDraggable(true);
    mrkSE.setDraggable(true);
    
    google.maps.event.addListener(mrkNW, "dragstart", redraw0Start);
    google.maps.event.addListener(mrkNW, "dragend",   redraw0End);
    google.maps.event.addListener(mrkSE, "dragstart", redraw1Start);
    google.maps.event.addListener(mrkSE, "dragend",   redraw1End);
      
    UpdateCount();
    }
  }

function ClearOverlays()
  {
  if(rectangle)
    {
    rectangle.setMap(null);
    mrkNW.setMap(null);
    mrkSE.setMap(null);
    
    delete rectangle;
    delete mrkNW;
    delete mrkSE;
    }
    
  clearHouses();
  }

function clearHouses()
  {
  for(lp = 0; lp < iconCnt; lp++)
    {
    iconMrk[lp].setMap(null);
    delete iconMrk[lp];
    }
    
  iconCnt = 0;
  iconMrk = [];
  iconHtml = [];
  iconLink = [];  
  }

function ClearSel() 
  {
  ClearOverlays();    
  polyPoints = [];
  UpdateCount();
  }
    
function ResetMap()
  {
  center = new google.maps.LatLng(defLat, defLng);
  ClearOverlays();
  polyPoints = [];
  moveOK = false;
  map.setCenter(center);
  map.setZoom(defZoom);
  moveOK = true;
  UpdateCount();
  }
  
function doPoly()
  {
  bounds = map.getBounds();
  
  var sw       = bounds.getSouthWest();
  var ne       = bounds.getNorthEast();
  var latN     = ne.lat();
  var latS     = sw.lat();
  var lngE     = ne.lng();
  var lngW     = sw.lng();
  var latDelta = (latN - latS) * .25;
  var lngDelta = (lngE - lngW) * .30;

  polyPoints = [];
  
  polyPoints[0] = new google.maps.LatLng(latN - latDelta, lngW + lngDelta);
  polyPoints[1] = new google.maps.LatLng(latS + latDelta, lngE - lngDelta);
  
  drawCoordinates();
  }

function addHouse(szLink, szHtml, szLat, szLng)
  {
  moveOK = true; 
  
  if(!ourIcon)
    ourIcon    = new google.maps.MarkerImage('http://www.proagentwebsites.com/images/homemrkr.png', new google.maps.Size(32, 37), new google.maps.Point(0,0), new google.maps.Point(12, 36));
  
  housePoint = new google.maps.LatLng(szLat, szLng);
  
  iconMrk[iconCnt]  = new google.maps.Marker({position: housePoint, map: map, icon: ourIcon, title: iconCnt.toString(10)});
  iconHtml[iconCnt] = szHtml;
  iconLink[iconCnt] = szLink;

  google.maps.event.addListener(iconMrk[iconCnt], "mouseover", function() { ShowThisPopup(this); });
  google.maps.event.addListener(iconMrk[iconCnt], "mouseout",  function() { HideThisPopup(this); });
  google.maps.event.addListener(iconMrk[iconCnt], "click",     function() { ShowThisProperty(this); });
  
  iconCnt++;
  }

function ShowThisPopup(mrk) 
  { 
  var obj = document.getElementById('popup_div'); 
  var htm = document.getElementById('htmlHere'); 
  var idx = mrk.getTitle(); 

  htm.innerHTML = iconHtml[idx]; 
  
  obj.style.top=(yMousePos - 20) + 'px'; 
  
  if(xMousePos > 500) 
    obj.style.left=(xMousePos - 300) + 'px'; 
  else 
    obj.style.left=(xMousePos + 25) + 'px'; 
    
  obj.style.visibility = 'visible'; 
  } 

function ShowThisProperty(mrk) 
  { 
  var idx = mrk.getTitle(); 
  window.location = iconLink[idx]; 
  } 

function HideThisPopup(mrk) 
  { 
  var obj = document.getElementById('popup_div'); 
  obj.style.visibility = 'hidden'; 
  } 

function moveEnd()
  {
  if(moveOK)
    {
    if(polyPoints.length == 2)
      {
      moveOK = false;
      recenter = new google.maps.LatLngBounds(polyPoints[0], polyPoints[1]);
      map.fitBounds(recenter);
      moveOK = true;
      }
    else
      {
      ClearOverlays();
      UpdateCount();
      }
    }
  }

function dragStart()
  {
  moveOK = false;
  }

function dragEnd()
  {
  moveOK = true;
  moveEnd();
  }
     
function redraw0Start()
  {
  moveOK = false;
  }

function redraw0End()
  {
  moveOK = true;
  polyPoints[0] = mrkNW.getPosition();
  drawCoordinates();
  moveEnd();
  }

function redraw1Start()
  {
  moveOK = false;
  }

function redraw1End()
  {
  moveOK = true;
  polyPoints[1] = mrkSE.getPosition();
  drawCoordinates();
  moveEnd();
  }
  
function LoadCords()
  {
  if(polyPoints.length == 2)
    {
    if(polyPoints[0].lat() < polyPoints[1].lat())
      {
      document.home_search.cord_n.value = polyPoints[1].lat();
      document.home_search.cord_s.value = polyPoints[0].lat();
      }
    else
      {
      document.home_search.cord_n.value = polyPoints[0].lat();
      document.home_search.cord_s.value = polyPoints[1].lat();
      }
    
    if(polyPoints[0].lng() > polyPoints[1].lng())
      {
      document.home_search.cord_w.value = polyPoints[1].lng();
      document.home_search.cord_e.value = polyPoints[0].lng();
      }
    else
      {
      document.home_search.cord_w.value = polyPoints[0].lng();
      document.home_search.cord_e.value = polyPoints[1].lng();
      }
     
 	document.home_search.zoom_lvl.value = map.getZoom();
	}
  else
    {
    bounds = map.getBounds();
   
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();
    
    document.home_search.cord_n.value   = ne.lat();
    document.home_search.cord_w.value   = sw.lng();
    document.home_search.cord_s.value   = sw.lat();
    document.home_search.cord_e.value   = ne.lng();
	document.home_search.zoom_lvl.value = 9999 - map.getZoom();
    }
	
  return(true);
  }

