// AJAX Comments
// Copyright 2008 Jason Mohr
// www.jason-mohr.com

var AJC_CONF_PAGE = "ajaxComments.php";

var Ajc_ElementCommentBox;
var Ajc_ElementMessageBox;
var Ajc_NumComments;
var Ajc_NumCommentsPosted;
var Ajc_ObjXmlHttp;
var Ajc_OutputCompleteMsg;
var Ajc_OutputDefault;
var Ajc_OutputElement;
var Ajc_OutputHtml;
var Ajc_OutputHtmlMessage;
var Ajc_OutputMessage;
var Ajc_Submit_DataComment;
var Ajc_Submit_DataName;
var Ajc_VideoId;

function Ajc_Data_LoadAll()
{
	if (document.getElementById("LeaveCommentOutputMessage") != null)
		document.getElementById("LeaveCommentOutputMessage").innerHTML = "Loading comments...";
	
	var Url = AJC_CONF_PAGE + "?action=select&id=" + Ajc_VideoId + "&uid=" + Math.random();
	Ajc_ObjXmlHttp = Ajc_GetAjax();
	Ajc_ObjXmlHttp.onreadystatechange = Ajc_Data_LoadAll_StateChanged;
	Ajc_ObjXmlHttp.open("GET", Url, true);
	Ajc_ObjXmlHttp.send(null);
}

function Ajc_Data_LoadAll_DisplayHtml()
{
	if (document.getElementById(Ajc_OutputElement) != null && Ajc_OutputHtml != null)
	{
		document.getElementById(Ajc_OutputElement).innerHTML = Ajc_OutputHtml;
		if (Ajc_NumComments > 0)
		{
			document.getElementById(Ajc_OutputElement).style.display = "block";
			if (document.getElementById(Ajc_OutputDefault) != null)
				document.getElementById(Ajc_OutputDefault).style.display = "none";
		}
	}
	if (document.getElementById(Ajc_OutputMessage) != null && Ajc_OutputHtmlMessage != null)
		document.getElementById(Ajc_OutputMessage).innerHTML = Ajc_OutputHtmlMessage;
	if (document.getElementById("LeaveCommentOutputMessage") != null)
	{
		if (Ajc_OutputHtml == null || Ajc_OutputHtmlMessage == null)
			document.getElementById("LeaveCommentOutputMessage").innerHTML = "Error loading comments.";
		else
			document.getElementById("LeaveCommentOutputMessage").style.display = "none";
	}
}

function Ajc_Data_LoadAll_StateChanged()
{
	var ArrData_Comments = [], ArrData_Names = [], ArrData_Times = [];
	var a = 0, Errors = false, NumCommentsWritten = 0, Separator = "";
	
	if (Ajc_ObjXmlHttp.readyState == 4 || Ajc_ObjXmlHttp.readyState == "complete")
	{
		if (Ajc_ObjXmlHttp.responseText.indexOf("OK!") == 0 && Ajc_ObjXmlHttp.responseText.indexOf("END!") >= 3)
		{
			Separator = Ajc_ObjXmlHttp.responseText.substr(Ajc_ObjXmlHttp.responseText.indexOf("SEP=") + 4, Ajc_ObjXmlHttp.responseText.substr(Ajc_ObjXmlHttp.responseText.indexOf("SEP=") + 4).indexOf("\n"));
			DataText = Ajc_ObjXmlHttp.responseText.substr(Ajc_ObjXmlHttp.responseText.indexOf(Separator) + Separator.length + 1).substr(0, Ajc_ObjXmlHttp.responseText.substr(Ajc_ObjXmlHttp.responseText.indexOf(Separator) + Separator.length + 1).indexOf("END!") - 1);
			
			DataTextLines = DataText.split('\n');
			if (DataTextLines.length > 0)
				for (a = 0; a < DataTextLines.length; a++)
				{
					TempLine = DataTextLines[a].split(Separator);
					if (TempLine.length == 5)
					{
						ArrData_Times[a] = TempLine[1];
						ArrData_Names[a] = TempLine[2];
						ArrData_Comments[a] = TempLine[3];
					}
				}
			else
				Errors = true;
		}
		else
			Errors = true;
		
		Ajc_OutputHtml = "<div id=\"LeaveCommentOutputMessage\"></div><div class=\"Rel\"><div class=\"Rel\" id=\"Ajc_AddComments\"></div>";
		if (Errors == false)
		{
			for (a = ArrData_Times.length - 1; a >= 0; a--)
				if (ArrData_Comments[a] != null && ArrData_Comments[a] != "" && ArrData_Times[a] != null && ArrData_Times[a] != "")
				{
					if (a < ArrData_Times.length - 1)
						Ajc_OutputHtml += "<div class=\"Rel\"><hr align=\"left\" class=\"Ajc_CommentBox_Hr\" color=\"#CCCCCC\" noshade=\"noshade\" size=\"1\" width=\"350\" /></div>";
					Ajc_OutputHtml += "<div class=\"Ajc_CommentBox\"><div class=\"Ajc_CommentBox_Comment\">" + ArrData_Comments[a] + "</div><div class=\"Ajc_CommentBox_Info\">Posted by <span class=\"Ajc_CommentBox_Name\">";
					if (ArrData_Names[a] == null || ArrData_Names[a] == "")
						Ajc_OutputHtml += "Anonymous";
					else
						Ajc_OutputHtml += ArrData_Names[a];
					Ajc_OutputHtml += "</span> at " + ArrData_Times[a] + "</div></div>";
					NumCommentsWritten++;
				}
			
			if (NumCommentsWritten > 0)
			{
				Ajc_OutputHtmlMessage = NumCommentsWritten + " comment";
				if (NumCommentsWritten > 1)
					Ajc_OutputHtmlMessage += "s";
			}
			else
				Ajc_OutputHtmlMessage = "No comments";
				
			Ajc_NumComments = NumCommentsWritten;
		}
		Ajc_OutputHtml += "</div>";
		
		Ajc_Data_LoadAll_DisplayHtml();
	}
}

