
var visu;
var Maj=new Array(),Min=new Array(),dia=new Array();
var lng="Cree";
var hexchars="0123456789ABCDEF";
var sp="&nbsp;&nbsp;",gui='"',lig="</tr><tr>",lock=0;
var caps=new Array();
Min[lng] = "0451|0031|0032|0033|0034|0035|0036|0037|0038|0039|0030|002D|003D|1438|1490|1455|140A|152D|14AA|1472|14C7|14F4|0020|0020|0020|1431|148B|144E|1403|1528|14A5|146D|14C2|14EF|0020|1427|142F|1489|144C|1401|1526|14A3|146B|14C0|14ED|003C|002C|003B|0027|007B|007D|002F";
//Shift
Maj[lng] = "0401|0021|0040|0023|0024|0025|005E|0026|002A|0028|0029|005F|002B|1433|148D|1450|1405|152A|14A7|146F|14C4|14F1|0020|0020|0020|144A|1428|141F|1426|1540|14BC|1420|1423|1422|0020|1424|0020|0020|0020|0020|0020|0020|0020|0020|0020|003E|002E|003A|0022|005B|005D|003F";
var KeybCounter=0;
/////////////////////////////////////////////////////////////////////////////////////

function SetCurrentKeyboard(CurKeyboard) {

visu=getElementsByClassName('answer')[CurKeyboard].getElementsByTagName("input")[0];

}

/////////////////////////////////////////////////////////////////////////////////////

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

/////////////////////////////////////////////////////////////////////////////////////

function getElementsByClassName(cl) {

var retnode = [];
var myclass = new RegExp('\\b'+cl+'\\b');
var elem = document.getElementsByTagName('*');

for (var i = 0; i < elem.length; i++) {
var classes = elem[i].className;
if (myclass.test(classes)) retnode.push(elem[i]);
}
return retnode;
};

/////////////////////////////////////////////////////////////////////////////////////

function wrC(debut,fin,CurKeyboard){
	
w="";
for (j=debut;j<fin+1;j++){
	if (CarMaj[j]==CarMin[j].toUpperCase()){
		car=CarMaj[j];
		w+="<td class=smpl";}
		else{
			car=sp+CarMaj[j]+"<br>"+CarMin[j]+sp;
			w+="<td class=dbl";}
			w+=" colspan=2><a href='javascript:wr("+j+","+CurKeyboard +")'>&nbsp;"+car+"&nbsp;</a></td>";}
			return w;
			}
/////////////////////////////////////////////////////////////////////////////////////
			
function wrF(nbCol,fun,CurKeyboard){
	if (fun!=null){
		return("<td class=act colspan="+nbCol+"><a href='javascript:"+fun+"("+CurKeyboard+")'>"+fun+"<br>"+sp+sp+"</a></td>");
		}
		else{
			return("<td class=act colspan="+nbCol+">"+sp+"<br>"+sp+"</td>");
			}
			}
/////////////////////////////////////////////////////////////////////////////////////

function wr(j,CurKeyboard){
	
	SetCurrentKeyboard(CurKeyboard);
	
	visu.value+=(lock==1)?CarMaj[j]:((caps[CurKeyboard].checked==true)?CarMaj[j]:CarMin[j]);
	caps[CurKeyboard].checked=(lock==1)?true:false;acc=hexa(visu.value.substring(visu.value.length-2,visu.value.length-1));
	car=hexa(visu.value.substring(visu.value.length-1,visu.value.length));
	if (dia[acc]!=null&&dia[acc][car]!=null){
		visu.value=visu.value.substring(0,visu.value.length-2)+fromhexby4tocar(dia[acc][car]);
		}
		}
/////////////////////////////////////////////////////////////////////////////////////

function faire(a,CurKeyboard){
	
		SetCurrentKeyboard(CurKeyboard);
	
	visu.value+=a;
	}
/////////////////////////////////////////////////////////////////////////////////////

function Erase(CurKeyboard){
	
		SetCurrentKeyboard(CurKeyboard);
	
	visu.value="";
	}
