// 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.easing.easeOutBack = function (x, t, b, c, d, s) {
	if (s == undefined) s = 1.70158;
	return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
}
jQuery.easing.easeOutElastic = function (x, t, b, c, d) {
	var s=1.70158; var p=0; var a=c;
	if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.5;
	if (a < Math.abs(c)) { a=c; var s=p/4; }
	else var s = p/(2*Math.PI) * Math.asin (c/a);
	return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
}

//begin scroller script
//->need scroll-to Plugin
//*---------------------------------------------*//

 var timeOutAutoId = null;
 var intervalID = null;


 function initScroller ()
 {
	//configuration
	elementContainer = '#pages-contents';
	elements = elementContainer + ' .slide';
	elementsNav = '#nav-level-1 a';
	elementsDots = 'ul#nav-dots li a';
	activeClass = 'active';
	$leftControl = $('#arrow-left a')
	$rightControl = $('#arrow-right a');
	removeArrowsOnLimit = true;
	rightItemLimit = 0; //item before the end of scroll to hide right arrow (avoid white space);
	timerGap = 7000; //miliseconds between auto scrool
	scrollingSpeed = 850; //speed of item scrool
	scrollAxis = 'y';
	easing = 'easeOutElastic';


 	//itérate through elements
 	$(elements).each(function(i) {
 		var $this = $(this);
 		$this.data('count', i);
 	});

	$(elementsNav + ', ' + elementsDots).click(function(){
		scrollto_item($($(this).attr("href")));
		pauseAutoScroll();
		//return false;
	})

 	//init first item position
 	//-----------
  	var currentId = location.hash; //history test
  	var currentClass = '.' + location.hash.replace(/^.*#/, '').replace(/\?.*$/, ''); //history test


	if(currentId != '')	{
		$(currentId).addClass(activeClass);
		$(elementsNav + currentClass).addClass(activeClass);
		$(elementsDots + currentClass).addClass(activeClass);
		scrollto_item($(currentId))
	} else {
	 	$(elements + ':first').addClass(activeClass);
		scrollto_item($(elements + ':first'))
	}

	        

     //left/right arrows actions
 	$rightControl.click(function() {
         scrollto_item($(elementContainer + ' .' + activeClass).next());
         pauseAutoScroll();
         return false;
 	});

 	$leftControl.click( function() {
         scrollto_item($(elementContainer + ' .' + activeClass).prev())
         pauseAutoScroll();
 		return false;
 	});
 }

 function scrollto_item(item) {

	   var item_number = item.data('count');
	 
	  
       $('.slide-ambiance').stop(true, false).hide();
       item.children('.slide-ambiance').stop(true, false).animate({'display' : 'none'}, scrollingSpeed).fadeIn('fast');

      if (item_number < $(elements).length - rightItemLimit && item_number >= 0) {
      	$(elementContainer).stop(true, false).scrollTo(
        		 item,
             scrollingSpeed,
             {axis: scrollAxis, easing: easing}
         ) 
			//alert(item_number + "/" + $(elements).length);
			if(elementsDots != null) {
				if($(elementsDots).hasClass('active')) $(elementsDots).removeClass('active');
				$(elementsDots + ":eq("+item_number+")").addClass('active');
			}
			if(elementsNav != null) {
				if($(elementsNav).hasClass('active')) $(elementsNav).removeClass('active');
				$(elementsNav + ":eq("+item_number+")").addClass('active');
				magicLineHover($(elementsNav + ".active"));
			}
     };

       // show/hide buttons
		if(removeArrowsOnLimit == true) {
          if (item_number == 0) {
              $leftControl.fadeOut('normal');
          } else {
              $leftControl.show()
          }
          if(item_number+1 >= $(elements).length) {
             $rightControl.fadeOut('normal')
          } else {
             $rightControl.show()
          }
		}
      // active
      item.siblings().removeClass('active');
      item.addClass('active');
 }

 function scrolltoNextItem() {
     if(item_current < $(elements).length - rightItemLimit) {
         item_current++;
         scrollto_item($(elementContainer + ' .' + activeClass).next());
     } else {
          item_current = 0;
          scrollto_item($(elements+ ':first'))
     }
 }

 function autoScroll () {
     item_current = $(elementContainer + ' .' + activeClass).data('count');
     if (intervalID == null) intervalID = setInterval("scrolltoNextItem()", timerGap);
 }

 function pauseAutoScroll() {
     if (intervalID != null) {
         clearInterval(intervalID);
         intervalID = null;
     }

     if (timeOutAutoId != null) {
         clearTimeout(timeOutAutoId);
         timeOutAutoId = null;
     }
     //timeOutAutoId = setTimeout('autoScroll()', timerGap);
 }

//end scroller script
//*---------------------------------------------*//
     

//ToolTips 
//*----------------------------------------------*//
function showToolTipBox (toolTipBox) {
	$("#" + toolTipBox).stop(true, true).show();
	cb = $("#" + toolTipBox);
   $(document).bind('mousemove',function(e) {
		cbHeight = cb.height();
      if(e.pageX > 110) {
        cb.css({ 'left' : e.pageX - 100,  'top' : e.pageY -cbHeight-50 }); 
      } else {
        cb.css({ 'left' : 10,  'top' : e.pageY -cbHeight-50 }); 
      }
   })
}

function hideToolTipBox (toolTipBox) {
	$("#" + toolTipBox).fadeOut(200);
	$(document).unbind('mousemove');
}

//magic line 
//*----------------------------------------------*//
function magicLineHover(elmt) {
     leftPos = elmt.position().left;
     newWidth = elmt.parent().width();

     $magicLine.stop().animate({
         left: leftPos,
         width: newWidth
     });
}
function magicLineOut () {
   var elmt =  $("#nav-level-1 a.active");
   magicLineHover(elmt);
}

function init(){
	$('#loading-body').css("display", "none");
	$('#body-home').css("display", "block");
	
	var $el, leftPos, newWidth;
	   $("#nav-level-1").append("<li id='magic-line'></li>");
	   $magicLine = $("#magic-line");

		//init ShadowBox
		Shadowbox.init({
	    	handleOversize: "drag",
		 	overlayOpacity: 0.75 
		});     

		//initScroller
		initScroller();
	   //autoScroll();

		//scrollbar actus
		$('.scroller').jScrollPane({scrollbarWidth: 7, scrollbarMargin: 25});

	   //toolTips
		$('.slide-icons a').css('position', 'relative').hover(function(){
			$(this).stop(true, false).animate({'top': '-15px' }, 200, 'easeOutQuart');
			showToolTipBox($(this).attr('rel'));
		}, function(){
			$(this).animate({'top': '0px' }, 600, 'easeOutQuart');
			hideToolTipBox($(this).attr('rel'));
		})

		//MagicLine
	    $magicLine
	        .width($("#nav-level-1 .active").width())
	        .css("left", $("#nav-level-1 a.active").position().left)
	        .data("origLeft", $magicLine.position().left)
	        .data("origWidth", $magicLine.width());

	    $("a", "#nav-level-1 li").hover(function() {
	       var el = $(this);
	       magicLineHover(el);
	    }, function() {
	        magicLineOut();
	    });

		//opacytyRollover
		$('.bouton01, .bouton02, #nav-level-1 a:not(.active)').opacityrollover();



		//gallerific plugin for portefolio
		var onMouseOutOpacity = 0.67;
		$('#thumbs ul.thumbs li, div.navigation a.pageLink').opacityrollover({
			mouseOutOpacity:   onMouseOutOpacity,
			mouseOverOpacity:  1.0,
			fadeSpeed:         'fast',
			exemptionSelector: '.selected'
		});

		// Initialize Advanced Galleriffic Gallery
		var gallery = $('#thumbs').galleriffic({
			delay:                     2500,
			numThumbs:                 36,
			preloadAhead:              36,
			enableTopPager:            false,
			enableBottomPager:         false,
			imageContainerSel:         '#slideshow',
			controlsContainerSel:      '#controls',
			captionContainerSel:       '#caption',
			loadingContainerSel:       '#loading-portfolio',
			renderSSControls:          true,
			renderNavControls:         true,
			playLinkText:              'lecture',
			pauseLinkText:             'pause',
			prevLinkText:              '&lsaquo; Préc.',
			nextLinkText:              'Suiv. &rsaquo;',
			nextPageLinkText:          'Suiv. &rsaquo;',
			prevPageLinkText:          '&lsaquo; Préc.',
			enableHistory:             false,
			enableKeyboardNavigation:  false,
			autoStart:                 true,
			syncTransitions:           true,
			defaultTransitionDuration: 900,
			onSlideChange:             function(prevIndex, nextIndex) {
				// 'this' refers to the gallery, which is an extension of $('#thumbs')
				this.find('ul.thumbs').children()
					.eq(prevIndex).fadeTo('fast', onMouseOutOpacity).end()
					.eq(nextIndex).fadeTo('fast', 1.0);
			},

			onPageTransitionOut:       function(callback) {
				this.fadeTo('fast', 0.0, callback);
			},

			onPageTransitionIn:        function() {
				var prevPageLink = this.find('a.prev').css('visibility', 'hidden');
				var nextPageLink = this.find('a.next').css('visibility', 'hidden');

				// Show appropriate next / prev page links
				if (this.displayedPage > 0)
					prevPageLink.css('visibility', 'visible');

				var lastPage = this.getNumPages() - 1;
				if (this.displayedPage < lastPage)
					nextPageLink.css('visibility', 'visible');

				this.fadeTo('fast', 1.0);
			}
		});
		gallery.find('a.prev').click(function(e) {
		 	gallery.previousPage();
		 	e.preventDefault();
		});

		gallery.find('a.next').click(function(e) {
		 	gallery.nextPage();
		 	e.preventDefault();
		}); 


	    //formulaire de contact
		if ($.browser.msie == false) {
	    	$("#form-contact").validate({
	    	  rules: {
	    	    prenom: {
	    	      required: true,
	    	      minlength: 3
	    	    },
	    	    nom: {
	    	      required: true,
	    	      minlength: 3
	    	    },
	    		message: {
	    			required: true,
	    			minlength: 10
	    		}
	    	  }
	    	});     
	    }
}
