﻿var queryTask, query, featureSet, fset, locator, baseMapLayer, gsvc, maxPage;
var returnToPanel = "about";
var quickFind, quickFindParams;
var currentResultSet, currentIndex;
var parcelSearchLayerURL;
var txtWhereClause = "";

function initSearch() {

    // create the parcel search url string...
    parcelSearchLayerURL = searchURL + "/" + custom.parcels.layerID;


    // quick find
    quickFind = new esri.tasks.FindTask(searchURL);
    quickFindParams = new esri.tasks.FindParameters();
    quickFindParams.layerIds = [custom.parcels.layerID];
    quickFindParams.searchFields = custom.parcels.findFields;
    quickFindParams.returnGeometry = true;
    dojo.connect(dojo.byId("txtQuickFind"), "onkeydown", function(evt) {
        if (com.js.map.utils.isEnter(evt))
            ExecuteParcelFind("txtQuickFind", dojo.byId("txtQuickFind").value);
        return false;
    });
    dojo.connect(dojo.byId("txtQuickFind2"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { ExecuteParcelFind("txtQuickFind2", dojo.byId("txtQuickFind2").value) } });
    dojo.connect(dojo.byId("quickFindButton"), "onmousedown", function(evt) { ExecuteParcelFind("txtQuickFind", dojo.byId("txtQuickFind").value) });
    dojo.connect(dojo.byId("quickFindButton2"), "onmousedown", function(evt) { ExecuteParcelFind("txtQuickFind2", dojo.byId("txtQuickFind2").value) });

    // initialize advanced search
    initAdvancedSearch();

    adjoiners_startup();

    showSearchPanel("about");
}


// Find Functions
function ExecuteParcelFind(sender, value) {

    if (value == "") {
        var senderObj = dojo.byId(sender);
        if (senderObj != null) {
            senderObj.value = "";
            alert("you must enter a value!");
            return;
        } else { return; }    
    }

    parcelQuery = new custom.parcels.parcelQuery();
    parcelQuery.clearQuery();
    parcelQuery.wildcard = value;

    dojo.byId("back").innerHTML = "<img src=\"images/back.gif\" alt='back'/><a href=\"#\" onmousedown=\"showPanel('search');showSearchPanel('about');\">Refine Search Parameters</a><hr/>";
    dijit.byId("quicksearchhelp").hide;
    showSearching();

    quickFindParams.searchText = value;
    quickFind.execute(quickFindParams, function(results) {
        var features = [];
        for (var i = 0; i < results.length; i++) {
            features.push(results[i].feature);
        }
        var featureSet = new esri.tasks.FeatureSet();
        featureSet.features = features;
        showParcelSearchResults(featureSet);
        return;
    }, showSearchError);

 }

function ExecuteParcelSearch(whereClause, returnToPanel) {
    try {
    
        txtWhereClause = whereClause;

        if (returnToPanel == undefined) 
            returnToPanel = "about";

        dojo.byId("back").innerHTML = "<img src=\"images/back.gif\" alt='back'/><a href=\"#\" onmousedown=\"showPanel('search');showSearchPanel('" + returnToPanel + "');\">Refine Search Parameters</a><hr/>";
        dijit.byId("quicksearchhelp").hide;
        showSearching();

        // Set up query tasks
        var queryTask = new esri.tasks.QueryTask(parcelSearchLayerURL);
        var query = new esri.tasks.Query();
        query.where = txtWhereClause;
        query.outFields = custom.parcels.returnFields;
        query.returnGeometry = true;
       
        //Execute task and call showResults on completion
        queryTask.execute(query, showParcelSearchResults, showSearchError);
        
    } catch (Error) {
        showSearchError(Error);
    }
}

function showSearchPanel(name) {

    //hide table panel
    hideTable();

    // first hide the search panels...
    dojo.forEach(searchPanels, function(panel) {
        dojo.style(panel, { "display": "none" });
    });

    dojo.style(name, { 'display': 'block' });


    if (name == "advanced_search") {
        dijit.byId("advancedDialog").show();
        dojo.style("about", { 'display': 'block' });
    }

}




function showSearching(msg) {

    if (msg == null)
        msg = "Searching Database";
    /// <reference path="../" />
    var content = "<div style=\"margin: 7px 7px 7px 7px;text-align:center;\"><p><img src=\"Images/callbackActivityIndicator.gif\" alt=\"busy\"/></p><p>" + msg + "</p><p> Please Waiting</p></div>";
    dojo.byId("info").innerHTML = content;
    showPanel("info");

}


function showSearchError(error) {

    if (searchCompleted == true)
        return;

    var yy = [];
    var returnToCmd = "showPanel('search')";
    yy.push("<p><a href=\"#\" onmousedown=\"" + returnToCmd + "\">Search Again?</a></p>");
    yy.push("<p>Sorry, but there was an error in the query string</p>");

    yy.push("<div style=\"margin7px\">");

    dojo.forEach(error.details, function(detail) {
        yy.push("<div>" + detail + "</div>");
    });


    yy.push("<p>Query attempted:</p>");
    yy.push("<p>" + txtWhereClause + "</p>");

    yy.push("</div>");

    dojo.byId("info").innerHTML = yy.join("");
    showPanel("info");

}

//##########################################
// Advanced Search Functions 

