/**
 * @class request
 * Send an xhr request to the server and display a cute box in case an error occured
 *
 * @param oParams Object
 */
(function($) {$.request = function (oParams) {
    var oErrorCallback = function () {};
    if (oParams['error'] != undefined) {
        oErrorCallback = oParams['error'];
        oParams['error'] = onError;
    }

    var oDefault = {
        'async': true,
        'cache': false,
        'dataType': 'json',
        'error': onError,
        'processData': true,
        'timeout': 15000,
        'type': 'post'
    };

    $.ajax ($.extend (oDefault, oParams));
    
    if ($('.request-error').length > 0) {
        $('.request-error>.close-button').click ();
    }

    function onError () {
        var oDiv = $('<div />').addClass ('request-error');

        var oCloseDiv = $('<div />').addClass ('close-button');
        oCloseDiv.bind ('click', function (oEvent) {
            $(oEvent.currentTarget).parent ().slideUp (function () {$(this).remove ()})
        });

        oDiv.append (oCloseDiv);
        oDiv.append ($('<p />').html ('Oups, an error occured ! Please try again later. Thanks.'));
        oDiv.hide ();
        $(document.body).append (oDiv.slideDown ());

        oErrorCallback ();
    }
}})(jQuery);
