(function($){
	
	$(function() {
		
		/************************************************************************
		 * Slideshow fotek na pozadi
		 ************************************************************************/		
		
		//fotky pro slideshow	    
	    var images = ["/img/bg/bg-1.jpg", "/img/bg/bg-2.jpg", "/img/bg/bg-3.jpg", "/img/bg/bg-4.jpg", "/img/bg/bg-5.jpg", "/img/bg/bg-6.jpg", "/img/bg/bg-7.jpg"];
	    var index = Math.floor(Math.random()*images.length);
	
	    $.backstretch(images[index], {speed: 0});
		    
	    setInterval(function() {
	        index = (index >= images.length - 1) ? 0 : index + 1;
	        $.backstretch(images[index], {speed: 2000});
	    }, 10000);
		
				
		/******************************************************************************
		 * Animovane vysuniti a skryti stranky, pokud podporovano pomoci CSS transition
		 ******************************************************************************/		
		function customPageAnimate(left) {
			if ($.support.cssProperty('transition')) {
				$(".pages").css("left", left + "px");				
			}
			else {
				$(".pages").animate({
					left: left + "px"
				},1200);	
			}
		}
						
		setTimeout(function() {
			customPageAnimate(232);			
			$(".pages").addClass("page-open");
		}, 200);
								
		$("#icon-close").click(function() {
			var $page = $(this).parents(".pages");
			customPageAnimate(-480);
			$page.removeClass("page-open");
			return false;
		});
		
		$(".menu-links").click(function() {
			var ID = $(this).attr("id").substr(10); //format menu-link-1
			var $page = $("#page-" + ID);
			if($page.length && !$page.is(".page-open")) {
				customPageAnimate(232);
				$page.addClass("page-open");
				return false;
			}
			else if ($page.is(".page-open")) {
				return false;
			}						
		});
		
		/************************************************************************
		 * Zmena leveho menu a tabule z fixni pozice na absolutni skrolovatelnou
		 * pro male rozliseni, kde by uz nebyly vsechny prvky z leveho menu videt
		 *************************************************************************/		
		
		//@param - $menu - jquery objekt pro menu
		//@param - $lastElem - jquery objekt pro posledni/nejnizsi element menu	
		//@param - $board - jquery objekt tabuli
				 		
		function setPosition($menu, $lastElem, $board) {
			var y = ($lastElem.offset().top + $lastElem.height()) - $(window).scrollTop();				
			
			//946 je sirka menu + sirka + obsahu + sirka krizku, rychlejsi nez to pocitat pres jQuery
			//1257 je 946 + sirka tabule + odsazeni tabule zprava (311) 
			
			if ($(window).height() < y || $(window).width() < 1247) {								
				$menu.css({ position: "absolute"});				
				$board.css({ position: "absolute"});
				
				if ($(window).width() < 1247) {
					$board.css({ left: "942px"});
				}
				else {
					$board.css({ left: "", right: "18px"});
				} 	
			}
			else {				
				$menu.css({ position: "fixed" , height: "100%"});				
				$board.css({ position: "fixed" , height: "100%", left: "", right: "18px"});				
			}
		}
		
		var $menu = $("#menu");
			$menuLastElem = $("#menu-link-8"),
			$board = $("#board-wrap");
			
		setPosition($menu, $menuLastElem, $board);
		
		$(window).resize(function() {
			setPosition($menu, $menuLastElem, $board);	
		});									    
	    
	    /************************************************************************
	     * Zobrazeni virtualni prohlidky 360 v overlay 
	     ***********************************************************************/
	 	
	 	$("#explore").click(function() {
	 		
	 		$.modal('<iframe src="http://3d.zlatestranky.cz:80/virtualTourExternal.do?pid=mediatel&locale=cs&point=203145&heading=57&mode=2" height="450" width="830" style="border:0">', {
				closeHTML:"",
				overlayCss: {
					backgroundColor: "#000",
					opacity: 80
				},
				containerCss:{															
					padding: 0,
					width: 830
				},
				overlayClose:true
			});
			
			return false;
	 		
	 	});		 	
	 	
	 	/***********************************************************************
	 	 * Lightbox pro galerii a skryvani pattern pres nahledy na hover
	 	 **********************************************************************/ 
	 	
	 	var $galleryPhoto =  $(".galleryPhoto"); 
	 	
	 	$galleryPhoto.fancybox({
	 		easingIn		: "easeInOutQuad",
	 		easingOut		: "easeInOutQuad",
			speedIn			: 600, 
			speedOut		: 200,
			overlayColor	: "#000",
			overlayOpacity	: 0.8
		});
		
		$galleryPhoto.hover(function() {
			$(this).find(".photo-pattern").addClass("photo-pattern-hover");
		},
		function() {
			$(this).find(".photo-pattern").removeClass("photo-pattern-hover");
		});		
 
 		/************************************************************************
 		 * Zajisteni spravneho rozmeru divu pro pattern pres nahledy
 		 ***********************************************************************/	 		 	
	 	
	 	function onImageLoaded($img) {	 			 	
	 		if ($img[0].complete) {	 			
	 			$img.prev(".photo-pattern").css({ width: $img.width(), height: $img.height() });
	 		}
	 		else {
	 			setTimeout(function() {	 				
	 				onImageLoaded($img);
	 			}, 200);
	 		}			 		
	 	}
	 	
	 	$(".galleryPhoto img").each(function() {	 			 		
	 		onImageLoaded($(this));	 				 			 			 		
	 	});
	 	
	 	/***********************************************************************
	 	 * Formular pro rezervaci - stylovani a validace
	 	 ***********************************************************************/	
	 	
	 	var $reservationForm = $("#reservation-form"),
			$inputs = $reservationForm.find("input[type=text]"),
			$textarea = $reservationForm.find("textarea");
		
		//skryvani placeholderu
		$inputs.add($textarea).focus(function() {
			if ($.trim($(this).val()) == $(this).attr("title")) {
				$(this).val("");
			}
		});
		
		//zobrazovani placeholderu
		$inputs.add($textarea).blur(function() {
			if ($.trim($(this).val()) == "") {
				$(this).val($(this).attr("title"));
			}
		});				
		
		//stylovani selectu formulare
        $reservationForm.find("select").each(function(){
            $(this).wrap("<div style='position: relative;' >");
            
            
            var title = $(this).attr("title"),
            	spanID = "span-" + $(this).attr("id");      
            
            $(this).find("option:first-child").attr("selected", "selected");
            	            
            $(this).css({"z-index":10,"opacity":0,"-khtml-appearance":"none"})
                .after("<span id='" + spanID + "' class='select'>" + title + "<span class='select-arrow'></span></span>")
                .change(function(){
                    val = $("option:selected",this).text();                                       
                    $(this).next().html(val + "<span class='select-arrow'></span>");
            });
        });

  		$reservationForm.find("select").hover(function() {
  			$(this).parent().find(".select-arrow").css("background-position", "-212px -142px");
  		},function() {
  			$(this).parent().find(".select-arrow").css("background-position", "0px -142px");
  		});
  		
  		//stylovani checkboxu formulare
		var $newsletter = $("#newsletter");
		$newsletter.attr("checked", false); 
		$newsletter.wrap("<div style='position: relative; display: inline;' >");
		
		$newsletter.css({"z-index":10,"opacity":0,"-khtml-appearance":"none"});
        $newsletter.after("<span class='checkbox'></span>");
        $newsletter.click(function(){	                
			checked = $(this).attr("checked");
            if (checked) {
            	$(this).next().css("background-position", "-95px -230px");		
            }
            else {
            	$(this).next().css("background-position", "-63px -230px");	                	
            }                    	                	               
       	});       	       	
				
	 	//Validace rezervacniho formulare	 		 	 	 	
	 	
	 	var lang = ($("html").is(".en")) ? "en" : "cs";
	 	
	 	//ceske a anglicke texty pro formular
	 	var formStrings = {
	 	    fillInFields: {
	 	        cs : "Vyplňte prosím označená pole.",
	 	        en : "Please fill in highlighted fields."
	 	    },
	 	    invalidEmail: {
                cs : "Zadejte prosím platný email.",
                en : "Please provide a valid email address."
            },
            reservationSent: {
                cs: "Vaše rezervace byla úspěšně odeslána, děkujeme.",
                en: "Thank you, your reservation has been sent successfully."
            },
            ajaxError: {
                cs: "Nastala chyba, zkuste prosím rezervaci provést znova.",
                en: "An error occured, please try again."    
            }             
	 	};
	 	
	 	function validateForm($form) {
	 		var $formInputs = $form.find("input[type=text]"),
	 			$formSelects = $form.find("select"),
	 			$formSpecial = $form.find("#special"),
	 			$formNewsletter = $form.find("#newsletter"), 
	 			formData = {
	 				valid: true,
	 				message : ""
	 			};
	 		
	 		$formInputs.each(function () {
	 			var val = $.trim($(this).val()),
	 				ID = $(this).attr("id");	 				 			
	 			
	 			if (val == "" || val == $(this).attr("title")) {
	 				formData.valid = false;
	 				$(this).addClass("error");
	 				formData.message = formStrings.fillInFields[lang];	 				
	 			}
	 			else if ($(this).is("#email") && !/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/.test(val)) {
	 				formData.valid = false;
	 				$(this).addClass("error");
	 				formData.message = formStrings.invalidEmail[lang];
	 			}	 			
	 			else {
	 				formData[ID] = val;
	 				$(this).removeClass("error");
	 			}
	 		});
	 		
	 		$formSelects.each(function () {
	 			var val = $(this).val(),
	 				ID = $(this).attr("id");	 					 				 			
	 			
	 			if (val == "") {
	 				formData.valid = false;
	 				$(this).next(".select").addClass("error");
	 				formData.message = formStrings.fillInFields[lang];
	 			}
	 			else {
	 				formData[ID] = val;
	 				$(this).next(".select").removeClass("error");
	 			}
	 		});
	 		
	 		
	 		formData['special'] = ($formSpecial.val() == $formSpecial.attr("title")) ? "" : $formSpecial.val();
	 		formData['newsletter'] = $formNewsletter.attr("checked");
	 		
	 		$("#form-message").text(formData.message);  
	 		
	 		return formData;		 		
	 	}
				
		function submitReservation(formData) {			
			//smazat nepotrebne parametry
			delete formData.valid;
			delete formData.message;
			
			$.ajax({
				url: "/index/reservation",
				type: "post",
				dataType: "json",
				data: formData,
				success: function(result) {
					if (result.valid) {
						$reservationForm[0].reset();
						$("#form-message").text(formStrings.reservationSent[lang]);							
					}
					else {
						$("#form-message").text(result.errorText);
					}											
				},
				error: function() {
					$("#form-message").text(formStrings.ajaxError[lang]);
				}
			});
			
		}		
			 					
	 	$("#send").click(function() {
	 		var formData = validateForm($reservationForm);	 				 			 		
	 			 		
	 		if (formData.valid) {	 			
	 			submitReservation(formData);
	 		}
	 		else {
	 			$reservationForm.find("input[type=text]").unbind("keyup").keyup(function() {
			 		validateForm($reservationForm);
			 	});
			 	
			 	$reservationForm.find("select").unbind("change").change(function() {
			 		validateForm($reservationForm);
			 	});	
	 		}
	 			 		
	 		return false;
	 	});
	 	
	 	/***********************************************************************
	 	 * Zobrazovani tecek v jidelnim listku na hover
	 	 ***********************************************************************/      
	 			
		$(".food-menu-item").not(".without-price").each(function() {
			var thisTop = $(this).offset().top,
				$text = $(this).find("span"),
				top = $text.offset().top + $text.height() - thisTop; 
			
			$(this).css({
				"background-image" 	: "url('/img/menu-dots.png')",
				"background-repeat" 	: "repeat-x",
				"background-position" 	: "0 " + ( top - 6 )+ "px" //6px odsazeni nahoru pro tecky
			});
		});
		
		/***********************************************************************
	 	 * Bubblina tooltip na hover
	 	 ***********************************************************************/
		
		$("#phone").hover(function() {
			
			//IE8- dela krky s animaci opacity u png
			if ($.browser.msie && $.browser.version < 9) {				
				$(this).next(".tooltip").css({"left" : "113px", "display" : "block" });					
			}
			else {
				$(this).next(".tooltip").stop()
					.css({"left" : "113px", "display" : "block" })				
					.animate({
						top: "-45px",
						opacity: 1
					},200);
			}						
		},
		function() {
			//IE8- dela krky s animaci opacity u png
			if ($.browser.msie && $.browser.version < 9) {
				$(this).next(".tooltip").css({ "left" : "-113px", "display" : "none" });						
			}
			else {
				$(this).next(".tooltip").stop()
					.animate({
						top: "-55px",
						opacity: 0
					},200, function (){
						$(this).css("left", "-200px")
					});	
			}											
		});		
		
	}); 
	
})(jQuery);

