/*
 * Accordion 1.4 - jQuery menu widget
 *
 * Copyright (c) 2007 Jörn Zaefferer, Frank Marcia
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-accordion/
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.accordion.js 2296 2007-07-09 17:58:04Z joern.zaefferer $
 *
 */
jQuery.fn.extend({nextUntil:function(expr){var match=[];this.each(function(){for(var i=this.nextSibling;i;i=i.nextSibling){if(i.nodeType!=1)continue;if(jQuery.filter(expr,[i]).r.length)break;match.push(i);}});return this.pushStack(match);},Accordion:function(settings){settings=jQuery.extend({},jQuery.Accordion.defaults,{header:jQuery(':first-child',this)[0].tagName},settings);if(settings.navigation){var current=this.find("a").filter(function(){return this.href==location.href;});if(current.length){settings.active=current.parent().parent().prev();current.addClass("current");}}var container=this,active=settings.active?jQuery(settings.active,this):settings.active===false?jQuery("<div>"):jQuery(settings.header,this).eq(0),running=0;var headers=container.find(settings.header);headers.not(active||"").nextUntil(settings.header).hide();active.addClass(settings.selectedClass);function toggle(toShow,toHide,data,clickedActive){var finished=function(cancel){running=cancel?0:--running;if(running)return;container.trigger("change",data);};running=toHide.size()+toShow.size();if(settings.animated){if(!settings.alwaysOpen&&clickedActive){toShow.slideToggle(settings.showSpeed);finished(true);}else{toHide.filter(":hidden").each(finished).end().filter(":visible").slideUp(settings.hideSpeed,finished);toShow.slideDown(settings.showSpeed,finished);}}else{if(!settings.alwaysOpen&&clickedActive){toShow.toggle();}else{toHide.hide();toShow.show();}finished(true);}}function clickHandler(event){if(!event.target&&!settings.alwaysOpen){active.toggleClass(settings.selectedClass);var toHide=active.nextUntil(settings.header);var toShow=active=jQuery([]);toggle(toShow,toHide);}var clicked=jQuery(event.target);if(clicked.parents(settings.header).length)while(!clicked.is(settings.header))clicked=clicked.parent();var clickedActive=clicked[0]==active[0];if(running||(settings.alwaysOpen&&clickedActive)||!clicked.is(settings.header))return;active.toggleClass(settings.selectedClass);if(!clickedActive){clicked.addClass(settings.selectedClass);}var toShow=clicked.nextUntil(settings.header),toHide=active.nextUntil(settings.header),data=[clicked,active,toShow,toHide];active=clickedActive?jQuery([]):clicked;toggle(toShow,toHide,data,clickedActive);return!toShow.length;};function activateHandler(event,index){if(index==null)return;clickHandler({target:index>=0?jQuery(settings.header,this)[index]:typeof index=="string"?jQuery(index,this)[0]:null});};container.bind("activate",activateHandler);return container.bind(settings.event,clickHandler)},activate:function(index){return this.trigger('activate',[index]);}});jQuery.Accordion={};jQuery.extend(jQuery.Accordion,{defaults:{selectedClass:"selected",showSpeed:'fast',hideSpeed:'fast',alwaysOpen:true,animated:true,event:"click"}});