/****
 * Copyright (c) 2009 Christian Zenker <christian.zenker@599media.de>
 * MIT-style license
 ****/
var Tabbed = new Class({
	/**
	 * Constructor
	 * 
	 * @param {Element} The parent Element that holds the entry elements
	 * @param {Object} Options
	 */
	initialize: function(el) {
		el = el ? el : 'tabbed';
		var boxes = $$('div.'+el);
		var toggles = $$('a.'+el);
		if(boxes.length != 0 && boxes.length == toggles.length){
			this.tabs = new Array();
			var height = 0;
			toggles.each(function (toggle, i) {
				var box = boxes[i];
				var tempHeight = box.getStyle('height').toInt();
				height = (height > tempHeight) ? height : tempHeight;
				box.setStyle('display','none');
	
				toggle.addEvents({
					'mouseenter': this.onMouseEnter.bindWithEvent(this, i),
					'mouseleave': this.onMouseLeave.bindWithEvent(this, i),
					'click': this.onMouseClick.bindWithEvent(this, i)
				});
				
				this.tabs.push({
					toggle: toggle,
					box: box
				});
			}.bind(this));
			
			height = height+1+'px';
			this.tabs.each(function(el) {
				el.box.setStyle('height', height);
			});
			
			this.tabs[0].toggle.addClass('selected');
			this.tabs[0].box.setStyle('display', 'block');
			this.selected = 0;
		}
	},
	onMouseEnter: function(ev,i) {
		this.tabs[this.selected].toggle.removeClass('selected');
	},
	onMouseLeave: function(ev,i) {
		this.tabs[this.selected].toggle.addClass('selected');
	},
	onMouseClick: function(ev,i) {
		ev.stop();
		this.tabs[this.selected].toggle.removeClass('selected');
		this.tabs[this.selected].box.setStyle('display', 'none');
		this.selected = i;
		this.tabs[this.selected].toggle.addClass('selected');
		this.tabs[this.selected].box.setStyle('display', 'block');
	}
}).implement(new Events);

