/**
 * Forum controls.
 **/

// Namespace.
HSPS.FORUM = {};

// Override these inside your page.
//HSPS.FORUM.thread = "";
//HSPS.FORUM.refreshThread = function() {};

/** Displays the "post reply" form in the "forum-reply" div. **/
HSPS.FORUM.showPostForm = function() {
  var html = [
    "<form action='javascript:HSPS.FORUM.post()'>\n",
    "<textarea id='forum-post-text'></textarea><br>\n",
    "<input type='submit' value='Submit'/>\n",
    "</form>\n"
  ];
  HSPS.$("forum-reply").innerHTML = html.join("");
};

/** Posts a new message to the current thread. **/
HSPS.FORUM.post = function() {
  var params = {
    "thread_name": HSPS.FORUM.thread.name,
    "text": HSPS.$("forum-post-text").value
  };
  HSPS.$("forum-reply").innerHTML = "Submitting...";
  AJAX.request("/forum/post", params, function(message, code) {
    HSPS.$("forum-reply").innerHTML = "Refreshing...";
    HSPS.FORUM.refreshThread();
  }, "POST");
};

/** Rate a message "up", "down" or "spam". **/
HSPS.FORUM.rate = function(messageKey, rating) {
  var params = {
    "message_key": messageKey,
    "up": (rating == "up" ? 1 : 0),
    "down": (rating == "down" ? 1 : 0),
    "spam": (rating == "spam" ? 1 : 0)
  };
  AJAX.request("/forum/rate", params, function(message, code) {
    if (code == 200 && message == "OK") {
      HSPS.FORUM.refreshThread();
    } else {
      alert("Error: " + message + "\n(code " + code + ")");
    }
  }, "POST");
};

/** Deletes a forum message. **/
HSPS.FORUM.deleteMessage = function(messageKey) {
  var params = {
    "message_key": messageKey,
    "thread_name": HSPS.FORUM.thread.name
  };
  AJAX.request("/forum/delete", params, function(message, code) {
    if (code == 200 && message == "OK") {
      HSPS.FORUM.refreshThread();
    } else {
      alert("Error: " + message + "\n(code " + code + ")");
    }
  }, "POST");
};


