//Trim supplied string of trailing whitespaces 
function rtrim(totrim) {
	var w_space = String.fromCharCode(32);
	var v_length = totrim.length;
	var strTemp = '';
	if (v_length < 0){
		return '';
	}
	var iTemp = v_length -1;
	while (iTemp > -1) {
		if (!(totrim.charAt(iTemp) == w_space)) {
			strTemp = totrim.substring(0, iTemp + 1);
			break;
		}
		iTemp = iTemp - 1;
	}
	return strTemp;
}

//Trim supplied string of leading whitespaces 
function ltrim(totrim){
	var w_space = String.fromCharCode(32);
	if (v_length < 1) {
		return '';
	}
	var v_length = totrim.length;
	var strTemp = '';
	var iTemp = 0;

	while (iTemp < v_length){
		if (!(totrim.charAt(iTemp) == w_space)) {
			strTemp = totrim.substring(iTemp, v_length);
			break;
		}
		iTemp = iTemp + 1;
	}
	return strTemp;
}

//Trim supplied string of leading and trailing whitespaces 
function trim(totrim) {
	if (totrim.length < 1) {
		return '';
	}
	totrim = rtrim(totrim);
	totrim = ltrim(totrim);
	if (totrim == '') {
		return '';
	} else {
		return totrim;
	}
}

//Make a "delimiterField" delimited list of all data fields (fields not named as conf_) in the form 
function getAllDataFields(thisform, delimiter) {
	var i = 0;
	var myFormElementsStr = 'document.' + thisform + '.elements';
	var fieldsCount = eval(myFormElementsStr + '.length');
	var thisFieldName = '';
	var returnFields = '';
	for (i=0;  i<fieldsCount ; i++) {
		thisFieldName = eval(myFormElementsStr + '[' + i + '].name');
		if (thisFieldName.substring(0, 5) != 'conf_') {
			returnFields += thisFieldName + delimiter;
		}
	}
	returnFields = returnFields.substring(0, returnFields.length - delimiter.length);
	return returnFields;
}

//Validate 'document.thisform' for required fields being filled
function validateForm(thisform, requiredFieldsField, delimiterField) {
	var trimmedFields = trim(eval('document.' + thisform + '.' + requiredFieldsField + '.value'));
	var trimmedValue = '';
	var blankFields = '';
	var delimiter = eval('document.' + thisform + '.' + delimiterField + '.value');
	if (trimmedFields != '') {
		if (trimmedFields == '*') {
			trimmedFields = getAllDataFields(thisform, delimiter);
		}
		var arr = trimmedFields.split(delimiter);
		for (var i=0 ; i<arr.length ; i++) {
			trimmedValue = trim(eval('document.' + thisform + '.' + arr[i] + '.value'));
			if (trimmedValue.length < 1) {
				blankFields += '    ' + arr[i].replace(/_/g, ' ') + '\n';
			}
		}
	}
	if (blankFields != '') {
		alert('The following required fields need to be filled out -\n' + blankFields + '\nPlease fill these fields out and submit again.');
	} else {
		eval('document.' + thisform + '.submit()');
	}
}
