

/***************************************************************************
		TABBER - a basic tab class
		usage =
				<ul class="tabs">
					<li class="selected"  tab="tab1"><a href="#">tab1</a></li>
					<li  tab="tab2"><a href="#" >tab2</a></li>
				</ul>
				<div id="tab1" class="tab_content_selected"></div>
				<div id="tab2" class="tab_content"></div>

***************************************************************************/

		var Tabber = Class.create();
		Tabber.prototype = {
			selected_tab: 0,
			tabs: [],
			tab_links: [],
			tab_contents: [],
			name: "tabs",
			initialize: function(id){
				printfire("setting up tabs");
				var self = this;
				if(id){
					self.name = id;
					self._setup_tabs($(id));
					
				}else{
					this.tabsets = document.getElementsByClassName("tabs");
					$A(this.tabsets).each(function(elem){
						// get rid of all ugly hrefs if js is supported
						self._setup_tabs(elem);
					});
				}
				if($('tabber_next')){
					$('tabber_next').onclick = function(){self.next_tab()};
				}
				if($('tabber_previous')){
					$('tabber_previous').onclick = function(){self.previous_tab()};
				}
			},
			_select_tab: function(tab){
				var self = this;
				this._before_load();
			//	tab = $(tab);
				var url = tab.getAttribute('url');
				var params = encodeURI(tab.getAttribute('params'));
				$A(self.tabs).each(function(t, index){
					if(Element.hasClassName(self.tab_links[index], "selected")){
						if(self.tab_links[index].className.match(/tabs/)){
							// workaround for wierd bug when you have 2 tabbers on one page.
							if(!Element.hasClassName(self.tab_links[index], self.name))
								return;
						}
						printfire('my name : ' + self.name); 
						printfire('link class : ' + self.tab_links[index].className); 
						Element.removeClassName($(self.tab_links[index]), "selected");
					}
					if(tab == t){
						printfire('selecting: my name : ' + self.name); 
						printfire('index: ' + index);
						Element.addClassName(self.tab_links[index],"selected");
						self.selected_tab = index;
					}
				});
				new Ajax.Updater('tab_content_' + self.name, url, {method: 'post',evalScripts: true, asynchonous: true, parameters: params, onComplete: function(){self._after_load()}})
			},
			_before_load: function(){
				Tabber.onTabChange();
				//$('tab_content').style.display = 'none';
				//$('loading_div').style.display = 'block';
			},
			_after_load: function(){
				//$('loading_div').style.display = 'none';
				//$('tab_content').style.display = 'block';
			},
			_setup_tabs: function(tabset){
				var self = this;
				$A(tabset.getElementsByTagName("li")).each(function(li){
					printfire('setting up tab: ' + li.getAttribute('url'));
					if(!Element.hasClassName(li, 'ignore')){
						li.tabset = tabset.id;
						self.tabs.push(li);
						$A(li.getElementsByTagName("a")).each(function(a){
							printfire('adding: ' + a.href + ' my name : ' + self.name); 
							self.tab_links.push(a);
							a.href = "javascript:void(0)";
						});
						li.style.cursor = 'pointer';
						li.onclick=function(){
							printfire('clicking: my name : ' + self.name); 
							self._select_tab($(li));
						}
					}
				});
				/*$A(tabset.getElementsByTagName("a")).each(function(a){
					a.href = "javascript:void(0)";
				});*/
			},
			next_tab: function(){
				if((this.selected_tab + 1) < this.tabs.length){
					printfire('selecting tab?'  + (this.selected_tab + 1) );
					this._select_tab(this.tabs[this.selected_tab + 1]);
				}
			},
			previous_tab: function(){
				if((this.selected_tab - 1 ) >= 0){
					printfire('selecting tab?'  + (this.selected_tab - 1) );
					this._select_tab(this.tabs[this.selected_tab - 1]);
				}
			}
			

		}
		Tabber.onTabChange = function(){}



