﻿// -----------------------------QUERY ---------------------------------------      
      
      function executeQuery() {
        // clear map overlays and event listeners using MapExtension removeFromMap
        mapExtension.removeFromMap(gOverlays);
        gmap.setCenter(new GLatLng(39.72, -104.91), 11); 
        gmap.clearOverlays();    
        //infoWindowOptionsTabs.close();        
        var querynum = 0;
        listOfOverlays = [];
        //create variables... so it works in firefox.  
        var ChkELA = document.getElementById("ChkELA");
        var ChkFull3 = document.getElementById("ChkFull3");
        var ChkFull4 = document.getElementById("ChkFull4");  
        var ChkFullK = document.getElementById("ChkFullK");
        var ChkHalf3 = document.getElementById("ChkHalf3");
        var ChkHalf4 = document.getElementById("ChkHalf4");
        var ChkHalfK = document.getElementById("ChkHalfK");
        var ChkMontessori = document.getElementById("ChkMontessori");
        var selQual = document.getElementById("selQual");
            
        
        if (!ChkELA.checked&&!ChkFull3.checked&&!ChkFull4.checked&&!ChkFullK.checked&&!ChkHalf3.checked&&!ChkHalf4.checked&&!ChkHalfK.checked&&!ChkMontessori.checked){
            alert("Please select options to query on");
            return;
        }
          
        squery = "";
        // set query parameters  Building query based on check boxes
        if (ChkFullK.checked){
            squery = "FullDay = 'yes'";
            querynum = 1;
        }
        if (ChkHalfK.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "HalfDay = 'yes'";
            querynum = querynum + 1;
        }
        if (ChkFull4.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "FourYrFullDay = 'yes'";
            querynum = querynum + 1;       
        }
        if (ChkHalf4.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "FourYrHalfDay = 'yes'";
            querynum = querynum + 1;        
        }
        if (ChkFull3.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "ThreeYrFullDay = 'yes'";
            querynum = querynum + 1;        
        }
        if (ChkHalf3.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "ThreeYrHalfDay = 'yes'";
            querynum = querynum + 1;        
        }
        if (ChkMontessori.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            squery = squery + "Montessori = 'yes'";
            querynum = querynum + 1;                
        }
        //ECE Department does not want people to be able to search on Qualistar rating now.
//        if (selQual.value != 0) {
//            if (querynum != 0){
//                squery = squery + " and ";
//            }
//            squery = squery + "QualistarRating = ";
//            squery = squery + selQual.value;
//            querynum = querynum + 1;      
//        }
        if (ChkELA.checked) {
            if (querynum != 0){
                squery = squery + " and ";
            }
            if (ChkFullK.checked || ChkHalfK.checked) {
                squery = squery + "Spanish = 'yes'";
                var k = "yes";
            }                     
            if (ChkFull3.checked || ChkFull4.checked || ChkHalf3.checked || ChkHalf4.checked ) {
                if (k == "yes") {
                    squery = squery + " and ";
                }               
                squery = squery + "SpanishTwo = 'yes'";
                var p = "yes";
            }
            if (k != "yes" && p != "yes"){
                squery = squery + "Spanish = 'yes' and SpanishTwo = 'yes'";
            }
        }

        
        //List here the Fields to have returned
        query.outFields=["School","website","Phone","Street","City","State","ZipCode","Principal","Montessori","HalfDay","FullDay","Spanish","ThreeYrHalfDay","ThreeYrFullDay","FourYrHalfDay","FourYrFullDay","SpanishTwo","QualistarRating"];
        query.returnGeometry = true;
        query.where = squery;
        // execute query task
        qtask.execute(query, false, mycallback);
 
      }

      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 top = "<h3>Schools matching search:</h3>";   
        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.School;
            var bString = b.attributes.School;
            
            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];
            geometry = findResult.geometry;
            attributes = findResult.attributes;
            latlng = findResult.latlng;            
            table = table + "<tr><td>"
                + "<a href='#' onclick='showInfoWindowPoint(" + uniqueId + ")'>" 
                + findResult.attributes.School + "</a></td></tr>";
//                listOfOverlays[uniqueId++] = { "overlay": geom, "func": func };                

 
         
            for (j=0; j<geometry.length; j++) { //Feature.geometry is an array of GPolygon/GMarker
                geom = geometry[j];
                          
                //setup the click event listener for overlay
                var func = getClickFunc(attributes, findResult.layerId, name, foundField);
                GEvent.addListener(geom, "click", func);
            
                //add overlay to map
                gmap.addOverlay(geom);
            
                //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('topresults').innerHTML = top;
      document.getElementById('results').innerHTML = table;  
      var queryinfocontent = "<div style='height:130px; width:310px'><b>"
                  + findResult.attributes.School + "</b><br/>"
                  + findResult.attributes.Street + "<br/>"
                  + findResult.attributes.City + ", "
                  + findResult.attributes.State + "&nbsp;&nbsp;"
                  + findResult.attributes.ZipCode + "<br />"
                  + findResult.attributes.Phone + "<br />"
                  + "Principal: "
                  + findResult.attributes.Principal + "<br />"
                  + "<a href='"
                  + findResult.attributes.website + "'>School Website</a><br />"
                  + "Montessori Program: "
                  + findResult.attributes.Montessori + "<br />";

      var queryececontent = "<b>"
                  + findResult.attributes.School + "</b><br/>"
                  + "Full-Day Preschool (ECE): "
                  + findResult.attributes.FourYrFullDay + "<br />"                  
                  + "Half-Day Preschool (ECE): "
                  + findResult.attributes.FourYrHalfDay + "<br />"                  
                  + "Full-Day Preschool (ECE) for 3 year olds: "
                  + findResult.attributes.ThreeYrFullDay + "<br />"
                  + "Half-Day Preschool (ECE) for 3 year olds: "
                  + findResult.attributes.ThreeYrHalfDay + "<br />"
                  + "Preschool (ECE) Classrooms Taught in Spanish: "
                  + findResult.attributes.SpanishTwo + "<br />" 
                  + "Qualistar Rating: " 
                  + findResult.attributes.QualistarRating + "<br />";
      var querykcontent = "<b>"
                  + findResult.attributes.School + "</b><br/>"
                  + "Full-Day Kindergarten: "
                  + findResult.attributes.FullDay + "<br />"                  
                  + "Half-Day Kindergarten: "
                  + findResult.attributes.HalfDay + "<br />"
                  + "Kindergarten Programs Taught in Spanish: "
                  + findResult.attributes.Spanish + "<br />" ;               

            var infoWindowOptionsTabs = {
            contentTabs:[{label:"School", content:queryinfocontent},
                  {label:"ECE", content:queryececontent},
                  {label:"K", content:querykcontent}
                  ],
                selectedTab:0
              };     
              
              var overlayOptions = {
                strokeColor: "#FF0000", strokeWeight: 3, strokeOpacity: 0.55,
                fillColor: "#000066", fillOpacity: 0.4
              };                   
            //var gOverlay = mapext.addToMap(findResult, overlayOptions, infoWindowOptionsTabs);      
       //return table;
      }

      
//-------------------------------END QUERY-----------------------------------