var uriAJAX			= '/shared_public/ajaxRequest.php';
var functions		= Array();
var cities  		= Array();

// returns the address
function getAddress(elZipcode, elHouseNo, elStreet, elCity, codeOnFailure, codeOnSuccess) {
	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.toUpperCase();
	addressNumber = elHouseNo.value.replace(/([\D])/g, '');
	validParameters = numberRegex.test(addressNumber) && pc6Regex.test(addressZipcode);
	// do the ajax-thingy if valid
	if (validParameters) {
		addressZipcode = addressZipcode.replace(/ /, '');
		new Ajax.Request(uriAJAX, {
			method: 'get',
			parameters: {
				action: 'address',
				zipcode: addressZipcode,
				number: addressNumber
			},
			onSuccess: function (xmlHttpResponse) {
				if (xmlHttpResponse.responseText.isJSON()) {
					address = xmlHttpResponse.responseText.evalJSON();
                    if ((address.straatnaam != undefined) && (address.straatnaam != undefined)) {
                        elStreet.value = address.straatnaam;
                        elCity.value = address.plaatsnaam;
                        if ((codeOnSuccess != undefined) && (codeOnSuccess != '')) {
                            callbackOnSuccess = new Function(codeOnSuccess);
                            callbackOnSuccess();
                        }
                        return true;
                    } else {
                        if ((codeOnFailure != undefined) && (codeOnFailure != '')) {
                            callbackOnFailure = new Function(codeOnFailure);
                            callbackOnFailure();
                        }
                        return false;
                    }
				} else {
					// alert(xmlHttpResponse.responseText);
                    if ((codeOnFailure != undefined) && (codeOnFailure != '')) {
                        callbackOnFailure = new Function(codeOnFailure);
                        callbackOnFailure();
                    }
					return false;
				}
			},
			onFailure: function () {
				// alert(xmlHttpResponse.responseText);
                if ((codeOnFailure != undefined) && (codeOnFailure != '')) {
                    callbackOnFailure = new Function(codeOnFailure);
                    callbackOnFailure();
                }
				return false;
			}
		});
	} else {
        if ((codeOnFailure != undefined) && (codeOnFailure != '')) {
            callbackOnFailure = new Function(codeOnFailure);
            callbackOnFailure();
        }
		return false;
	}
}

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

//Remove all items from the SELECT
function removeElements(el) {
	children = el.childElements();
	for (i=0; i<children.size(); i++) {
		//alert('child '+(i+1)+'/'+children.size()+' removed...');
		children[i].remove();
	}
}

//Checks a series of Elements, this has to be done after Element creation,
// due to stupidity of Internet Explorer  :(
function checkElements(strPrefix, strCheckedIDs) {
	//alert('Pre['+strPrefix+'] S['+strCheckedIDs+']');
	arrCheckedIDs = strCheckedIDs.split(',');
	for (i=0; i<arrCheckedIDs.size(); i++) {
		//alert('id: '+arrCheckedIDs[i]);
		try{
			$(strPrefix+arrCheckedIDs[i]).checked=true;
		}
		catch(e) {
			//alert('error:\n'+e.message);
		}
	}
}

