﻿var gmap = null;
var findCatTask = null;
var catParams = null;
var mapExt = null;
//var gOverlays = [];
var gParkOv = [];
var gTrailLengthOv = [];
var gTrailDiffOv = [];

function queryParkCat(obj)
{
    clearMap();
    if(gmap.getZoom()>13)
    {
        gmap.setCenter(new GLatLng(33.887, -117.925),13);
    }
    //start Park category query
    qParkTask = new esri.arcgis.gmaps.QueryTask("/arcgis/rest/services/Parks/MapServer/1");	
    var qPark = new esri.arcgis.gmaps.Query();
    var parkBounds = gmap.getBounds();
    qPark.queryGeometry = parkBounds;
    qPark.outFields = ["NAME","ADDRESS","URL","IMAGE","TYPE","ACTIVITY_B","ACTIVITY_S","BARBECUE","BASEBALL","BASKETBALL","BENCHES","BLEACHER_S","FIRE_RINGS","GAZEBO","GYM","HANDICAP","HORSESHOE","PAR_COURSE","PARKING","PICNIC_TAB","PLAYGROUND","RACQUETBAL","TRAIL","RESTROOM","SEATING","SHUFFLEBOA","SKATE_PARK","SNACK_BAR","SOCCER","SOFTBALL","SWIMMING","TENNIS","VOLLEYBALL","WADING_POO","ACRE"];
	
	var count=0;
    for(var i=0; i<obj.length; i++)
    {
        if(obj.options[i].selected==true)
        {
            if(count==0)
            {
                qPark.where = obj.options[i].value + " = 'Y'";
            }
            else
            {
                qPark.where += " AND " + obj.options[i].value + " = 'Y'";
            }
            count++;
        }
    }
	mapExt = new esri.arcgis.gmaps.MapExtension(gmap);//added
	//mapExt.removeFromMap(gOverlays);
	mapExt.removeFromMap(gParkOv);
    
    qParkTask.execute(qPark, false, function(featureSet, error)
    {
        if (error)
        {
            alert("My Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
            return;
        }
        
        var features = featureSet.features, geometry, attributes,feat;

        for(var i=0; i<features.length; i++)
        {
            feat = features[i];//added
            geometry = features[i].geometry;
            attributes = features[i].attributes;
            var gOverlay = mapExt.addToMap(feat);//added
            //gOverlays[i] = new Array();
            gParkOv[i] = new Array();//added
            
            for(var j=0; j<geometry.length; j++)
            {
                var geom = geometry[j];           
                //geom.setFillStyle({color: "#006633",opacity: 0.5});
                //geom.setStrokeStyle({color: "#006633",weight: 2,opacity: 0.6});
                //gOverlays[i][j] = gOverlay[0][j];                                
                gParkOv[i][j] = gOverlay[0][j];//added                                
                GEvent.addListener(geom, "mouseover", GEvent.callbackArgs(geom, onMouseOverParkFunc, attributes));
                GEvent.addListener(geom, "click", GEvent.callbackArgs(geom, onMouseOverParkFunc, attributes));                
            }    
        }
    }); //end of Park category    
}

function searchTrail(objDifficulty, objLength)
{   
    clearMap();
    fncDisplayLoading();
    if(gmap.getZoom()>13)
    {
        gmap.setCenter(new GLatLng(33.887, -117.925),13);
    }
    //start Trail query       
    qTrailTask = new esri.arcgis.gmaps.QueryTask("/arcgis/rest/services/Parks/MapServer/0");	
    var qTrail = new esri.arcgis.gmaps.Query();
    var trailBounds = gmap.getBounds();
    qTrail.queryGeometry = trailBounds;
    qTrail.outFields = ["NAME","URL","IMAGE","DIFF_LVL","TYPE","LENGTH"];
    
    GEvent.addListener(qTrailTask, "executecomplete", function() { fncCloseLoading(); });
    
    var qLength, qDiff, testString, blnSearch;
    blnSearch = false;
      
    if(objLength.selectedIndex > 0 || objDifficulty.selectedIndex > 0)
    {
        if(objLength.selectedIndex > 0)
        {
    	    for(var i=0; i<objLength.length; i++)
            {
                if(objLength.options[i].selected==true)
                {            
                    qLength = objLength.options[i].value;
                }
            }
        }
        if(objDifficulty.selectedIndex > 0)
        {
            for(var i=0; i<objDifficulty.length; i++)
            {
                if(objDifficulty.options[i].selected==true)
                {            
                    qDiff = objDifficulty.options[i].value;
                }
            }
        }
    	
    	testString = "";
    	if(objLength.selectedIndex > 0)
    	{
        	testString += qLength;
        	if(objLength.selectedIndex > 0 && objDifficulty.selectedIndex > 0)
        	{
        	    testString += " AND ";
        	}
        }
        if(objDifficulty.selectedIndex > 0)
        {
            testString += qDiff;
        }
        blnSearch = true;
    }
    else if(objLength.selectedIndex == 0 && objDifficulty.selectedIndex == 0)
    {
        testString = "";
        blnSearch = true;
    }
    
    if(blnSearch)
    {
    	qTrail.where = testString;
        
	    mapExt = new esri.arcgis.gmaps.MapExtension(gmap);//added
	    //mapExt.removeFromMap(gOverlays);    
    	
//        if(searchType=="Length")
//        {
            mapExt.removeFromMap(gTrailLengthOv);
            mapExt.removeFromMap(gTrailDiffOv);
//        }
//        else if(searchType=="Diff")
//        {
//            mapExt.removeFromMap(gTrailDiffOv);
//        }
        
        qTrailTask.execute(qTrail, false, function(featureSet, error)
        {
            if (error)
            {
                alert("My Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
                return;
            }
            var features = featureSet.features, geometry, attributes,feat;
            var errortask;
                        
            if(features.length > 0)
            {                
                for(var i=0; i<features.length; i++)
                {
                    feat = features[i];//added
                    geometry = features[i].geometry;
                    attributes = features[i].attributes;
                                                           
                    var gOverlay = mapExt.addToMap(feat);//added
                    //gOverlays[i] = new Array();//added
                    gTrailLengthOv[i] = new Array();
                    
                    for(var j=0; j<geometry.length; j++)
                    {
                        var geom = geometry[j];
                        //geom.setStrokeStyle({color: "#ff0000",weight: 5,opacity: 0.5});
                        //gOverlays[i][j] = gOverlay[0][j];//added
                        gTrailLengthOv[i][j] = gOverlay[0][j];//added
                        GEvent.addListener(geom, "click", GEvent.callbackArgs(geom, onClickTrail, attributes));
                        GEvent.addListener(geom, "mouseout", onMouseOutTrailFunc);
                    }                    
                }               
            }            
            else
            {
                displayFloatingDiv();
            }          
        }); //end qTrailTask
    }//end if (objLength.selectedIndex)
}

function onClickTrail(attributes)
{
    var poly = this;
    //polygon.setFillStyle({color: "#FF6666"},{weight: 4},{opacity: 0.4}); //color, weight, opacity(0-1)
    //polygon.setStrokeStyle({color: "#FF6666"});
    var html = fncCreateTrailsBubble(attributes["IMAGE"], attributes["URL"], attributes["NAME"], attributes["TYPE"], attributes["DIFF_LVL"], attributes["LENGTH"]); 
    //gmap.openInfoWindowHtml(poly.getBounds().getCenter(),html);
    gmap.openInfoWindowHtml(getPolylineCenter(poly),html);
}

function clearMap()
{
    if(mapExt!=null)
    {
        //mapExt.removeFromMap(gOverlays);
        mapExt.removeFromMap(gParkOv);
        mapExt.removeFromMap(gTrailLengthOv);
        mapExt.removeFromMap(gTrailDiffOv);
    }
    gmap.closeInfoWindow();
}

//function queryTrail(obj,searchType)
//{
//    if(obj.selectedIndex > 0)
//    {
//    if(gmap.getZoom()>13)
//    {
//        gmap.setCenter(new GLatLng(33.887, -117.925),13);
//    }
//    //start Trail query        
//    qTrailTask = new esri.arcgis.gmaps.QueryTask("/arcgis/rest/services/Parks/MapServer/0");	
//    var qTrail = new esri.arcgis.gmaps.Query();
//    var trailBounds = gmap.getBounds();
//    qTrail.queryGeometry = trailBounds;
//    qTrail.outFields = ["NAME","URL","DIFF_LVL","TYPE","LENGTH"];
//	
//    for(var i=0; i<obj.length; i++)
//    {
//        if(obj.options[i].selected==true)
//        {            
//            qTrail.where = obj.options[i].value;
//        }
//    }
//	mapExt = new esri.arcgis.gmaps.MapExtension(gmap);//added
//	//mapExt.removeFromMap(gOverlays);    
//	
//    if(searchType=="Length")
//    {
//        mapExt.removeFromMap(gTrailLengthOv);
//    }
//    else if(searchType=="Diff")
//    {
//        mapExt.removeFromMap(gTrailDiffOv);
//    }
//    
//    qTrailTask.execute(qTrail, false, function(featureSet, error)
//    {
//        if (error)
//        {
//            alert("My Error " + error.code + ": " + (error.message || (error.details && error.details.join(" ")) || "Unknown error" ));
//            return;
//        }
//        
//        var features = featureSet.features, geometry, attributes,feat;
//        
//        if(searchType=="Length")
//        {
//            for(var i=0; i<features.length; i++)
//            {
//                feat = features[i];//added
//                geometry = features[i].geometry;
//                attributes = features[i].attributes;
//                var gOverlay = mapExt.addToMap(feat);//added
//                //gOverlays[i] = new Array();//added
//                gTrailLengthOv[i] = new Array();
//                
//                for(var j=0; j<geometry.length; j++)
//                {
//                    var geom = geometry[j];
//                    geom.setStrokeStyle({color: "#ff0000",weight: 5,opacity: 0.5});
//                    //gOverlays[i][j] = gOverlay[0][j];//added
//                    gTrailLengthOv[i][j] = gOverlay[0][j];//added
//                    GEvent.addListener(geom, "click", GEvent.callbackArgs(geom, onClickTrail, attributes));
//                    GEvent.addListener(geom, "mouseout", onMouseOutTrailFunc);        
//                }
//            }
//        }//end if searchType=="Length"
//        else if(searchType=="Diff")
//        {
//            for(var i=0; i<features.length; i++)
//            {
//                feat = features[i];//added
//                geometry = features[i].geometry;
//                attributes = features[i].attributes;
//                var gOverlay = mapExt.addToMap(feat);//added
//                //gOverlays[i] = new Array();//added
//                gTrailDiffOv[i] = new Array();
//                
//                for(var j=0; j<geometry.length; j++)
//                {
//                    var geom = geometry[j];
//                    geom.setStrokeStyle({color: "#0033ff",weight: 5,opacity: 0.6});
//                    //gOverlays[i][j] = gOverlay[0][j];//added
//                    gTrailDiffOv[i][j] = gOverlay[0][j];//added
//                    GEvent.addListener(geom, "click", GEvent.callbackArgs(geom, onClickTrail, attributes));
//                    GEvent.addListener(geom, "mouseout", onMouseOutTrailFunc);        
//                }
//            }
//        }//end if searchType=="Diff"
//    }); //end qTrailTask
//    }//end if(obj.selectedIndex > 0)
//}//end qTrail