	
	(function(){
		  
		var dsoctop=0;
	
		// Show forms =====================================================================
		var showForm = function(e,data){
			Ev.stopEvent(e);

			if (data.length==1){data = data[0];}

			if (data.src!="favouriteWin"){
				killAllPopupsEvent.fire();
			}
			
			var iebody=(document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body
			var topScroll=document.all? iebody.scrollTop : pageYOffset;
			
			if (isOpera){
				dsoctop = topScroll;
			}
			var formHolder = data.holder;
			var formOpener = data.opener;
			var formOpenerRegion = Dom.getRegion(formOpener);
			
			switch(formHolder.id){
				case "contactFormHolder":
					Dom.setStyle(formHolder, 'left', formOpenerRegion.left-408+'px' );
					Dom.setStyle(formHolder, 'top', formOpenerRegion.top+dsoctop-200+'px' );			
				break;
				case "sendPdfFormHolder":
					Dom.removeClass(formHolder,'displayRight');
					Dom.setStyle(formHolder, 'left', formOpenerRegion.left+200+'px' );
					Dom.setStyle(formHolder, 'top', formOpenerRegion.top+dsoctop-235+'px' );
					
					if (data.src=="favouriteWin"){
						Dom.setStyle(formHolder, 'left', formOpenerRegion.left-420+'px' );
						Dom.setStyle(formHolder, 'top', formOpenerRegion.top+dsoctop-60+'px' );
						// nacteni custom dat
						
						
						
						
						Dom.addClass(formHolder,'displayRight');
					}
					
				break;
				case "sendInfoFormHolder":
					Dom.setStyle(formHolder, 'left', formOpenerRegion.left+200+'px' )
					Dom.setStyle(formHolder, 'top', formOpenerRegion.top+dsoctop-370+'px' )
				break;
			}
			
			Dom.setStyle(formHolder, 'display', 'block');
			
			// je potreba zarovnat viewport k hornimu okraji otevreneho okna
			if(topScroll>Dom.getRegion(formHolder).top){
			
				window.scrollBy(0,Dom.getRegion(formHolder).top-topScroll);
	
			// je potreba zarovnat viewport k dolnimu okraji otevreneho okna
			} else if (topScroll+Dom.getViewportHeight()<Dom.getRegion(formHolder).bottom) {
			
				window.scrollBy(0,Dom.getRegion(formHolder).bottom-Dom.getViewportHeight());
								
			}
			
		}
		
		// Send forms =====================================================================
		
		var sendForms = function(form,loadingElem){
		
			var AjaxObj = new AjaxSendForm(form, "/_system/send_ajax_form.php", false);
			Dom.setStyle(loadingElem,'display','block');
			switch (form.id){
				// Custom akce jednotlivych formularu =====================================
				case "contactForm":
				break;
				case "sendPdfForm":
					Dom.get("sendPdfUrl").value = window.location.href;
				break;
				case "sendInfoForm":
					Dom.get("sendInfoUrl").value = window.location.href;
				break;
				deafult:
				break;
				case "favHotelsMailForm":
				break;
			}

			AjaxObj.handleSuccess = function(o){
				if (o.responseText.indexOf('OK:')===0){
					switch (form.id){
						// Success hlasky jednotlivych formularu ==========================
						
						case "favHotelsMailForm":
							alert("Hotely byly úspěšně odeslány. Děkujeme.");
						break;
						case "contactForm":
							alert("Zpráva byla úspěšně odeslána. Děkujeme.");
						break;
						case "sendPdfForm":
							alert("Email byl úspěšně odeslán. Děkujeme.");
						break;
						case "sendInfoForm":
							alert("Požadavek byl úspěšně odeslán. Děkujeme.");
						break;
					}
					form.reset();
					Dom.setStyle(loadingElem,'display','none');
					killAllPopups();
				} else {
					switch (form.id){
						// Fail hlasky jednotlivych formularu =============================
						case "favHotelsMailForm":
							alert("Hotely se nepodařilo odeslat, zkuste to prosím později.");
						break;
						case "contactForm":
							alert("Zprávu se nepodařilo odeslat, zkuste to prosím později.");
						break;
						case "sendPdfForm":
							alert("Email se nepodařilo odeslat, zkuste to prosím později.");
						break;
						case "sendInfoForm":
							alert("Požadavek se nepodařilo odeslat, zkuste to prosím později.");
						break;
					}
					Dom.setStyle(loadingElem,'display','none');
				}
			}
			
			AjaxObj.handleFailure = function(o){
				switch (form.id){
					// Fail hlasky jednotlivych formularu =============================
					case "favHotelsMailForm":
						alert("Hotely se nepodařilo odeslat, zkuste to prosím později.");
					break;
					case "contactForm":
						alert("Zprávu se nepodařilo odeslat, zkuste to prosím později.");
					break;
					case "sendPdfForm":
						alert("Email se nepodařilo odeslat, zkuste to prosím později.");
					break;
					case "sendInfoForm":
						alert("Požadavek se nepodařilo odeslat, zkuste to prosím později.");
					break;
				}
				Dom.setStyle(loadingElem,'display','none');
			}
			
			AjaxObj.execObj.startRequest();
		}
		
		// Listenery =====================================================================================
				  
		Ev.onDOMReady(function(){
							   
			showSendFormPdf.subscribe(showForm);
						
			// Contact form
			var ContactFormValidator = new FormValidator(Dom.get('contactForm'),'redText'); //validator
			var contactFormButton = Dom.get('napisteNamButt'); // opener
			var contactFormHolder = Dom.get('contactFormHolder'); // holder
			var contactForm = Dom.get('contactForm'); 	// form
			var contactFormLoading = Dom.get("contactFormLoading"); // loading
			Ev.addListener(Dom.get("contactForm"),'keyup',ContactFormValidator.validate); // validate form
			Ev.addListener(contactFormButton, 'click', showForm,{'holder':contactFormHolder,'opener':contactFormButton}); // show form
			Ev.addListener(Dom.get("contactFormClose"), 'click', killAllPopups); // close form
			Ev.addListener(Dom.get("contactFormSubmit"), 'click', function(e){ 
																		   		Ev.stopEvent(e);
																				ContactFormValidator.validate();
																		   		if (ContactFormValidator.getErrMsg()==""){
																					sendForms(contactForm,contactFormLoading); // send Form
																				} else {
																					alert(ContactFormValidator.getErrMsg());
																				}
																			});
			// Send pdf and link form
			var sendPdfFormValidator = new FormValidator(Dom.get('sendPdfFormHolder'),'redText'); // validator
			var sendPdfFormButton = Dom.get('sendPdfMailButt'); // opener
			var sendPdfHolder = Dom.get('sendPdfFormHolder'); // holder
			var sendPdfForm = Dom.get('sendPdfForm'); // form
			var sendPdfLoading = Dom.get("sendPdfOverlay"); // loading
			Ev.addListener(Dom.get("sendPdfFormHolder"),'keyup',sendPdfFormValidator.validate); // validate form
			Ev.addListener(sendPdfFormButton, 'click', showForm,{'opener':sendPdfFormButton,'holder':sendPdfHolder});
			
			Ev.addListener(Dom.get("sendPdfCloser"), 'click', killAllPopups)
			Ev.addListener(Dom.get("sendPdfFormSubmit"), 'click', function(e){ 
																		   		Ev.stopEvent(e);
																				sendPdfFormValidator.validate();
																		   		if (sendPdfFormValidator.getErrMsg()==""){
																					sendForms(sendPdfForm,sendPdfLoading); // send form
																				} else {
																					alert(sendPdfFormValidator.getErrMsg());
																				}
																			});
			// Send ask for info
			var sendInfoFormValidator = new FormValidator(Dom.get('sendInfoForm'),'redText'); // Validator
			var sendInfoFormButton = Dom.get('sendInfoFormLink'); // opener
			var sendInfoFormHolder = Dom.get('sendInfoFormHolder'); // holder
			var sendInfoForm = Dom.get('sendInfoForm'); // form
			var sendInfoLoading = Dom.get("sendInfoOverlay"); // loading
			Ev.addListener(Dom.get("sendInfoForm"),'keyup',sendInfoFormValidator.validate); // alidate form
			Ev.addListener(sendInfoFormButton, 'click', showForm,{'opener':sendInfoFormButton,'holder':sendInfoFormHolder})
			Ev.addListener(Dom.get("sendInfoCloser"), 'click', killAllPopups)
			Ev.addListener(Dom.get("sendInfoFormSubmit"), 'click', function(e){ 
																		   		Ev.stopEvent(e);
																				sendInfoFormValidator.validate();
																		   		if (sendInfoFormValidator.getErrMsg()==""){
																					sendForms(sendInfoForm,sendInfoLoading); // send form
																				} else {
																					alert(sendInfoFormValidator.getErrMsg());
																				}
																			});
																			
			// Send ask for info
			var favHotelsMailHolder = Dom.get('favHotelsMailHolder'); // holder
			var favHotelsMailForm = Dom.get('favHotelsMailForm'); // form
			var sendFavHotelsFormValidator = new FormValidator(favHotelsMailForm,'redText'); // Validator
			//var sendInfoFormButton = Dom.get('sendInfoFormLink'); // opener
			var sendInfoLoading = Dom.get("sendFavHotelsOverlay"); // loading
			Ev.addListener(favHotelsMailHolder,'keyup',sendFavHotelsFormValidator.validate); // alidate form
			//Ev.addListener(sendInfoFormButton, 'click', showForm,{'opener':sendInfoFormButton,'holder':sendInfoFormHolder})
			//Ev.addListener(Dom.get("sendInfoCloser"), 'click', killAllPopups)
			Ev.addListener(Dom.get("sendFavHotelsFormSubmit"), 'click', function(e){ 
																		   		Ev.stopEvent(e);
																				sendFavHotelsFormValidator.validate();
																		   		if (sendFavHotelsFormValidator.getErrMsg()==""){
																					sendForms(favHotelsMailForm,sendInfoLoading); // send form
																				} else {
																					alert(sendFavHotelsFormValidator.getErrMsg());
																				}
																			});
			
			
		});		  
	 }());