function base_inicia(){    
    $('body').append('<div id="base" style="display: none" ></div>');    
    base_mensagem( 0 , '' );
}

function base_separador( tipo ){
    if( tipo == 0 ){return ':'}
    if( tipo == 1 ){return ','}
    if( tipo == 2 ){return ';'}
    if( tipo == 3 ){return '-/-'}
    if( tipo == 4 ){return '-'}
    return '';
}

function base_volta( dados, codigo , sub_codigo ){
    
    var s0 = base_separador( 0 );
    base_mensagem( 0 , '' );    
    
    if( codigo == "logar" ){ base_redireciona( '/inicio?step=exp' ); return false; }    
    if( codigo == "campos" ){
        var string = base_camposalerta( dados );
        base_mensagem( 1 , base_mensagem_codigo( 3 ) );
    }
    if( codigo == "erro" ){        
        base_mensagem( 1 , sub_codigo + s0 + dados );
        base_multibox.open( 'cod.' + sub_codigo + s0 + dados ,'erro',null,null); return;
    }
    if( codigo == "aviso" ){        
        base_mensagem( 1 , 'cod.' + sub_codigo + '-' + dados );
        base_multibox.open( 'cod.' + sub_codigo + s0 + dados ,'erro',null,null); return;
    }
    
}

function base_login(){
    var idcliente = $('#idcliente').attr('value');
    if( !idcliente ){ base_redireciona( '/inicio?step=exp' ); return false; }
    return true;
}

function base_login_cabeca(){    
    var string = "f=" + "l" + "&email=" + $('#logemail').attr('value') + "&senha=" + $('#logsenha').attr('value');
    var url = '/clienteajax/entrada';    
    base_ajax( url , string , 'base_voltalogin_cabeca' );
    base_camposcor( "" );
}
    function base_voltalogin_cabeca( dados , codigo , sub_codigo ){        
        if( codigo == "ok" ){ base_redireciona( '/central' ); }
        if( dados.indexOf('email') != -1 ){ dados = dados.replace("email", "logemail"); }
        if( dados.indexOf('senha') != -1 ){ dados = dados.replace("senha", "logsenha"); }
        base_volta( dados, codigo , sub_codigo );        
    }

function base_logout(){
    var string = "f=" + "lo";
    var url = '/clienteajax/entrada';
    base_ajax( url , string , 'base_voltalogout' );
}
    function base_voltalogout( dados, codigo , sub_codigo ){
        base_redireciona( '/inicio' );
        //if( codigo == "ok" ){ base_redireciona( '/inicio' ); }
        //base_volta( dados, codigo , sub_codigo );
    }


function base_url(){
    var index = window.location.href.indexOf('localhost/PP/public_html');
    var saida = '';
    if(index==-1){saida = ''}else{
        saida =  'http://localhost/PP/public_html';
    }    
    return saida;    
}

function base_trim(str){ if(str){ return str.replace(/^\s+|\s+$/g,"");}else{ return '';} }

function base_mensagem( tipo , string ){
    if( tipo == 0 ){ $('#mensagem').css( 'visibility' , 'hidden' ); }
    if( tipo == 1 ){ $('#mensagem').css( 'visibility' , 'visible' ); }
    string = 'Aviso : ' + string;
    $('#mensagemtext').html( string );
}


function base_redireciona( caminho ){

    var index1 = caminho.indexOf('www.');
    var index2 = caminho.indexOf('http://');

    // location
    if( index1==-1 && index2==-1 ){
        window.location = base_url() + caminho;
    }else{
        window.location = caminho;
    }
    
    //location.href = base_url() + caminho;

}

function base_option( div , value , label , branco ){
    var s1 = base_separador(1);

    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );

    if( branco == 1 ){var string = '<option value=""></option>'}else{var string = ""};

    for(i=0; i<(array_linhas.length) ;i++){
        var array_valores = array_linhas[i].split(s1); // valores

            var campo = new Array();
            var u = 0;
        for(u=0; u<(array_valores.length) ;u++){
            campo[ array_colunas[u] ] = array_valores[u];
        }

        string = string + '<option value="' + campo[value] + '">' + campo[label] + '</option>';

    }
    return string;
}







