var now = new Date(); 
function openReplyForm(otherside) {
	unhide('newform');
	disableResponseLinks(true);
	focus_and_to_end('newform','inputbody',true);
}
function disableResponseLinks(disable) {
	var opts = ['response_00','response_01','response_10','response_11'];
	for (var i = 0; i < opts.length; ++i) {
		var resp = getobj(opts[i]);
		if (!resp) continue;
		resp.disabled = disable;
		if (disable) {
			resp.className = 'light';
			resp.disabled = true;
			resp.onclickbackup = resp.onclick;
		} else {
			resp.className = 'unhideanchor';
			resp.onclick = resp.onclickbackup;
		}
	}
}
function submitReplyForm(formobj,element,elementid,page,tries) { try {
	var req;
	if (	formobj.submitted
	||	!(req = initrequest(true))
	||	!submitForm(formobj)
	) {
		return false;
	}
	var poststr = build_poststr(formobj);
	if (page) poststr += '&PAGE='+page;
	var replyerror = getobj('replyerror');
	if (replyerror) replyerror.innerHTML = '';
	if (!tries) tries = 3;
	req.open('POST', '/' + element + '/' + elementid + '/new', true);
	req.setRequestHeader('X-NOW',Math.floor(now.getTime()/1000));
	req.setRequestHeader('X-TRIES',tries);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		resetSubmits(formobj);
		if (req.getResponseHeader('X-NODATA')) {
			if (--tries) {
				submitReplyForm(formobj,element,elementid,page,tries);
				return;
			}
		}
		formobj.className = '';
		if (!req.responseText) return;
		if (req.status != 200) {
			if (replyerror)
				replyerror.innerHTML = req.responseText;
			else 	alertMessage(req.responseText);
			formobj.scrollIntoView();
			return;
		}
		updateFollowLinks(formobj);
		var id = req.getResponseHeader('X-ID');
		var secret = req.getResponseHeader('X-SECRET');
		var currentstamp = req.getResponseHeader('X-CURRENTSTAMP');
		var newdiv = document.createElement('div');
		if (!newdiv) {
			alert('failed to create new div');
			return;
		}
//		newdiv.setAttribute('id','m'+id);
		newdiv.innerHTML = req.responseText;
		var handle = getobj('newform',true);
		if (!handle) return;
		handle.parentNode.insertBefore(newdiv,handle);
		var forms = handle.getElementsByTagName('FORM');
		if (!forms.length) {
			alert('no forms?');
			return;
		}
		var form = forms[0];
		if (!id) {
			form.disabled = true;
			form.parentNode.removeChild(form);
		} else {
			if (form.LAST_MESSAGEID)form.LAST_MESSAGEID.value = id;
			if (form.FORMSTAMP)	form.FORMSTAMP.value = currentstamp;
			if (form.SECRET)	form.SECRET.value = secret;
			if (form.BODY)		form.BODY.value = '';
			disableResponseLinks(false);
		}
		hide('newform');
		newdiv.scrollIntoView();
	}
	formobj.className = 'light';
	req.send(poststr);
	if (!poststr) {
		alert('poststr is leeg, er ging iets mis, neem even contact op met de helpdesk!');
	}
	return false;
} catch(e) {
	catchLog(e);
	return false;
}}
function openChangeForm(element,elementid,id,page) {
	var formreq = initrequest(true);
	if (!formreq) return;
	formreq.open('GET', '/' + element + '/' + elementid + '/form/' + id + (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('m' + id,true);
		if (!obj) return;
		obj.innerHTML = formreq.responseText;
		if (typeof makeResizable == 'function') {
			makeResizable(obj);
		}
//		catch_ctrls(obj);
		focus_and_to_end(obj,'inputbody_' + id);
	};
	formreq.send(null);
	return false;
}
function submitChangeForm(formobj,element,elementid,id,page,tries) { try {
	var req;
	if (	formobj.submitted
	||	formobj.QUESTION
	&&	!checkPollPart(formobj)
	||	!(req = initrequest(true))
	||	!submitForm(formobj)
	) {
		return false;
	}
	var poststr = build_poststr(formobj);
	if (page) poststr += '&PAGE=' + page;
	var replyerror = getobj('replyerror'+id);
	if (replyerror) replyerror.innerHTML = '';
	if (!tries) tries = 3;
	req.open('POST', '/' + element + '/' + elementid + '/change/' + id, true);
	req.setRequestHeader('X-NOW',Math.floor(now.getTime()/1000));
	req.setRequestHeader('X-TRIES',tries);
	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	req.onreadystatechange = function () {
		if (req.readyState != 4) return;
		resetSubmits(formobj);
		if (req.getResponseHeader('X-NODATA')) {
			if (--tries) {
				submitChangeForm(formobj,element,elementid,id,page,tries);
				return;
			}
		}
		formobj.className = '';
		if (!req.responseText) return;
		if (req.status != 200) {
			if (replyerror)
				replyerror.innerHTML = req.responseText;
			else 	alertMessage(req.responseText);
			formobj.scrollIntoView();
			return;
		}
		updateFollowLinks(formobj);
		var obj = getobj('m' + id,true);
		if (!obj) return;
		obj.innerHTML = req.responseText;
	};
	formobj.className = 'light';
	req.send(poststr);
	if (!poststr) {
		alert('poststr is leeg, er ging iets mis, neem even contact op met de helpdesk!');
	}
	return false;
} catch(e) {
	alert(e.message);
	return false;
}}
function updateFollowLinks(formobj) {
	changeFollowLinks(formobj.FOLLOW && formobj.FOLLOW.checked);
	if (formobj.WASFOLLOWED) {
		formobj.WASFOLLOWED.value = formobj.FOLLOW && formobj.FOLLOW.checked ? '1' : '0';
	}
}
function commentSetAccept(self,elementname,elementid,id,action,hook,refreshkey) {
	var remove = action == 'remove';
	if (remove) {
		var suremove = getobj('suremove',true);
		if (	!suremove
		||	!confirm(suremove.value)
		) {
			return;
		}
	}
	var setreq = initrequest(true);
	if (!setreq) return;
	if (!hook) {
		var msgdiv = getobj('m'+id,true);
		if (!msgdiv) return;
	}
	setreq.open('POST','/'+elementname+'/'+elementid+'/'+action+'/'+id,true);
	if (refreshkey) {
		setreq.setRequestHeader('X-REFRESHKEY',refreshkey);
	}
	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(self,elementname,elementid,id,otheraction,hook);
			};
		}
		if (hook) {
			hook.call(self,deny);
		} else {
			setclass(msgdiv,deny,'light');
		}
	};
	setreq.send(null);
	return false;
}

