window.i3.__ajaxRegistry = {};

window.i3.ajax = function(params)
{
    if (i3.__ajaxRegistry[params.label])
    {      
        if (i3.__ajaxRegistry[params.label].__notifyContainer)
            i3.__ajaxRegistry[params.label].__notifyContainer.remove();
        
        window.alert("Previous ajax request has been canceled");
        i3.__ajaxRegistry[params.label].abort();
        
        if (i3.__ajaxRegistry[params.label].cancel)
            if (i3.__ajaxRegistry[params.label].cancel() == false)
                return;
    }
    
    var fs = new Array('success', 'error', 'complete');
    
    for(var i in fs)
        if (params[fs[i]])
        {
            var dummy = params[fs[i]];
            params[fs[i]] = function()
            {
                if (aq.__notifyContainer)
                    $(aq.__notifyContainer).remove();
                
                i3.__ajaxRegistry[params.label] = null;
                dummy(arguments[0], arguments[1], arguments[2]);
            }
        }
    
    var aq = $.ajax(params);
    
    if (String(window.location).indexOf('/admin/') != -1)
        aq.__notifyContainer = $("<div class='ajaxRequest'>Loading "+params.url+"</div>").prependTo(document.body);
    
    if (params.cancel)
        aq.cancel = params.cancel;
    
    if (params.label)
        i3.__ajaxRegistry[params.label] = aq;
}
