/*
*   Forms
*   Forms Functionality
*
*   Requires: Trapeze jQuery distribution
*
*   Marcos Abreu - May 26, 2009
*/

$.namespace("trapeze.Forms.ShowHideDependency");

trapeze.Forms.ShowHideDependency = $.Class.extend({
    settings : null,

    show_hide : function(evt) {
        var obj = (evt.type == this.settings.event_trigger) ? $(evt.currentTarget) : evt;
        var compare = this.settings.value_to_compare;
        if ((compare!=='null') && (obj.val().toLowerCase().indexOf(compare) >= 0)  || 
            (!(compare) && (obj.attr('type') == 'checkbox' || obj.attr('type') == 'radio') && (obj.attr('checked')))){
            $(this.settings.dependency_selector).show(this.settings.show_speed);
        } else {
            $(this.settings.dependency_selector).hide();
        }
    },

    set_dependency : function() {
            if ($(this.settings.selector).filter(':checked').size() > 0) {
                this.show_hide($(this.settings.selector).filter(':checked'));
            } else if ($(this.settings.selector).children(':selected').size() > 0) {
                this.show_hide($(this.settings.selector).children(':selected'));
            } else {
                $(this.settings.dependency_selector).hide();
            }
        $(this.settings.selector).bind(this.settings.event_trigger, this.show_hide.bind(this));
    },

    init : function(params) {
        var default_options = {
            event_trigger       : 'change',
            show_speed          : 'normal',
            dependency_selector : null,
            value_to_compare    : null,
            selector            : null
        };

        this.settings = $.extend({}, default_options, params);
        this.set_dependency();
    }
});

