function isHexValues(theString) {
var i = 0
var iKey = 0

	for (i=0; i < theString.length; i++) {
		iKey = theString.charCodeAt(i)
		if ((iKey >= 65 && iKey <= 70) || (iKey >= 48 && iKey <= 57) ) {
			iKey = iKey
		}
		else {
			return false
		}
	}
return true
}


function CADEencrypt(theString) {
var iKey = 0
var i = 0
var x = 0
var sWork = ''
var fake = 0 
var xx

	theString = trim(theString)

	iKey = parseInt((9 * Math.random()) + 1)

	if (theString.length < 4) {
		for (i=0; i = 4 - theString.length; i++) {
			theString = theString + ' '
		}
	}
	for (i=0; i < theString.length; i++) {
		if (i == 2) {
			fake = parseInt((9 * Math.random()) + 1)
			sWork = sWork + iKey + fake
		}
		x = theString.charCodeAt(i)
		x = x + iKey
		if (x < 16) {sWork = sWork + "0"}
		sWork = sWork + x.toString(16)
	}

	for (i=0; i < fake; i++) {
		xx = parseInt(((126 - 32 + 1) * Math.random()) + 32)
		sWork = sWork + xx.toString(16)
	}

	sWork = sWork + '00'
	return sWork.toUpperCase()
}

function CADEdecrypt(theString) {
var iKey = 0
var i = 0
var x = 0 
var fake = 0
var sValue =''
var hValue =''
var baseValue = 0
var decrypt = ''

   
	if (theString == "password" || isHexValues(theString) == false) {return theString}
	if (theString.length < 6) {return theString}
	if (theString.substring(5,6) == '0') {return theString}

	if (theString.substring(theString.length-2,theString.length) == '00') {
		if (theString.substring(6,7) == '0') {return theString}
	}
	else {
		if (theString.substring(6,7) != '0') {return theString}
	}


	iKey = parseInt(theString.substring(4, 5))

	if (theString.substring(theString.length-2,theString.length) == '00') {
		fake = parseInt(theString.substring(5,6)) * 2
		if (theString.length - fake - 2 <= 0 ) {return theString}
		theString = theString.substring(0,theString.length - fake - 2)
	}
	

	for (i = 0; i < theString.length; i=i+2) {
		if (i != 4) {
			if (i+1 > theString.length) {return theString}
			baseValue = 16 * parseInt(theString.substring(i, i+1))
			if (baseValue < iKey) {return theString}
			sValue = theString.substring(i + 1, i + 2)
			if (isNaN(sValue)) {
				x = sValue.charCodeAt(0) 
				x = x - 55
				sValue = '' + x
			}            
			baseValue = (baseValue + parseInt(sValue))
			baseValue = baseValue - iKey

			sValue = String.fromCharCode(baseValue)
			x = theString.charCodeAt(sValue)
			if (x < 32 || x > 126) { return theString }

			decrypt = decrypt + sValue
		}
	}
	while (decrypt.substring(decrypt.length-1,decrypt.length) == ' ') {
		decrypt = decrypt.substring(0,decrypt.length-1)
	}
	return trim(decrypt)
}



function stringToHex(theString) {
var byteArray = new Array()
var result = ''

	byteArray = stringToByteArray(theString)
	result = byteArrayToHex(byteArray)
	return result
}
	

function stringToByteArray(theString) {
var i
var byteArray = new Array()

	for (i=0; i < theString.length; i++) {
		byteArray[i] = theString.charCodeAt(i)
	}
	return byteArray
}


function byteArrayToHex(byteArray) {
var result = "";
	if (byteArray == '') return '';
	for (var i=0; i < byteArray.length; i++) {
		result += ((byteArray[i] < 16) ? "0" : "") + byteArray[i].toString(16);
	}
	return result;
}


function hexToByteArray(hexString) {
  var byteArray = [];
  if (hexString.length % 2)             // must have even length
    return '';
  if (hexString.indexOf("0x") == 0 || hexString.indexOf("0X") == 0)
    hexString = hexString.substring(2);
  for (var i = 0; i<hexString.length; i += 2) 
    byteArray[Math.floor(i/2)] = parseInt(hexString.slice(i, i+2), 16);
  return byteArray;
}

function byteArrayToString(byteArray) {
  var result = "";
  for(var i=0; i<byteArray.length; i++)
    if (byteArray[i] != 0) 
      result += String.fromCharCode(byteArray[i]);
  return result;
}


function trim(theData) {
	while (theData.substring(theData.length-1,theData.length) == ' ') {
		theData = theData.substring(0,theData.length-1)
	}
	return theData
}
