/**
 * Funkce pro AmbiClub, ktere jsou sjednoceny pod namespace "AmbiClub", vyuziva prototype pro ajax a efekty
 * pouziti : AmbiClub.func();   
 */  

var AmbiClub = {

	ajaxUrl : '/functions/ajax.php',
	intervalId : null,
	timeoutId : null,
	
	/**
	 * Zmeni informaci o produktu
	 * @param array elements Elementy, ktere se maji menit
	 * @param string command Identifikator zmeny	  	 
	 */	 	
	changeInfo : function(params) {			
		if (params != '') {		
			new Ajax.Request(this.ajaxUrl, {
				method : 'get',
				parameters : params,				
				onSuccess : function(transport){
					var data = transport.responseText.evalJSON(true); 			
																	
						for (var key in data) {																					
							$(key).setOpacity(0);
							$(key).update(data[key]);																																																																
							new Effect.Opacity(key, { from: 0.0, to: 1.0, duration: 0.4 });						
						}									
				}		    			    
			});							
		}				
	},
	
	/**
	 * Zmeni produkt
	 * @param array elements Elementy, ktere se maji menit
	 * @param string command Identifikator zmeny	  	 
	 */	 	
	changeProduct : function(params) {																																																																						
		
		if (params != '') {		
			new Ajax.Request(this.ajaxUrl, {
				method : 'get',				
				parameters : params,								
				onSuccess : function(transport){
					var data = transport.responseText.evalJSON(true); 			

						if (data != '') {																																																					
							for (var key in data) {
								if (key != 'position') {
									$(key).setOpacity(0);																									
									$(key).update(data[key]);																																																									
									new Effect.Opacity(key, { from: 0.0, to: 1.0, duration: 0.8});
									

								}
															
							}										
						}	
					if (data.position != 'undefined') {
						AmbiClubContainer.currentRotationPosition = parseInt(data.position);
					}
				}		    			    
			});							
		}				
	},	
	
	
	/**
	 * Posune info o produktu smerem doleva
	 */
	moveProductInfoLeft : function(params) {		
		AmbiClubContainer.currentRotationPosition = parseInt(AmbiClubContainer.currentRotationPosition-1);
		params.position = AmbiClubContainer.currentRotationPosition;				
		this.changeProduct(params);
	},
	
	/**
	 * Posune info o produktu smerem doprava
	 */
	moveProductInfoRight : function(params) {
		AmbiClubContainer.currentRotationPosition = parseInt(AmbiClubContainer.currentRotationPosition+1);
		params.position = AmbiClubContainer.currentRotationPosition;		
		this.changeProduct(params);
	},
	
	/**
	 * Rotuje obrazky smerem doleva
	 */
	rotateProductGalleryLeft : function(params) {					
		objects = $(params.content).childElements();				
		for (var i = 0; i < objects.length; i++) {						
			new Effect.Move(objects[i], {x: -30, mode: 'relative' });
		}							
	},
	
	/**
	 * Rotuje obrazky smerem doprava
	 */
	rotateProductGalleryRight : function(params) {
		objects = $(params.content).childElements();		
		for (i = 0; i < objects.length; i++) {		
			new Effect.Move(objects[i], {x: 30, mode: 'relative' });
		}	
	},
	
	/**
	 * Okno s doporucenim znamemu
	 */	 	
	sendRecommendedPage : function(src) {
		
		if ($('recommend-modal') == null) {					
			var _wl = src;
			_wl = _wl.substring(1);
			var _wlparts = _wl.split('=');
			var url = _wlparts[1];
					
			var div_recommend = document.createElement('div');		
			$('ajaxRecommendedPage').appendChild(div_recommend);
			
			div_recommend.setAttribute('id', 'recommend-modal');
			$('recommend-modal').setStyle({ display: 'none'});
			$('recommend-modal').appear({duration : 0.4, from: 0, to: 0.95});
			div_recommend.innerHTML = '<span class="close-recommend"><a href="/" onclick="AmbiClub.sendRecommendedPage();return false" title="Zavřít">x</a></span>'+	
									  '<div class="label">Doporučit aktuální stránku</div>'+									  
									  '<div id="rcm-content"><form action="/cz/doporucit-stranku.html" method="post" onsubmit="AmbiClub.saveRecommendedPage(this);return false;">'+
									  '<span><input type="hidden" value="'+url+'" name="url"/></span>'+
									  '<table width="100%" class="verdana">'+
									  '<tr><td>Vaše jméno</td><td><input type="text" name="jmeno"/></td></tr><tr><td>Email příjemce</td><td><input type="text" name="email"/></td>'+
									  '</tr><tr><td></td><td><input type="image" class="submit" src="/images/submit-odeslat.jpg" value="Doporučit" name="recommend_page" /></td></tr></table></form></div>';		
			
		}
		else {					
			$('ajaxRecommendedPage').removeChild($('recommend-modal'));	
		}
	
	},
	
	saveRecommendedPage : function(form) {
		var params = encodeURI('url='+form.url.value+'&jmeno='+form.jmeno.value+'&recommend_page=true&email='+form.email.value);			
		new Ajax.Request('/include/recommendation_ajax.php', {
				method : 'get',
				parameters : params,
				onSuccess : function(transport){
					$('rcm-content').innerHTML = transport.responseText; 			
				}		    			    
			});		
	},
	
	/**
	 * prida produkt k porovnani
	 */	 		
	addToCompare : function(params) {
		if (params != '') {	
		var isChecked = (params.el.checked == true ) ? false : true;		
		var _id = params.el.name.split('_');
		var id = _id[1];
		
		if (isChecked == false && AmbiClubContainer.compareIds.length < 4) {
			AmbiClubContainer.compareIds.push(id);
		}
		else {		
			params.el.checked = false;	
			for (var i = 0; i < AmbiClubContainer.compareIds.length; i++) {			
				if (AmbiClubContainer.compareIds[i] == id) {
					AmbiClubContainer.compareIds.splice(i, 1);		
				}
			}
			if (AmbiClubContainer.compareIds.length == 4) {
				alert('Můžete vybrat maximálně 4 produkty.');
			}
		}
				
		params = {'items[]' : AmbiClubContainer.compareIds, info : params.info, command : params.command, type : params.type};					
			new Ajax.Request(this.ajaxUrl, {
				method : 'get',				
				parameters : params,								
				onSuccess : function(transport){
					var data = transport.responseText.evalJSON(true); 			

						if (data != '') {																																																					
							for (var key in data) {								
								$(key).setOpacity(0);																									
								$(key).update(data[key]);																																																									
								new Effect.Opacity(key, { from: 0.0, to: 1.0, duration: 0.8});														
							}										
						}					
				}		    			    
			});							
		}	
	},

	/**
	 * vymeni obrazek menu v detailu produktu na hover a prida tridu, ze je aktivni
	 */	 	
	activeMenuImage : function(elId) {		
		imgs = ['prehled', 'funkce', 'specifikace', 'podpora'];		
		for (var i = 0; i<imgs.length; i++) {
			if ($(imgs[i]) != null) {				
				$(imgs[i]).src = '/images/btn_'+imgs[i]+'.png';
				$(imgs[i]).removeClassName('menu-active');
			}
		}
		$(elId).src = '/images/btn_'+elId+'_on.png';
		$(elId).addClassName('menu-active');
					
	},
		
	/**
	 * zmeni obrazek menu v detailu produktu na hover
	 */	 	
	swapMenuImage : function(elId) {						
		$(elId).src = '/images/btn_'+elId+'_on.png';			
	},
			 		
	/**
	 * vrati obrazek menu v detailu produktu na puvodni
	 */	 	
	origMenuImage : function(elId) {					
		if ($(elId).hasClassName('menu-active') == false) {
			$(elId).src = '/images/btn_'+elId+'.png';
		}
		else {
			$(elId).src = '/images/btn_'+elId+'_on.png';
		}
	},
	
	/**	
	 * Spusti test
	 */	 	
	runTest : function(params) {
		cont = $('test-location');
		new Ajax.Request(this.ajaxUrl, {
				method : 'get',				
				parameters : params,								
				onSuccess : function(transport){
					var data = transport.responseText.evalJSON(true); 			

						if (data.error != '') {								
							cont.setOpacity(0);																																																																			
							cont.update(data.error);
							new Effect.Opacity(cont, { from: 0.0, to: 1.0, duration: 0.8});											
						}
						else {
							AmbiClub.nextQuestion();
						}					
				}		    			    
		});			
	},
	
	/**
	 * posune otazky
	 */	 	
	 nextQuestion : function() {	 	
	 	cont = $('test-location');
	 	params = {position : AmbiClubContainer.questionPosition, command : 'NextQuestion'};
		new Ajax.Request(this.ajaxUrl, {
				method : 'get',				
				parameters : params,								
				onSuccess : function(transport){
					var data = transport.responseText.evalJSON(true); 			
						
						// pokud je otazka, tak zobraz
						if (data.question && data.question != '') {	
							
							// zobrazi otazku					
							cont.setOpacity(0);																																																																			
							cont.update(data.question);
							new Effect.Opacity(cont, { from: 0.0, to: 1.0, duration: 0.8});
							AmbiClubContainer.questionPosition = parseInt(AmbiClubContainer.questionPosition+1);
							
							// nastavi odpocet casu na otazku a zapne odpocitavani
							AmbiClubContainer.timer = data.limit;
							AmbiClub.intervalId = window.setInterval( function() {									
									AmbiClub.refreshTimer();
								}, 1000);
							// zavolani dalsi otazky po uplynuti casu
							AmbiClub.timeoutId = window.setTimeout( function() {
									AmbiClub.nextQuestion();
									window.clearInterval(AmbiClub.intervalId);
								}, data.limit*1000);							
																	
						}
						else {
							cont.setOpacity(0);																																																																										
							cont.update(data.resume);
							new Effect.Opacity(cont, { from: 0.0, to: 1.0, duration: 0.8});
						}					
				}		    			    
		});	
	 },
	 
	  
	 /**
	 * odpovedet na otazku
	 */
	 replyQuestion : function(params) {
	 	window.clearTimeout(AmbiClub.timeoutId);
	 	window.clearInterval(AmbiClub.intervalId);
	 						 		 	
		new Ajax.Request(this.ajaxUrl, {
				method : 'get',				
				parameters : params							
		});	 			
		AmbiClub.nextQuestion();
	 },
	   
	 /**
	  * odpocitava cas na test
	  */	  	 
	  refreshTimer : function() {	  	
	  	AmbiClubContainer.timer = parseInt(AmbiClubContainer.timer)-1;
	  	if ($('timer-counter') != null) {
			$('timer-counter').update(AmbiClubContainer.timer);
		}
	  },
  
	  /**
	  * objednat darek
	  */
	  orderGift : function(params) {
		if (params.id != null && params.id != '') {
			if ($('order-modal') == null) {									
						
				var div_order = document.createElement('div');		
				$(params.container).appendChild(div_order);
								
				div_order.setAttribute('id', 'order-modal');
				$('order-modal').setStyle({ display: 'none'});
				$('order-modal').appear({duration : 0.4, from: 0, to: 0.95});
				div_order.innerHTML = '<span class="close-order"><a href="/" onclick="AmbiClub.orderGift({id: '+params.id+', container: \''+params.container+'\'});return false" title="Zavřít">x</a></span>'+	
										  '<div class="label">Potvrdit objednávku</div>'+									  
										  '<div id="order-content">'+
										  '<form action="/cz/darky.html" method="post" onsubmit="AmbiClub.sendOrder('+params.id+');return false;">'+										  
										  '<div class="order-content">Závazně objednáváte produkt: <br/><br/><strong>'+params.gift+'</strong> <br/><br/>Po objednání produktu Vám bude odečten příslušný počet bodů. Objednávku můžete přerušit zavřením tohoto okna červeným křížkem vpravo.</div>'+
										  '<input type="submit" value="Objednat" name="order_page"/></form></div>';		
				
			}
			else {									
				$(params.container).removeChild($('order-modal'));					
			}
		
		}
	  },
	  
	 /**
	 * odesle objednavku
	 */
	 sendOrder : function(id) {
	 	var params = encodeURI('id='+id);
		
		$('order-content').update('odesílám zprávu<br /><br />');
		AmbiClub.intervalId = window.setInterval(function(){
			$('order-content').insert('*');
		}, 1000);			
		
		new Ajax.Request('/include/order_ajax.php', {
				method : 'get',
				parameters : params,
				onSuccess : function(transport){
					window.clearInterval(AmbiClub.intervalId);
					$('order-content').innerHTML = transport.responseText; 			
				}		    			    
			});	
	 }	   	   
};

/**
 * Kontejner se statickyma promennyma
 */ 

var AmbiClubContainer = {

	currentRotationPosition : 0,
	compareIds : [],
	questionPosition : 0,
	timer : 0

}

