// JavaScript Document
var gImageCache = new Array();

// Last Locate Comment
var gLastLocateComment = 0;

// Navigate Comments
var gNavForward = 0;
var gNavBackward = 0;

function getElementPosition(elemID) {
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {left:offsetLeft, top:offsetTop};
}

function AlternateDisplay(ElementId)
{
	var ElementRef = document.getElementById(ElementId);
	
	ElementRef.style.display = (ElementRef.style.display == "none") ? "block" : "none";
}

function DelayedHash(WhereTo)
{
	//location.hash = WhereTo;
	document.getElementById(WhereTo).scrollIntoView(true);
}

function AlternateTextDisplay(TextElementID, LoadedFlagID, iFrameID, CommentID, TextID)
{
	var LoadedRef = document.getElementById(LoadedFlagID);
	var ElementRef = document.getElementById(TextElementID);
	var TextRef = document.getElementById(TextID);
	
	//var TheText = new String(TextRef.inerText);

	var LoadedFlag = document.getElementById(LoadedFlagID);
	
	if (LoadedFlag.value == "0") {
		var iFrameRef = document.getElementById(iFrameID);
		iFrameRef.src = "FxPage.asp?asppage=FxCommentText.asp&subjectid=2&commentid=" + CommentID + "&textid=" + TextID + "&loadedflagid=" + LoadedFlagID;
	}

	if (ElementRef.style.display == "none") {
		ElementRef.style.display = "block";
	} else {
		ElementRef.style.display = "none";
	}
}

function CacheTreeImages()
{
	AddImageToCache(1, 	"IMAGES/closedthread.gif");
	AddImageToCache(2, 	"IMAGES/openthreadtail.gif");
	
	AddImageToCache(3, 	"IMAGES/tailclosedthread.gif");
	AddImageToCache(4, 	"IMAGES/tailopenthreadtail.gif");
	
	AddImageToCache(5, 	"IMAGES/tail.gif");
	AddImageToCache(6, 	"IMAGES/longtail.gif");
}

function AlternateImageLink(ImageId, ImagePair, ElementId, TailCellID, ImageCellID)
{
	var ElementRef = document.getElementById(ElementId);
	var ImageRef = document.getElementById(ImageId);
	var CellRef = document.getElementById(TailCellID);
	var ImageCell = document.getElementById(ImageCellID);
	
	var IsVisible = (ElementRef.style.display == "none");
	
	if (ElementRef != null) {
		ElementRef.style.display = IsVisible ? "block" : "none";
	}

	if (CellRef != null) {
		CellRef.background = IsVisible ? gImageCache[5].src : "";
	}
	
	if (ImageCell != null) {
		ImageCell.background = IsVisible ? gImageCache[6].src : "";
	}

	if (ImageRef != null) {
		switch (ImagePair) {
		case "thread":
		   ImageRef.src = IsVisible ? gImageCache[2].src : gImageCache[1].src;
		   break;
		   
		case "tailthread" :
		   ImageRef.src = IsVisible ? gImageCache[4].src : gImageCache[3].src;
		   break;
		}
	}
}

function AddImageToCache(ImageKey, ImageSource)
{
	gImageCache[ImageKey] = new Image();
	gImageCache[ImageKey].src = ImageSource;
}

var gForumConditions;
function ShowForumConditions()
{
	if (gForumConditions) {
		gForumConditions.close;
	}
	
	gForumConditions = window.open("KtDoc_ForumConditions.htm", "subWindow",
		"menubar=0,status=0,toolbar=0,location=0,resizable=1,scrollbars=1" + 
		",left=100,top=100,height=500,width=500");
	
	gForumConditions.focus();
}

var cSeparator = "<img src=\"IMAGES/separator.jpg\" width=\"2\" height=\"18\" hspace=\"1\" vspace=\"0\" border=\"0\">";

var cImageCellID = 0;
var cShowChildrenTitle = 1;
var cChildrenCount = 2;
var cImageID = 3;
var cRootNode = 4;
var cChildrenTableID = 5;
var cTailCellID = 6;
var cTitle = 7;
var cTextLength = 8;
var cTextElementID = 9;
var cLoadedFlagID = 10;
var ciFrameID = 11;
var cID = 12;
var cTextID = 13;
var cSubjectID = 14;
var cAdminObject = 15;
var cState = 16;
var cNickname = 17;
var cFormatedSubmitDate = 18;
var cParent = 19;
var cUserId = 20;
var cDepth = 21;
var cBackForNode = 22;
var cEmail = 23;
var cRtl = 24;
var cStandAlone = 25;

