var OM_mooSwitchMenu = new Class({
	Implements: [Options, Events],
	options: {
		onLoad: 'empty',
		controls: 'empty',
		transition: Fx.Transitions.Quad.easeInOut,
		duration: 500
	},
	initialize: function(options,ul){
		this.menuHolder = ul;
		this.menuArray = $empty;
		this.setOptions(options);
		this.controls = this.options.controls;
		window.addEvent('domready', this.domReady.bind(this));
	},
	domReady: function(){
		this.menuHolder = $(this.menuHolder);
		this.controls = $(this.controls);
		this.controls = this.controls.getElements('a');
		if($defined(this.menuHolder)){
			this.menuArray = this.menuHolder.getElements('ul.menu');
			this.menuArray.set('slide',{
				duration: this.options.duration,
				transition: this.options.transition
			});
			this.onLoad();
			this.initializeControls();
		};
	},
	onLoad: function(){
		this.setActive(this.controls[this.options.onLoad]);
		this.menuArray.slide('hide');
		this.menuArray[this.options.onLoad].slide('show');
	},
	initializeControls: function(){
		var controls = this.controls;
		var menus = this.menuArray;
		var that = this;
		controls.addEvent('click', function(event){
			event.stop();
			var index = controls.indexOf(this);
			if(!menus.some(function(content,i){
				var slide = content.get('slide');
				if(slide.open && i!=index){
					slide.slideOut().chain(function(){
						menus[index].slide('in');
					});
					return true;
				}
			})){
				menus[index].slide('in');	
			}
			that.setActive(this);
		});
	},
	setActive: function(control){
		this.controls.each(function(item){
			if(item.get('class').contains('active')){
				item.removeClass('active');
			}
			if(item==control){
				item.addClass('active');	
			}
		},this);
	}
});
