/**************************************************************

	
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);



/*************************************************************/