function submitCaptchaForm(formId, imageId, hmacId, formUrl)
{
	var data = {};
	var elms = $(formId).elements;
//	alert("submitCaptchaForm elements:"+elms.length);
	for (var index=0; index<elms.length; ++index)
	{
		if (elms[index].type == "checkbox") {
			if (!elms[index].checked) continue;
			var name = elms[index].name.replace('[]', '');
			if (data[name]) {
				var len = data[name].length;
				data[name][len] = elms[index].value;
			} else {
				data[name] = new Array();
				data[name][0] = elms[index].value;
			}
		} else if (elms[index].type == "radio") {
			if (!elms[index].checked) continue;
			data[elms[index].name] = elms[index].value;
		} else {
			data[elms[index].name] = elms[index].value;
		}
//		alert("submitCaptchaForm: "+elms[index].name);
	}
	var dataJSON = JSON.encode(data);
	var data2 = {};
	data2['json'] = dataJSON;

	var myRequest = new Request.JSON({
		method: 'post',
		data: data,
		url: formUrl,
		onSuccess: function(respJSON, respText) {
			if (respJSON.status == "success")
			{
				alert("It worked");
			}
			else if (respJSON.status == "failure")
			{
				alert("It failed: "+respJSON.message);
				if ($(imageId) && respJSON.captcha_image) { $(imageId).src = respJSON.captcha_image; }
				if ($(hmacId) && respJSON.captcha_hmac) { $(hmacId).value = respJSON.captcha_hmac; }
			}
			else
			{
				alert("WTF");
			}
		}
	}).send();
}
