﻿// JavaScript Document

var Site = {
	  
		init: function(){
			  
        /* target="_blank" replacement for all elements (not only a) */
        $$('._blank').each(function(element){
				    element.addEvent('click', function(event){
						    event.stop();
								window.open(element.get('href'));
						});
				});
				
				/* Giant link */
				$('giant').getElement('img').setStyle('cursor', 'pointer').addEvent('click', function(event){
				    event.stop()
						window.open('http://www.giant.cz');
				});
			  
				/* Clickable boxes */
				$$('.clickable').setStyle('cursor', 'pointer');
				$$('.clickable').addEvent('click', function(event){
					event.stop();
					window.location = this.getElement('a').get('href');
				});
				
				if ($('block-order') && !$('block-order').getElement('form').hasClass('no-effect')) OrderForm.init();
				if ($('block-order') && $('block-order').getElement('form').hasClass('no-effect')) OrderFormContest.init();
				
				/* REMOOZ */
				if ($('gallery')){
					$('gallery').getElements('a').each(function(element){
						
						new ReMooz(element, {
								centered: true, // Zoom the center of the screen
								origin: element.getElement('img'), // Take the image inside as origin for the zooming element
								cutOut: false,
								opacityResize: 0
						});
						
					});
				}
				
				/* flash */
				var flashSettings = [
					{ path: '/flash/', file: 'lost-kar-mag-08091', width: 480, height: 314 },
				  { path: '/flash/', file: '', width: 136, height: 102 }
				];
				
				$$('.insert-flash').each(function(element){
				  var id = element.get('id').replace('flash-', '');
					var settings = new Object();
					flashSettings.each(function(item){
					  if (item.file == id) settings = item;
					});
					if (settings.file){
						element.getElement('.no-flash').destroy();
						settings.path += settings.file + '.swf';
						settings.flash = {
							container:  element.get('id'),
							width: settings.width,
							height: settings.height,
							params: {
								wMode: 'transparent'
							}
						}
						new Swiff(settings.path, settings.flash);
					}
				});

		}
};

var Flash = {
	
	  init: function(flashParams){
			
			  var flashOptions = {
					  id: 'top-flash',
						width: 596,
						height: 265,
						container: 'flash',
						params: {
								wmode: 'transparent'
						}
				};
				
				var path = '/flash/flash.swf';
				
				// hidding flash bg
				if ($('flash-bg')) $('flash-bg').destroy();
				
				if (flashParams) path += '?'+flashParams;
				
				if ($('page-homepage')) {
				  $extend(flashOptions, { width: 829,	height: 288});
					if (flashNum){
						path = '/flash/hpflash' + flashNum + '.swf';
					} else {
						path = '/flash/hpflash4.swf';
					}
				}
				
			  if ($('flash')) var flash = new Swiff(path, flashOptions);
		}
};

