﻿// JScript File
var searchResultsFilterExtent = null;
var searchResultsFilterTimer;
var searchResultsFilterFetchTimer;
dojo.require("dojox.grid.DataGrid");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dijit.form.DropDownButton");
dojo.require("dijit.form.Button");
dojo.require("dijit.TooltipDialog");
dojo.require("dojox.layout.TableContainer");
dojo.require("dijit.form.TextBox");
dojo.require("dijit.form.CheckBox");
dojo.require("dijit.form.Select");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.form.ComboBox");
dojo.require("dijit.dijit");


function clickResultsFilterTab()
{
    turnOffMapGraphics();
    
    if(expanded=="right" || prevTab=="Details") 
    {
        if(!newSearch)
            theSearchResizeConnect = dojo.connect(jsMap,"onResize",function(){
		        blnResizing = false;
		        dojo.disconnect(theSearchResizeConnect);
		        showResultsFilterPoints();
		        });
		
        restorePanes();
	    RepositionMap();
	    ResizeMap();
        selectRadTab('Map');
    }
    else 
    {
        selectRadTab("Map");
        //disableRadTab("Property");
	    resizeRightPaneControls();
        resizeLeftPaneControls();
        if(!newSearch)
            showResultsFilterPoints();
    }
}

function resizeResultsFilterControl()
{
    var arrSize;
	arrSize = ResizeInPane('paneLeftBody', 'divSearchResultsGrid',		345, 200, 27, 26);
	arrSize = ResizeInPane('paneLeftBody', 'divSearchResultsWideGrid',	700, 200, 28, 0);
	if (m_radgridSearchResultsWide_MTV) ResizeSearchResultsFilterGrid(arrSize,m_radgridSearchResultsWide_MTV);
	
	arrSize = ResizeInPane('paneLeftBody', 'divDojoResults',		345, 200, 27, 26);
}

function ResizeSearchResultsFilterGrid(arrSize,grid)
{
	if (arrSize == null)	return;

	var intWidth  = arrSize[0];

    if (grid == null)
    	var tableGrid = m_radgridSearchResultsWide_MTV.Control;
	else
	    var tableGrid = grid.Control;
	if (tableGrid)
	{
		tableGrid.style.width = (intWidth - 22) + "px";
		tableGrid.width =		(intWidth - 22) + "px";
	}
}
function expandSearchResultsFilter(expand)
{
    swapDIV('divPage_SearchResults', expand);
}
function showResultsFilterPoints()
{
    if (searchResultsFilterExtent)
    {
    turnOnMapGraphics("bufferFilterGraphics");
    turnOnMapGraphics("searchResultsFilterGraphics");
    turnOnMapGraphics("filterPointGraphics");
    jsMap.setExtent(searchResultsFilterExtent,true);
	}
}
function resetsearchResultsFilterMap()
{
    turnOffMapGraphics();
    showResultsFilterPoints();
}

function doSearchFilter(blnDetailed)
{
	// show the "searching..." graphic
	newSearch = true;
    enableRadTab('ResultsFilter');
	selectRadTab('ResultsFilter');
	showResultsFilterSearching();
	// enable the Search Results tab and switch to it
	selectRadTab('Map');
		
    //__doPostBack('bbusSearchForm$buttonSearch', '');
    __doPostBack('bbusSearchForm$updateSearchFormSearch','Event=BeginSearch');
    GACTTrack("Search");
    var hiddenSearchGrouping = document.getElementById('bbusSearchForm_hiddenSearchGrouping').value;
	GACTTrackEvent("Search Results","Map View",hiddenSearchGrouping);
    newSearch = false;
}

function bufferFilterPoint(thegraphic,thedistance,theunit)
{
    //var layer = document.getElementById("bbusMap_mapHighlightURL").value;
    var mapGsvc = document.getElementById("bbusMap_mapGeometryService").value;
    if (mapGsvc == "") mapGsvc = "http://maps.binarybus.net/arcgis/rest/services/Geometry/GeometryServer";
    if(gsvc == null) gsvc = new esri.tasks.GeometryService(mapGsvc);
      
    showLayer("BusyIndicator");
    
      var params = new esri.tasks.BufferParameters();
      params.features = [ thegraphic ];

      params.distances = [ thedistance ];
      
      if(theunit!=null)
      {
        if(theunit=="miles")    params.unit = esri.tasks.BufferParameters.UNIT_STATUTE_MILE;
        if(theunit=="km")    params.unit = esri.tasks.BufferParameters.UNIT_KILOMETER;
      }
      params.bufferSpatialReference = jsMap.spatialReference;
      params.outSpatialReference = jsMap.spatialReference;

    theBufferConnect = dojo.connect(gsvc, "onBufferComplete", showFilterBuffer);
    gsvc.buffer(params);

}

