Ext.onReady(function(){

    function applyChecked(cb){
        if(cb.dom.checked){
            cb.up('li').replaceClass('off', 'on');
        }else{
            cb.up('li').replaceClass('on', 'off');
        }
    }
    
    var cboxes = Ext.select('#dep-wrapper input.main-cb', true);
    var oboxes = Ext.select('#dep-wrapper input.option-cb', true);
    cboxes.on('click', function(){
        applyChecked(this);
    });
    cboxes.each(applyChecked);

    var dw = Ext.get('dep-wrapper');

    // simple function to make attaching behaviors easier
    function actions(o){
        for(var el in o){
            var parts = el.split('@');
            Ext.select(parts[0], true).on(parts[1], o[el]);
        }
    }

    actions({
        '#hide-files@click' : function(){
             dw[!this.dom.checked ? 'addClass' : 'removeClass']('hide-files');
        },

        '#hide-dep@click' : function(){
             dw[!this.dom.checked ? 'addClass' : 'removeClass']('hide-dep');
        },

        '#hide-opt@click' : function(){
             dw[!this.dom.checked ? 'addClass' : 'removeClass']('hide-opt');
        },

        '#check-all@click' : function(){
             var on = this.dom.checked;
            cboxes.each(function(){
                if(!this.dom.disabled && this.dom.checked != on){
                    this.dom.checked = on;
                    applyChecked(this);
                }
            });
            oboxes.each(function(){
                if(!this.dom.disabled && this.dom.checked != on){
                    this.dom.checked = on;
                    applyChecked(this);
                }
            });
        },

        '#next@click' : function(e){
            e.stopEvent();
            //Ext.select('#next, #select-lib').setDisplayed(false);
            //Ext.select('#select-cmp, #build, #back').show();
			Ext.fly('sel-form').dom.submit();
        },

        '#back@click' : function(e){
            e.stopEvent();
            //Ext.select('#next, #select-lib').show();
            //Ext.select('#select-cmp, #build, #back').setDisplayed(false);
			history.go(-1);
        },

        '#build@click' : function(e){
            e.stopEvent();
            Ext.fly('dep-form').dom.submit();
        }
    });

    // labels broken in Safari
    if(Ext.isSafari){
        Ext.select('#dep-wrapper label', true).on('click', function(){
            var f = this.dom.getAttribute('for');
            if(f){
                var cb = Ext.get(f);
                if(!cb.dom.disabled){
                    cb.dom.checked = !cb.dom.checked;
                    applyChecked(cb);
                }
            }
        });
    }
});