﻿//######################################################################################################

Ext.namespace( "CfgInc.Util" );


//*****************************************************************************
//  CfgInc.Util.ShowFailure()
//
//  Show a dialog containing error message.
//
//  This is a frendlier alternative to Ext.net.DirectEvent.showFailure(), which
//  is what is called for ajax requests if a failure handler is not given.
//*****************************************************************************

CfgInc.Util.ShowFailure = function( response, errorMsg, title )
{
    // Provide default title if none passed in.
    if ( title == null )
        title = "Server Request Error";

    // Special case for timeout errors.
    if ( response.isTimeout )
        errorMsg = "Server Request Timeout";

    // Fetch errorMsg from response if none passed in.
    if ( errorMsg == null )
        errorMsg = response.responseText || response.statusText;

    // Remove leading 'System.xxxException:'.
    errorMsg = errorMsg.replace( /^System\.[a-zA-Z0-9_]*Exception:/, "" );

    // Convert text to HTML.
    errorMsg = CfgInc.Util.TextToHTML( errorMsg );

    Ext.Msg.alert( title, errorMsg );
}


//*****************************************************************************
//  CfgInc.Util.TextToHTML()
//*****************************************************************************

CfgInc.Util.TextToHTML = function( strMessage )
{
    // HTML Encode.
    strMessage = Ext.util.Format.htmlEncode( strMessage );

    // Preserve CarriageReturn-Linefeeds by converting them to <br/>.
    strMessage = Ext.util.Format.nl2br( strMessage );

    // Preserve runs of spaces by converting every other one to &nbsp;.
    strMessage = strMessage.replace( /  /g, " &nbsp;" );

    return strMessage;
}