
// passes all input fields in a form in the url path string to the desired destination.
var InputRedirector = 
{
	Redirect: function(destinationUrl, searchParamNameAttributeName, cancelIfNoInputFound, noInputFoundAlertMessage) {
		var inputFound = false;
		var hasValidationError = false;
		
		if (destinationUrl.indexOf('?') == -1 && destinationUrl.indexOf('&') == -1){
			destinationUrl += '?';
		}
		
		// get all inputs w/ the matching attribute
		var getBy = 'input[' + searchParamNameAttributeName + ']';
	
		var elements = $$(getBy);
	
		for(var index = 0; index < elements.length; index++){
			var elementItem = elements[index];
			
			// make sure the value is a user provided value, not defaultText or empty.
			if (elementItem.value != '' && (Object.isUndefined(elementItem.defaultText) || (elementItem.value != elementItem.defaultText))){
				inputFound = true;
				var attValidate = elementItem.readAttribute('validate');
				if (attValidate != null){
					// validate year range
					if(attValidate == 'year') {
						var iYear = parseInt(elementItem.value)
						if (isNaN(iYear) || iYear < 1900 || iYear > 2500){
							alert('Please enter a valid "' + elementItem.defaultText + '" using YYYY format (e.g. 2008).');
							hasValidationError = true;
							break;
						}
					}
				}

				destinationUrl += '&' + elementItem.readAttribute(searchParamNameAttributeName) + '=' + encodeURIComponent(elementItem.value);
			}
		}

		if (!hasValidationError){
			// get all selects w/ the matching attribute
			getBy = 'select[' + searchParamNameAttributeName + ']';
		
			var elements = $$(getBy);
		
			for(var index = 0; index < elements.length; index++){
				var elementItem = elements[index];
				
				if (elementItem.value != ''){
					destinationUrl += '&' + elementItem.readAttribute(searchParamNameAttributeName) + '=' + encodeURIComponent(elementItem.value);
					inputFound = true;
				}
			}
		}
		
		if (cancelIfNoInputFound && !inputFound){
			if (noInputFoundAlertMessage != ''){
				alert(noInputFoundAlertMessage);
			}
			
			// prevent form submit
			return false;
		}
		else if (hasValidationError){
			// prevent form submit
			return false;
		}
		else {
			// redirect
			window.location.href = destinationUrl;
		}
		
		// return indicates it redirection has occurred
		return true;
	}
};
