var bAnimate = true;
if (/Apple/.test(navigator.userAgent)) {
    bAnimate = false;
}
var C_CITY_CITY_DEFAULT = "Enter a city name";
var C_CITY_STATE_DEFAULT = "Select a State";
var C_CNTY_CNTY_DEFAULT = "Enter a county name";
var C_CNTY_STATE_DEFAULT = "Select a State";
var C_ZIP_ZIP_DEFAULT = "Enter a ZIP code";
var C_ADDR_ADDR_DEFAULT = "Enter a street address";
var C_ADDR_CITY_DEFAULT = "Enter a city name";
var C_ADDR_STATE_DEFAULT = "Select a State";
var C_NAME_NAME_DEFAULT = "Enter a facility name";
var QSMAP = new Object();
QSMAP["c_city_city"] = C_CITY_CITY_DEFAULT;
QSMAP["c_city_state"] = C_CITY_STATE_DEFAULT;
QSMAP["c_cnty_cnty"] = C_CNTY_CNTY_DEFAULT;
QSMAP["c_cnty_state"] = C_CNTY_STATE_DEFAULT;
QSMAP["c_zip_zip"] = C_ZIP_ZIP_DEFAULT;
QSMAP["c_addr_addr"] = C_ADDR_ADDR_DEFAULT;
QSMAP["c_addr_city"] = C_ADDR_CITY_DEFAULT;
QSMAP["c_addr_state"] = C_ADDR_STATE_DEFAULT
QSMAP["c_name_name"] = C_NAME_NAME_DEFAULT;

var QSTBMAP = new Object();
QSTBMAP["c_city_city"] = "";
QSTBMAP["c_cnty_cnty"] = "";
QSTBMAP["c_zip_zip"] = "";
QSTBMAP["c_addr_addr"] = "";
QSTBMAP["c_addr_city"] = "";
QSTBMAP["c_name_name"] = "";

var qsTextboxes = new Array("c_city_city", "c_cnty_cnty", "c_zip_zip", "c_addr_addr", "c_addr_city", "c_name_name");
var qsCategories = new Array("c_city", "c_cnty", "c_zip", "c_addr", "c_name");
var qsCategoryTitles = new Array("t_city", "t_cnty", "t_zip", "t_addr", "t_name");
var qsCategoryBodies = new Array("b_city", "b_cnty", "b_zip", "b_addr", "b_name");
var qsSerializables = new Array("c_city_city", "c_city_state", "c_cnty_cnty", 
                                "c_cnty_state", "c_zip_zip", "c_addr_addr",
                                "c_addr_city", "c_addr_state", "c_name_name");
var qsAdvancedSearchCheckboxes = new Array("alzheimers_s", "wander_s", "aggro_s", "medicaid-payment_s",
                                "medicare-payment_s", "assistance-daily-activities_s", "housekeeping-laundry_s",
                                "medication-management_s", "facility-provides-transportation_s", "nursing_s",
                                "short-term-respite-care_s");

var qsCookieName = "AlzSearch";

// Dummy function so we don't get js errors with a manual chain search on the Alzheimer's portal
function ToggleChainSearch() {}

