/* * remodal - v1.1.1 * responsive, lightweight, fast, synchronized with css animations, fully customizable modal window plugin with declarative configuration and hash tracking. * http://vodkabears.github.io/remodal/ * * made by ilya makarov * under mit license */ !function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(c){return b(a,c)}):"object"==typeof exports?b(a,require("jquery")):b(a,a.jquery||a.zepto)}(this,function(a,b){"use strict";function c(a){if(w&&"none"===a.css("animation-name")&&"none"===a.css("-webkit-animation-name")&&"none"===a.css("-moz-animation-name")&&"none"===a.css("-o-animation-name")&&"none"===a.css("-ms-animation-name"))return 0;var b,c,d,e,f=a.css("animation-duration")||a.css("-webkit-animation-duration")||a.css("-moz-animation-duration")||a.css("-o-animation-duration")||a.css("-ms-animation-duration")||"0s",g=a.css("animation-delay")||a.css("-webkit-animation-delay")||a.css("-moz-animation-delay")||a.css("-o-animation-delay")||a.css("-ms-animation-delay")||"0s",h=a.css("animation-iteration-count")||a.css("-webkit-animation-iteration-count")||a.css("-moz-animation-iteration-count")||a.css("-o-animation-iteration-count")||a.css("-ms-animation-iteration-count")||"1";for(f=f.split(", "),g=g.split(", "),h=h.split(", "),e=0,c=f.length,b=number.negative_infinity;eb&&(b=d);return b}function d(){if(b(document).height()<=b(window).height())return 0;var a,c,d=document.createelement("div"),e=document.createelement("div");return d.style.visibility="hidden",d.style.width="100px",document.body.appendchild(d),a=d.offsetwidth,d.style.overflow="scroll",e.style.width="100%",d.appendchild(e),c=e.offsetwidth,d.parentnode.removechild(d),a-c}function e(){if(!x){var a,c,e=b("html"),f=k("is-locked");e.hasclass(f)||(c=b(document.body),a=parseint(c.css("padding-right"),10)+d(),c.css("padding-right",a+"px"),e.addclass(f))}}function f(){if(!x){var a,c,e=b("html"),f=k("is-locked");e.hasclass(f)&&(c=b(document.body),a=parseint(c.css("padding-right"),10)-d(),c.css("padding-right",a+"px"),e.removeclass(f))}}function g(a,b,c,d){var e=k("is",b),f=[k("is",u.closing),k("is",u.opening),k("is",u.closed),k("is",u.opened)].join(" ");a.$bg.removeclass(f).addclass(e),a.$overlay.removeclass(f).addclass(e),a.$wrapper.removeclass(f).addclass(e),a.$modal.removeclass(f).addclass(e),a.state=b,!c&&a.$modal.trigger({type:b,reason:d},[{reason:d}])}function h(a,d,e){var f=0,g=function(a){a.target===this&&f++},h=function(a){a.target===this&&0===--f&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].off(r+" "+s)}),d())};b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].on(r,g).on(s,h)}),a(),0===c(e.$bg)&&0===c(e.$overlay)&&0===c(e.$wrapper)&&0===c(e.$modal)&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(a,b){e[b].off(r+" "+s)}),d())}function i(a){a.state!==u.closed&&(b.each(["$bg","$overlay","$wrapper","$modal"],function(b,c){a[c].off(r+" "+s)}),a.$bg.removeclass(a.settings.modifier),a.$overlay.removeclass(a.settings.modifier).hide(),a.$wrapper.hide(),f(),g(a,u.closed,!0))}function j(a){var b,c,d,e,f={};for(a=a.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,","),b=a.split(","),e=0,c=b.length;e").addclass(k("overlay")+" "+k("is",u.closed)).hide(),e.append(f.$overlay)),f.$bg=b("."+k("bg")).addclass(k("is",u.closed)),f.$modal=a.addclass(q+" "+k("is-initialized")+" "+f.settings.modifier+" "+k("is",u.closed)).attr("tabindex","-1"),f.$wrapper=b("
").addclass(k("wrapper")+" "+f.settings.modifier+" "+k("is",u.closed)).hide().append(f.$modal),e.append(f.$wrapper),f.$wrapper.on("click."+q,'[data-remodal-action="close"]',function(a){a.preventdefault(),f.close()}),f.$wrapper.on("click."+q,'[data-remodal-action="cancel"]',function(a){a.preventdefault(),f.$modal.trigger(v.cancellation),f.settings.closeoncancel&&f.close(v.cancellation)}),f.$wrapper.on("click."+q,'[data-remodal-action="confirm"]',function(a){a.preventdefault(),f.$modal.trigger(v.confirmation),f.settings.closeonconfirm&&f.close(v.confirmation)}),f.$wrapper.on("click."+q,function(a){var c=b(a.target);c.hasclass(k("wrapper"))&&f.settings.closeonoutsideclick&&f.close()})}var n,o,p="remodal",q=a.remodal_globals&&a.remodal_globals.namespace||p,r=b.map(["animationstart","webkitanimationstart","msanimationstart","oanimationstart"],function(a){return a+"."+q}).join(" "),s=b.map(["animationend","webkitanimationend","msanimationend","oanimationend"],function(a){return a+"."+q}).join(" "),t=b.extend({hashtracking:!0,closeonconfirm:!0,closeoncancel:!0,closeonescape:!0,closeonoutsideclick:!0,modifier:"",appendto:null},a.remodal_globals&&a.remodal_globals.defaults),u={closing:"closing",closed:"closed",opening:"opening",opened:"opened"},v={confirmation:"confirmation",cancellation:"cancellation"},w=function(){var a=document.createelement("div").style;return void 0!==a.animationname||void 0!==a.webkitanimationname||void 0!==a.mozanimationname||void 0!==a.msanimationname||void 0!==a.oanimationname}(),x=/ipad|iphone|ipod/.test(navigator.platform);m.prototype.open=function(){var a,c=this;c.state!==u.opening&&c.state!==u.closing&&(a=c.$modal.attr("data-remodal-id"),a&&c.settings.hashtracking&&(o=b(window).scrolltop(),location.hash=a),n&&n!==c&&i(n),n=c,e(),c.$bg.addclass(c.settings.modifier),c.$overlay.addclass(c.settings.modifier).show(),c.$wrapper.show().scrolltop(0),c.$modal.focus(),h(function(){g(c,u.opening)},function(){g(c,u.opened)},c))},m.prototype.close=function(a){var c=this;c.state!==u.opening&&c.state!==u.closing&&c.state!==u.closed&&(c.settings.hashtracking&&c.$modal.attr("data-remodal-id")===location.hash.substr(1)&&(location.hash="",b(window).scrolltop(o)),h(function(){g(c,u.closing,!1,a)},function(){c.$bg.removeclass(c.settings.modifier),c.$overlay.removeclass(c.settings.modifier).hide(),c.$wrapper.hide(),f(),g(c,u.closed,!1,a)},c))},m.prototype.getstate=function(){return this.state},m.prototype.destroy=function(){var a,c=b[p].lookup;i(this),this.$wrapper.remove(),delete c[this.index],a=b.grep(c,function(a){return!!a}).length,0===a&&(this.$overlay.remove(),this.$bg.removeclass(k("is",u.closing)+" "+k("is",u.opening)+" "+k("is",u.closed)+" "+k("is",u.opened)))},b[p]={lookup:[]},b.fn[p]=function(a){var c,d;return this.each(function(e,f){d=b(f),null==d.data(p)?(c=new m(d,a),d.data(p,c.index),c.settings.hashtracking&&d.attr("data-remodal-id")===location.hash.substr(1)&&c.open()):c=b[p].lookup[d.data(p)]}),c},b(document).ready(function(){b(document).on("click","[data-remodal-target]",function(a){a.preventdefault();var c=a.currenttarget,d=c.getattribute("data-remodal-target"),e=b('[data-remodal-id="'+d+'"]');b[p].lookup[e.data(p)].open()}),b(document).find("."+q).each(function(a,c){var d=b(c),e=d.data("remodal-options");e?("string"==typeof e||e instanceof string)&&(e=j(e)):e={},d[p](e)}),b(document).on("keydown."+q,function(a){n&&n.settings.closeonescape&&n.state===u.opened&&27===a.keycode&&n.close()}),b(window).on("hashchange."+q,l)})});