// $Id: vertical_tabs.js,v 1.3.2.19 2010/02/03 18:24:42 davereid Exp $
Drupal.verticalTabs = Drupal.verticalTabs || {};
Drupal.settings.verticalTabs = Drupal.settings.verticalTabs || {};
Drupal.behaviors.verticalTabs = function() {
if (!$('.vertical-tabs-list').size() && Drupal.settings.verticalTabs) {
var ul = $('
');
var panes = $('');
$.each(Drupal.settings.verticalTabs, function(k, v) {
var summary = '', cssClass = 'vertical-tabs-list-' + k;
if (v.callback && Drupal.verticalTabs[v.callback]) {
summary = ''+ Drupal.verticalTabs[v.callback].apply(this, v.args) +'';
}
else {
cssClass += ' vertical-tabs-nosummary';
}
// Add a list item to the vertical tabs list.
$(''+ v.name + '' + summary +'').appendTo(ul)
.find('a')
.bind('click', function() {
$(this).parent().addClass('selected').siblings().removeClass('selected');
$('.vertical-tabs-' + k).show().siblings('.vertical-tabs-pane').hide();
return false;
});
// Find the contents of the fieldset (depending on #collapsible property).
var fieldset = $('');
var fieldsetContents = $('.vertical-tabs-' + k + ' > .fieldset-wrapper > *');
if (fieldsetContents.size()) {
fieldsetContents.appendTo(fieldset);
}
else {
$('.vertical-tabs-' + k).children().appendTo(fieldset);
}
// Remove the legend from the fieldset.
fieldset.children('legend').remove();
// Add the fieldset contents to the toggled fieldsets.
fieldset.appendTo(panes)
.addClass('vertical-tabs-' + k)
.addClass('vertical-tabs-pane')
.find('input, select, textarea').bind('change', function() {
if (v.callback && Drupal.verticalTabs[v.callback]) {
$('a.vertical-tabs-list-' + k + ' span.summary').html(Drupal.verticalTabs[v.callback].apply(this, v.args));
}
});
$('.vertical-tabs-' + k).remove();
});
$('div.vertical-tabs').html(ul).append(panes);
// Add an error class to any fieldsets with errors in them.
$('fieldset.vertical-tabs-pane').each(function(i){
if ($(this).find('div.form-item .error').size()) {
$('li.vertical-tab-button').eq(i).addClass('error');
}
})
// Activate the first tab.
$('fieldset.vertical-tabs-pane').hide();
$('fieldset.vertical-tabs-pane:first').show();
$('div.vertical-tabs ul li:first').addClass('first selected');
$('div.vertical-tabs ul li:last').addClass('last');
$('div.vertical-tabs').show();
}
}
Drupal.behaviors.verticalTabsReload = function() {
$.each(Drupal.settings.verticalTabs, function(k, v) {
if (v.callback && Drupal.verticalTabs[v.callback]) {
$('a.vertical-tabs-list-' + k + ' span.summary').html(Drupal.verticalTabs[v.callback].apply(this, v.args));
}
});
}