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 C_CHAIN_CHAIN_DEFAULT = "Enter a chain name";
var C_CHAIN_CITY_DEFAULT = "Enter a city 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;
QSMAP["c_chain_chain"] = C_CHAIN_CHAIN_DEFAULT; 
QSMAP["c_chain_city"] = C_CHAIN_CITY_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"] = "";
QSTBMAP["c_chain_chain"] = ""; 
QSTBMAP["c_chain_city"] = "";

var qsTextboxes = new Array(
    "c_city_city", "c_cnty_cnty", "c_zip_zip", 
    "c_addr_addr", "c_addr_city", "c_name_name",
    "c_chain_chain","c_chain_city");
var qsCategories = new Array("c_city", "c_cnty", "c_zip", "c_addr", "c_name","c_chain");
var qsCategoryTitles = new Array("t_city", "t_cnty", "t_zip", "t_addr", "t_name","t_chain");
var qsCategoryBodies = new Array("b_city", "b_cnty", "b_zip", "b_addr", "b_name","b_chain");
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","c_chain_chain",
                                "c_chain_city","c_chain_state");
var qsAdvancedSearchCheckboxes = new Array("cancer_s", "diabetes_s", "heart-disease-or-heart-failure_s",
                                "lung-disease_s", "alzheimers_s", "medicaid-payment_s",
                                "medicare-payment_s", "assistance-daily-activities_s", "housekeeping-laundry_s",
                                "medication-management_s", "facility-provides-transportation_s", "nursing_s");

var qsCookieName = "REVOLUTIONHEALTHSearch";

// Dummy function so we don't get js errors with a manual chain search on the Alzheimer's portal
function ToggleChainSearch() {}

function ShowLoadingScreen() {}

// 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");
    QSCookie = GetCookie(qsCookieName);
    var chainSearchIndicator = "category*chain";  
    if (ParseHelper && ParseHelper.value &&
        QSCookie.indexOf(chainSearchIndicator) == -1) {
        CookieIsFromSearchResults = true;
        QSCookie = ParseHelper.value;
    }
     
    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;
    var label;
    
    for (var id in qsAdvancedSearchCheckboxes) {
        chk = document.getElementById(qsAdvancedSearchCheckboxes[id]);
        label = document.getElementById(qsAdvancedSearchCheckboxes[id].replace(/_s/,"_l"));  
        param_name = qsAdvancedSearchCheckboxes[id].substring(0, qsAdvancedSearchCheckboxes[id].length - 2); // chop off trailing "_s"
        if (paramarams[param_name] == "true") {
            if (chk) chk.checked = true;
            //label.className = "label_check c_on";
            expand_as = true;
        }
        
        
    }
        
    // Hide advanced search options if none were checked
    if (!expand_as) {
        qsH("b_as");
    } else {
        qsToggleAdvancedSearch("b_as",'advancedSearchToggleImage');
    }
    if(isIE) {
        setTimeout("IEVisibilityFix()",100);  
    }
}

function IEVisibilityFix() {
    for(var id in QSMAP) {
        var element = document.getElementById(id);
        element.style.display = "block"; 
    }
}

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";
        }
    }
    if (id == "b_name") {
        var bd = document.getElementById("qsb");
        bd.className = "qsBody qsBodyNameCollapsed";
    }
}
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";
        }
        qsSetBottomBorderStyle(body,"1px solid #cccccc"); 
    }
    if (id == "b_name") {
        var bd = document.getElementById("qsb");
        bd.className = "qsBody qsBodyNameExpanded";
    }
}
function qsSetBottomBorderStyle(bodyElement,bottomBorderStyle) {
    var titleName = bodyElement.getAttribute('id');
    titleName = titleName.replace(/b_/,"t_");
    var titleElement = document.getElementById(titleName);
    titleElement.style.borderBottom = bottomBorderStyle;
}
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]);
           
            qsSetBottomBorderStyle(
                document.getElementById(qsCategoryBodies[i]),
                "1px solid #E4DFDF");
        }         
    }
    var bd = document.getElementById("qsb");
    bd.className = "qsBody qsBodyNameCollapsed";
}

function qsDisplay(targetbodyelement) {   
    var target = document.getElementById(targetbodyelement);
    // If category is already selected, do nothing
    if ((target.style.position == "relative") && bAnimate)
        return;
        
    qsSetBottomBorderStyle(target,"1px solid #cccccc");  
    
    
    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);
    } 
}


