////Tested with IE6 and NS7. Status will not work in IE. (Any suggestions)
////This program and code was authored by Jim Atkins and is shareware for personal use as long as this message stays intact.
/// For commercial use please email me at thedosmann@yahoo.com or write me at PO Box 1393 Munford,TN 38058. If you try this ///program and decide to use it please send $10.00 to above address or pay online at http://www.jbatkins.com/payment.html.
///This program requires two seperate programs..JBADEcryptv1.html-for decryption and JBAENcryptv1.html for encryption.
///This program is as is...no warranty exists, implied or otherwise.
/////Known issues..If text is pasted pre-formatted instead of being typed in text area some extra line breaks might occur.
/////To prevent this type text in text box otherwise decrypted text may have extra line breaks...
/////An extra character sometimes will be added at end of decryption.....this should not be a problem.
///Please report bugs to webadmin@jbatkins. See about.html for use.

var cypArr = new Array();
var newEPage="";
var entropy=""
/////////////////////////////////////////////////////////////////////////////////
/////no comments please
function CHme(){
document.inp.inpstatus.value="Encrypting";
var entropy=document.inp.inp5.value;
lstmess=entropy.length
var TOuallow=new Array(")","(","`","~","^","_","}","{","]","[",">","<","|","/","\u005C","\u0009","\u000B","\u000C","\u0008","\u0009")
var Chuallow=new Array("@$#@@1","@$$#@2","@$$$@3","@#$@$4","@#$$@5","@###@6","@#$#@7","@$#$@8","$@@@$9","$#@@$0","$##@$1","$###$2","$@##$3","$@@#$4","#$@$#5","##$@#6","#$@@#7","#@@$#8","@@#$$9","$##$@0")
var iu=0
var ix=0
//////////////////////////////////////////////////

for(ix=0; ix<=20; ix++){
document.inp.inpstatus.value="encrypting"
var StrRep=entropy.indexOf(TOuallow[ix])
  if(StrRep>=0){
entropy=entropy.substring(0,StrRep)+Chuallow[ix]+entropy.substring(StrRep+1,lstmess)

lstmess=entropy.length
    while(StrRep>=0){
        var StrRep=entropy.indexOf(TOuallow[ix])
           if(StrRep>=0){
          entropy=entropy.substring(0,StrRep)+Chuallow[ix]+entropy.substring(StrRep+1,lstmess)
            lstmess=entropy.length
                }
               }
             }
           }
document.inp.inp5.value=entropy;
get();
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////
function capture(){

var TestThisString = document.inp.login.value;
if (document.inp.login.value.length >14){
alert("Login has to be 14 Alpha characters or less");
return;
}
var ValidString = 'qwertyuioplkjhgfdsaxzcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM';
var Ret = allowInString (TestThisString, ValidString);
if (Ret==false){
alert ("Unallowed character - Login has to be 14 Alpha characters or less");
return;
}
var TestThisString = document.inp.inpkey.value;
if (document.inp.inpkey.value.length !=6){
alert("Keycode has to be six numbers");
return;
}
var ValidString = '0123456789';
var Ret = allowInString (TestThisString, ValidString);
if (Ret==false){
alert ("Unallowed character -  Keycode has to be six numbers");
return;
}

var stmess=document.inp.inp5.value;
var lstmess=stmess.length;



var sw="\u0020";
if (navigator.appName == 'Microsoft Internet Explorer')
{
var lfv="\r\n";
}
else
{
var lfv="\n";
}
var LGTH=lstmess/2;
var stLGTH=LGTH.toString();
var tsLGTH = '0123456789'
var RetLGTH = allowInString (stLGTH, tsLGTH);
if (RetLGTH==false){
document.inp.inp5.value=stmess+"\u0020";
lstmess=lstmess+1;
}

var letterArr = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".","!","@","&","*","?","=","+",",","-","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","J","I","H","G","F","E","D","C","B","A",":",'"',";","%","$","'","#",sw,lfv);
var numberArr = new Array("JBAENCRYPTZERO","JBAENCRYPTONE","JBAENCRYPTTWO","JBAENCRYPTTHREE","JBAENCRYPTFOUR","JBAENCRYPTFIVE","JBAENCRYPTSIX","JBAENCRYPTSEVEN","JBAENCRYPTEIGHT","JBAENCRYPTNINE",64,59,76,83,72,91,66,74,84,79,71,88,11,85,62,13,49,48,14,46,45,44,43,42,51,47,52,53,54,15,35,41,39,34,18,19,17,33,32,16,31,22,96,95,93,21,89,86,82,78,25,75,73,28,26,23,24,27,29,36,37,38,55,56,57,58,61,63,68,69,99)
var transArr= new Array(65,67,97,12,98,81,94,87,77,92)
var adu="";
var tabu=0;
var c=0;
var lgin=document.inp.login.value;
var strDEcArray=letterArr.toString();
var ttr=160;
var lginlth=lgin.length;
var q=0;
while (q<lginlth){
adu=lgin.substr(q,1);
var adui=strDEcArray.indexOf(adu);
var adutn=parseInt(adui);
tabu=(tabu+adutn);
q++;
}
var xshtra=0;
var ls=69;
var DEwr=tabu;
var b=0;
var a=10;
var hd=11;
var shtim=0;
var kcde=document.inp.inpkey.value;
var keyprt=kcde.substring(2, 4);
var shtra=parseInt(keyprt);
xshtra=shtra*tabu;
while (b<xshtra){
var DEa=numberArr[a];
var NEa=numberArr[hd];
numberArr[hd]=DEa
numberArr[a]=NEa
if (a>=ls){
a=10;
hd=11;
}
else{
a=a+1;
hd=hd+1;
}
b++;

}
var stmess=document.inp.inp5.value;
var lstmess=stmess.length;

for (iq=0; iq<=81; iq++){

if(letterArr[iq]=="a"){
for (trs=0; trs<=10; trs++){
while (stmess.indexOf(numberArr[trs])>-1) {
stmess=stmess.replace(numberArr[trs], transArr[trs]);
CYnewstring=stmess;
}
}
}


while (stmess.indexOf(letterArr[iq])>-1) {
stmess=stmess.replace(letterArr[iq], numberArr[iq]);
CYnewstring=stmess;



}
var dd=81/iq;
var dd=Math.round(dd);
document.inp.inpstatus.value="Encrypting.."+dd+"%..Remaining";

}

document.inp.inp8.value=CYnewstring
cypArr=document.inp.inp8.value;
keys()
}