var OrderForm = {
	  init: function(){
			  
				if (!Browser.Engine.trident4){
					// Order form effect
					var blockOrderFx = new Fx.Slide('block-order', { duration: 500, wait: false });
					blockOrderFx.hide();
					
					// Insert fake button
					var fakeButton = new Element('p', {
							'class' : 'center',
							'html'  : '<img src="/img/button-fill-order.png" width="210" height="46" alt="Objednat zážitek" />'
					});
					fakeButton.inject($('block-order').getParent('div'), 'before');
					
					fakeButton = fakeButton.getElement('img');
					fakeButtonFx = new Fx.Tween(fakeButton, 'opacity', { duration: 300 });
					
					fakeButton.setStyle('cursor', 'pointer');
					fakeButton.addEvent('click', function(){
							fakeButtonFx.start(0);
							blockOrderFx.slideIn().chain(function(){
								var newPos = $('block-order').getPosition();
								
								// temporary solution
								//document.body.scrollTo(newPos.x, newPos.y);
	
							});
					});
					
					$('block-general-info').getElement('a[class=button-order]').addEvent('click', function(event){
						event.stop();
						blockOrderFx.show();
						fakeButtonFx.set(0);
						var newPos = $('block-order').getPosition();
								
						// temporary solution
						document.body.scrollTo(newPos.x, newPos.y);
					});
				}
				
				// Form client validation
				var form = $('block-order').getElement('form');
				form.addEvent('submit', function(event){
				    event.stop();
						OrderForm.validate(form);
				});
				
				// Certificate block events
				var rpCertificate = $('radiopack-certificate');
				var rpCertificateWrapper = new Element('div', { 'id' : 'radiopack-certificate-wrapper' });
				    rpCertificateWrapper.wraps(rpCertificate);
				rpCertificateWrapper.setStyles({ 'position' : 'relative', 'overflow' : 'hidden' });
				rpCertificate.setStyle('position', 'relative');
				
				// Extra payment block events
				var rpExtraPayment = $('radiopack-extra-payment');
				var rpExtraPaymentWrapper = new Element('div', {'id' : 'radiopack-extra-payment-wrapper' });
				    rpExtraPaymentWrapper.wraps(rpExtraPayment);
			  rpExtraPaymentWrapper.setStyles({ 'position' : 'relative', 'overflow' : 'hidden' });
				rpExtraPayment.setStyle('position', 'relative');
				
				var rpPaymentType = $('radiopack-payment-type');
				
				if (rpPaymentType){
					rpPaymentTypeInputs = rpPaymentType.getElements('input');
					
					if (Browser.Engine.trident4){
						rpPaymentTypeInputs.each(function(element){
							element.addEvent('click', function(event){
								if (rpPaymentType.getElement('input').checked || rpPaymentType.getElementById('unicert-field').getElement('input').checked){
									rpCertificate.setStyle('display', 'block');
								} else {
									rpCertificate.setStyle('display', 'none');
								}
								if (rpPaymentType.getElementById('unicert-field').getElement('input').checked){
									rpExtraPayment.setStyle('display', 'block');
								} else {
									rpExtraPayment.setStyle('display', 'none');
								}
							});
						});
					} else {
						var rpCertificateFx = new Fx.Slide(rpCertificateWrapper, { duration: 400, link: 'cancel' });
						var rpExtraPaymentFx = new Fx.Slide(rpExtraPaymentWrapper, { duration: 400, link: 'cancel' }).hide();
						rpPaymentType.addEvent('click', function(event){
							if (rpPaymentType.getElement('input').checked || rpPaymentType.getElementById('unicert-field').getElement('input').checked){
								rpCertificateFx.slideIn();
							} else {
								rpCertificateFx.slideOut();
							}
							
							if (rpPaymentType.getElementById('unicert-field').getElement('input').checked){
								rpExtraPaymentFx.slideIn();
							} else {
								rpExtraPaymentFx.slideOut();
							}
						});
					}
				}
				
				if (rpExtraPayment){
					rpExtraPaymentInputs = rpExtraPayment.getElements('input');
					
					if (Browser.Engine.trident4){
						rpExtraPaymentInputs.each(function(element){
							element.addEvent('click', function(event){
								if (rpExtraPayment.getElement('input').checked){
									rpCertificate.setStyle('display', 'block');
								} else {
									rpCertificate.setStyle('display', 'none');
								}
							});
						});
					} else {
						if (!rpCertificateFx) { var rpCertificateFx = new Fx.Slide(rpCertificateWrapper, { duration: 400, link: 'cancel' }); }
						rpExtraPayment.addEvent('click', function(event){
							if (rpExtraPayment.getElement('input').checked){
								rpCertificateFx.slideIn();
							} else {
								rpCertificateFx.slideOut();
							}
						});
					}
				}
				
		},
	
		validate: function(form){
			var err = new Array();
			var fields = new Array();
			
			// contact information
			var contactFields = ['name', 'surname', 'street', 'city', 'zip', 'phone', 'email'];
			contactFields.each(function(value){
			    if ($('form-order-'+value).value == ''){
					    fields.include(form.getElement('label[for=form-order-' + value + ']').get('text').replace(':','')); 
			  	}
			});
			
			if (fields.length > 0){
					err.include('Je nutné vyplnit i následující položky:\n' + fields.join(', '));
			}
			
			
			// email address
			if ($('form-order-email').value){
					var mail = $('form-order-email').value;
					mail = mail.replace(/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/, 'valid');
					if (mail != 'valid'){
						  err.include('Zadaná emailová adresa je neplatná. Prosím, zkontrolujte její zadání.');
					}
			}
			
			// zip code
			if ($('form-order-zip').value){
				  var zip = $('form-order-zip').value;
				  zip = zip.replace(' ', '').replace(/[0-9]{5}/, 'valid');
				  if (zip != 'valid'){
				 	    err.include('PSČ je neplatné. Prosím, zadejte pouze čísla (5 číslic), případně mezeru.');
				  }
			}
			
			// phone
			if ($('form-order-phone').value){
				  var phone = $('form-order-phone').value;
			    phone = phone.replace(/\+?([0-9 ]{9,20})/, 'valid');
					if (phone != 'valid'){
					    err.include('Telefonní číslo je neplatné. Prosím zadejte pouze čísla (min. 9 znaků), případně mezeru a znaménko +.');
					}
			}
			
			// company
			if ($('form-order-company').value){
					// ico
					var ico = $('form-order-ico').value;
					ico = ico.replace(/[0-9]{8}/, 'valid');
					if (ico != 'valid'){
						  err.include('IČO je neplatné. Prosím zadejte pouze čísla (právě 8 znaků) bez mezer.');
					}
					
					var dic = $('form-order-dic').value;
					dic = dic.replace(/[a-zA-Z]{2}[0-9]{8,10}/, 'valid');
					if (dic != 'valid'){
						  err.include('DIČ je neplatné. DIČ sestává z dvou písmen a 8 až 10 číslic.');
					}
			}
			
			// radiobutton sections
			var radioInputs = form.getElements('input[name=adventure]');
			var radioErr = true;
			radioInputs.each(function(element){
			  if (element.checked) radioErr = false;
			});
			
			if (radioErr){
				  err.include('V sekci "Výběr zážitku" je nutné zvolit jednu z nabízených možností.');
			}
			
			radioInputs = form.getElements('input[name=place]');
		  radioErr = true;
			radioInputs.each(function(element){
			  if (element.checked) radioErr = false;
			});
			
			if (radioErr){
				  err.include('V sekci "Lokalita" je nutné zvolit jednu z nabízených možností.');
			}
			
			// univerzalni certifikat
			if ($('unicert-field').getElement('input.radio').checked){
				var unicert = $('form-order-unicert').value;
				if (unicert == ''){
					err.include('Musíte zadat číslo certifikátu, který chcete čerpat.');
				} else {
					unicert = unicert.replace(/[a-zA-Z0-9]{8}/, 'valid');
					if (unicert != 'valid'){
						err.include('ID certifikátu je neplatné. Zadat můžete právě 8 alfanumerických znaků.');
					}
				}
			}
			
			// souhlas
			if (!form.getElement('input[name=agreement]').checked){
				  err.include('Před odesláním formuláře musíte souhlasit se Všeobecnými obchodními podmínkami.');
			}
			
			// vyhodnoceni
			if (err.length){
			  	alert(err.join('\n\n'));
			} else {
			  	form.submit();
			}

			
		}
};