// This gets called by snap_search.js RestoreState() on window load
function QuickSearchRestoreState() {  
    // Id of element to check for and insert control
    TextResizeDetector.TARGET_ELEMENT_ID = "qs_t_span";
    // Function to call when TextResizeDetector is initialized
    TextResizeDetector.USER_INIT_FUNC = qsFontResizeInit;

    var CookieIsFromSearchResults = false;
    var QSCookie;
    // Get the search parse values from the page (via hidden field "ParseHelper"), if they've been set
    var ParseHelper = document.getElementById("ParseHelper");
    if (ParseHelper && ParseHelper.value) {
        CookieIsFromSearchResults = true;
        QSCookie = ParseHelper.value;
    } else { // otherwise read them from the quick search cookie   
        QSCookie = GetCookie(qsCookieName);
    }

    if (QSCookie) {
        var tokens = QSCookie.split(cookieDelimiter);
        for (var i=0; i < tokens.length; i++) {
            var key = tokens[i].split("*")[0];
            var value = tokens[i].split("*")[1];
            if (key == "category") {
                qsHideAllCategories();
                qsDisplaySimple("b_"+value);
            } else if (key == "fromsearchresults") {
                CookieIsFromSearchResults = true;
                continue;
            } else {
                var inputElement = document.getElementById(key);
                // Convert state codes to uppercase (if coming from an external
                // search, the user could have typed lower case state, which wouldn't
                // load into the state dropdowns)
                if (key.indexOf("state") != -1)
                    inputElement.value = value.toUpperCase();
                else
                    inputElement.value = value;
            }
        }
    } else { // No cookie found, display default options
        qsHideAllCategories();
        qsDisplaySimple("b_city");
    }

    qsInitializeTextInputFontStyles();
    
    // Disable other checkboxes if the CCRC checkbox is checked
    var ccrc_chk = document.getElementById("CC_s");
    if (ccrc_chk && ccrc_chk.checked) 
        qsDisableALILSNFCheckboxes();
        
    // Set advanced search checkboxes
    var paramarams = GetParams();
    var expand_as = false;    
    var chk;
    var param_name;
    
    for (var id in qsAdvancedSearchCheckboxes) {
        chk = document.getElementById(qsAdvancedSearchCheckboxes[id]);
        param_name = qsAdvancedSearchCheckboxes[id].substring(0, qsAdvancedSearchCheckboxes[id].length - 2); // chop off trailing "_s"
        //alert(param_name);
        if (paramarams[param_name] == "true") {
            if (chk) chk.checked = true;
            expand_as = true;
        } else {
            if (chk) chk.checked = false;
        }
    }
        
    
    // Hide advanced search options if none were checked
    if (!expand_as) {
        qsH("b_as");
    } else {
        qsS("b_as");
        // Change advanced search category header button
        var as_button= document.getElementById("qsAdvancedSearchButtonImage");
        if (as_button) as_button.src = "/Portals/3/Skins/AlzSkin/images/alz_btn_hideAdvOpt.gif";
    }
}

function QuickSearchSerialize() {       
    var values = [];
    var current_category = qsCurrentCategory();
    
    // Save the currently active category
    values.push("category*" + qsCurrentCategory());
    
    // If any textbox or dropdown has non-standard contents, save the contents to the cookie
    for (var id in qsSerializables) {
        var val = document.getElementById(qsSerializables[id]).value;
        if ((val == QSMAP[qsSerializables[id]]) || (val == ""))
            continue;
        // Filter out fields that aren't in our category -- we deliberately don't want to keep them
        if (!qsSerializables[id].indexOf("c_"+current_category) == 0)
            continue;
        values.push(qsSerializables[id] + "*" + val);
    }
    
    // Write the cookie using snap_seach.js function
    var cookieString = qsCookieName + "=" + values.join(cookieDelimiter)  + ";";
    SetCookie(cookieString);
}

function RemoveCookie(cookieContent) {
    // Expire the cookie
    var expDate = new Date();
    expDate.setTime(expDate.getTime() - 10000);
    
    // set the cookie content
    document.cookie = cookieContent + " expires=" + expDate.toGMTString() + "; path=/;";
}

function qsFontResizeInit(){
      var iBase = TextResizeDetector.addEventListener(qsOnFontResize,null );
      //alert( "The base font size = " + iBase );
    }

function qsOnFontResize( e, args ){
      //var msg = "\nThe base font size in pixels: " + args[0].iBase;
      //msg +="\nThe current font size in pixels: " + args[0].iSize;
      //msg += "\nThe change in pixels from the last size:" + args[0].iDelta;
      //alert( msg );
      qsRecalcHeights();
    }

function qsH(id) {
    var body = document.getElementById(id);
    if (body && body.style) {
        if (!bAnimate) {
            body.style.display = "none";
        } else {
            body.style.position = "absolute";
            body.style.left = "-9999px";
            body.style.height = "auto";
        }
    }
}
function qsS(id) {
    var body = document.getElementById(id);
    if (body && body.style) {
        if (!bAnimate) {
            body.style.display = "block";
        } else { 
            body.style.position = "relative";
            body.style.left = "0px";
        }
    }
}
function qsHideAllCategories() {
    for (var i=0;i < qsCategoryBodies.length; i++) {
        qsH(qsCategoryBodies[i]);
    }
}
function qsShowAllCategories() {
    for (var i=0;i < qsCategoryBodies.length; i++) {
        qsS(qsCategoryBodies[i]);
    }
}
function qsSetAllCategoriesAutoHeight() {
    for (var i=0;i < qsCategoryBodies.length; i++) {
        var body = document.getElementById(qsCategoryBodies[i]);
        body.style.height = "auto";
    }
    var adv_sb = document.getElementById("b_as");
    if (adv_sb) adv_sb.style.height = "auto";
}

