function DealerSearchForm(formId,locatiesUrl)
{		
	var form 			= $(formId);
	
	if(!form || !LocationSuggest || !Prototype || !locatiesUrl)
		return;
		
	var cityField 		= form.down("#wcity"); 		// REQUIRED IN THE FORM!
	var zipFieldShown	= form.down("#postcod"); 	// REQUIRED IN THE FORM!
	var zipFieldHidden	= form.down("#postcode"); 	// REQUIRED IN THE FORM!
	var errorField		= $("errorboodschap"); 		// REQUIRED!
	
	var ls = new LocationSuggest(cityField,zipFieldHidden,{
		url 			: locatiesUrl, //"$link.makeLink("/${host}/media/js/locaties")"
		rows 			: 6,
		selectFirst 	: true,
		limitSize 		: true,
		limitMessage 	: "Er zijn helaas geen opties beschikbaar!",
		boxClass 		: "autosuggest-box"
	});
	
	ls.observe("match",function(e){
		if(e.keyCode != Event.KEY_TAB)
			form.submit();
	});
	
	// VALIDATIE!
	form.observe("submit",function(e){
		e.stop();

		var shownZipValue 	= $F(zipFieldShown);
		var hiddenZipValue 	= $F(zipFieldHidden);
		var cityValue		= $F(cityField);
		
		if(shownZipValue && shownZipValue!='')
		// Als we de getoonde postcode veld ingevuld hebben, krijgt deze voorrang.
		{
			if(isNaN(shownZipValue))
			// als de waarde geen nummer is.
			{
				errorField.innerHTML='De postcode mag alleen cijfers bevatten.<br/>Probeer een andere plaats of postcode.';
			}
			else if(shownZipValue.length == 4)
			// is het een nummer en 4 cijfers lang, dan is het vast goed!
			{
				zipFieldHidden.value = shownZipValue;
				form.submit();
			}
			else
			// het is een nummer, maar bestaat niet uit 4 cijfers, FOUD!
			{
				errorField.innerHTML='De postcode moet precies 4 cijfers bevatten.<br/>Probeer een andere plaats of postcode.';
				errorField.show();
			};
		}
		else if(cityValue && cityValue != '')
		// Getoonde postcode veld leeg maar het plaatsnaam veld niet. Dan kijken we daar wel even naar.
		{
			// event listener om de foud af te vangen en een melding te plaatsen.
			var onNoMatch = function(e)
			{
				ls.stopObserving("nomatch",onNoMatch);
				errorField.innerHTML='De door u ingevoerde plaatsnaam '+ cityValue +' komt helaas niet voor in de database.<br/>Controleer de schrijfwijze en probeer het opnieuw.';
				//errorField.show();
			};
			ls.observe("nomatch",onNoMatch);
			
			// Kan zijn dat er al een match gezet is, maar we controleren het nog een keer.
			// Als alles goed is, word er een "match" event gevuurd, die in een andere listener de submit() aanroept.
			ls.AutoSuggest.findMatch(e);
		}
		else
		// Melding geven dat er in iedergeval 1 veld ingevuld dient te worden!
		{
			errorField.innerHTML='Een plaatsnaam of postcode is vereist om dealers bij u in de buurt te vinden.';
		};
	});
	
};