  addEvent(window, 'load', init, false);

  function init() {
      if (!document.getElementById) return;
      
      var formElements = document.getElementsByTagName('form');
      for (var i = 0; i < formElements.length; i++) {
          if (formElements[i].className.match(/\bblock-rsvp\b/)) {
              addEvent(formElements[i], 'submit', submitRequest, false);
          }
      }
  }
  
  function submitRequest(e) {
      /* Cancel the submit event, and find out which form was submitted */
      knackerEvent(e);
      var target = window.event ? window.event.srcElement : e ? e.target : null;
      if (!target) return;
      
      /* Check if this form is already in the process of being submitted. 
       * If so, don't allow it to be submitted again. */
      if (target.ajaxInProgress) return;
      
      /* Set up the request */
      var xmlhttp =  new XMLHttpRequest();
      xmlhttp.open('POST', 'http://kvrx.org/sxsw.php', true);
      
      /* The callback function */
      xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState == 4) {
              if (xmlhttp.status == 200)
                  addRatingFeedback(xmlhttp.responseXML, target);
              else
                  target.submit();
          }
      }
      
      /* Send the POST request */
      xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      xmlhttp.send('name=' + target.elements['name'].value + '&email=' + target.elements['email'].value + '&age=' + target.elements['age'].value);
      
      /* Add temporary feedback that the request has been sent */   
      var loadingImg = document.createElement('img');
      loadingImg.src = 'http://kvrx.org/files/chair.jpg';
      target.getElementsByTagName('p')[0].appendChild(loadingImg);
      target.ajaxInProgress = true;
  }
  
  function addRatingFeedback(responseXML, target) {
      var loadingImg = target.getElementsByTagName('img')[0];
      loadingImg.parentNode.className += ' success';
      var feedbackText = 'Thanks ' + 
         target.elements['name'].value + 
          ' We\'ll be in touch.';
      var feedbackSpan = document.createElement('span');
      feedbackSpan.className = 'ajaxresponse';
      feedbackSpan.appendChild(document.createTextNode(feedbackText));
      loadingImg.parentNode.replaceChild(feedbackSpan, loadingImg);

      // Free up the form to go again
      target.ajaxInProgress = false;
      
      // Disable form inputs
      document.getElementById('form1').style.display = "none";
	  document.getElementById('success1').style.display = "block";
  }
  
  /* 
 * Kills an event's propagation and default action
 */
function knackerEvent(eventObject) {
    if (eventObject && eventObject.stopPropagation) {
        eventObject.stopPropagation();
    }
    if (window.event && window.event.cancelBubble ) {
        window.event.cancelBubble = true;
    }
    
    if (eventObject && eventObject.preventDefault) {
        eventObject.preventDefault();
    }
    if (window.event) {
        window.event.returnValue = false;
    }
}

/* 
 * Cross-browser event handling, by Scott Andrew
 */
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}
