var giDebug = 0;

function encrypt(asStr)
{
	return bitShift(asStr,1);
}

function decrypt(asStr)
{
	return bitShift(asStr,-1);
}
function bitShift(asStr,aiDir)
{	var sStr="",sNewStr="",sChar;
	var iLen,i,iVal;
	
	if (giDebug == 1) alert("Bitshift with:" + asStr);
	sStr = asStr;
	iLen = sStr.length;
	for (i = 1; i<=iLen; i++) {
		iVal = sStr.charCodeAt(i-1);
		iNewVal = byteShift7(iVal,aiDir);
		if (giDebug == 1) alert("New val:" + iNewVal);
		sVal = String.fromCharCode(iNewVal);
		if (iVal == 70) sVal = "6";
		sNewStr = sNewStr + sVal;
		}
	//return escape(sNewStr);
	return sNewStr;
}

function byteShift7(aiByte,aiDir)
{	var sBits = new Array(8);
	var sStr="";
	var i,iByte,iVal;
	
	sBits[0] = 1;
	sBits[1] = 2;
	sBits[2] = 4;
	sBits[3] = 8;
	sBits[4] = 16;
	sBits[5] = 32;
	sBits[6] = 64;
	sBits[7] = 128;

	iByte = parseInt(aiByte);
	// convert to string	
	for (i = 0; i<=6; i++) {
		iVal = iByte & sBits[i];
		if (iVal) sStr = sStr + "1";
		else sStr = sStr + "0";
		}
	if (giDebug == 1) alert("Byte:" + iByte + " str:" + sStr);
	
	sNewStr = "";
	if (aiDir == 1) {	// move right
		if (giDebug == 1) alert("move right");
		sNewStr = sStr.substr(6,1);
		for (i = 1; i<=6; i++) sNewStr = sNewStr + sStr.substr((i-1),1);
		}
	else	{
		if (giDebug == 1) alert("move left");
		for (i = 2; i <=7; i++) {
			sNewStr = sNewStr + sStr.substr((i-1),1);
			}
		sNewStr = sNewStr + sStr.substr(0,1);
		}
		
	iNewVal = 0;
	for (i = 1; i<=7; i++) {
		if (sNewStr.substr((i-1),1) == "1") iNewVal = iNewVal + sBits[i-1];
		}
	if (giDebug == 1) alert("ShiftedByte:" + iNewVal + " newstr:" + sNewStr);
	//if (giDebug == 1) alert("Old char:" & chr(aiByte) & " new:" & chr(cint(iNewVal)) & "<br><br>")
	return iNewVal;
}


