function speak(url, doFunc, id) {
  var xmlhttp = null;
  try {
    xmlhttp = new XMLHttpRequest();
  } catch (trymicrosoft) {
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (failed) {
        xmlhttp = null;
      }
    }
  }
  if (xmlhttp == null) {
    alert('Error creating Ajax request object.');
    return;
  }

  var name = document.getElementById("name").value;
  var mesg = document.getElementById("mesg").value;

  xmlhttp.onreadystatechange= function() {
    if (xmlhttp.readyState==4)
      if (xmlhttp.status==200)
        doFunc(xmlhttp, id);
  }
  xmlhttp.open("POST",url,true);
  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlhttp.send("name=" + escape(name) + "&mesg=" + escape(mesg))
}

function speakUpdate(req, id) {
  if (req.responseText != "") {
    document.getElementById(id).innerHTML = req.responseText;

    document.getElementById('mesg').className = 'dim';
    document.getElementById('mesg').value = 'Enter text here';
    document.getElementById('name').className = 'dim';
    document.getElementById('name').value = 'Enter your name here';
  }
}
