<html>
<body>
<script type="text/javascript">
var key1= [ 3, 3, 3, 3, 3, 3, 3, 3];
var key2= [-6, 8, 2,-2, 8,-6, 4, 7];
var key3= [88,-7,46,51,-6,74,39,-6];
function decode(numero,index){
return ((numero-key3[index])/key2[index] - key1[index]);
}
function strToArr(str){
var a=new Array();
for(var i=0;i<8;i++){
a[i]=1*str.substring(i*2,i*2+2);
}
return a;
}
function decodestrloc(str){
var numArray=strToArr(str);
var locstr="";
for(var i=0;i<4;i++){
if (i==0){locstr+="H";}else{locstr+=":";}
locstr+=decode(numArray[i*2],i*2);
locstr+=decode(numArray[i*2+1],i*2+1);
}
return locstr;
}
function encode4chars(str)
{
var inter = "", retVal = "";
str = str.toUpperCase();
for(var i = 0;i < 4;i++) {
var num = str.charCodeAt(i) ? str.charCodeAt(i) : 32;
inter += num;
}
for(var i = 0;i < 8;i++) {
var num = 1*inter.charAt(i);
num = (num + key1[i]) * key2[i] + key3[i];
if(num < 10) retVal += "0";
retVal += num;
}
return retVal;
}
function encodestrloc(str)
{
var retVal = "";
str = str.substring(1,str.length);
str = str.replace(/:/g,"");
for(var i = 0;i < 8;i++)
{
var num = 1*str.charAt(i);
num = (num + key1[i]) * key2[i] + key3[i];
if(num < 10)
retVal += "0" + num;
else
retVal += num;
}
return retVal;
}
function decode4chars(str4){
var numArray=strToArr(str4);
var str="";
for(var i=0;i<4;i++){
if (i!=0) str+="_";
str+=decode(numArray[i*2],i*2);
str+=decode(numArray[i*2+1],i*2+1);
}
var a=str.split("_");
s=String.fromCharCode(a[0],a[1],a[2],a[3]);
return s;
}
function decodelbl(char16){
var str="";
for (var i=0;i< 4;i++){
str+=decode4chars(char16.substring(i*16,i*16+16));
}
return str;
}
function encodelbl(str) {
var retVal = "";
for( var i = 0;i < 4;i++){
retVal += encode4chars(str.substring(i*4,i*4+4));
}
return retVal;
}
function doEnc()
{
var opStr = "";
var label = document.getElementById('encodelabel').value;
var location = document.getElementById('encodelocation').value;
label = encodelbl(label);
location = encodestrloc(location);
var colorBegin = "[color='red']";
var colorEnd = "[/color]";
opStr += colorBegin + "enigma " + location + colorEnd;
opStr += colorBegin + "stigma " + label + colorEnd;
document.getElementById("output").innerHTML = opStr;
}
</script>
<form action="#" onsubmit="return false;">
<p><label>Encode Location:</label><input type="text" id="encodelocation"></p>
<p><label>Encode Label:</label><input type="text" id="encodelabel"></p>
<button onclick="doEnc()">encode</button>
<p><textarea id="output" rows="5" cols="30"></textarea></p>
</form>
<form action="#" onsubmit="return false;">
<p><label>Decode Location:</label><input type="text" id="decodelocation">
<button onclick="alert(decodestrloc(document.getElementById('decodelocation').value));">decode</button></p>
<p><label>Encode Label:</label><input type="text" id="decodelabel"><button onclick="alert(decodelbl(document.getElementById('decodelabel').value));">decode</button></p>
</form>
</body>
</html>