/*! NV Menu v3 <http://nvinteractive.co.nz>
	Copyright (c) NV Interactive
	
	References:
		jquery-1.3.x.js
		
	Release Notes:
		3.0 rewrote as a jquery plugin
*/


//
// create closure
//
(function($) {

//
// plugin definition
//
	$.fn.nvmenu = function(options) {
		debug(this);
		// build main options before element iteration
		var opts = $.extend({}, $.fn.nvmenu.defaults, options);
		
		// iterate and reformat each matched element
		return this.each(function(){$.fn.nvmenu.processmenu(this, opts)});
	};
	
//
// private function for debugging
//
	function debug($obj) {
		if (window.console && window.console.log)
			window.console.log('nvmenu selection count: ' + $obj.size());
	};
	
//
// define and expose our format function
//
	$.fn.nvmenu.processmenu = function(element, opts) {
		$this = $(element);
		// build element specific options
		var o = $.meta ? $.extend({}, opts, $this.data()) : opts;
		
		$("li", $this)
			.hover($.fn.nvmenu.mouseover, $.fn.nvmenu.mouseout)
			.filter(":has(ul)").addClass("has_sub")
			.end()
			.filter(":first-child").addClass("first")
			.end()
			.filter(":last-child").addClass("last")
			.end()
			.each(function(index){
						   $(this).addClass("item_" + index);
						   });
		
		$("> li > a", $this).addClass("root");
		$("> li > ul", $this).addClass("level_1");
		$("> li > ul > li  ul", $this).addClass("level_n");
		
		
	};
	
//
// Events
//
$.fn.nvmenu.mouseover = function(){
	$(this).addClass("over");
	
	var menu = $("> ul", $(this));
	
	if(menu.css("display") != "block")menu.css({display: "block", opacity: "0"});
	
	menu.stop(true, false).animate({opacity: 1}, 100);
}

$.fn.nvmenu.mouseout = function(){
	$(this).removeClass("over");
	
	$("> ul", $(this)).stop(true, false).animate({opacity: 0}, 100, function(){$(this).css("display", "none");});	
}


	
//
// plugin defaults
//
	$.fn.nvmenu.defaults = {
  	};
//
// end of closure
//
})(jQuery);