function quickReply()
{
	if($("message").form.preview) return true;
	
	var postData = '';
	
	// build postdata from form
	postFormElems = $("message").form.elements;
	for(i=0; i<postFormElems.length; i++)
	{
		if(postFormElems[i].name=="message" || postFormElems[i].name=="subject")
		{
			if(!(textToSend = postFormElems[i].value))
				return false;
			postData += ((i==0)?"":'&') + postFormElems[i].name + "=" + encodeURIComponent(textToSend).replace(/\+/g, "%2B");
		}
		else if(postFormElems[i].type == "checkbox")
			postData += ((i==0)?"":'&') + postFormElems[i].name + "=" + ((postFormElems[i].checked) ? postFormElems[i].value : "");
		else if(postFormElems[i].type == "submit")
			postFormElems[i].disabled = true;
		else
			postData += ((i==0)?"":'&') + postFormElems[i].name + "=" + postFormElems[i].value;
	}
	
	Thread.spinner = new ActivityIndicator("body", {image: "images/spinner_big.gif"});
	
	new ajax('xmlhttp.php?nul=nul', {method: 'post', postBody: postData, onComplete: function(request) { quickReplyPosted(request); }});
	
	return false;
}

function quickReplyPosted(request)
{	
	if(request.responseText.match(/<error>(.*)<\/error>/))
	{
		message = request.responseText.match(/<error>(.*)<\/error>/);
		if(!message[1])
		{
			message[1] = "An unknown error occurred.";
		}
		if(this.spinner)
		{
			Thread.spinner.destroy();
			Thread.spinner = '';
		}
		alert('There was an error performing the update.\n\n'+message[1]);
		// enable submit buttons
		var postFormElems = $("message").form.elements;
		for(i=0; i < postFormElems.length; i++)
			if(postFormElems[i].type == "submit")
				postFormElems[i].disabled = false;
	}
	else if(request.responseText.match(/<message redirect=\"(.*?)\">(.*)<\/message>/))
	{
		message = request.responseText.match(/<message redirect=\"(.*?)\">(.*)<\/message>/);
		if(Thread.spinner)
		{
			Thread.spinner.destroy();
			Thread.spinner = '';
		}
		if(confirm(message[2])) location.href = message[1];
	}
	else if(request.responseText.match(/<message>(.*)<\/message>/))
	{
		message = request.responseText.match(/<message>(.*)<\/message>/);
		if(Thread.spinner)
		{
			Thread.spinner.destroy();
			Thread.spinner = '';
		}
		alert(message[1]);
		// enable submit buttons
		var postFormElems = $("message").form.elements;
		for(i=0; i < postFormElems.length; i++)
			if(postFormElems[i].type == "submit")
				postFormElems[i].disabled = false;
	}
	else if(request.responseText.match(/<redirect>(.*)<\/redirect>/))
	{
		message = request.responseText.match(/<redirect>(.*)<\/redirect>/);
		if(Thread.spinner)
		{
			Thread.spinner.destroy();
			Thread.spinner = '';
		}
		location.href = message[1];
		return 0;
	}
	else if(request.responseText)
	{
		// add a new post
		if(MyBB.browser == "ie" && $("ajaxqr").tagName.toLowerCase() != 'div')
		{
			// if we have ghey IE, we'll do this wonderful little hack
			var ob = $("ajaxqr").parentNode.parentNode;
			// retrieve InnerHTML of the entire page/table/div
			var ih = ob.innerHTML;
			// find our target
			pos = ih.search(/<tbody id="?ajaxqr"?>/i);
			// inject our code before the TBODY (different to what we do in Firefox)
			ih = ih.substr(0, pos) + request.responseText + ih.substr(pos);
			ob.innerHTML = ih;
		}
		else // normal browsers :P
			$("ajaxqr").innerHTML += request.responseText;
		//update form elements
		document.input.time.value = request.getResponseHeader("ajaxqr_time");
		document.input.postcount.value = request.getResponseHeader("ajaxqr_postcount");
		document.input.posthash.value = request.getResponseHeader("ajaxqr_posthash");
		document.input.message.value = "";
		
		// enable submit buttons
		var postFormElems = $("message").form.elements;
		for(i=0; i < postFormElems.length; i++)
			if(postFormElems[i].type == "submit")
				postFormElems[i].disabled = false;
		
		// quickedit menus & inline mod fixes
		var pidArray = request.getResponseHeader("ajaxqr_pids").split(' ');
		try
		{
			for(i=0; i<pidArray.length; i++)
				new PopupMenu("edit_post_"+pidArray[i]);
		} catch(err) {}
		try
		{
			for(i=0; i<pidArray.length; i++)
				Event.observe($("inlinemod_"+pidArray[i]), "click", inlineModeration.checkItem);
		} catch(err) {}
	}
	if(Thread.spinner)
	{
		Thread.spinner.destroy();
		Thread.spinner = '';
	}
}