function showFilterBuffer(features,graphics)
{
    var symbol = new esri.symbol.SimpleFillSymbol(
        esri.symbol.SimpleFillSymbol.STYLE_SOLID,
        new esri.symbol.SimpleLineSymbol(
        esri.symbol.SimpleLineSymbol.STYLE_SOLID,
        new dojo.Color([255,0,0,0.65]), 2
        ),
        new dojo.Color([255,0,0,0.05])
        );
        
    var graphicID = 'bufferFilterGraphics';
    var blayer = jsMap.getLayer(graphicID);
    if (blayer != null) jsMap.removeLayer(blayer);
    
    blayer = new esri.layers.GraphicsLayer({'id': 'bufferFilterGraphics'});
    jsMap.addLayer(blayer);
    jsMap.reorderLayer(blayer,jsMap.layerIds.length+jsMap.graphicsLayerIds.length-1);
    
    
    var newExtent = null;
    var bufGraphics = features[0];
    bufGraphics.setSymbol(symbol);
    bufGraphics.attributes = { 'id':'bufferfilter', 'type':'bufferfilter' };
    blayer.add(bufGraphics);
}
function doSearchFilterFromPoint(pointId,radius)
{
    turnOffMapGraphics();
    //Create FilterPointgraphics layer
    var graphicID = "filterPointGraphics";
    var rlayer = jsMap.getLayer(graphicID);
    if (rlayer != null) jsMap.removeLayer(rlayer);
    rlayer = new esri.layers.GraphicsLayer({id: graphicID});
    jsMap.addLayer(rlayer);
    dojo.connect(rlayer, "onClick", clickLocGraphic);
    var startPt = getGraphicById(pointId);
    if(startPt) 
    { 
        var filterPt = new esri.Graphic(startPt.geometry,startPt.symbol,startPt.attributes,startPt.infoTemplate);
        filterPt.attributes.id = 'filterPoint';
        filterPt.attributes.type = 'filterPoint';
        bufferFilterPoint(filterPt,radius,'miles');
        rlayer.add(filterPt);
        rlayer.show();
    }
    
    var dijitStatus = dijit.byId("Status");
    var dijitRegistered = dijit.byId("Registered");
    var dijitLender = dijit.byId("Lender");
    if (dijitLender) dijitLender.reset();
    if (dijitStatus) dijitStatus.setValue('*');
    if (dijitRegistered) dijitRegistered.setValue('*');
    
    
	// show the "searching..." graphic
	newSearch = true;
    enableRadTab('ResultsFilter');
	selectRadTab('ResultsFilter');
	showResultsFilterSearching();
	// enable the Search Results tab and switch to it
	selectRadTab('Map');
		
    //__doPostBack('bbusSearchForm$buttonSearch', '');
    __doPostBack('bbusSearchForm$updateSearchFormSearch','Event=BeginSearchFromPoint');
    GACTTrack("Search");
    GACTTrackEvent("Search Results","Map View","Search from Point");
    newSearch = false;
}

function showResultsFilterSearching()
{
	var labelPageInfo	= document.getElementById('labelPageInfo');
	if (labelPageInfo)
	{
	    labelPageInfo.innerHTML = '';
	}
	var divDojoResults	= document.getElementById('divDojoResults');
	var divDojoResultsFooter	= document.getElementById('divDojoResultsFilterFooter');
	var divSearching			= document.getElementById('divSearching_dojoResults');
    if (divDojoResults && divSearching && divDojoResultsFooter)
	{
		// hide the form and show the "loading" graphic
		divDojoResults.style.display = 'none';
		divDojoResultsFooter.style.display = 'none';
		divSearching.style.display = '';
	}
	
	var panelNoResults	= document.getElementById('divNoResults');
	var panelSearchResults	= document.getElementById('divDojoResultsFilter');
	if (panelNoResults && panelSearchResults)
	{
	    panelNoResults.style.display = 'none';
	    panelSearchResults.style.display = '';
	}
	var itemExpand	= document.getElementById('bbusSearchResultsFilter_hlinkExpand');
	if (itemExpand)
	    itemExpand.disabled = true;
	
	
	
}

function showNoResultsFilter()
{
	newSearch = true;
    selectRadTab('ResultsFilter');
    var labelPageInfo	= document.getElementById('labelPageInfo');
	if (labelPageInfo)
	{
	    labelPageInfo.innerHTML = '';
	}
	var divDojoResults	= document.getElementById('divDojoResults');
	var divSearching			= document.getElementById('divSearching_dojoResults');
    if (divDojoResults && divSearching)
	{
		// hide the form and show the "loading" graphic
		divDojoResults.style.display = 'none';
		divSearching.style.display = 'none';
	}
	var panelNoResults	= document.getElementById('divNoResults');
	var panelSearchResults	= document.getElementById('divDojoResultsFilter');
	if (panelNoResults && panelSearchResults)
	{
	    panelNoResults.style.display = '';
	    panelSearchResults.style.display = 'none';
	}
	var itemExpand	= document.getElementById('bbusSearchResultsFilter_hlinkExpand');
	if (itemExpand)
	    itemExpand.disabled = true;
	
	var graphicID = "searchResutltsFilterGraphics";
    var rlayer = jsMap.getLayer(graphicID);
    if (rlayer != null) jsMap.removeLayer(rlayer);
    
	newSearch = false;
    
}