// --------------- CAMPOS ---------------------------

function base_camposalerta( div ){
                    // marca os que vem na div,
    // gerando uma string de saida dizendo o campo e o aviso

    // marca os campos
    var saida = '';
    var array_colunas = base_colunas( div );
    var i = 0;
    for(i=0; i<(array_colunas.length) ;i++){
        var coluna = array_colunas[i]; // nome
        $("#"+coluna).css("background-color", "#ffff33" );
        var gambi = i;
            var temp = base_colvalores( div , coluna );
            saida += coluna + ' - ' + temp[0] +'<br>';
        i = gambi;
    }

    return saida;

}


function base_string( tipo ){

    var saida = "";

    $("input").each(function(i){
    var str_type = $(this).attr('type');
    if( str_type == 'text' || str_type == 'password' || str_type == 'hidden' ){
        saida += $(this).attr('id') + "=" + $(this).attr('value') +"&";
    }             });
    saida = saida.substring(0,saida.length-1 );

    if(tipo == 'completo'){
        saida += "&";

         $("select").each(function(i){
            saida += $(this).attr('id') + "=" + $(this).attr('value') +"&";
            });

         $("textarea").each(function(i){
            saida += $(this).attr('id') + "=" + $(this).attr('value') +"&";
            });

        saida = saida.substring(0,saida.length-1 );

    }

    return saida;

}

function base_mascaras(){
    // so com arquivo de mask.js adicionado
    $("input").each(
        function(i){
            var str_type = $(this).attr('type');
            var id = $(this).attr('id');
            if( str_type == 'text' ){
                if( id.substring(0,8) == 'telefone' ){ $(this).mask("(99)9999-9999"); }
            }
        }
    );
}

function base_retira_mascaras(){
    // so com arquivo de mask.js adicionado
    $("input").each(
        function(i){
            var str_type = $(this).attr('type');
            var id = $(this).attr('id');
            if( str_type == 'text' ){

                if( id.substring(0,8) == 'telefone' ){
                    var str = $(this).attr('value');
                    $(this).mask("9999999999");                    
                }

            }
        }
    );
}


function base_camposcor( cor ){

    $("input").each(function(i){ var str_type = $(this).attr('type');
        if( str_type == 'text' || str_type == 'password' ){ $(this).css("background-color",cor); } });

    $("select").each(function(i){ $(this).css("background-color",cor); });

    $("textarea").each(function(i){ $(this).css("background-color",cor); });

}


function base_limparcampos(){

    var saida = "";
 $("input").each(function(i){
    var str_type = $(this).attr('type');
    if( str_type == 'text' || str_type == 'password' ){
        $(this).attr('value','');
    }
});
}










////////////////////// AJXA /////////////////////////////

function base_ajax( url , string , funcao , variaveis ){

    // firula
    base_mensagem( 1 , 'carregando' ); $('#b').css( 'cursor' , 'wait' );
    
    // funcao leva dados/codigo
    url = base_url() + url;    

        $.ajax(
        {type: "POST", url: url, data: string,
            complete: function(a){                
                // firula
                base_mensagem( 0 , '' ); $('#b').css( 'cursor' , 'default' );
                
                if( a.statusText == 'success' ){codigo = 'success';}else{codigo = 'error';}
                //alert( a.responseText );
                var var_retorno = base_ajax_retorno( a.responseText,codigo );
                var dados = var_retorno['dados']; var codigo = var_retorno['codigo']; var sub_codigo = var_retorno['sub_codigo'];
                
                if( variaveis ){
                    funcao += "( dados , codigo , sub_codigo , variaveis )";}
                else{
                    funcao += "( dados , codigo , sub_codigo )";
                }
                eval(funcao);
        }});
}

