function RemoteObject(dest, json, fcAnonSuccess, fcAnonFailed)
{    
    fcAnonSuccess = typeof fcAnonSuccess=="undefined" ? true : fcAnonSuccess;
    fcAnonFailed = typeof fcAnonFailed=="undefined" ? false : fcAnonFailed;
    
    var req = $.post(dest, json, 
        function(data)
        {
            if(data.length>0)
            {                              
                if(data.charAt(0)=="{")
                {                 
                    var r = data.substring(1, data.indexOf("}")).toLowerCase(); 
                    if(r=="erro") r += "r";                    
                    var s = data.substring(data.indexOf("}")+1);
                    data = {result:r, html:s};
                }
                else if(data.substring(0,4) == "data")
                    eval(data);
                else
                    data = {result:typeof fcAnonSuccess=="boolean" ? "info" : "ok", html:data};       
            }  
            else
                data = {result:"empty", html:""};
                
            if( (fcAnonSuccess!=null && typeof fcAnonSuccess=="function") && data.result.toLowerCase() != "error" ) fcAnonSuccess(data);
            if( (fcAnonFailed!=null && typeof fcAnonFailed=="function") && data.result.toLowerCase() == "error") fcAnonFailed(data);  
            
            if( typeof fcAnonSuccess=="boolean" && data.result.toLowerCase() != "error" ) messageResult(data, true);  
            
            if( typeof fcAnonFailed=="boolean" )
            {
                try {isProcessing = false;} finally {}
                messageResult(data, fcAnonFailed);      
            }
            
        }
    );
    
    return req;
}

//------------------------------------------------------------------------

function messageResult(data, isMessageResult)
{
    var b = true;
    if(data.result.toLowerCase()=="error")
    {
        alert( "ATENÇÃO, ERRO FATAL:\n\n" + data.html + "\n\nComunique ao administrador do sistema: webmaster@inovandoweb.com" );
        b = false;
    }
    
    if(data.result.toLowerCase()=="info" && isMessageResult)
    {
        alert( "ATENÇÃO:\n\n" + data.html );
        b = false;
    }
    
    return b;
}

//------------------------------------------------------------------------

//Valida tags script vindas de uma resposta do ajax
function validJavaScript(idResult) 
{
    var conteudo = typeof idResult=="object" ? idResult : document.getElementById(idResult);
    var newElement = document.createElement("script");
    var scripts = conteudo.getElementsByTagName("script");
    for(var i=0;i<scripts.length;i++) newElement.text = scripts[i].innerHTML;
    conteudo.appendChild(newElement);
}

//------------------------------------------------------------------------------

//envia requisicao via post
function sendPost(url, json, target, funcAnon)
{
    var f = document.createElement("form");
    f.name = "_sendPostForm";
    f.action = url;
    f.target = typeof target=="string" ? target : "_self";
    f.method = "post";
    if(typeof funcAnon=="function") f.onsubmit = funcAnon;

    var fd = null;
    for(var item in json)
    {
        fd = document.createElement("input");
        fd.type = "hidden";
        fd.name = item.toString();
        fd.value = json[item.toString()];
        f.appendChild(fd);
    }

    document.body.appendChild(f);
    f.submit();
    document.body.removeChild(f);
}