var toYearElementName = "toYear";
var fromYearElementName = "fromYear";
var toMonthElementName = "toMonth";
var fromMonthElementName = "fromMonth";
var minAcreageElementName = "minAcreage";
var maxAcreageElementName = "maxAcreage";
var ownerNameElementName = "advanced_name";
var lNameElementName = "advanced_lname";
var fNameElementname = "advanced_fname";
var dateddlElementName = "cbodate";
var deedBookElementName = "advanced_deedbook";
var deedPageElementName = "advanced_deedpage";
var grantorElementName = "advanced_grantor";
var pinElementName = "advanced_pin";
var minValueElementName = "minValue";
var maxValueElementName = "maxValue";
var minSaleElementName = "advanced_minsaleprice";
var maxSaleElementName = "advanced_maxsaleprice";
var respropElementName = "chkres";
var commpropElementName = "chkcomm";
var streetElementName = "advanced_street";

function doAdvancedSearch() {

    var parcelQuery = new custom.parcels.parcelQuery();

    parcelQuery.clearQuery();
    parcelQuery.toYear = dojo.byId(toYearElementName).value;
    parcelQuery.fromYear = dojo.byId(fromYearElementName).value;
    parcelQuery.toMonth = dojo.byId(toMonthElementName).value;
    parcelQuery.fromMonth = dojo.byId(fromMonthElementName).value;
    parcelQuery.minAcreage = dojo.byId(minAcreageElementName).value;
    parcelQuery.maxAcreage = dojo.byId(maxAcreageElementName).value;

    //var grantor = dojo.byId(grantorElementName).value;
    parcelQuery.pin = dojo.byId(pinElementName).value;
    parcelQuery.deedbk = dojo.byId(deedBookElementName).value;
    parcelQuery.deedpg = dojo.byId(deedPageElementName).value;
    parcelQuery.minValue = dojo.byId(minValueElementName).value;
    parcelQuery.maxValue = dojo.byId(maxValueElementName).value;

    parcelQuery.minSalePrice = dojo.byId(minSaleElementName).value
    parcelQuery.maxSalePrice = dojo.byId(maxSaleElementName).value

    parcelQuery.streetname = dojo.byId(streetElementName).value;
    parcelQuery.useRes = dojo.byId(respropElementName).checked;
    parcelQuery.useCOMM = dojo.byId(commpropElementName).checked;

    var ownerName = dojo.byId(ownerNameElementName).value;
    var fname = dojo.byId(fNameElementname).value;
    var lname = dojo.byId(lNameElementName).value;
    if ((fname != "") && (lname != "")) {
        ownerName = lname + ", " + fname;
    } else if (lname != "") {
        ownerName = lname;
    } else if (fname != "") {
        ownerName = fname;
    }

    dijit.byId("advancedDialog").hide();

    parcelQuery.ownerName = ownerName;

    var swhere = parcelQuery.getWhereClause();

    //alert(swhere);
    
    ExecuteParcelSearch(swhere, "advanced_search");

}

function clearAdvancedSearch() {
    dojo.byId(toYearElementName).value = "";
    dojo.byId(fromYearElementName).value = "";
    dojo.byId(toMonthElementName).value = "";
    dojo.byId(fromMonthElementName).value = "";
    dojo.byId(maxAcreageElementName).value = "";
    dojo.byId(minAcreageElementName).value = "";
    dojo.byId(ownerNameElementName).value = "";
    dojo.byId(fNameElementname).value = "";
    dojo.byId(lNameElementName).value = "";
    
    dojo.byId(maxValueElementName).value = "";
    dojo.byId(minValueElementName).value = "";
    dojo.byId(pinElementName).value = "";
    dojo.byId(deedBookElementName).value = "";
    dojo.byId(deedPageElementName).value = "";
    dojo.byId(minSaleElementName).value = "";
    dojo.byId(maxSaleElementName).value = "";
    dojo.byId(streetElementName).value = "";

    dojo.byId(respropElementName).checked = "checked";
    dojo.byId(commpropElementName).checked = "checked";

}


function initAdvancedSearch() {

        var fromYr = dojo.byId(fromYearElementName);
        var toYear = dojo.byId(toYearElementName);

	var currentTime = new Date()
        var tyear = currentTime.getFullYear()
	var fyear = tyear - 10;




        for (i = fyear; i <= tyear; i++) {
            var opt = document.createElement("option");
            var opt2 = document.createElement("option");
            opt.setAttribute("value", i);
            opt2.setAttribute("value", i);
            opt2.innerHTML = i;
            opt.innerHTML = i;
            fromYr.appendChild(opt);
            toYear.appendChild(opt2);
        }

        // advanced search stuff
        // wire events

        dojo.connect(dojo.byId("advanced_pin"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });
        dojo.connect(dojo.byId("advanced_book"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });
        dojo.connect(dojo.byId("advanced_page"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });
        dojo.connect(dojo.byId("advanced_owner"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });
        dojo.connect(dojo.byId("advanced_lname"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });
        dojo.connect(dojo.byId("advanced_fname"), "onkeydown", function(evt) { if (com.js.map.utils.isEnter(evt)) { doAdvancedSearch(); } });

        dojo.connect(dojo.byId("btnAdvancedSearch"), "onclick", doAdvancedSearch);
        dojo.connect(dojo.byId("btnClearAdvancedSearch"), "onclick", clearAdvancedSearch);

}





function selectParcel(evt) {

    // Set up query tasks
    var selParcelsTask = new esri.tasks.QueryTask(parcelSearchLayerURL);
    var selParcels = new esri.tasks.Query();

    // Set up query for surrounding parcels
    selParcels.outFields = custom.parcels.returnFields;
    selParcels.returnGeometry = true;
    selParcels.geometry = evt.mapPoint;
    selParcels.mapExtent = map.extent;
    selParcels.outSpatialReference = map.spatialReference;
    selParcels.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
    selParcelsTask.execute(selParcels, addToSelectedGraphics, showSearchError);
    
}
