
function DoSearch()
{
    if(!validateForm()){
        return false;
    }
    
    var txtAddress = document.getElementById("gcAddress").value;
    var txtCity = document.getElementById("gcCity").value;
    var txtState = document.getElementById("gcState").value;
    var txtZip = document.getElementById("gcZip").value;

    dojo.xhrGet({
        url: "Geocode.aspx",
        handleAs: "text",
        content: { address: txtAddress, city: txtCity, state: txtState, zip: txtZip },
        load: ProcessResult,
        error: ProcessError
    });
}


function ProcessResult(result)
{
    var coords= result.split(",");
    
    if (coords.length < 2)
    {
        ProcessError("Address not found");
        return;
    }
        
    mapPoint = new esri.geometry.Point(coords[0], coords[1]);
    map.centerAt(mapPoint);

    var symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_CIRCLE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 5), new dojo.Color([255,0,0,0]));
    var graphic = new esri.Graphic(mapPoint, symbol);
    map.graphics.add(graphic);
    window.setTimeout("map.setLevel("+infoZoomLevel+")",300);       
}

function doQuery(){
    var queryTask = new esri.tasks.QueryTask(buildingLayer);

    //build query filter
    var query = new esri.tasks.Query();
    query.returnGeometry = true;   
    query.geometry = mapPoint;
    query.geometry.spatialReference = map.spatialReference;  
    query.outSpatialReference =  map.spatialReference;  
    queryTask.execute(query, gotoLocation);
    
}

function gotoLocation(featureSet){

    var numFeatures = featureSet.features.length;
    if(numFeatures > 1){
        alert("More than one feature at point");
        return;
    }
    
    var graphic = featureSet.features[0];
    var symbol;
        switch (graphic.geometry.type) {
            case "point":
                symbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255,0,0]), 1), new dojo.Color([0,255,0,0.25]));
                break;
            case "polyline":
                symbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASH, new dojo.Color([255,0,0]), 1);
                break;
            case "polygon":
                symbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_NONE, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255,0,0]), 3), new dojo.Color([255,255,0,0.25]));
                break;
        }
        graphic.setSymbol(symbol);
        map.graphics.add(graphic);
    map.setExtent(computeViewExtent(graphic));       
}

function ProcessError(error)
{
    if (typeof(error) == "object"){
        alert(error.message);
    } else {
        alert(error);
    }
}

function validateForm(){
    var address = dojo.byId("gcAddress");
    var city = dojo.byId("gcCity");
    var state = dojo.byId("gcState");
    var zip = dojo.byId("gcZip");
    
    if(address == null || address.value == ""){
        alert("Please enter an address.");
        return false;
    }
    
    if(city == null || city.value == ""){
        alert("Please enter a city.");
        return false;
    }
    
    if(state == null || state.value == ""){
        alert("Please enter a state.");
        return false;
    }
    
    if(zip == null || zip.value == ""){
        alert("Please enter a zip code.");
        return false;
    }
    
    return true;
}