var cCommentWidth = 600;

function WriteComment(CA, Index)
{
	var CommentText =
	"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
	  "<tr>" +
	    "<td id=\"" + CA[Index][cImageCellID] +"\" valign=\"top\" background=\"" +
		((CA[Index][cShowChildrenTitle] && (CA[Index][cChildrenCount] > 0)) ? "IMAGES/longtail.gif" : "") + "\">" + 
		NodeImage(CA[Index][cImageID], !CA[Index][cRootNode], (CA[Index][cChildrenCount] > 0), CA[Index][cChildrenTableID], CA[Index][cTailCellID], CA[Index][cImageCellID], CA[Index][cShowChildrenTitle]) + 
		"</td>\n" +
		"<td width=\"100%\">" +
		  "<table width=\"" + cCommentWidth + "\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">" +
            "<tr>" +
              "<td name=\"TCC" + CA[Index][cID] + "\" id=\"TCC" + CA[Index][cID] + "\" class=\"fx_titlecontainercell\">" +
				"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">" +
			      "<tr>" +
					"<td height=\"18\" valign=\"bottom\" nowrap>" + 
					TreeTitle(CA[Index][cTitle], (CA[Index][cTextLength] > 0 ? CA[Index][cTextElementID] : ""), CA[Index][cLoadedFlagID], CA[Index][ciFrameID], CA[Index][cID], CA[Index][cTextID]) + 
					"</td>\n";
						
	if ((CA[Index][cChildrenCount] > 0) && !CA[Index][cStandAlone]) {
		CommentText +=
					"<td width=\"1\">" + cSeparator + "</td>" +			
					"<td valign=\"bottom\" nowrap>" + 
					  "<span class=\"fx_commentstatistics\">";
		if (CA[Index][cChildrenCount] == 1) {
			CommentText += cOneReply;
		} else {
			CommentText += CA[Index][cChildrenCount].toString() + " " + cReplies;
		}
		CommentText += "</span>" + 
					"</td>\n";
	}
							
	if (CA[Index][cTextLength] == 0) {
		CommentText +=
					"<td width=\"1\">" + cSeparator + "</td>" +			
					"<td nowrap>" + AddCommentLink(CA, Index) + "</td>\n";
	}
							
	if (CA[Index][cAdminObject] && (CA[Index][cState] == 0 || CA[Index][cState] == 2)) {
		CommentText +=
					"<td width=\"1\">" + cSeparator + "</td>" +			
					"<td nowrap>" + AddApproveLink(CA[Index][cID], CA[Index][cSubjectID]) + "</td>\n";
	}
							
	if (CA[Index][cAdminObject] && (CA[Index][cState] == 0 || CA[Index][cState] == 1)) {
		CommentText +=
					"<td width=\"1\">" + cSeparator + "</td>" +			
					"<td nowrap>" + AddBlockLink(CA[Index][cID], CA[Index][cSubjectID]) + "</td>\n";
	}
							
	if (CA[Index][cAdminObject]) {
		CommentText +=
					"<td width=\"1\">" + cSeparator + "</td>" +			
					"<td nowrap>" + AddDeleteLink(CA[Index][cID], CA[Index][cSubjectID]) + "</td>\n";
	}
							
	CommentText +=	"<td width=\"100%\">&nbsp;</td>" +
					"<td width=\"1\">" + cSeparator + "</td>" +
					"<td valign=\"bottom\" align=\"right\" nowrap>" +
					  "<table width=\"130\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" +
					    "<tr>" +
						  "<td nowrap>\n";
							  
	if (CA[Index][cUserId] > 0) {
		CommentText +=		"<span class=\"fx_commentusernickname\">" + CA[Index][cNickname] + "</span>";
	} else {
		CommentText +=		"<span class=\"fx_commentnickname\">" + CA[Index][cNickname] + "</span>";
	}
	
	CommentText +=		  "</td>" +
						"</tr>" +
					  "</table>" +
					"</td>" +
					"<td width=\"1\">" + cSeparator + "</td>" +
					"<td valign=\"bottom\" align=\"left\" width=\"0%\" nowrap><span class=\"fx_commentdate\" dir=\"ltr\">" + 
					CA[Index][cFormatedSubmitDate] + 
					"</span></td>" +
				  "</tr>" +
				"</table>" +
			  "</td>" +
            "</tr>" +
          "</table>" +
		"</td>" +
	  "</tr>\n";
	
	if (CA[Index][cAdminObject]) {
		if ((CA[Index][cEmail]).length > 0) {
		CommentText +=
	  "<tr>" +
		"<td align=\"left\" valign=\"top\" background=\"" + ((CA[Index][cChildrenCount] > 0) ? "IMAGES/tail.gif" : "") + "\">&nbsp;</td>" +
		"<td>\n" + 
		  "<table class=\"fx_textcontainertable\" width=\"" + cCommentWidth + "\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">" +
		    "<tr>" +
			  "<td>&nbsp;&nbsp;&nbsp;</td>" +
			  "<td width=\"100%\" class=\"fx_textcontainercell\">" +
				"<table class=\"fx_texttable\" width=\"100%\"  border=\"0\" cellspacing=\"1\" cellpadding=\"2\">" +
                  "<tr>" +
                    "<td class=\"fx_addcommentcell\">" + CA[Index][cEmail] + "</td>" +
                  "</tr>" +
                "</table>" +
			  "</td>" +
			"</tr>" +
		  "</table>" +
		"</td>" +
	  "</tr>\n";
		}
	}
	
	CommentText += "</table>";

	if (CA[Index][cTextLength] > 0) {
		CommentText +=
	"<div id=\"" + CA[Index][cTextElementID] + "\" style=\"display:none\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
	  "<tr>" +
		"<td width=24 id=\"" + CA[Index][cTailCellID] +"\" background=\"" + ((CA[Index][cChildrenCount] > 0) ? "IMAGES/tail.gif" : "") + "\">&nbsp;</td>" +
		"<td>\n" + 
		  "<table class=\"fx_textcontainertable\" width=\"" + cCommentWidth + "\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">" +
		    "<tr>" +
			  "<td>&nbsp;&nbsp;&nbsp;</td>" +
			  "<td width=\"100%\" class=\"fx_textcontainercell\">" +
				"<table class=\"fx_texttable\" width=\"100%\"  border=\"0\" cellspacing=\"1\" cellpadding=\"2\">" +
                  "<tr>" +
                    "<td class=\"fx_addcommentcell\">" + AddCommentLink(CA, Index) + "</td>" +
                  "</tr>" +
                  "<tr style=\"display:none\">" +
                    "<td>\n" +
					  "<input type=\"text\" name=\"" + CA[Index][cLoadedFlagID] + "\" id=\"" + CA[Index][cLoadedFlagID] + "\" value=\"0\">" +
					  "<iframe id=\"" + CA[Index][ciFrameID] + "\"></iframe>" +
					"</td>" +
                  "</tr>" +
                  "<tr>" +
                    "<td class=\"fx_textcell\" dir=\"" + (CA[Index][cRtl] ? "rtl" : "ltr") + "\">" +
					  "<span id=\"" + CA[Index][cTextID] + "\" class=\"fx_text\">" + cLoading + "</span>" +
					"</td>" +
                  "</tr>\n" +
                "</table>" +
			  "</td>" +
			"</tr>" +
		  "</table>" +
		"</td>" +
	  "</tr></table></div>\n";
	}
			  	
	if ((CA[Index][cChildrenCount] > 0) && !CA[Index][cStandAlone]) {
		CommentText +=
	"<div id=\"" + CA[Index][cChildrenTableID] + "\" style=\"" + (CA[Index][cShowChildrenTitle] ? "display:block" : "display:none") + "\"><table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
	  "<tr>" +
		"<td width=\"100%\">" +
		  "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
		
		if (CA[Index][cBackForNode]) {
			CommentText += "<tr><td align=\"left\" valign=\"top\">" + TreeImage("tailend.gif", "") + "</td><td width=\"100%\">";
			// empty buffer
			document.write(CommentText);
			// write link to child/children
			WriteCommentLink(CA, Index, true);
			// restart buffer
			CommentText = "</td></tr>\n";
		} else {
			var j = 0;
			
			for (var i = 0; i < CA.length; i++) {
				if (CA[i][cParent] == CA[Index][cID]) {
					j++;
					
					CommentText += "<tr><td align=\"left\" valign=\"top\" " + ((j < CA[Index][cChildrenCount]) ? "background=\"IMAGES/tail.gif\"" : "") + ">" + TreeImage((j == CA[Index][cChildrenCount]) ? "tailend.gif" : "tailbranche.gif", "") + "</td><td width=\"100%\">";
					// empty buffer
					document.write(CommentText);
					// write child/children comment(s)
					WriteComment(CA, i);
					// restart buffer
					CommentText = "</td></tr>\n";
				}
			}
		}
		
		CommentText +=
		  "</table>" +
		"</td>" +
	  "</tr>" +
	"</table></div>\n";
	}

	document.write(CommentText);
}

