var __aRequiredFields = new Object;

function assignRequired(aLabels, sForm) {

	var aFormFields = new Array();

	for (var i = 0; i < aLabels.length; i++) {
		// Store the required fields in the global variable
		aFormFields.push(aLabels[i]);
		// Look for a cooresponding label element; if one exists, color it.
        var oLabel = getObject(aLabels[i] + '_label');
		if (oLabel != null) {
			addCSSClass(oLabel, 'required');
		}
	}
	
	__aRequiredFields[sForm] = aFormFields;
	
	var oForm = getObject(sForm);
	if (oForm != null) {
		// Add an 'onclick' event handler to any form submit
		// that are not excluded.
		
		aInputElements = oForm.getElementsByTagName('input');
		for (var i = 0; i < aInputElements.length; i++) {
			if (aInputElements[i].getAttribute('type') == 'submit'  &&
				aInputElements[i].className.indexOf('excluded') == -1) 
			{
				// Overrides any other 'onsubmit' event handler that may
				// be defined on the submit button. Use with caution.
				aInputElements[i].onclick = checkRequired;
			}
		}
	}
	
	return true;
}

function checkRequired(e) {

	// Get the form that triggered this function.
	if (!e) var e = window.event;
	var oFormButton = getTarget(e);
	var sFormName = oFormButton.form.name;

	for (var i = 0; i < __aRequiredFields[sFormName].length; i++) {
		if (isEmpty(__aRequiredFields[sFormName][i])) {
			alert('You must complete the required fields (shown in red) before continuing.');
			getObject(__aRequiredFields[sFormName][i]).focus();
			return false;
		}
	}
	return true;
}
