function openReplyForm() {
	unhide('commentform');
	hide('cmtresponse_0','cmtresponse_1');
	focus_and_to_end('inputbody');
	return false;
}
function submitReplyForm(formobj,element,elementid,page) {
	if (formobj.submitted) {
		return false;
	}
	if (!require_something(formobj,formobj.BODY,'Je bericht is leeg!')) {
		return false;
	}
	var req = initrequest();
	if (!req) {
		return submitForm(formobj.SUBMIT);
	}
	submitForm(formobj.SUBMIT);
	var poststr = '';
	for (var i = 0; i < formobj.length; i++) {
		var input = formobj.elements[i];
		if (input.type == 'checkbox') {
			poststr += input.name;
			if (input.checked) {
				poststr += '=' + input.value;
			}
			poststr += '&';
		} else if (input.type == 'textarea') {
			poststr += input.name + '=' + urlencode_utf8_to_windows1252(input.value)[0] + '&';
		} else {
			poststr += input.name + '=' + input.value + '&';
		}
	}
	if (page) {
		poststr += '&PAGE='+page;
	}
	req.open('POST', '/' + element + '/' + elementid + '/newcomment', true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) {
			return;
		}
		resetSubmit(formobj.SUBMIT);
		if (req.responseText) {
			if (req.status != 200) {
				var obj = getobj('commentreplyerror');
				obj.innerHTML = req.responseText;
			} else {
				var commentid = req.getResponseHeader('X-COMMENTID');
				if (!commentid) {
					alert('X-COMMENTID is empty');
					return;
				}
				var currentstamp = req.getResponseHeader('X-CURRENTSTAMP');
				if (!currentstamp) {
					alert('X-CURRENTSTAMP is empty');
					return;
				}
				var newdiv = document.createElement('div');
				if (!newdiv) {
					alert('failed to create new div');
					return;
				}
				newdiv.setAttribute('id','comment_' + commentid);
				newdiv.innerHTML = req.responseText;
				
				var handle = getobj('insertbefore');
				if (handle) {
					handle.parentNode.insertBefore(newdiv,handle);
				} else if (handle = getobj('insertafter')) {
					if (handle.nextSibling) {
						handle.parentNode.insertBefore(newdiv,handle.nextSibling);
					} else {
						handle.parentNode.appendChild(newdiv);
					}
				} else {
					return;
				}
				handle = getobj('last_commentid');
				if (handle) {
				handle.value = commentid;
				}
				handle = getobj('new_comment_formstamp');
				if (handle) {
					handle.value = currentstamp;
				}
				var input_handle = getobj('inputbody');
				if (input_handle) {
					input_handle.value = '';
				}
				hide('commentform');
				unhide('cmtresponse_0');
				unhide('cmtresponse_1');
			}
		}
	}
	req.send(poststr);
	return false;
}

function openChangeForm(element,elementid,commentid,page) {
	var formreq = initrequest(true);
	if (!formreq) {
		return;
	}
	formreq.open('GET', '/' + element + '/' + elementid + '/commentform/' + commentid + (page ? '?PAGE=' + page : ''), true);
	formreq.onreadystatechange = function () {
		if (formreq.readyState != 4) {
			return;
		}
		if (formreq.status != 200) {
			showerrors(formreq);
			return;
		} 
		if (!formreq.responseText) {
			alert('no content');
			return;
		}
		var obj = getobj('comment_' + commentid,true);
		if (!obj) {
			return;
		}
		obj.innerHTML = formreq.responseText;
		if (typeof makeResizable == 'function') {
			makeResizable(obj);
		}
		obj.scrollIntoView();
	};
	formreq.send(null);
}
function submitChangeForm(formobj,element,elementid,commentid,page) {
	if (formobj.submitted) {
		return false;
	}
	if (!require_something(formobj,formobj.BODY,'Je bericht is leeg!')) {
		return false;
	}
	var req = initrequest();
	if (!req) {
		return submitForm(formobj.SUBMIT);
	}
	submitForm(formobj.SUBMIT);
	var poststr = '';
	for (var i = 0; i < formobj.length; i++) {
		var input = formobj.elements[i];
		if (input.type == 'checkbox') {
			poststr += input.name;
			if (input.checked) {
				poststr += '=' + input.value;
			}
			poststr += '&';
		} else if (input.type == 'textarea') {
			poststr += input.name + '=' + urlencode_utf8_to_windows1252(input.value)[0] + '&';
		} else {
			poststr += input.name + '=' + input.value + '&';
		}
	}
	if (page) {
		poststr += '&PAGE=' + page;
	}
	req.open('POST', '/' + element + '/' + elementid + '/changecomment/' + commentid, true);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) {
			return;
		}
		resetSubmit(formobj.SUBMIT);
		if (req.responseText) {
			if (req.status != 200) {
				alertMessage(req.responseText);
			} else {
				var obj = getobj('comment_' + commentid);
				obj.innerHTML = req.responseText;
			}
		}
	};
	req.send(poststr);
	return false;
}
function commentSetAccept(self,elementname,elementid,commentid,action) {
	var remove = action == 'remove';
	if (remove) {
		var suremove = getobj('suremove',true);
		if (!suremove) {
			return;
		}
		if (!confirm(suremove.value)) {
			return;
		}
	}
	var setreq = initrequest(true);
	if (!setreq) {
		return;
	}
	var msgdiv = getobj('comment_'+commentid,true);
	if (!msgdiv) {
		return;
	}
	setreq.open('POST','/'+elementname+'/'+elementid+'/'+action+'comment/'+commentid,true);
	setreq.onreadystatechange = function() {
		if (setreq.readyState != 4) {
			return;
		}
		if (setreq.status != 200) {
			alertMessage(setreq.responseText);
			return;
		}
		if (remove) {
			hideobj(msgdiv);
			return;
		}
		var deny = action == 'deny';
		var otheraction = deny ? 'accept' : 'deny';
		var otheractionname = setreq.getResponseHeader('X-ANCHOR-NAME');
		if (otheractionname) {
			self.innerHTML = otheractionname;
			self.onclick = function() {
				commentSetAccept(this,elementname,elementid,commentid,otheraction);
			};
			if (deny) {
				addclass(msgdiv.firstChild,'unaccepted');
			} else {
				remclass(msgdiv.firstChild,'unaccepted');
			}
		}
	};
	setreq.send(null);
	return;
}
