	//
	// Form validation functions
	//
	

	function isFormFieldExists(formFieldId) {
		if(formFieldId.indexOf('#') == -1)
		{
			// textual fields
			return (document.getElementById(formFieldId) != undefined);
		}
		else
		{
			// group fields: radio, checkbox ..
			fieldItems  = formFieldId.split("#");
			return (document.getElementById(fieldItems[0] + "_1") != undefined);
		}
	}
	
	function isFormFieldFilled(formFieldId) {
		if(formFieldId.indexOf('#') == -1)
		{
			// textual fields
			return (isFormFieldExists(formFieldId) && (document.getElementById(formFieldId).value != ''))
		}
		else
		{
			// group fields: radio, checkbox ..
			formFieldFilled = false;
			fieldItems  = formFieldId.split("#");
			for(j = 0; j < fieldItems[1]; j++)
			{
				fieldName = fieldItems[0] + "_" + (j + 1);
				if(document.getElementById(fieldName).checked == true && isFormFieldExists(fieldName))
				{
					formFieldFilled	= true;
				}
			}
			return formFieldFilled;
		}
	}
	
	function validateFormFields(warningTitle, fieldsArray,color) {
		warningMessage = '';
		for (i=0; i<fieldsArray.length; i++) 
		{
			if (!isFormFieldFilled(fieldsArray[i][0])) 
			{
				warningMessage += '- ' + fieldsArray[i][1] + '\n';
				document.getElementById(fieldsArray[i][0]).style.backgroundColor = color;
			}
		}
		if (warningMessage != '') 
		{
			alert(warningTitle);
			return false;
		}
		else
			return true;
	}
	
