/*
 * jQuery UI Multi Open Accordion Plugin
 * Author	: Anas Nakawa (http://anasnakawa.wordpress.com/)
 * Date		: 22-Jul-2011
 * Released Under MIT License
 * You are welcome to enhance this plugin at https://code.google.com/p/jquery-multi-open-accordion/
 */
(function(a){a.widget("ui.multiOpenAccordion",{options:{active:0,showAll:null,hideAll:null,_classes:{accordion:"ui-accordion ui-widget ui-helper-reset ui-accordion-icons",h3:"ui-accordion-header ui-helper-reset ui-state-default ui-corner-all",div:"ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom",divActive:"ui-accordion-content-active",span:"ui-icon ui-icon-triangle-1-e",stateDefault:"ui-state-default",stateHover:"ui-state-hover"}},_create:function(){var b=this,c=b.options,d=b.element,e=d.children("h3"),f=d.children("div");d.addClass(c._classes.accordion);e.each(function(d){var e=a(this);e.addClass(c._classes.h3).prepend('<span class="{class}"></span>'.replace(/{class}/,c._classes.span));if(b._isActive(d)){b._showTab(e)}});d.children("div").each(function(b){var d=a(this);d.addClass(c._classes.div)});e.bind("click",function(d){d.preventDefault();var e=a(this);var f={tab:e,content:e.next("div")};b._trigger("click",null,f);if(e.hasClass(c._classes.stateDefault)){b._showTab(e)}else{b._hideTab(e)}});e.bind("mouseover",function(){a(this).addClass(c._classes.stateHover)});e.bind("mouseout",function(){a(this).removeClass(c._classes.stateHover)});b._trigger("init",null,d)},destroy:function(){var a=this;var b=a.element;var c=b.children("h3");var d=b.children("div");var e=a.options;b.children("h3").unbind("click mouseover mouseout");b.removeClass(e._classes.accordion);c.removeClass(e._classes.h3).removeClass("ui-state-default ui-corner-all ui-state-active ui-corner-top").children("span").remove();d.removeClass(e._classes.div+" "+e._classes.divActive).show()},_showTab:function(a){var b=a.children("span.ui-icon");var c=a.next();var d=this.options;a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top");b.removeClass("ui-icon-triangle-1-e").addClass("ui-icon-triangle-1-s");c.slideDown("fast",function(){c.addClass(d._classes.divActive)});var e={tab:a,content:a.next("div")};this._trigger("tabShown",null,e)},_hideTab:function(a){var b=a.children("span.ui-icon");var c=a.next();var d=this.options;a.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all");b.removeClass("ui-icon-triangle-1-s").addClass("ui-icon-triangle-1-e");c.slideUp("fast",function(){c.removeClass(d._classes.divActive)});var e={tab:a,content:a.next("div")};this._trigger("tabHidden",null,e)},_isActive:function(a){var b=this.options;if(typeof b.active=="boolean"&&!b.active){return false}else{if(b.active.length!=undefined){for(var c=0;c<b.active.length;c++){if(b.active[c]==a)return true}}else{return b.active==a}}return false},_getActiveTabs:function(){var b=this.element;var c=[];b.children("div").each(function(b){var d=a(this);if(d.is(":visible")){c.push({index:b,tab:d.prev("h3"),content:d})}});return c.length==0?undefined:c},getActiveTabs:function(){var b=this.element;var c=[];b.children("div").each(function(b){if(a(this).is(":visible")){c.push(b)}});return c.length==0?[-1]:c},_setActiveTabs:function(b){var c=this;var d=this.element;if(typeof b!="undefined"){d.children("div").each(function(d){var e=a(this).prev("h3");if(b.hasObject(d)){c._showTab(e)}else{c._hideTab(e)}})}},_generateTabsArrayFromOptions:function(b){var c=[];var d=this;var e=d.element;var f=e.children("h3").size();if(a.type(b)==="array"){return b}else if(a.type(b)==="number"){return[b]}else if(a.type(b)==="string"){switch(b.toLowerCase()){case"all":var f=e.children("h3").size();for(var g=0;g<f;g++){c.push(g)}return c;break;case"none":c=[-1];return c;break;default:return undefined;break}}},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);var d=this.element;switch(b){case"active":this._setActiveTabs(this._generateTabsArrayFromOptions(c));break;case"getActiveTabs":var d=this.element;var e;d.children("div").each(function(b){if(a(this).is(":visible")){e=e?e:[];e.push(b)}});return e.length==0?[-1]:e;break}}});Array.prototype.hasObject=!Array.indexOf?function(a){var b=this.length+1;while(b-=1){if(this[b-1]===a){return true}}return false}:function(a){return this.indexOf(a)!==-1}})(jQuery)
