// checks input of contact form
function hasValidInput(formObj, lang) {
		try{
			var fields = formObj.elements;
			var errorMessage = '';
			var matchesType;
			var matchesCheck;
			var tmpErrorMessage = '';
			var fieldName = '';
			
			/******** start: customizable field types ********/
			var regExpFieldTypes = {
															'obligatory':		/(?:^|\s+)obligatory(?:$|\s+)/,
															'email':				/(?:^|\s+)email(?:$|\s+)/
														}
			var regExpFieldChecks = {
																'obligatory': /\w+/, 
																'email': 			/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9äÄöÖüÜß-]+(\.[a-zA-Z0-9äÄöÖüÜß-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$/ // taken from <http://regexlib.com/DisplayPatterns.aspx>
															};
			var errorMessages = {
														'obligatory': { 
																						'de': 'Bitte füllen Sie das Feld "__name__" aus.' + "\n",
																						'en': 'Please fill in the field "__name__".' + "\n"
																					},
														'email': 			{
																						'de':	'Die angebenene E-Mail-Adresse "__value__" in Feld "__name__" hat kein gültiges Format.' + "\n",
																						'en':	'The given e-mail address "__value__" in field "__name__" has no valid format.' + "\n"
																					},
														'prelude': { 
																						'de': 'Das Formular kann aus folgenden Gründen nicht abgeschickt werden:' + "\n\n",
																						'en': 'The form cannot be submitted due to the following reasons:' + "\n\n"
																					}
													};
			/******** end: customizable field types ********/
			
			
			for(var i=0; i<fields.length; i++) {
				fields[i].className = fields[i].className.replace(/(?:^|\s+)invalid(?:$|\s+)/, '');
				for(type in regExpFieldTypes) {
					tmpErrorMessage = ''
					if(fields[i].className.match(regExpFieldTypes[type]) && !fields[i].value.match(regExpFieldChecks[type])) {
						fieldName = getLabelTitle(fields[i].id, formObj);
						tmpErrorMessage = errorMessages[type][lang];
						tmpErrorMessage = tmpErrorMessage.replace(/__name__/, fieldName);
						tmpErrorMessage = tmpErrorMessage.replace(/__value__/, fields[i].value);
						errorMessage += tmpErrorMessage;
						fields[i].className += ' invalid';
						if(type == 'obligatory') break;
					}
				}
			}
			
			if(errorMessage != '') {
				errorMessage = errorMessages['prelude'][lang] + errorMessage;
				alert(errorMessage);
				return false;
			} else {
				return true;
			}
		} catch(err) {
			// alert(err);
		}
}



// retrieves the value of the given form field's label
function getLabelTitle(fieldId, formObj) {
	var labels = formObj.getElementsByTagName('label');
	for(var i=0; i<labels.length; i++) {
		if(labels[i].htmlFor == fieldId) {
			return labels[i].firstChild.nodeValue;
		}
	}
}