var kitMixer = {
    
    forms:null,
    //selected_text:[],
    
    load:function(){
        var _ = this;
        $(document).ready(function(){
            _.init();
            _.initFluxDefaults();
        });
    },
    
    init:function(){
    
        var _ = this;
    
        this.forms = $("form[name=QFORM_CATEGORY]");
        
        this.forms.each(function(n,form){
            
            var selects = $(form).find("select");
            selects.each(function(i,trigger){
            
                $.data(trigger,'originalValue',trigger.value);
                
                $(trigger).change(function(){
                    
                    var selectedOption = $(this).find('option:eq('+this.selectedIndex+')');
                    if (selectedOption.is('.disabled')) {
                        alert('You may only select one of each item per kit. Misconfigured kit orders will not be processed.');
                        this.value = $.data(this,'originalValue');
                        return false;
                    }
                    _.check_selects(form);

                });
                
                $(trigger).focus(function(){
                
                    //_.check_selects(form);
                
                });
                
            });

            _.check_selects(form);
            
        });
        
    },
    
    check_selects:function(form){
        
        var _ = this;
        var selects = $(form).find("select");
        
        // get list of all selected options
        var selected_text = [];
        selects.each(function(){
            var option = $(this).find('option:eq('+this.selectedIndex+')');
            if (option.attr('value') != '') selected_text.push(option.html());
        });
                
        selects.find("option").removeClass('disabled');
        selects.find("option").removeAttr('disabled');
        selects.find("option").css({color:'#000'});
        
        // test each select for options identical to the one just selected:                            
        selects.each(function(){
            
            var options = $(this).find('option');
            
            options.each(function(i,option){

                $(option).removeClass('disabled');
                                                            
                var search = $(option).html();
                                
                if (selected_text.indexOf(search) != -1 && search != 'None') {

                    if ($(option).attr('selected')==false) {
                        $(option).addClass('disabled');
                        $(option).attr({disabled:'disabled'});
                        $(option).css({color:'#999'});
                    }
                }
            
            });
            
        });
        
    },
    
    // note: call this AFTER init()!
    initFluxDefaults:function(){    
        
        var selects = this.forms.find("select");
        selects.each(function(i,select){
            
            if (select.value!='') return true;
            
            var options = $(select).find('option');
            options.each(function(i,option){
            
                if ($(option).html()=='None') {
                    select.selectedIndex = i;
                }
            
            });
            
        });
    
    }
    
    
}.load();

if(!Array.prototype.indexOf){
    Array.prototype.indexOf=function(obj,start){
        for(var i=(start||0),j=this.length;i<j;i++){
            if(this[i]==obj){return i;}
        }
        return -1;
    }
}

