/* ===-----------=== Komanche 2.0 ===-----------===

           Copyright:     © 2004, CBA Consult ltda.
            Coded by:  Luiz Antonio B. Silva [Labs]
                      Todos os direitos reservados.

                http:         www.cbaconsult.com.br
                mail:   comercial@cbaconsult.com.br

   Gateway de comunicações com o komanche.

   Esta versão(2.0) foi inspirada nas idéias do sistema
   jsrs de autoria de Brent Ashley [jsrs@megahuge.com]

-------------=== Vs. 2.0 - Junho/2004 | By Labs --=== */


// --------------------=== After Calls ===-------------------- //
// As funções abaixo são invocadas após a chamada ao servidor.
// Elas recebem como parâmetros tanto o pacote que foi enviado
// quanto o resultado recebido do servidor.


// -----------------=== putHTML() - afterCall
/* Coloca o resultado HTML de uma chamada em um box na página.
                                                     by Labs - 02/2004 */
function putHTML(params, result){

    // Variáveis:
    var script = "";
    var areas  = result.areas;
    var box    = document.getElementById(params.box);
    var count_himidia = 0;
    if (!box){
        box = document.getElementById("_body");
    }

    // Coloca o HTML principal:
    if (result.html){
        box.innerHTML = result.html;
    }

    // Aplica o HTML das áreas:
    if (areas){
        for (var area_id in areas){
             var area = document.getElementById(area_id);
             if (area){

                // Estatisticas do hi-midia:
                //if (areas[area_id].html && areas[area_id].html != 'undefined'){
                    if (!count_himidia && himidia_estatisticas == true){
                        if (areas[area_id].html == 'undefined'){     
                            areas[area_id].html = '<a href="http://ad.br.doubleclick.net/jump/teste/newsletter;teste7=contador7;sz=1x1;ord=%ORD_REPLACE%?" target="_blank"><img src="http://ad.br.doubleclick.net/ad/teste/newsletter;teste7=contador7;sz=1x1;ord=%ORD_REPLACE%?" width="1" height="1" border="0" alt=""></a>';                      
                        } else {
                            areas[area_id].html = areas[area_id].html + '<a href="http://ad.br.doubleclick.net/jump/teste/newsletter;teste7=contador7;sz=1x1;ord=%ORD_REPLACE%?" target="_blank"><img src="http://ad.br.doubleclick.net/ad/teste/newsletter;teste7=contador7;sz=1x1;ord=%ORD_REPLACE%?" width="1" height="1" border="0" alt=""></a>';
                        }
                        count_himidia++;
                    }
                     
                     // substitui o ORD para o Jornal do Commercio
                     ord=Math.random()*10000000000000000;
                     areas[area_id].html = areas[area_id].html.replace(/%ORD_REPLACE%/gim, ord);
                     area.innerHTML = areas[area_id].html;
                //}
                var area_scripts = area.getElementsByTagName('script');
                for (y=0; y<area_scripts.length; y++){
                   // eval(area_scripts[y].innerHTML);
                   if (area_scripts[y].text)
                    window.execScript(area_scripts[y].text, "javascript");
                }
             }

        }
    }


    // Acerta scripts:
    var browser=navigator.appName;
    var version=navigator.appVersion;
    var _EXEC_SCRIPT_ = (browser.indexOf("Netscape") >= 0 ? false : true);
    if ((browser.indexOf("Microsoft") >= 0) && (version.indexOf("MSIE 5.") >= 0)) {
        var _EXEC_SCRIPT_ = false;
    }

    script = result.script + script;
    if (script && _EXEC_SCRIPT_){
        window.execScript(script, "javascript");
    } else {
        eval(script);
    }


    return true;
}


// -----------------=== applyHTML() - afterCall
/* Acrescenta o resultado HTML de uma chamada em um box na página.
                                                     by Labs - 04/2004 */
function applyHTML(params, result){

    // Pega as áreas:
    var areas = result.areas;
    var script = "";

    // Coloca o HTML
    for (var area_id in areas){
        var area = document.getElementById(area_id);
        if (area){
            area.innerHTML = areas[area_id].html;
            if (areas[area_id].script && areas[area_id].script != ""){
                script += areas[area_id].script;
            }
        }
    }

    // Acerta scripts:
    if (script){
        area.innerHTML += "<script defer=\"true\" language=\"javascript1.5\">" + script + "</script>";
        window.execScript(script, "javascript");
       // insertScript(script);
    }

    return true;
}


