var FAQ = {
	init: function(){
		this.faqbase = $('faq-base-box');
		if(this.faqbase){

			// identify results
			this.results = new FAQresults();
			
			this.selector1 = new FAQselector(1);
			this.selector2 = new FAQselector(2);
//			this.selector3 = new FAQselector(3)
			
			this.selector1.nextItem = this.selector2;
			this.selector1.contentResults = this.results
			
//			this.selector2.nextItem = this.selector3;
//			this.selector2.contentResults = this.results
//			this.selector2.specHandling = true;
			
			this.selector2.nextItem = this.results;
			
			this.faqmessages = $('faq-messages');
			if($type(this.faqmessages) == 'element'){
				this.faqmsgs = [
					'',
					this.faqmessages.getElement('.message1').getText(),
					this.faqmessages.getElement('.message2').getText(),
					this.faqmessages.getElement('.message3').getText(),
					this.faqmessages.getElement('.message4').getText()
				];
			}
			
			this.selector1.parentObj = this;
			this.selector2.parentObj = this;
			//this.selector3.parentObj = this;
			this.results.parentObj = this;
			
			
			var currentURL = location.href;
			var relpart = currentURL.match(/\/faq\/(.*)\/faq\/(.*).html/);
			if(relpart){
				this.selector1.updateMenuState(relpart[1]);
				this.selector2.updateMenuState(relpart[1]);
			} else {
				this.selector2.removeContent(1);
			}
			
			this.initTabMenu();
		}
		
		new FAQtopten();
	},
	
	initTabMenu: function(){
		var localSelf = this;
		var elements = $$('#faq-base-box .mootabs_title li a');
		var lielements = $$('#faq-base-box .mootabs_title li');
		
		elements.each(function(element){
			element.addEvent('click',function(e){
				e = new Event(e);
				e.stop();
				
				lielements.each(function(liel){
					liel.removeClass('active');
				});
				element.getParent().addClass('active');
				localSelf.getTabEventContent(element.getProperty('href'));
				
				localSelf.selector2.removeContent(1);
			});
		});
	},
	
	
	getTabEventContent: function (url) {
    	var localSelf = this;
		localSelf.nextItem = this.selector1
		
		localSelf.nextItem.showWait();

		var urlTyped = '';
		if(url.test(/\?/)){
			urlTyped = url+'&type=65&kbshop_action=99';
		} else {
			urlTyped = url+'?type=65&kbshop_action=99';
		}
    	
		if(this.nextItem && this.nextItem.nextItem){
				this.nextItem.nextItem.removeContent(this.itemNumber+1);			
		}
    	var nextContent = localSelf.nextItem.selector;
    		
		var boxContent = new Ajax(	urlTyped, {
				method: 'get',
				update: nextContent,
				evalScripts: 'true',
				onComplete: (function(content) {
					if(localSelf.nextItem){
						localSelf.nextItem.addEvents();
						localSelf.nextItem.hideWait();

						if(localSelf.nextItem.selector.getElements('ul li a').length < 1){
							localSelf.nextItem.removeContent(4);	
						}
						
					}
				}),
				onFailure: (function(content) {
					localSelf.hideWait();
					alert('Request Error: Bitte laden Sie die Seite neu');
				})
		});
		boxContent.request();	
	}
	
}




/** 
 * FAQ Selector
 */
