﻿(function(a){a.widget("ui.accordion",{_init:function(){var b=this.options,d=this;this.running=0;if(b.collapsible==a.ui.accordion.defaults.collapsible&&b.alwaysOpen!=a.ui.accordion.defaults.alwaysOpen)b.collapsible=!b.alwaysOpen;if(b.navigation){var c=this.element.find("a").filter(b.navigationFilter);if(c.length)if(c.filter(b.header).length)this.active=c;else{this.active=c.parent().parent().prev();c.addClass("ui-accordion-content-active")}}this.element.addClass("ui-accordion ui-widget ui-helper-reset");if(this.element[0].nodeName=="UL")this.element.children("li").addClass("ui-accordion-li-fix");this.headers=this.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){a(this).removeClass("ui-state-focus")});this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");this.active=this._findActive(this.active||b.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");this.active.next().addClass("ui-accordion-content-active");a("<span/>").addClass("ui-icon "+b.icons.header).prependTo(this.headers);this.active.find(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected);if(a.browser.msie)this.element.find("a").css("zoom","1");this.resize();this.element.attr("role","tablist");this.headers.attr("role","tab").bind("keydown",function(a){return d._keydown(a)}).next().attr("role","tabpanel");this.headers.not(this.active||"").attr("aria-expanded","false").attr("tabIndex","-1").next().hide();if(!this.active.length)this.headers.eq(0).attr("tabIndex","0");else this.active.attr("aria-expanded","true").attr("tabIndex","0");if(!a.browser.safari)this.headers.find("a").attr("tabIndex","-1");if(b.event)this.headers.bind(b.event+".accordion",function(a){return d._clickHandler.call(d,a,this)})},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role").unbind(".accordion").removeData("accordion");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex");this.headers.find("a").removeAttr("tabindex");this.headers.children(".ui-icon").remove();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");if(a.autoHeight||a.fillHeight)b.css("height","")},_setData:function(c,b){if(c=="alwaysOpen"){c="collapsible";b=!b}a.widget.prototype._setData.apply(this,arguments)},_keydown:function(b){var g=this.options,c=a.ui.keyCode;if(g.disabled||b.altKey||b.ctrlKey)return;var e=this.headers.length,f=this.headers.index(b.target),d=false;switch(b.keyCode){case c.RIGHT:case c.DOWN:d=this.headers[(f+1)%e];break;case c.LEFT:case c.UP:d=this.headers[(f-1+e)%e];break;case c.SPACE:case c.ENTER:return this._clickHandler({target:b.target},b.target)}if(d){a(b.target).attr("tabIndex","-1");a(d).attr("tabIndex","0");d.focus();return false}return true},resize:function(){var d=this.options,b;if(d.fillSpace){if(a.browser.msie){var e=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();if(a.browser.msie)this.element.parent().css("overflow",e);this.headers.each(function(){b-=a(this).outerHeight()});var c=0;this.headers.next().each(function(){c=Math.max(c,a(this).innerHeight()-a(this).height())}).height(Math.max(0,b-c)).css("overflow","auto")}else if(d.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,a(this).outerHeight())}).height(b)}},activate:function(b){var a=this._findActive(b)[0];this._clickHandler({target:a},a)},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===false?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(g,i){var b=this.options;if(b.disabled)return false;if(!g.target&&b.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(b.icons.headerSelected).addClass(b.icons.header);this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),h={options:b,newHeader:a([]),oldHeader:b.active,newContent:a([]),oldContent:e},f=this.active=a([]);this._toggle(f,e,h);return false}var c=a(g.currentTarget||i),d=c[0]==this.active[0];if(this.running||!b.collapsible&&d)return false;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").find(".ui-icon").removeClass(b.icons.headerSelected).addClass(b.icons.header);this.active.next().addClass("ui-accordion-content-active");if(!d){c.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").find(".ui-icon").removeClass(b.icons.header).addClass(b.icons.headerSelected);c.next().addClass("ui-accordion-content-active")}var f=c.next(),e=this.active.next(),h={options:b,newHeader:d&&b.collapsible?a([]):c,oldHeader:this.active,newContent:d&&b.collapsible?a([]):f.find("> *"),oldContent:e.find("> *")},j=this.headers.index(this.active[0])>this.headers.index(c[0]);this.active=d?a([]):c;this._toggle(f,e,h,d,j);return false},_toggle:function(d,c,m,j,k){var b=this.options,i=this;this.toShow=d;this.toHide=c;this.data=m;var h=function(){if(!i)return;return i._completed.apply(i,arguments)};this._trigger("changestart",null,this.data);this.running=c.size()===0?d.size():c.size();if(b.animated){var e={};if(b.collapsible&&j)e={toShow:a([]),toHide:c,complete:h,down:k,autoHeight:b.autoHeight||b.fillSpace};else e={toShow:d,toHide:c,complete:h,down:k,autoHeight:b.autoHeight||b.fillSpace};if(!b.proxied)b.proxied=b.animated;if(!b.proxiedDuration)b.proxiedDuration=b.duration;b.animated=a.isFunction(b.proxied)?b.proxied(e):b.proxied;b.duration=a.isFunction(b.proxiedDuration)?b.proxiedDuration(e):b.proxiedDuration;var g=a.ui.accordion.animations,l=b.duration,f=b.animated;if(!g[f])g[f]=function(a){this.slide(a,{easing:f,duration:l||700})};g[f](e)}else{if(b.collapsible&&j)d.toggle();else{c.hide();d.show()}h(true)}c.prev().attr("aria-expanded","false").attr("tabIndex","-1").blur();d.prev().attr("aria-expanded","true").attr("tabIndex","0").focus()},_completed:function(a){var b=this.options;this.running=a?0:--this.running;if(this.running)return;if(b.clearStyle)this.toShow.add(this.toHide).css({height:"",overflow:""});this._trigger("change",null,this.data)}});a.extend(a.ui.accordion,{version:"1.7.2",defaults:{active:null,alwaysOpen:true,animated:"slide",autoHeight:true,clearStyle:false,collapsible:false,event:"click",fillSpace:false,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()==location.href.toLowerCase()}},animations:{slide:function(b,h){b=a.extend({easing:"swing",duration:300},b,h);if(!b.toHide.size()){b.toShow.animate({height:"show"},b);return}if(!b.toShow.size()){b.toHide.animate({height:"hide"},b);return}var i=b.toShow.css("overflow"),f,d={},g={},j=["height","paddingTop","paddingBottom"],e,c=b.toShow;e=c[0].style.width;c.width(parseInt(c.parent().width(),10)-parseInt(c.css("paddingLeft"),10)-parseInt(c.css("paddingRight"),10)-(parseInt(c.css("borderLeftWidth"),10)||0)-(parseInt(c.css("borderRightWidth"),10)||0));a.each(j,function(f,c){g[c]="hide";var e=(""+a.css(b.toShow[0],c)).match(/^([\d+-.]+)(.*)$/);d[c]={value:e[1],unit:e[2]||"px"}});b.toShow.css({height:0,overflow:"hidden"}).show();b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(c,a){if(a.prop=="height")f=(a.now-a.start)/(a.end-a.start);b.toShow[0].style[a.prop]=f*d[a.prop].value+d[a.prop].unit},duration:b.duration,easing:b.easing,complete:function(){if(!b.autoHeight)b.toShow.css("height","");b.toShow.css("width",e);b.toShow.css({overflow:i});b.complete()}})},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1000:200})},easeslide:function(a){this.slide(a,{easing:"easeinout",duration:700})}}})})(jQuery)
