var debug;
$(document).ready(function(){
	highlightMenu('#menu-root','a', true);
	// DropDown menu con selezione della pagina corrente
	$('#menu-root>li>ul').hide();
	$('#menu-root>li').hover(function(){
		$(this).children('ul').show();
	},function(){
		$(this).children('ul').hide();
	});
	//Selezione lingua drop down
	$('#lang-select').click(function(){
		$('#lang-dropdown').slideToggle();
	});
	$('#lang-box').mouseleave(function(){
		$('#lang-dropdown').slideUp();
	});
	// Deobfuscate emails
	deobfuscateEmail();

	if($('.page-home').length != 0){
		$('#slider-home').nivoSlider({
			effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
			slices:1,
			animSpeed:900, //Slide transition speed
			pauseTime:4500,
			startSlide:0, //Set starting Slide (0 index)
			directionNav:true, //Next & Prev
			directionNavHide:false, //Only show on hover
			controlNav:false, //1,2,3...
			controlNavThumbs:false, //Use thumbnails for Control Nav
	    controlNavThumbsFromRel:false, //Use image rel for thumbs
			controlNavThumbsSearch: '.jpg', //Replace this with...
			controlNavThumbsReplace: '_thumb.jpg', //...this in thumb Image src
			keyboardNav:true, //Use left & right arrows
			pauseOnHover:true, //Stop animation while hovering
			manualAdvance:false, //Force manual transitions
			captionOpacity:0.8, //Universal caption opacity
			beforeChange: function(){},
			afterChange: function(){},
			slideshowEnd: function(){} //Triggers after all slides have been shown
		});
		/*  Newsletter default value handle */
		defaultTextInput('#newsletter-box input[type="text"]');

		subscribeFormInit();
	
		$('#wine-carousel').jcarousel({
	    	wrap: 'circular',
			scroll: 1,
			visible: 1,
			animation: 800
	    });
	}
	if($('.page-restaurant').length != 0){
		$('#slider-restaurant').nivoSlider({
			effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
			slices:1,
			animSpeed:700, //Slide transition speed
			pauseTime:1000,
			startSlide:0, //Set starting Slide (0 index)
			directionNav:false, //Next & Prev
			directionNavHide:false, //Only show on hover
			controlNav:true, //1,2,3...
			controlNavThumbs:true, //Use thumbnails for Control Nav
	    controlNavThumbsFromRel:false, //Use image rel for thumbs
			controlNavThumbsSearch: '.jpg', //Replace this with...
			controlNavThumbsReplace: '.jpg', //...this in thumb Image src
			keyboardNav:false, //Use left & right arrows
			pauseOnHover:false, //Stop animation while hovering
			captionOpacity:0.8, //Universal caption opacity
			manualAdvance:true, //Force manual transitions
			beforeChange: function(){},
			afterChange: function(){},
			slideshowEnd: function(){} //Triggers after all slides have been shown
		});


		$('.wine-box').not('.intro').hover(function(){
			$(this).addClass('selected');
		},
		function(){
			$(this).removeClass('selected');
		});
		
		$('#sidebar-right .menu-preview').hover(function(){
			$(this).addClass('selected');
		},
		function(){
			$(this).removeClass('selected');
		});
		// Slider con thumbnails a scoparsa
		nivoThumbsCarousel('#slider-restaurant');
		expander('#slider-restaurant-nav-btn','206px','406px','86px');
	}

	if($('.page-wines').length != 0){
		verticalSlideMenu('.slide-menu', true, true)
	}
	if($('.page-food').length != 0){
		highlightMenu('#left-menu','a', false, true);
	}
	if($('.page-events').length != 0){
		highlightMenu('#left-menu','a', false, true);
	}
	if($('.page-ceremony').length != 0){
		$('.show-thumbs-btn').click(function(){
			$container = $(this).siblings('div.slider-ceremony-container');
			$('div.ceremony.selected').removeClass("selected");
			$container.parent().addClass("selected");
			slider_id = '#'+$container.children('.top-slider').attr('id');
			$('#slider-ceremony-container').html($container.html());
			$(slider_id).nivoSlider({
				effect:'fade', //Specify sets like: 'fold,fade,sliceDown'
				slices:1,
				animSpeed:700, //Slide transition speed
				pauseTime:1000,
				startSlide:0, //Set starting Slide (0 index)
				directionNav:false, //Next & Prev
				directionNavHide:false, //Only show on hover
				controlNav:true, //1,2,3...
				controlNavThumbs:true, //Use thumbnails for Control Nav
		        controlNavThumbsFromRel:false, //Use image rel for thumbs
				controlNavThumbsSearch: '.jpg', //Replace this with...
				controlNavThumbsReplace: '.jpg', //...this in thumb Image src
				keyboardNav:false, //Use left & right arrows
				pauseOnHover:false, //Stop animation while hovering
				captionOpacity:0.8, //Universal caption opacity
				manualAdvance:true, //Force manual transitions
				beforeChange: function(){},
				afterChange: function(){},
				slideshowEnd: function(){} //Triggers after all slides have been shown
			});
			nivoThumbsCarousel(slider_id);
			$('#slider-ceremony-container').animate({height: '490px'});
			$('html, body').animate({scrollTop:40}, 800);
			return false;
		});
	}
	if($('.page-contacts').length != 0){
		contactFormInit();
		googleMapsInit();
	}
});