function qsHideCurrentCategory() {
    if (!bAnimate) {
        qsHideAllCategories();
        return;
    }
    for (var i=0;i < qsCategoryBodies.length; i++) {
        var body = document.getElementById(qsCategoryBodies[i]);
        if (body.style.position == "relative") {
            if (body.style.height == "auto")
                body.style.height = body.offsetHeight;
            slideup(qsCategoryBodies[i]);
        }         
    }
}

function qsDisplay(targetbodyelement) {   
    var target = document.getElementById(targetbodyelement);
    // If category is already selected, do nothing
    if ((target.style.position == "relative") && bAnimate)
        return;
    
    qsHideCurrentCategory();
    qsS(targetbodyelement);
    
    if (bAnimate) {
        if (!target.style.height || (target.style.height == "auto"))
            target.style.height = target.offsetHeight + "px";
        target.style.display = "none";
        slidedown(targetbodyelement);
    } 
        
    // Disable checkboxes when we're looking at the name category
    if (targetbodyelement == "b_name") {
        //qsDisableCheckboxes();     
    } else {
        qsEnableCheckboxes();
        // Disable other checkboxes if the CCRC checkbox is checked
        var ccrc_chk = document.getElementById("CC_s");
        if (ccrc_chk && ccrc_chk.checked) 
            qsDisableALILSNFCheckboxes();
    }
}

function qsToggleAdvancedSearch(targetbodyelement) {
    var target = document.getElementById(targetbodyelement);
    
    // If advanced search is expanded, collapse
    if ((!bAnimate && (target.style.display == "block")) || (bAnimate && (target.style.position == "relative"))) {
        if (bAnimate) {
            if (target.style.height == "auto")
                target.style.height = target.offsetHeight + "px";
            target.style.display = "block";
            slideup(targetbodyelement);
        } else {
            qsH(targetbodyelement);
        }
        // Change advanced search category header text
        var as_button = document.getElementById("qsAdvancedSearchButtonImage");
        if (as_button) as_button.src = "/Portals/3/Skins/AlzSkin/images/alz_btn_showAddCrit.gif";
    } else {
        qsS(targetbodyelement);
        if (bAnimate) {
            if (!target.style.height || (target.style.height == "auto"))
                target.style.height = target.offsetHeight + "px";
            target.style.display = "none";
            slidedown(targetbodyelement);
        } 
        // Change advanced search category header text
        var as_button= document.getElementById("qsAdvancedSearchButtonImage");
        if (as_button) as_button.src = "/Portals/3/Skins/AlzSkin/images/alz_btn_hideAdvOpt.gif";
    }
}

// Display category w/o animation
function qsDisplaySimple(targetbodyelement) {
    qsS(targetbodyelement);
    
    qsEnableCheckboxes();
    // Disable other checkboxes if the CCRC checkbox is checked
    var ccrc_chk = document.getElementById("CC_s");
    if (ccrc_chk && ccrc_chk.checked) 
        qsDisableALILSNFCheckboxes();
}

function qsRecalcHeights () {
    qsSetAllCategoriesAutoHeight();
    if (isIE) {
        var body = "b_" + qsCurrentCategory();
        var body_element = document.getElementById(body);
        body_element.style.overflow = "auto";

        for (var i=0; i < qsTextboxes.length; i++) {
            var elm_name = qsTextboxes[i];
            var elm = document.getElementById(elm_name);
            QSTBMAP[elm_name] = elm.value;
            elm.value = "";
        }
        setTimeout("qsRefocusCurrentCategory(\""+body+"\")",1);
    }
}

function qsRefocusCurrentCategory(body) {
    for (var i=0; i < qsTextboxes.length; i++) {
            var elm_name = qsTextboxes[i];
            var elm = document.getElementById(elm_name);
            elm.value = QSTBMAP[elm_name];
        }
    
    var body_element = document.getElementById(body);
    body_element.style.overflow = "hidden";
}

