﻿//This function switches the layers that are on and shows the boundaries for the different grade levels.
//Layer 0 is the school site point layer and should always be visible.

function showBounds(layer){

    gmap.clearOverlays();
    //create custom dynamic layer
    //esri.arcgis.gmaps.DynamicMapServiceLayer(url,esri.arcgis.gmaps.ImageParameters?,opacity?,callback?);
    dynamicMap = new esri.arcgis.gmaps.DynamicMapServiceLayer("http://gis.dpsk12.org/ArcGIS/rest/services/Boundaries2009/MapServer", null, 0.5, dynmapcallback);
    var layerids = [layer, "0"]
    dynamicMap.setVisibleLayers(layerids);
    showAllSchools();
}


// ---------------This function along with callback below puts bubbles at all the school locations ----------      

      function showAllSchools(){
          query.returnGeometry = true;
          //var bounds = gmap.getBounds();
          //query.queryGeometry = bounds;
        query.outFields="*";        
        query.where = "SchoolPoints0910.SCHOOL_NUM < 10000";  
        qtask.execute(query, false, mycallback);                     
      }
      
// ----------END SHOW ALL SCHOOLS FUNCTION ---------------------------



      function mycallback(fset) {
        // add the feature set to google map without any style
        //gOverlays = mapExtension.addToMap(fset);
        
        var findResults = fset.features, findResult, geometry, attributes, geom, i, j, name, foundField;
        var uniqueId = 0; 
        var table = "<table>";
        listOfOverlays = [];
        
        //fset is of type esri.arcgis.gmaps.FeatureSet() returned by the QueryTask execute method
        //The following alphabetizes the array
        fset.features.sort(function(a,b){
            var aString = a.attributes.schoolname;
            var bString = b.attributes.schoolname;
            
            if (aString < bString) return -1;
            else if (aString > bString) return 1;
            else return 0;
        });
  
      
        for (i=0; i<findResults.length; i++) {  //process each result in the response
            findResult = findResults[i];
            var markerOptions
            geometry = findResult.geometry;
            attributes = findResult.attributes;
            var latlng = geometry[0].getPoint();     
            var lat = latlng.lat();
            var lng = latlng.lng();
            if (findResult.attributes.schoolname != ""){
                table = table + "<tr><td>"
                + "<a href='#' onclick='showInfoWindowPoint(" + lat + "," + lng + ", " + uniqueId + ")'>";

            //                + "<a href='#' onclick='showInfoWindowPoint(" + uniqueId + ")'>" 
            
                table = table + findResult.attributes.schoolname + " ( " + findResult.attributes.gradelevel + ")</a></td></tr>";
            }
            
//                listOfOverlays[uniqueId++] = { "overlay": geom, "func": func };                

 
         
            for (j=0; j<geometry.length; j++) { //Feature.geometry is an array of GPolygon/GMarker
            //Create different colored markers for different types of schools:
            
            switch(attributes.schooltype)
            {
            case 1:     //elementary
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#0000FF"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var blueIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var BlueMarker = new GMarker(point,{icon:blueIcon, title:attributes.schoolname});
                GEvent.addListener(BlueMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(BlueMarker);
                break; 
            case 2:         //k-8
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#0000FF"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var blueIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var BlueMarker = new GMarker(point,{icon:blueIcon, title:attributes.schoolname});
                GEvent.addListener(BlueMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(BlueMarker);
                break;                 
            case 3:         //Middle
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#00FF00"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var greenIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var greenMarker = new GMarker(point,{icon:greenIcon, title:attributes.schoolname});
                GEvent.addListener(greenMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(greenMarker);                
                break; 
            case 4:         //High
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#FF0000"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var redIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var redMarker = new GMarker(point,{icon:redIcon, title:attributes.schoolname});
                GEvent.addListener(redMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(redMarker);
                break; 
            case 5:   //charter - 
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#FFFF00"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var yellowIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var yellowMarker = new GMarker(point,{icon:yellowIcon, title:attributes.schoolname});
                GEvent.addListener(yellowMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(yellowMarker);
                break;
            case "":
                break;              
            default:   //other/alternative
                var iconOptions = {}; 
                iconOptions.width = 20; 
                iconOptions.height = 20; 
                iconOptions.primaryColor = "#FF00FF"; 
                iconOptions.cornerColor = "#FFFFFF"; 
                iconOptions.strokeColor = "#000000";                 
                var purpleIcon = MapIconMaker.createMarkerIcon(iconOptions);
       
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                var point = geometry[j].getPoint();
                var purpleMarker = new GMarker(point,{icon:purpleIcon, title:attributes.schoolname});
                GEvent.addListener(purpleMarker, "click", func);

                //add overlay to map
                gmap.addOverlay(purpleMarker);
                break;                                 
            }                
                //maintain a list of overlays and their associated click listener function
                //used later when hyperlink is clicked
            
                listOfOverlays[uniqueId] = { "overlay": geom, "func": func };
                
            } 
            uniqueId++;                    
       }   
      //show the table of results
      table = table + "</table>";
      document.getElementById('results').innerHTML = table;  

      }
