$(document).ready(function() {
  
  attachFeedbackHandlers();

  $("a.category-remove").click(function(e) {
      e.preventDefault();
      // Remove the enclosing fieldset
      $(this).parent().parent().hide('medium', function() { $(this).remove(); });
  });
  
  $("a.category-add").click(function(e) {
      e.preventDefault();
      var count = $(".category-count").val();
      count = parseInt(count) + 1
      $("#category-" + count).removeClass("gems-hidden").find("select:first").focus();;
      $(".category-count").val(count);
      // If no more hidden fields left, remove 'Add' link.
      if ($('#category-' + count).length == 0) {
        $(this).parent().append('<span class="description">To add more categories, save first.</span>');
        $(this).remove();
      }
  });
 
  $("a.step-remove").click(function(e) {
      e.preventDefault();
      // Remove the enclosing fieldset
      $(this).parent().parent().hide('medium', function() { $(this).remove(); });
  });
  
  $("a.step-add").click(function(e) {
      e.preventDefault();
      var count = $(".step-count").val();
      count = parseInt(count) + 1
      $("#step-" + count).removeClass("gems-hidden").find("select:first").focus();;
      $(".step-count").val(count);
      // If no more hidden fields left, remove 'Add' link.
      if ($('#step-' + count).length == 0) {
        $(this).parent().append('<span class="description">To add more section changes, save first.</span>');
        $(this).remove();
      }
  });
 
  $("a.related-remove").click(function(e) {
      e.preventDefault();
      // Remove the enclosing fieldset
      $(this).parent().parent().hide('medium', function() { $(this).remove(); });
  });
  
  $("a.related-add").click(function(e) {
      e.preventDefault();
      var count = $(".related-count").val();
      count = parseInt(count) + 1
      $("#related-" + count).removeClass("gems-hidden").find("input:text:first").focus();
      $(".related-count").val(count);
      // If no more hidden fields left, remove 'Add' link.
      if ($('#related-' + count).length == 0) {
        $(this).parent().append('<span class="description">To add more items, save first.</span>');
        $(this).remove();
      }
  });
 
});

function attachFeedbackHandlers() {
  $("#feedback-edit-button").click(function(e) {
    handleFeedbackRequest(e, 'edit', 'Error encountered while trying to edit your feedback.');
  });
  
  $("#feedback-preview-button").click(function(e) {
    handleFeedbackRequest(e, 'preview', 'Error encountered while trying to preview your feedback.');
  });
  
  $("#feedback-post-button").click(function(e) {
    handleFeedbackRequest(e, 'post', 'Error encountered while trying to post your feedback.');
  });
}

function handleFeedbackRequest(e, mode, error_message) {
  e.preventDefault();
  $('#feedback-panel').css('display', 'none');
  $('#feedback-panel-wait').css('display', '');
  var params = {};
  $('#gems-article-feedback-form')
  .find("input[@checked], input[@type='text'], input[@type='hidden'], input[@type='password'], input[@type='submit'], option[@selected], textarea")
  .filter(":enabled")
  .each(function() {
    params[ this.name || this.id || this.parentNode.name || this.parentNode.id ] = this.value;
  });
  var url = Drupal.settings.basePath + "node/" + $("#nid").val() + "/comments/" + mode;
  $.ajax({
    url: location.protocol +"//"+ location.host + url,
    dataType: 'json',
    data: params,
    type: 'POST',
    success: function (response) {
      if (response['data'] != '') {
        $('#feedback-panel').html(response['data']);
        attachFeedbackHandlers();
      }
      if (response['message'] != '') {
        alert(response['message']);
      }
      $('#feedback-panel').css('display', '');
      $('#feedback-panel-wait').css('display', 'none');
    },
    error: function(response) {
      alert(error_message);
      $('#feedback-panel').css('display', '');
      $('#feedback-panel-wait').css('display', 'none');
    }
  });
}