function isEmail(string) {
	if (string.search(/^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/) != -1)
		return 1;
	else
		return 0;
}

function expander(expanderClass, original, expanded, bar){
	$container = $('#slider-restaurant-container');
	$(expanderClass).click(function(){
		if($container.hasClass('expanded')){
			$container.css('overflow', 'hidden');
			$container.css('margin-bottom', '0px');	
			$container.animate({ 
			     height: original
			      }, 1000);
			$container.removeClass('expanded');
			$('#slider-restaurant-nav-btn .open-gallery').show();
			$('#slider-restaurant-nav-btn .close-gallery').hide();
		}
		else{
			$container.addClass('expanded');
			$container.animate({ 
		        height: expanded
		      }, 1000, function(){
				$container.css('overflow', 'visible');
				$container.css('margin-bottom', bar);			
			});
			$('#slider-restaurant-nav-btn .open-gallery').hide();
			$('#slider-restaurant-nav-btn .close-gallery').show();
		}
		return false;
	})
}

function nivoThumbsCarousel(slider, start_slide){
	if(start_slide==null)
		start_slide = 0;
	$(slider+' .nivo-controlNav a').wrap('<li></li>');
	$(slider+' .nivo-controlNav li').wrapAll('<ul id="thumb-carousel" class="jcarousel-skin-nivo-thumbs" />');
	$('#thumb-carousel').jcarousel({start: start_slide, animation: 800});
	$('.nivo-controlNav a').click(function(){
			if($(slider).data('nivo:vars').running == false){
				$('span.slider-active').remove();
				$(this).append('<span class="slider-active"></span');
			}
 	});
	$('.nivo-controlNav a.active').append('<span class="slider-active"></span');
}

