/*! 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;

        //Setup interaction and add general descriptor classes
        $("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);
			});

        //Wrap each UL in a div
        $("ul", $this).wrap("<div></div>");

        //Add descriptor classes
        $("> li > a", $this).addClass("root");
        $("> li > div", $this).addClass("level-1");
        $("> li > div div", $this).addClass("level-n");

        //Add a footer to each sub menu
        $("div", $this).append("<div class='footer'></div>");

        if (o.debug) {
            $("ul:first", $this).css("display", "block");
        }

    };

    //
    // Events
    //
    $.fn.nvmenu.mouseover = function() {
        $(this).addClass("over");
		$("> a", this).addClass("over");

        var menu = $("> div", $(this));

        //if (menu.css("display") != "block") menu.css({ display: "block", opacity: "0" });

        //menu.stop(true, false).animate({ opacity: 1, left: 155 }, 100);
		menu.css("display", "block");
    }

    $.fn.nvmenu.mouseout = function() {
        $(this).removeClass("over");
		$("> a", this).removeClass("over");

        //$("> div", $(this)).stop(true, false).animate({ opacity: 0, left: 145}, 100, function() { $(this).css("display", "none"); });
		$("> div", $(this)).css("display", "none");
    }



    //
    // plugin defaults
    //
    $.fn.nvmenu.defaults = {
        debug: false
    };
    //
    // end of closure
    //
})(jQuery);
