kube.min.js (31760B)
1 !function(t){if("undefined"==typeof jQuery)throw new Error("Kube's requires jQuery");!function(t){var e=jQuery.fn.jquery.split(".");if(1==e[0]&&e[1]<8)throw new Error("Kube's requires at least jQuery v1.8")}(),function(){Function.prototype.inherits=function(t){var e=function(){};e.prototype=t.prototype;var s=new e;for(var i in this.prototype)s[i]=this.prototype[i];this.prototype=s,this.prototype.super=t.prototype};var e=function(e,s){s="object"==typeof s?s:{},this.$element=t(e),this.opts=t.extend(!0,this.defaults,t.fn[this.namespace].options,this.$element.data(),s),this.$target="string"==typeof this.opts.target?t(this.opts.target):null};e.prototype={getInstance:function(){return this.$element.data("fn."+this.namespace)},hasTarget:function(){return!(null===this.$target)},callback:function(e){var s=[].slice.call(arguments).splice(1);return this.$element&&(s=this._fireCallback(t._data(this.$element[0],"events"),e,this.namespace,s)),this.$target&&(s=this._fireCallback(t._data(this.$target[0],"events"),e,this.namespace,s)),this.opts&&this.opts.callbacks&&t.isFunction(this.opts.callbacks[e])?this.opts.callbacks[e].apply(this,s):s},_fireCallback:function(t,e,s,i){if(t&&void 0!==t[e])for(var n=t[e].length,o=0;o<n;o++){if(t[e][o].namespace===s)var a=t[e][o].handler.apply(this,i)}return void 0===a?i:a}},window.MaterialisKube=e}();var e,s,i,n,o,a,h,l,r,c,d,p,u,f,m,g,v=window.MaterialisKube;(e=v).Plugin={create:function(s,i){return i=void 0===i?s.toLowerCase():i,t.fn[i]=function(n,o){var a=Array.prototype.slice.call(arguments,1),h="fn."+i,l=[];return this.each(function(){var i=t(this),r=i.data(h);if(o="object"==typeof n?n:o,r||(i.data(h,{}),i.data(h,r=new e[s](this,o))),"string"==typeof n)if(t.isFunction(r[n])){var c=r[n].apply(r,a);void 0!==c&&l.push(c)}else t.error('No such method "'+n+'" for '+s)}),0===l.length||1===l.length?0===l.length?this:l[0]:l},t.fn[i].options={},this},autoload:function(t){for(var e=t.split(","),s=e.length,i=0;i<s;i++){var n=e[i].toLowerCase().split(",").map(function(t){return t.trim()}).join(",");this.autoloadQueue.push(n)}return this},autoloadQueue:[],startAutoload:function(){if(window.MutationObserver&&0!==this.autoloadQueue.length){var t=this;new MutationObserver(function(e){e.forEach(function(e){var s=e.addedNodes;0===s.length||1===s.length&&3===s.nodeType||t.startAutoloadOnce()})}).observe(document,{subtree:!0,childList:!0})}},startAutoloadOnce:function(){var e=this;t("[data-component]").not("[data-loaded]").each(function(){var s=t(this),i=s.data("component");-1!==e.autoloadQueue.indexOf(i)&&(s.attr("data-loaded",!0),s[i]())})},watch:function(){e.Plugin.startAutoloadOnce(),e.Plugin.startAutoload()}},t(window).on("load",function(){e.Plugin.watch()}),(s=v).Animation=function(t,e,i){this.namespace="animation",this.defaults={},s.apply(this,arguments),this.effect=e,this.completeCallback=void 0!==i&&i,this.prefixes=["","-moz-","-o-animation-","-webkit-"],this.queue=[],this.start()},s.Animation.prototype={start:function(){this.isSlideEffect()&&this.setElementHeight(),this.addToQueue(),this.clean(),this.animate()},addToQueue:function(){this.queue.push(this.effect)},setElementHeight:function(){this.$element.height(this.$element.height())},removeElementHeight:function(){this.$element.css("height","")},isSlideEffect:function(){return"slideDown"===this.effect||"slideUp"===this.effect},isHideableEffect:function(){return-1!==t.inArray(this.effect,["fadeOut","slideUp","flipOut","zoomOut","slideOutUp","slideOutRight","slideOutLeft"])},isToggleEffect:function(){return"show"===this.effect||"hide"===this.effect},storeHideClasses:function(){this.$element.hasClass("hide-sm")?this.$element.data("hide-sm-class",!0):this.$element.hasClass("hide-md")&&this.$element.data("hide-md-class",!0)},revertHideClasses:function(){this.$element.data("hide-sm-class")?this.$element.addClass("hide-sm").removeData("hide-sm-class"):this.$element.data("hide-md-class")?this.$element.addClass("hide-md").removeData("hide-md-class"):this.$element.addClass("hide")},removeHideClass:function(){this.$element.data("hide-sm-class")?this.$element.removeClass("hide-sm"):this.$element.data("hide-md-class")?this.$element.removeClass("hide-md"):this.$element.removeClass("hide")},animate:function(){if(this.storeHideClasses(),this.isToggleEffect())return this.makeSimpleEffects();this.$element.addClass("kubeanimated"),this.$element.addClass(this.queue[0]),this.removeHideClass();var e=this.queue.length>1?null:this.completeCallback;this.complete("AnimationEnd",t.proxy(this.makeComplete,this),e)},makeSimpleEffects:function(){"show"===this.effect?this.removeHideClass():"hide"===this.effect&&this.revertHideClasses(),"function"==typeof this.completeCallback&&this.completeCallback(this)},makeComplete:function(){this.$element.hasClass(this.queue[0])&&(this.clean(),this.queue.shift(),this.queue.length&&this.animate())},complete:function(e,s,i){var n=e.split(" ").map(function(t){return t.toLowerCase()+" webkit"+t+" o"+t+" MS"+t});this.$element.one(n.join(" "),t.proxy(function(){"function"==typeof s&&s(),this.isHideableEffect()&&this.revertHideClasses(),this.isSlideEffect()&&this.removeElementHeight(),"function"==typeof i&&i(this),this.$element.off(event)},this))},clean:function(){this.$element.removeClass("kubeanimated").removeClass(this.queue[0])}},s.Animation.inherits(s),(i=jQuery).fn.animation=function(t,e){var s="fn.animation";return this.each(function(){var n=i(this);n.data(s),n.data(s,{}),n.data(s,new v.Animation(this,t,e))})},i.fn.animation.options={},(n=v).Detect=function(){},n.Detect.prototype={isMobile:function(){return/(iPhone|iPod|BlackBerry|Android)/.test(navigator.userAgent)},isDesktop:function(){return!/(iPhone|iPod|iPad|BlackBerry|Android)/.test(navigator.userAgent)},isMobileScreen:function(){return t(window).width()<=768},isTabletScreen:function(){return t(window).width()>=768&&t(window).width()<=1024},isDesktopScreen:function(){return t(window).width()>1024}},(o=v).FormData=function(t){this.opts=t.opts},o.FormData.prototype={set:function(t){this.data=t},get:function(t){return this.formdata=t,this.opts.appendForms&&this.appendForms(),this.opts.appendFields&&this.appendFields(),this.data},appendFields:function(){var e=t(this.opts.appendFields);if(0!==e.length){var s=this,i="";this.formdata?e.each(function(){s.data.append(t(this).attr("name"),t(this).val())}):(e.each(function(){i+="&"+t(this).attr("name")+"="+t(this).val()}),this.data=""===this.data?i.replace(/^&/,""):this.data+i)}},appendForms:function(){var e=t(this.opts.appendForms);if(0!==e.length)if(this.formdata){var s=this,i=t(this.opts.appendForms).serializeArray();t.each(i,function(t,e){s.data.append(e.name,e.value)})}else{var n=e.serialize();this.data=""===this.data?n:this.data+"&"+n}}},(a=v).Response=function(t){},a.Response.prototype={parse:function(t){if(""===t)return!1;var e={};try{e=JSON.parse(t)}catch(t){return!1}if(void 0!==e[0])for(var s in e)this.parseItem(e[s]);else this.parseItem(e);return e},parseItem:function(e){return"value"===e.type?t.each(e.data,t.proxy(function(e,s){s=!0===(s=null===s||!1===s?0:s)?1:s,t(e).val(s)},this)):"html"===e.type?t.each(e.data,t.proxy(function(e,s){s=null===s||!1===s?"":s,t(e).html(this.stripslashes(s))},this)):"addClass"===e.type?t.each(e.data,function(e,s){t(e).addClass(s)}):"removeClass"===e.type?t.each(e.data,function(e,s){t(e).removeClass(s)}):"command"===e.type?t.each(e.data,function(e,s){t(s)[e]()}):"animation"===e.type?t.each(e.data,function(e,s){s.opts=void 0===s.opts?{}:s.opts,t(e).animation(s.name,s.opts)}):"location"===e.type?top.location.href=e.data:"notify"===e.type&&t.notify(e.data),e},stripslashes:function(t){return(t+"").replace(/\0/g,"0").replace(/\\([\\'"])/g,"$1")}},(h=v).Utils=function(){},h.Utils.prototype={disableBodyScroll:function(){var e=t("html"),s=window.innerWidth;if(!s){var i=document.documentElement.getBoundingClientRect();s=i.right-Math.abs(i.left)}var n=document.body.clientWidth<s,o=this.measureScrollbar();e.css("overflow","hidden"),n&&e.css("padding-right",o)},measureScrollbar:function(){var e=t("body"),s=document.createElement("div");s.className="scrollbar-measure",e.append(s);var i=s.offsetWidth-s.clientWidth;return e[0].removeChild(s),i},enableBodyScroll:function(){t("html").css({overflow:"","padding-right":""})}},(l=v).Message=function(t,e){this.namespace="message",this.defaults={closeSelector:".close",closeEvent:"click",animationOpen:"fadeIn",animationClose:"fadeOut",callbacks:["open","opened","close","closed"]},l.apply(this,arguments),this.start()},l.Message.prototype={start:function(){this.$close=this.$element.find(this.opts.closeSelector),this.$close.on(this.opts.closeEvent+"."+this.namespace,t.proxy(this.close,this)),this.$element.addClass("open")},stop:function(){this.$close.off("."+this.namespace),this.$element.removeClass("open")},open:function(e){e&&e.preventDefault(),this.isOpened()||(this.callback("open"),this.$element.animation(this.opts.animationOpen,t.proxy(this.onOpened,this)))},isOpened:function(){return this.$element.hasClass("open")},onOpened:function(){this.callback("opened"),this.$element.addClass("open")},close:function(e){e&&e.preventDefault(),this.isOpened()&&(this.callback("close"),this.$element.animation(this.opts.animationClose,t.proxy(this.onClosed,this)))},onClosed:function(){this.callback("closed"),this.$element.removeClass("open")}},l.Message.inherits(l),l.Plugin.create("Message"),l.Plugin.autoload("Message"),(r=v).Sticky=function(t,e){this.namespace="sticky",this.defaults={classname:"fixed",offset:0,callbacks:["fixed","unfixed"]},r.apply(this,arguments),this.start()},r.Sticky.prototype={start:function(){this.offsetTop=this.getOffsetTop(),this.load(),t(window).scroll(t.proxy(this.load,this))},getOffsetTop:function(){return this.$element.offset().top},load:function(){return this.isFix()?this.fixed():this.unfixed()},isFix:function(){return t(window).scrollTop()>this.offsetTop+this.opts.offset},fixed:function(){this.$element.addClass(this.opts.classname).css("top",this.opts.offset+"px"),this.callback("fixed")},unfixed:function(){this.$element.removeClass(this.opts.classname).css("top",""),this.callback("unfixed")}},r.Sticky.inherits(r),r.Plugin.create("Sticky"),r.Plugin.autoload("Sticky"),(c=v).Toggleme=function(t,e){this.namespace="toggleme",this.defaults={toggleEvent:"click",target:null,text:"",animationOpen:"slideDown",animationClose:"slideUp",callbacks:["open","opened","close","closed"]},c.apply(this,arguments),this.start()},c.Toggleme.prototype={start:function(){this.hasTarget()&&this.$element.on(this.opts.toggleEvent+"."+this.namespace,t.proxy(this.toggle,this))},stop:function(){this.$element.off("."+this.namespace),this.revertText()},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},open:function(e){e&&e.preventDefault(),this.isOpened()||(this.storeText(),this.callback("open"),this.$target.animation("slideDown",t.proxy(this.onOpened,this)),setTimeout(t.proxy(this.replaceText,this),100))},close:function(e){e&&e.preventDefault(),this.isOpened()&&(this.callback("close"),this.$target.animation("slideUp",t.proxy(this.onClosed,this)))},isOpened:function(){return this.$target.hasClass("open")},onOpened:function(){this.$target.addClass("open"),this.callback("opened")},onClosed:function(){this.$target.removeClass("open"),this.revertText(),this.callback("closed")},storeText:function(){this.$element.data("replacement-text",this.$element.html())},revertText:function(){var t=this.$element.data("replacement-text");t&&this.$element.html(t),this.$element.removeData("replacement-text")},replaceText:function(){""!==this.opts.text&&this.$element.html(this.opts.text)}},c.Toggleme.inherits(c),c.Plugin.create("Toggleme"),c.Plugin.autoload("Toggleme"),(d=v).Offcanvas=function(t,e){this.namespace="offcanvas",this.defaults={target:null,push:!0,width:"250px",direction:"left",toggleEvent:"click",clickOutside:!0,animationOpen:"slideInLeft",animationClose:"slideOutLeft",callbacks:["open","opened","close","closed"]},d.apply(this,arguments),this.utils=new d.Utils,this.detect=new d.Detect,this.start()},d.Offcanvas.prototype={start:function(){this.hasTarget()&&(this.buildTargetWidth(),this.buildAnimationDirection(),this.$close=this.getCloseLink(),this.$element.on(this.opts.toggleEvent+"."+this.namespace,t.proxy(this.toggle,this)),this.$target.addClass("offcanvas"),this.$target.trigger("kube.offcanvas.ready"))},stop:function(){this.closeAll(),this.$element.off("."+this.namespace),this.$close.off("."+this.namespace),t(document).off("."+this.namespace)},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},buildTargetWidth:function(){this.opts.width=t(window).width()<parseInt(this.opts.width)?"100%":this.opts.width},buildAnimationDirection:function(){"right"===this.opts.direction&&(this.opts.animationOpen="slideInRight",this.opts.animationClose="slideOutRight")},getCloseLink:function(){return this.$target.find(".close")},open:function(e){e&&e.preventDefault(),this.isOpened()||(this.closeAll(),this.callback("open"),this.$target.addClass("offcanvas-"+this.opts.direction),this.$target.css("width",Math.min(parseInt(this.opts.width),window.innerWidth-100)),this.$target.css("right","-"+Math.min(parseInt(this.opts.width),window.innerWidth-100)),this.pushBody(),this.$target.trigger("kube.offcanvas.open"),this.$target.animation(this.opts.animationOpen,t.proxy(this.onOpened,this)))},closeAll:function(){var e=t(document).find(".offcanvas");0!==e.length&&(e.each(function(){var e=t(this);e.hasClass("open")&&(e.css("width","").animation("hide"),e.removeClass("open offcanvas-left offcanvas-right"))}),t(document).off("."+this.namespace),t("body").css("left",""))},close:function(e){if(e){var s=t(e.target);if(("A"===s[0].tagName||"BUTTON"===s[0].tagName)&&0!==s.closest(".offcanvas").length&&!s.hasClass("close"))return;e.preventDefault()}this.isOpened()&&(this.utils.enableBodyScroll(),this.callback("close"),this.pullBody(),this.$target.trigger("kube.offcanvas.close"),this.$target.animation(this.opts.animationClose,t.proxy(this.onClosed,this)))},isOpened:function(){return this.$target.hasClass("open")},onOpened:function(){this.opts.clickOutside&&t(document).on("click."+this.namespace+" tap."+this.namespace,t.proxy(this.close,this)),this.detect.isMobileScreen()&&t("html").addClass("no-scroll"),t(document).on("keyup."+this.namespace,t.proxy(this.handleKeyboard,this)),this.$close.on("click."+this.namespace,t.proxy(this.close,this)),this.utils.disableBodyScroll(),this.$target.addClass("open"),this.callback("opened")},onClosed:function(){this.detect.isMobileScreen()&&t("html").removeClass("no-scroll"),this.$target.css("width","").removeClass("offcanvas-"+this.opts.direction),this.$close.off("."+this.namespace),t(document).off("."+this.namespace),this.$target.removeClass("open"),this.callback("closed"),this.$target.trigger("kube.offcanvas.closed")},handleKeyboard:function(t){27===t.which&&this.close()},pullBody:function(){this.opts.push&&t("body").animate({left:0},350,function(){t(this).removeClass("offcanvas-push-body")})},pushBody:function(){if(this.opts.push){var e="left"===this.opts.direction?{left:this.opts.width}:{left:"-"+this.opts.width};t("body").addClass("offcanvas-push-body").animate(e,200)}}},d.Offcanvas.inherits(d),d.Plugin.create("Offcanvas"),d.Plugin.autoload("Offcanvas"),(p=v).Collapse=function(t,e){this.namespace="collapse",this.defaults={target:null,toggle:!0,active:!1,toggleClass:"collapse-toggle",boxClass:"collapse-box",callbacks:["open","opened","close","closed"],hashes:[],currentHash:!1,currentItem:!1},p.apply(this,arguments),this.start()},p.Collapse.prototype={start:function(){this.$items=this.getItems(),this.$items.each(t.proxy(this.loadItems,this)),this.$boxes=this.getBoxes(),this.setActiveItem()},getItems:function(){return this.$element.find("."+this.opts.toggleClass)},getBoxes:function(){return this.$element.find("."+this.opts.boxClass)},loadItems:function(e,s){var i=this.getItem(s);i.$el.attr("rel",i.hash),t(i.hash).hasClass("hide")||(this.opts.currentItem=i,this.opts.active=i.hash,i.$el.addClass("active")),i.$el.on("click.collapse",t.proxy(this.toggle,this))},setActiveItem:function(){!1!==this.opts.active&&(this.opts.currentItem=this.getItemBy(this.opts.active),this.opts.active=this.opts.currentItem.hash),!1!==this.opts.currentItem&&(this.addActive(this.opts.currentItem),this.opts.currentItem.$box.removeClass("hide"))},addActive:function(t){t.$box.removeClass("hide").addClass("open"),t.$el.addClass("active"),!1!==t.$caret&&t.$caret.removeClass("down").addClass("up"),!1!==t.$parent&&t.$parent.addClass("active"),this.opts.currentItem=t},removeActive:function(t){t.$box.removeClass("open"),t.$el.removeClass("active"),!1!==t.$caret&&t.$caret.addClass("down").removeClass("up"),!1!==t.$parent&&t.$parent.removeClass("active"),this.opts.currentItem=!1},toggle:function(e){e&&e.preventDefault();var s=t(e.target).closest("."+this.opts.toggleClass).get(0)||e.target,i=this.getItem(s);this.isOpened(i.hash)?this.close(i.hash):this.open(e)},openAll:function(){this.$items.addClass("active"),this.$boxes.addClass("open").removeClass("hide")},open:function(e,s){if(void 0!==e){"object"==typeof e&&e.preventDefault();var i=t(e.target).closest("."+this.opts.toggleClass).get(0)||e.target,n="object"==typeof e?this.getItem(i):this.getItemBy(e);n.$box.hasClass("open")||(this.opts.toggle&&this.closeAll(),this.callback("open",n),this.addActive(n),n.$box.animation("slideDown",t.proxy(this.onOpened,this)))}},onOpened:function(){this.callback("opened",this.opts.currentItem)},closeAll:function(){this.$items.removeClass("active").closest("li").removeClass("active"),this.$boxes.removeClass("open").addClass("hide")},close:function(e){var s=this.getItemBy(e);this.callback("close",s),this.opts.currentItem=s,s.$box.animation("slideUp",t.proxy(this.onClosed,this))},onClosed:function(){var t=this.opts.currentItem;this.removeActive(t),this.callback("closed",t)},isOpened:function(e){return t(e).hasClass("open")},getItem:function(e){var s={};s.$el=t(e),s.hash=s.$el.attr("href"),s.$box=t(s.hash);var i=s.$el.parent();s.$parent="LI"===i[0].tagName&&i;var n=s.$el.find(".caret");return s.$caret=0!==n.length&&n,s},getItemBy:function(t){var e="number"==typeof t?this.$items.eq(t-1):this.$element.find('[rel="'+t+'"]');return this.getItem(e)}},p.Collapse.inherits(p),p.Plugin.create("Collapse"),p.Plugin.autoload("Collapse"),(u=v).Dropdown=function(t,e){this.namespace="dropdown",this.defaults={target:null,toggleEvent:"click",height:!1,width:!1,animationOpen:"slideDown",animationClose:"slideUp",caretUp:!1,callbacks:["open","opened","close","closed"]},u.apply(this,arguments),this.utils=new u.Utils,this.detect=new u.Detect,this.start()},u.Dropdown.prototype={start:function(){this.buildClose(),this.buildCaret(),this.detect.isMobile()&&this.buildMobileAnimation(),this.$target.addClass("hide"),this.$element.on(this.opts.toggleEvent+"."+this.namespace,t.proxy(this.toggle,this))},stop:function(){this.$element.off("."+this.namespace),this.$target.removeClass("open").addClass("hide"),this.disableEvents()},buildMobileAnimation:function(){this.opts.animationOpen="fadeIn",this.opts.animationClose="fadeOut"},buildClose:function(){this.$close=this.$target.find(".close")},buildCaret:function(){this.$caret=this.getCaret(),this.buildCaretPosition()},buildCaretPosition:function(){var e=this.$element.offset().top+this.$element.innerHeight()+this.$target.innerHeight();t(document).height()>e||(this.opts.caretUp=!0,this.$caret.addClass("up"))},getCaret:function(){return this.$element.find(".caret")},toggleCaretOpen:function(){this.opts.caretUp?this.$caret.removeClass("up").addClass("down"):this.$caret.removeClass("down").addClass("up")},toggleCaretClose:function(){this.opts.caretUp?this.$caret.removeClass("down").addClass("up"):this.$caret.removeClass("up").addClass("down")},toggle:function(t){this.isOpened()?this.close(t):this.open(t)},open:function(e){e&&e.preventDefault(),this.callback("open"),t(".dropdown").removeClass("open").addClass("hide"),this.opts.height&&this.$target.css("min-height",this.opts.height+"px"),this.opts.width&&this.$target.width(this.opts.width),this.setPosition(),this.toggleCaretOpen(),this.$target.animation(this.opts.animationOpen,t.proxy(this.onOpened,this))},close:function(e){if(this.isOpened()){if(e){if(this.shouldNotBeClosed(e.target))return;e.preventDefault()}this.utils.enableBodyScroll(),this.callback("close"),this.toggleCaretClose(),this.$target.animation(this.opts.animationClose,t.proxy(this.onClosed,this))}},onClosed:function(){this.$target.removeClass("open"),this.disableEvents(),this.callback("closed")},onOpened:function(){this.$target.addClass("open"),this.enableEvents(),this.callback("opened")},isOpened:function(){return this.$target.hasClass("open")},enableEvents:function(){this.detect.isDesktop()&&this.$target.on("mouseover."+this.namespace,t.proxy(this.utils.disableBodyScroll,this.utils)).on("mouseout."+this.namespace,t.proxy(this.utils.enableBodyScroll,this.utils)),t(document).on("scroll."+this.namespace,t.proxy(this.setPosition,this)),t(window).on("resize."+this.namespace,t.proxy(this.setPosition,this)),t(document).on("click."+this.namespace+" touchstart."+this.namespace,t.proxy(this.close,this)),t(document).on("keydown."+this.namespace,t.proxy(this.handleKeyboard,this)),this.$target.find('[data-action="dropdown-close"]').on("click."+this.namespace,t.proxy(this.close,this))},disableEvents:function(){this.$target.off("."+this.namespace),t(document).off("."+this.namespace),t(window).off("."+this.namespace)},handleKeyboard:function(t){27===t.which&&this.close(t)},shouldNotBeClosed:function(e){return"dropdown-close"!==t(e).attr("data-action")&&e!==this.$close[0]&&0!==t(e).closest(".dropdown").length},isNavigationFixed:function(){return 0!==this.$element.closest(".fixed").length},getPlacement:function(e){return t(document).height()<e?"top":"bottom"},getOffset:function(t){return this.isNavigationFixed()?this.$element.position():this.$element.offset()},getPosition:function(){return this.isNavigationFixed()?"fixed":"absolute"},setPosition:function(){if(this.detect.isMobile())this.$target.addClass("dropdown-mobile");else{var e,s=this.getPosition(),i=this.getOffset(s),n=this.$target.innerHeight(),o=this.$target.innerWidth(),a=this.getPlacement(i.top+n+this.$element.innerHeight()),h=t(window).width()<i.left+o?o-this.$element.innerWidth():0,l=i.left-h;"bottom"===a?(this.isOpened()||this.$caret.removeClass("up").addClass("down"),this.opts.caretUp=!1,e=i.top+this.$element.outerHeight()+1):(this.opts.animationOpen="show",this.opts.animationClose="hide",this.isOpened()||this.$caret.addClass("up").removeClass("down"),this.opts.caretUp=!0,e=i.top-n-1),this.$target.css({position:s,top:e+"px",left:l+"px"})}}},u.Dropdown.inherits(u),u.Plugin.create("Dropdown"),u.Plugin.autoload("Dropdown"),(f=v).Tabs=function(t,e){this.namespace="tabs",this.defaults={equals:!1,active:!1,live:!1,hash:!0,callbacks:["init","next","prev","open","opened","close","closed"]},f.apply(this,arguments),this.start()},f.Tabs.prototype={start:function(){!1!==this.opts.live&&this.buildLiveTabs(),this.tabsCollection=[],this.hashesCollection=[],this.currentHash=[],this.currentItem=!1,this.$items=this.getItems(),this.$items.each(t.proxy(this.loadItems,this)),this.$tabs=this.getTabs(),this.currentHash=this.getLocationHash(),this.closeAll(),this.setActiveItem(),this.setItemHeight(),this.callback("init")},getTabs:function(){return t(this.tabsCollection).map(function(){return this.toArray()})},getItems:function(){return this.$element.find("a")},loadItems:function(e,s){var i=this.getItem(s);i.$el.attr("rel",i.hash),this.collectItem(i),i.$parent.hasClass("active")&&(this.currentItem=i,this.opts.active=i.hash),i.$el.on("click.tabs",t.proxy(this.open,this))},collectItem:function(t){this.tabsCollection.push(t.$tab),this.hashesCollection.push(t.hash)},buildLiveTabs:function(){var e=t(this.opts.live);0!==e.length&&(this.$liveTabsList=t("<ul />"),e.each(t.proxy(this.buildLiveItem,this)),this.$element.html("").append(this.$liveTabsList))},buildLiveItem:function(e,s){var i=t(s),n=t("<li />"),o=t("<a />"),a=e+1;i.attr("id",this.getLiveItemId(i,a));var h="#"+i.attr("id"),l=this.getLiveItemTitle(i);o.attr("href",h).attr("rel",h).text(l),n.append(o),this.$liveTabsList.append(n)},getLiveItemId:function(t,e){return void 0===t.attr("id")?this.opts.live.replace(".","")+e:t.attr("id")},getLiveItemTitle:function(t){return void 0===t.attr("data-title")?t.attr("id"):t.attr("data-title")},setActiveItem:function(){this.currentHash?(this.currentItem=this.getItemBy(this.currentHash),this.opts.active=this.currentHash):!1===this.opts.active&&(this.currentItem=this.getItem(this.$items.first()),this.opts.active=this.currentItem.hash),this.addActive(this.currentItem)},addActive:function(t){t.$parent.addClass("active"),t.$tab.removeClass("hide").addClass("open"),this.currentItem=t},removeActive:function(t){t.$parent.removeClass("active"),t.$tab.addClass("hide").removeClass("open"),this.currentItem=!1},next:function(t){t&&t.preventDefault();var e=this.getItem(this.fetchElement("next"));this.open(e.hash),this.callback("next",e)},prev:function(t){t&&t.preventDefault();var e=this.getItem(this.fetchElement("prev"));this.open(e.hash),this.callback("prev",e)},fetchElement:function(t){var e;if(!1!==this.currentItem){if(0===(e=this.currentItem.$parent[t]().find("a")).length)return}else e=this.$items[0];return e},open:function(t,e){if(void 0!==t){"object"==typeof t&&t.preventDefault();var s="object"==typeof t?this.getItem(t.target):this.getItemBy(t);this.closeAll(),this.callback("open",s),this.addActive(s),this.pushStateOpen(e,s),this.callback("opened",s)}},pushStateOpen:function(t,e){!1!==t&&!1!==this.opts.hash&&history.pushState(!1,!1,e.hash)},close:function(t){var e=this.getItemBy(t);e.$parent.hasClass("active")&&(this.callback("close",e),this.removeActive(e),this.pushStateClose(),this.callback("closed",e))},pushStateClose:function(){!1!==this.opts.hash&&history.pushState(!1,!1," ")},closeAll:function(){this.$tabs.removeClass("open").addClass("hide"),this.$items.parent().removeClass("active")},getItem:function(e){var s={};return s.$el=t(e),s.hash=s.$el.attr("href"),s.$parent=s.$el.parent(),s.$tab=t(s.hash),s},getItemBy:function(t){var e="number"==typeof t?this.$items.eq(t-1):this.$element.find('[rel="'+t+'"]');return this.getItem(e)},getLocationHash:function(){return!1!==this.opts.hash&&!!this.isHash()&&top.location.hash},isHash:function(){return!(""===top.location.hash||-1===t.inArray(top.location.hash,this.hashesCollection))},setItemHeight:function(){if(this.opts.equals){var t=this.getItemMaxHeight()+"px";this.$tabs.css("min-height",t)}},getItemMaxHeight:function(){var e=0;return this.$tabs.each(function(){var s=t(this).height();e=s>e?s:e}),e}},f.Tabs.inherits(f),f.Plugin.create("Tabs"),f.Plugin.autoload("Tabs"),(m=jQuery).modalcurrent=null,m.modalwindow=function(t){var e=m.extend({},t,{show:!0});m("<span />").modal(e)},(g=v).Modal=function(t,e){this.namespace="modal",this.defaults={target:null,show:!1,url:!1,header:!1,width:"600px",height:!1,maxHeight:!1,position:"center",overlay:!0,appendForms:!1,appendFields:!1,animationOpen:"show",animationClose:"hide",callbacks:["open","opened","close","closed"]},g.apply(this,arguments),this.utils=new g.Utils,this.detect=new g.Detect,this.start()},g.Modal.prototype={start:function(){this.hasTarget()&&(this.opts.show?this.load():this.$element.on("click."+this.namespace,t.proxy(this.load,this)))},buildModal:function(){this.$modal=this.$target.find(".modal"),this.$header=this.$target.find(".modal-header"),this.$close=this.$target.find(".close"),this.$body=this.$target.find(".modal-body")},buildOverlay:function(){!1!==this.opts.overlay&&(0!==t("#modal-overlay").length?this.$overlay=t("#modal-overlay"):(this.$overlay=t('<div id="modal-overlay">').addClass("hide"),t("body").prepend(this.$overlay)),this.$overlay.addClass("overlay"))},buildHeader:function(){this.opts.header&&this.$header.html(this.opts.header)},load:function(t){this.buildModal(),this.buildOverlay(),this.buildHeader(),this.opts.url?this.buildContent():this.open(t)},open:function(e){e&&e.preventDefault(),this.isOpened()||(this.detect.isMobile()&&(this.opts.width="96%"),this.opts.overlay&&this.$overlay.removeClass("hide"),this.$target.removeClass("hide"),this.$modal.removeClass("hide"),this.enableEvents(),this.findActions(),this.resize(),t(window).on("resize."+this.namespace,t.proxy(this.resize,this)),this.detect.isDesktop()&&this.utils.disableBodyScroll(),this.$modal.find("input[type=text],input[type=url],input[type=email]").on("keydown."+this.namespace,t.proxy(this.handleEnter,this)),this.callback("open"),this.$modal.animation(this.opts.animationOpen,t.proxy(this.onOpened,this)))},close:function(e){if(this.$modal&&this.isOpened()){if(e){if(this.shouldNotBeClosed(e.target))return;e.preventDefault()}this.callback("close"),this.disableEvents(),this.$modal.animation(this.opts.animationClose,t.proxy(this.onClosed,this)),this.opts.overlay&&this.$overlay.animation(this.opts.animationClose)}},onOpened:function(){this.$modal.addClass("open"),this.callback("opened"),t.modalcurrent=this},onClosed:function(){this.callback("closed"),this.$target.addClass("hide"),this.$modal.removeClass("open"),this.detect.isDesktop()&&this.utils.enableBodyScroll(),this.$body.css("height",""),t.modalcurrent=null},isOpened:function(){return this.$modal.hasClass("open")},getData:function(){var t=new g.FormData(this);return t.set(""),t.get()},buildContent:function(){t.ajax({url:this.opts.url+"?"+(new Date).getTime(),cache:!1,type:"post",data:this.getData(),success:t.proxy(function(t){this.$body.html(t),this.open()},this)})},buildWidth:function(){var e=this.opts.width,s="2%",i="2%",n=e.match(/%$/);parseInt(this.opts.width)>t(window).width()&&!n?e="96%":n||(s="16px",i="16px"),this.$modal.css({width:e,"margin-top":s,"margin-bottom":i})},buildPosition:function(){if("center"===this.opts.position){var e=t(window).height(),s=this.$modal.outerHeight(),i=e/2-s/2+"px";this.detect.isMobile()?i="2%":s>e&&(i="16px"),this.$modal.css("margin-top",i)}},buildHeight:function(){var e=t(window).height();if(this.opts.maxHeight){var s=parseInt(this.$body.css("padding-top"))+parseInt(this.$body.css("padding-bottom")),i=parseInt(this.$modal.css("margin-top"))+parseInt(this.$modal.css("margin-bottom")),n=e-this.$header.innerHeight()-s-i;this.$body.height(n)}else!1!==this.opts.height&&this.$body.css("height",this.opts.height);this.$modal.outerHeight()>e&&(this.opts.animationOpen="show",this.opts.animationClose="hide")},resize:function(){this.buildWidth(),this.buildPosition(),this.buildHeight()},enableEvents:function(){this.$close.on("click."+this.namespace,t.proxy(this.close,this)),t(document).on("keyup."+this.namespace,t.proxy(this.handleEscape,this)),this.$target.on("click."+this.namespace,t.proxy(this.close,this))},disableEvents:function(){this.$close.off("."+this.namespace),t(document).off("."+this.namespace),this.$target.off("."+this.namespace),t(window).off("."+this.namespace)},findActions:function(){this.$body.find('[data-action="modal-close"]').on("mousedown."+this.namespace,t.proxy(this.close,this))},setHeader:function(t){this.$header.html(t)},setContent:function(t){this.$body.html(t)},setWidth:function(t){this.opts.width=t,this.resize()},getModal:function(){return this.$modal},getBody:function(){return this.$body},getHeader:function(){return this.$header},handleEnter:function(t){13===t.which&&(t.preventDefault(),this.close(!1))},handleEscape:function(t){return 27!==t.which||this.close(!1)},shouldNotBeClosed:function(e){return"modal-close"!==t(e).attr("data-action")&&e!==this.$close[0]&&0!==t(e).closest(".modal").length}},g.Modal.inherits(g),g.Plugin.create("Modal"),g.Plugin.autoload("Modal")}(jQuery);