// Easing equation, borrowed from jQuery easing plugin
// http://gsgd.co.uk/sandbox/jquery/easing/
jQuery.easing.easeOutQuart = function (x, t, b, c, d) {
	return -c * ((t=t/d-1)*t*t*t - 1) + b;
};

jQuery(function( $ ){
		
	/**
	 * Most jQuery.serialScroll's settings, actually belong to jQuery.ScrollTo, check it's demo for an example of each option.
	 * @see http://flesler.demos.com/jquery/scrollTo/
	 * You can use EVERY single setting of jQuery.ScrollTo, in the settings hash you send to jQuery.serialScroll.
	 */
	
	/**
	 * The plugin binds 6 events to the container to allow external manipulation.
	 * prev, next, goto, start, stop and notify
	 * You use them like this: $(your_container).trigger('next'), $(your_container).trigger('goto', [5]) (0-based index).
	 * If for some odd reason, the element already has any of these events bound, trigger it with the namespace.
	 */		
	
	/**
	 * IMPORTANT: this call to the plugin specifies ALL the settings (plus some of jQuery.ScrollTo)
	 * This is done so you can see them. You DON'T need to specify the commented ones.
	 * A 'target' is specified, that means that #screen is the context for target, prev, next and navigation.
	 */
	$('#thumbs-adv').serialScroll({
		target:'#sections',
		items:'li',       // Selector to the items ( relative to the matched elements, '#sections' in this case )
		prev:'.prev',  // Selector to the 'prev' button (absolute!, meaning it's relative to the document)
		next:'.next',  // Selector to the 'next' button (absolute too)
		axis:'y',         // The default is 'y' scroll on both ways
		navigation:'',
		duration:700,     // Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
		force:true,       // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
		
		//queue:false,// We scroll on both axes, scroll both at the same time.
		//event:'click',// On which event to react (click is the default, you probably won't need to specify it)
		//stop:false,// Each click will stop any previous animations of the target. (false by default)
		//lock:true, // Ignore events if already animating (true by default)		
		//start: 0, // On which element (index) to begin ( 0 is the default, redundant in this case )		
		cycle: false, // Cycle endlessly ( constant velocity, true is the default )
		step:4, // How many items to scroll each time ( 1 is the default, no need to specify )
		//jump:false, // If true, items become clickable (or w/e 'event' is, and when activated, the pane scrolls to them)
		//lazy:false,// (default) if true, the plugin looks for the items on each event(allows AJAX or JS content, or reordering)
		//interval:1000, // It's the number of milliseconds to automatically go to the next
		//constant:true, // constant speed
		
		onBefore:function( e, elem, $pane, $items, pos ){
			//
			// 'this' is the triggered element 
			// e is the event object
			// elem is the element we'll be scrolling to
			// $pane is the element being scrolled
			// $items is the items collection at this moment
			// pos is the position of elem in the collection
			// if it returns false, the event will be ignored
			//

			 //those arguments with a $ are jqueryfied, elem isn't.
			e.preventDefault();
			if( this.blur )
				this.blur();
		},
		onAfter:function( elem ){
			//'this' is the element being scrolled ($pane) not jqueryfied
		}
	});
	
	//
	 // No need to have only one element in view, you can use it for slideshows or similar.
	 // In this case, clicking the images, scrolls to them.
	 // No target in this case, so the selectors are absolute.
	//
	
	$('#slideshow').serialScroll({
		items:'li',
		prev:'#screen2 a.prev',
		next:'#screen2 a.next',
		offset:-230, //when scrolling to photo, stop 230 before reaching it (from the left)
		start:1, //as we are centering it, start at the 2nd
		duration:1200,
		force:true,
		stop:true,
		lock:false,
		cycle:false, //don't pull back once you reach the end
		easing:'easeOutQuart', //use this easing equation for a funny effect
		jump: true //click on the images to scroll to them
	});
	
	//
	 // The call below, is just to show that you are not restricted to prev/next buttons
	 // In this case, the plugin will react to a custom event on the container
	 // You can trigger the event from the outside.
	//
	
	var $news = $('#news-ticker');//we'll re use it a lot, so better save it to a var.
	$news.serialScroll({
		items:'div',
		duration:2000,
		force:true,
		axis:'y',
		easing:'linear',
		lazy:true,// NOTE: it's set to true, meaning you can add/remove/reorder items and the changes are taken into account.
		interval:1, // yeah! I now added auto-scrolling
		step:2 // scroll 2 news each time
	});	
	
	//
	 // The following you don't need to see, is just for the "Add 2 Items" and "Shuffle"" buttons
	 // These exemplify the use of the option 'lazy'.
	//
	$('#add-news').click(function(){
		var 
			$items = $news.find('div'),
			num = $items.length + 1;
			
		$items.slice(-2).clone().find('h4').each(function(i){
			$(this).text( 'News ' + (num + i) );
		}).end().appendTo($news);
	});
	$('#shuffle-news').click(function(){//don't shuffle the first, don't wanna deal with css
		var shuffled = $news.find('div').get().slice(1).sort(function(){
			return Math.round(Math.random())-0.5;//just a random number between -0.5 and 0.5
		});
		$(shuffled).appendTo($news);//add them all reordered
	});
	
	$('#sections li').click(function(){
		var targetImage = $("#target");
		
		var $active = $('#target IMG.active');

		if ( $active.length == 0 ) $active = $('#target IMG:last');

		var $next =  $active.next().length ? $active.next()
		    : $('#target IMG:first');

		$active.addClass('last-active');
	
	    $next.css({opacity: 0.0})
	        .addClass('active')
	        .animate({opacity: 1.0}, 1000, function() {
	            $active.removeClass('active last-active');
	        });
		
	});


/********************* index SLIDESHOW ******************************/
   if ($('#thumbs-adv-index').length > 0){
      var href_images = [];
      var images = $("#thumbs-adv-index ul li a");
      images.each( function() {
         href_images.push( {src: $(this).attr('href')} );
      });

      $('#slide-index').crossSlide({
        sleep: 3,   // parametro modificabile [secondi]
        fade: 1     // parametro modificabile [secondi]
        }, href_images
    );
   }

});


