var tab_object = Class.create({
	initialize: function(container) {
		this.container = $(container);
		this.triggers = this.container.select('.tab_triggers li');
		this.triggersA = this.container.select('.tab_triggers li a');
		this.content = this.container.select('.tab_item');
		this.onLoad();
		this.startup();
	},
	onLoad: function() {
		var i = 0;
		this.triggers.each(function(elem){
			elem.writeAttribute('tab',i);
			elem.observe('click',this.handleToggle.bind(this));
			i++;
		}.bind(this));
		this.triggersA.each(function(elem){
			elem.observe('click',this.handleToggle.bind(this));
		}.bind(this));
		this.container.select('h2.removeHeading').each(function(elem){
			elem.hide();
		});
	},
	startup: function() {
		this.closeTabs();
		this.triggers[0].addClassName('active_tab');
		this.content[0].show();
	},
	closeTabs: function(){
		this.content.each(function(elem){
			elem.hide();
		});
		this.resetTriggers();
	},
	openTab: function(num) {
		this.closeTabs();
		this.triggers[num].addClassName('active_tab');
		this.content[num].show();		
	},
	jumpToTab: function(id,num) {
		this.closeTabs();
		this.triggers[num].addClassName('active_tab');
		this.content[num].show();
		Effect.ScrollTo(id);
	},
	resetTriggers: function(){
		this.triggers.each(function(elem){
			elem.removeClassName('active_tab');
		});
	},
	handleToggle: function(e){
		var tab = Event.element(e);
		if(!tab.hasClassName('dontstop')){
			Event.stop(e);
		}
		if(tab.readAttribute('tab') == undefined) {
			tab = tab.up();
		}
		this.closeTabs();
		tab.addClassName('active_tab');
		var tmp = parseInt(tab.readAttribute('tab'));
		try {
			this.content[tmp].show();
		} catch(e) {
			this.openTab(0);
		};
	}
});