function makeRequest(url, alertfunction, method) {

	// dit niet veranderen

	var httpRequest;

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {}
		}
	}

	var alertF = eval(alertfunction);

	// tot en met hier niet veranderen

	if (!httpRequest) {
		// deze innerHTML is aan te passen naar eigen wens
		document.getElementById(alertfunction).innerHTML = '<input type="submit" class="input_submit" value="Verzenden" /><br/><br/><b>Er is een fout opgetreden,<br/>probeer het opnieuw.</b>';
		return false;
	}
	// als er iets veranderd aan de readystate (bij versturen dus) dan gaat ie kijken naar de functie met de naam "AjaxNieuwsbrief" (in dit geval)
	httpRequest.onreadystatechange = function() { alertF(httpRequest, alertfunction); };
	httpRequest.open(method, url, true);
	if (method == 'POST') {
		var poststr = '';
		// hier pakt ie alle formuliervelden die de class "AjaxNieuwsbrief" (in dit geval) hebben, EN INPUTvelden zijn (dus nog geen SELECTvelden helaas)
		var formclasses = getElementsByClass(alertfunction, null, 'input');
		// vergeet de function "getElementsByClass" niet mee te kopieëren

		for (x=0;x<formclasses.length;x++) {
			// hier maakt ie een variabele "poststr" waar alle waarden uit de formuliervelden achter elkaar in komen, met een & er tussen (var0=blabla&var1=bdfdf&var2=dhsjdh) etc.
			poststr += 'var'+[x]+'='+encodeURI(formclasses[x].value)+'&';
		}

		poststr += 'var'+formclasses.length+'='+document.contact_form.form_message.value;

		httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		httpRequest.setRequestHeader("Content-length", poststr.length);
		httpRequest.setRequestHeader("Connection", "close");
		httpRequest.send(poststr);

		for (x=0;x<formclasses.length;x++) {
			formclasses[x].value = '';
		}
		document.contact_form.form_message.value = '';
	}
	else {
		httpRequest.send(null);
	}


}

// De functie "AjaxNieuwsbrief" :

function AjaxContact(httpRequest, alertfunction) {
	if (httpRequest.readyState == 4) {
		if (httpRequest.status == 200) {
			// als het formulier verzonden is, gaat ie kijken naar wat er ge-echo't wordt in de verstuur-file (in dit geval nieuwsbrief.php). Wordt later nog uitgelegd
			result = httpRequest.responseText;
			// zet het resultaat in de span met de ID "AjaxNieuwsbrief" (in dit voorbeeld dus)
			document.getElementById(alertfunction).innerHTML = result;
		} else {
			// verzenden is niet gelukt
			document.getElementById(alertfunction).innerHTML = '<input type="submit" class="input_submit" value="Verzenden" /><br/><br/><b>Er is een fout opgetreden,<br/>probeer het opnieuw.</b>';
		}
	}
	else {
		// als hij nog aan het verzenden is
		document.getElementById(alertfunction).innerHTML = '<img src="images/indicator.gif" border="0" height="15px"/> <b>Bezig met verzenden...</b>';
	}
}

// de functie "GetElementsByClass"

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}