/* logic.js - JavaScript form handling for the symbolic logic interpreter
 *
 * Darren Provine, 11 September 2004
 */

/* This adds un-typable characters to the text box, using
 * the codes from the onclick() events of the buttons.
 *
 * A smarter one would put the character at the caret, instead
 * of at the end.
 */
function addchar(c)
{
    var t = document.getElementById("logic")
    t.value = t.value + c + ' ';
    t.focus();
}

/* empty the box */
function clear_input()
{
    var t = document.getElementById("logic")
    t.value = " ";
}

/* set focus on the text box */
function ready_input()
{
    var t = document.getElementById("logic")
    t.focus();
}


/* This takes the finished product and encodes it to be sent
 * to the CGI.  HTTP doesn't handle Unicode chars; neither
 * does the JavaScript escape() function.
 * found encodeURIComponent() at
 *    http://worldtimzone.com/blog/date/2002/09/24
 */
function encode()
{
    var orig = document.getElementById("logic");
    var hidden = document.getElementById("coded");

    var expr = trim(orig.value);
    orig.value = expr;

    hidden.value = encodeURIComponent(orig.value);
}


/* Got this from:
 * <http://www.breakingpar.com/bkp/home.nsf/Doc?OpenNavigator&U=87256B14007C5C6A87256AFB0013C722>
 */
function trim(inputString) {
   // Removes leading and trailing spaces from the passed string. Also removes
   // consecutive spaces and replaces it with one space. If something besides
   // a string is passed in (null, custom object, etc.) then return the input.
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   // Note that there are two spaces in the string - look for multiple
   // spaces within the string
   while (retValue.indexOf("  ") != -1) {
      retValue = retValue.substring(0, retValue.indexOf("  ")) +
                 retValue.substring(retValue.indexOf("  ")+1,
                 retValue.length);
                 // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function