function tt_hide_large(evt, elm) {
    var x = document.getElementById(elm);
    x.style.width = "270px";
    tt_hide(evt, elm);
}
function tt_show_large(evt, elm) {
    var x = document.getElementById(elm);
    if (x.offsetHeight > 300)
        x.style.width = "544px";
    tt_show(evt,elm); 
}

function ccrc_click(elm) {
    var x;
    if (elm.checked) {
        qsDisableALILSNFCheckboxes();
    } else {
        qsEnableALILSNFCheckboxes();
    }
}

function qsDisableALILSNFCheckboxes() { 
    var x = document.getElementById("AL_s");
    x.disabled = true;
    x = document.getElementById("AL_l");
    x.style.color="#888888";
    
    x = document.getElementById("IL_s");
    x.disabled = true;
    x = document.getElementById("IL_l");
    x.style.color="#888888";
    
    x = document.getElementById("SN_s");
    x.disabled = true;
    x = document.getElementById("SN_l");
    x.style.color="#888888"; 
    
    // Disable all of the checkbox tooltips too.
    var tooltips = new Array("AL_t", "IL_t", "SN_t");
    for (var i=0;i<3;i++) {
        x = document.getElementById(tooltips[i]);
        x.onmouseover = null;
        x.onmouseout = null; 
    }
}

function qsEnableALILSNFCheckboxes() {
    var x = document.getElementById("AL_s");
    x.disabled = false;
    
    x = document.getElementById("AL_l");
    x.style.color="#333333";
    
    x = document.getElementById("IL_s");
    x.disabled = false;
    
    x = document.getElementById("IL_l");
    x.style.color="#333333";
    
    x = document.getElementById("SN_s");
    x.disabled = false;
    
    x = document.getElementById("SN_l");
    x.style.color="#333333";  
    
    x = document.getElementById("AL_t");
    x.onmouseover = function() {tt_show(null,'tt_al');}
    x.onmouseout = function() {tt_hide(null,'tt_al');}
    
    x = document.getElementById("IL_t");
    x.onmouseover = function() {tt_show(null,'tt_il');}
    x.onmouseout = function() {tt_hide(null,'tt_il');}
    
    x = document.getElementById("SN_t");
    x.onmouseover = function() {tt_show(null,'tt_snf');}
    x.onmouseout = function() {tt_hide(null,'tt_snf');} 
}

function qsDisableCheckboxes() {
    var x = document.getElementById("vf_l1");
    x.style.color="#888888";
    x = document.getElementById("vf_s");
    x.disabled = true;
    x = document.getElementById("vf_l2");
    x.style.color="#888888";
    
    x = document.getElementById("alzheimers_s");
    x.disabled = true;
    x = document.getElementById("alzheimers_l");
    x.style.color="#888888";
    
    x = document.getElementById("CC_s");
    x.disabled = true;
    x = document.getElementById("CC_l");
    x.style.color="#888888";
    
    qsDisableALILSNFCheckboxes();   
    // Disable alz tootlip
    x = document.getElementById("alzheimers_t");
    x.onmouseover = null;
    x.onmouseout = null;
    
    // Disable vf tooltip
    x = document.getElementById("vf_t");
    x.onmouseover = null;
    x.onmouseout = null; 
    // Disable ccrc tooltip
    x = document.getElementById("CC_t");
    x.onmouseover = null;
    x.onmouseout = null; 
}

function qsEnableCheckboxes() {
    var x = document.getElementById("vf_l1");
    x.style.color="#ad773d";
    x = document.getElementById("vf_s");
    x.disabled = false;
    x = document.getElementById("vf_l2");
    x.style.color="#333333";
    
    x = document.getElementById("alzheimers_s");
    if (x) x.disabled = false;
    x = document.getElementById("alzheimers_l");
    if (x) x.style.color="#333333";  

    x = document.getElementById("CC_s");
    x.disabled = false;
    x = document.getElementById("CC_l");
    x.style.color="#333333";  
    
    qsEnableALILSNFCheckboxes();
    
    x = document.getElementById("alzheimers_t");
    if (x) x.onmouseover = function() {tt_show(null,'tt_alzheimers');}
    if (x) x.onmouseout = function() {tt_hide(null,'tt_alzheimers');}
    
    x = document.getElementById("vf_t");
    x.onmouseover = function() {tt_show(null,'tt_avail');}
    x.onmouseout = function() {tt_hide(null,'tt_avail');}

    x = document.getElementById("CC_t");
    x.onmouseover = function() {tt_show(null,'tt_ccrc');}
    x.onmouseout = function() {tt_hide(null,'tt_ccrc');} 
}

