/** * Accordion, jQuery Plugin * * This plugin provides an accordion with cookie support. * * Copyright (c) 2011 John Snyder (snyderplace.com) * @license http://www.snyderplace.com/accordion/license.txt New BSD * @version 1.1 */ !function(e){function n(e){return e.data("accordion-opts")}function o(n){opened=e(document).find("."+n.cssOpen),e.each(opened,function(){e(this).addClass(n.cssClose).removeClass(n.cssOpen),n.animateClose(e(this),n)})}function s(e,n){var s,t;return e.hasClass(n.cssOpen)?(o(n),i(n)&&c("",n),!1):(o(n),s=e,o(t=n),s.removeClass(t.cssClose).addClass(t.cssOpen),t.animateOpen(s,t),i(t)&&c(id=s.attr("id"),t),!1)}function i(n){return!!e.cookie&&""!=n.cookieName}function c(n,o){if(!i(o))return!1;e.cookie(o.cookieName,n,o.cookieOptions)}function t(n){return!!i(n)&&null!=e.cookie(n.cookieName)}e.fn.accordion=function(n){var o,a,d,l;if(!this||this.length<1)return this;o=this,a=n,d=e.extend({},e.fn.accordion.defaults,a),l="",o.each(function(){var n,o,c,a,u=e(this);n=u,o=d,n.data("accordion-opts",o),"mouseenter"==d.bind&&u.bind("mouseenter",function(e){e.preventDefault(),s(u,d)}),"mouseover"==d.bind&&u.bind("mouseover",function(e){e.preventDefault(),s(u,d)}),"click"==d.bind&&u.bind("click",function(e){e.preventDefault(),s(u,d)}),"dblclick"==d.bind&&u.bind("dblclick",function(e){e.preventDefault(),s(u,d)}),id=u.attr("id"),i(d)&&t(d)?!1==(c=id,a=d,!!(i(a)&&t(a))&&(cookie=unescape(e.cookie(a.cookieName)))==c)?(u.addClass(d.cssClose),d.loadClose(u,d)):(u.addClass(d.cssOpen),d.loadOpen(u,d),l=id):id!=d.defaultOpen?(u.addClass(d.cssClose),d.loadClose(u,d)):(u.addClass(d.cssOpen),d.loadOpen(u,d),l=id)}),l.length>0&&i(d)?c(l,d):c("",d)},e.fn.accordion.defaults={cssClose:"accordion-close",cssOpen:"accordion-open",cookieName:"accordion",cookieOptions:{path:"/",expires:7,domain:"",secure:""},defaultOpen:"",speed:"slow",bind:"click",animateOpen:function(e,n){e.next().stop(!0,!0).slideDown(n.speed)},animateClose:function(e,n){e.next().stop(!0,!0).slideUp(n.speed)},loadOpen:function(e,n){e.next().show()},loadClose:function(e,n){e.next().hide()}}}(jQuery);