function base_ajax2( url , string , funcao , variaveis ){

    // firula
    base_mensagem( 1 , 'carregando' ); $('#b').css( 'cursor' , 'wait' );

    // funcao leva dados/codigo
    url = base_url() + url;

        $.ajax(
        {type: "GET", url: url, data: string,
            complete: function(a){
                // firula
                base_mensagem( 0 , '' ); $('#b').css( 'cursor' , 'default' );

                if( a.statusText == 'success' ){codigo = 'success';}else{codigo = 'error';}
                //alert( a.responseText );
                var var_retorno = base_ajax_retorno( a.responseText,codigo );
                var dados = var_retorno['dados']; var codigo = var_retorno['codigo']; var sub_codigo = var_retorno['sub_codigo'];

                if( variaveis ){
                    funcao += "( dados , codigo , sub_codigo , variaveis )";}
                else{
                    funcao += "( dados , codigo , sub_codigo )";
                }
                eval(funcao);
        }});
}

    function base_ajax_retorno( msg , type ){
        
        // salva
        var s0 = base_separador(0);
        $("#volta").html( type + s0 + msg );

        // success
        if( type == 'success' ){
            var array_msg = msg.split(s0);
                var codigo = array_msg[0]; array_msg.shift(); codigo = base_trim(codigo);
                var sub_codigo = array_msg[0]; array_msg.shift();
                var dados = array_msg.join(s0);                

            if( codigo == "o" || codigo == "a" || codigo == "c" || codigo == "l"  ){
                if( codigo == "o" ){codigo = "ok";}
                if( codigo == "a" ){codigo = "aviso";}
                if( codigo == "c" ){codigo = "campos";}
                if( codigo == "l" ){codigo = "logar";}
           }else{
                codigo = 'erro';
                sub_codigo = 0;
                dados = base_mensagem_codigo(4) + ' - ' + msg;
           }
        }

        // error
        if( type == 'error' ){
            var codigo = 'erro';
            sub_codigo = 0;
            var dados = base_mensagem_codigo(5);
        }

        var retorno = new Array();
            retorno['codigo'] = codigo;
            retorno['sub_codigo'] = sub_codigo;
            retorno['dados'] = dados;

        return retorno;

    }

function base_mensagem_codigo( id ){
    var string = new Array();    
    string[1] = 'dificuldade na comunicao, favor tentar novamente'; // erro comunicacao ajax    
    string[2] = 'dificuldade na comunicao, favor tentar novamente'; // erro padrao resposta
    
    string[3] = 'favor verificar campos';
    string[4] = 'favor verificar o padaro de resposta'; // padaro resposta
    string[5] = 'falha na comunicacao ajax,favor tentar novamente';
    return string[ id ];
}


/////////////////////// BOX ///////////////////////////

var base_box2 = new base_mybox2();
function base_mybox2(){
    this.opener=function(dados,botoes,urlclosed){

        var x = 200;
        var y = 300;

        if($("#box2-1").html() != null){$("#box2-1").remove()}
        var img_url = base_url() + '/imagens/ajax-loader.gif';
        $('body').prepend('<div id="box2-1"><div id="box2-2"><div id="box2-3">\n\
<div id="box2-5" onclick="base_box2.closed(' + "'" + urlclosed + "'" + ')"></div>\n\
<div id="box2-4"><div align="center"><img style="margin-top:115px;" src="'+img_url+'" /></div></div>\n\
\n\
</div></div></div>');

        // div ou dados diretos ?
            var index = dados.indexOf('#');
            if(index==0){dados = $(dados).html();}

        // botoes
            var str_botao = "";
            for(i=0; i<(botoes.length) ;i++){
                var botao = botoes[i];
                var funcao = botao.split(":");
                if( funcao[1] == "" ){funcao[1] = 'base_box2.closed(' + "'" + urlclosed + "'" + ')';}
                str_botao += '<div id="botao"><input type="button" value="'+ funcao[0] +'" onclick="'+ funcao[1] +'" ></div>';
            }
            if( str_botao ){}else{str_botao = '<div id="botao"><input type="button" value="fechar" onclick="base_box2.closed(' + "'" + urlclosed + "'" + ')" ></div>'}
            dados +=  '<div id="botoes" >' + str_botao + '</div>';

        $("#box2-1 #box2-4").html('<div id="box2-6">'+dados+'</div>');

        $("#box2-3").animate({'height':x+'px'},100,function(){
        $("#box2-3").animate({'width':y+'px'},100);$("#box2-5").slideToggle(100);});
    }
    this.closed=function(urlclosed){

        // gambiarra
        var index1 = urlclosed.indexOf('www.');
        var index2 = urlclosed.indexOf('http://');

        if( index1==-1 && index2==-1 ){

            if ( urlclosed ){
                window.location = base_url() + urlclosed;}
            else{$("#box2-1").remove();}

        }else{window.location = urlclosed;}

    }
}












