

var dTableCount = {};
var dTable = {};

$(document).ready(function() {
    
    refreshId = startIntervalCheck();
    
    $('.commentSubmit').click(function() {
        clearInterval(refreshId); //pause interval
        
        var form = $(this).parents('form');
        var commentField =  $(form).find('[name=comment]');
        var comment =  commentField.val();
        var commentKey =  $(form).find('[name=commentKey]').val();
        var commentTopicID =  $(form).find('[name=commentTopicID]').val();
        var discussionTableID =  $(form).find('[name=discussionTableID]').val();
        
        
        $.post('/ajax-widget.php', { 'sidDir': sidDir,
                                     'widget': "discussion",
                                     'method': "addComment", 
                                     'comment': comment, 
                                     'commentKey': commentKey,
                                     'commentCount': dTableCount[commentKey] },
            function(data) {
        
                dTableCount[commentKey] = data.numComments;
                $("#discussionCount-"+discussionTableID).html(data.numComments);
                $.each(data.comments, function(index, comment) {
                    addDiscussionRow(commentKey,comment);
                });

        }, "json");
        
        commentField.val('');
        
        refreshId = startIntervalCheck();
        
        return false;
    });
    
    setInterval(function(){ updateAllTablePrettyDates(); }, 5000);

});

function setupDiscussionTable(commentKey,discussionTableID,numComments,enableRating) {
    dTableCount[commentKey] = parseInt(numComments);
    dTable[commentKey] = $('#'+discussionTableID).dataTable({
            "sPaginationType": "full_numbers",
            "aaSorting": [[ 0, "desc" ]],
            "aoColumns": [ 
    			{ "bVisible": false },
    			{ "bSortable": false },
    			{ "bSearchable": enableRating,
			      "bVisible":    enableRating }
    		]
    
            });
    updatePrettyDates(dTable[commentKey]);

    $("#viewTable-"+discussionTableID).click(function () {
        $("#discussion-"+discussionTableID).toggle("slow");
		$(this).toggleClass("commentOff");
		$(".commentOn").text("Hide Comments");
		$(".commentOff").text("Show Comments");
    });


    $("#discussionDataTable-"+discussionTableID).show(2000);

}

function addDiscussionRow(tableID,comment) {

    var commentStr = '<div class="comment-info"><span>'+comment.screenName+'</span>&nbsp;<span class="commentPrettyDate">'+prettyDate(comment.commentDate)+'</span></div><div class="comment">'+comment.comment+'</div>';

	dTable[tableID].fnAddData( [
		comment.commentDate,
		commentStr,
		comment.score ] );
}




function startIntervalCheck() {
    var refreshId = setInterval(function(){
        
        var tableCountJSON = $.toJSON(dTableCount);
        
        $.post('/ajax-widget.php', { 'sidDir': sidDir,
                                     'widget': "discussion",
                                     'method': "pollComments", 
                                     'tableCountJSON': tableCountJSON
                                 },
            function(data) {
                
                $.each(data, function(commentKey, commentData) {
                    dTableCount[commentKey] = commentData.numComments;
                    $("#discussionCount-"+commentData.discussionTableID).html(commentData.numComments);
                    $("#discussionCount-"+commentData.discussionTableID).effect('highlight');
                    $("#discussionLastDate-"+commentData.discussionTableID).html(commentData.lastComment.commentDate);
                    $("#discussionLastDate-"+commentData.discussionTableID).effect('highlight');
                    $("#discussionLastScreenName-"+commentData.discussionTableID).html(commentData.lastComment.screenName);
                    $("#discussionLastScreenName-"+commentData.discussionTableID).effect('highlight');
                    $.each(commentData.comments, function(index, comment) {
                        addDiscussionRow(commentKey,comment);
                    });
                });
                

        }, "json");
        
    }, 5000);
    
    
    
    return refreshId;
}


function updatePrettyDates(oTable) {
    var nodes = oTable.fnGetNodes();
    $.each(nodes, function(nindex, node) {
        aRowData = oTable.fnGetData(node);
        var newDate = prettyDate(aRowData[0]);
        if ( newDate )
                $(node).find('.commentPrettyDate').html(newDate);
    });
}

function updateAllTablePrettyDates() {
    $.each(dTable, function(index, oTable) {
        updatePrettyDates(oTable);
    });
}

/*
 * JavaScript Pretty Date
 * Copyright (c) 2008 John Resig (jquery.com)
 * Licensed under the MIT license.
 */

// Takes an ISO time and returns a string representing how
// long ago the date represents.
function prettyDate(time){
	var date = new Date((time || "").replace(/-/g,"/").replace(/[TZ]/g," ")),
		diff = (((new Date()).getTime() - date.getTime()) / 1000),
		day_diff = Math.floor(diff / 86400);
			
	if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
		return;
			
	return day_diff == 0 && (
			diff < 60 && "just now" ||
			diff < 120 && "1 minute ago" ||
			diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
			diff < 7200 && "1 hour ago" ||
			diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
		day_diff == 1 && "Yesterday" ||
		day_diff < 7 && day_diff + " days ago" ||
		day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
}

// If jQuery is included in the page, adds a jQuery plugin to handle it as well
if ( typeof jQuery != "undefined" )
	jQuery.fn.prettyDate = function(){
		return this.each(function(){
			var date = prettyDate(this.title);
			if ( date )
				jQuery(this).text( date );
		});
	};