/* Assegna la classe "selected" al elemento del menu della pagina corrente
*  menu : il tag ul del menu
*  target: ('a'|'li') elemento a cui associare la classe "selected"
*  highlightParents: associare la classe "selected" anche a tutti i genitori
*  hover: associa la classe "selected" onHover
*  hoverParents: associa la classe "selected" onHover ai genitori
*/
function highlightMenu(menu, target, highlightParents, hover, hoverParents, highlightPath){
	if(highlightParents==null)
		highlightParents = false;
	if(hover==null)
		hover = true;
	if(hoverParents==null)
		hoverParents = highlightParents;
	/**** SELEZIONE PAGINA CORRENTE ***/
	var location = window.location.toString().split("/");
	current_page = location[location.length -1].split("#",1)[0].split("?",1)[0];
	if(current_page == '')
		$current_link = $(menu).find('a[href="/"]');
	else
		$current_link = $(menu).find('a[href$="'+decodeURI(current_page)+'"]');
	// Se ci sono più link che terminanano nello stesso modo prendo pezzi del URL sempre più grandi
	for(var i=2; i<location.length && $current_link.length>1; i++){
		current_page = location[location.length - i] +'/'+ current_page;
		$current_link = $(menu).find('a[href$="'+decodeURI(current_page)+'"]');		
	}
	if(highlightPath){
		//SONO ARRIVATO QUI COLORARE I PADRI DI PERCORSO;
	}
	// classe su a
	if(target=='a'){
		$current_link.addClass("selected thispage");
		if(highlightParents)
		  $current_link.parentsUntil(menu).filter('li').children().addClass("selected thispage");

	}
	// classe su li
	else if(target=='li'){
		if(highlightParents)
			$current_link.parentsUntil(menu).filter('li').addClass("selected");
		else
			$current_link.parent().addClass("selected");
	}
	/*** SELEZIONE HOVER ***/
	if(hover){
		$(menu+' ' +target).hover(
			function(){
				$(this).addClass("selected")
				if(target=='a')
					if(hoverParents)
						$(this).parentsUntil(menu).filter('li').children().addClass("selected");
					else
						$(this).addClass("selected");
				else
					if(hoverParents)
				 		$(this).parentsUntil(menu).filter('li').addClass("selected");	
					else
						$(this).parent().addClass("selected");	
			},
			function(){
				if(! $(this).hasClass("thispage")){
					$(this).removeClass("selected");
				}
				$(".selected").not(".thispage").removeClass("selected");
			}
		);
	}
}

/* Rimuove il testo di default di una input text quando questa prende il focus e ne ripristina il valore se vuota */
function defaultTextInput(inputs){
	$inputs = $(inputs);
	$inputs.each(function(){
		$(this).data("default-value", $(this).attr("value"));
	});	
	$inputs.focusin(function(){
		value = $(this).attr("value");
		if(value==$(this).data("default-value"))
			$(this).attr("value", "");
	});
	$inputs.focusout(function(){
		value = $(this).attr("value");
		if(value=="")
			$(this).attr("value", $(this).data("default-value"));
	});
	$inputs.parents('form').bind('realValues', function(){
		$inputs.each(function(){
			value = $(this).attr("value");
			if(value==$(this).data("default-value"))
				$(this).attr("value", "");
			});
	});
	$inputs.parents('form').bind('defaultValues', function(){
		$inputs.each(function(){
		value = $(this).attr("value");
		if(value=="")
			$(this).attr("value", $(this).data("default-value"));
			});
	});
}


function verticalSlideMenu(menu, highlightParents, hover){
	selected_parent_class = 'vSM-parent-selected';
	$first_level = $(menu+'>li');
	$first_level.children('ul').hide();
	highlightMenu(menu, 'a', highlightParents, hover);
	// Apro il menu sulla pagina selezionata
	if($(menu).find('.thispage').length>1){
		$selected = $(menu).find('.thispage:last').last();
		$selected.parent().parent().parent().addClass(selected_parent_class);
		$selected.parent().parent().show();
	}
	// Click su
	$first_level.click(function(){
		if(!$(this).hasClass(selected_parent_class)){
			$('.'+selected_parent_class).children('ul').slideUp();
			$('.'+selected_parent_class).removeClass(selected_parent_class);
			$(this).addClass(selected_parent_class);
			$(this).children('ul').slideDown();
		}
	});
}

