
function decode(){ 
  if(document.forms[0].hex.value != ''){ 
        var vText = document.forms[0].hex.value; 
        document.forms[0].ascii.value = unescape(vText); 
  } 
} 

function encode(){ 
  if(document.forms[0].ascii.value != ''){ 
    var vText = document.forms[0].ascii.value; 
     document.forms[0].hex.value = convertToHex(vText); 
         var vEncoded = convertToUnicode(vText); 
     document.forms[0].unicode.value = vEncoded; 
         document.getElementById("unicodeHTML").innerHTML = vEncoded;
 	document.forms[0].ascii.focus();
	document.forms[0].ascii.blur();
	document.forms[0].ascii.select();
  } 
} 



function convertToUnicode(source) { 
  result = ''; 
  for (i=0; i<source.length; i++) 
    result += '&#' + source.charCodeAt(i) + ';'; 
  return result; 
} 

               
function convertToHex(num) { 
  var hex = ''; 
  for (i=0;i<num.length;i++) 
    hex += "%" + num.charCodeAt(i).toString(16).toUpperCase(); 
  return hex; 
} 



/* ************************************************* */

function convertToASCII() {
	if (document.forms[0].unicode.value != '') {
		var uniText = document.forms[0].unicode.value;
		var testText = uniText.substring(2,uniText.length-1).split(";&#")
		var resultString = ""
		for (i=0;i<testText.length;i++)
			resultString += "%" + dec2hex(testText[i])
		document.forms[0].ascii.value = unescape(resultString);
	}
}

function dec2hex(n){
var hex = "0123456789ABCDEF";
var mask = 0xf;
var retstr = "";
	while(n != 0){
		retstr = hex.charAt(n&mask) + retstr;
		n>>>=4;
	}

 return retstr.length == 0 ? "0" : retstr;
}