function WriteCommentLink(CA, Index, Forward)
{
	var CommentText =
	"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">" +
	  "<tr>" +
	    "<td valign=\"top\"" + (Forward ? "" : " background=\"IMAGES/longtail.gif\"") + "><a href=\"#\" onClick=\"GotoPage('FxBrowseSubject.asp&" + (Forward ? "forward" : "backward") + "=" + CA[Index][cID] + "&subjectid=2'); return(false);\">" + (Forward ? TreeImage("forward.gif", "") : TreeImage("back.gif", "")) + "</a></td>\n" +
		"<td width=\"100%\">" +
		  "<table width=\"" + cCommentWidth + "\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">" +
            "<tr>" +
              "<td class=\"fx_forwardcontainercell\">" +
				"<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"3\">" +
			      "<tr>" +
					"<td height=\"18\" valign=\"bottom\" nowrap>" + 
					"<a class=\"fx_forwardtitlelink\" href=\"#\" onClick=\"GotoPage('FxBrowseSubject.asp&" + (Forward ? "forward" : "backward") + "=" + CA[Index][cID] + "&subjectid=2'); return(false);\">" + (Forward ? cMoreMessages : cPreviousMessages) + "</a>" + 
					"</td>" +
	            	"<td width=\"100%\">&nbsp;</td>" +
				  "</tr>" +
				"</table>" +
			  "</td>" +
            "</tr>" +
          "</table>" +
		"</td>" +
	  "</tr>";
	
	if (!Forward) {
		CommentText +=
	  "<tr>" +
		"<td colspan=\"2\" width=\"100%\">" +
		  "<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n" +
			"<tr><td align=\"left\" valign=\"top\">" + TreeImage("tailend.gif" ,"") + "</td><td width=\"100%\">";
			// empty buffer
			document.write(CommentText);
			// write child/children comment(s)
			WriteComment(CA, Index);
			// restart buffer
			CommentText = 
			"</td></tr>\n" +
		  "</table>" +
		"</td>" +
	  "</tr>";
	}
	
	CommentText += "</table>\n";
	
	document.write(CommentText);
}

