/*
Status do teclado de acordo com o mostrado abaixo:
0=normal
1=shift
2=caps
*/
var kbStatus=0;

//objeto atual que terá os dados preenchidos pelo teclado virtual
//funciona com qualquer objeto de texto, porém, deve ser adicionado uma
//chamada de função no objeto. Ex.: <input type="text" onFocus("getCurrentObj(this)");>
var currentObj = null;

//se esta variavel for true, quer dizer que o teclado esta visivel e o usuario
//nao deverá digitar com teclado convencional. este tratamento deve ser feito
//pelo programador, pois pode ser feito de varias maneiras, porém,
//neste js existe funcao de validação para tal.. basta implementar ==> protect(e)
var kbActive=false;

//retorna true se browser for IE
var isIE = (document.all?true:false);

//diretorio onde estao as imagens do teclado (barra, shift, caps, normal)
var imgDir = "/torneios/img/";

/* Definicao das imagens do teclado */
var kbImg = new Array(3);
kbImg[0] = "teclado01.gif";
kbImg[1] = "teclado03.gif";
kbImg[2] = "teclado02.gif";

//seta a variavel de controle kbActive (toda a explicação está lá)
function activeKb(b)
{
  kbActive=b;
}

//seta o objeto atual (também explicado acima)
function getCurrentObj(obj)
{
  currentObj = obj;
}

//responsável à função de backspace do teclado
function backSpace()
{
  field = currentObj.value;


  if(field.length==1)
    currentObj.value="";
  else
    currentObj.value = field.substr(0, field.length-1);

  focusCurrObj();
}

//adiciona o caracter clicado no t.v. e adiciona no objeto corrente
function inputLetter(par)
{
  currentObj.value = currentObj.value + par;
  focusCurrObj();
}

//escreve no objeto corrente, mas antes valida se o shift ou caps estão ativados
function printLetter(v1, v2)
{
  switch(kbStatus)
  {
    case 0:
      inputLetter(v1);
      break;
    case 1:
      inputLetter(v2);
      setKbStatus(0);
      break;
    case 2:
      inputLetter(v1.toUpperCase());
      break;
    case 3:
      inputLetter(v2);
      break;
  }
}

//após clicar numa tecla do tv, da o foco no final do objeto de texto
function focusCurrObj()
{
  if(currentObj!=null)
    currentObj.focus();
}

//seta se deve ser exibido teclado normal, shift ou caps
function setKbStatus(idStatus)
{
  kbStatus=(idStatus==kbStatus?0:idStatus  );
  document.imgTeclado.src = imgDir + kbImg[kbStatus];
  focusCurrObj();
}

//mostra tv
function kbOn()
{
  var dTeclado = document.getElementById("lTeclado");
  dTeclado.style.display="";
}

//oculta tv
function kbOff()
{
  var dTeclado = document.getElementById("lTeclado");
  dTeclado.style.display="none";
}

//seta posicao inicial do tv (objeto layer opcional, default=lTeclado)
function kbInitPos(obj, top, left)
{
  kb = document.getElementById(obj);
  kb.style.top=top+"px";
  kb.style.left=left+"px";
}

//se o usuario estiver usando o tv, impede que utilize o teclado convencional
function protect(e)
{
  var keyTypped = (isIE==true?e.keyCode:e.which);

  if(kbActive)
  {
    alert("Você optou por não utilizar o teclado convencional.\nPor favor, utilize o teclado virtual");
    return false;
  }

  return keyTypped;
}