function qsFocusCategoryTextInput(body) {
    if (!body) return;
    var element;
    if (body == "b_city")
        element = "c_city_city";
    else if (body == "b_cnty")
        element = "c_cnty_cnty";
    else if (body == "b_addr")
        element = "c_addr_addr";
    else if (body == "b_zip")
        element = "c_zip_zip";
    else if (body == "b_name")
        element = "c_name_name";
    else 
        return;
    
    var target = document.getElementById(element);
    if (!target) return;
    target.focus();
}

function qsFade(targetcategory) {
    var cat = document.getElementById(targetcategory);
    cat.style.backgroundColor = "#efebf0";
}

function qsUnFade(targetcategory) {
    var cat = document.getElementById(targetcategory);
    cat.style.backgroundColor = "#ae97b2";
}

function qsInitializeTextInputFontStyles() {
    for (var id in QSMAP) {
        var inputElement = document.getElementById(id);

        if ((inputElement.value == QSMAP[id]) || (inputElement.value == "")){
            inputElement.style.color = "#888888";
        } else {
            inputElement.style.color = "#333333";
        }
    }        
}    
    
function qsFocusTextInput(focusedInput) {
    for (var id in QSMAP) {
        var inputElement = document.getElementById(id);
        qsDisableKeyboardSubmitOn(inputElement);

        if (focusedInput && (id == focusedInput.id)) {
            inputElement.style.color = "#333333";
                        
            if (inputElement.value == QSMAP[id]) {
                inputElement.value = "";
            }
        } else {
            if ((inputElement.value == "") || 
                (inputElement.value == QSMAP[id])) {
                inputElement.style.color = "#777777";
                if (QSMAP[id] == "Select a State")
                    inputElement.value = "";
                else
                    inputElement.value = QSMAP[id];
            } 
                else
                inputElement.style.color = "#333333";
        }
    }

    qsEnableKeyboardSubmitOn(focusedInput);
    
    // We might have put focus on this element by tabbing
    // If the element isn't visible, switch to its category
    if (focusedInput && focusedInput.parentNode) {
        if (focusedInput.parentNode.style.position != "relative")
            qsDisplay(focusedInput.parentNode.id);
    }
    return false;
}

function qsAdvancedSearchCheckboxFocus(focusedInput) {
    if (focusedInput && focusedInput.parentNode) {
        if (focusedInput.parentNode.style.position != "relative")
            qsToggleAdvancedSearch(focusedInput.parentNode.id);
    }
}

function qsEnableKeyboardSubmitOn(element) {
    if (!element) return;
    if (/Apple/.test(navigator.userAgent)) {
        window.onkeydown = window.onkeyup = function(kbd) {
            if (kbd.keyCode == 13) {
                QuickSearchSubmit();
                return false;
            }
        }
        
    } else if (isIE) {
        element.onkeypress = function() {
            if (window.event.keyCode == 13) {
                QuickSearchSubmit();
                return false;
            }
        }
    } else {
        window.onkeyup = function(kbd) {
            if (kbd.keyCode == 13) {
                QuickSearchSubmit();
            }
        }
    }
}

function qsDisableKeyboardSubmitOn(element) {
    if (!element) return;
    if (/Apple/.test(navigator.userAgent)) {
        window.onkeydown = window.onkeyup = null;
    } else if (isIE) {
        element.onkeypress = null;
    } else { 
        window.onkeyup = undefined; 
    }
}

function qsCurrentCategory() {
    for (var i=0; i < qsCategoryBodies.length; i++) {
        var body = document.getElementById(qsCategoryBodies[i]);
        if ((!bAnimate && (body.style.display == "block")) ||
            (body.style.position == "relative")) {
            return qsCategoryBodies[i].split("_")[1];
        }
    }
}

