// JavaScript Document
/**************************************************************



	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: 1000,

			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 != null){

			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);





/*************************************************************/