function AjaxRequest(url, callbackFunction)
{
    var that = this;
    var urlCall = url;
    
    this.updating = false;
    this.callback = callbackFunction || function() {};
    
    this.abort = function()
    {
        if ( that.updating )
        {
            that.updating = false;
            that.AJAX.abort();
            that.AJAX = null;
        }
    }
 
    this.update = function(passData, postMethod)
    {
        if ( that.updating )
        {
            return false;
        }
        
        that.AJAX = null;
        
        if ( window.XMLHttpRequest )
        {
            that.AJAX = new XMLHttpRequest();
        }
        else
        {                                  
            that.AJAX = new ActiveXObject("Microsoft.XMLHTTP");
        }         
        
        if ( that.AJAX == null )
        {                             
            return false;                     
        }
        else
        {
            that.AJAX.onreadystatechange = function()
            {
                if ( that.AJAX.readyState == 4 )
                {             
                    that.updating = false;
                    that.callback(that.AJAX.responseText, that.AJAX.status, that.AJAX.responseXML);
                    that.AJAX = null;
                }
            }
            
            that.updating = new Date();
          
            if ( /post/i.test(postMethod) )
            {
                var uri = urlCall + '?' + that.updating.getTime();
                
                that.AJAX.open("POST", uri, true);
                that.AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                that.AJAX.setRequestHeader("Content-Length", passData.length);
                that.AJAX.send(passData);
            }
            else
            {
                var uri = urlCall + '?' + passData + '&timestamp=' + (that.updating.getTime() );
                
                that.AJAX.open("GET", uri, true);
                that.AJAX.send(null);
            }
          
            return true;
        }                                                                           
    }
}

function jsonToObject(str)
{
    if ( isJson(str) )
    {
        return eval('(' + str + ')');
    }
    
    return false;
}

function isJson(str)
{
    str = str.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
}