function TreeTitle(Title, TextElementID, LoadedFlagID, iFrameID, CommentID, TextID)
{
	if (TextElementID.length > 0) {
		return("<a name=\"ANM" + CommentID + "\" id=\"ANM" + CommentID + "\" class=\"fx_commenttitlelink\" href=\"#\" onClick=\"AlternateTextDisplay('" + TextElementID + "', '" + LoadedFlagID + "', '" + iFrameID + "', '" + CommentID + "', '" + TextID + "'); return(false);\">" + 
			Title + 
			"</a>");
	} else {
		return("<span name=\"ANM" + CommentID + "\" id=\"ANM" + CommentID + "\" class=\"fx_commenttitle\">" +
			Title +
			"</span>");
	}
}

function NodeImage(ImageID, HasParent, HasChildren, ChildrenTableID, TailCellID, ImageCellID, ShowChildrenTitle)
{
	if (HasParent) {
		if (HasChildren) {
			if (ShowChildrenTitle) {
				return(TreeImageLink(ImageID, "tailopenthreadtail.gif", ChildrenTableID, "tailthread", TailCellID, ImageCellID));
			} else {
				return(TreeImageLink(ImageID, "tailclosedthread.gif", ChildrenTableID, "tailthread", TailCellID, ImageCellID));
			}
		} else {
			return(TreeImage("tailopenthread.gif", ImageID));
		}
	} else {
		if (HasChildren) {
			if (ShowChildrenTitle) {
				return(TreeImageLink(ImageID, "openthreadtail.gif", ChildrenTableID, "thread", TailCellID, ImageCellID));
			} else {
				return(TreeImageLink(ImageID, "closedthread.gif", ChildrenTableID, "thread", TailCellID, ImageCellID));
			}
		} else {
			return(TreeImage("openthread.gif", ImageID));
		}
	}
}

