(function($){
  
  $.fn.jforum = function(options) {
    
    var opts = $.extend({}, $.fn.jforum.defaults, options);
          
    $(this).jdimlist(opts);
    
  };
  
  $.fn.jforum.reloadObjects = $.fn.jdimlist.reloadObjects;
  
  $.fn.jforum.setSelection = $.fn.jdimlist.setSelection;
  
  $.fn.jforum.setFirstSelection = $.fn.jdimlist.setFirstSelection;
  
})(jQuery);

$.fn.jforum.defaults = {
  data:{},
  columns:[],
  animation:{
    duration:"slow", 
    easing:"swing"
  },
  actions:[],
  maxFirstLevel:50,
  headers:true,
  objectText:true,
  objectSubmit:true,
  objectSubmitGenerator:function(e_obj_body, opts){
    var e_reply = $('<div class="jforum-reply jforum-reply-collapsed"></div>');
    $('<div class="jforum-reply-header"><div class="jfroum-reply-header-icon"></div></div>')
      .hover(
        function(e){
          $(this).addClass("jforum-reply-header-hover");
          this.style.cursor = "pointer"},
        function(e){
          $(this).removeClass("jforum-reply-header-hover");
          this.style.cursor = "default"})
      .click(function(e){
        var thisReply = $(this).parent();
        var thisBody = $(this).next();
        thisBody.animate(
          {
            height : "toggle", 
            opacity : "toggle"
          }, 
          "slow", 
          "swing", 
          function(){
            if(thisReply.hasClass("jforum-reply-collapsed")) {
              thisReply.removeClass("jforum-reply-collapsed").addClass("jforum-reply-expanded");
            } else {
              thisReply.removeClass("jforum-reply-expanded").addClass("jforum-reply-collapsed");
            }
          }
        );
      })
      .appendTo(e_reply);
      
    var e_body = $('<div class="jforum-reply-body"></div>');
    
    var submitFields = [];
    
    var e_inputFields = $('<div class="jforum-reply-datainput"></div>').appendTo(e_body);
    var columns = opts.columns;
    for(var i=0; i<columns.length; i++) {
      var column = columns[i];
      if(column.submitable) {
        submitFields[submitFields.length] = 
          $('<input type="text" name="' + column.dataField + '" value="' + column.name + '" />').appendTo(e_inputFields);
      }
    }
    e_inputFields.appendTo(e_body);
    
    var e_inputText = $('<div class="jforum-reply-textinput"></div>');
    submitFields[submitFields.length] = 
      $('<textarea name="text"></textarea>').appendTo(e_inputText);
    e_inputText.appendTo(e_body);
    
    $('<button name="Send">Send</button>')
      .click(function(e){
        var e_context = $(this).parent().parent().parent();
        var parentID = e_context.hasClass("jdimlist") ? 0 : e_context.parent().attr("id"); //Set parent ID to 0 if this is the top level submit
        var submitParams = {};
        for(var i=0; i<submitFields.length; i++) {
          submitParams[submitFields[i].attr("name")] = submitFields[i].val();
        }
        opts.onSubmit(e, submitParams, parentID)})
      .appendTo(e_body);
      
    e_body.appendTo(e_reply);
    
    e_reply.appendTo(e_obj_body);
    
    return true;
  },
  onSubmit:function(e, submitParams, parentID){}, //parentID = 0 if top level submit
  subObjects:true,
  navigation:true,
  sortable:false,
  reorganizable:false
};
