/*
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 = httpHost+"images/teclado/";

/* 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;
}

//tecla enter
function enter(){
    if(document.frmLogin.usuario.value == ""){
         document.frmLogin.usuario.focus();        
    }else{
        if(document.frmLogin.senha.value == ""){
            document.frmLogin.senha.focus();
        }else{
            logar('#usuario','#senha','#valida_login')
        }              
    }
}