////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////
 function get(){ 
var cypArr = new Array(0);
var txte = document.inp.inp5.value;
var z=txte.length;

var x=txte.charAt(0);
document.inp.inp4.value=x;
capture();
 }
//////////////////////////////////////////////////////////////////////////////



function reset(){
  var resetPage ='JBAJSENcryptv2.html'; 
   newEPage = new Date(); 
   var reFresh = newEPage.getTime();  // time in ms 
   var go = '?';   
      resetPage += go + 'newEPage=' + newEPage;    
  location.href = resetPage ; 
////this reset idea was borrowed from Selectorweb.com and I modified for use in resetting vars
} 

function allowInString (InString, RefString)  {
	if(InString.length==0) return (false);
	for (Count=0; Count < InString.length; Count++)  {
		TempChar= InString.substring (Count, Count+1);
		if (RefString.indexOf (TempChar, 0)==-1)  
			return (false);
	}
	return (true);
}
////////////////////////////////////////////////////////////////////////////////////////////////////

 
function keys(){

var keycode=document.inp.inp8.value;
var kcde=document.inp.inpkey.value;
var kcde1=kcde.substr(4, 2);
var kcde2=kcde.substring(0, 2);
var kcde=kcde2+kcde1;
var kcde=parseInt(kcde);
pul=keycode.length;
ter=keycode.length/5;
ver=parseInt(ter);
uer=Math.floor(ver);

ver=uer*5;
yul=pul-ver;
lul=pul-yul;
aul=keycode.substr(lul, yul);
var keycode=keycode.substr(0,lul);
var fft=new Array();
uti=0;
utr=5;

for (cuk=0; cuk<keycode.length/5; cuk++){
var cky=keycode.substr(uti, utr);
var cky=parseInt(cky);
var cky=cky+kcde;
cky=cky.toString();
if (cky.length>5){
cky=("|"+cky)

}

uti=uti+5;
var dd=ter/cuk;
var dd=Math.round(dd);
document.inp.inpstatus.value="Keying.."+dd+"%..Remaining";

var fft=fft+cky;

}
var fit=fft+aul;
////document.inp.inp8.value=fit;

///pacK(); 
document.inp.inp7.value=fit;
document.inp.inpstatus.value="Finished";
}
/////////////////////////////////////////////////////////////////////////////
function pacK(){

var ENcypArr=document.inp.inp8.value; 

ENcArry= new Array(10,22,33,44,55,66,77,88,90,12,13,14,15,16,17,18,19,91,92,61,93,94,95,96,97,98,21,80,24,20,26,27,28,29,31,30,34,35,36,37,38,39,41,42,43,45,46,47,48,49,51,52,53,54,56,57,58,99);

var DEcArray= new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","J","I","H","G","F","E","D","C","B","A","@","#","&","_","=",";");


var lEN=ENcArry.length;

ixc=1;
var newString = ENcypArr.replace("a", "10");
matt:
for (ixq=0; ixq<ENcArry.length; ixq++){

var ENa=ENcArry[ixq];

var DEa=DEcArray[ixq];

var take = newString.match(ENa);

var newString = newString.replace(ENa, DEa);
var take = newString.match(ENa);
while (take != null){
var take = newString.match(ENa);
var newString = newString.replace(ENa, DEa);
var dd=lEN/ixq;
var dd=Math.round(dd);
document.inp.inpstatus.value="Packing.."+dd+"%..Remaining";
}




var str=newString;
document.inp.inp7.value=str; 

}
document.inp.inpstatus.value="Finished";
///clear()
}
