Modal = (function() {
    var _overley, _dialog, _content, _curEl, _onclose;
    var _initialized = false;
        var _overleyT = '<div class="modal-overlay"></div>';
        var _dialogT =
'<div class="modal-dialog">' +
    '<div class="modal-header">' +
        '<a href="#" rel="nofollow" class="modal-close" title="Close"></a>' +
    '</div>' +
    '<div class="modal-frame-tl"></div>' +
    '<div class="modal-frame-tr"></div>' +
    '<div class="modal-frame-t"></div>' +
    '<div class="modal-frame-l">' +
        '<div class="modal-frame-r">' +
            '<div class="modal-content"></div>' +
        '</div>' +
    '</div>' +
    '<div class="modal-frame-bl"></div>' +
    '<div class="modal-frame-br"></div>' +
    '<div class="modal-frame-b"></div>' +
'</div>';

    var _removeCurEl = function() {
        if (!_curEl) return;
        _curEl.hide();
        _curEl.appendTo($('body'));
    }

    var _checkInitialized = function() {
        if (_initialized) return true;
        Modal.init();
        _initialized = true;
    }

    var _emptyfunc = function(){};

    return {
        init: function() {
            if (_initialized) return;
            _overley = $(_overleyT);
            _dialog  = $(_dialogT);
            _content = $("div.modal-content", _dialog);
            $("a.modal-close", _dialog).bind("click", function(e) {
                e.preventDefault();
                Modal.close();
            });
            _overley.hide();
            _dialog.hide();
            _overley.appendTo($('body'));
            _dialog.appendTo($('body'));
            _initialized = true;
        },
        open : function(el, o) {
            _checkInitialized();
            _removeCurEl();
            _curEl = el;

            //var c = el.clone();
            //_content.html(c);
            //c.show();
            _onclose = (o && o.onclose) || _emptyfunc;
            _curEl.appendTo(_content);

            _curEl.show();
            _overley.show();
            _dialog.show();

            var w = (o && o.width) || el.width();
            var h = (o && o.height) || el.height();
            _dialog.width(w+19);
            _content.height(h);
            _content.width(w);
            _dialog.css({'margin-top': -h/2});
            _dialog.css({'margin-left': -w/2});
        },
        close: function() {
            _checkInitialized();
            _overley.hide();
            _dialog.hide();
            _onclose();
            _removeCurEl();
        }
    }
})()

