function makeRequest(url, parameters, changeFunction) {
	if (window.ActiveXObject) {
		http = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		http = new XMLHttpRequest();
	}
	
	params = '';
	for (paramKey in parameters) {
		params += paramKey+'='+parameters[paramKey]+'&';
	}
		
	http.onreadystatechange = function() {stateChange(changeFunction);};
	http.open('GET', url+'?'+params);
	http.send(null);
}

function stateChange(changeFunction) {
	if (http.readyState == 4) {
		if (http.status == 200) {
			changeFunction(http.responseText);
		}
	}
}

function switchHTML(element, content) {
	element.innerHTML = content;
}

function showSection(number) {
	var section = document.getElementById('section' + number);
	section.style.display = 'block';
}

function run() {
	// disable submit
	document.starterDetails.submitButton.disabled = true;
	
	// show spinning loader gif
	document.getElementById('loaderSpinner').style.display = 'inline';
	
	// show section 2
	showSection(2);
	
	// set section text to "loading..."
	switchHTML(document.getElementById('resultSpot'), '<p><em>Loading...</em></p>');
	
	// collect field data
	formFields = {'firstName':document.starterDetails.firstName.value,
		'lastName':document.starterDetails.lastName.value,
		'wealth':document.starterDetails.wealth.value,
		'able':document.starterDetails.able.value,
		'generations':document.starterDetails.generations.value
	};
	
	// send fields to python, display results
	makeRequest('/cgi-bin/darwin.py',
		formFields,
		function(data) {switchHTML(document.getElementById('resultSpot'), data); runAfter();}
	);
}

function runAfter() {	
	// reenable submit
	document.starterDetails.submitButton.disabled = false;
	
	// change submit to retry
	document.starterDetails.submitButton.value = 'Retry';
	
	// hide spinning loader gif
	document.getElementById('loaderSpinner').style.display = 'none';
}
