﻿var map = null;
var index = 0;
var results = null;
var highlight_fillcolor = new VEColor(0,0,255,0.5);
var shape_fillcolor = null;
var ZoomLevel = 0;
//Layers
var layerVillages = [];
var layerNeighborhood = null;

var idxSubdivisions =0;
var COL_WOODLANDS_VILLAGES = "1CF1C0FD8D61ECF7!272";
var COL_SUBDIVIONS = "1CF1C0FD8D61ECF7!186";
var COL_WOODLANDS_HOODS = "1CF1C0FD8D61ECF7!284";
var COL_AUGUSTA_PINES = "1CF1C0FD8D61ECF7!420"

var CONS_ZOOM_NEIGHBORHOOD = 13;
var CONS_ZOOM_STREET = 18;



VEShapeLayer.prototype.icon = null;
/*
var mapxmlhttp=false;

 function InitMapXmlHttp() 
 {
    // Attempt to initialize xmlhttp object
    try
    {
       mapxmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
       // Try to use different activex object
       try
       {
          mapxmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
       }
       catch (E)
       {
          mapxmlhttp = false;
       }
    }
    // If not initialized, create XMLHttpRequest object
    if (!mapxmlhttp && typeof XMLHttpRequest != 'undefined')
    {
       mapxmlhttp = new XMLHttpRequest();
    }

    // Define function call for when Request obj state has changed
    mapxmlhttp.onreadystatechange = MapHandler;
 }

 function MapHandler()
 {
    if (mapxmlhttp.readyState == 4)
    {
       //alert("Got the response text:\n" + xmlhttp.responseText);
       
       eval(mapxmlhttp.responseText);
    }
 }

*/
function GetMap() {
  SetupMap();
  SetupMapEvents();
  AddSubdivisionLayer(VEDataType.VECollection, COL_WOODLANDS_VILLAGES);
  AddSubdivisionLayer(VEDataType.VECollection, COL_AUGUSTA_PINES);
  AddNeighborhoodLayer(VEDataType.VECollection, COL_WOODLANDS_HOODS, false);
  map.SetZoomLevel(CONS_ZOOM_NEIGHBORHOOD);
}

function SetupMap()      
    {         
        try         
        { 
        
        map = new VEMap('myMap');     
        //map.SetDashboardSize(VEDashboardSize.Small);  
        map.LoadMap();      
        //map.SetMapStyle(VEMapStyle.Birdseye);
        var latlon = new VELatLong(30.18,-95.529);
        
        map.SetCenterAndZoom(latlon,9);
        }         
        
        catch(e)         {            
        alert(e.message);         }      
    }
function SetupMapEvents(){
    try{
        map.AttachEvent("onclick",MouseClick);
        //map.AttachEvent("onendpan", EndPan);
        map.AttachEvent("onmouseover",MouseOver);
        map.AttachEvent("onmouseout",MouseOut);
        map.AttachEvent("onendzoom", EndZoom);
    }
    catch(e)
    {
        alert(e.message);
        }
}

function AddSubdivisionLayer(type, location) 
{
    
    layerVillages[idxSubdivisions] = new VEShapeLayer();
    
       
       var veLayerSpec = new VEShapeSourceSpecification(type, location, layerVillages[idxSubdivisions]);
       idxSubdivisions++;
       map.ImportShapeLayerData(veLayerSpec, onFeedLoad, false);
   }
   
   function onFeedLoad(feed) {
      // alert('RSS or Collection loaded. There are ' + feed.GetShapeCount() +
        //       ' items in this list.');
        
               var numShapes = feed.GetShapeCount();
               var s, n, icon;
               
               for(var i = 0; i < numShapes; ++i)
               {
                  s = feed.GetShapeByIndex(i);
                  if (s.GetType==VEShapeType.Pushpin)
                  {
                      n = i + 1;
                       s.SetCustomIcon("images/yellow_bubble_b.png");
                      
                  }
                  else
                  {
                    s.HideIcon();
                    }
               }
            
        
   }

function AddNeighborhoodLayer(type, location, show) 
{
       layerNeighborhood = new VEShapeLayer();
       if (! show)layerNeighborhood.Hide();
        
       var veLayerSpec = new VEShapeSourceSpecification(type, location, layerNeighborhood);
       map.ImportShapeLayerData(veLayerSpec, onHoodLoad, false);
   }
   
   function onHoodLoad(feed) {
      // alert('RSS or Collection loaded. There are ' + feed.GetShapeCount() +
        //       ' items in this list.');
        
               var numShapes = feed.GetShapeCount();
               var s, n, icon;
               
               for(var i = 0; i < numShapes; ++i)
               {
                  s = feed.GetShapeByIndex(i);
                  
                  n = i + 1;
                  //icon = "<div class='label_hood'>"+s.GetTitle() + "</div> ";
                  
                  //s.SetCustomIcon(icon);
                  s.SetCustomIcon("images/icons/single_green_small.png");
                   
               }
            
 }
   
  
