/**
 * 
 * Prototabs 
 *
 * (c) 2007 James Starmer
 *
 * Prototabs is freely distributable under the terms of an MIT-style license.
 * For details, see the web site: http://www.jamesstarmer.com/prototabs
 *
 * EU-Car Anpassungen Elko Panzyk, 2008
 *
 * $Id: prototabs.js 310 2008-10-09 09:57:27Z panzyk $
 * $Revision: 310 $
 */
var ProtoTabs = Class.create();
ProtoTabs.prototype = {
	
	initialize: function(element, options) {
		this.options = Object.extend({
			defaultPanel: '',
			ajaxUrls: 			{},
			ajaxLoadingText: 	'Loading...'	
		}, options || {});
		
		this.currentTab = '';
		this.b_allesZeigen = false; 
		this.element = $(element);
		this.listElements = $A(this.element.getElementsByTagName('LI'));

		//loop over each list element
		for(var i = 0; i < this.listElements.length; i++) {	
			
			//get the tabs
			tabLI = this.listElements[i];
			var itemLinks = tabLI.getElementsByTagName('A');
			tabLI.itemId = itemLinks[0].href.split("#")[1];
			tabLI.linkedPanel = $(tabLI.itemId);
			tabLI.linkedPanel.style.clear = "both";		//firefox hack

			//check for the intially active tab
			if((this.options.defaultPanel != '') && (this.options.defaultPanel == tabLI.itemId)){
				this.openPanel(tabLI);
			}else{
				$($(tabLI).linkedPanel).hide();
			}

			// watch for clicked
			if ( tabLI.itemId === "_ALL" ){ 
			
			$(itemLinks[0]).observe('click', function(event){
					    this.showAll();					
					    Event.stop(event); // like return false;
			    }.bind(this));
			
			 } else {
			    $(itemLinks[0]).observe('click', function(event){
					    element = Event.findElement(event, 'LI');
					    this.openPanel(element);					
					    Event.stop(event); // like return false;
			    }.bind(this));
			}
		}
		
	},
	
	/**
	 * showAll ( keine Ajax-Unterstützung )
	 * @author Elko Panzyk, Panzyk Networks
	 */
	showAll: function (){
	/**
	 * Flag umkehren
	 */
	this.b_allesZeigen = !this.b_allesZeigen;
	
	/**
	 * Entferne Selected Tab
	 */
	if(this.currentTab != ''){
		this.currentTab.removeClassName('selected');
		}
	
	/**
	 * gehe durch die einzelnen Listen-Elemente und Zeige deren Inhalte
	 */	
	for( var i = 0; i < this.listElements.length; i++ ) {	
			
			//get the tabs
			tabLI = this.listElements[i];
			var itemLinks = tabLI.getElementsByTagName('A');
			tabLI.itemId = itemLinks[0].href.split("#")[1];
			tabLI.linkedPanel = $(tabLI.itemId);
			tabLI.linkedPanel.style.clear = "both";		//firefox hack
            
            /**
             * Wenn alles Zeigen
             */
			if ( this.b_allesZeigen === true ){$($(tabLI).linkedPanel).show();} else 
			    { $($(tabLI).linkedPanel).hide();}
			}
	},
	
	openPanel: function(tab){
		tab = $(tab); // ie hack
		
		/**
		 * Wenn alles Zeigen aktiviert ist, alles verstecken
		 */
		if ( this.b_allesZeigen === true ){ this.showAll(); }
		
		/**
		 * CurentTag definiert? Ja, Hide und 'selected' entfernen
		 */
		if(this.currentTab != ''){
			this.currentTab.linkedPanel.hide();
			this.currentTab.removeClassName('selected');
		}
		
		//set the currently open panel to the new panel
		this.currentTab = tab;
		
		/**
		 * aktuellen Pannel zeigen
		 */
		tab.linkedPanel.show();
		tab.addClassName('selected');
		var url = this.options.ajaxUrls[tab.itemId];
		
		// if there is an ajax url defined update the panel with ajax
		if(url != undefined){
			tab.linkedPanel.update(this.options.ajaxLoadingText);
			new Ajax.Request(url,{
				onComplete: function(transport) {
					tab.linkedPanel.update(transport.responseText);
				}
			});
		}
		
	}
};
