function Form_Validate(formName, fieldsArray) {
	var bValid = new Array(fieldsArray.length);
	var bAllValid = true;
	for (var i = 0; i < bValid.length; i++) {
		bValid[i] = (!fieldsArray[i].validate) || (eval("document.forms['" + formName + "']." + fieldsArray[i].fieldName + ".value") != fieldsArray[i].defVal);
		bAllValid = bAllValid && bValid[i];
	};
	
	if (bAllValid) {
		return true;
	} else {
		var sErr = "";
		for (var i = 0; i < bValid.length; i++) {
			if (!bValid[i]) sErr += fieldsArray[i].msg + ", ";
		};
		sErr = "The request cannot be submitted without filling in the following fields: " + sErr.substr(0, sErr.length-2) + ".";
		alert(sErr);
		return false;
	};
};

function Form_FieldFocus(event, fieldsArray){
	if (document.all) field = event.srcElement;
	else field = event.target;
	for (var i = 0; i < fieldsArray.length; i++) {
		if (field.name == fieldsArray[i].fieldName) {
			if (field.value == fieldsArray[i].defVal) {
				field.value = "";
			};
		};
	};
};

function Form_FieldBlur(event, fieldsArray){
	if (document.all) field = event.srcElement;
	else field = event.target;
	for (var i = 0; i < fieldsArray.length; i++) {
		if (field.name == fieldsArray[i].fieldName) {
			if (field.value == "") {
				field.value = fieldsArray[i].defVal;
			};
		};
	};
};

function Form_AttachEvents(formName, fieldsArray, focusEvt, blurEvt) {
	var form = document.forms[formName];
	for (var i = 0; i < fieldsArray.length; i++) {
		if (fieldsArray[i].defVal != "") {
			var field = eval("form." + fieldsArray[i].fieldName);

			field.value = fieldsArray[i].defVal;

			addEvent(field, "focus", focusEvt);
			addEvent(field, "blur", blurEvt);
		};
	};
};
