/home/bonphmya/topcontenedor.com/wp-content/plugins/woo-smart-compare/assets/libs/notiny/notiny.js
(function ($) {
    var $notiny, appendToContainer, closeAction, containers, createNotification,
        defaults, detectCSSFeature, prepareNotification, showAction,
        themedefaults;
    $notiny = $('<div class="notiny" />').appendTo($('body'));
    defaults = {
        image: void 0,
        position: 'right-bottom',
        theme: 'dark',
        template: '<div class="notiny-base"><img class="notiny-img" /><div class="notiny-text"></div></div>',
        width: '300',
        text: '',
        background: true,
        autohide: true,
        clickhide: true,
        delay: 3000,
        animate: true,
        animation_show: 'notiny-animation-show 0.4s forwards',
        animation_hide: 'notiny-animation-hide 0.5s forwards',
    };
    themedefaults = {

        /*
         * Blocks order:
         * | container
         * | - base
         * | -- image
         * | -- text
         * | - base
         * | -- image
         * | -- text
         * | ...
         */
        container_class: '',
        notification_class: '',
        image_class: '',
        text_class: '',
    };

    /*
     * List of possible containers
     */
    containers = {
        'left-top': $('<div />', {
            'class': 'notiny-container',
            css: {
                top: 10,
                left: 10,
            },
        }).appendTo($notiny),
        'left-bottom': $('<div />', {
            'class': 'notiny-container',
            css: {
                bottom: 10,
                left: 10,
            },
        }).appendTo($notiny),
        'right-top': $('<div />', {
            'class': 'notiny-container',
            css: {
                top: 10,
                right: 10,
            },
        }).appendTo($notiny),
        'right-bottom': $('<div />', {
            'class': 'notiny-container',
            css: {
                bottom: 10,
                right: 10,
            },
        }).appendTo($notiny),
        'fluid-top': $('<div />', {
            'class': 'notiny-container notiny-container-fluid-top',
            css: {
                top: 0,
                left: 0,
                right: 0,
            },
        }).appendTo($notiny),
        'fluid-bottom': $('<div />', {
            'class': 'notiny-container notiny-container-fluid-bottom',
            css: {
                bottom: 0,
                left: 0,
                right: 0,
            },
        }).appendTo($notiny),
    };
    detectCSSFeature = function (featurename) {
        var domPrefixes, elm, feature, featurenameCapital, i;
        feature = false;
        domPrefixes = 'Webkit Moz ms O'.split(' ');
        elm = document.createElement('div');
        featurenameCapital = null;
        featurename = featurename.toLowerCase();
        if (elm.style[featurename] !== void 0) {
            feature = true;
        }
        if (feature === false) {
            featurenameCapital = featurename.charAt(0).toUpperCase() +
                featurename.substr(1);
            i = 0;
            while (i < domPrefixes.length) {
                if (elm.style[domPrefixes[i] + featurenameCapital] !== void 0) {
                    feature = true;
                    break;
                }
                i++;
            }
        }
        return feature;
    };
    closeAction = function ($notification, settings) {
        if (settings.animate) {
            if (!settings._state_closing) {
                settings._state_closing = true;
                if (detectCSSFeature('animation') && detectCSSFeature('transform')) {
                    $notification.css('animation', settings.animation_hide);
                    setTimeout((function () {
                        $notification.remove();
                    }), 550);
                } else {
                    $notification.fadeOut(400, function () {
                        $notification.remove();
                    });
                }
            }
        } else {
            $notification.remove();
        }
    };
    showAction = function ($notification, settings) {
        if (settings.animate) {
            if (detectCSSFeature('animation') && detectCSSFeature('transform')) {
                $notification.css('animation', settings.animation_show);
            } else {
                $notification.hide();
                $notification.fadeIn(500);
            }
        }
    };
    prepareNotification = function (options) {
        createNotification($.extend({}, defaults, options));
    };
    createNotification = function (settings) {
        var $img, $notification, $ptext;
        $notification = $(settings.template);
        settings.theme = $.notiny.themes[settings.theme];
        $notification.addClass(settings.theme.notification_class);
        $ptext = $notification.find('.notiny-text');
        $ptext.addClass(settings.theme.text_class);
        $ptext.html(settings.text);
        $img = $notification.find('.notiny-img');
        if (settings.image !== void 0) {
            $notification.addClass('notiny-with-img');
            $img.css('display', 'block');
            $img.addClass(settings.theme.image_class);
            $img.attr('src', settings.image);
        } else {
            $img.hide();
            $notification.addClass('notiny-without-img');
        }
        if (settings.position.indexOf('fluid') === -1) {
            $notification.css('width', settings.width);
        }
        $notification.data('settings', settings);
        appendToContainer($notification, settings);
        return $notification;
    };
    appendToContainer = function ($notification, settings) {
        var $container, floatclear;
        $container = containers[settings.position];
        $container.addClass(settings.theme.container_class);
        if (settings.position.slice(-3) === 'top') {
            $container.prepend($notification);
        } else {
            $container.append($notification);
        }
        floatclear = settings.position.split('-')[0];
        $notification.css('float', floatclear);
        $notification.css('clear', floatclear);
        settings._state_closing = false;
        if (settings.clickhide) {
            $notification.css('cursor', 'pointer');
            $notification.on('click', function () {
                closeAction($notification, settings);
                return false;
            });
        }
        if (settings.autohide) {
            setTimeout((function () {
                closeAction($notification, settings);
            }), settings.delay + 500);
        }
        showAction($notification, settings);
    };
    $.notiny = function (options) {
        prepareNotification(options);
        return this;
    };
    $.notiny.addTheme = function (name, options) {
        var settings;
        settings = $.extend({}, themedefaults, options);
        (this.themes = this.themes || {})[name] = settings;
    };
    $.notiny.close = function ($notiny) {
        closeAction($notiny, $notiny.data('settings'));
    };
    $.notiny.addTheme('dark', {
        notification_class: 'notiny-theme-dark notiny-default-vars',
    });
    $.notiny.addTheme('light', {
        notification_class: 'notiny-theme-light notiny-default-vars',
    });
})(jQuery);