var FAQselector = new Class({
	
	options: {
	},
	
	initialize: function(itemNumber,options){
		this.setOptions(options);
		this.itemNumber = itemNumber;			
			// identify select criteria boxes
		this.selector = $('criteria-selector-' + this.itemNumber);

			// identify spiner
		this.wait = $$('.criteria-selector-title-' + this.itemNumber + ' .wait')[0];
				

		this.hideWait();
		this.addEvents();
		
	},
	
	updateMenuState: function(relpart){
		var elements  = this.selector.getElements('li a');
		var actel;
		elements.each(function(element){
			var currenthrefmatch = element.getProperty('href').match(/\/faq\/(.*).html/);
			if(relpart.test('^'+currenthrefmatch[1]+'($|\/)')){
				actel = element;
			}
			
		});
		
		if($type(actel)=='element'){
			actel.addClass('active');
			ulparentelement = actel.getParent().getParent();
			if(ulparentelement.getStyle('display')=='none'){
				ulparentelement.getParent().addClass('active');
				ulparentelement.setStyle('display','block');
			}
		}
		
	},
			
	addEvents: function(){
		var elements  = this.selector.getElements('li a');
		var localSelf = this;
		var firstitem = false;
		elements.each(function(element){
			if(!firstitem){
				element.addClass('firstItem');
				firstitem = true;
			}
			
			element.addEvent('click', function(e){
				e = new Event(e);
				e.stop();
				
				elements.each(function(el){
					el.removeClass('active');				
				});
				
				// ajax
				element.addClass('active');
				if(element.hasClass('firstItem')){
					localSelf.getContent(element.getProperty('href'),true);	
				} else {
					localSelf.getContent(element.getProperty('href'),false);				
				}
			});
			
		});
		
		
		var firstlevelMenuItems = this.selector.getElements('ul li.topitem');
		var subMenuBoxes = this.selector.getElements('ul ul');
		
		if(firstlevelMenuItems.length > 0){
			subMenuBoxes.each(function(el){
				el.setStyle('display','none');
			});
			firstlevelMenuItems.each(function(element){
				element.addEvent('click',function(e){
										
					if(element.hasClass('active')){
						element.removeClass('active');
						element.getElement('ul').setStyle('display','none');					
					} else {	

						subMenuBoxes.each(function(el){
							el.setStyle('display','none');
						});
						firstlevelMenuItems.each(function(el){
							el.removeClass('active');
						});
					
						element.addClass('active');
						element.getElement('ul').setStyle('display','block');
					}	
				});
			});
		}

	},
	
	
	hideWait: function(){
		this.wait.setStyle('display','none');	
	},
	
	showWait: function(){
		this.wait.setStyle('display','block');			
	},
	
	removeContent: function(item){
		//this.selector.setHTML('');
		this.selector.setHTML('<div class="empty-message">' + this.parentObj.faqmsgs[item] + '</div>');
		
		if(this.nextItem){
			this.nextItem.removeContent(item);
		}
	},
	
	selectFirst: function(){
		var firstitem = this.selector.getElement('li a');
		if($type(firstitem)=='element'){
			firstitem.addClass('active');
		}	
	},	
	
	getContent: function (url,firstitem) {
    	var localSelf = this;
		
		if(!localSelf.nextItem){
			return false;
		}
		
		localSelf.nextItem.showWait();

		var urlTyped = '';
		if(url.test(/\?/)){
			urlTyped = url+'&type=65&kbshop_action=' + this.itemNumber;
		} else {
			urlTyped = url+'?type=65&kbshop_action=' + this.itemNumber;
		}
    	
    	var nextContent = localSelf.nextItem.selector;
    		
		var boxContent = new Ajax(	urlTyped, {
				method: 'get',
				update: nextContent,
				evalScripts: 'true',
				onComplete: (function(content) {
					if(localSelf.nextItem){
						localSelf.nextItem.addEvents();
						localSelf.nextItem.hideWait();
						localSelf.nextItem.selectFirst();				
					}
				}),
				onFailure: (function(content) {
					localSelf.hideWait();
					alert('Request Error: Bitte laden Sie die Seite neu');
				})
		});

		boxContent.request();
		
		
		if($type(this.contentResults) != 'object'){
			if(this.nextItem && this.nextItem.nextItem){
				this.nextItem.nextItem.removeContent(this.itemNumber+1);
			}
		}	
		
		//if(($type(this.contentResults) == 'object') && localSelf.specHandling && firstitem){
		if($type(this.contentResults) == 'object'){
				// action 3 special
			localSelf.contentResults.showWait();
			
			if(url.test(/\?/)){
				urlTyped = url+'&type=65&kbshop_action=3';
			} else {
				urlTyped = url+'?type=65&kbshop_action=3';
			}
			
			var boxContentSpec = new Ajax(	urlTyped, {
				method: 'get',
				update: localSelf.contentResults.selector,
				evalScripts: 'true',
				onComplete: (function(content) {
					if(localSelf.contentResults){
						localSelf.contentResults.addEvents();
						localSelf.contentResults.hideWait();
					}
				}),
				onFailure: (function(content) {
					localSelf.hideWait();
					alert('Request Error: Bitte laden Sie die Seite neu');
				})
			});
			boxContentSpec.request();	
			
		}
	
		
	}
	
});