function qsToggleAdvancedSearch(targetbodyelement,toggleImage) {
    var target = document.getElementById(targetbodyelement);
    var img = document.getElementById(toggleImage); 
    
    // 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);
            img.className = 'qsAdvancedSearchToggleImageCollapsed';
        } else {
            qsH(targetbodyelement);
        }
        
        
        
        
        // Switch collapse button to expand
        var button_image = document.getElementById("qsAdvancedSearchImageButton");
        if (button_image) {
            
        }
          } 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);
                img.className = 'qsAdvancedSearchToggleImageExpanded';
            } 
        
        
       
        
    }
}



// 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 = "552px";
    tt_show(evt,elm); 
}

function ccrc_click(elm) {
    if(typeof(elm) == 'string') {
        elm = document.getElementById(elm);  
    }
    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="#ccc";
    
    x = document.getElementById("IL_s");
    x.disabled = true;
    x = document.getElementById("IL_l");
    x.style.color="#ccc";
    
    x = document.getElementById("SN_s");
    x.disabled = true;
    x = document.getElementById("SN_l");
    x.style.color="#ccc"; 
    
}



function qsEnableALILSNFCheckboxes() {
    var x = document.getElementById("AL_s");
    x.disabled = false;
    
    x = document.getElementById("AL_l");
    x.style.color="#000";
    
    x = document.getElementById("IL_s");
    x.disabled = false;
    
    x = document.getElementById("IL_l");
    x.style.color="#000";
    
    x = document.getElementById("SN_s");
    x.disabled = false;
    
    x = document.getElementById("SN_l");
    x.style.color="#000";  
}

function qsDisableCheckboxes() {
    var x = document.getElementById("vf_l1");
    x.style.color="#ccc";
    x = document.getElementById("vf_s");
    x.disabled = true;
    x = document.getElementById("vf_l2");
    x.style.color="#ccc";
    
    x = document.getElementById("alzheimers_s");
    x.disabled = true;
    x = document.getElementById("alzheimers_l");
    x.style.color="#ccc";
    
    x = document.getElementById("CC_s");
    x.disabled = true;
    x = document.getElementById("CC_l");
    x.style.color="#ccc";
    
    qsDisableALILSNFCheckboxes();   
    
    // 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 = document.getElementById("vf_s");
    x.disabled = false;
    x = document.getElementById("vf_l2");
    
    
    x = document.getElementById("CC_s");
    x.disabled = false;
    x = document.getElementById("CC_l");
      
    
    qsEnableALILSNFCheckboxes();
}

function qsFocusCategoryTextInput(body, also_click) {
    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 if (body == "b_chain")
        element = "c_chain_chain";
    else 
        return;
    
    var target = document.getElementById(element);
    if (target)
        target.focus();
    
    if (target && also_click) {
        target.click();
        qsFocusTextInput(target);
    }
}

function qsFade(targetcategory) {
    var cat = document.getElementById(targetcategory);
    if (targetcategory == "t_as") {
        if (/Expanded/.test(cat.className))
            cat.className = "qsAdvancedSearchTitleMouseOver qsAdvancedSearchTitleExpanded";
        else
            cat.className = "qsAdvancedSearchTitleMouseOver";
    } else {
        cat.className = "qsCategoryTitleMouseOver";
    }
}

