/* ===-----------=== 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

   Envio de arquivos ao servidor.

-------------=== Vs. 1.0 - Fev/2004 | By Labs --=== */

// -----------------=== Criação do gateway
/* Cria o gateway de comunicação com o servidor
   Komanche.
                                                     by Labs - 02/2004 */
function initSender(){
    var result = false;

    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
        try {
            result=new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                result=new ActiveXObject("Microsoft.XMLHTTP")
            } catch (E) {
               result=false
        }
     }
    @else
       result=false
    @end @*/

    if (!result) {
        try {
            result = new XMLHttpRequest();
        } catch(e) {
            result = false;
        }
    }

    if (!result) {
        alert("Atenção! Seu browser não está atualizado para visualizar corretamente este site.\n" +
              "Atualize por favor para a versão mais nova de seu navegador preferido.\n" +
              "Nós recomendamos Internet Explorer (6.0+) ou Mozilla.");
    }

    return result;
}


// -----------------=== sendFiles()
/* Responsável pelo envio de arquivos ao servidor.
                                                     by Labs - 05/2004 */
function sendFiles(filenames, serverpaths, msg){

    // Inicializa o leitor de stream:
    var adoStream = new ActiveXObject("ADODB.Stream");
    adoStream.Mode = 3; // read write
    adoStream.Type = 1; // adTypeBinary
    adoStream.Open();

    // Abre uma conexão com o servidor:
    var FileSender = initSender();

    // Avisa:
    if (!msg){
        msg = "Atenção! Serão enviados alguns arquivos ao servidor. "+
              "Caso seu browser não permita o envio, verifique suas configurações de segurança e tente novamente.";
    }
    alert(msg);

    // Monta o pacote:
    var files = new Array();
    var len   = filenames.length;
    for (var x=0; x<len; x++){
        var file  = unescape(filenames[x]);
        if (file.substr(0, 8) == "file:///"){
            file = file.substr(8);
        }
       // msg   = "Enviando arquivo " + (x+1) + " de " + len + " (" + file + ")\n" + "Continuar?";

       // if (confirm(msg)){
            adoStream.LoadFromFile(file);
            FileSender.open("POST", SERVER, false);
            FileSender.setRequestHeader("Content-Type", "application/octet-stream");
            FileSender.setRequestHeader("KM-PROTOCOLO", "FILE-TRANSFER");
            FileSender.setRequestHeader("KM-FILENAME",  serverpaths[x] + "|" + file);
            FileSender.setRequestHeader("Content-Length", adoStream.Size);
            FileSender.send(adoStream.Read(adoStream.Size));
       // }
    }

    alert("Todos os arquivos foram processados.");
    adoStream.Close;
}


// -----------------=== checkForImgs()
/* Faz um scan pelo conteúdo do objeto procurando por imagens
   para serem enviadas ao servidor.
                                                     by Labs - 05/2004 */
function checkForImgs(obj){

    // Assegura conteúdo atualizado:
    if (obj.style.display == 'none'){
        swapHTML(obj.name);
        swapHTML(obj.name);
    }

    // Variáveis:
    var path_arr = new Array();
    var imagens  = new Array();
    var div      = document.getElementById("html_" + obj.name);
    var img_arr  = div.getElementsByTagName("img");
    var len      = img_arr.length;
    var arq      = "";
    var c        = 0;

    // Pega todas as imagens que forem locais:
    /*  file:///F:/html/cba_/cba%20site/imgs/barra_e_sup.gif  */
    for (var x=0; x<len; x++){
        arq = unescape(img_arr[x].src);

        var tipo = arq.substr(0, 4);
        if (tipo == 'file'){
            imagens[c]  = arq.substr(8);
            path_arr[c] = obj.path;

            var n    = arq.lastIndexOf('/');
            var file = arq.substr(n+1);
            img_arr[x].src = obj.url + file;
            c++;
        }
    }

    // Envia as imagens:
    if (c > 0){
        msg = "Atenção! Aviso de segurança!\n"+
              "As imagens que foram inseridas neste documento precisam ser enviadas ao servidor.\n"+
              "O Komanche tentará agora fazer este envio automaticamente, para cada arquivo selecionado "+
              "será pedido a sua confirmação.\n Caso seu browser não permita o envio, verifique suas "+
              "configurações de segurança e tente novamente.";
        sendFiles(imagens, path_arr, msg);
    }

    // retorna:
    return obj.value;
}