FAQselector.implement(new Events);
FAQselector.implement(new Options);
FAQselector.implement(new Chain);




/** 
 * FAQ Results
 */
var FAQresults = new Class({
	
	options: {
	},
	
	initialize: function(itemNumber,options){
		this.setOptions(options);
		this.itemNumber = itemNumber;			
			// identify select criteria boxes
		this.selector = $('faq-results');

			// identify spiner
		this.wait = $$('.faq-results-box .wait')[0];

		this.hideWait();
		this.addEvents();
		
	},
		
	selectFirst: function(){
		
	},
			
	addEvents: function(){
		var elements  = this.selector.getElements('a');
		var localSelf = this;
		elements.each(function(element){
			element.addEvent('click', function(e){
				e = new Event(e);
				e.stop();
				
				var url = element.getProperty('href');
				if(!url.test(/(^http[s]?:\/\/)|(^\/)/)){
					url = '/' + url;
				}
				
				localSelf.openPopup(url,'smafaq',800,600,'auto','center');
			});
		});

	},
	
	
	openPopup: function(mypage,myname,w,h,scroll,pos){
		if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
		if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
		else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
		if(scroll=='no' || scroll=='yes'){scroll = '=' + scroll;}else{scroll='';}
		
		settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars'+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
		win=window.open(mypage,myname,settings);
		win.focus();
	},
	
	hideWait: function(){
		this.wait.setStyle('display','none');	
	},
	
	showWait: function(){
		this.wait.setStyle('display','block');			
	},
	
	removeContent: function(item){
		this.selector.setHTML('<div class="empty-message">' + this.parentObj.faqmsgs[item] + '</div>');
		//this.selector.setHTML('');
	}
	
});

FAQresults.implement(new Events);
FAQresults.implement(new Options);
FAQselector.implement(new Chain);


var FAQtopten = new Class({
	
	options: {
	},
	
	initialize: function(itemNumber,options){
		this.setOptions(options);

		// identify select criteria boxes
		this.selector = $$('#topten-faq, #faq-preview, .tx-indexedsearch');
		
		if(this.selector.length > 0){
			this.addEvents();			
		}

		
		
		
	},

	addEvents: function(){
		var localSelf = this;
				
		this.selector.each(function(selector){
			var elements  = selector.getElements('a');
			
			
			elements.each(function(element){

				var url = element.getProperty('href');
				// DE faq links
				if(url.test(/\/artikel\/faq\//)){

					element.addEvent('click', function(e){
						e = new Event(e);
						e.stop();
						
						if(!url.test(/(^http[s]?:\/\/)|(^\/)/)){
							url = '/' + url;
						}
						
						localSelf.openPopup(url,'smafaq',800,600,'auto','center');
					});
				// EN faq links
				}else if(url.test(/\/item\/faq\//)){

					element.addEvent('click', function(e){
						e = new Event(e);
						e.stop();
						
						if(!url.test(/(^http[s]?:\/\/)|(^\/)/)){
							url = '/' + url;
						}
						
						localSelf.openPopup(url,'smafaq',800,600,'auto','center');
					});
				// IT faq links
				}else if(url.test(/\/articolo\/faq\//)){

					element.addEvent('click', function(e){
						e = new Event(e);
						e.stop();
						
						if(!url.test(/(^http[s]?:\/\/)|(^\/)/)){
							url = '/' + url;
						}
						
						localSelf.openPopup(url,'smafaq',800,600,'auto','center');
					});
				// FR faq links
				}else if(url.test(/\/articles\/faq\//)){

					element.addEvent('click', function(e){
						e = new Event(e);
						e.stop();
						
						if(!url.test(/(^http[s]?:\/\/)|(^\/)/)){
							url = '/' + url;
						}
						
						localSelf.openPopup(url,'smafaq',800,600,'auto','center');
					});					
				}
				

			});
			
			
		});

	},
	
	
	openPopup: function(mypage,myname,w,h,scroll,pos){
		if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
		if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
		else if((pos!="center" && pos!="random") || pos==null){LeftPosition=0;TopPosition=20}
		if(scroll=='no' || scroll=='yes'){scroll = '=' + scroll;}else{scroll='';}
		
		settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars'+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
		win=window.open(mypage,myname,settings);
		win.focus();
	}
	
});

FAQtopten.implement(new Events);
FAQtopten.implement(new Options);


