﻿// JScript File
function onClickHandler(e)
{
    if (selectBtnStatus || infoBtnStatus)
    {
        //GET map coord
        if (infoBtnStatus)
        {        
        var divQueryResults = $get('divQueryResults');
        var divQueryResultsDisplay = $get('divQueryResultsDisplay');
        divQueryResults.style.display = "block";
        divQueryResultsDisplay.innerHTML = '<div align=center><span style="display:block">Searching...</span><img src="img/spinner.gif"/></div>';
        }
        var mode = map.GetMapMode();
        //2D
        if (mode == 1)
        {                      
            var LL = null;                        
            var x = e.mapX;
            var y = e.mapY;
            pixel = new VEPixel(x, y);
            LL = map.PixelToLatLong(pixel);        
        }
        //3D
        else if (mode == 2)
        {
            LL = e.latLong;          
        }  
        var spLatLong = $get('spLatLong');
        spLatLong.innerHTML = '(Lat: '+Math.round(LL.Latitude*100)/100 + ', Long: '+Math.round(LL.Longitude*100)/100+')';
        var Lat = LL.Latitude;
        var Long = LL.Longitude;
        var ParamLat = {"Lat": Lat};
        var ParamLong = {"Long": Long}; 
        //GET whether counties or communities are active
        var activeLayers = "";
        var hdfActiveLayers = $get('hdfActivePlaceType');
        if (hdfActiveLayers.value == "counties")
        {
            activeLayers = 'Counties';
        }
        else
        {   
            activeLayers = 'CensusTracts,CensusPlaces';
            //activeLayers = getSelectedCommunityLayerQuery();
        }
        var ParamActiveLayers = {"Layers": activeLayers};
        var ParamService = {"Service": 'Census2000'};  
        WebServices.GetFeatureWebService.GetFeature(ParamLat.Lat, ParamLong.Long, ParamActiveLayers.Layers, ParamService.Service, goToSelection, OnFailedInfoSelect);               
//        WebServices.GetFeatureWebService.GetFeature(ParamLat.Lat, ParamLong.Long, ParamActiveLayers.Layers, ParamService.Service, OnSucceededInfoSelect, OnFailedInfoSelect);           
  }    
}

function getSelectedCommunityLayerQuery()
{
    //var cbQueryCity = $get('cbQueryCity');
    var cbQueryPlace = $get('cbQueryPlace');
    var cbQueryTract = $get('cbQueryTract');
    var ActiveCommunityLayersQueryArray = new Array();
    var activeLayers= "";
//    if (cbQueryCity.checked)
//    {
//    ActiveCommunityLayersQueryArray.push("CityLimits");
//    }
    if (cbQueryPlace.checked)
    {
    ActiveCommunityLayersQueryArray.push("CensusPlaces");
    }
    if (cbQueryTract.checked)
    {
    ActiveCommunityLayersQueryArray.push("CensusTracts");
    }
    for (var i=0; i<ActiveCommunityLayersQueryArray.length; i++)
    {
        if (i!=ActiveCommunityLayersQueryArray.length-1)
        {
        activeLayers += ActiveCommunityLayersQueryArray[i] + ',';
        }
        else
        {
        activeLayers += ActiveCommunityLayersQueryArray[i];
        }
    }  
    return activeLayers   
}