function qsBlurTextbox(element) {
    if (!element || !element.value) return;
    // Trim whitespace before doing anything
    element.value = element.value.replace(/^\s+|\s+$/g,"");

    // See if there's a 2-character state code at the end of the field
    var state = element.value.match(/ [a-zA-z][a-zA-z]$/);
    if (!state) state = element.value.match(/,[a-zA-z][a-zA-z]$/);
    if (state) {
        state = state.toString().substr(1).toUpperCase();
        var dropdown;
        if (element.id == "c_city_city")
            dropdown = document.getElementById("c_city_state");
        else if (element.id == "c_cnty_cnty")
            dropdown = document.getElementById("c_cnty_state");
        else if (element.id == "c_addr_city")
            dropdown = document.getElementById("c_addr_state");
        else
            return;
        if (!dropdown || !dropdown.options) return;
        var o;
        var stateisvalid = false;

        for (o=0; o < dropdown.options.length; o++) {
            if (!dropdown[o] || !dropdown[o].value) 
                continue;
            if (dropdown[o].value.toUpperCase() == state) {
                stateisvalid = true;
                break;
            }
        }
        if (stateisvalid) {
            dropdown.value = state; 
            if (element.value.match(/ [a-zA-z][a-zA-z]$/))
                element.value = element.value.replace(/ [a-zA-Z][a-zA-Z]$/, ""); 
            else
                element.value = element.value.replace(/,[a-zA-Z][a-zA-Z]$/, ""); 
        }
    }
    // Strip trailing comma -- user might have used one before the state
    element.value = element.value.replace(/^\s+|\s+$/g,"");
    element.value = element.value.replace(/,$/, ""); 
    element.value = element.value.replace(/^\s+|\s+$/g,"");
}

function QuickSearchSubmit() {
    var current_category = qsCurrentCategory();
    var loc_field = document.getElementById("l_s");
    var name_field = document.getElementById("n_s");
    
    if (current_category == "city") {
        var city_field = document.getElementById("c_city_city");
        var state_field = document.getElementById("c_city_state");
        qsBlurTextbox(city_field);
        qsInitializeTextInputFontStyles()
        if ((city_field.value == C_CITY_CITY_DEFAULT) || (city_field.value == "") || (state_field.value == "")) {
            qsError("Must fill in City and State fields.");
            return;
        }
        loc_field.value = city_field.value + ", " + state_field.value;
        name_field.value = NAME_DEFAULT_TEXT;
    } else if (current_category == "cnty") {
        var county_field = document.getElementById("c_cnty_cnty");
        var state_field = document.getElementById("c_cnty_state");
        qsBlurTextbox(county_field);
        qsInitializeTextInputFontStyles()

        if ((county_field.value == C_CNTY_CNTY_DEFAULT) || (county_field.value == "") || (state_field.value == "")) {
            qsError("Must fill in County and State fields.");
            return;
        }
        // Strip "county", "co", or "cty" in the county field.  Note "CO" is interpreted as a state if it's at
        // the end of the field.  We'd only get a chance to replace it if there's a state code following "co".
        county_field.value = county_field.value.replace(/ county/,"");
        county_field.value = county_field.value.replace(/ County/,"");
        county_field.value = county_field.value.replace(/ co/,"");
        county_field.value = county_field.value.replace(/ CO/,""); 
        county_field.value = county_field.value.replace(/ C0/,""); 
        county_field.value = county_field.value.replace(/ cty/,"");
        county_field.value = county_field.value.replace(/ Cty/,"");
        county_field.value = county_field.value.replace(/ CTY/,"");
        
        loc_field.value = county_field.value + " county, " + state_field.value;    
        name_field.value = NAME_DEFAULT_TEXT;
    } else if (current_category == "zip") {
        var zip_field = document.getElementById("c_zip_zip");
        if ((zip_field.value == C_ZIP_ZIP_DEFAULT) || (zip_field.value == "")) {
            qsError("Must enter a ZIP.");
            return;
        }
        var zip_regexp = /\d\d\d\d\d/; // 5 sequential digits
        var zip_from_regexp = zip_field.value.match(zip_regexp);
        if (zip_from_regexp == null) {
            qsError("Couldn't find a 5-digit ZIP in the input.  Please recheck your search.");
            return;
        }
        loc_field.value = zip_from_regexp;
        name_field.value = NAME_DEFAULT_TEXT;
    } else if (current_category == "addr") {
        var addr_field = document.getElementById("c_addr_addr");
        var city_field = document.getElementById("c_addr_city");
        var state_field = document.getElementById("c_addr_state");
        qsBlurTextbox(city_field);
        qsInitializeTextInputFontStyles()
        if ((addr_field.value == C_ADDR_ADDR_DEFAULT) || (addr_field.value == "") || 
            (city_field.value == C_ADDR_CITY_DEFAULT) || (city_field.value == "")|| (state_field.value == "")) {
            qsError("Must fill in Address, City, and State fields.");
            return;
        }
        loc_field.value = addr_field.value + ", " + city_field.value + ", " + state_field.value;
        name_field.value = NAME_DEFAULT_TEXT;
    } else if (current_category == "name") {
        var nametwo_field = document.getElementById("c_name_name");
        if ((nametwo_field.value == C_NAME_NAME_DEFAULT) || (nametwo_field.value == "")) {
            qsError("Must enter a facility name or ID.");
            return;
        }
        name_field.value = nametwo_field.value;
        loc_field.value = LOCATION_DEFAULT_TEXT;
    } 
    SetSearchResultsTabId(QUICKSEARCH_SEARCH_RESULTS_TAB_ID);
    ForceFriendlyUrls(true);
    Submit();
}

