/**
 * Transforme chaque élément à l'intérieur de la cible en onglet
 * Crée un menu des onglets
 * Le rollover sur le bouton affiche l'élément correspondant
 * Le clic sur le bouton charge le premier lien de l'onglet
 */
(function($, undefined){
	$.fn.orsaTabs = function(options){
		
		var settings = {
			navPosition: 'bottom',
			transition: 'fade',
			navClass: 'onglets_actu_home',
			navItemClass: 'onglet_actu_home',
			adjustWidth: true,
			itemMargin: 2
		};
		
		return this.each(function(){
			if(options){
				$.extend(settings, options);
			}
			
			var $this = $(this);
			var tabs = $this.children();
			var current = NaN;
			var itemWidth = Math.floor(($this.width() - ( tabs.length - 1 ) * settings.itemMargin) / tabs.length);
			var maxHeight = 0;
			
			if(!tabs.length) return;
			
			var nav = $('<ul class="' + settings.navClass + '"></ul>');
			nav.delegate('a', 'mouseover', mouseOverNavLink);
			
			
			tabs.each(function(){
				var $tab = $(this);
				var link = $tab.find("a").attr("href");
				if(!link) link  = '#';
				
				var name = $tab.find("a").attr("title");
				
				var item = $('<a href="' + link + '" class="' + settings.navItemClass + '"><span>' + name + '</span></a>');
				
				if(settings.adjustWidth){
					item.width(itemWidth + "px");
				}
				
				nav.append(item);
				
				$tab.css({
					top:  0, 
					position: 'absolute'
				});
				
				var h = $tab.height();
				if(h > maxHeight) maxHeight = h;
			});
			
			
			nav.find('a').wrap('<li></li>');
			nav.find('li:last').addClass('last-child');
			if(settings.adjustWidth){
				var lastItemWidth = $this.width() - (itemWidth + settings.itemMargin) * (tabs.length - 1);
				nav.find('li:last a').width(lastItemWidth+'px');
			}
			
			if(settings.navPosition == 'top'){
				$this.prepend(nav);
			} else $this.append(nav);
			
			$this.height(maxHeight+"px");
			showTab(0);
			
			/**
			 * Appelé au rollover sur un item du menu de navigation
			 */
			function mouseOverNavLink(evt){
				var index = nav.find("a").index(this);
				showTab(index);
			}
			
			/**
			 * Affiche le Nième onglet
			 */
			function showTab(index){
				var newTab = tabs.eq(index);
				var currentTab = tabs.eq(current);
				
				currentTab.removeClass("bottom-tab");
				newTab.addClass("bottom-tab");
				
				newTab.show();
				
				if(!currentTab.length){
					tabs.not(':eq('+index+')').hide();
				} else if(current != index){
					currentTab.fadeOut();
				}
				
				//classe du menu
				nav.find('li').eq(current).removeClass('ui-state-active');
				nav.find('li').eq(index).addClass('ui-state-active');
				
				
				current = index;
			}
						
		});
	}
})(jQuery);
