
if(!window.wb) wb = {};

wb.dialog = (function(){
    //private
    var dialog, background, content;
    
    //public
    return{
        show: function(id, onCancelFn){
            //dom elements
            content = $('#' + id);
            if (content.size() == 1) {
                var cb = $('<div class="closeButton"></div>');
                cb.click(function(){
                    wb.dialog.hide();
                    if (onCancelFn) 
                        onCancelFn();
                });
                content.prepend(cb);
                dialog = $('<div id="dialog"></div>');
                background = $('<div id="dialog_fade"></div>');
                dialog.append(background);
                dialog.append(content);
                $('body').append(dialog).css('overflow', 'hidden');
                //position
                var height = parseInt(content.css('height'), 10);
                var width = parseInt(content.css('width'), 10);
                //show
                content.show();
                $('input:first', dialog).focus();
            }
            else {
                var that = this;
                var fn = function(){
                    that.show(id, onCancelFn);
                };
                setTimeout(fn, 500);
            }
        },
        
        hide: function(){
            dialog.css('display','none');
            $('.closeButton', content).remove();
            $('body').append(content);
            content.hide();
            dialog.remove();
            $('body').css('overflow', 'auto');
        },
        
        showLoadingIndicator: function(id) {
            $('#'+id).find('.dialog_loading').fadeIn();
            this.hideErrorMessage(id);
        },
        
        hideLoadingIndicator: function(id) {
            $('#'+id).find('.dialog_loading').fadeOut();
        },
        
        showErrorMessage: function(id, msg) {
            $('#'+id).find('.error_message').show().html(msg);
        },
        
        showSuccessMessage: function(id, msg) {
            $('#'+id).find('.success_message').show().html(msg);
        },
        
        hideErrorMessage: function(id) {
            $('#'+id).find('.error_message').hide();
        }
        
    };
})();
