/*
 * Simple Encryption built by: Kevin C. Barrett, Redmond,WA
 * Created: March 2006
 * All rights reserved and protected under United States Patent and Copyright Laws
 * Distributed under the BSD license agreement
 */
var keyCode = ""
var chkString = "AXBWC-UDSERF";
var chkLen = chkString.length;
function EncString(userKey,inVal)
{
	keyCode = userKey;
	var encString="";
	inVal = Trim(inVal);
	inVal = Anagram(inVal,1);
	var inLen = inVal.length;
	keyCode = Trim(keyCode);
	for(i=0;i<inLen;i++)
	{
		var getPos = i%inLen;
		keyVal = ChooseKeyVal(i);
		newSum = keyVal + inVal.charCodeAt(getPos);
		if(newSum < 100)
		{
			encString += "0" + newSum;
		}
		else
		{
			encString += newSum;
		}
		encString += CheckSum(newSum);
	}
	return encString;
}
function DecString(userKey,inVal)
{
	keyCode = userKey;
	var outVal = "";
	inVal = Trim(inVal);
	keyCode = Trim(keyCode);
	inVal = RemoveChecksums(inVal);
	var inLen = (inVal.length)/3;
	for(i=0;i<inLen;i++)
	{
		var getPos = i*3;
		var curVal = inVal.substring(getPos,getPos+3);
		var keyVal = ChooseKeyVal(i);
		curVal = curVal - keyVal;
		decVal = String.fromCharCode(curVal);
		outVal = outVal + decVal;
	}
	outVal = Anagram(outVal,0);
	return outVal;
}
function Anagram(inVal,dir)
{
	var inLen = inVal.length;
	var outVal="";
	var fromBase=0;
	var fromTop=inLen-1;
	var rSide = "";
	var rCount;
	var lSide = "";
	var lCount = 1;
	if(inLen%2==0)
	{
		rCount = inLen-2;
	}
	else
	{
		rCount = inLen-1;
	}
	for(i=0;i<inLen;i++)
	{		
		var bit = i%2;
		if(dir)
		{
			if(bit==0)
			{	
				lSide += inVal.substring(fromTop,fromTop+1);
				fromTop-=1;
			}
			else
			{	
				lSide += inVal.substring(fromBase,fromBase+1);
				fromBase+=1;
			}
		}
		else
		{
			if(bit==0)
			{
				var getVal = inVal.substring(rCount,rCount+1);
				rSide += getVal;
				rCount-=2;
			}
			else
			{
				var getVal = inVal.substring(lCount,lCount+1);
				lSide += getVal;				
				lCount+=2;
				
			}
		}
	}
	outVal = lSide + rSide;	
	return outVal;
}
function RemoveChecksums(inVal)
{
	for(i=0;i<chkLen;i++)
	{
		var remLetter = chkString.substring(i,i+1);
		var regEx = new RegExp(remLetter,"g");
		inVal = inVal.replace(regEx,"");
	}
	return inVal;
}
function ChooseKeyVal(pos)
{
	var keyLen = keyCode.length;
	keyPos = pos%keyLen;
	var ascVal = keyCode.charCodeAt(keyPos);
	var selVal = ascVal%keyLen;
	var retVal = keyCode.charCodeAt(selVal);
	return retVal;
}
function CheckSum(intVal)
{
	var csn=intVal%chkString.length;
	return chkString.substring(csn,csn+1);	
}
function Trim(inVal)
{
	return inVal.replace(/(^\s+|\s+$)/g,'');
}

