function clearreq(pr) 
{ document.getElementById(pr+"edit").value = ""; }

function show_result(pr,res)
{ document.getElementById(pr+"res").innerHTML = res; }

function clearres(pr)
{ show_result(pr,""); }

function defreq(pr)
{  var req = document.getElementById(pr+"req");
   var edit = document.getElementById(pr+"edit");
   var def = document.getElementById(pr+"def");
   edit.value = def.value;
   req.innerHTML = HTMLEncode(def.value);
}

function submit(pr) {
 var xmlhttp = new XMLHttpRequest();
 xmlhttp.open("POST", "/cgi-bin/demo_evaluator" ,true);
 xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) { show_result(pr,xmlhttp.responseText); }
 }
 show_result(pr,"Computing...");
 xmlhttp.send("#silent\n"+compute_prefix(pr) + "#verbose\n"+document.getElementById(pr+"edit").value);
}

function compute_prefix(pr) {
 var prefix = document.getElementById(pr+"prefix").value;
 if (prefix == "") return "";
 var r = compute_prefix(prefix) + document.getElementById(prefix+"edit").value;
 return(r + "\n");
}

function editable(pr,b) {
 var ct = document.getElementById(pr+"container");
 var req = document.getElementById(pr+"req");
 var edit = document.getElementById(pr+"edit");
 var btn = document.getElementById(pr+"btn");
 var btnclear = document.getElementById(pr+"btnclear");
 if ((req.style.display=='none') || (b == "init")) {
   req.innerHTML = HTMLEncode(edit.value);
   req.style.display='block';
   edit.style.display='none';
   btnclear.style.visibility='hidden';
   btn.value="Edit";
 }
 else {
   req.style.display='none';
   edit.style.display='block'; 
   btnclear.style.visibility='visible';
   btn.value="Unedit";
 }
}
function HTMLEncode(t) {
  var t = t.toString();
  var h = new Array("&","\"","<",">");
  var d = ""; var hl = h.length;
  var e = new Array("&amp;","&quot;","&lt;","&gt;")
  if (t) {
    for (var i=0; i<t.length; ++i) {
      var c = t.charAt(i);
      var r = 0;
      for (j=0; j<hl; ++j) {
        if (c == h[j]) {
          d += e[j]; r = 1; break;
        }
      }
      if (!r) d += c;
    };
  };
  return d;
};