function googleMapsInit() {
    var latlng = new google.maps.LatLng(45.87017,12.008743);
    var center = new google.maps.LatLng(45.87017,12.008743);

    var myOptions = {
      zoom: 14,
      center: center,
    	panControl: false,
    	zoomControl: true,
			zoomControlOptions: {
        position: google.maps.ControlPosition.RIGHT_CENTER
    	},
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
		var icon = "/images/google-marker.png";
    var map = new google.maps.Map(document.getElementById("google-map"),
        myOptions);
		var marker = new google.maps.Marker({
      position: latlng,
      title:"Ristorante Casa Caldart",
	  	icon: icon
  	});
 
  // To add the marker to the map, call setMap();
  marker.setMap(map);  

  var contentString = '<div class="google-popup">'+
											'<strong>Ristorante Casa Caldart</strong>'+
											'<p>Via Erizzo, 265<br/>'+
											'31030 Valdobbiadene Treviso </p><br/>'+
											'<p><a href="http://maps.google.com/maps?daddr=Via%20Erizzo,%20165,%2031030%20Valdobbiadene%20Treviso,%20Italy%20(Casa%20Caldart%20Dei%20F.Lli%20Bello%20Fortunato%20E%20Lino%20&%20C.%20S.N.C.)">Calcola percorso</a></p>'+
											'</div>';
  var infowindow = new google.maps.InfoWindow({
    content: contentString
  });
  google.maps.event.addListener(marker, 'click', function() {
		  	infowindow.open(map,marker);
 	});
	
}
function subscribeFormInit(){
	var $form = $('#subscribe-form');
	var $fields = $form.find(".required");
	var	$email = $form.find('input[name="EMAIL"]');
	var $submitButton = $("#subscribe");
	var errorClass = "invalid-field";
		
	function validateForm(){
		$form.trigger('realValues');
		$('.'+errorClass).removeClass(errorClass);
		$fields.each(function(){
			if($(this).val()==""){
				$(this).addClass(errorClass);
			}
		});
		if(!isEmail($email.val()))
			$email.addClass(errorClass);
		$form.trigger('defaultValues');
		if($('.'+errorClass).length>0) {
			return false;
		}
		return true;
	}
	// Se il form  non era valido lo valido ad ogni modifica delle input
	$fields.keyup(function(){
		if($('.'+errorClass).length>0)
			validateForm();
	});
	$submitButton.click(function(){
		if(validateForm())
			return true;
		return false;
	});
}

function contactFormInit(){
	var $form = $('#contacts-form');
	var $fields = $form.find(".required");
	var	$email = $form.find('input[name="email"]');
	var $submitButton = $("#contacts-form .button");
	var errorClass = "invalid-field";
	var ajaxUrl = "/contacts/send-ajax.php";
	var lang = $("#contacts-form [name=lang]").attr('value');
	var sendOk_it ='<p><strong>Messaggio inviato!</strong><br/>Grazie per averci contattato, ti risponderemo al più presto.</p>';
	var sendErr_it ='<p><strong>Errore!</strong> Non è possibile inviare il messaggio, ma '+
									'potete sempre contattarci per email o telefono.<br/>Ci scusiamo per il disagio.</p>';
	var sendOk_en ='<p><strong>Message sent!</strong><br/> Thank you for relying on us, we will answer you promptly</p>';
	var sendErr_en ='<p><strong>Error!</strong> The message can\'t be sent for technical problems, but you can contact us by email or phone.'+
									'<br/>Sorry for the inconvenience</p>';
	
	function validateForm(){
		$('.'+errorClass).removeClass(errorClass);
		$fields.each(function(){
			if($(this).val()==""){
				$(this).addClass(errorClass);
			}
		});
		if(!isEmail($email.val()))
			$email.addClass(errorClass);	
		if($('.'+errorClass).length>0) {
			return false;
		}
		return true;
	}
	// Se il form  non era valido lo valido ad ogni modifica delle input
	$fields.keyup(function(){
		if($('.'+errorClass).length>0)
			validateForm();
	});
	$submitButton.click(function(){
		if(validateForm()){
			dataString = $form.serialize();
			$.ajax ({
				type:"POST",
				url:ajaxUrl,
				data: dataString,
				success: function(html) {
					$form.find(":input").attr('disabled', 'disabled');
					$submitButton.hide();
					if(html=='1'){
						if(lang=='it')
							$submitButton.after(sendOk_it);
						else
							$submitButton.after(sendOk_en);
					}
					else{
						if(lang=='it')
							$submitButton.after(sendErr_it);
						else
							$submitButton.after(sendErr_en);
					}
				}
			});
		}	
		return false;
	});
}

function deobfuscateEmail(){
	$('a.email').each(function(){
		$email = $(this).attr("href").substring(1)+'@'+$(this).text();
		$(this).attr("href", 'mailto:'+ $email);
		$(this).text($email);
	});
}
