
var hexVals = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
              "A", "B", "C", "D", "E", "F");
var unsafeString = "\"<>%\\^[]`\+\$\,&{}/:;?@ #|";

function changeIt(val){
var len     = val.length;
var backlen = len;
var i       = 0;

var newStr  = "";
var frag    = "";
var encval  = "";
var original = val;

    for (i=0;i<len;i++)
        {
          if (val.substring(i,i+1).charCodeAt(0) < 255)
             {
              if (isUnsafe(val.substring(i,i+1)) == false)
                 { newStr = newStr + val.substring(i,i+1); }
              else
                 { newStr = newStr + convert(val.substring(i,i+1)); }
             }
          else // woopsie! restore.
             {
               alert ("Found a non-ISO-8859-1 character at position: " + (i+1) + ",\nPlease eliminate before continuing.");
               document.forms[0].state.value = "none";
               document.forms[0].enc[0].checked = true; // set back to "no encoding"
               newStr = original; i=len;                // short-circuit the loop and exit
             }
        }

	return newStr;
}
function isUnsafe(compareChar){
	if (unsafeString.indexOf(compareChar) == -1 && compareChar.charCodeAt(0) > 32 && compareChar.charCodeAt(0) < 123){ 
		return false; 
	} else { 
		return true; 
	}
}

function convert(val) 
{ return  "%" + decToHex(val.charCodeAt(0), 16); }

function decToHex(num, radix)
{
	var hexString = "";
	while (num >= radix)
      {
       temp = num % radix;
       num = Math.floor(num / radix);
       hexString += hexVals[temp];
      }
	hexString += hexVals[num];
	return reversal(hexString);
}

function reversal(s)
{
	var len = s.length;
	var trans = "";
	for (i=0; i<len; i++)
	    { trans = trans + s.substring(len-i-1, len-i); }
	s = trans;
	return s;
}


