var CacheComments = (function(){
	var params = getParamObject();
	var articleId = params.content_id;
	var cachedCommentsJsonUrl = "/news/cachecomments.jsp?content_id=" +  articleId;
	var cachedCommentsObj = null;
	var ccommentsLinkText1 = " Comments at ";
	var ccommentsLinkText2 = " - View All &raquo;";
	var commentorProfileLink = "http://www.mlb.com/mlb/community/profile/index.jsp?ipid=";

	function getParamObject(){
		var q = document.location.search;
		if(q!=""){
			var p = {};
			q = ( q.substring(1) ).split("&");
			for(var x=0; x<q.length; x++){
				var tmp = q[x].split("=");
				switch( typeof p[tmp[0]] ){
					case "undefined" : p[tmp[0]] = tmp[1]; break;
					case "string"    : var _tmp = p[tmp[0]]; p[tmp[0]] = [_tmp,tmp[1]]; break;
					case "object"    : var _tmp = p[tmp[0]].length; p[tmp[0]][_tmp] = tmp[1]; break;
				}
			}
			return p;
		}
		else return null;
	}
	function cachedCommentsLoadHandler(data, textStatus){
		if($.trim(data) == "PluckFailure") {
			$("#article_comments").html("<div style='font-style: italic; padding: 10px 0px; text-align: center'>MLB.com comments will return shortly.  Thank you for your patience.</div>")
				.css("background-image", "none");
			$("#commentsTotalCount").parent().attr("href", "#");
			return;
		}
		var scriptTagIndex = data.indexOf("</sc"+"ript>");
		var filteredData = data.substring(scriptTagIndex+10);

		eval("cachedCommentsObj="+unescape(filteredData));
		
		if(cachedCommentsObj!=null){
			try{
				var ccommentsArr = filterCachedComments(cachedCommentsObj.ResponseBatch.Responses[0].CommentPage.Comments);
				var numberOfComments = cachedCommentsObj.ResponseBatch.Responses[0].CommentPage.NumberOfComments;
				var messageTimeArr = cachedCommentsObj.ResponseBatch.Messages[0].MessageTime.split(" ");
				messageTimeArr[1] = messageTimeArr[1].substring(0,5);
				if(numberOfComments=="0"){return false;}
				if(messageTimeArr[1].substring(0,1)=="0"){messageTimeArr[1] = messageTimeArr[1].substring(1);}
				$("#commentsTotalCount").html("("+numberOfComments+")");
				$("#article_ccomments_link a.write_comment").html(numberOfComments + ccommentsLinkText1 + messageTimeArr[1] + " " + messageTimeArr[2] + ccommentsLinkText2);
				$("#article_ccomments_link a.post_comment").show();
				
				for(var i=0;i<ccommentsArr.length;i++){
					var ccommentId = "#ccomment_" + (i + 1);
					$(ccommentId).show();
					$(ccommentId + " .Comments_From a").attr("href", commentorProfileLink + ccommentsArr[i].Author.UserKey.Key);
					$(ccommentId + " .Comments_From a").html(ccommentsArr[i].Author.DisplayName);
					$(ccommentId + " .Comments_CommentText").html(ccommentsArr[i].CommentBody);
					$(ccommentId + " .Comments_NestedDate").html(ccommentsArr[i].PostedAtTime);
				}
			}
			catch(e){throw e.message;}
		}
	}
	function loadCachedComments(){
		$.get(cachedCommentsJsonUrl, "", cachedCommentsLoadHandler, "text");
	}
	function filterCachedComments(comments){
		var filteredArr = [];
		try{
			for(var i=0;i<comments.length;i++){
				var aComment = comments[i];
				var isBlocked = aComment.Author.IsBlocked;
				var blockingState = aComment.ContentBlockingState;
				var abuseReportCount = parseInt(aComment.AbuseReportCount);
				if(
				   	aComment && 
					isBlocked=="False" && 
					blockingState=="Unblocked" && 
					abuseReportCount<4
				  ){
			  		aComment.CommentBody = aComment.CommentBody.replace(/([^\s-]{50})([^\s-]{25})/g, "$1- $2");//break words longer then 50 chars
					filteredArr[filteredArr.length]=comments[i];
				}
			}
		}
		catch(e){throw e.message;}
		return filteredArr;
	}

	return {
		init : function(){
			loadCachedComments();
		}
	}
})();
$(function(){CacheComments.init();});



