var shft=0;var cps=0;var uml=0;var circ = 0;var grave = 0;var acute = 0;
function pr(vl){trgt=eval('this.'+trgt_fld);var txn ="";
switch (vl){
case "CLEAR":{trgt.value="";return;};
case "BACK":{backAtCursor(trgt);return;};
case "ENTER":{insertAtCursor(trgt,"\n");return;};
case "CAPS":cps= (cps==0) ? 1 : 0;

if (cps==1){
document.forms.kb.cp.value=document.forms.kb.cp.value.toUpperCase();
}else{document.forms.kb.cp.value=document.forms.kb.cp.value.toLowerCase();}
case "SHIFT" : {shft= (shft==1) ? 0 : 1; return;};default:{
if (shft == 0){insertAtCursor(trgt,vl);
}else if (shft==1){
switch (vl) {
case ";" : txn="~";break;
case "1":txn="!";break;
case "2":txn="@";break;
case "3":txn="#";break;
case "4" : txn="$";break;
case "5":txn="%";break;
case "6" : txn="^"; break;
case "7" : txn="&"; break;
case "8" : txn="*"; break;
case "9" : txn="("; break;
case "0" : txn=")"; break;
case "-" : txn="_"; break;
case "=" : txn="+"; break;
case ";" : txn=":"; break;
case "." : txn="?"; break;
case ">" : txn="<"; break;
case "," : txn='"'; break;
case "[" : txn="{"; break;
case "]" : txn="}"; break;
case "\\" : txn="|"; break;
case "q" : txn="Q"; break;
case "w" : txn="W"; break;
case "e" : txn="E"; break;
case "r" : txn="R"; break;
case "t" : txn="T"; break;
case "y" : txn="Y"; break;
case "u" : txn="U"; break;
case "i" : txn="I"; break;
case "o" : txn="O"; break;
case "p" : txn="P"; break;
case "a" : txn="A"; break;
case "s" : txn="S"; break;
case "d" : txn="D"; break;
case "f" : txn="F"; break;
case "g" : txn="G"; break;
case "h" : txn="H"; break;
case "j" : txn="J"; break;
case "k" : txn="K"; break;
case "l" : txn="L"; break;
case "z" : txn="Z"; break;
case "x" : txn="X"; break;
case "c" : txn="C"; break;
case "v" : txn="V"; break;
case "b" : txn="B"; break;
case "n" : txn="N"; break;
case "m" : txn="M"; break;
case "©" : txn="®"; break;

default : txn=vl;
}
insertAtCursor(trgt, txn);

}
shft = (cps==1) ? 1 : 0;
}

};

}

function insertAtCursor(myField, myValue) {
if (document.selection) {
var temp;myField.focus();
sel=document.selection.createRange();temp=sel.text.lenght;sel.text=myValue;
if (myValue.length==0){sel.moveStart('character',myValue.length);
sel.moveEnd('character',myValue.length);
}else {
sel.moveStart('character',-myValue.length+temp);
}sel.select();
}else if (myField.selectionStart || myField.selectionStart=='0'){
var startPos=myField.selectionStart;
var endPos=myField.selectionEnd;
myField.value=myField.value.substring(0,startPos)+myValue+myField.value.substring(endPos,myField.value.length);
myField.selectionStart=startPos+myValue.length;
myField.selectionEnd=startPos+myValue.length;
myField.focus();
}else{
myField.value+=myValue;}}

function backAtCursor(myField){if (document.selection){
myField.focus();
sel=document.selection.createRange();

if(sel.text.length>0){ 
sel.text='';
}else{
sel.moveStart('character',-1); 
sel.text='';
}

sel.select();
 
}else if (myField.selectionStart || myField.selectionStart == '0'){
var startPos=myField.selectionStart;
var endPos=myField.selectionEnd;
myField.value=myField.value.substring(0,startPos-1)+myField.value.substring(endPos,myField.value.length);
myField.selectionStart=startPos-1;
myField.selectionEnd=startPos-1;
myField.focus();
}else{
myField.value=myField.value.substr(0,(myField.value.length-1));
myField.focus();
}
}
