YAHOO.namespace("hcw");

var postColumns = [
  {key:"title", label:"Top Five", formatter:"threadid"}
];

var blogColumns = [
  {key:"title", label:"Top Five", formatter:"blogid"}
];

var postSchema = [
  {key:"count"},
  {key:"title"}, 
  {key:"threadid"}
];

var blogSchema = [
  {key:"count"},
  {key:"title"}, 
  {key:"blogid"}
];

var tableConfig = {
  initialLoad: false
};

YAHOO.widget.DataTable.Formatter.threadid = function(el, oRec, oCol, oData){
  threadid = oRec.getData("threadid");
  count = oRec.getData("count");

  el.innerHTML = "<a style=\"color:#555555; text-decoration: underline;\" href=\"/forums/showthread.php?t=" + threadid + "\">" + oData + " (" + count + " posts)</a>";
}

YAHOO.widget.DataTable.Formatter.blogid = function(el, oRec, oCol, oData){
  blogid = oRec.getData("blogid");
  count = oRec.getData("count");

  el.innerHTML = "<a style=\"color:#555555; text-decoration: underline;\" href=\"/forums/blog.php?b=" + blogid + "\">" + oData + " (" + count + " posts)</a>";
}

function createPostList(period, load)
{
  var query = "/forums/hotposts.php?do=gethotthreads&period=" + period;

  YAHOO.hcw.postsource[period] = new YAHOO.util.DataSource(query);
  YAHOO.hcw.postsource[period].responseType = YAHOO.util.DataSource.TYPE_JSON;
  YAHOO.hcw.postsource[period].responseSchema = {resultsList:"posts", fields:postSchema};

  tableConfig["initialLoad"] = load;

  YAHOO.hcw.posttable[period] = new YAHOO.widget.DataTable(period + "ttable", postColumns, YAHOO.hcw.postsource[period], tableConfig);
}

function createBlogList(period, load)
{
  var query = "/forums/hotposts.php?do=gethotblogs&period=" + period;

  YAHOO.hcw.blogsource[period] = new YAHOO.util.DataSource(query);
  YAHOO.hcw.blogsource[period].responseType = YAHOO.util.DataSource.TYPE_JSON;
  YAHOO.hcw.blogsource[period].responseSchema = {resultsList:"blogs", fields:blogSchema};

  tableConfig["initialLoad"] = load;

  YAHOO.hcw.blogtable[period] = new YAHOO.widget.DataTable(period + "btable", blogColumns, YAHOO.hcw.blogsource[period], tableConfig);
}

YAHOO.widget.Column.prototype.minWidth = 0;  // HACK to fix table bug with tabs

function handlePostTabClick(e){
  var period = e.newValue.get("label").toLowerCase();
  var cb = {
    success:YAHOO.hcw.posttable[period].onDataReturnInitializeTable,
    failure:YAHOO.hcw.posttable[period].onDataReturnInitializeTable,
    scope:YAHOO.hcw.posttable[period]
  };

  YAHOO.hcw.postsource[period].sendRequest("", cb);
}

function handleBlogTabClick(e){
  var period = e.newValue.get("label").toLowerCase();
  var cb = {
    success:YAHOO.hcw.blogtable[period].onDataReturnInitializeTable,
    failure:YAHOO.hcw.blogtable[period].onDataReturnInitializeTable,
    scope:YAHOO.hcw.blogtable[period]
  };

  YAHOO.hcw.blogsource[period].sendRequest("", cb);
}

function init() {
  YAHOO.hcw.postView = new YAHOO.widget.TabView('hotposts', {orientation:"bottom"});
  YAHOO.hcw.postView.on("activeTabChange", handlePostTabClick);

  YAHOO.hcw.blogView = new YAHOO.widget.TabView('hotblogs', {orientation:"bottom"});
  YAHOO.hcw.blogView.on("activeTabChange", handleBlogTabClick);

  YAHOO.hcw.postsource = new Object;
  YAHOO.hcw.posttable = new Object;
  YAHOO.hcw.blogsource = new Object;
  YAHOO.hcw.blogtable = new Object;
	
  createPostList("day", true);  
  createPostList("week", false);  
  createPostList("month", false)
  createPostList("year", false);

  createBlogList("day", true);  
  createBlogList("week", false);  
  createBlogList("month", false)
  createBlogList("year", false);
}

YAHOO.util.Event.onDOMReady(init);

