var callback_handler;

function Ajax_Provider() 
{
    this.request = function(url, params, callback) 
    {
        callback_handler = callback;
        $.ajaxSetup({
                url: url,
                dataType: "json",
                type: "POST",
                success: this.success_preprocessor
        });
        $.ajax({ data: params });
    }
    
    this.request_html = function(url, params, callback) 
    {
        $.post(url, params, callback);
    }
    
    this.success_preprocessor = function(data)
    {
        try {
        if (data.redirect) {
            window.location.href = data.redirect;
        } else {
            callback_handler(data);
        }
        } catch(e) {
        }
    }
    
    this.upload = function(upload_url, file_element, callback)
    {
        callback_handler = callback;
        $.ajaxFileUpload (
        {
            url: upload_url,
            secureuri: false,
            fileElementId: file_element,
            dataType: 'json',
            success: this.success_preprocessor,
            error: function (data, status, e)
            {
                alert(e);
            }
        } )
    }
}

var ajax = new Ajax_Provider();