function TreeImageLink(ImageID, ImageName, ChildrenTableID, ImagePair, TailCellID, ImageCellID)
{
	return("<a href=\"#\" onClick=\"AlternateImageLink('" + ImageID + "', '" + ImagePair + "', '" + ChildrenTableID + "', '" + TailCellID + "', '" + ImageCellID + "'); return(false);\">" +
		TreeImage(ImageName, ImageID) +
		"</a>");
}

function TreeImage(ImageName, ImageID)
{
	if (ImageID.length > 0) {
		return("<img name=\"" + ImageID + "\" id=\"" + ImageID + "\" src=\"IMAGES/" + ImageName + "\" width=\"24\" height=\"24\" border=\"0\">");
	} else {
		return("<img src=\"IMAGES/" + ImageName + "\" width=\"24\" height=\"24\" border=\"0\">");
	}
}

function AddCommentLink(CA, Index)
{
	if (CA[Index][cStandAlone]) {
		return("<a class=\"fx_addcommentlink\" href=\"#\" OnClick=\"GotoPage('FxBrowseSubject.asp&locateref=" + CA[Index][cID] + "&subjectid=" + CA[Index][cSubjectID] + "'); return(false);\">" + cGotoThread + "</a>");
	} else {
		return("<a class=\"fx_addcommentlink\" href=\"#\" OnClick=\"GotoPage('FxNewComment.asp&parentid=" + CA[Index][cID] + "&subjectid=" + CA[Index][cSubjectID] + "'); return(false);\">" + cReplyToThis + "</a>");
	}
}

function AddApproveLink(CommentId, SubjectId)
{
	return("<a href=\"#\" OnClick=\"GotoPage('FxAdminNewComments.asp&approvecomment=" + CommentId + "&subjectid=" + SubjectId + "'); return(false);\"><span style=\"color:#00FF00; font-weight:bold\">Approve<span></a>");
}

function AddBlockLink(CommentId, SubjectId)
{
	return("<a href=\"#\" OnClick=\"GotoPage('FxAdminNewComments.asp&blockcomment=" + CommentId + "&subjectid=" + SubjectId + "'); return(false);\"><span style=\"color:#0000FF; font-weight:bold\">Block<span></a>");
}

function AddDeleteLink(CommentId, SubjectId)
{
	return("<a href=\"#\" OnClick=\"if (ShowYesNoDialog('You are about to delete a comment.')) GotoPage('FxBrowseSubject.asp&deletecomment=" + CommentId + "&subjectid=" + SubjectId + "'); return(false);\"><span style=\"color:#FF0000; font-weight:bold\">Delete<span></a>");
}

function LocateComment(CommentId, HasText)
{
	var IdString = CommentId.toString();
	var ElementRef = document.getElementById('TXT' + IdString);
	
	if (gLastLocateComment != 0) {
		document.getElementById('TCC' + gLastLocateComment).className = 'fx_titlecontainercell';
	}
	
	gLastLocateComment = CommentId;
	
	if (HasText) {
		if (ElementRef.style.display == "none") {
			AlternateTextDisplay('TXT' + IdString, 'LDF' + IdString, 'IFM' + IdString, IdString, 'TID' + IdString);
		}
		document.getElementById('TXT' + IdString).scrollIntoView(false);
	} else {
		document.getElementById('ANM' + IdString).scrollIntoView(false);
	}
	document.getElementById('TCC' + IdString).className = 'fx_highlighcontainercell';
}

function JumpToComment(CommentId, MsgArray)
{
	var i;

	for (var i = 0; i < MsgArray.length; i++) {
		if (MsgArray[i][cID] == CommentId) {
			LocateComment(MsgArray[i][cID], (MsgArray[i][cTextLength] > 0));
			return;
		}
	}
	
	GotoPage("FxBrowseSubject.asp&locateref=" + CommentId + "&subjectid=2");
}

function NavigateForum(NavPage)
{
	if (NavPage < 0) {
		GotoPage("FxBrowseSubject.asp&subjectid=2&forward=" + Math.abs(NavPage));
	} else {
		GotoPage("FxBrowseSubject.asp&subjectid=2&forumpage=" + NavPage)
	}
}

function ShowYesNoDialog(DlgArguments)
{
	var DialogValue;
 
	DialogValue = showModalDialog("SSI/AspSmithYesNoDialog.htm", DlgArguments, "status:no; resizable:yes");
	 
	return(DialogValue);
}
