/**
 * Goweb Sitemanager 4 Framework
 *
 * Funções de ajuda do AJAX utilizando o prototype.js
 *
 * @version    1.0.0
 * @author     Nuno Mariz <nuno@goweb.pt>
 * @copyright  2006 (c) Goweb (http://www.goweb.pt)
 *
 * // função facultativa para lidar com os erros: 
 * function ajaxOnFailure() {
 *     alert('olha, falhou...');
 * }
 *
 * // funções que devem ser implementadas para mostrar o 'loader'
 * function showLoader() {
 *     Element.show('loader');
 * }
 *
 * function hideLoader() {
 *     Element.hide('loader');
 * }
 *
 */

/**
 * Função para efectuar um pedido via ajax e actualizar um elemento,
 * submetendo os dados de um formulário via POST.
 * 
 * @param  string  url          URL do pedido
 * @param  string  placeholder  O ID do elemento a ser substituido pela resposta
 * @param  string  form         O Nome do form
 * @param  bool    loader       Flag para carregar o loader
 */
function ajaxFormUpdater(url, placeholder, form, loader) {
    if (loader) {
        Ajax.Responders.register({onCreate : showLoader, onComplete : hideLoader});
    }
    new Ajax.Request(url, { method: 'post',
                            onSuccess : function(resp) { Element.update(placeholder, resp.responseText); },
                            onFailure : function(resp) { try { ajaxOnFailure(); } catch (e) {} },
                            postBody  : Form.serialize($(form)),
                          }
                    );
}

/**
 * Função para efectuar um pedido via ajax e actualizar um elemento, via GET.
 * 
 * @param  string  url          URL do pedido
 * @param  string  placeholder  O ID do elemento a ser substituido pela resposta
 * @param  string  param        Parametros a serem passados
 * @param  bool    loader       Flag para carregar o loader
 */
function ajaxUpdater(url, placeholder, params, loader) {
    if (loader) {
        Ajax.Responders.register({onCreate : showLoader, onComplete : hideLoader});
    }
    new Ajax.Request(url, { method: 'get',
                            onSuccess  : function(resp) { Element.update(placeholder, resp.responseText); },
                            onFailure  : function(resp) { try { ajaxOnFailure(); } catch (e) { } },
                            parameters : params
                          }
                    );
}

