// $Id: dhtml_menu.js,v 1.9.2.10 2008/06/23 09:58:41 arancaytar Exp $
Drupal.dhtmlMenu = {};
/**
* Attaches the online users autoupdate behaviour to the block content.
*/
Drupal.dhtmlMenu.autoAttach = function() {
var cookievalue = Drupal.dhtmlMenu.getCookie('dhtml_menu');
if (cookievalue != '') {
var cookieList = cookievalue.split(',');
for (var i = 0; i < cookieList.length; i++) {
$('#'+ cookieList[i]).show();
$('#'+ cookieList[i]).removeClass('sub-collapsed').addClass('sub-expanded');
$('#menu-' + cookieList[i]).removeClass('collapsed').addClass('expanded');
}
}
$('ul.menu li[@class!="leaf"] > a').each(function() {
if ($(this).parent().children('div.submenu').length > 0) {
$(this)
.css({display: 'block', zIndex: 2})
.click(function(e) {
id = $(this).parents()[0].id.replace('menu-', '');
Drupal.dhtmlMenu.switchMenu($('#'+ id)[0], $(this).parents()[0]);
return false;
})
.dblclick(function(e) {
window.location = this.href;
});
}
});
$(window).unload(Drupal.dhtmlMenu.saveMenuState);
};
/**
* Changes the state of a submenu from open to close.
*/
Drupal.dhtmlMenu.switchMenu = function(submenu, parent) {
if($(parent).is('.expanded')) {
if (Drupal.settings.dhtmlMenu.useEffects) {
$(submenu).animate({height: 'hide', opacity: 'hide'}, '500');
} else {
$(submenu).css('display', 'none');
}
$(parent).removeClass('expanded').addClass('collapsed');
$(submenu).removeClass('sub-expanded').addClass('sub-collapsed');
} else {
if (Drupal.settings.dhtmlMenu.useEffects) {
$(submenu).animate({height: 'show', opacity: 'show'}, '500');
} else {
$(submenu).css('display', 'block');
}
$(parent).removeClass('collapsed').addClass('expanded');
$(submenu).removeClass('sub-collapsed').addClass('sub-expanded');
}
Drupal.dhtmlMenu.saveMenuState();
}
/**
* Grabs the cookie data.
*/
Drupal.dhtmlMenu.getCookie = function(name) {
var search = name + '=';
var returnvalue = '';
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
var end = document.cookie.indexOf(';', offset);
if (end == -1) {
end = document.cookie.length;
}
returnvalue = unescape(document.cookie.substring(offset, end));
}
}
return returnvalue;
}
/**
* Saves the states of the menus.
*/
Drupal.dhtmlMenu.saveMenuState = function() {
var blocks = '';
$('div.submenu').each(function(i) {
if ($(this).is('.sub-expanded')) {
if (blocks != '') {
blocks += ',';
}
blocks += this.id;
}
});
document.cookie = 'dhtml_menu=' + blocks + ';path=/';
}
if (Drupal.jsEnabled) {
$(document).ready(Drupal.dhtmlMenu.autoAttach);
}