/**************************************************************         
Script  : Image Menu    Version : 2.2   Authors : Samuel Birch  Desc    :       Licence : Open Source MIT Licence  **************************************************************/  
var ImageMenu = new Class({             
        getOptions: function(){                 
                return {                        
                        onOpen: false,                  
                        onClose: Class.empty,                   
                        openWidth: 200,                         
                        transition: Fx.Transitions.quadOut,                     
                        duration: 400,                  
                        open: null,                     
                        border: 0               
                };      
        },      

initialize: function(elements, options){                
        this.setOptions(this.getOptions(), options);                            
        this.elements = $$(elements);                           
        this.widths = {};               
        this.widths.closed = this.elements[0].getStyle('width').toInt();                
        this.widths.openSelected = this.options.openWidth;              
        this.widths.openOthers = Math.round(((this.widths.closed*this.elements.length) - (this.widths.openSelected+this.options.border)) / (this.elements.length-1))                                            
        this.fx = new Fx.Elements(this.elements, {wait: false, duration: this.options.duration, transition: this.options.transition});                          this.elements.each(function(el,i){                      
                el.addEvent('mouseenter', function(e){                          
                        new Event(e).stop();                            
                        this.reset(i);                                                  
                }
.bind(this));                                           
        el.addEvent('mouseleave', function(e){                          
                new Event(e).stop();                            
                this.reset(this.options.open);                                                  
        }
.bind(this));                                           
var obj = this;                          
el.addEvent('click', function(e){                               
        if(obj.options.onOpen){                                         
                new Event(e).stop();                                    
                if(obj.options.open == i){                                              
                        obj.options.open = null;                                                
                        obj.options.onClose(this.href, i);                                      
                }
                else{                                           
                        obj.options.open = i;                                           
                        obj.options.onOpen(this.href, i);                                       
        }       
}
})
}
.bind(this));                           
if(this.options.open){                  
        if($type(this.options.open) == 'number'){                               
                this.reset(this.options.open);                  
        }
        else{                           
                this.elements.each(function(el,i){                                      
                        if(el.id == this.options.open){                                                 
                                this.reset(i);                                  
                        }                               
                }
        ,this);                         
        }               
}                       
},              
reset: function(num){           
        if($type(num) == 'number'){                     
                var width = this.widths.openOthers;                     
                if(num+1 == this.elements.length){                              
                        width += this.options.border;                   
                }               
        }
        else{                   
                var width = this.widths.closed;                 
        }                               
        var obj = {};           
        this.elements.each(function(el,i){                      
                var w = width;                  
                if(i == this.elements.length-1){                                
                        w = width+5                     
                }                       
                obj[i] = {'width': w};          
        }.bind(this));                          
        if($type(num) == 'number'){                     
                obj[num] = {'width': this.widths.openSelected};                 
        }                                               
        this.fx.start(obj);     
        }        
});  
ImageMenu.implement(new Options); 
ImageMenu.implement(new Events);   
/*************************************************************/