function qsError(stringerror) {
    var top = document.getElementById("qs");
    var oldheight;

    if (top.style.height)
        oldheight = top.style.height;
    else if (top.offsetHeight)
        oldheight = top.offsetHeight;
    else if (top.stlye.pixelHeight)
        oldheight = top.style.pixelHeight;
    else
        oldheight = 250;
          
    var cat = document.getElementById("qs_c");
    cat.style.display = "none";
    
    var adv_s = document.getElementById("qsas");
    if (adv_s) adv_s.style.display = "none";
    
    var body = document.getElementById("qsb");
    var errbody = document.getElementById("qse");
    var errmsg = document.getElementById("qse_msg");   
    
    
    var top_title = document.getElementById("qs_t");
    var titleheight;
    if (top_title.style.height)
        titleheight = top_title.style.height;
    else if (top_title.offsetHeight)
        titleheight = top_title.offsetHeight;
    else if (top_title.stlye.pixelHeight)
        titleheight = top_title.style.pixelHeight;
    else
        titleheight = 250;

    // Display error div and set height to match the old height (-1 px fudge factor)
    body.style.display = "none";
    errbody.style.height = oldheight - titleheight - 1;
    //errbody.style.height = 191;
    errbody.style.display = "block";
    
    errmsg.innerHTML = stringerror;  
    errbody.focus();  
    
    // Disable "enter" allowing a submit while the error message is visible
    for (var id in QSMAP) {
        var inputElement = document.getElementById(id);
        qsDisableKeyboardSubmitOn(inputElement);
    }
    
    if (isIE) {
        document.getElementById("qse").onkeypress = function() {
            if (window.event.keyCode == 13) {
                qsErrorClick();
            }
        }
    } else {
        window.onkeyup = function(kbd) {
            if (kbd.keyCode == 13) {
                qsErrorClick();
            }
        }
    }
    
}

// "OK" button is clicked on the error div
function qsErrorClick() {
    // Show categories
    var cat = document.getElementById("qs_c");
    cat.style.display = "block";
    // Show checkbox div
    var body = document.getElementById("qsb");
    body.style.display = "block";
    // Show advanced search div
    var adv_s = document.getElementById("qsas");
    if (adv_s) adv_s.style.display = "block";
    
    // Hide error div
    var errbody = document.getElementById("qse");
    errbody.style.display = "none";
    
    // Disable enter key hitting OK button
    var errOK = document.getElementById("qse");
    qsDisableKeyboardSubmitOn(errOK);
}


function QuickSearchStartOver() {
    // Clear the contents of all inputs so the serialize function on window.unload
    // doesn't repopulate the cookie
    for (var id in qsSerializables) {
        document.getElementById(qsSerializables[id]).value = "";
    }
    
    // Prep tabid for SearchResultsUrl()
    SetSearchResultsTabId(QUICKSEARCH_SEARCH_RESULTS_TAB_ID);
    ForceFriendlyUrls(true);
    
    // Clear cookie so textboxes don't get refilled
    RemoveCookie(qsCookieName);
    
    // Go to search results tab with no search params
    window.location = SearchResultsUrl({});
}