var base_multibox = new base_multibox();
function base_multibox(){

    this.open = function( string , tipo , botoes , urlclose ){

        // tipo de mensagem
        if( tipo == 'aviso' ){
            string = '' + string + '';
            var x = 200;var y = 300;
        }

        if( tipo == 'erro' ){
            string = '<h3>' + string + '</h3>';
            x = 200;y = 300;
        }

        if( tipo == 'ver' ){            
            x = 400;y = 600;
        }


        // div nos dados
        var div_string = '<div id="string">' + string + '</div>'

        // botoes
        var div_botao = '';
        if( botoes != null ){            
            // botoes
            var str_botao = "";
            for(i=0; i<(botoes.length) ;i++){
                var botao = botoes[i]; funcao = botao.split(":");
                if( funcao[1] == "" ){ funcao[1] = 'base_multibox.close(' + "'" + urlclose + "'" + ')'; }
                str_botao += '<div id="botao"><input type="button" value="'+ funcao[0] +'" onclick="'+ funcao[1] +'" ></div>';
            }
            //if( str_botao ){}else{ str_botao = '<div id="botao"><input type="button" value="fechar" onclick="base_multibox.close(' + "'" + urlclosed + "'" + ')" ></div>' }
            div_botao = '<div id="botoes" >' + str_botao + '</div>';
        }
        

        // inicio
            //gif_url = base_url() + '/imagens/ajax-loader.gif';
            //gif = '<img id="multibox-gif" src="' + gif_url + '" />';
        

        // html
        if( $("#box-1").html() != null ){$("#box-1").remove();}
        var inicio = '<div id="box-1"> <div id="box-2"> <div id="box-3">';
        var fim = '</div> </div> </div>';
        var close = '<div id="box-close" onclick="base_multibox.close(' + "'" + urlclose + "'" + ')"></div>';
        var content = '<div id="box-content"></div>';
        $('body').prepend( inicio + close + content + fim );


        if(div_botao){ div_string += div_botao; }
        $("#box-1 #box-content").html( div_string );
        
        $("#box-3").animate({'height':x+'px'},100,function(){
        $("#box-3").animate({'width':y+'px'},100);$("#box-close").slideToggle(100);});

    }

    this.close = function( urlclose ){
         if( urlclose == 'null' || urlclose == 'undefined' ){
             $("#box-1").remove();
             return;
         }else{
            base_redireciona( urlclose );
        }
    }

}










/////////////////////////// DADOS //////////////////////////

function base_linhas( div ){
    // retorna as linhas, menos as colunas
    
    var s2 = base_separador( 2 );

    var index = div.indexOf('#');
    var dados;
    if(index==0){dados = $( div ).html();}else{dados = div;}

    var strings = dados.split(s2);
    //alert( strings );
    strings.splice(0,1);
    return strings;
}

function base_colunas( div ){
    // colunas dos dados. o primeiro ; sao as colunas

    var s1 = base_separador( 1 );
    var s2 = base_separador( 2 );

    var index = div.indexOf('#');
    var dados;
    if(index==0){dados = $( div ).html();}else{dados = div;}

    var strings = dados.split(s2);
    // keys
    var keys = strings[0].split(s1);
    // retira linhas
    return keys;
}

