  function showProductTagForm() {
    try {
      $('product-tag-link').hide();
      $('product-tag-form').show();
      $('product-tag-names').focus();
    } catch(e) {
      alert(e);
    }
    return false;
  }
  function submitProductTagForm() {
    try {
      var form = $('product-tag-form');
      new Ajax.Updater('product_tags', form.action,
        {method:'post', parameters:Form.serialize(form), evalScripts: true}
      );
      $(form).hide();
      $('product-tag-link').show();
      $('product-tag-names').value='';
    } catch(e) {
      alert(e)
    }
    return false;
  }
  function showReviewTagForm(id) {
    try {
      $('review-'+id+'-tag-link').hide();
      $('review-'+id+'-tag-form').show();
      $('review-'+id+'-tag-names').focus();
    } catch(e) {
      alert(e);
    }
    return false;
  }
  function submitReviewTagForm(id) {
    try {
      var form = $('review-'+id+'-tag-form');
      new Ajax.Updater('review-'+id+'-tags', form.action,
        {method:'post', parameters:Form.serialize(form), evalScripts: true}
      );
      form.hide();
      $('review-'+id+'-tag-link').show();
      $('review-'+id+'-tag-names').value='';
    } catch(e) {
      alert(e)
    }
    return false;
  }
  function submitReviewVote(reviewId, helpful) {
      try {
          $('review-'+reviewId+'-vote-helpful').value=helpful;
          var form = $('review-'+reviewId+'-vote-form');
          new Ajax.Updater('review-'+reviewId+'-votes', form.action,
            {method:'post', parameters:Form.serialize(form), evalScripts: true}
          );
      } catch(e) {
          alert(e);
      }
      return false;
  }