/////////////////////////////////////////////////////////////////////////////////////

function Catch(CurKeyboard){
		SetCurrentKeyboard(CurKeyboard);
	
	visu.select();
	alert("Copy and paste wherever you need.");
	}
/////////////////////////////////////////////////////////////////////////////////////

function Shift(CurKeyboard){
	
		//SetCurrentKeyboard(CurKeyboard);
	
	caps[CurKeyboard].checked=true;
	}
/////////////////////////////////////////////////////////////////////////////////////

function Lock(CurKeyboard){
	
		//SetCurrentKeyboard(CurKeyboard);
	
	caps[CurKeyboard].checked=(lock==1)?false:true;
	lock=(lock==1)?0:1;
	}
/////////////////////////////////////////////////////////////////////////////////////

function Back(CurKeyboard){
	
		SetCurrentKeyboard(CurKeyboard);
	
	if (visu.value.length==0){
		return
		};
		visu.value=visu.value.substr(0,(visu.value.length-1));
		}
/////////////////////////////////////////////////////////////////////////////////////

function fromhex(inval){
	out=0;
	for (a=inval.length-1;a>=0;a--){
		out+=Math.pow(16,inval.length-a-1)*hexchars.indexOf(inval.charAt(a));
		}
		return out;
		}
/////////////////////////////////////////////////////////////////////////////////////

function fromhexby4tocar(ceci){
	out4=new String();
	for (l=0;l<ceci.length;l+=4){
		out4+=String.fromCharCode(fromhex(ceci.substring(l,l+4)));
		}
		return out4;
		}
/////////////////////////////////////////////////////////////////////////////////////

function tohex(inval){
	return hexchars.charAt(inval/16)+hexchars.charAt(inval%16);
	}
/////////////////////////////////////////////////////////////////////////////////////

function tohex2(inval){
	return tohex(inval/256)+tohex(inval%256);
	}
/////////////////////////////////////////////////////////////////////////////////////

function hexa(ceci){
	out="";
	for (k=0;k<ceci.length;k++){
		out+=(tohex2(ceci.charCodeAt(k)));
		}
		return out;
		}

/////////////////////////////////////////////////////////////////////////////////////


function RenderKeyboard(){
	

	
//addLoadEvent(myinit);	
	
CarMaj=Maj[lng].split("|");
CarMin=Min[lng].split("|");

for(i=0;i<52;i++){
CarMaj[i]=fromhexby4tocar(CarMaj[i]);
CarMin[i]=fromhexby4tocar(CarMin[i]);
}

code="<table class='keybtable' cellspacing=1><tr>"+wrC(0,12,KeybCounter)+wrF(3,'Catch',KeybCounter)+lig+"<td class=act colspan=3><input type=checkbox id='caps"+KeybCounter+"'></td>"+wrC(13,24,KeybCounter)+wrF(2,'Back',KeybCounter)+lig+wrF(4,'Lock',KeybCounter)+wrC(25,35,KeybCounter)+wrF(3,'Erase',KeybCounter)+lig+wrF(5,'Shift',KeybCounter)+wrC(36,45,KeybCounter)+wrF(4,'Shift',KeybCounter)+lig+"<td class=act colspan=4><a href='http://www.keyboard.fr.fm'>keyboard<br>.fr.fm</a></td>"+wrC(46,48,KeybCounter)+"<td class=smpl colspan=10><a href='javascript:faire(\" \","+KeybCounter+")'>"+sp+sp+sp+sp+sp+sp+sp+sp+sp+sp+sp+sp+"</a></td>"+wrC(49,51,KeybCounter)+"<td class=act colspan=3><a href='mailto:yuri@intellinet.ca'>mail<br>"+sp+"</a></td>"+lig
for (i=0;i<29;i++){
code+="<td></td>";
}
code+="</tr></table>";
document.write(code);

caps[KeybCounter]=document.getElementById('caps'+KeybCounter);
	
	KeybCounter++;
	
	}
	
	
	/////////////////////////////////////////////////////////////////////////////////////
