var mooswap = new Class({
	initialize: function(options) {
		this.options = Object.extend({
			elementId: 'mooswap',
			onClass: '',
			offClass: '',
			selectedIndex: 0,
			duration: 1000
		}, options || {});
		if (this.options.onClass == '') this.options.onClass = this.options.elementId+'_on';
		if (this.options.offClass == '') this.options.offClass = this.options.elementId+'_off';
		this.efx_on = new Array();
		this.efx_off = new Array();
		this.effects();
		this.write();
	},
	
	effects: function() {
		$(this.options.elementId+'_content').getElements('div[id=content]').each(function(el,index){
			this.efx_on[index] = new Fx.Style(el, 'opacity', {duration:800,wait:false});
			this.efx_off[index] = new Fx.Style(el, 'opacity', {duration:400,wait:false});
		}.bind(this));		
	},
	
	write: function() {
		$(this.options.elementId+'_content').getElements('div[id=content]').each(function(el,index){
			if (index != 0) {
				el.setStyle('visibility','hidden');
			}	
		}.bind(this));
		$(this.options.elementId+'_rollovers').getElements('div[id=rollover]').each(function(el,index){
			if (index == 0) {
				el.setProperty('class',this.options.onClass);
			}else{
				el.setProperty('class',this.options.offClass);
			}
			el.addEvent('mouseenter', function(e){
				e = new Event(e);
				this.show(index);
				e.stop();
			}.bind(this));
		}.bind(this));
	},
	
	show: function(elementIndex) {
		if (this.options.selectedIndex != elementIndex) {
			//Stop all events
			$(this.options.elementId+'_content').getElements('div[id=content]').each(function(el,index){
				this.efx_on[index].stop();
				this.efx_off[index].stop();
			}.bind(this));
			//Change rollover
			$(this.options.elementId+'_rollovers').getElements('div[id=rollover]').each(function(el,index){
				if (index != elementIndex) {
					el.setProperty('class',this.options.offClass);
				}	
			}.bind(this));
			$(this.options.elementId+'_rollovers').getElements('div[id=rollover]').each(function(el,index){
				if (index == elementIndex) {
					el.setProperty('class',this.options.onClass);
				}	
			}.bind(this));
			//Change content
			$(this.options.elementId+'_content').getElements('div[id=content]').each(function(el,index){
				if (index == this.options.selectedIndex) {
					this.efx_off[index].start(1, 0);
				}else if (index != elementIndex) {
					el.setStyle('visibility','hidden');
				}	
			}.bind(this));
			$(this.options.elementId+'_content').getElements('div[id=content]').each(function(el,index){
				if (index == elementIndex) {
					this.efx_on[index].start(0, 1);
				}	
			}.bind(this));
			this.options.selectedIndex = elementIndex;
		}
	}
	
});