var Tabpanel = new Class({

initialize: function(options){	
	options = $merge({
		'maxOfTab': 1,
		'numberOfTab': 1,
		'divName': "",
		'selectedTab': 1,
		'tabName':[],
		'visible':false,
		'onChange':Class.empty,
		'tabactive':'tabactive'
	}, options);
	
	this.numberOfTab = options.numberOfTab;
	this.maxOfTab = this.numberOfTab>options.maxOfTab?this.numberOfTab:options.maxOfTab;	
	this.divName = options.divName;
	this.selectedTab = options.selectedTab;
	this.tabName = options.tabName;
	this.visible = options.visible;
	this.onChange = options.onChange;
	this.tabactive = options.tabactive;
	
},

init: function(){	
	if(this.tabName.length<this.maxOfTab) {
		for(var i=this.tabName.length+1; i<=this.maxOfTab; i++) {
			this.tabName.extend(["tab"+i]);
		}
	}
	this.UlElement = new Element('ul');
	this.LiElement = [];
	var evt = 'click';
	for(var j=0; j<this.maxOfTab; j++ ) {
		var li = new Element('li');
		li.appendText(this.tabName[j]);
		li.addEvent(evt, this.onClick.pass([j+1], this));		
		if(this.numberOfTab<=j){
			li.setStyle("display","none");
		}
		li.injectInside(this.UlElement);
		this.LiElement.extend([li]);
	}
	this.UlElement.injectInside($(this.divName));
	this.redraw();
},

show: function(){	
	$(this.divName).setStyle('display', 'block');
	this.visible=true;
},

hide: function(){
	$(this.divName).setStyle('display', 'none');
	this.visible=false;
},

redraw: function(){
	if(this.visible){		
		for(var i=1; i<= this.numberOfTab; i++ ){
			if(i==this.selectedTab){
				this.LiElement[i-1].addClass(this.tabactive);
			} else {
				this.LiElement[i-1].removeClass(this.tabactive);
			}
		}
	}
},

onClick: function(index) {
	this.selectedTab = index;
	this.redraw();
	this.onChange(this.selectedTab);
},

getSelectedTabIndex: function() {
	return this.selectedTab;
},

setSelectedTabIndex: function(index, fireEvent) {
	this.selectedTab = index;	
	this.redraw();
	if(fireEvent === false){}else{
		this.onChange(this.selectedTab);
	}
},

setTabName:function(index, name) {
	if(this.maxOfTab<index)
		alert("setTabName: maxOfTab<index");
	var newname=name;
	if(name.length>7) {
		newname = name.slice(0, 6);
		newname = newname.concat("...");
	}	
	this.tabName[index-1] = newname;
	this.LiElement[index-1].empty();
	this.LiElement[index-1].appendText(this.tabName[index-1]);	
},

setOnChange:function(onChange) {
	this.onChange = onChange;
},

getNumberOfTab: function() {
	return this.numberOfTab
},

setNumberOfTab: function(number) {
	this.numberOfTab = number;
	for(var j=0; j<this.maxOfTab; j++ ) {
		var li = this.LiElement[j]
		if(this.numberOfTab<=j){
			li.setStyle("display","none");
		}else{
			li.setStyle("display","");		
		}
	}
	this.selectedTab = this.selectedTab>this.numberOfTab?this.numberOfTab:this.selectedTab;
	this.redraw();
}

});
