
function modalDialog()
{
    this.open = false;
}


modalDialog.prototype.show = function(content, successFn)
{
    if (this.open == false) {
        $this = this;
        this.open = true;
        setTimeout(function(){
            $(content).dialog({
                modal: true,
                resizable: false,
                width: 540,	    
                buttons: {
                    Ok: function() {
                        $this.open = false;
                        $(this).dialog('close');                                                                     
                    }               
                },
                close: function(event, ui) {
                    if (typeof successFn !== 'undefined') {
                        successFn();
                    }
                }
            });                            
        },50);
    }
}

modalDialog.prototype.userAlert = function(title, icon, text, successFn)
{

    var state = (icon == 'ui-icon-alert' || icon == 'ui-icon-circle-close') ? 'ui-state-error' : 'ui-state-highlight';
                                                              
    var d = '<div id="dialog-message-box" title="'+title+'">';
       d += '<div class="' + state + ' ui-corner-all">'
       d += '<p><span id="dialog-message-icon" class="ui-icon '+icon+'"></span></p>';    
       d += '<p id="dialog-message-text">' + text + '</p>';    
       d += '</div>';
       d += '</div>';

    this.show(d, successFn);    
}


modalDialog.prototype.wait = function()
{
    var message = 'Please be patient while we process your action. This may take a moment depending on the network connection.';

    $('<div class="dialog-wait-box">'+message+'</div>').dialog({   
        modal: true,
        resizable: false,
        title: 'Loading...',                
        width: 540        
    });
    
}

modalDialog.prototype.waitClose = function()
{
    $('.dialog-wait-box').dialog('close');
    $('.dialog-wait-box').remove();
}


modalDialog.prototype.prompt = function(title, question, successFn, object)
{
    var dialogWrp = $('<div id="dialog-confirm-box" title="' + title + '"></div>');
    dialogWrp.append('<p id="dialog-confirm-text">' + question + '</p>');
                                                            
    var formWrp = $('<form id="mbox-prompt"></form>').bind('submit', function(e){e.preventDefault()});           
    var input   = $('<fieldset><input type="text" name="mbox-input"><fieldset>');    
    formWrp.append(input);
        
    dialogWrp.append(formWrp);
                        
    var btns = {};
    
    btns['save'] = function() {
        
        var result = $('input[name="mbox-input"]','#mbox-prompt').val();
        successFn(result, object);        
        $(this).dialog('close');
    };
        
    btns.Cancel = function() {
        $(this).dialog('close');
    }
                                
    $(dialogWrp).dialog({
        resizable: false,
        width: 540,
        height: 150,        
        modal: true,
        buttons: btns               
    });    
}    



modalDialog.prototype.dialog = function(params, successFn)
{
                                   
        var dialogWrp = $('<div id="dialog-confirm-box" title="' + params.title + '"></div>');
        
        
        if (params.message) {
            dialogWrp.append('<p id="dialog-confirm-text">' + params.message + '</p>');
        }
                                                        
        if (params.warning) {                        
            var warningMsg = '<div class="ui-state-error ui-corner-all">'        
            warningMsg    += '<p id="dialog-confirm-warning-text"><span id="dialog-confirm-icon" class="ui-icon ui-icon-alert"></span>'+params.warning+'</p>';
            warningMsg    += '</div>';
            dialogWrp.append(warningMsg);
        }
        
        if (params.info) {                        
            var infoMsg = '<div class="ui-state-highlight ui-corner-all">'        
            infoMsg    += '<p id="dialog-confirm-warning-text"><span id="dialog-confirm-icon" class="ui-icon ui-icon-info"></span>'+params.info+'</p>';
            infoMsg    += '</div>';
            dialogWrp.append(infoMsg);
        }        
        
        if (params.form) {
            dialogWrp.append(params.form);
        }        
                        
        var btns = {};
        
        var okBtn = (params.okBtn) ? params.okBtn : 'Ok';
        
        btns[okBtn] = function() {
                        successFn();
                        $(this).dialog('close');
        };
        
        btns.Cancel = function() {
            $( this ).dialog('close');
        }
                                
        $(dialogWrp).dialog({
                resizable: false,
                width: 540, 
                modal: true,
                buttons: btns               
               });    
}

modalDialog.prototype.warning = function(text, successFn)
{
    
    this.userAlert('Warning', 'ui-icon-alert', text, successFn);
}

modalDialog.prototype.success = function(text, successFn)
{
    
    this.userAlert('Success', 'ui-icon-circle-check', text, successFn);
}

modalDialog.prototype.error = function(text, successFn)
{
    
    this.userAlert('Error', 'ui-icon-circle-close', text, successFn);
}

modalDialog.prototype.info = function(text, successFn)
{
    this.userAlert('Info', 'ui-icon-info', text, successFn);
}