/******************** Galleriffic Settings        ******************/

	// Initially set opacity on thumbs and add
	// additional styling for hover effect on thumbs
	var onMouseOutOpacity = 0.67;
	$('#thumbs-adv ul.thumbs li').css('opacity', onMouseOutOpacity)
				.hover(
					function () {
						$(this).not('.selected').fadeTo('fast', 1.0);
					}, 
					function () {
						$(this).not('.selected').fadeTo('fast', onMouseOutOpacity);
					}
				);

			$(document).ready(function() {
				// Initialize Advanced Galleriffic Gallery
				var galleryAdv = $('#gallery-adv').galleriffic('#thumbs-adv', {
					delay:                  2000,
					numThumbs:              100,  // cosi stanno tutti sulla stessa colonna e posson essere scrollati
					preloadAhead:           10,
					enableTopPager:         false,
					enableBottomPager:      false,
					imageContainerSel:      '#slideshow-adv',
					controlsContainerSel:   '#controls-adv',
					captionContainerSel:    '#caption-adv',
					loadingContainerSel:    '#loading-adv',
					renderSSControls:       false,
					renderNavControls:      false,
					playLinkText:           'Play Slideshow',
					pauseLinkText:          'Pause Slideshow',
					prevLinkText:           '&lsaquo; Previous Photo',
					nextLinkText:           'Next Photo &rsaquo;',
					nextPageLinkText:       'Next &rsaquo;',
					prevPageLinkText:       '&lsaquo; Prev',
					enableHistory:          true,
					autoStart:              false,
					onChange:               function(prevIndex, nextIndex) {
						$('#thumbs-adv ul.thumbs').children()
							.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
							.eq(nextIndex).fadeTo('fast' , 1.0);
					},
					
					/*
					onTransitionOut:        function(callback) {
						$('#slideshow-adv, #caption-adv').fadeOut('slow', callback);
					},
					*/
					onTransitionIn:         function() {
						// In chrome il fade fa sparire immagine => show diretto
						var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
						if (is_chrome) $('#slideshow-adv').show();
						else $('#slideshow-adv').fadeIn('fast');
						// NON aggiungere trasparenza! incasina l'evento successivo 
						$('#caption-adv').fadeIn(1500);
						// mostra dettagli
						$(".more").click(function(e) {
						        e.preventDefault();
							var testo = $(this).text();
							$(this).text(testo == 'details' ? 'hide details' : 'details');
							if( testo == 'details') 
							// in IE non occorre ovveridare la CSS-opacity da qua
							  if ($.browser.msie)
							    $(".more_caption",$(this).parent()).slideDown(1000, function() {
							      $(this).css("opacity", 0.65);
							  });
							  else
							    $(".more_caption",$(this).parent()).slideDown(1000);
						        else
							  $(".more_caption",$(this).parent()).slideUp(1000);
						}); 
					}
				});


		/*********************** Galleria dell'index ******************************/

//NON LO USO PIU

		// Initialize Advanced Galleriffic Gallery
/*                if ($('#gallery-adv-index').length > 0){
				var galleryAdvIndex = $('#gallery-adv-index').galleriffic('#thumbs-adv-index', {
					delay:                  3000,
					numThumbs:              0,  
					preloadAhead:           10,
					enableTopPager:         false,
					enableBottomPager:      false,
					imageContainerSel:      '#slideshow-adv-index',
					controlsContainerSel:   '#controls-adv-index',
					captionContainerSel:    '#caption-adv-index',
					loadingContainerSel:    '#loading-adv-index',
					renderSSControls:       false,
					renderNavControls:      false,
					playLinkText:           'Play Slideshow',
					pauseLinkText:          'Pause Slideshow',
					autoStart:              true,
					onChange:               '',

					onTransitionOut:        function(callback) {
						$('#slideshow-adv-index').fadeOut('slow', callback);
					},
					
					onTransitionIn:         function() {
						$('#slideshow-adv-index').fadeIn('slow');
						$('#caption-adv-index').fadeIn(2000, function(){
						     $(this).fadeTo('fast', 0.5);
						});
					},
					onPageTransitionOut:    function(callback) {
						$('#thumbs-adv-index ul.thumbs').fadeOut('fast', callback);
					},
					onPageTransitionIn:     function() {
						$('#thumbs-adv-index ul.thumbs').fadeIn('fast');
					}
				});
                }
*/				

	/************* Menu *************/

	$(".menu_label").hover(function () {
	/*	$(this).addClass("hover"); */
		$(".sub_menu", this).css('visibility', 'visible');
	},
	function(){
            /*$(this).removeClass("hover");*/
	    $(".sub_menu",this).css('visibility', 'hidden');
        }); 

	// riscrive il display alla thumbs
	$("#thumbs-adv").css('display', 'block')
	
});

