// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

function clearValueOnFocus(elem, default_value) 
{
    if (elem.value == default_value) 
    {
        elem.value = "";
    }
}
function log(message) {} // { $("#log").append(message+"<br/>"); }
// <input type="button" onclick='$("#log").html("")' value="clear"/>
// <div id="log">Start<br/>
DefaultValues = {
    watch: function(field, event) {
        // For fields that have a default-value
        // See lib/has_parameters.rb
        // "disabled" on the default-value field is used to signal rails
        // If it is submitted (i.e. enabled), then that means "use default value",
        // and ignore the real-value
        log("Watch "+$(field).attr('name') + " : " + $(field).attr('value'));
        parsed = $(field).attr('name').match(/^([^\[]+)\[([^\]]+)/);
        id_base =  parsed ? parsed[1]+'_' : '';
        param_name = parsed ? parsed[2] : $(field).attr('name');
        default_id = id_base+'is_default_'+param_name;

        default_field = $("#"+default_id);
        // if we input something, goto normal & mark not-using-default
        if ($(field).attr('value')) {
            if (! default_field.attr('disabled')) {
                log("goto normal")
                $(field).removeClass('default_value');
                default_field.attr('disabled',true);
                }
            }
        // if we clear the field, goto gray & mark using-default
        else {
            this.as_default(id_base,param_name)
            }

        // log("done!")
        },

    as_default: function(prefix, suffix, value) {
        // goto gray & mark using-default, and set the value (optional, means use the default field's value)
        field = prefix+suffix;
        default_field = prefix+"is_default_"+suffix;
        if (value == undefined) {
            log("# use the default's value");
            value = $('#'+default_field).attr('value');
            }

        log("use default "+field+"("+default_field+") : "+value);
        $('#'+field).addClass('default_value');
        $('#'+field).attr('value', value);
        $('#'+default_field).attr('disabled',false);
        },

    use_derived_value: function(field, id_base, target, data) {
        selected = field.options[field.selectedIndex].value;
        derived = data[selected];
        // the default is effectively our implied value
        $('#'+id_base+'is_default_'+target).val(derived);
        this.as_default(id_base, target, derived);
        }
    }

jQuery.ajaxSetup({
    'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript, text/html, application/xml, text/xml, */*"); }
});
