Вход Регистрация
Файл: setk/ajax/newModal/jquery-modal.js
Строк: 156
<?php
/**
 * The Modal jQuery plugin
 *
 * @author Alexander Makarov <sam@rmcreative.ru>
 * @link https://github.com/samdark/the-modal
 * @version 1.0
 */
;(function($, windowdocumentundefined) {
    
"use strict";
    
/*jshint smarttabs:true*/

    
var pluginNamespace 'the-modal',
        
// global defaults
        
defaults = {
            
overlayClass'themodal-overlay',

            
closeOnEsctrue,
            
closeOnOverlayClicktrue,

            
onClosenull,
            
onOpennull,

            
cloningtrue
        
};

    function 
lockContainer() {
        $(
'html,body').addClass('lock-modal');
    }
    
    function 
unlockContainer() {
        $(
'html,body').removeClass('lock-modal');
    }

    function 
init(elsoptions) {
        var 
modalOptions options;

        if(
els.length) {
            
els.each(function(){
                $(
this).data(pluginNamespace+'.options'modalOptions);
            });
        }
        else {
            $.
extend(defaultsmodalOptions);
        }

        return {
            
open: function(options) {
                var 
el els.get(0);
                var 
localOptions = $.extend({}, defaults, $(el).data(pluginNamespace+'.options'), options);

                
// close modal if opened
                
if($('.'+localOptions.overlayClass).length) {
                    $.
modal().close();
                }
                
                
lockContainer();

                var 
overlay = $('<div/>').addClass(localOptions.overlayClass).prependTo('body');
                
overlay.data(pluginNamespace+'.options'options);

                if(
el) {
                    if (!
localOptions.cloning) {
                        
overlay.data(pluginNamespace+'.el'el);
                        $(
el).data(pluginNamespace+'.parent', $(el).parent());
                        $(
el).appendTo(overlay).show();
                    } else {
                        $(
el).clone(true).appendTo(overlay).show();
                    }
                }

                if(
localOptions.closeOnEsc) {
                    $(
document).bind('keyup.'+pluginNamespace, function(e){
                        if(
e.keyCode === 27) {
                            $.
modal().close();
                        }
                    });
                }

                if(
localOptions.closeOnOverlayClick) {
                    
overlay.children().on('click.' pluginNamespace, function(e){
                        
e.stopPropagation();
                    });
                    $(
'.' localOptions.overlayClass).on('click.' pluginNamespace, function(e){
                        $.
modal().close();
                    });
                }

                $(
document).bind('touchmove.'+pluginNamespace,function(e){
                    if(!$(
e).parents('.' localOptions.overlayClass)) {
                        
e.preventDefault();
                    }
                });

                if(
localOptions.onOpen) {
                    
localOptions.onOpen(overlaylocalOptions);
                }
            },
            
close: function() {
                var 
el els.get(0);

                var 
localOptions = $.extend({}, defaultsoptions);
                var 
overlay = $('.' localOptions.overlayClass);
                $.
extend(localOptionsoverlay.data(pluginNamespace+'.options'));

                if (!
localOptions.cloning) {
                    if (!
el) {
                        
el overlay.data(pluginNamespace+'.el');
                    }
                    $(
el).appendTo($(el).data(pluginNamespace+'.parent'));
                }

                
overlay.remove();
                
unlockContainer();

                if(
localOptions.closeOnEsc) {
                    $(
document).unbind('keyup.'+pluginNamespace);
                }

                if(
localOptions.onClose) {
                    
localOptions.onClose(overlaylocalOptions);
                }
            }
        };
    }

    $.
modal = function(options){
        return 
init($(), options);
    };

    $.fn.
modal = function(options) {
        return 
init(thisoptions);
    };

})(
jQuerywindowdocument);
?>
Онлайн: 0
Реклама