(function($) {    $.jnotify = function(title, text, pictureSrc, options) {        var stackContainer, messageWrap, messageBox, messageBody, messageTextBox, closeButton, messagePicture, image;         options = $.extend({            lifeTime: 0,            click: undefined        }, options);         // находим контейнер с сообщениями, если его нет, тогда создаём        stackContainer = $('#notifier-box');        if (!stackContainer.length) {            stackContainer = $('<div>', {id: 'notifier-box'}).prependTo(document.body);        }         // создаём элементы вертски контейнера сообщения        messageWrap = $('<div>', {            className: 'message-wrap',            css: {                display: 'none'            }        });         messageBox = $('<div>', {            className: 'message-box'        });         messageHeader = $('<div>', {            className: 'message-header',            text: title        });         messageBody = $('<div>', {            className: 'message-body'        });         messageTextBox = $('<span>', {            text: text,			style:'cursor: pointer;'        });         closeButton = $('<a>', {            className: 'message-close',            href: '#',            title: 'Закрыть уведомление',            click: function() {                $(this).parent().parent().fadeOut(300, function() {                    $(this).remove();                });				return false;            }        });         // если указан путь к картинке, тогда создадим контейнер и для неё :)        if (pictureSrc != undefined) {            messagePicture = $('<div>', {                className: 'thumb'            });            image = $('<img>', {                src: pictureSrc,				style:'cursor: pointer;'            });        }         // теперь расположим все на свои места        messageWrap.appendTo(stackContainer).fadeIn();        messageBox.appendTo(messageWrap);        closeButton.appendTo(messageBox);        messageHeader.appendTo(messageBox);        messageBody.appendTo(messageBox);         if (messagePicture != undefined) {            messagePicture.appendTo(messageBody);            image.appendTo(messagePicture);        }        messageTextBox.appendTo(messageBody);         // если время жизни уведомления больше 0, ставим таймер        if (options.lifeTime > 0) {            setTimeout(function() {                $(messageWrap).fadeOut(300, function() {                    $(this).remove();                });            }, options.lifeTime);        }         // если установлен колбек        if (options.click != undefined) {            messageWrap.click(function(e) {                if (!jQuery(e.target).is('.message-close')) {                    options.click.call(this);                }            });        }         return this;    }})(jQuery);
