(function($) {
var jmenus = new Map();
// If the DWZ scope is not available, add it
$.dwz = $.dwz || {};
$(window).resize(function(){
setTimeout(function(){
for (var i=0; i<jmenus.size();i++){
fillSpace(jmenus.element(i).key);
}
}, 100);
});
$.fn.extend({
accordion: function(options, data) {
var args = Array.prototype.slice.call(arguments, 1);
return this.each(function() {
if (options.fillSpace) jmenus.put(options.fillSpace, this);
if (typeof options == "string") {
var accordion = $.data(this, "dwz-accordion");
accordion[options].apply(accordion, args);
// INIT with optional options
} else if (!$(this).is(".dwz-accordion"))
$.data(this, "dwz-accordion", new $.dwz.accordion(this, options));
});
},
/**
* deprecated, use accordion("activate", index) instead
* @param {Object} index
*/
activate: function(index) {
return this.accordion("activate", index);
}
});
$.dwz.accordion = function(container, options) {
// setup configuration
this.options = options = $.extend({}, $.dwz.accordion.defaults, options);
this.element = container;
$(container).addClass("dwz-accordion");
if ( options.navigation ) {
var current = $(container).find("a").filter(options.navigationFilter);
if ( current.length ) {
if ( current.filter(options.header).length ) {
options.active = current;
} else {
options.active = current.parent().parent().prev();
current.addClass("current");
}
}
}
// calculate active if not specified, using the first header
options.headers = $(container).find(options.header);
options.active = findActive(options.headers, options.active);
if ( options.fillSpace ) {
fillSpace(options.fillSpace);
} else if ( options.autoheight ) {
var maxHeight = 0;
options.headers.next().each(function() {
maxHeight = Math.max(maxHeight, $(this).outerHeight());
}).height(maxHeight);
}
options.headers
.not(options.active || "")
.next()
.hide();
options.active.find("h2").addClass(options.selectedClass);
if (options.event)
$(container).bind((options.event) + ".dwz-accordion", clickHandler);
};