/**
 *Fun��o que escreve html em um elemento
 *
 *@since30/12/2009
 *@author Godoy (fabio.godoy@gmail.com)
 *@param element - elemento que vai receber o conte�do html
 *@param html - conte�do a ser escrito
 */

function escreveHtml(element, html){
    $("#"+element).html(html);
}

/**
 *Fun��o que corrige o bug do EVAL para response json
 *
 *@since 30/12/2009
 *@author Godoy (fabio.godoy@gmail.com)
 *@param responseText - texto a ser transformado em objeto json
 */
function evalJson(responseText){
    if (responseText!=null){
        return eval("(" + responseText + ")");
    }
    else{
        return null;
    }
}

/**
 *Fun��o gen�rica para submeter qualquer formul�rio via POST
 *
 *@author Godoy (fabio.godoy@gmail.com)
 *@since 20/01/2010
 *@param url - endere�o de destino do POST
 *@param formId - id do formul�rio html que ser� serializado
 *@param method - m�todo utilizado na requisi��o
 *@param isAsync - indica se a requisi��o eh assincrona ou nao
 *
 */
function ajaxCore(url, formId, method, isAsync){
    var result = false;
    var date = new Date();

    //*
    if (url){

        if (formId){
            var fixedPUrl = url+"?"+date.getTime();
            result = $.ajax({
                type: method,
                url: fixedPUrl,
                data: $("form#"+formId).serialize(),
                async: isAsync
            }).responseText;
        } else {
            var fixedUrl = url+"&"+date.getTime();
            result = $.ajax({
                type: method,
                url: fixedUrl,
                async: isAsync
            }).responseText;
        }

    }
    //*/
    return result;

}



/**
 * Fun��o que requisita uma p�gina via ajax e atualiza uma div com o retorno,
 *
 * @since 19/01/2010
 * @author Godoy (fabio.godoy@gmail.com)
 *
 * @param url - endere�o que vai receber a requisi��o
 * @param callBackDiv - div que vai ser atualizada com o texto de retorno
 * @param isAsync - indica se a requisi��o eh assincrona ou nao
 */
function getAjax(url, callBackDiv, isAsync){
    if (url && callBackDiv)
        escreveHtml(callBackDiv, ajaxCore(url, null, "GET", isAsync));


}

/**
 * Fun��o que submete um formul�rio via ajax e atualiza uma div com o retorno,
 * Utilizando o padr�o JSON
 *
 * @since 29/12/2009
 * @author Godoy (fabio.godoy@gmail.com)
 *
 * @param url - endere�o que vai receber a requisi��o
 * @param callBackDiv - div que vai ser atualizada com o texto de retorno
 * @param isAsync - indica se a requisi��o eh assincrona ou nao
 */

function getAjaxJson(url, callBackDiv, isAsync){

    if (url && formId && callBackDiv){
        var data = ajaxCore(url, null, "GET", isAsync);
        var text = evalJson(data);

        escreveHtml(callBackDiv, text.message);
    }
}




/**
 * Fun��o que submete um formul�rio via ajax e atualiza uma div com o retorno,
 * Utilizando o padr�o JSON
 *
 * @since 29/12/2009
 * @author Godoy (fabio.godoy@gmail.com)
 *
 * @param url - endere�o que vai receber a requisi��o
 * @param formId - id do formul�rio subemtido
 * @param callBackDiv - div que vai ser atualizada com o texto de retorno
 * @param isAsync - indica se a requisi��o eh assincrona ou nao
 */

function submitAjaxJson(url, formId, callBackDiv, isAsync){

    if (url && formId && callBackDiv){
        var data = ajaxCore(url, formId, "POST", isAsync);
        var text = evalJson(data);
        if (text.success){
            document.getElementById(formId).reset();
        }
        escreveHtml(callBackDiv, text.message);
    }
}

/**
 * Fun��o que submete um formul�rio via ajax e atualiza uma div com o retorno,
 *
 * @since 19/01/2010
 * @author Godoy (fabio.godoy@gmail.com)
 *
 * @param url - endere�o que vai receber a requisi��o
 * @param formId - id do formul�rio subemtido
 * @param callBackDiv - div que vai ser atualizada com o texto de retorno
 * @param isAsync - indica se a requisi��o eh assincrona ou nao
 */
function submitAjax(url, formId, callBackDiv, isAsync){
	

    if (url && formId && callBackDiv)
        escreveHtml(callBackDiv, ajaxCore(url, formId, "POST", isAsync));
    

}