function base_colnumero( div , nome ){
   // retorna o numero desta coluna NOME
   
    var colunas = base_colunas( div );
    var i = 0;
    for(i=0; i<(colunas.length) ;i++){
        if( nome == colunas[i] ){return i;}
    }return '';
}

                function base_valnumero( array , valor ){
                    var i = 0;
                    for(i=0; i<(array.length) ;i++){
                        if( valor == array[i] ){return i;}
                    }return '';
                }


function base_colvalores( div , nome ){
    // nome = campo
    // retorn os valores da coluna em todas as linhas

    var s1 = base_separador( 1 );

    // nome da coluna
    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );
            var saida = new Array();
    var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
        var array_valores = array_linhas[i].split(s1); // valores
            var campo = new Array();
            var u;
        for(u=0; u<(array_valores.length) ;u++){
            if( array_colunas[u] == nome ){
                saida[saida.length] = array_valores[u];
            }
        }
    }
    return saida;
}

function base_valores( div , nome , valor ){
    // nome = campo
    // valor = valor
    // retorna os valores da linha que achou

try {

    var s1 = base_separador( 1 );

    // retorna a linha em formato de array
    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );
    var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
        var array_valores = array_linhas[i].split(s1); // valores
            var campo = new Array();
            var u;
        for(u=0; u<(array_valores.length) ;u++){
            campo[ array_colunas[u] ] = array_valores[u];
        }
        if ( campo[nome] == valor ){
            return array_valores;
        }
    }return '';

}catch(t){
   alert(t);
   throw t;
}

}


function base_linha2( div , nome , valor ){
    var s1 = base_separador( 1 );

    // retorna a linha em formato de string
    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );
    var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
        var array_valores = array_linhas[i].split(s1); // valores
            var campo = new Array();
            var u;
        for(u=0; u<(array_valores.length) ;u++){
            campo[ array_colunas[u] ] = array_valores[u];
        }
        if ( campo[nome] == valor ){
            return array_linhas[i];
        }
    }return '';
}

function base_trocavalor( div , nome , valor , nome2 , valor2 ){
    // troca valor da coluna
    // caso nome2 esteja em branco ele vai apagar a alinha referente a nome e valor citados

    var s1 = base_separador( 1 );
    var str_antigo = '';
    var str_novo = '';

    var volta = new Array();
    volta = base_valores( div , nome , valor ); if(!volta){return;}
    str_antigo = volta.join(s1);

    // muda coluna
    if( !nome2 ){ str_novo = ''; }else{
        volta[base_colnumero( div , nome2 )] = valor2;
        str_novo = volta.join(s1);
    }
    
    return base_trocalinha( div , str_antigo , str_novo );
}


function base_trocalinha( div , str_linha , str_linhanova ){
    // ele troca a linha, caso a segunda(str_linhanova) seja em branco ele somente retira
    var s1 = base_separador( 1 );
    var s2 = base_separador( 2 );

    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );
        var saida = new Array();
        saida = array_colunas.join(s1) + s2;        
        var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
        if( array_linhas[i] == str_linha ){
            
            if( str_linhanova ){saida += str_linhanova + s2;}else{}
        } else {saida += array_linhas[i] + s2}
    }

    saida = saida.substring(0,saida.length-1 );
    return saida;
}


function base_addlinha( div , str_linha , str_linhanova ){
    // pega a div
    // encontra a linha desejada
    // adiciona a linha nova depois da linha desejada
    // caso nao encontre str_linha, adiciona no final

    var s1 = base_separador( 1 );
    var s2 = base_separador( 2 );

    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );
        var saida = new Array();
        saida = array_colunas.join(s1) + s2;
        var str_linha_achou = 0;
        var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
        if( array_linhas[i] == str_linha ){
            str_linha_achou = 1;
            if( str_linhanova ){saida += array_linhas[i] + s2 + str_linhanova + s2;}else{}
        } else {saida += array_linhas[i] + s2}
    }

    if( (str_linha_achou != 1) && (str_linhanova) ){ saida += str_linhanova + s2 }
        
    saida = saida.substring(0,saida.length-1 );
    return saida;
}


