"use strict";(function($){$.fn.tabSlideOut=function(callerSettings){function heightAsString(node){return parseInt(node.outerHeight()+1,10)+'px'} function widthAsString(node){return parseInt(node.outerWidth()+1,10)+'px'} function borderWidth(element,edge){return parseInt(element.css('border-'+edge+'-width'),10)} function calculatePanelSize(){var available=$(window).height();if(edge==='top'||edge==='bottom'){available=$(window).width()} return available-parseInt(settings.otherOffset)-parseInt(settings.offset)} var panel=this;function isOpen(){return panel.hasClass('ui-slideouttab-open')} if(typeof callerSettings=='string'){switch(callerSettings){case 'open':this.trigger('open');return this;case 'close':this.trigger('close');return this;case 'isOpen':return isOpen();case 'toggle':this.trigger('toggle');return this;case 'bounce':this.trigger('bounce');return this;default:throw "Invalid tabSlideOut command"}}else{var settings=$.extend({tabLocation:'left',tabHandle:'.handle',action:'click',hoverTimeout:5000,offset:'200px',offsetReverse:!1,otherOffset:null,handleOffset:null,handleOffsetReverse:!1,bounceDistance:'50px',bounceTimes:4,bounceSpeed:300,tabImage:null,tabImageHeight:null,tabImageWidth:null,onLoadSlideOut:!1,clickScreenToClose:!0,clickScreenToCloseFilters:['.ui-slideouttab-panel'],onOpen:function(){},onClose:function(){},onSlide:function(){},onBeforeOpen:function(){return!0},onBeforeClose:function(){return!0},onBeforeSlide:function(){return!0}},callerSettings||{});var edge=settings.tabLocation;var handle=settings.tabHandle=$(settings.tabHandle,panel);panel.addClass('ui-slideouttab-panel').addClass('ui-slideouttab-'+edge);if(settings.offsetReverse) panel.addClass('ui-slideouttab-panel-reverse');handle.addClass('ui-slideouttab-handle');if(settings.handleOffsetReverse) handle.addClass('ui-slideouttab-handle-reverse');settings.toggleButton=$(settings.toggleButton);if(settings.tabImage!==null){var imageHeight=0;var imageWidth=0;if(settings.tabImageHeight!==null&&settings.tabImageWidth!==null){imageHeight=settings.tabImageHeight;imageWidth=settings.tabImageWidth}else{var img=new Image();img.src=settings.tabImage;imageHeight=img.naturalHeight;imageWidth=img.naturalWidth} handle.addClass('ui-slideouttab-handle-image');handle.css({'background':'url('+settings.tabImage+') no-repeat','width':imageWidth,'height':imageHeight})} if(edge==='top'||edge==='bottom'){settings.panelOffsetFrom=settings.offsetReverse?'right':'left';settings.handleOffsetFrom=settings.handleOffsetReverse?'right':'left'}else{settings.panelOffsetFrom=settings.offsetReverse?'bottom':'top';settings.handleOffsetFrom=settings.handleOffsetReverse?'bottom':'top'} if(settings.handleOffset===null){settings.handleOffset='-'+borderWidth(panel,settings.handleOffsetFrom)+'px'} if(edge==='top'||edge==='bottom'){panel.css(settings.panelOffsetFrom,settings.offset);handle.css(settings.handleOffsetFrom,settings.handleOffset);if(settings.otherOffset!==null){panel.css('width',calculatePanelSize()+'px');$(window).resize(function(){panel.css('width',calculatePanelSize()+'px')})} if(edge==='top'){handle.css({'bottom':'-'+heightAsString(handle)})}else{handle.css({'top':'-'+heightAsString(handle)})}}else{panel.css(settings.panelOffsetFrom,settings.offset);handle.css(settings.handleOffsetFrom,settings.handleOffset);if(settings.otherOffset!==null){panel.css('height',calculatePanelSize()+'px');$(window).resize(function(){panel.css('height',calculatePanelSize()+'px')})} if(edge==='left'){handle.css({'right':'0'})}else{handle.css({'left':'0'})}} handle.on('click',function(event){event.preventDefault()});settings.toggleButton.on('click',function(event){event.preventDefault()});panel.addClass('ui-slideouttab-ready');var close=function(){if(settings.onBeforeSlide()&&settings.onBeforeClose()){panel.removeClass('ui-slideouttab-open').trigger('slideouttabclose');settings.onSlide();settings.onClose()}};var open=function(){if(settings.onBeforeSlide()&&settings.onBeforeOpen()){panel.addClass('ui-slideouttab-open').trigger('slideouttabopen');settings.onSlide();settings.onOpen()}};var toggle=function(){if(isOpen()){close()}else{open()}};var moveIn=[];moveIn[edge]='-='+settings.bounceDistance;var moveOut=[];moveOut[edge]='+='+settings.bounceDistance;var bounceIn=function(){var temp=panel;for(var i=0;i