/*! * kwicks: sexy sliding panels for jquery - v2.2.1 * http://devsmash.com/projects/kwicks * * copyright 2013 jeremy martin (jmar777) * contributors: duke speer (duke3d), guillermo guerrero (gguerrero) * released under the mit license * http://www.opensource.org/licenses/mit-license.php */ !function(a){var b={init:function(b){var d={maxsize:-1,minsize:-1,spacing:5,duration:500,isvertical:!1,easing:void 0,autoresize:!0,behavior:null,delaymousein:0,delaymouseout:0,selectonclick:!0,deselectonclick:!1,interval:2500,interactive:!0},e=a.extend(d,b);if(-1!==e.minsize&&-1!==e.maxsize)throw new error("kwicks options minsize and maxsize may not both be set");if(e.behavior&&"menu"!==e.behavior&&"slideshow"!==e.behavior)throw new error("unrecognized kwicks behavior specified: "+e.behavior);return a.each(["minsize","maxsize","spacing"],function(a,b){var c=e[b];switch(typeof c){case"number":e[b+"units"]="px";break;case"string":if("%"===c.slice(-1))e[b+"units"]="%",e[b]=+c.slice(0,-1)/100;else{if("px"!==c.slice(-2))throw new error("invalid value for kwicks option "+b+": "+c);e[b+"units"]="px",e[b]=+c.slice(0,-2)}break;default:throw new error("invalid value for kwicks option "+b+": "+c)}}),this.each(function(){a(this).data("kwicks",new c(this,e))})},expand:function(b,c){"object"==typeof b&&(c=b,b=void 0);var d=c&&c.delay||0;return this.each(function(){var c=a(this),e=c.data("kwicks");if(e)b="number"==typeof b?b:-1;else{if(!(e=c.parent().data("kwicks")))return;b=c.index()}var f=function(){if(b!==e.expandedindex){var a=e.$panels,c=a[b]||null;e.$container.trigger("expand.kwicks",{index:b,expanded:c,collapsed:a.not(c).get(),oldindex:e.expandedindex,oldexpanded:e.getexpandedpanel(),isanimated:e.isanimated})}},g=e.$container.data("kwicks-timeout-id");g&&(e.$container.removedata("kwicks-timeout-id"),cleartimeout(g)),d>0?e.$container.data("kwicks-timeout-id",settimeout(f,d)):f()})},expanded:function(){var a=this.first().data("kwicks");if(a)return a.expandedindex},select:function(b){return this.each(function(){var c=a(this),d=c.data("kwicks");if(d)b="number"==typeof b?b:-1;else{if(!(d=c.parent().data("kwicks")))return;b=c.index()}if(b!==d.selectedindex){var e=d.$panels,f=e[b]||null;d.$container.trigger("select.kwicks",{index:b,selected:f,unselected:e.not(f).get(),oldindex:d.selectedindex,oldselected:d.getselectedpanel()})}d.$container.kwicks("expand",b)})},selected:function(){var a=this.first().data("kwicks");if(a)return a.selectedindex},resize:function(){return this.each(function(){var b=a(this),c=b.data("kwicks");c&&c.resize()})},destroy:function(){return this.each(function(){var b=a(this),c=b.data("kwicks");c&&c.destroy()})}};a.fn.kwicks=function(a){if(b[a])return b[a].apply(this,array.prototype.slice.call(arguments,1));if("object"!=typeof a&&a)throw new error("unrecognized kwicks method: "+a);return b.init.apply(this,arguments)},a.event.special.expand={_default:function(b,c){if("kwicks"===b.namespace){var d=a(b.target).data("kwicks");d&&d.expand(c.index)}}},a.event.special.select={_default:function(b,c){if("kwicks"===b.namespace){var d=a(b.target).data("kwicks");d&&d.select(c.index)}}};var c=function(b,c){var d=this;this.opts=c,this.ondestroyhandlers=[];var e=c.isvertical?"vertical":"horizontal";this.$container=a(b),this.$panels=this.$container.children();var f=["kwicks","kwicks-"+e];a.each(f,function(a){d.$container.hasclass(a)||(d.$container.addclass(a),d.ondestroy(function(){d.$container.removeclass(a)}))}),this.selectedindex=this.$panels.filter(".kwicks-selected").index(),this.expandedindex=this.selectedindex,this.primarydimension=c.isvertical?"height":"width",this.secondarydimension=c.isvertical?"width":"height",this.calculatepanelsizes(),this.primaryalignment=c.isvertical?"top":"left",this.secondaryalignment=c.isvertical?"bottom":"right",this.$timer=a({progress:0}),this.isanimated=!1,this.offsets=this.getoffsetsforexpanded(),this.updatepanelstyles(),this.initbehavior(),this.initwindowresizehandler(),settimeout(function(){d.updatepanelstyles()},100)};c.prototype.calculatepanelsizes=function(){var a=this.opts,b=this.getcontainersize(!0);this.panelspacing="%"===a.spacingunits?b*a.spacing:a.spacing;var c=this.$panels.length,d=this.panelspacing*(c-1),e=b-d;this.panelsize=e/c,-1===a.minsize?(this.panelmaxsize=-1===a.maxsize?5>c?2*(b/3):b/3:"%"===a.maxsizeunits?e*a.maxsize:a.maxsize,this.panelminsize=(e-this.panelmaxsize)/(c-1)):-1===a.maxsize&&(this.panelminsize="%"===a.minsizeunits?e*a.minsize:a.minsize,this.panelmaxsize=e-this.panelminsize*(c-1))},c.prototype.getoffsetsforexpanded=function(){for(var a=this.expandedindex,b=this.$panels.length,c=this.panelspacing,d=this.panelsize,e=this.panelminsize,f=this.panelmaxsize,g=[0],h=1;b>h;h++)g[h]=-1===a?h*(d+c):a>=h?h*(e+c):f+e*(h-1)+h*c;return g},c.prototype.setstyle=function(){return a.support.style?function(a,b){a.setattribute("style",b)}:function(a,b){a.style.csstext=b}}(),c.prototype.updatepanelstyles=function(){for(var a,b,c,d,e=this.offsets,f=this.$panels,g=this.primarydimension,h=this.primaryalignment,i=this.secondaryalignment,j=this.panelspacing,k=this.getcontainersize(),l=this._stylesinited?"":"position:absolute;",m=f.length;m--;)c=a,a=math.round(e[m]),m===f.length-1?(b=k-a,d=i+":0;"+g+":"+b+"px;"):(b=c-a-j,d=h+":"+a+"px;"+g+":"+b+"px;"),this.setstyle(f[m],l+d);this._stylesinited||(this.$container.addclass("kwicks-processed"),this._stylesinited=!0)},c.prototype.initbehavior=function(){if(this.opts.behavior)switch(this.opts.behavior){case"menu":this.initmenubehavior();break;case"slideshow":this.initslideshowbehavior();break;default:throw new error("unrecognized behavior option: "+this.opts.behavior)}},c.prototype.initmenubehavior=function(){var b=this,c=b.opts;this.addeventhandler(this.$container,"mouseleave",function(){b.$container.kwicks("expand",-1,{delay:c.delaymouseout})}),this.addeventhandler(this.$panels,"mouseenter",function(){a(this).kwicks("expand",{delay:c.delaymousein})}),(c.selectonclick||c.deselectonclick)&&this.addeventhandler(this.$panels,"click",function(){var b=a(this),d=b.hasclass("kwicks-selected");d&&c.deselectonclick?b.parent().kwicks("select",-1):!d&&c.selectonclick&&b.kwicks("select")})},c.prototype.initslideshowbehavior=function(){var b,c=this,d=this.$panels.length,e=0,f=!1,g=function(){f||(b=setinterval(function(){c.$container.kwicks("expand",++e%d)},c.opts.interval),f=!0)},h=function(){clearinterval(b),f=!1};g(),this.ondestroy(h),this.opts.interactive&&(this.addeventhandler(this.$container,"mouseenter",h),this.addeventhandler(this.$container,"mouseleave",g),this.addeventhandler(this.$panels,"mouseenter",function(){e=a(this).kwicks("expand").index()}))},c.prototype.initwindowresizehandler=function(){if(this.opts.autoresize){var b=this,c=0,d=!1,e=a(window),f=function(a){a||(d=!1);var e=+new date;if(20>e-c){if(d)return;return settimeout(f,20-(e-c)),d=!0,void 0}c=e,b.resize()};this.addeventhandler(e,"resize",f)}},c.prototype.getcontainersize=function(a){var b=this._containersize;return(a||!b)&&(b=this._containersize=this.$container[this.primarydimension]()),b},c.prototype.getexpandedpanel=function(){return this.$panels[this.expandedindex]||null},c.prototype.getcollapsedpanels=function(){return-1===this.expandedindex?[]:this.$panels.not(this.getexpandedpanel()).get()},c.prototype.getselectedpanel=function(){return this.$panels[this.selectedindex]||null},c.prototype.getunselectedpanels=function(){return this.$panels.not(this.getselectedpanel()).get()},c.prototype.ondestroy=function(a){this.ondestroyhandlers.push(a)},c.prototype.addeventhandler=function(a,b,c){a.on(b,c),this.ondestroy(function(){a.off(b,c)})},c.prototype.destroy=function(){this.$timer.stop();for(var a=0,b=this.ondestroyhandlers.length;b>a;a++)this.ondestroyhandlers[a]();this.$panels.attr("style","").removeclass("kwicks-expanded kwicks-selected kwicks-collapsed"),this.$container.removeclass("kwicks-processed").removedata("kwicks")},c.prototype.resize=function(){this.getcontainersize()!==this.getcontainersize(!0)&&(this.calculatepanelsizes(),this.offsets=this.getoffsetsforexpanded(),this.isanimated?this._dirtyoffsets=!0:this.updatepanelstyles())},c.prototype.select=function(b){b!==this.selectedindex&&(a(this.getselectedpanel()).removeclass("kwicks-selected"),this.selectedindex=b,a(this.getselectedpanel()).addclass("kwicks-selected"))},c.prototype.expand=function(b){var c=this,d=this.expandedindex,e=this.getexpandedpanel();if(-1===b&&(b=this.selectedindex),b!==this.expandedindex){a(this.getexpandedpanel()).removeclass("kwicks-expanded"),a(this.getcollapsedpanels()).removeclass("kwicks-collapsed"),this.expandedindex=b,a(this.getexpandedpanel()).addclass("kwicks-expanded"),a(this.getcollapsedpanels()).addclass("kwicks-collapsed");var f=this.$timer,g=this.$panels.length,h=this.offsets.slice(),i=this.offsets,j=this.getoffsetsforexpanded();f.stop()[0].progress=0,this.isanimated=!0,f.animate({progress:1},{duration:this.opts.duration,easing:this.opts.easing,step:function(a){c._dirtyoffsets&&(i=c.offsets,j=c.getoffsetsforexpanded(),c._dirtyoffsets=!1),i.length=0;for(var b=0;g>b;b++){var d=j[b],e=d-(d-h[b])*(1-a);i[b]=e}c.updatepanelstyles()},complete:function(){c.isanimated=!1,c.$container.trigger("expand-complete.kwicks",{index:b,expanded:c.getexpandedpanel(),collapsed:c.getcollapsedpanels(),oldindex:d,oldexpanded:e,isanimated:!1})}})}}}(jquery);