window.registerOnload(function() {
	// check password if required
	if ($('password_note') != undefined) {
		makebutton($('pass_button').observe('click', function() {
			hide_messages();
			var pass = false;
			new Ajax.Request('forms/check_pass.php', {
				asynchronous: false,
				onSuccess: function(transport) { pass = transport.responseText.evalJSON(); },
				parameters: { pageID: pageID, pass: $$('input[name="pass"]')[0].value }
			});

			if (!pass) {
				// report error and cancel operation
				$('messages').innerHTML = 'Error: invalid password';
				$('messages').style.display = 'block';
			} else {
				var note = $('password_note');
				note.parentNode.removeChild(note);
				load_form();
			}
		}));
	} else 
		load_form();
});

function load_form() {
	var c = new Checker($('form_content'), loaded);
	new Ajax.Request('forms/formLoader_xml.php', {
		onSuccess: function(transport) { c.add_xml(transport.responseXML); },
		parameters: { pageID: pageID }
	});
	new Ajax.Request('forms/formLoader.xsl', {
		method: 'get',
		onSuccess: function(transport) { c.add_xsl(transport.responseXML); }
	});

	function loaded() {
		makebutton($('submit_button').observe('click', form_post));
	}
}

function form_post() {
	hide_messages();
	new Ajax.Request('forms/formPost.php', {
		onSuccess: function(transport) {
			var xml = transport.responseXML;
			if (is_result(xml)) {
				// load 'Form Complete' page.
				var c = new Checker($('form_content'));
				new Ajax.Request('forms/formComplete_xml.php', {
					onSuccess: function(transport) { c.add_xml(transport.responseXML); },
					parameters: { pageID: pageID, resultID: xml.getElementsByTagName('result')[0].firstChild.nodeValue }
				});
				new Ajax.Request('forms/formComplete.xsl', {
					method: 'get',
					onSuccess: function(transport) { c.add_xsl(transport.responseXML); }
				});
			} else {
				show_errors(xml);
				show_messages(xml);
			}
		},
		parameters: $('form').serialize(true)
	});
}

