
function vns(name, extended) {
  var parts = name.split('.');
  var obj = window;
  for (var x=0; x++; x < parts.length) {
    var part = parts[x];
    if (!obj[part]) {
      obj[part] = {};
    }
    obj = obj[part];
  }
  for (var key in extended) {
    obj[key] = extended[key];
  }
  return obj;
}

$vm = vns("vm", {});

(function() {

var util = vns("vm.util", {
  redirect_to_login : function() {
    window.location.href = "/login/?errmsg=You+must+be+logged+in+to+vote";
  }
});

$vm.util = util;

var hot = vns("vm.hot", {
  vote : function(item_type, item_id, user_id, direction, blog_id) {
    if (!user_id || user_id < 1) {
      $vm.util.redirect_to_login();
      return;
    }

    var vote_callback = function(data, status, req) {

      if (data.error === false) {
	$("#arrows-" + item_type + "-" + item_id).addClass("hidden");
	var html = data.points + " " + "point";
	if (data.points != 1) {
	  html += "s";
	}
	$("#points-" + item_type + "-" + item_id).html(html);
      } else {
	alert(data.message);
      }
    };
    //jQuery.post( url, [ data ], [ success(data, textStatus, XMLHttpRequest) ], [ dataType ] )
    var data = {
      "item_type" : item_type,
      "item_id" : item_id,
      "direction" : direction
    };
    $.post("/vm/blog/vote/", data, vote_callback, 'json');
  }
});
$vm.hot = hot;

var comment = vns("vm.comment", {
  show_edit_form : function(comment_id) {
    var show_callback = function(data, status, req) {
      if (data && !data.err && (typeof(data.body_wiki) == typeof("")))
      {
	$('#edit-holder-' + comment_id).append($('<p><textarea id="edit-comment-ta"></textarea></p>'));
	$('#edit-holder-' + comment_id).append($('<p><input type="button" id="edit-comment-save" value=\"Save Changes" /></p>'));
	$('#edit-comment-ta').val(data.body_wiki);
	$('#edit-comment-save').click(function() {$vm.comment.save_edit_form(comment_id);});
      } else {
        $("#edit-holder-" + comment_id).html("Error: " + data.err);
      }
    };
    $.get("/vm/edit_comment/" + comment_id + "/", {}, show_callback, 'json');

  },
  save_edit_form : function(comment_id) {
    var save_callback = function(data, status, req) {
      if (data && !data.err && (typeof(data.confirm) == typeof("")))
      {
	$('#div-comment-' + comment_id + ' .comment-body').html(data.body);
        $("#message-holder-" + comment_id).html(data.confirm);
	$('#edit-holder-' + comment_id).html("");
      } else {
        $("#message-holder-" + comment_id).html("Error: " + data.err);
      }
    };
    var data = {
      body_wiki : $('#edit-comment-ta').val()
    };
    $.post("/vm/edit_comment/" + comment_id + "/", data, save_callback, 'json');
  },
  show_reply_form : function(parent_id, parent_user_id, top_comment_id) {
    var html = $('#comment-reply').html();
    $('#reply-holder-' + parent_id).html(html);
    $('#reply-holder-' + parent_id).show(html);
    $('#reply-holder-' + parent_id + " input.parent_comment_id").val(parent_id);
    $('#reply-holder-' + parent_id + " input.parent_user_id").val(parent_user_id);
    $('#reply-holder-' + parent_id + " input.top_level_comment_id").val(top_comment_id);
  }
});
   $vm.comment = comment;

}());