// JavaScript Document
/*
 * Script : menu horizontal dÃ©roulant (animÃ©)
 * Ver.   : 1.2a
 * Date   : 19/05/2009 [fr]
 * Depend : Jquery.js
 * Author : Bertrand Germain
 *
 */
 
/* ---------------------------------------------------------------------------------------------------------------------
v1.2a
	- added : change image state of first level elements on mouseover if the image have a "-on" version for over state.
	
v1.1a
	- added : hover class on li when mouseover is on the first level li or on any under elements of his child submenu

v1.0a
	- initial release
--------------------------------------------------------------------------------------------------------------------- */

jQuery.fn.extend({
	menu: function(){
		if(this.is('ul')){
			selector = this;
		}else{
			selector= this.find('ul:first')
		}
		//Hide all submenu items (if not done via another method
		selector.find('ul').hide();
		
		// Mouseover on first level item menu shows submenu, mouseout hide it
		selector.find('li').hover( 
			function(){
				$j(this).addClass('hover');
				// test if first level menu items are images, if true : replace the image with his "-on" version (hover state)
				if($j(this).find('img')[0] != null){
					ext = $j(this).find('img').attr('src').split('.')[$j(this).find('img').attr('src').split('.').length -1];
					regexp = eval('/.'+ext+'/');
					if($j(this).find('img').attr('src').indexOf('-on.'+ext) == -1){
						$j(this).find('img').attr({src: $j(this).find('img').attr('src').replace(regexp,'-on.'+ext)})
					}
				}
				$j(this).find('ul:not(:animated)').css({'position':'absolute'}).slideDown('fast');
				$j(this).siblings('li').find('ul:visible').slideUp('fast'); // Hide opened submenus if quickly jumping between first level item
			},
			function(){
				if($j(this).find('ul:not(:animated)')){
					$j(this).removeClass('hover');
					if($j(this).find('img')[0] != null){
						ext = $j(this).find('img').attr('src').split('.')[$j(this).find('img').attr('src').split('.').length -1];
						regexp = eval('/-on.'+ext+'/');
						if($j(this).find('img').attr('src').indexOf('-on.'+ext) >= 0){
							$j(this).find('img').attr({src: $j(this).find('img').attr('src').replace(regexp,'.'+ext)})
						}
					}
				}
				$j(this).find('ul:not(:animated)').slideUp('fast');
			}
		)
		
		// Accessibility : same event events as mouse but with keyboard
		selector.find('li:has(ul) a').focus(
			function(){$j(this).parents('li:first').find('ul').css({'position':'absolute'}).show();}
		)
		
		selector.find('li:has(ul) ul li:last-child a').blur(
			function(){$j(this).parents('ul:first').hide();}
		)
	}
});