function qsUnFade(targetcategory) {
    var cat = document.getElementById(targetcategory);
    if (targetcategory == "t_as") {
        if (/Expanded/.test(cat.className))
            cat.className = "qsAdvancedSearchTitle qsAdvancedSearchTitleExpanded";
        else
            cat.className = "qsAdvancedSearchTitle";
    } else {
        cat.className = "qsCategoryTitle";
    }
}

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.onkeypress = function(kbd) {
            if (kbd.keyCode == 13) {
                QuickSearchSubmit();
                return false;
            }
        }
    } else if (isIE || /Opera/.test(navigator.userAgent)) {
        element.onkeypress = function() {
            if (window.event.keyCode == 13) {
                QuickSearchSubmit();
                return null;
            }
        }
    } else {
        window.onkeypress = function(kbd) {
            if (kbd.keyCode == 13) {
                QuickSearchSubmit();
                return false;
            }
        }
    }
}

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");
    var chain_field = document.getElementById("ch_s");
    
    // CITY SEARCH ==============================================================================
    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 == "")) {
            return qsError("Must fill in City and State fields.");
        }
        loc_field.value = city_field.value + ", " + state_field.value;
        name_field.value = NAME_DEFAULT_TEXT;
        chain_field.value = CHAIN_DEFAULT_TEXT; 
    }
    // COUNTY SEARCH ============================================================================ 
    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 == "")) {
            return qsError("Must fill in County and State fields.");
        }
        // 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;
        chain_field.value = CHAIN_DEFAULT_TEXT;
    } 
    // ZIPCODE SEARCH ==========================================================================
    else if (current_category == "zip") {

        var zip_field = document.getElementById("c_zip_zip");
        if ((zip_field.value == C_ZIP_ZIP_DEFAULT) || (zip_field.value == "")) {
            return qsError("Must enter a ZIP.");
        }
        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) {
            return qsError("Couldn't find a 5-digit ZIP in the input.  Please recheck your search.");
        }
        loc_field.value = zip_from_regexp;
        name_field.value = NAME_DEFAULT_TEXT;
        chain_field.value = CHAIN_DEFAULT_TEXT; 
    } 
    // ADDRESS SEARCH ===========================================================================
    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 == "")) {
            return qsError("Must fill in Address, City, and State fields.");
        }
        loc_field.value = addr_field.value + ", " + city_field.value + ", " + state_field.value;
        name_field.value = NAME_DEFAULT_TEXT;
        chain_field.value = CHAIN_DEFAULT_TEXT;
    } 
    // NAME SEARCH ==============================================================================
    else if (current_category == "name") {
        var nametwo_field = document.getElementById("c_name_name");
        if ((nametwo_field.value == C_NAME_NAME_DEFAULT) || (nametwo_field.value == "")) {
            return qsError("Must enter a facility name or ID.");
        }
        name_field.value = nametwo_field.value;
        loc_field.value = LOCATION_DEFAULT_TEXT;
        chain_field.value = CHAIN_DEFAULT_TEXT; 
    } 
    // CHAIN SEARCH =============================================================================
    else if(current_category == "chain") {
        var chain_input = document.getElementById("c_chain_chain");
        var city = document.getElementById("c_chain_city");
        var state = document.getElementById("c_chain_state");   
        if(chain_input.value == C_CHAIN_CHAIN_DEFAULT || chain_field.value == "") {
            return qsError("Must enter a chain name");
        }
       
        var locationText = "";
        if(state.value == "" && (city.value != C_CHAIN_CITY_DEFAULT && city.value != "")) {
            return qsError("Must fill in City and State fields.");
        }
        if(state.value != "") {
            locationText += state.value;
            if(city.value != "" && city.value != C_CHAIN_CITY_DEFAULT) {
                locationText = city.value + ", " + locationText;
            } 
        }else {
            locationText = LOCATION_DEFAULT_TEXT;
        }
        loc_field.value = locationText; 
        name_field.value = NAME_DEFAULT_TEXT;
        chain_field.value = chain_input.value; 
    }
     
    SetSearchResultsTabId(QUICKSEARCH_SEARCH_RESULTS_TAB_ID);
    ForceFriendlyUrls(true);
    Submit();
}

// User clicked submit without filling in all form fields
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");
    if (cat && cat.style)
        cat.style.display = "none";
    
    var body = document.getElementById("qsb");
    var errbody = document.getElementById("qse");
    var errmsg = document.getElementById("qse_msg");   
    var advsearch = document.getElementById("qsas");
    var advsearchbottom = document.getElementById("qsAdvancedSearchBottomShadow");
    
    // Hide advanced search drop shadow bottom
    if (advsearchbottom && advsearchbottom.style)
        advsearchbottom.style.display = "none";
    
    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";
    if (advsearch)
        advsearch.style.display = "none";
    
    errbody.style.height = (oldheight - titleheight) + "px";
    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 (/Apple/.test(navigator.userAgent)) {
        window.onkeypress = function() {
            if (window.event.keyCode == 13) {
                qsErrorClick();
                return false;
            }
        }
    } else if (isIE) {
        errbody.onkeypress = function() {
            if (window.event.keyCode == 13) {
                qsErrorClick();
                return null;
            }
        }
    } else if (/Opera/.test(navigator.userAgent)) {
        errbody.onkeypress = function() {
            if (window.event.keyCode == 13) {
                qsErrorClick();
                return null;
            }
        } 
    } else {
        window.onkeypress = function(kbd) {
            if (kbd.keyCode == 13) {
                qsErrorClick();
                return false;
            }
        }
    }
}

// "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);
    
    // Switch drop shadow bg image back
    var advsearchbottom = document.getElementById("qsAdvancedSearchBottomShadow");
    if (advsearchbottom)
        advsearchbottom.style.display = "block";
    
    // Refocus text input
    var curcat = "b_" + qsCurrentCategory();
    qsFocusCategoryTextInput(curcat, true);
}


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({});
}

var safari = navigator.userAgent.toLowerCase().indexOf("safari") != -1;








