﻿var $error;
var $searchBtn;
var $searchDdl;
var $searchFld;
var $stateDdl;

$(document).ready(function() {
    $error = $("#dvError");
    $searchBtn = $("#dvLocate a");
    $searchDdl = $("#ddlSearchBy");
    $searchFld = $("#txtSearchField");
    $stateDdl = $("#ddlState");

    $searchBtn
        .unbind("click")
        .click(locateClick);
    
    $searchDdl
        .unbind("change")
        .change(searchByChange)
        .unbind("keypress")
        .keypress(formKeypress);

    $searchFld
        .unbind("keypress")
        .keypress(formKeypress);

    $stateDdl
        .unbind("keypress")
        .keypress(formKeypress);
});

function formKeypress(e) {
    if (e.which == 13) {
        catchEvent(e);
        $searchBtn.click();
    }
}

function getSearchBy() {
    return $searchDdl.val();
}

function getSearchValue() {
    return $.trim($searchFld.val());
}

function getStateValue() {
    return $stateDdl.val();
}

function hideError(msgIn) {
    $error.html("");
    $error.hide();
}

function hideStateDdl() {
    if ($error.css("position") == "relative")
        $error.css("top", "4px");
    else if ($error.css("position") == "static")
        $error.css("margin-top", "-5px");
    
    $stateDdl.hide();
    $stateDdl.val("");
}

function locateClick(e) {
    catchEvent(e);
    var errMsg;
    var searchBy = getSearchBy();
    var searchVal = getSearchValue();
    var stateVal = getStateValue();
    var validated = false;

    switch (searchBy) {
        case "AIRPORT":
            validated = isValidAirportCode(searchVal);

            if (!validated)
                errMsg = "Valid airport code required";
            
            break;
        case "CITYSTATE":
            validated = isValidCityState(searchVal, stateVal);

            if (!validated)
                errMsg = "Valid city/state required";
            
            break;
        case "ZIP":
            validated = isValidZip(searchVal);

            if (!validated)
                errMsg = "Valid zip required";
            
            break;
    }

    if (!validated) {
        showError(errMsg);
        return false;
    }
    else {
        hideError();
        var fhtml = '<form id="frmFindFBO" action="search.aspx" method="post"><input type="hidden" name="searchType" value="' + searchBy + '" /><input type="hidden" name="searchValue" value="' + searchVal + '" />';
        fhtml += stateVal ? '<input type="hidden" name="stateValue" value="' + stateVal + '" /></form>' : "</form>";
        $("body").append(fhtml);
        $("#frmFindFBO").submit();
        return false;
    }
}

function searchByChange(e) {
    catchEvent(e);
    hideError();
    $searchFld.val("");
    
    var searchBy = getSearchBy();

    if (searchBy == "AIRPORT") {
        $searchFld.attr("maxlength", 3);
        hideStateDdl();
    }
    else if (searchBy == "CITYSTATE") {
        showStateDdl();
        $searchFld.removeAttr("maxlength");
    }
    else if (searchBy == "ZIP") {
        $searchFld.attr("maxlength", 10);
        hideStateDdl();
    }
}

function showError(msgIn) {
    if (msgIn.statusText)
        msgIn = msgIn.statusText;

    $error.html(msgIn);
    $error.show();
}

function showStateDdl() {
    if ($error.css("position") == "relative")
        $error.css("top", "-16px");
    else if ($error.css("position") == "static")
        $error.css("margin-top", "-28px");

    $stateDdl.show();
    updateTabIndices();
}

function updateTabIndices() {
    $searchDdl.attr("tabindex", 1);
    $searchFld.attr("tabindex", 2);
    $stateDdl.attr("tabindex", 3);
    $searchBtn.attr("tabindex", 4);
}
