Current File : /home/karenpetzb/www/css/themes/admin/js/jquery.accordion.js |
/**
* @name Accordion
* @descripton This Jquery plugin makes creating accordions pain free
* @version 1.4
* @requires Jquery 1.2.6+
*
* @author Jan Jarfalk
* @author-email jan.jarfalk@unwrongest.com
* @author-website http://www.unwrongest.com
*
* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
*/
(function(jQuery){
jQuery.fn.extend({
accordion: function() {
return this.each(function() {
var $ul = $(this),
elementDataKey = 'accordiated',
activeClassName = 'active',
activationEffect = 'slideToggle',
panelSelector = 'ul, div',
activationEffectSpeed = 'slow',
itemSelector = 'li';
if($ul.data(elementDataKey))
return false;
$.each($ul.find('ul, li>div'), function(){
$(this).data(elementDataKey, true);
$(this).hide();
});
$.each($ul.find('a'), function(){
$(this).click(function(e){
activate(this, activationEffect);
return void(0);
});
$(this).bind('activate-node', function(){
$ul.find( panelSelector ).not($(this).parents()).not($(this).siblings()).slideUp( activationEffectSpeed );
activate(this,'slideDown');
});
});
var active = (location.hash)?$ul.find('a[href=' + location.hash + ']')[0]:$ul.find('li.current a')[0];
if(active){
activate(active, false);
}
function activate(el,effect){
$(el).parent( itemSelector ).siblings().removeClass(activeClassName).children( panelSelector ).slideUp( activationEffectSpeed );
$(el).siblings( panelSelector )[(effect || activationEffect)](((effect == "show")?activationEffectSpeed:false),function(){
if($(el).siblings( panelSelector ).is(':visible')){
$(el).parents( itemSelector ).not($ul.parents()).addClass(activeClassName);
} else {
$(el).parent( itemSelector ).removeClass(activeClassName);
}
if(effect == 'show'){
$(el).parents( itemSelector ).not($ul.parents()).addClass(activeClassName);
}
$(el).parents().show();
});
}
});
}
});
})(jQuery);