function comment_add() {
	var message  = document.getElementById('usercomment').value;
	var parent   = parseInt(document.getElementById('usercommentparent').value) || 0;
	var page     = URLNAME;
	var functionname = 'add';

	sendVars = 'function=' + functionname + '&message=' + escape(message) + '&parent=' + parent + '&page=' + page;
	
	document.getElementById('comment_activityind').style.display = "";
	document.getElementById('comment_inputerror').style.display = "none";
	document.getElementById('postcommentbutton').disabled = true;

	comment_ajax_handler(sendVars, comment_add_cb);
}
function comment_add_cb(responseData) {
	var msgdata = eval("(" + responseData + ")");

	if (msgdata.msgstatus == 'ok') {
		var comment = comment_makeCommentDiv(msgdata);
		if (msgdata.parent == 0) {
			var commentContainer = document.createElement('div');
			commentContainer.id = 'comment_' + msgdata.id + '_container';
			commentContainer.className = 'container';
			var childrenContainer = document.createElement('div');
			childrenContainer.id = 'comment_' + msgdata.id + '_container';
			childrenContainer.className = 'children';

			commentContainer.appendChild(comment);
			commentContainer.appendChild(childrenContainer);

			if ((typeof COMMENT_INSERTTOP != 'undefined') && (COMMENT_INSERTTOP == true)) {
				var firstCommentChild = document.getElementById('commentContainer').firstChild;
				document.getElementById('commentContainer').insertBefore(commentContainer, firstCommentChild);
			} else {
				document.getElementById('commentContainer').appendChild(commentContainer);
			}
			
		} else {
			document.getElementById('comment_' + msgdata.parent + '_children').appendChild(comment);
		}
		
		COMMENT_TOTAL = COMMENT_TOTAL + 1;
		
		//cleanup
		comment_unsetCommentParent();
		document.getElementById('usercomment').value = "";
		var comment_nocomments_el = document.getElementById('comment_nocomments');
		if (comment_nocomments_el) {
			document.getElementById('comment_nocomments').style.display = "none";
		}
		if (Effect) {
			Effect.Appear('comment_' + msgdata.id);
		} else {
			document.getElementById('comment_nocomments').style.display = "";
		}
	} else {
		if (msgdata.msgstatus == 'empty') {
			document.getElementById('comment_inputerror').style.display = "";
		} else if (msgdata.msgstatus == 'dberror') {
			alert("An internal error occurred. Please try again later.");
		} else if (msgdata.msgstatus == 'login') {
			alert('You must be logged in to post comments.');
		} else if (msgdata.msgstatus == 'error') {
			alert("An internal error occurred. Please try again later.");
		} else {
			alert("An internal error occurred. Please try again later.");
		}
	}
	document.getElementById('comment_activityind').style.display = "none";
	document.getElementById('postcommentbutton').disabled = false;
}
function comment_makeCommentDiv(msgdata) {
	var commentdiv = document.createElement('div');
	commentdiv.id = "comment_" + msgdata.id;
	commentdiv.className = 'comment';

	var userInfoDiv = document.createElement('div');
	userInfoDiv.className = 'userinfo';
	
	var usernameLink = document.createElement('a');
	usernameLink.href = '/profile/' + msgdata.username;
	usernameLink.appendChild(document.createTextNode(msgdata.username));
	
	var usernameDiv = document.createElement('div');
	usernameDiv.className = 'username';
	usernameDiv.id = "comment_" + msgdata.id + "_username";
	usernameDiv.appendChild(usernameLink);	
	
	var posttimeDiv = document.createElement('div');
	posttimeDiv.className = 'posttime';
	posttimeDiv.appendChild(document.createTextNode(msgdata.publishtime));

	var anchorDiv = document.createElement('a');
	anchorDiv.setAttribute('name', 'comment_' + msgdata.id);
	anchorDiv.id = 'comment_' + msgdata.id + '_anchor';
	anchorDiv.appendChild(document.createTextNode(' '));
	
	var controlDiv = document.createElement('div');
	controlDiv.className = "control";
	
	if (typeof OWNER != "undefined") {
		if (OWNER == true) {
			var deleteLink = document.createElement('a');
			deleteLink.href = '#';
			deleteLink.onclick = function() {
				comment_delete(msgdata.id);
				return false;
			}
			deleteImg = document.createElement('img');
			deleteImg.src = "http://cdn.glumbert.com/graphics/aux/c_delete.gif";
			deleteImg.border = "0";
			
			deleteLink.appendChild(deleteImg);
			
			controlDiv.appendChild(deleteLink);
		}
	}

	userInfoDiv.appendChild(anchorDiv);
	userInfoDiv.appendChild(usernameDiv);
	userInfoDiv.appendChild(posttimeDiv);

	var messageDiv = document.createElement('div');
	messageDiv.className = 'message';
	messageDiv.innerHTML = msgdata.message;

	commentdiv.appendChild(userInfoDiv);
	commentdiv.appendChild(messageDiv);
	commentdiv.appendChild(controlDiv);

	commentdiv.style.display = "none";

	return commentdiv;
}
function comment_delete(comment_id) {
	var functionname = 'delete';
	var sendVars = 'function=' + functionname + '&page=' + URLNAME + '&comment_id=' + comment_id;
	comment_ajax_handler(sendVars, comment_delete_cb);
	
	return true;
}
function comment_delete_cb(responseData) {
	var msgdata = eval("(" + responseData + ")");
	
	if (msgdata.msgstatus == "ok") {
		var deletedComment = document.getElementById('comment_' + msgdata.comment_id + '_container');
		Effect.Fade('comment_' + msgdata.comment_id + '_container');
		var commentContainer = document.getElementById('commentContainer');
		COMMENT_TOTAL = COMMENT_TOTAL - 1;
	} else if (msgdata.msgstatus == "not_owner") {
		alert("You cannot delete this comment.");
	} else if (msgdata.msgstatus == "login") {
		alert('You are not logged in!');
	} else {
		alert('An internal error has occurred while processing this request.');
	}
}
function comment_flag(comment_id) {
	var functionname = 'flag';
	var sendVars = 'function=' + functionname + '&comment_id=' + comment_id;

	comment_ajax_handler(sendVars, comment_flag_cb);

	return true;
}
function comment_flag_cb(responseData) {
	var msgdata = eval("(" + responseData + ")");

	if (msgdata.msgstatus == "ok") {
		if (Effect) {
			Effect.Fade('comment_' + msgdata.comment_id + '_message');
			Effect.Fade('comment_' + msgdata.comment_id + '_controls');
		} else {
			document.getElementById('comment_' + msgdata.comment_id + '_message').style.display = "none";
			document.getElementById('comment_' + msgdata.comment_id + '_controls').style.display = "none";
		}
	} else if (msgdata.msgstatus == "login") {
		alert('You are not logged in!');
	} else {
		alert('An internal error has occurred while processing this request.');
	}
}
function comment_getcomments(num, offset) {
	var functionname = 'get';
	var sendVars = 'function=' + functionname + '&page=' + URLNAME + '&num=' + num + '&offset=' + offset;
	comment_ajax_handler(sendVars, comment_getcomments_cb);
	
	return true;
}
function comment_getcomments_cb(responseData)
{
	var msgdata = eval("(" + responseData + ")");
		
	if (msgdata.msgstatus == "ok") {
		
		var comment_data = eval(msgdata.comments);
		
		var outerContainer = document.getElementById('outerContainer');
		var commentContainer = document.getElementById('commentContainer');
		
		COMMENT_OFFSET = msgdata.offset;
		
		commentContainer.innerHTML = "";
		document.getElementById('comment_next').style.display = "none";
		document.getElementById('comment_prev').style.display = "none";
		
		for(var n = 0; n < comment_data.length; n++)
		{
			var comment = comment_makeCommentDiv(comment_data[n]);
			
			if (comment_data[n].parent == 0) {
				var commentContainer = document.createElement('div');
				commentContainer.id = 'comment_' + comment_data[n].id + '_container';
				commentContainer.className = 'container';
				
				var childrenContainer = document.createElement('div');
				childrenContainer.id = 'comment_' + comment_data[n].id + '_container';
				childrenContainer.className = 'children';
	
				commentContainer.appendChild(comment);
				commentContainer.appendChild(childrenContainer);
				
				document.getElementById('commentContainer').appendChild(commentContainer);
			} else {
				document.getElementById('comment_' + comment_data[n].parent + '_children').appendChild(comment);
			}
			
			if (Effect) {
				Effect.Appear('comment_' + comment_data[n].id);
			} else {
				document.getElementById('comment_' + comment_data[n].id).style.display = "";
			}
		}
		
		if (parseInt(msgdata.offset) > 0)
		{
			document.getElementById('comment_prev').onclick = function() {
				comment_getcomments(10, parseInt(msgdata.offset) - 10);
				return false;
			}
			document.getElementById('comment_prev').style.display = "";
		} else {
			document.getElementById('comment_prev').style.display = "none";
		}
		
		if ((parseInt(msgdata.offset) + comment_data.length) < COMMENT_TOTAL)	{
			document.getElementById('comment_next').onclick = function() {
				comment_getcomments(10, parseInt(msgdata.offset) + 10);
				return false;
			}
			document.getElementById('comment_next').style.display = "";
		} else {
			document.getElementById('comment_next').style.display = "none";
		}
	}
}
function comment_ajax_handler(sendVars, commentCb) {
	var handlerUrl = "/system/comment/handler.php";
	if (!f) {
		http.open("POST", handlerUrl, true);
		http.onreadystatechange = function() {
			if (http.readyState == 4) {
				if (http.status == 200) {
					f = false;
					commentCb(http.responseText);
				}
			}
		};
		http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		http.setRequestHeader('Accept','text/plain');
		http.send(sendVars);
		f = true;
	}
}
function comment_setCommentParent(parentId) {
	document.getElementById('comment_parentindcontainer').style.display = "";
	document.getElementById('usercommentparent').value = parseInt(parentId);
	document.getElementById('comment_parentind').innerHTML = document.getElementById('comment_' + parseInt(parentId) + '_username').innerHTML;
}
function comment_unsetCommentParent() {
	document.getElementById('comment_parentindcontainer').style.display = "none";
	document.getElementById('usercommentparent').value = 0;
}
function comment_inputfocus(event) {
	window.location.hash = 'comment';
	document.getElementById('usercomment').focus();
	event = (window.event) ? window.event : event;
	if (event) {
		event.cancelBubble = true;
		if (event.stopPropagation) event.stopPropagation();
	}
}
function comment_toggle() {
	var id_array = new Array('commentContainer', 'comment_loginreminder', 'postcomment');
	displayval = "none";
	cookieval = "false";
	textval = "Show";
	if ((document.getElementById('commentContainer').style.display == "none") || (arguments[0] == "open")) {
		var displayval = "";
		var cookieval = "true";
		var textval = "Hide";
	}
	createCookie("comments_visible", cookieval, 10950);
	document.getElementById('comment_toggle').innerHTML = textval + " Comments";
	for (var n = 0; n < id_array.length; n++) {
		if (document.getElementById(id_array[n])) {
			document.getElementById(id_array[n]).style.display = displayval;
		}
	}
}
