/** * первая ";" нужна и это не глюк. * Если будет сжатие и объединение нескольких файлов и предыдущий код * закончится на var a = 5 без ";", то мы получим следующий код : * var a=5(function($){...}(jQuery)), а это приведет к ошибке */ ;(function($) { $.fn.artboxModal = function() { if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === '[object Array]'; }; } if (!Object.isObject) { Object.isObject = function(arg) { return Object.prototype.toString.call(arg) === '[object Object]'; }; } var that = this; // jq object from which the method was called => $("#asdas") return { open : function(jqSelector) { // var pos = ($(window).scrollTop()+30+50); // console.log(pos); if ( jqSelector !== undefined && jqSelector !== null && jqSelector !== '' && typeof(jqSelector) === "string" ){ $('#overlay').fadeIn(400, function(){ $(jqSelector).first() .css('display', 'block') .animate({opacity: 1, top: 0}, 200); }); $("body").addClass("off-scroll"); return $(jqSelector); } else{ if (that.selector !== ""){ $('#overlay').fadeIn(400, function(){ console.log("that",that); that .css('display', 'block') .animate({opacity: 1, top: 0}, 200); }); $("body").addClass("off-scroll"); return that; } else { throw 'Don\'t call this function from $.fn without selector in argument'; } } }, close : function() { return this.closeAll(); }, closeAll : function() { $('.forms_').animate({opacity: 0, top: '0'}, 200,function(){ $(this).css('display', 'none'); $('#overlay').fadeOut(400); }); $('#success_modal').animate({opacity: 0, top: '0'}, 200,function(){ $(this).css('display', 'none'); $(this).css({top:'50%'}); $('#overlay').fadeOut(400); }); $("body").removeClass("off-scroll"); return that; }, openSuccessModal : function(arg) { try { if (arguments.length === 1){ if ( Object.isObject(arg) && arg.hasOwnProperty("header") && arg.hasOwnProperty("message") ){ $("#Success").text(arg.header); $("#success-body").text(arg.message); } else { throw new SyntaxError("Argument must be an object with properties: 'header' and 'message'"); } } else if (arguments.length === 2){ if ( typeof arguments[0] === "string" && typeof arguments[1] === "string" ){ var header = arguments[0], message = arguments[1]; $("#Success").text(header); $("#success-body").text(message); } else { throw new SyntaxError("Both params (header and message) must be a string"); } } else { throw new SyntaxError("You can specify only 1(as object) or 2(as strings) arguments"); } // $('#success-modal').modal('show'); that.artboxModal().open("#success-modal"); return $('#success-modal'); } catch (err){ console.log(err); } } }; } }(jQuery));