function gscontent_recommendation_get_status(nid) {

  $('#gscontent_recommendation_status_' + nid).load('/gscontent/recommendation/sum/node/' + nid, '', function () {

    jQuery.post('/gscontent/recommendation/get_for_user/node/' + nid, '', function (data, textStatus) {

      var voted = data;

      // Convert voted to integer and see if a vote has been cast
      if (parseInt(voted) > 0) {
        gscontent_recommendation_allow_unset(nid);
      }
      else {
        gscontent_recommendation_allow_set(nid);
      }
    });

    // Allow for dispay of recommended total in other places
    $('.gscontent_recommendation_status_' + nid).html($('#gscontent_recommendation_status_' + nid).html());
    $('.gscontent_recommendation_status_wrapper_' + nid).show();
  });
}

function gscontent_recommentation_total(nid) {

  var voted = $('#gscontent_recommendation_status_' + nid).html();

  if (parseInt(voted) > 0) {
    return '<span class="gscontent_recommendation_number">' + voted + '</span><span class="gscontent_recommendation_text"> readers have recommended this</span>';
  }
  else {
    return '';
  }
}

function gscontent_recommendation_allow_set(nid) {

  var link_html = '<a href="#" class="gscontent_recommendation_link" id="gscontent_recommendation_link_' + nid + '" onClick="return false;" title="click to Recommend this Article">Recommend</a>';

  link_html += ' ' + gscontent_recommentation_total(nid);

  $('#gscontent_recommendation_' + nid)
    .hide()
    .html(link_html)
    .fadeIn();

  $('#gscontent_recommendation_link_' + nid).click(function () {
    gscontent_recommendation_mark_as_set(nid);
    //gscontent_recommendation_set(nid);
  });

  $('.gscontent_recommendation_link_' + nid).fadeIn();

  $('.gscontent_recommendation_status_link_' + nid).click(function () {
    gscontent_recommendation_mark_as_set(nid);
  });
}

function gscontent_recommendation_mark_as_set(nid) {

  gscontent_recommendation_set(nid);
  $('.gscontent_recommendation_status_link_' + nid).html('Recommended');
  $('.gscontent_recommendation_link_' + nid).fadeOut();
  $('.gscontent_recommendation_status_wrapper_' + nid + ' > img').attr('src', '/files/images/checkbox.gif');
}

function gscontent_recommendation_set(nid) {

  jQuery.post('/gscontent/recommendation/set/node/' + nid + '/1', '', function (date, textStatus) {

    gscontent_recommendation_get_status(nid);
  });
}

function gscontent_recommendation_allow_unset(nid) {

  var link_html = gscontent_recommentation_total(nid);

  $('.gscontent_recommendation_status_link_' + nid).html('Recommended');

  $('.gscontent_recommendation_status_wrapper_' + nid + ' > img').attr('src', '/files/images/checkbox.gif');

  $('#gscontent_recommendation_' + nid)
    .hide()
    .html(link_html)
    .fadeIn();
}

function gscontent_recommendation_unset(nid) {

  jQuery.post('/gscontent/recommendation/unset/node/' + nid, '', function (date, textStatus) {

    gscontent_recommendation_get_status(nid);
  });
}

function gscontent_comment_recommendation_get_status(comment_id) {

  $('#gscontent_comment_' + comment_id + '_recommendation_rating').load('/gscontent/recommendation/results/comment/' + comment_id, '', function () {

    results_raw = $('#gscontent_comment_' + comment_id + '_recommendation_rating').html().split('|');

    rating_raw = results_raw[0];

    count_raw = results_raw[1];

    if (rating_raw) {

      rating = parseInt($('#gscontent_comment_' + comment_id + '_recommendation_rating').html());
    }
    else {

      rating = 0;
    }

    if (count_raw) {

      count = parseInt(count_raw);
    }
    else {

      count = 0;
    }

    if (rating < 0) {

      rating_html = '<span class="gscontent_comment_recommendation_rating_negative">-' + (rating * -1) + '</span>';
    }
    else if (rating > 0) {

      rating_html = '<span class="gscontent_comment_recommendation_rating_positive">+' + rating + '</span>';
    }
    else {

      rating_html = rating;
    }

    rating_html = '<span class="gscontent_comment_recommendation_rating_value">' + rating_html + '</span>';

    $('#gscontent_comment_' + comment_id + '_recommendation_rating').html(rating_html);

    if (count > 0) {
      count += (count > 1) ? ' votes' : ' vote';
    }
    else {
      count = '';
    }

    $('#gscontent_comment_' + comment_id + '_recommendation_count').html(count);

    jQuery.post('/gscontent/recommendation/get_for_user/comment/' + comment_id, '', function (data, textStatus) {
      
      var voted = data;

      // Show appropriate comment rating buttons
      switch(parseInt(voted)) {

        case 1:
          gscontent_comment_recommendation_buttons_refresh(comment_id, 1, 0);
          break;

        case -1:
          gscontent_comment_recommendation_buttons_refresh(comment_id, 0 ,1);
          break;

        default:
          gscontent_comment_recommendation_buttons_refresh(comment_id);
          break;
      }
    });
  })
}

function gscontent_comment_recommendation_buttons_html(comment_id, upvote_button_disabled, downvote_button_disabled) {

  button_html = gscontent_comment_recommendation_button_html(comment_id, 'up', 'Agree', upvote_button_disabled);
  button_html += ' ';
  button_html += gscontent_comment_recommendation_button_html(comment_id, 'down', 'Disagree', downvote_button_disabled);

  return button_html;
}

function gscontent_comment_recommendation_buttons_refresh(comment_id, upvote_button_disabled, downvote_button_disabled) {

  button_html = gscontent_comment_recommendation_buttons_html(
    comment_id,
    upvote_button_disabled,
    downvote_button_disabled
  );

  $('#gscontent_comment_recommendation_buttons_' + comment_id)
    .hide()
    .html(button_html)
    .fadeIn();

  if (!upvote_button_disabled) {

    gscontent_comment_recommendation_activate_button(comment_id, 'up', '1');
  }

  if (!downvote_button_disabled) {

    gscontent_comment_recommendation_activate_button(comment_id, 'down', '-1');
  }
}

function gscontent_comment_recommendation_activate_button(comment_id, button_type, vote) {

  $('#gscontent_comment_recommendation_button_' + button_type + '_' + comment_id).click(function () {

    gscontent_comment_recommendation_vote(comment_id, vote);
  });
}

function gscontent_comment_recommendation_vote(comment_id, vote) {

  jQuery.post('/gscontent/recommendation/set/comment/' + comment_id + '/' + vote, '', function (data, textStatus) {

    gscontent_comment_recommendation_get_status(comment_id);
  });
}

function gscontent_comment_recommendation_button_html(comment_id, button_type, button_text, disabled) {

  button_html = '<span id="gscontent_comment_recommendation_button_' + button_type + '_' + comment_id + '" ';
  button_html += 'class="gscontent_comment_recommendation_link ';

  if (disabled) {

   button_html += ' gscontent_comment_recommendation_link_disabled';
  }

  button_html += '">' + button_text + '</span>';

  return button_html;
}

