
document.write("<script src='javascript/aypwip.js' type='text/javascript'></script>");

function getXMLHttp()
{
  var xmlhttp, e;
  try {
    // ms' version
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) { }
  if (!xmlhttp) {
    try {
      // everyone else's version
      xmlhttp = new XMLHttpRequest();
    } catch (e) {  }
  }
  return xmlhttp;
}

function showPreview() {
  // disable the preview button
  get('preview').disabled = true;
  get('preview').value = 'getting preview';
  var xmlhttp = getXMLHttp();
  xmlhttp.onreadystatechange = function() {
    if (4 == xmlhttp.readyState && 200 == xmlhttp.status) {
      var lines = xmlhttp.responseText.split("\n");
      var name = lines.shift();
      var email = lines.shift();
      var uri = lines.shift();
      var body = lines.join("\n");
      body = body.replace(/<p>/g, "");
      var pBody = body.replace(/<\/p>/g, "<br /><br />");
      body = body.replace(/<\/p>/g, "\n");
      
      // trim off the last few characters
      pBody = pBody.substr(0, pBody.length - 2);
      body = body.substr(0, body.length - 2);
      
      // hide form and shadow
      get('commForm').style.visibility = 'hidden';
      get('scommForm').style.visibility = 'hidden';
      
      // set form values
      get('cname').value = name;
      get('cemail').value = email;
      get('curi').value = uri;
      get('cbody').value = body;
      
      // set/show preview and preview shadow
      get('pname').value = name;
      get('pemail').value = email;
      get('puri').value = uri;
      get('pbody').innerHTML = pBody;
      get('spname').value = name;
      get('spemail').value = email;
      get('spuri').value = uri;
      get('spbody').innerHTML = pBody;
      
      get('pcommForm').style.visibility = 'visible';
      get('spcommForm').style.visibility = 'visible';
      
      // set the preview add comment button
      get('paddButton').disabled = (body.trim().length < 1);
    }
  };
  // if porting, this needs to be set
  xmlhttp.open('POST', 'http://ponderer.org/tests/clean.py', true);
  xmlhttp.send(
    get('cname').value + "\n" +
    get('cemail').value + "\n" +
    get('curi').value + "\n" +
    get('cbody').value);
}

function hidePreview()
{
  get('pcommForm').style.visibility = 'hidden';
  get('spcommForm').style.visibility = 'hidden';
  get('commForm').style.visibility = 'visible';
  get('scommForm').style.visibility = 'visible';
  get('preview').disabled = false;
  get('preview').value = 'preview';
}

function testXMLHttp() {
  var xmlhttp =  getXMLHttp();
  if (xmlhttp) {
    xmlhttp.onreadystatechange = function() {
      if (4 == xmlhttp.readyState && 200 == xmlhttp.status) {
        if (xmlhttp.responseText == 'test') {
          var elt = get('spreview');
          elt.innerHTML = "<input type='button' id='preview' value='preview' onclick='showPreview()' /> ";

          // disable button so the user can't preview an empty comment
          // TODO: what if the document hasn't finished loading?
          var cbody = get('cbody');
          try {
            // This leaks in Firefox 1.5.
            cbody.addEventListener('keyup', updatePreviewComment, false);
            cbody.addEventListener('change', updatePreviewComment, false);
          } catch (e) {
            try {
              cbody.attachEvent('onkeyup', updatePreviewComment);
              cbody.attachEvent('onchange', updatePreviewComment);
            }
            catch (e) { }
          }
          updatePreviewComment();
          // end successful xmlhttp request
        } else {
          // xmlhttp error
          //alert("|" + xmlhttp.responseText + "|");
        }
      }
    };
    xmlhttp.open('POST', '/tests/echo.py', true);
    xmlhttp.send('test');
  }
}

testXMLHttp();