function MouseClick(e) {
    if (!e.leftMouseButton) {
        //RemovePopupMenu();
        return;
    }
    
    if(e.elementID != null)
    {
    
        shape = map.GetShapeByID(e.elementID);
        map.ShowInfoBox(shape);
    
    }

    
}
/*
function RemovePopupMenu() {
    document.getElementById("popupmenu").style.display = 'none';
}
*/
function MouseOver(e)
{
    if(e.elementID != null)
            {
            shape = map.GetShapeByID(e.elementID);
            //Get the current Description
            var olddesc = shape.GetDescription();
            var oldurl = shape.GetMoreInfoURL();
            var shapetype = shape.GetType();
            
            //Highlight the polygon
            shape_fillcolor = shape.GetFillColor();
            //alert(shape_fillcolor);
            shape.SetFillColor(highlight_fillcolor);
            //alert(shape.GetFillColor());
            if (olddesc.search("txrexdesc") == -1)
            {
                var newdesc = "<div class='mnu_hover'>"+olddesc+"<input id='txrexdesc' type='hidden' />";
                
                
                
                if (shapetype==VEShapeType.Polygon)
                {
                    //var newurl = oldurl.slice(oldurl.indexOf("http://")+7,oldurl.length);
                    
                    //newdesc+="<ul><li><a href='javascript:ListProperties("+newurl+"&class=7)+)';>List Rentals</a></li>";
                   newdesc+="<ul><li><a href='mlssearch.aspx?url="+oldurl+"&class=7'>List Rentals</a></li>";
                   newdesc+="<li><a href='mlssearch.aspx?url="+oldurl+"&class=1';>List Homes For Sale</a></li>";
                   newdesc+="<li><a href='mlssearch.aspx?url="+oldurl+"&class=2';>List Town Homes and Condos For Sale</a></li>";
                   newdesc+="<li><a href='mlssearch.aspx?url="+oldurl+"&class=3';>List Land For Sale</a></li>";
                   newdesc+="<li><a href='mlssearch.aspx?url="+oldurl+"';>Show All Listings</a></li>";
                   
                    newdesc+="</ul>";
 
                    
                   
                    
                     //newdesc+="<li>List Rentals</li>";
                    //alert("its a polygon");
                    //newdesc+="<br/> <a href='"+oldurl+"'>Find Properties</a>";
                    //newdesc+="<br/><a href='"+oldurl+"&FORCL=1'>Find Foreclosures</a>";
                }
                newdesc+="<br/>Zoom To: <a href='javascript:ZoomToNeighborhood("+shape.GetIconAnchor()+" );'>Neighborhoods</a> | <a href='javascript:ZoomToStreet("+shape.GetIconAnchor()+" );'>Street</a>";
                newdesc+="<br/>Zoom: <a href='javascript:map.ZoomIn()'>In</a> | <a href='javascript:map.ZoomOut()'>Out</a></div>"; 
                shape.SetDescription(newdesc);
            }
            
            }
            else
            {
               //alert("No shape information.");
            }
         


}

function MouseOut(e)
{
    if(e.elementID != null)
    {
        shape = map.GetShapeByID(e.elementID);
        //Un-Highlight the polygon
        
        shape.SetFillColor(shape_fillcolor);
    }
}

function EndZoom(e)
{
    //document.location.search+="&Zoom="+e.zoomLevel;
    
    //check the zoom level
    if (e.zoomLevel < 11)
    {
        //turn off pins for subdivisions
        if (layerVillages!=null)
        {
            for (var i = 0; i < idxSubdivisions; ++i)
            {
                layerVillages[i].Hide();
            }
        }    
    }
    else
    {
        //turn on layers
        if (layerVillages!=null)
        {
            for (var i = 0; i < idxSubdivisions; ++i)
            {
                layerVillages[i].Show();
            }
        }    
    }
    
    if (e.zoomLevel < CONS_ZOOM_NEIGHBORHOOD)
    {
        //turn off pins for subdivisions
        if (layerNeighborhood!=null)
        {
            layerNeighborhood.Hide();
        }    
    }
    else
    {
        //turn on layers
        if (layerNeighborhood!=null)
        {
            layerNeighborhood.Show();
        }    
    }
    
}
function ZoomToNeighborhood(lat,lon,alt)
{
    var x = new VELatLong(lat, lon, alt);
    map.SetCenterAndZoom(x,CONS_ZOOM_NEIGHBORHOOD);
    
}

function ZoomToStreet(lat,lon,alt)
{
    var x = new VELatLong(lat, lon, alt);
    map.SetCenterAndZoom(x,CONS_ZOOM_STREET);
    
}