$(document).ready(function() {
    $('#fader').click(function() {
        dPopupHideAll();
    });
});

function dPopupShow(cfg) {
    var popup = dPopupGetCreate(cfg);

    if (popup && (typeof(popup) != 'undefined') && (popup.length > 0)) {
        dPopupFaderShow();
        popup.css('z-index', $('#fader').css('z-index') - 0 + 1);
        popup.show();
    }
}

function dPopupGetCreate(cfg) {
    if (cfg && (typeof(cfg) != 'undefined') && cfg.id && (typeof(cfg.id) != 'undefined')) {
        var popup = $('#dPopup_' + cfg.id);

        /* Create if not exists */
        if (popup.length == 0) {
            var tmp;

            /* Create holder */
            popup = document.createElement('div');
            popup.className = 'dPopup';
            popup.id = 'dPopup_' + cfg.id;

            $('body').append(popup);

            popup = $(popup);

            /* Create border */
            tmp = document.createElement('div');
            tmp.className = 'bord_n';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'bord_e';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'bord_s';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'bord_w';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'corn_nw';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'corn_ne';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'corn_se';
            popup.append(tmp);

            tmp = document.createElement('div');
            tmp.className = 'corn_sw';
            popup.append(tmp);

            /* ====================================================== */

            /* Create label */
            if (cfg.label && (typeof(cfg.label) != 'undefined')) {
                tmp = document.createElement('div');
                tmp.className = 'dPopupLabel';
                tmp.innerHTML = cfg.label;
                popup.append(tmp);
            }

            /* Create img holder */
            tmp = document.createElement('div');
            tmp.className = 'dPopupContent';
            if (cfg.content && (typeof(cfg.content) != 'undefined')) {
                tmp.innerHTML = cfg.content;
            }
            popup.append(tmp);

            /* Create close btn */
            if (cfg.closeBtn && (typeof(cfg.closeBtn) != 'undefined')) {
                tmp = document.createElement('a');
                tmp.className = 'dPopupBtnClose';
                tmp.innerHTML = 'x';
                tmp.href = '#';
                tmp.onclick = function() {
                    dPopupHide(cfg.id);
                    return false;
                }
                popup.append(tmp);
            }
        }

        return popup;
    }

    return false;
}

function dPopupHide(id, withoutFader) {
    if (typeof(withoutFader) == 'undefined') {
        withoutFader = false;
    }

    $('#dPopup_' + id).hide();

    if (!withoutFader) {
        dPopupFaderHide();
    }
}

function dPopupHideAll() {
    var list = $('.dPopup');

    list.each(function() {
        if (/^dPopup_(.+)$/i.test(this.id)) {
            dPopupHide(RegExp.$1, true);
        }
    });
}

function dPopupFaderShow() {
    $('#fader').show();
}

function dPopupFaderHide() {
    $('#fader').hide();
}
