{    Programa de Consulta  Biblia             }
{    Autor:  Marcelo Luis Pimentel Pinheiro    }
{    Rio de Janeiro, 18 de fevereiro de 1995    }

Program BibliaVox;

Uses DVCRT, WinDOWS, DVWin, dvform,
    Leitura, BibVars, biblifun, bibfunc, bibSom, bibusca, bibler;

Procedure Escrevetela;
begin
  textbackground(blue);
  textcolor (LightGray);
  Clrscr;
  MolduraTela;
  gotoxy(26,2);
  write( 'BBLIA SAGRADA  -  ELETRNICA');
  gotoxy(29, 3);
  write ('Verso DOSVOX 3.1c - 2004');
  gotoxy(6, 4);
  Write(' Autores:  Paulo Roberto Barbosa - e-mail: tprobert@intervox.nce.ufrj.br');
  gotoxy(6, 5);
  write('           Marcelo Lus Pimentel - e-mail: marcelo@intervox.nce.ufrj.br');
end;

{-----------------------------}

Procedure ajuda1;
begin
  limpabaixo;
  gotoxy(20, 8);
  write ('Ajuda das opes principais da Bblia:');
  gotoxy(10, 11); write('Opo P: para voc encontrar as passagens, voc');
  gotoxy(10, 12); write('  ter que j saber qual o livro, captulo e versculo');
  gotoxy(10, 13); write('  desejados para ler, sendo o versculo opcional.');
  gotoxy(10, 15); write('Opo L: para voc abrir a Bblia logo no incio.');
  gotoxy(10, 17); write('Opo M: para voc que j colocou marcadores na sua Bblia');
  gotoxy(10, 19); write('Opo I: para conhecer algumas informaes sobre a Bblia.');
  gotoxy(10, 21); write('Opo A: mostra esse pequeno texto de ajuda.');
  sintsom('bvajuda');
{  msgbaixo('BVTECESC', 'Tecle ESC para voltar ao menu');}
{  repeat until readkey=#27;}
end;

{-----------------------------}

Procedure ConfiguraBiblia(arqini: String);
var
    config: Text;
    i, j, erroval:Integer;
    strAux: String;
begin
  codlivro :=1; capituloatual :=1;

assign(config, 'c:\biblivox\' + arqini + '\' + arqini + '.ini');
    {$i-} reset(config); {$i+}
If IOResult <> 0  Then
        begin
        msgbaixo('BVNAOCFG', 'No encontrei o arquivo de configurao.');
        halt(1);
        end;

    { comea a ler as configuraes das bblias... }

For i:=0 to 67 Do
    begin
    readln(config, straux);
    j := Pos('=', straux);
    If j > 0 Then
        begin
        nomeLivros^[i] := copy(straux, 1, j - 1);
strAux := CompactaLinha(copy(straux, j + 1, length(straux) - j));
        val(strAux, indice[i], erroval);
        end;
    end;

{ ao final dos livros e indices, vem o tamanho... }
    readln(config, straux);
    j:= Pos('=', straux);
    strAux := copy(straux, j+1, length(straux) - j);
    straux := compactalinha(straux);
    Val(straux, TamanhoBiblia, erroval);

{ l do arquivo o Tamanho do Livro de Apocalipse }
    readln(config, straux);
    j:= Pos('=', straux);
    strAux := copy(straux, j+1, length(straux) - j);
    straux := compactalinha(straux);
    Val(straux, TamanhoApocalipse, erroval);

{ l do arquivo o Inicio do ltimo Captulo da Bblia}
    readln(config, straux);
    j:= Pos('=', straux);
    strAux := copy(straux, j+1, length(straux) - j);
    straux := compactalinha(straux);
    Val(straux, InicioUltimoCapitulo, erroval);

{ l do arquivo o Tamanho do arquivo Info }
    readln(config, straux);
    j:= Pos('=', straux);
    strAux := copy(straux, j+1, length(straux) - j);
    straux := compactalinha(straux);
    Val(straux, TamanhoInfo, erroval);

For i:=1 to 66 Do
    begin
    readln(config, straux);
    j := Pos('=', straux);
    If j > 0 Then
        begin
strAux := CompactaLinha(copy(straux, j + 1, length(straux) - j));
        val(strAux, NumeroCap[i], erroval);
        end;
    end;

  dadosDisco := 'c:\biblivox\' + arqini + '\' + arqini + '.dat';
  dadosLinhas := 'c:\biblivox\' + arqini + '\lin_' + arqini + '.dat';
  DadosInfo := 'c:\biblivox\' + arqini + '\inf_' + arqini + '.dat';

   close(Config);
{$i-} close(quelinha); {$i+}
  assign(quelinha, dadoslinhas);
  {$i-} reset(quelinha);{$i+}
  If IOresult <> 0  Then
      write(#7, #7);
end;

{-----------------------------}

Procedure TrocaBiblia;
var
    arqini: String;
    retorno:byte;
begin
  LimpaBaixo;

  gotoxy(2, 24);
write(barramenu);

(*   gotoxy(20, 11);
  write ('A - Verso em Portugus: Almeida Revista e Atualizada (ARA)');
  gotoxy(20, 12);
  write ('C - Verso em Portugus: Almeida Revista e Corrigida(ARC)');
  gotoxy(20, 13);
  write ('E - Verso em Espanhol: Reina Valera 60 (RV60)');
  gotoxy(20, 14);
  write ('F - Verso em Francs: Louis Segond (LSG)');
  gotoxy(20, 15);
  write ('G - Verso em Grego: AT- Moderna Verso e NT- Verso WH');
  gotoxy(20, 16);
  write ('H - Antigo Testamento em Hebraico (NT- ARA)');
  gotoxy(20, 17);
  write ('I - Verso em Italiano: Congrezo Episcopale Italiano (CEI)');
  gotoxy(20, 18);
  write ('K - Verso em Ingls: King James Version (KJV)');
  gotoxy(20, 19);
  write ('L - Verso em Alemo: Martin Luther Bibel (LUTHER)');
  gotoxy(20, 20);
  write ('N - Verso em Ingls com Strong numbers: King James Version (KJV)');
  gotoxy(20, 21);
  write ('S - Septuaginta e NT grego para estudo com Dicionrio Info');
  gotoxy(20, 22);
  write ('T- Verso em Portugus: Almeida Corrigida Fiel (ACF), 1979-1997');
  gotoxy(20, 23);
  write ('V- Verso em Latin: Vulgata Latina');
  gotoxy(2, 8); write(consultar);
*)

  sintsom('BVQUAVER'); {'Qual a verso?'}

            gotoxy (20, 11);
            popupMenuCria (20, 11, 50, 13, RED);

  popupMenuAdiciona ('BVVER_A', 'A - Verso em Portugus: Almeida Revista e Atualizada (ARA)');
  popupMenuAdiciona ('BVVER_C', 'C - Verso em Portugus: Almeida Revista e Corrigida(ARC)');
  popupMenuAdiciona ('BVVER_E', 'E - Verso em Espanhol: Reina Valera 60 (RV60)');
  popupMenuAdiciona ('BVVER_F', 'F - Verso em Francs: Louis Segond (LSG)');
  popupMenuAdiciona ('BVVER_G', 'G - Verso em Grego: AT- Moderna Verso e NT- Verso WH');
  popupMenuAdiciona ('BVVER_H', 'H - Antigo Testamento em Hebraico (NT- ARA)');
  popupMenuAdiciona ('BVVER_I', 'I - Verso em Italiano: Congrezo Episcopale Italiano (CEI)');
  popupMenuAdiciona ('BVVER_K', 'K - Verso em Ingls: King James Version (KJV)');
  popupMenuAdiciona ('BVVER_L', 'L - Verso em Alemo: Martin Luther Bibel 1545 (LUTHER)');
  popupMenuAdiciona ('BVVER_N', 'N - Verso em Ingls com Strong numbers: King James Version (KJV)');
  popupMenuAdiciona ('BVVER_S', 'S - Septuaginta e NT grego para estudo com Dicionrio Info');
  popupMenuAdiciona ('BVVER_T', 'T- Verso em Portugus: Almeida Corrigida Fiel (ACF), 1979 - 1997');
  popupMenuAdiciona ('BVVER_V', 'V- Verso em Latin: Vulgata Latina');

retorno := popupMenuSeleciona;

case retorno of
1:  arqini := 'ARA';
2: arqini := 'ARC';
3: arqini := 'RV60';
4: arqini := 'LSG';
5: arqini := 'GRE';
6: arqini := 'HEB';
7: arqini := 'CEI';
8: arqini := 'KJV';
9: arqini := 'LUT';
10: arqini := 'KSN';
11: arqini := 'SEP';
12: arqini := 'TRI';
13: arqini := 'VUL';
Else
msgbaixo('BVDESIST', 'Operao cancelada.');
exit;
END;

    ConfiguraBiblia (arqini);
                msgbaixo('BVOK', 'OK');
end;

{-----------------------------}

Procedure Inicializa;
var s: string;
     erro: integer;
     n: integer;
begin
    s := sintAmbiente ('BIBLIVOX', 'VELOCIDADE');
    if s = '' then
        n := 0
    else
        val (s, n, erro);
   sintInic (n, sintAmbiente ('BIBLIVOX', 'DIRBIBLIVOX'));

  EscreveTela;
  sintteclacorta(true);
  Sintsom ('BVMSG1');
  SintSom ('BVMSG2');
    s := sintAmbiente ('BIBLIVOX', 'FALARPONTUACAO');
    if s = '' then
    begin
    sintFalaPont := copy (sintAmbiente ('BIBLIVOX', 'FALARPONTUACAO'), 1, 1) = 'N';
    end
    else
    sintFalaPont := copy (sintAmbiente ('BIBLIVOX', 'FALARPONTUACAO'), 1, 1) <> 'N';
        if sintFalaPont then
begin
  sintFalaPont :=true;
end;

  DadosMarca := 'c:\biblivox\marcas.dat'; {' + arqini + '\marcas.dat';}
    LeMarcadores;

    ConfiguraBiblia('ARA');
end;

Procedure apresenta;
begin
  gotoxy(33, 8);  write('Apresentao:');
  gotoxy(15,11);  write('Programa de consulta as passagens da Bblia');
  gotoxy(12,14);  write(
  'Para adquirir o produto fale com: Pastor Paulo Barbosa');
  gotoxy(12,15);  write(
  'Atravs do telefone: (0xx21) 2601-4882 - ou baixe em:');
  gotoxy(12,16);  write(
  'http://intervox.nce.ufrj.br/~tprobert');
  gotoxy(12,17);  write(
  'ou corresponda-se com:');
  gotoxy(12,18);  write(
  'Rua Euclides Ninho 1060 So Gonalo - RJ - CEP: 24721-010');
  gotoxy(12,19);  write(
  'ou atravs do e-mail: <tprobert@terra.com.br>');
{  gotoxy(21,24);  write('Tecle ENTER para continuar');}
{  sintsom('BVTECENT');}
{  repeat until readkey = #13;}
{sintclek;}
 end;

Function Finaliza:Char;
begin
  LimpaBaixo;
  gotoxy(2,24);
  write('                Que as palavras aqui lidas iluminem sua vida !               ');
  gotoxy(33, 8); write('Finalizao:');
  gotoxy(20, 11); write('Obrigado por utilizar nossos programas');
  textbackground(red); textcolor(white); highvideo;
  gotoxy(2,13); write(
'            Este produto no deve ser copiado de nenhuma forma!             ');
  gotoxy(2, 14); write(
'         Qualquer cpia ilegal sofrer as medidas cabveis da Lei.          ');
  normvideo; textbackground(blue); textcolor(lightgray);
  gotoxy(5,16); write(
'Caso voc desejar maiores informaes sobre a Bblia, fale conosco.');
  gotoxy(12,17); write(
'Jesus Cristo  o nico caminho para nossa Salvao.');
  gotoxy(15,18); write(
'Atenda ao seu chamado antes que seja tarde !');
  gotoxy(5,19); write(
'Lembre-se: A palavra de Deus  alimento para nossas almas.');
  gotoxy(18, 21); write(
'Que Jesus te abenoe e te guarde.');

  GravaMarcadores;
  close(quelinha);
  finaliza := #255;
  sintteclacorta (true);
  msgbaixo('BVMSGFIM', 'Que Deus te abenoe e te guarde!');
  sintsom ('BVSOMFIM');
  sintFim;
  doneWinCrt;
end;

Procedure PegaOpcao;
var c: char;
begin
  sintteclacorta(true);
repeat
  LimpaBaixo;
  gotoxy(2, 24); write(barramenu);
  gotoxy(20, 11);
  write('L - Leitura corrente da Biblia');
  gotoxy(20, 13);
  write ('P - Procurar por passagem');
  gotoxy(20,15);
  write ('T - Procurar por texto');
  gotoxy(20, 17);
  write ('M - Localizar marcadores de livro');
  gotoxy(20, 19);
  write ('I - Informaes sobre a Bblia');
 gotoxy(20, 21);
  write('F - Finalizar programa');
  gotoxy(2, 8); write(consultar);
  repeat
  sintsom ('BVTPCONS');
    opc :=upcase( readKey);
//    If opc =#0  then lixo :=readkey;
    If (opc in [F2..f12]) then opc :=#0;
    If opc =F1  then     Ajuda1;
  Until opc in ['A', 'B', 'P','I','F','M','L', 'V', 'T', ^T, ESC, ENTER,
'E', 'Q', 'R', 'W', 'H', '?', 'S', 'D',
'N', 'U', 'u', ^U, ^X];

    Case opc of
      'L': Letudo;

      'V': TrocaBiblia;

      'B': begin
        msgbaixo('BVANTTES', 'Antigo Testamento!');
Letudo;
end;

      'P': ProcuraCapitulo;
      'T': ProcuraTexto;
      ^T: buscaDeNovo;
      'U': ProcuraTexto1;
      ^U: buscaDeNovo1;
      'I': Informacoes;
      'M': Begin
        assign(arquivo, dadosdisco);
        {$i-}reset(arquivo);{$i+}
        If IOresult <> 0  Then
            msgbaixo('BVERRODT','Erro grave nos dados do sistema !')
        Else begin
               pontaux :=0;
               ponteiro :=0;
               py :=1; px :=1;
               vaiparamarca;
               If ponteiro > 0  Then
               begin
                  letrecho;
                  processaleitura;
               end;
             end;
        end;

'S': LivroSalm;

'D': LivroProverbi;

'N': NovoTestamen;

'R': begin
c := '5';
        begin
            sintFim;
            sintInic (ord(c) - ord('0'), sintambiente ('BIBLIVOX', 'DIRBIBLIVOX'));
end;
end;
'E': begin
c := '4';
        begin
            sintFim;
            sintInic (ord(c) - ord('0'), sintambiente ('BIBLIVOX', 'DIRBIBLIVOX'));
end;
end;
'W': begin
c := '3';
        begin
            sintFim;
            sintInic (ord(c) - ord('0'), sintambiente ('BIBLIVOX', 'DIRBIBLIVOX'));
end;
end;
'Q': begin
c := '2';
        begin
            sintFim;
            sintInic (ord(c) - ord('0'), sintambiente ('BIBLIVOX', 'DIRBIBLIVOX'));
end;
end;

                    ^X: begin
delay (3);
    SintFim;
    doneWinCrt;
end;

      'F', ESC: opc :=Finaliza;
//      #$1B: opc := #255;
      'A', 'H', '?': Ajuda1;
      Else begin
              msgbaixo( 'BVOPCINV','Opo errada');
              gotoxy(2,24); write(barramenu);
           end;
    end;
  Until opc = #255;
end;

begin
  Inicializa;
  apresenta;
  {  verificacopia;}
  pegaopcao;
end.
