﻿// Rev: $Id: forum.js 3208 2008-11-15 11:19:05Z uri $

var forum_msgDepths		= new Array(),
	forum_openMsgs		= new Array(),
	forum_msgIds		= new Array(),
	forum_isThreadLocked= false,
	forum_deleteWarning = "פעולה זו תמחק את ההודעה ואת כל התגובות שלה באופן שאינו ניתן לשחזור! האם להמשיך ?",
	forum_lastDepth = 0;

// Flags for messages
FLAG_ATTACHMENTS	= 0x002;
FLAG_AUTHOR_HLIGHT	= 0x004;
FLAG_ADMIN_MESSAGE	= 0x040;
FLAG_LOCKED_THREAD  = 0x080;
FLAG_STICKY_THREAD  = 0x100;

function forum_MessageClick(msgId) {
	var spanBulletIcon	= document.getElementById("MsgBullet_" + msgId),
		spanMsgContent	= document.getElementById("span_msg_" + msgId);
	forum_openMsgs[msgId] = !forum_openMsgs[msgId];
	if (spanBulletIcon) {
		spanBulletIcon.className = 'ForumMessageBullet';
	}
	if (forum_openMsgs[msgId]) {
		spanMsgContent.style.display = '';
	} else {
		spanMsgContent.style.display = 'none';
	}
}

function forum_isEmptyMessage(content) {
	var i = 0;
	var in_tag = false;

	if (content.length > 1024) {
		return false;
	}

	content = content.replace(" ", "");
	for (i = 0; i < content.length; i++) {
		if (in_tag) {
			if (content.charAt(i) == '>') {
				in_tag = false;
			}
			continue;
		}
		switch (content.charAt(i)) {
		case ' ':
		case '\r':
		case '\n':
		case '\t':
			break;

		case '<':
			in_tag = true;

		default:
			return false;
		}
	}

	return true;
}

function forum_messageToHtml(msgId, parentId, subject, author, authorEmail, timeValue, viewUrl, replyUrl, deleteUrl, editUrl, lockedUrl, stickyUrl, flags, content) {
	var result = '';
	var messageTime = new Date();
	messageTime.setTime(timeValue * 1000.0);

	if (parentId > 0) {
		className = 'ForumMessageHeader';
	} else {
		className = 'ForumRootMessageHeader';
	}

	result += '<table border="0"><tr class="' + className + '"><td><a href="' + viewUrl + '" target="new" class="ForumMessageTreeLink">';

	if (parentId > 0) {
		treeDepth = forum_msgDepths[parentId] + 1;
	} else {
		treeDepth = 0;
	}

	if (forum_LastVisit && (messageTime.getTime() >= (forum_LastVisit * 1000))) {
		result += "<span style='margin-right: " + (treeDepth) + "em;' id='MsgBullet_" + msgId + "' class='ForumNewMessageBullet'></span>";
	} else {
		result += "<span style='margin-right: " + (treeDepth) + "em;' class='ForumMessageBullet'></span>";
	}

	forum_msgDepths[msgId] = treeDepth;

	result += '</a>';

	result += "<td nowrap='nowrap'> <a href='" + viewUrl + "' onclick='forum_MessageClick("
			  + msgId + "); return false;' class='ForumMessageSubject'>"
			  + subject + "</a><td>";

	result += ' / ';

	if (authorEmail != '') {
		result += "<a href='mailto:" + authorEmail + "'>";
	}

	if (flags & FLAG_AUTHOR_HLIGHT) {
		result += "<span class='ForumMessageAuthorHighlight'>" + author + "</span>";
	} else {
		result += author;
	}

	if (authorEmail != '') {
		result += "</a>";
	}

	if (flags & FLAG_ADMIN_MESSAGE) {
		result += "<span class='ForumMessageAdmin'></span> ";
	}

	formattedTime = messageTime.toLocaleString();
	result += "<td> <small>(" + formattedTime + ")</small> ";

	if (flags & FLAG_ATTACHMENTS) {
		result += "<span class='ForumMessageAttachmentsFlag'></span> ";
	}

	if (flags & FLAG_STICKY_THREAD) {
		result += "<span class='ForumMessageSticky'></span> ";
	}

	if (treeDepth == 0) {
		forum_isThreadLocked = (flags & FLAG_LOCKED_THREAD);
		if (forum_isThreadLocked) {
			result += "<span class='ForumMessageLocked'></span> ";
		}
	}

	// Check for new message / empty content
	if (forum_isEmptyMessage(content)) {
		result += " <span class='ForumMessageNoContentFlag'>ל&quot;ת</span>";
	}

	result += "</table>";

	result += "<table class='ForumMessageBox' style='display:none' id='span_msg_"
			  + msgId + "'>" + "<tr><td width=" + (2 + treeDepth * 11)
			  + " style='height: 21px;' class=''>  " + "<td class='MessageContent'>"
			  + content + "<br /><table width='100%'><tr>";

	if (!forum_isThreadLocked && !forum_isLocked) {
		result += "<td><a href='" + replyUrl + "'>[הוסף תגובה]</a></td>";
	} else {
		result += "<td> </td>";
	}

	if (forum_ShowAdminLinks) {
		result += "<td align='left'><small>";
		result += "<a href='" + deleteUrl + "' onclick='return confirm(forum_deleteWarning);'>[מחיקה]</a> ";
		result += "<a href='" + editUrl + "'>[עריכה]</a> ";
		if (!parentId) {
			result += "<a href='" + lockedUrl + "'>[נעילת נושא]</a> ";
			result += "<a href='" + stickyUrl + "'>[נושא דביק]</a> ";
		}
		result += "</small></td>";
	}

	result += "</tr></table></td></tr></table>";

	forum_openMsgs[msgId] = false;

	return result;
}

function forum_message(msgId, parentId, subject, author, authorEmail, timeValue, viewUrl, replyUrl, deleteUrl, editUrl, lockedUrl, stickyUrl, flags, content) {
	document.write(forum_messageToHtml(msgId, parentId, subject, author, authorEmail, timeValue, viewUrl, replyUrl, deleteUrl, editUrl, lockedUrl, stickyUrl, flags, content));
}

function forum_validateForm(formObject, fields) {
		var i = 0;

		for (i = 0; i < fields.length; i++) {
				fieldInfo = fields[i];

				var fieldObject = document.getElementById(fieldInfo[0]),
						fieldName = fieldInfo[1];

				if (!fieldObject) {
						continue;
				}

				if (fieldObject.value.replace(/\s/g, '').length == 0) {
						alert("שגיאה: עליך למלא את " + fieldName);
						fieldObject.focus();
						return false;
				}
		}

		return true;
}

function forum_validateComposeForm(formObject) {
	return forum_validateForm(formObject,
							  [["message_author", "שם המחבר"],
							  ["message_subject", "נושא ההודעה"]]);
}