function base_trocacolunas( div , coluna , array_valores ){
    // ele troca a coluna inteira
    var s1 = base_separador( 1 );
    var s2 = base_separador( 2 );

    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );

    var str_coluna = base_colnumero( div , coluna );
        var saida = new Array();
        saida = array_colunas.join(s1) + s2;
    var i = 0;
    for(i=0; i<(array_linhas.length) ;i++){
            var valores = array_linhas[i].split(s1);
            valores[str_coluna] = array_valores[i];
        saida += valores.join(s1) + s2;
    }
    saida = saida.substring(0,saida.length-1 );
    return saida;
}



// mais ou menos na BASE


function base_prepara_div( div_geral , div_nova ){

    if( div_nova.length == 0 ){

    var s1 = base_separador( 1 );
    var array_colunas = base_colunas( div_geral );
        var saida = array_colunas.join(s1);
        div_nova = saida;
        
    }
    
    return div_nova;

    
}

function base_addcontador( div ){

    var s1 = base_separador( 1 );
    var s2 = base_separador( 2 );

    var array_colunas = base_colunas( div );
    var array_linhas = base_linhas( div );

    var saida = new Array();
    array_colunas.unshift('cont');
    saida = array_colunas.join(s1) + s2;
    var i;
    for(i=0; i<(array_linhas.length) ;i++){
        saida += i + s1 +  array_linhas[i] + s2;
    }

    saida = saida.substring(0,saida.length-1);

    return saida;

}

function base_proximo( div , coluna , valor ){

    var array_col = base_colvalores( div , coluna ); var i = 0;
    for(i=0; i<(array_col.length) ;i++){
        if( valor == array_col[i] ){ if( i+1 < array_col.length  ){ valor = array_col[i+1]; i = 2000; }else{ valor = ''; i = 2000; } }
    }    
    return valor;
    
}



///////////// --- busca categorias

function base_cat(obj){

    // id
    var cat = obj.getAttribute("id");
    var base = cat.substring(0,3); // cat ou cad
    var nuncat = parseInt(cat.substring(3,4)); // numero
    var valor = $("#"+cat).attr('value'); // valor

    if( !(valor.length > 0) ){ return; } // valor < 0    
    base_cat_apaga(base,nuncat); // proximo option apaga 1/4
    
    var db_cat = "cat" + nuncat;
    var db_nextcat = "cat" + (nuncat+1);
    var html_cat = cat; // cat ou cad
    var html_nextcat = base + (nuncat+1);

    // firula
    $("#"+html_nextcat).html('<option class="loader">Carregando...</option>');
    if( html_nextcat == 'cad4'){ if( $("#cad41").attr('id') ){ $("#cad41").html( $("#"+html_nextcat).html() )  }  }

    // dados
    var url = '/produtoajax/saida';
    var string = "f=cat" + "&cat=" + db_cat + "&nextcat=" + db_nextcat + "&valor=" + valor;
    base_ajax( url , string , 'base_cat_volta' , html_nextcat );

}

    function base_cat_volta( dados, codigo , sub_codigo , var1 ){
        $(".loader").remove();
        if( codigo == "ok" ){
            $("#"+ var1 ).html( base_option( dados , "id" , "titulo" , 1 ) );
            if( var1 == 'cad4'){ if($("#cad41").attr('id')){ $("#cad41").html( $("#"+ var1 ).html() )  }  }
        }
        base_volta( dados, codigo , sub_codigo );
    }

    function base_cat_apaga(base,nuncat){
        nuncat = parseInt(nuncat);
        var i;
        for(i=nuncat+1; i<(5) ;i++){
            var html_nextcat = base + i;
            $("#"+html_nextcat).html("");
            if( html_nextcat == 'cad4' ){ $("#cad41").html("") }
        }
    }

///////////// --- FIM busca categorias



