//
// File : ruraldev-rtwgmap-filtering.js
//
// Description : Javascript functions for filtering components on the Rural Development Map
//               implementation. Overrides several functions found in the 
//               RTWGMap's javascript lib
//
       //`
    // Callback for applyFilter()
     //
    // 
    // Loads the rendered markers that match the filter
    // into the "sideListing' element
    //
    // See also 
    //   renderMarkerForSideListing(marker)
    //   applySelectedFilter()
    //
    var returnFilteredMarkers = function(data){    	          		        
        var htmlList = '<div class="smallTextCenter">';   
         
		var label = getSideListingsLabel();        
        if(document.getElementById('sideListingHeader')) {	        
    	    document.getElementById('sideListingHeader').innerHTML = label;
        }

        htmlList += getPrintUrl(label) ;
       
 		printableMarkers = data;
        if(data != null)
        {
            htmlList = htmlList + '<br/>';
            for(var i = 0; i < data.length; i++)
            {
                htmlList = htmlList + renderMarkerForSideListing ( data[i] );                
            }
            
            htmlList = htmlList + '</div>';
            
            document.getElementById("sideListing").innerHTML = htmlList;
        }
    }
    
    
        //
    // shows only the Markers that match a filter
    //
    // Uses the function 'matchesAllSelectedFilters(markerObj) to determine
    // if the marker should be visible.
    //
    // Implementors should override matchesAllSelectedFilters or carefully
    // maintain the list of selected filters in the selectedFilters[] array
    //
    function applySelectedFilters(){        	    		
        var filteredMarkers = [];
        var gmarker = 0;
        
        if(directions != null)
           directions.clear();        
        
        //hide all the markers
		for(m in gmarkers)  {
       		gmarkers[m].hide();
		}	
			
        var j=0;
		// 
		// show or hide each marker as required
		//
        for(var m = 0; m < markerObjs.length; m++)
        {
            //
            // Filter by selected nodes
            //
            if( matchesAllSelectedFilters(markerObjs[m]) ) {
             
              
               
               var info = markerObjs[m].infoHtml;
               info +=  "<p/>";        
               info += "<span class=\"smallTextCenter\"><a href=\"javascript:zoomIn('" + markerObjs[m].id + "');\">Zoom In</a>" + "</span>&nbsp;&nbsp;";

               show( markerObjs[m] );
               
                // (re)set the marker's color to the current filter if specified
               if(selectedFilters && selectedFilters[0] && selectedFilters[0].color && gmarkers[markerObjs[m].id]) {               
               		gmarkers[markerObjs[m].id].setImage('/app68/listings/icons/maps/ruraldev/' + selectedFilters[0].color + '.png');               	 
               } else {
               		gmarkers[markerObjs[m].id].setImage('/app68/listings/icons/maps/ruraldev/' + markerObjs[m].color + '.png');               	                
               }
               
				// add it to the resultset for display on the sidelisting
               filteredMarkers[j++] = markerObjs[m];
            } 
        }
		
	    var filter = {label:getSideListingsLabel()};
        globalRegion = filter;
		// display on the sidelisting
        returnFilteredMarkers(filteredMarkers);
       
        //
        //update the msg string
        //      
        var noun = markerInfo.markerTypeLabel;
        updateFilterResultMsg(filteredMarkers, noun);
    }
