//retrieve a street and city bases on zipcode and housenumber
function checkForAddress() {
	elZipcode	= $('zipCode');
	elNumber	= $('number');
	elStreet	= $('street');
	elCity		= $('city');
	// have the street and city filled in by getAddress-function
	if ((elZipcode.getValue() != '') && (elNumber.getValue() != '')) {
	    getAddress(elZipcode, elNumber, elStreet, elCity);
	}
}


var uriRemoteAJAX	= '/server-request.php';
// returns the address
function getAddress(elZipcode, elHouseNo, elStreet, elCity) {
	validParameters = true;
	pc6Regex = new RegExp(/^([0-9]{4})( )?([A-Z]){2}$/);
	numberRegex = new RegExp(/^([0-9])+$/);
	// get and check the zipcode and number
	addressZipcode = elZipcode.value = elZipcode.getValue().toUpperCase();
	addressNumber = elHouseNo.value = trim(elHouseNo.getValue()).replace(/([\D])/g, '');
	validParameters = numberRegex.test(addressNumber) && pc6Regex.test(addressZipcode);
	// do the ajax-thingy if valid
	if (validParameters) {
		addressZipcode = addressZipcode.replace(/ /, '');
		new Ajax.Request(uriRemoteAJAX, {
			method: 'get',
			parameters: {
				action: 'address',
				zipcode: addressZipcode,
				number: addressNumber
			},
			onSuccess: function (xmlHttpResponse) {
				if (xmlHttpResponse.responseText.isJSON()) {
					address = xmlHttpResponse.responseText.evalJSON();
					elStreet.value = address.straatnaam;
					elCity.value = address.plaatsnaam;
				} else {
					alert(xmlHttpResponse.responseText);
					return false;
				}
			},
			onFailure: function () {
				alert(xmlHttpResponse.responseText);
				return false;
			}
		});
	} else {
		return false;
	}
}

//Checks an array(haystack) for the presence of 1 item(needle)
function in_array(needle, haystack) {
    var found = false;

    for (key in haystack) {
        if (haystack[key] == needle) {
            found = true;
            break;
        }
    }

    return found;
}

// Trim a String
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
