  function submitRating(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', 'ajaxPhp/ajaxServer.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('rating=' + target.elements['rating'].value + '&content='
       + target.elements['content'].value + '&products_id='
       + target.elements['products_id'].value + '&title='
       + target.elements['title'].value + '&name='
       + target.elements['name'].value);
      
      /* Add temporary feedback that the request has been sent */   
      var loadingImg = document.createElement('img');
      loadingImg.src = 'pics/media/working.gif';
      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 = 'Your score of ' + 
          responseXML.getElementsByTagName('rating')[0].firstChild.data + 
          ' Stars has been recorded along with your review. Thank you.';
      
      var feedbackReviewText = 'Review: ' +responseXML.getElementsByTagName('reviewResult')[0].firstChild.data;
          
      var feedbackSpan = document.createElement('span');
      feedbackSpan.className = 'ajaxresponse';
      feedbackSpan.appendChild(document.createTextNode(feedbackText));  
      feedbackSpan.appendChild(document.createTextNode(feedbackReviewText));     
      loadingImg.parentNode.replaceChild(feedbackSpan, loadingImg);

      // Free up the form to go again
      target.ajaxInProgress = false;
      
      // Disable form inputs
      target.getElementsByTagName('select')[0].disabled = true;
      target.getElementsByTagName('input')[0].disabled = true;
      target.getElementsByTagName('input')[1].disabled = true;
      target.getElementsByTagName('input')[2].disabled = true;
      target.getElementsByTagName('input')[3].disabled = true;
      target.getElementsByTagName('textarea')[0].disabled = true;
  }
