--- dynamic_persistent_menu.js.orig 2010-02-14 16:56:34.000000000 +0530 +++ dynamic_persistent_menu.js 2010-02-14 16:57:00.000000000 +0530 @@ -1,26 +1,40 @@ +// $Id$ + +/** + * @file dynamic_persistent_menu.js + * The Javascript code for Dynamic Persistent Menu + */ + var overMenu; var overStatus = 1; +/** + * Initialize the module's JS functions + */ Drupal.behaviors.dynamic_persistent_menu = function() { + // Show current submenu, hide previous submenu, if any. $(".dynamic-persistent-menu-menu-item").mouseover( function () { overStatus = 1 ; - + + // If there was a previous menu which received a mouseover, hide the submenu. if (overMenu) { subMenu = dynamic_persistent_menu_get_sub_menu(overMenu); $('#' + subMenu).hide(); $('#' + overMenu).removeClass('dynamic-persistent-menu-children-active'); } - + // Show the submenu of the current menu. overMenu = this.id; subMenu = dynamic_persistent_menu_get_sub_menu(overMenu); $('#' + subMenu).show(); $('#' + this.id).addClass('dynamic-persistent-menu-children-active') } ).mouseout( + // Set timeout for the hide function dynamic_persistent_menu_set_timeout ); + // Keep over status as long as mouse is over the current menu. $(".dynamic-persistent-menu-sub-menu").mouseover( function() { if (dynamic_persistent_menu_get_sub_menu(overMenu) == this.id) { @@ -32,10 +46,16 @@ ) }; +/** + * Get the id of the submenu of a menu, given its id. + */ function dynamic_persistent_menu_get_sub_menu(menu_id) { return menu_id.replace('dynamic-persistent-menu-menu','dynamic-persistent-menu-sub-menu'); } +/** + * Reset all submenus and the corresponding statuses. + */ function dynamic_persistent_menu_reset() { if (!overStatus) { $('#' + dynamic_persistent_menu_get_sub_menu(overMenu)).hide(); @@ -45,6 +65,9 @@ } } +/** + * Call timeout function. + */ function dynamic_persistent_menu_set_timeout() { overStatus = 0 ; setTimeout('dynamic_persistent_menu_reset()', subMenuTimeout);