//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()');
	}
}


/***********************************************
* Bookmark site script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* Modified to support Opera */
function bookmarksite(title,url){
if (window.sidebar) // firefox
	window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
	var elem = document.createElement('a');
	elem.setAttribute('href',url);
	elem.setAttribute('title',title);
	elem.setAttribute('rel','sidebar');
	elem.click();
} 
else if(window.external) { // ie
	window.external.AddFavorite(url, title) 
}
else // safari
	{ alert("Press 'COMMAND + D' to bookmark this page.");
}
}