/*
* bz_callbacks.js
* v0.2 26092007-1035
***************************************/

//Valores parametrizados, string par etiqueta-valor separados por &. 
//Extendemos el DOM agregando un método a <INPUT> para que devuelva JSON.- id:(name, value)
Element.addMethods('INPUT', {
  toJSON: function(element) {
    element = $(element);
    return element.name.toJSON() + ": " + element.getValue().toJSON();
  }
});
    
//Registra un método como el Handler de un evento del DOM.
Event.observe(window, 'load', init, false);

//Init. Llamados a funciones de inicializacion de procesos.
function init(){    
    //el parametro 'proc' es el id del elemento contenedor (DIV) de todos los contenedores de <input> de datos y de
    //<div> con aspectos gráficos animados con ajax.
    
    //initProc('proc');

    var id = 'informacion_cero' //DIV
    if ($(id) != null){
        Process_Periodico_Ajax($(id), '/cgi-bin/ncommerce3/ExecMacro/Bazuca/popups/Info_cl_cero_home.d2w/report?');
    }
    
    var id = 'informacion_cero_beneficio_verano' //DIV
    if ($(id) != null){
        Process_Periodico_Ajax($(id), '/cgi-bin/ncommerce3/ExecMacro/Bazuca/popups/Info_cl_cero_beneficio_vacaciones.d2w/report?');
    }

}

function makeProcCall(id, common, data){    
    Event.observe(id, 'click', function(){Process_AddToList($(id), common, data)}, false);    
}

//Cuando el proceso finaliza con exito, el script entrega HTML que reemplaza al DIV (proc_<n>)
function RequestComplete(t, obj){
    obj.innerHTML = t.responseText;
}

//EN caso de error al procesar el ajax, el DIV con el contenido grafico (proc_<n>) se sobreescribe aqui.
function RequestFailed(t, obj){
    obj.innerHTML    = 'La actualización ha fallado.';    
}

//Métodos de llamadas asincrónicas.-------------------------------------------------------------------
//t: transport (ajax)
function Process_AddToList(obj, common, data){
    obj.innerHTML    = '<img alt="Procesando..." src="/BazucaHTML/img/botones/img/bzk_ajaxLoader.gif" style="text-align:center;"/>';
        
    var success    = function(t){RequestComplete(t, obj);}
    var failure    = function(t){RequestFailed(t, obj);}        

      var url = '/cgi-bin/ncommerce3/ExecMacro/Bazuca/IngListaAlCubo2.d2w/input';          
    var _common = common.evalJSON(true); //sanitize    
    var _data = data.evalJSON(true); //sanitize    

    //parametros enviados al script del servidor -------------------------------------------
    //_common.(name) donde name es el valor del atributo name de <input>. 
    //El valor retornado es el value de <input>. pars es un string de parametros [GET|POST]
    //cada parametro pasado corresponde a un <input> en el html.
    // _common contiene INPUT que se entregara a todos los elementos updateables de ajax.
    // _data contiene INPUT por separado de cada elemento updateable.    
    var pars = 'common1=' + _common.name1 + '&' +
               'common2=' + _common.name2 + '&' + 
               'p1=' + _data.name1 + '&' + 
               'p2=' + _data.name2 + '&' +
               'p3=' + _data.name3;
    
    //Llamada Updater ajax.-
    var myAjax = new Ajax.Updater(obj, url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});    
}

//Métodos de llamadas asincrónicas.-------------------------------------------------------------------
//t: transport (ajax)
function Process_Directo_Ajax(obj, url, pars){
    obj.innerHTML    = '<img alt="Procesando..." src="/BazucaHTML/img/botones/img/bzk_ajaxLoader.gif" style="text-align:center;"/>';
    var success    = function(t){RequestComplete(t, obj);}
    var failure    = function(t){RequestFailed(t, obj);}
    //Llamada Updater ajax.-
    var myAjax = new Ajax.Updater(obj, url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});    
}

function Process_Directo_Ajax_SSL(obj, url, pars, url_dest){
  if (window.document.pagsegura.paginasegura.value=="1")
    pars=pars+url_dest;
  else
    pars=pars+'http://www.bazuca.com'+url_dest;
  obj.innerHTML    = '<img alt="Procesando..." src="/BazucaHTML/img/botones/img/bzk_ajaxLoader.gif" style="text-align:center;"/>';
  var success    = function(t){RequestComplete(t, obj);}
  var failure    = function(t){RequestFailed(t, obj);}
  var myAjax = new Ajax.Updater(obj, url, {method:'post', postBody:pars, onSuccess:success, onFailure:failure});    
}


function Process_Periodico_Ajax(obj, url){
    obj.innerHTML    = '<img alt="Procesando..." src="/BazucaHTML/img/botones/img/bzk_ajaxLoader.gif" style="text-align:center;"/>';
    var success    = function(t){RequestComplete(t, obj);}
    var failure    = function(t){RequestFailed(t, obj);}
    var periodo = 10; //Periodo en segundos.
    var decae = 2; //factor decaimiento, tiene efecto cuando la respuesta del servidor no trae cambios. 
                  //freq = freq * decay
    
    //Llamada Updater ajax.-
    var myAjax = new Ajax.PeriodicalUpdater(obj, url, {method:'post', frequency:periodo, decay:decae, onSuccess:success, onFailure:failure});
}
