// webpad-related functions

var webPad; // global reference
var wpRefreshResult = -1; // overwritten by webpad refresh output

function WebPad(box) {
  this.baseHref = 'http://www.schillmania.com/interactive/webpad/';
  this.box = box;
  this.content = document.getElementById('wpContent');
  this.form = document.getElementById('wpForm');
  this.btnSubmit = this.form.getElementsByTagName('button')[1];
  this.statusTypes = ['Idle','Editing','Submitting ...','Refreshing ...','Post successful','Post failed','Post/refresh broken on IE:mac.'];
  this.currentStatus = -1;
  this.status = document.getElementById('wpStatus');

  this.setStatus = function(s) {
    if (this.currentStatus != s) {
      this.currentStatus = s;
      this.status.innerHTML = this.statusTypes[this.currentStatus];
    }
  }
  this.refresh = function() {
    if (isIE && isMac) {
	  if (!this.content.innerHTML) this.content.innerHTML = getMessages();
  	  this.setStatus(6);
	  return false;
	}
    this.content.innerHTML = '';
    this.setStatus(3);
    loadJS(this.baseHref+'messages.js',this.refreshComplete);
  }
  this.refreshComplete = function() {
    webPad.content.innerHTML = getMessages();
    if (webPad.box.reflow) webPad.box.reflow();
    if (wpRefreshResult<0) {
      webPad.setStatus(0);
    } else {
      // refresh due to post (wpRefreshResult >= 0)
      if (wpRefreshResult>0) {
        // post successful
        webPad.setStatus(4);
        webPad.form.reset();
        setTimeout("webPad.btnSubmit.disabled = false;webPad.refresh()",2000);
      } else {
        webPad.setStatus(5);
        webPad.btnSubmit.disabled = false;
      }
      wpRefreshResult = -1;
    }
  }
  this.init = function() {
    // set event handlers etc.
    this.inputs = this.form.getElementsByTagName('input');
    for (this.i=0; this.i<this.inputs.length; this.i++) {
      this.inputs[this.i].onfocus = function() { webPad.setStatus(1); }
      this.inputs[this.i].onblur = function() { webPad.setStatus(0); }
    }
    // text area must be added manually for some reason.
    document.getElementById('bodyText').onfocus = function() { webPad.setStatus(1); }
    document.getElementById('bodyText').onblur = function() { webPad.setStatus(0); }
    this.form.onsubmit = function() { webPad.setStatus(2);webPad.submitHandler();return false; }
    this.form.onreset = function() { webPad.btnSubmit.enabled = true; }
    this.refresh();
  }
  this.submitHandler = function() {
    this.params = '';
    this.formElements = this.form.getElementsByTagName('div')[0].childNodes;
    for (this.i=0; this.i<this.formElements.length; this.i++) {
      if (this.formElements[this.i].name) {
        this.params += (this.params.length?'&':'')+this.formElements[this.i].name+'='+escape(this.formElements[this.i].value);
      }
    }
    loadJS(this.baseHref+'index.php?'+this.params,null,1);
    this.btnSubmit.disabled = true;
  }
  this.init();
}
