/*
* Droppy 0.1.2 - modified by Max to add a function to disable when not undesired.
* (c) 2008 Jason Frame (jason@onehackoranother.com)
*/

var droppyDisableArray = new Array();
function dropppyDisable(id) {
    droppyDisableArray.push(id);
}

(function() {

    jQuery.fn.droppy = function(options) {

        options = jQuery.extend({ speed: 250 }, options || {});

        this.each(function() {
            // modified by Max for ignoring some menus menu
            var id = $(this).attr("id");
            for (var i = 0; i < droppyDisableArray.length; i++) {
                if (droppyDisableArray[i] == id) {
                    return; // ignoring droppy for this menu.
                }
            }

            // ok.
            var root = this, zIndex = 1000;

            function getSubnav(ele) {
                if (ele.nodeName.toLowerCase() == 'li') {
                    var subnav = $('> ul', ele);
                    return subnav.length ? subnav[0] : null;
                } else {
                    return ele;
                }
            }

            function getActuator(ele) {
                if (ele.nodeName.toLowerCase() == 'ul') {
                    return $(ele).parents('li')[0];
                } else {
                    return ele;
                }
            }

            function hide() {
                var subnav = getSubnav(this);
                if (!subnav) return;
                $.data(subnav, 'cancelHide', false);
                setTimeout(function() {
                    if (!$.data(subnav, 'cancelHide')) {
                        $(subnav).slideUp(options.speed);
                    }
                }, 250);
            }

            function show() {
                var subnav = getSubnav(this);
                if (!subnav) return;
                $.data(subnav, 'cancelHide', true);
                $(subnav).css({ zIndex: zIndex++ }).slideDown(options.speed);
                if (this.nodeName.toLowerCase() == 'ul') {
                    var li = getActuator(this);
                    $(li).addClass('hover');
                    $('> a', li).addClass('hover');
                }
            }

            $('ul, li', this).hover(show, hide);
            $('li', this).hover(
              function() { $(this).addClass('hover'); $('> a', this).addClass('hover'); },
              function() { $(this).removeClass('hover'); $('> a', this).removeClass('hover'); }
            );

        });



    };

})();     // execute the function immediately!
