var mootabs = new Class({
	Implements: [Options],
	initialize: function(element, options) {
    		this.options = Object.extend({
			width:	'300px',
			height:	'auto',
			defaultbg:  'none',
			defaultheight: 0,
			onbg: 'none',
			changeTransition:	'none',
			duration:	        0,
			mouseOverClass:		'over',
			defaultClass: '',
			activeClass: 'over',			
			imagemenu: 1,
			activateOnLoad:		'first',
			useAjax: 		false,
			ajaxUrl: 		'',
			ajaxOptions: 		{method:'get'},
			ajaxLoadingText: 	'Loading...',
			forwarding: '',
			elementcount: '0'
		}, options || {}); 
		this.el = $(element);
		this.elid = element;				
		
		var mouseOverClass = this.options.mouseOverClass;
		var activeClass = this.options.activeClass;
		
		this.setOptions(options);
		
		this.options.mouseOverClass = mouseOverClass;
		this.options.activeClass = activeClass;
		
		this.el.setStyles({
			height: this.options.height,
			width: this.options.width
		});								
		
		this.titles = $$('#' + this.elid + ' ul.mootabs_title li');
		this.panelHeight = this.el.getSize().y - (this.titles[0].getSize().y + 4);
                
		this.panels = $$('#' + this.elid + ' .mootabs_panel');				
		
		if (this.options.defaultheight > 0){
			this.panels.each(function(item) {		  				
				item.setStyle('height', 110);
			});							
		}		
		
		this.titles.each(function(item) {		           
			item.addEvent('click', function(){
					item.removeClass(this.options.mouseOverClass);					
					this.activate(item);
				}.bind(this)
			);
			
			item.addEvent('mouseover', function() {								
				if(item != this.activeTitle){
					item.addClass(this.options.mouseOverClass);
					item.removeClass(this.options.defaultClass);										
					if (this.options.imagemenu == 1){
								image = item.getChildren().getChildren();
								imagename = image[0].getProperty('name');																																							
								
								imageid = item.getChildren().getProperty('id');																																																																																																
																
								if ((item.getStyle('left') != '0px')){									
                                                                                if (image[0].getProperty('src') != $(imagename+'_h').getProperty('src')){
                                                                                                left = item.getStyle('left');               		  
                                                                                                left = left.replace(/px/g, '');
                                                                                                left = left.toInt() - 10;
                                                                                                item.setStyle('left', left + 'px');               		  
                                                                                }
                                                                }               	
               	
                                                                if (image[0].getProperty('src') != $(imagename+'_h').getProperty('src')){
                                                                                item.setStyle('z-index', 205);
                                                                }
                                                               	image[0].setProperty('width', $(imagename+'_h').getProperty('width'));               		
                                                                image[0].setProperty('src', $(imagename+'_h').getProperty('src'));
					}

				}
			}.bind(this));
			
			item.addEvent('mouseout', function() {
				if(item != this.activeTitle) {										
					if (this.options.imagemenu == 1){
								this.titles.each(function(item) {
                                                                                link = item.getChildren();
                                                                                link[0].setProperty('onmouseout', '');
                                                                                image = item.getChildren().getChildren();
                                                                                imagename = image[0].getProperty('name');								
										imageid = item.getChildren().getProperty('id');
										if ((item.getStyle('left') != '0px')){									
                                                                                                if (image[0].getProperty('src') == $(imagename+'_h').getProperty('src')){
                                                                                                                left = item.getStyle('left');               		  
                                                                                                                left = left.replace(/px/g, '');
                                                                                                                left = left.toInt() + 10;
                                                                                                                item.setStyle('left', left + 'px');               		        
                                                                                                }
                                                                                }																							               	
                                                                           	item.setStyle('z-index', 200);
                                                                                image[0].setProperty('width', $(imagename+'_n').getProperty('width'));
                                                                                image[0].setProperty('src', $(imagename+'_n').getProperty('src'));
                                                                });																											            
                                                                if (this.activeTitle != null){											
                                                                                image = this.activeTitle.getChildren().getChildren();
                                                                                imagename = image[0].getProperty('name');																																               	               	                              	               	           
                                                                                if ((this.activeTitle.getStyle('left') != '0px')){				                                 		
                                                                                                left = this.activeTitle.getStyle('left');               		  
                                                                                                left = left.replace(/px/g, '');
                                                                                                left = left.toInt() - 10;
                                                                                                this.activeTitle.setStyle('left', left + 'px');               		                 		               		  
                                                                                }			            	
               	
                                                                                this.activeTitle.setStyle('z-index', 205);
                                                                                image[0].setProperty('src', $(imagename+'_h').getProperty('src'));
                                                                                image[0].setProperty('width', $(imagename+'_h').getProperty('width'));
                                                                }             
					}
                                                                item.removeClass(this.options.mouseOverClass);
                                                                item.addClass(this.options.defaultClass);
				}
			}.bind(this));
		}.bind(this));				
		
		if(this.options.activateOnLoad != 'none')
		{
			if(this.options.activateOnLoad == 'first'){				
				this.activate(this.titles[0], true);
			}
			else {			  
				//this.activate(this.options.activateOnLoad, true);
				this.activate(this.titles[this.options.activateOnLoad], true);
			}
		}				
	},
	
	activate: function(tab, skipAnim){	 	  	   	   
		if(! $defined(skipAnim)) {
			skipAnim = false;
		}
		
		if($type(tab) == 'string') {
			//myTab = $$('#' + this.elid + ' ul li').filterByAttribute('title', '=', tab)[0];
			myTab = $$('#' + this.elid + ' ul li').filter('[title='+tab+']')[0];
			tab = myTab;
		}				
		
		if($type(tab) == 'element'){				      		
			var newTab = tab.getProperty('title');
			this.panels.removeClass('over');																														
			if (this.options.imagemenu == 1){
				this.titles.each(function(item) {
                                                link = item.getChildren();
                                                link[0].setProperty('onmouseout', '');
                                                image = item.getChildren().getChildren();
                                                imagename = image[0].getProperty('name');																																			
										
                                                if (item.getStyle('left') != '0px'){						  
                                                                if (image[0].getProperty('src') == $(imagename+'_h').getProperty('src')){
                                                                                left = item.getStyle('left');               		  
                                                                                left = left.replace(/px/g, '');
                                                                                left = left.toInt() + 10;
                                                                                item.setStyle('left', left + 'px');               		  
                                                                }
                                                }
          
                                                item.setStyle('z-index', 200);
                                                image[0].setProperty('width', $(imagename+'_n').getProperty('width'));
                                                image[0].setProperty('src', $(imagename+'_n').getProperty('src'));
                                });				
									
				image = tab.getChildren().getChildren();
				imagename = image[0].getProperty('name');								
				
				if (tab.getStyle('left') != '0px'){											  
                                                left = tab.getStyle('left');               		  
                                                left = left.replace(/px/g, '');
                                                left = left.toInt() - 10;
                                                tab.setStyle('left', left + 'px');          
                                }
        
                                tab.setStyle('z-index', 205);
                                image[0].setProperty('width', $(imagename+'_h').getProperty('width'));
                                image[0].setProperty('src', $(imagename+'_h').getProperty('src'));
			}												
			
			//this.activePanel = this.panels.filterById(newTab)[0];
                        this.activePanel = $(newTab);
			
			this.activePanel.addClass('over');
			
			this.panelHeight = this.el.getSize().y - (this.titles[0].getSize().y + 4);
                        //this.panelHeight = this.el.getSize().y ;
			if(this.options.changeTransition != 'none' && skipAnim==false)
			{						
				//this.panels.filterById(newTab).setStyle('height', 0);
                                this.activePanel.setStyle('height',0);
                                var changeEffect = new Fx.Elements(this.activePanel, {duration: this.options.duration, transition: this.options.changeTransition});
				changeEffect.start({
					'0': {
						'height': [0, this.panelHeight]
					}
				});
			}
			
			this.titles.removeClass('over');
			this.titles.setStyle('z-index','200');

			$$('#' + this.elid + ' ul li a').setProperty('href','javascript:;');									
			
			//alert ($$('#' + this.elid + ' ul li a').getProperty('href'));
			
			//this.titles.setStyle('background-image', this.options.defaultbg);
			tab.addClass(this.options.activeClass);
			tab.removeClass(this.options.defaultClass);
			tab.removeClass(this.options.mouseoverClass);
			
			this.activeTitle = tab;
			this.activeTitle.setStyle('z-index','205');

			if ( this.activeTitle.getProperty('class')=='last over' ){
			}
			this.activeTitle.addClass(this.options.activeClass);
			this.activeTitle.removeClass(this.options.defaultClass);
			this.activeTitle.removeClass(this.options.mouseoverClass);
			if(this.options.useAjax)
			{
				this._getContent();
			}												
			
			// Sonderfall f�r Products Schodakro ist von krohni f�r den Fall der mehrmaligen Tabwiederholung als Test drin
			if ( newTab == 'Products' && document.schodakro!=5 ){
			    document.schodakro=5;
			    if ($('scroller_related')) {
				var scrollerrelated = new ScrollBar('scroller_related', 'ajax_related');
				$('ajax_related').addEvent("domready", function(){
					  scrollerrelated.update();
				  });
			    }
			}	
			
			// Sonderfall f�r Sales Contacts
			if (newTab == 'Sales Contact' && this.options.elementcount > 1){
				window.location.href = this.options.forwarding;
			}
		}
	},			
	_getContent: function(){	  
		this.activePanel.setHTML(this.options.ajaxLoadingText);
		var newOptions = {update: this.activePanel.getProperty('id')};
		this.options.ajaxOptions = Object.extend(this.options.ajaxOptions, newOptions || {});
		var tabRequest = new Ajax(this.options.ajaxUrl + '?tab=' + this.activeTitle.getProperty('title'), this.options.ajaxOptions);
		tabRequest.request();
	}
});