// -----------------=== addHTML() - afterCall
/* Acrescenta o resultado HTML de uma chamada em um box na página.
                                                     by Labs - 04/2004 */
function addHTML(params, result){

    // Pega o box:
    var box = document.getElementById(params.box);
    selRows = {};

    // Coloca o HTML
    if (box){
        box.innerHTML += result.html;
        if (result.script && result.script != ""){
            box.innerHTML += "<script language=\"javascript1.5\">eval("+result.script+")</script>";
            window.execScript(result.script, "javascript");
        }
    }

    return true;
}


// -----------------=== putOptions() - afterCall
/* Acrescenta o resultado HTML de uma chamada em um box na página.
                                                     by Labs - 04/2004 */
function putOptions(params, result){

    // Pega o select:
    var sel = document.getElementById(params.select + '_poparea');
    sel.innerHTML = '';

    // Cria options:
    var x = 0;
    var i = 1;
    var len = result.opts.length;
    var selected = (params.selected ? params.selected : result.selected);
    while (x < len){
        valor   = result.opts[x]; x++;
        texto   = result.opts[x]; x++;
        opt  = '<div class="selItem" pos="' + i + '" value="' + valor + '" style="width:100%"';
        opt += ' onClick=" kmSelects.selectItem(this)"  onMouseOver="kmSelects.selOver(this)" ';
        opt += ' onMouseOut="kmSelects.selOut(this)">' + texto + '</div>';
        sel.innerHTML += opt;
        i++;
    }

    if (selected){
        sel.value = selected;
    }

    return true;
}


// -----------------=== setSelOption() - afterCall
/* Acerta um option.
                                                     by Labs - 02/2004 */
function setSelOption(params, result){

    // Deu erro:
    if (result.erro){
        alert(result.erro);
        return false;
    }

    // Pega o box:
    var sel = document.getElementById('sel_' + params.box);
    var opt = document.createElement("OPTION");
    opt.value = result.new_key;
    opt.text  = result.new_val;
    sel.add(opt);
    sel.value = result.new_key;
    sel.click();sel.value = result.new_key;
    return true;
}


// -----------------=== delOption() - afterCall
/* Remove um option.
                                                     by Labs - 04/2004 */
function delOption(params, result){

    // Pega o box:
    var sel = document.getElementById('sel_' + params.box);
    lgth = sel.options.length-1;
    for (i = lgth; i >= 0 ; i--){
         if (sel.options[i].value == result.del_key){
             sel.options.remove(i);
        }
    }

    return true;
}


// -----------------=== turnOff() - afterCall
/* Acerta os estilos dos campos do formulário de volta
   ao normal.
                                                     by Labs - 06/2004 */
function turnOff(params, result){

    var area = (params.area ? params.area : params.form);
    area = document.getElementById(area);


    if (!area) return true;

    // O que procurar:
    var tags_arr = new Array('input', 'textarea', 'select');
    var len = 3; //<<= tags_arr.length;

    // Armazena nome de editores HTML:
    var editores = new Array();
    var e = 0;

    // Campos:
    for (x=0; x<len; x++){
        var el = area.getElementsByTagName(tags_arr[x]);
        var l = el.length;
        for (y=0; y<l; y++){
            if (!el[y].getAttribute('editor')){
                el[y].className = (el[y].type == 'checkbox' ? "frmCheckOff" : "frmInputOff");

            } else if (el[y].className == 'frmMemoCode') {
                editores[e] = el[y].name;
                e++;
            }
        }
    }

    // Retorna editores para modo Layout:
    for (x=0; x<e; x++){
        swapHTML(editores[x]);
    }

    // Retorna params:
    return true;
}


// -----------------=== checkSave() - afterCall
/* Exibe erros de validação de formulário, caso existam. Senão
   atualiza a área.
                                                     by Labs - 02/2004 */
function checkSave(params, result){

    if (result.erros){
        var x = 0;
        var msg = "";
        for (var k in result.erros){
             msg += result.erros[k];

             // Altera a cor
             inp = document.all[result.ids[k]];
             inp.className = 'frmInputError';
             lbl = document.all[inp.label];
             if (lbl) lbl.className = "frmLabelError";

             // Armazena o primeiro da lista
             if (x==0) var firstInp = inp;
             x++;
        }

        if (firstInp){firstInp.focus();}
        var s = (x > 1 ? 's' : '');
        alert("Atenção! Corrija o"+s+" erro"+s+" indicado"+s+":\n"+msg);
        return false;

    } else if (result.html){
        putHTML(params, result);

    } else {
        turnOff(params, result);
        return true;
    }
}