function Ajc_Display_AltLeave(LeaveCommentBoxId)
{
	var ObjL = document.getElementById(LeaveCommentBoxId);
	if (ObjL.style.display != "block")
		ObjL.style.display = "block";
	else
		ObjL.style.display = "none";
	if (document.getElementById(Ajc_ElementMessageBox) != null)
		document.getElementById(Ajc_ElementMessageBox).style.display = "none";
}

function Ajc_GetAjax()
{
	var ObjXmlHttp = null;
	
	try
	{
		ObjXmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			ObjXmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			ObjXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	
	return ObjXmlHttp;
}

function Ajc_Init(VideoId, OutputElement, OutputMessage, ElementCommentBox, ElementMessageBox, OutputDefault)
{
	Ajc_ElementCommentBox = ElementCommentBox;
	Ajc_ElementMessageBox = ElementMessageBox;
	Ajc_NumCommentsPosted = 0;
	Ajc_OutputDefault = OutputDefault;
	Ajc_OutputElement = OutputElement;
	Ajc_OutputMessage = OutputMessage;
	Ajc_VideoId = VideoId;
	
	Ajc_ObjXmlHttp = Ajc_GetAjax();
}

function Ajc_Submit(Name, Comment)
{
	var Parameters = "";
	
	Ajc_Submit_DataComment = Comment.value;
	Ajc_Submit_DataName = Name.value;
	
	if (Ajc_Submit_DataComment.length == 0)
		alert("Please enter a comment before posting.");
	else
	{
		if (document.getElementById(Ajc_ElementCommentBox) != null)
			document.getElementById(Ajc_ElementCommentBox).style.display = "none";
		if (document.getElementById(Ajc_ElementMessageBox) != null)
		{
			document.getElementById(Ajc_ElementMessageBox).style.display = "block";
			document.getElementById(Ajc_ElementMessageBox).innerHTML = "Posting your comment...";
		}
		
		Parameters = "name=" + encodeURI(Ajc_Submit_DataName) + "&comment=" + encodeURI(Ajc_Submit_DataComment);
		
		Ajc_ObjXmlHttp = Ajc_GetAjax();
		Ajc_ObjXmlHttp.onreadystatechange = Ajc_Submit_StateChanged;
		Ajc_ObjXmlHttp.open("POST", AJC_CONF_PAGE + "?action=insert&id=" + Ajc_VideoId + "&uid=" + Math.random(), true);
		Ajc_ObjXmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		Ajc_ObjXmlHttp.setRequestHeader("Content-length", Parameters.length);
		Ajc_ObjXmlHttp.setRequestHeader("Connection", "close");
		Ajc_ObjXmlHttp.send(Parameters);
		
		Comment.value = "";
	}
}

function Ajc_Submit_PrintMessage()
{
	document.getElementById(Ajc_ElementMessageBox).innerHTML = "";
	document.getElementById(Ajc_ElementMessageBox).style.display = "none";
	Ajc_ObjXmlHttp = Ajc_GetAjax();
	Ajc_ObjXmlHttp.onreadystatechange = Ajc_Submit_PrintMessage_StateChanged;
	Ajc_ObjXmlHttp.open("GET", AJC_CONF_PAGE + "?action=message", true);
	Ajc_ObjXmlHttp.send(null);
}

function Ajc_Submit_PrintMessage_Show()
{
	document.getElementById(Ajc_ElementMessageBox).style.display = "block";
	document.getElementById(Ajc_ElementMessageBox).innerHTML = Ajc_OutputCompleteMsg;
}

function Ajc_Submit_PrintMessage_StateChanged()
{
	if (Ajc_ObjXmlHttp.readyState == 4 || Ajc_ObjXmlHttp.readyState == "complete")
	{
		if (Ajc_ObjXmlHttp.responseText.indexOf("OK!") == 0 && Ajc_ObjXmlHttp.responseText.indexOf("END!") >= 3)
		{
			ResultData = Ajc_ObjXmlHttp.responseText.split("\n");
			if (ResultData[0].indexOf("OK!") >= 0)
			{
				Ajc_OutputCompleteMsg = ResultData[1];
				Ajc_Submit_PrintMessage_Show();
			}
		}
	}
}

function Ajc_Submit_StateChanged()
{
	var sOutputHtml = "";

	if (Ajc_ObjXmlHttp.readyState == 4 || Ajc_ObjXmlHttp.readyState == "complete")
		if (Ajc_ObjXmlHttp.status == 200)
		{
			var IsPlural = false, ResultData = [], UpdateCount = -1, UpdateText = "";
			
			if (Ajc_ObjXmlHttp.responseText.indexOf("OK!") == 0 && Ajc_ObjXmlHttp.responseText.indexOf("END!") >= 3)
			{
				ResultData = Ajc_ObjXmlHttp.responseText.split("\n");
				
				if (document.getElementById(Ajc_ElementMessageBox) != null)
					Ajc_Submit_PrintMessage();
				if (document.getElementById("Ajc_AddComments") != null)
				{
					sOutputHtml = "<div id=\"LeaveCommentOutputMessage\"></div><div class=\"Ajc_CommentBox_HrDiv\"><hr align=\"left\" class=\"Ajc_CommentBox_Hr\" color=\"#CCCCCC\" noshade=\"noshade\" size=\"1\" width=\"350\" /></div><div class=\"Ajc_CommentBox\"><div class=\"Ajc_CommentBox_Comment\">" + ResultData[2] + "</div><div class=\"Ajc_CommentBox_Info\">Posted by <span class=\"Ajc_CommentBox_Name\">" + ResultData[1] + "</span> at " + ResultData[3] + "</div></div>";
					if (Ajc_NumCommentsPosted == 0)
						sOutputHtml += "<div><hr align=\"left\" class=\"Ajc_CommentBox_Hr\" color=\"#CCCCCC\" noshade=\"noshade\" size=\"1\" width=\"350\" /></div>";
					document.getElementById("Ajc_AddComments").innerHTML = sOutputHtml + document.getElementById("Ajc_AddComments").innerHTML;
					Ajc_NumCommentsPosted++;
				}
				if (document.getElementById(Ajc_OutputMessage) != null)
				{
					UpdateText = document.getElementById(Ajc_OutputMessage).innerHTML;
					if (isNaN(UpdateText.substr(0, UpdateText.indexOf(" "))))
						document.getElementById(Ajc_OutputMessage).innerHTML = "1 comment";
					else
						document.getElementById(Ajc_OutputMessage).innerHTML = (parseInt(UpdateText.substr(0, UpdateText.indexOf(" "))) + 1) + " comments";
				}
				if (document.getElementById(Ajc_OutputElement) != null)
				{
					document.getElementById(Ajc_OutputElement).style.display = "block";
					if (document.getElementById(Ajc_OutputDefault) != null)
						document.getElementById(Ajc_OutputDefault).style.display = "none";
				}
			}
			else if (Ajc_ObjXmlHttp.responseText.indexOf("ERR!") == 0)
			{
				if (document.getElementById(Ajc_ElementMessageBox) != null)
					document.getElementById(Ajc_ElementMessageBox).innerHTML = "Error posting comment.";
			}
		}
		else if (document.getElementById(Ajc_ElementMessageBox) != null)
			document.getElementById(Ajc_ElementMessageBox).innerHTML = "Error posting comment.";
}