var MakeSlides = {
	
	  init: function(){
			  
				if ($$('.toggler') && $$('.slide')) {
					  
						var togglers = $$('.toggler');
						var slides = $$('.slide');
					  var slideFx = [];
						
						slides.each(function(element, index){
						   slideFx[index] = new Fx.Slide(element, { duration: 700, wait: false, transition: Fx.Transitions.Cubic.easeOut });
							 slideFx[index].hide();
					  });
						
						togglers.setStyles({ 'text-decoration' : 'underline', 'cursor' : 'pointer' });
						
						togglers.each(function(element, index){
							 element.addEvent('click', function(event){
							     event.stop();
									 slideFx[index].toggle();
							 });
						});
				}
		}
};

var Newsletter = {
	  
		init: function(){
		   
			 var input = $('block-zazitky-mailem').getElement('input[name=email]');
			 
			 input.addEvent('focus', function(){
				  if (this.value==this.defaultValue){this.value='';}
			 });
			 
			 input.addEvent('blur', function(){
					if (this.value==''){this.value=this.defaultValue;}
			 });
		}
		
};

var Boxes = {
	  
		init: function(){
			  
				var box = $$('.item');
				if (box) {
					  box.setStyle('cursor', 'pointer');
					  box.each(function(element){
						    element.addEvent('click', function(event){
								    event.stop();
										window.location = element.getElement('a').getProperty('href');
								});
						});
				}
		}
};

