function ajax_request(url, data, function_response)
{
    if (!function_response) {
        function_response = ajax_complete;
    }
    var myAjax = new Ajax.Request(
        base_url + url, {
            method: 'post',
            parameters: data,
            onLoading: ajax_loading,
            onComplete: function_response,
            encoding: 'utf-8'
        }
    );
}

function ajax_updater(id, url, data, methode, evScript)
{
    if ($(id)) {
        if (!data)
            data = '';
        var h = $(id).style.height;
        var str = '<table style="width: 100%; height: '+h+';"><tr><td style="text-align: center; vertical-align: middle;"><a onclick="ajax_updater(\''+id+'\', \''+url+'\', \''+data+'\')"><img src="'+base_url+'images/loading.gif" alt="Chargement" border="0" /></a></td></tr></table>';
        var dv = document.createElement('div');
        dv.setAttribute('id', id+'_loading_div');
        dv.className = "mask_loading";
        dv.innerHTML = str;
        $(id).appendChild(dv);
    }
    if (!methode) {
        methode = 'get';
    }
    if (evScript == null) {
        evScript = true;
    }
    ajax_loading();
    var myAjax = new Ajax.Updater({success: id}, base_url + url, {
        /*onLoading: ajax_loading,*/
        onComplete: ajax_complete,
        method: methode,
        parameters: data,
        onFailure: reportError,
        evalScripts: evScript,
        encoding: 'utf-8'
    });
}

function ajax_loading(request)
{
    $('loading').style.display = 'block';
}

function ajax_complete(request)
{
    $('loading').style.display = 'none';
}

function reportError()
{
    alert('Une erreur est survenue ...');
}

function eval_request(originalRequest)
{
    ajax_complete(originalRequest);
    var resp = originalRequest.responseText;
    resp.evalScripts();
}