function getCookie(cookie_name) {
        var cookie = subcookiejar.fetch(cookie_name);
        if (cookie != null && cookie != "") {return cookie;}
        else {return false;};
};


// If there's no cookie, make a new one. If one exists, update it.
// cookie_name: string name of cookie
// cookie: loaded cookie object from subcookie.fetch
// form_selector: jQuery selector for form containing pertinent fields
// input_fields, dropdown_fields: arrays of string field names to be stored/extracted
function setCookie (cookie_name, cookie, form_selector, input_fields, dropdown_fields) {
        var days_to_expire = 3650;

        // If a value is present on the form, update cookie
        // If a value isn't present on the form but is in cookie, do nothing
        // Input form fields
        var input_field_values = {};
        for (var i = 0; i < input_fields.length; i++) {
            input_field_values[input_fields[i]] = finalValue(eval("cookie." + input_fields[i]), $(form_selector + " input[name=" + input_fields[i] + "]").val());
        };
         
        // Dropdown selection boxes
        var dropdown_field_values = {};
        for (var i = 0; i < dropdown_fields.length; i++) {
            dropdown_field_values[dropdown_fields[i]] = finalValue(eval("cookie." + dropdown_fields[i]), $(form_selector + " select[name=" + dropdown_fields[i] + "]").val());
        };

        // Combine all fields for convenient access
        var all_field_values = {};
        for (attrname in input_field_values) { all_field_values[attrname] = input_field_values[attrname]; }
        for (attrname in dropdown_field_values) { all_field_values[attrname] = dropdown_field_values[attrname]; }

        subcookiejar.bake (cookie_name, all_field_values, days_to_expire);
};


// Accepts the cookie value and form value, sends back desired value.
function finalValue (cookie_value, form_value) {
    if (form_value != undefined && form_value != "") {return form_value}
    else if (cookie_value != undefined && cookie_value != "") {return cookie_value}
    else {return ""};
};


function populateFromCookie (cookie, form_selector, input_field_list, dropdown_field_list) {
        // Input fields
        for (var i = 0; i < input_field_list.length; i++) {
                var field = input_field_list[i]
                $(form_selector + " input[name=" + field + "]").val(eval("cookie." + field));
        };

        // Dropdown fields
        for (var i = 0; i < dropdown_field_list.length; i++) {
                var field = dropdown_field_list[i]
                var cookie_val = eval("cookie." + field)
                var country_val = cookie.country

                // Adds the state field when country is set to certain values
                if (field == "state" && (country_val == "USA" || country_val == "CANADA")) {
                    stateOptions(country_val);
                };

                $(form_selector + " select[name=" + field + "]").val(cookie_val);
        };
};