function setResultsFilterCount()
{
    var dojoResultsQuickGrid = dijit.byId('resultsQuickGrid');
    var c = dojoResultsQuickGrid.rowCount;
    
        var labelPageInfo	= document.getElementById('labelPageInfo');
	    if (labelPageInfo)
	    {
	        labelPageInfo.innerHTML = ''+c+' matches found';
	    }
	if(c >= 500) window.setTimeout('showHelp({type:"focus"},"labelPageInfo")',500);
    
	
}

function loadSearchResultsFilter()
{
    searchResultsFilterExtent=null;
    var blnResults = setupDojoGrid();
    if(!blnResults)
    {
        showNoResultsFilter();
    }
}

function setupResultsFilter()
{
        setResultsFilterCount();
        loadFilterPoints('searchResultsFilter');   
}

function loadFilterPoints(resultsset)
{
    showLayer("BusyIndicator");
    turnOnMapGraphics("bufferFilterGraphics");
    
    var popcontent = "";
    var maptip = document.getElementById("mapTip_"+resultsset);
    if (maptip == null) popcontent = '${pid}';
    else popcontent = maptip.innerHTML;
    
    var pt_graphic;
    var pt_point;
    var xcoord;
    var ycoord;
    var title;
    var att_id;
    var att_pid;
    var symbol_id;
    var rRenderer = new esri.renderer.UniqueValueRenderer(new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point.gif",20,20), "symbol");
    rRenderer.addValue("1", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_1.gif",20,20));
    rRenderer.addValue("2", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_2.gif",20,20));
    rRenderer.addValue("3", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_3.gif",20,20));
    rRenderer.addValue("4", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_4.gif",20,20));
    rRenderer.addValue("5", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_5.gif",20,20));
    rRenderer.addValue("6", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_6.gif",20,20));
    rRenderer.addValue("7", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_7.gif",20,20));
    rRenderer.addValue("8", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_8.gif",20,20));
    rRenderer.addValue("9", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_9.gif",20,20));
    rRenderer.addValue("10", new esri.symbol.PictureMarkerSymbol("/App_Themes/BinaryBus/img/location_point_10.gif",20,20));
    
    //Create graphics layer
    var graphicID = resultsset+"Graphics";
    var rlayer = jsMap.getLayer(graphicID);
    if (rlayer != null) jsMap.removeLayer(rlayer);
    rlayer = new esri.layers.GraphicsLayer({id: graphicID});
    jsMap.addLayer(rlayer);
    dojo.connect(rlayer, "onClick", clickLocGraphic);
    jsMap.reorderLayer(rlayer,jsMap.layerIds.length+jsMap.graphicsLayerIds.length-1);
    rlayer.setRenderer(rRenderer);
    
    searchResultsFilterExtent = null;
    var dojoResultsQuickGrid = dijit.byId('resultsQuickGrid');
    var i;
    var c = dojoResultsQuickGrid.rowCount;
    for (var i = 0; i<dojoResultsQuickGrid.rowCount; i++)
    {
        var item = dojoResultsQuickGrid.getItem(i);
        if(item != null){
        
            xcoord = dojoResultsQuickGrid.store.getValue(item,'LINK_X');
            ycoord = dojoResultsQuickGrid.store.getValue(item,'LINK_Y');
            searchResultsFilterExtent = addToLayerExtent(searchResultsFilterExtent, xcoord, ycoord);
            att_id = dojoResultsQuickGrid.store.getValue(item,'LINK_ID');
            att_pid = dojoResultsQuickGrid.store.getValue(item,'LINK_PID');
            symbol_id = dojoResultsQuickGrid.store.getValue(item,'LINK_SYMBOL');
            quick1 = dojoResultsQuickGrid.store.getValue(item,'QUICK_1');
            quick2 = dojoResultsQuickGrid.store.getValue(item,'QUICK_2');
            quick3 = dojoResultsQuickGrid.store.getValue(item,'QUICK_3');
            pt_point = new esri.geometry.Point(xcoord, ycoord, jsSR);
            
            pt_graphic = new esri.Graphic(pt_point);
            pt_graphic.attributes = { "type":"location", "id": att_id , "pid": att_pid , "symbol": symbol_id,"x": xcoord,"y":ycoord,"QUICK_1":quick1,"QUICK_2":quick2,"QUICK_3":quick3 };
            
            if (popcontent != "")    pt_graphic.infoTemplate = new esri.InfoTemplate('${QUICK_1}',popcontent);
            rlayer.add(pt_graphic);
    
        }
    }    
    rlayer.show();
    
    turnOnMapGraphics("filterPointGraphics");
    
    jsMap.setExtent(searchResultsFilterExtent,true);
    
    hideLayer("BusyIndicator");
    
}
    
function setupDojoGrid()
{
    var divDojoResultsFooter	= document.getElementById('divDojoResultsFilterFooter');
    var panelDojoResults	= document.getElementById('divDojoResults');
	if (panelDojoResults && divDojoResultsFooter)
	{
	    panelDojoResults.style.display = '';
	    divDojoResultsFooter.style.display = '';
	}
	resizeResultsControl();
    var resultsNode = dojo.byId('bbusSearchResultsFilter_hiddenResultsXML');
    var results = dojo.fromJson(resultsNode.value);
    if (results.NewDataSet == null) return false;
    var storeResults = new dojo.data.ItemFileReadStore({
            data: {
                items: results.NewDataSet.Table
            }});

            // set the layout structure:
            var layoutCompressed = [[{
                'field': 'QUICK_1',
                'width': '340px'
            }],[
            {
                'field': 'QUICK_2',
                'width': '340px'
            }]];
    
    
    var dojoResultsQuickGrid = dijit.byId('resultsQuickGrid');
    if (dojoResultsQuickGrid!= null)
    {
        dojoResultsQuickGrid.setQuery({});
        dojoResultsQuickGrid.setStore(storeResults);
    }
    else
    {
            // create a new grid:
            var gridResults = new dojox.grid.DataGrid({
                query: { },
                id: 'resultsQuickGrid',
                store: storeResults,
                clientSort: false,
                rowSelector: '1px',
                structure: layoutCompressed
            },
            document.createElement('div'));

            // append the new grid to the div "gridContainer4":
            dojo.byId("divDojoResults").appendChild(gridResults.domNode);
            
            
            dojo.connect(gridResults, '_onFetchComplete', fetchCompleteSearchResults);
            // Call startup, in order to render the grid:
            gridResults.startup();
        
            dojo.connect(gridResults,'onMouseOver',mouseOverResultsFilter);
            dojo.connect(gridResults,'onMouseOut',mouseOutResultsFilter);
            dojo.connect(gridResults,'onRowClick',rowClickResultsFilter);
            dojo.connect(gridResults,'onRowDblClick',rowDblClickResultsFilter);
     }
     
     
     return true;
}

function mouseOverResultsFilter(e)
{
var thegrid = e.grid;
var theitem = thegrid.getItem(e.rowIndex);
if (thegrid.store.isItem(theitem)){
var theX = thegrid.store.getValue(theitem,'LINK_X');
var theY = thegrid.store.getValue(theitem,'LINK_Y');
if(theX && theY) showGlow(theX,theY);
}
}
function mouseOutResultsFilter(e)
{
showGlow(0,0);
}
function rowClickResultsFilter(e)
{
var thegrid = e.grid;
var theitem = thegrid.getItem(e.rowIndex);
if (thegrid.store.isItem(theitem)){
var theID = thegrid.store.getValue(theitem,'LINK_ID');
if(theID) 
    {	
    selectRadTab('Map');
    getPopUp(theID,true);
    }
}
}
function rowDblClickResultsFilter(e)
{
var thegrid = e.grid;
var theitem = thegrid.getItem(e.rowIndex);
if (thegrid.store.isItem(theitem)){
var theX = thegrid.store.getValue(theitem,'LINK_X');
var theY = thegrid.store.getValue(theitem,'LINK_Y');
var theID = thegrid.store.getValue(theitem,'LINK_ID');
if(theX && theY && theID) gotoPropertyDetails(theID, theX, theY);
}
}
function filterSearchResults(query)
{
    var dojoResultsQuickGrid = dijit.byId('resultsQuickGrid');
    var newquery = {};
    if (query.Status != '*') newquery.Status = query.Status;
    if (query.Lender != '*' && query.Lender != '') newquery.Lender = query.Lender;
    if (query.Registered != '*') newquery.Registered = query.Registered;
    dojoResultsQuickGrid.setQuery(newquery);
    //setResultsFilterCount();
    //loadFilterPoints('searchResultsFilter');
}   
function fetchCompleteSearchResults()
{
    window.clearTimeout(searchResultsFilterFetchTimer);
    searchResultsFilterFetchTimer = window.setTimeout("setupResultsFilter();",500);
}
function toggleSearchResultsFilters()
{
var divSearchFilters = dojo.byId('divSearchFilters');

}