var OrderFormContest = {
	  init: function(){
			  
				// Form client validation
				var form = $('block-order').getElement('form');
				form.addEvent('submit', function(event){
				    event.stop();
						OrderFormContest.validate(form);
				});
				
		},
	
		validate: function(form){
			var err = new Array();
			var fields = new Array();
			
			// answer
			if ($('form-order-answer')){
				if ($('form-order-answer').value == ''){
					err.include('Nezadali jste žádnou odpověď.');
				}
				if ($('form-order-answer').value == $('form-order-answer').defaultValue){
					err.include('Nezadali jste žádnou odpověď.');
				}
			}
			
			// contact information
			var contactFields = ['name', 'surname', 'street', 'city', 'zip', 'phone', 'email'];
			contactFields.each(function(value){
			    if ($('form-order-'+value).value == ''){
					    fields.include(form.getElement('label[for=form-order-' + value + ']').get('text').replace(':','')); 
			  	}
			});
			
			if (fields.length > 0){
					err.include('Je nutné vyplnit i následující položky:\n' + fields.join(', '));
			}
			
			
			// email address
			if ($('form-order-email').value){
					var mail = $('form-order-email').value;
					mail = mail.replace(/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/, 'valid');
					if (mail != 'valid'){
						  err.include('Zadaná emailová adresa je neplatná. Prosím, zkontrolujte její zadání.');
					}
			}
			
			// zip code
			if ($('form-order-zip').value){
				  var zip = $('form-order-zip').value;
				  zip = zip.replace(' ', '').replace(/[0-9]{5}/, 'valid');
				  if (zip != 'valid'){
				 	    err.include('PSČ je neplatné. Prosím, zadejte pouze čísla (5 číslic), případně mezeru.');
				  }
			}
			
			// phone
			if ($('form-order-phone').value){
				  var phone = $('form-order-phone').value;
			    phone = phone.replace(/\+?([0-9 ]{9,20})/, 'valid');
					if (phone != 'valid'){
					    err.include('Telefonní číslo je neplatné. Prosím zadejte pouze čísla (min. 9 znaků), případně mezeru a znaménko +.');
					}
			}
			
			// souhlas
			if (!form.getElement('input[name=agreement]').checked){
				  err.include('Před odesláním formuláře musíte souhlasit s Pravidly soutěže.');
			}
			
			
			// vyhodnoceni
			if (err.length){
			  	alert(err.join('\n\n'));
			} else {
			  	form.submit();
			}

			
		}
};

var FlashVideo = {
	
	init: function(){
	}
	
};

window.addEvent('domready', function(){

  Site.init();

  if ($('flash')) Flash.init(flashParams);
	
	MakeSlides.init();
	
	Boxes.init();
	
});
