function formSubmit(formObj) {
	if (formValidate(formObj)) {
		// convert selected items in list QueryRef into string form and
		// assing value to QueryString field in form
		var queryRef = getSelectList(formObj.QueryRef);
		var queryStr = ""	
		for(var i=0; i<queryRef.length; i++) {
			if (i>0) {
				queryStr = queryStr + ", " + queryRef[i];
			}
			else {
				queryStr = queryRef[i];
			}
		}
		formObj.QueryString.value = queryStr;
		return true;
	}
	else {
		// form validation failed 
		return false;
	}
}

function formTestRequired(formObj) {
	var requiredErr = '';
	
	//form attributes
	var companyName = formObj.CompanyName.value;
	var contact = formObj.Contact.value;
	var tel = formObj.Telephone.value;
	var fax = formObj.Fax.value;
	var email = formObj.Email.value;
	var add1 = formObj.Add1.value;
	var queryRef = getSelectList(formObj.QueryRef);
	var msg = formObj.Message.value;
	
	if (companyName == '') {
		requiredErr += '	* Company Name\n';
	}
	if (contact == '') {
		requiredErr += '	* Contact\n';
	}
	if ((tel == '') && (fax =='')) {
		requiredErr += '	* Tel / Fax\n';
	}
	if (email == '') {
		requiredErr += '	* Email\n';
	}
	if (add1 == '') {
		requiredErr += '	* Address (Line 1)\n';
	}
	if (contact == '') {
		requiredErr += '	* Contact\n';
	}
	if (queryRef.length == 0) {
		requiredErr += '	* Reference to\n';
	}
	if (msg == '') {
		requiredErr += '	* Message\n';
	}
	
	return requiredErr;
}

function formTestValid(formObj) {
	var validErr = '';
	
	//form attributes
	var tel = formObj.Telephone.value;
	var fax = formObj.Fax.value;
	var email = formObj.Email.value;
	
	if (tel != '') {
		if (isNaN(tel)) {
			validErr += '	* Telephone contains invalid characters\n';
		}
	}
	if (fax != '') {
		if (isNaN(fax)) {
			validErr += '	* Fax contains invalid characters\n';
		}
	}
	if (email != '') {
		if (!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email))) {
			validErr += '	* Email must be in the form of someone@somewhere.somewhere';
		}
	}

	return validErr;
}

function formValidate(formObj) {
	var requiredErr = formTestRequired(formObj);
	var validErr = formTestValid(formObj);
	if ((requiredErr != '') || (validErr != '')) {
		var errMsg = 'Your request was not processed due to the following error(s)\n\n';
		if (requiredErr != '') {
			errMsg += 'Missing Information : Please supply the following data\n';
			errMsg += requiredErr;
		}
		if (validErr != '') {
			if (requiredErr != '') { errMsg += '\n'; }
			errMsg += 'Invalid Information:\n';
			errMsg += validErr;
		}
		alert(errMsg);
		return false;
	}
	else {
		return true;
	}
}

function getSelectList(obj) {
	var selectList = new Array();
	if (obj) {
		var j=0;
		for(var i=0; i<obj.options.length; i++) {
			if (obj.options[i].selected) {
				selectList[j] = obj.options[i].text;
				j++;
			}
		}
	}
	
	return selectList;
}