function OnSucceededInfoSelect(result)
{//1
    if (result != null && result.text != "failed")
    {//2
    var features = result.getElementsByTagName("FEATURE");
    var sDescription = '';
    if (features != null)
    {//3
        if (features.length > 0)
        {//4
            for(var i=0;i<features.length;i++)
            {//5         
                var polyRings = features[i].childNodes[1].childNodes;
                if (polyRings.length > 0)
                 {//6
                    for (var h=polyRings.length-1;h>-1 ; h--)
                    {//7
                        PolyShape = h;
                        Count++;
                        //var PolyCoords = result.getElementsByTagName("RING")[0].text;
                        var PolyCoords = polyRings[h].text;
                        var Points = PolyCoords.split(/\;/);
                        var polyPoints = new Array();
                        var wktPoints = "POLYGON((";
                        var LatLong = new Array();
                        for (var j=Points.length-1; j>= 0; j--)
                        {//8
                            LatLong = Points[j].split(/\ /);
                            LatLong[1] = parseFloat(LatLong[1]);
                            LatLong[0] = parseFloat(LatLong[0]);
                            polyPoints.push(new VELatLong(LatLong[1],LatLong[0]));
                        }//8      
                        var title = '';              
                    if (features[i].childNodes[0].getAttribute("SDE.SDE.OREGON_2000CENSUSPLACES_WGS84.ID") != null)
                    {//9
                        //is CensusPlace
                        sDescription = setDescriptionFieldsSelect(features[i].childNodes[0], "CensusPlace");
                        QueryText = 'Census Place';
                    }//9
                    if (features[i].childNodes[0].getAttribute("SDE.SDE.ORE_CITYLIMITS_2005_WGS84.CITY_NAME") != null)
                    {//10
                        //is City
                        sDescription = setDescriptionFieldsSelect(features[i].childNodes[0], "City");
                        QueryText = 'City';
                    }//10
                    if (features[i].childNodes[0].getAttribute("SDE.SDE.OREGON_2000CENSUSTRACTS_WGS84.ID") != null)
                    {//11
                        //is CensusTract
                        sDescription = setDescriptionFieldsSelect(features[i].childNodes[0], "CensusTract");
                        QueryText = 'Census Tracts';
                    }//11      
                    var title = '';
                    var isLast = false;
                    var isInfoOnly = false;
                    if (h == 0)
                    {
                        isLast = true;
                    }
                    if (infoBtnStatus)
                    {
                    isInfoOnly = true
                    }
                    AddFeaturePoly(polyPoints, title, sDescription,isLast, isInfoOnly);    
                    }//7                 
                  }//6
                }//5                
            }//4            
            else 
            {
            if (infoBtnStatus)
                {
                var divQueryResults = $get('divQueryResults');
                var divQueryResultsDisplay = $get('divQueryResultsDisplay');                
                divQueryResultsDisplay.innerHTML = '<div align=center><span style="display:block">No results found.</div>';
                }
            }
        }//3
    }//2
}//1

function OnFailedInfoSelect(result)
{
    if (infoBtnStatus)
                {
                var divQueryResults = $get('divQueryResults');
                var divQueryResultsDisplay = $get('divQueryResultsDisplay');                
                divQueryResultsDisplay.innerHTML = '<div align=center><span style="display:block">No data available for selected place.</div>';
                }
            
}

function setDescriptionFieldsSelect(attributes, geoType)
{
    var sDescription = '';
    switch (geoType)
    {
        case "CensusPlace":        
        var CPName = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSPLACES_WGS84.NAME");
        var CPPlace = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSPLACES_WGS84.PLACE");
        var CPCounty = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSPLACES_WGS84.COUNTY");
        sDescription += '<span style="display:block">Census Designated Place, 2000</span><span style="display:block">'+ CPName + '</span><span style="display:block">'+CPPlace+CPCounty+'</span>';        
        break;
        case "CensusTract":
        var CTTRID = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSTRACTS_WGS84.TRACTID");
        var CTCounty = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSTRACTS_WGS84.COUNTY");
        var CTPartOf = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSTRACTS_WGS84.PARTOF");
        var CTContains = attributes.getAttribute("SDE.SDE.OREGON_2000CENSUSTRACTS_WGS84.INCLUDES");
        sDescription = '<span style="display:block">Census Tracts, 2000</span><span style="display:block">Tract ID: '+CTTRID+'</span><span style="display:block">County:'+CTCounty+'</span>';
        if (CTPartOf != "")
        {
        sDescription += '<span style="display:block">Part of: '+CTPartOf+'</span>';        
        }
        if (CTContains != "")
        {
        sDescription += '<span style="display:block">Contains:  '+CTContains+'</span>';
        }
        break;
        case "City":
        var CITYName = attributes.getAttribute("SDE.SDE.ORE_CITYLIMITS_2005_WGS84.CITY_NAME");        
        sDescription = '<span style="display:block">Census Designated Place, 2000</span><span style="display:block">City: '+CITYName+'</span>';        
        break;
    }
    //QueryText = "Corvallis";
    return sDescription;
    
}