<!--//
function checkform(of) {
	// Test if DOM is available and there is an element called required
	if (!document.getElementById || !document.createTextNode) {
		return;
	}
	if (!document.getElementById('required')) {
		return;
	}
	// Define error messages and split the required fields
	var errorID	= 'errormsg';
	var errorClass	= 'error'
	var errorMsg	= 'Please enter or change the fields marked with a ';
	var errorImg	= '/inc/exclamation.gif';
	var errorAlt	= 'Error';
	var errorTitle	= 'This field has an error!';
	var reqfields	= document.getElementById('required').value.split(',');
	// Cleanup old mess
	// if there is an old errormessage field, delete it
	if (document.getElementById(errorID)) {
		var em	= document.getElementById(errorID);
		em.parentNode.removeChild(em);
	}
	// remove old images and classes from the required fields
	for (var i=0;i<reqfields.length;i++) {
		var f	= document.getElementById(reqfields[i]);
		if (!f) {
			continue;
		}
		if (f.previousSibling && /img/i.test(f.previousSibling.nodeName)) {
			f.parentNode.removeChild(f.previousSibling);
		}
		f.className	= '';
	}
	// loop over required fields
	for (var i=0;i<reqfields.length;i++) {
		// check if required field is there
		var f	= document.getElementById(reqfields[i]);
		if (!f) {
			continue;
		}
		// test if the required field has an error, according to its type
		switch (f.type.toLowerCase()) {
			case 'text':
				if (f.value=='' && f.id!='email') {
					cf_adderr(f)
				}
				// email is a special field and needs checking
				if (f.id=='email' && !cf_isEmailAddr(f.value)) {
					cf_adderr(f)
				}
			break;
			case 'textarea':
				if (f.value=='') {
					cf_adderr(f)
				}
			break;
			case 'checkbox':
				if (!f.checked) {
					cf_adderr(f)
				}
			break;
			case 'select-one':
				if (!f.selectedIndex && f.selectedIndex==0) {
					cf_adderr(f)
				}
			break;
		}
	}
	return !document.getElementById(errorID);

	/* Tool methods */
	function cf_adderr(o) {
		// create image, add to and colourise the error fields
		var errorIndicator		= document.createElement('img');
		errorIndicator.alt		= errorAlt;
		errorIndicator.src		= errorImg;
		errorIndicator.title	= errorTitle;
		o.className				= errorClass;
		o.parentNode.insertBefore(errorIndicator,o);
		// Check if there is no error message
		if (!document.getElementById(errorID)) {
			// create errormessage and insert before submit button
			var em	 = document.createElement('div');
			em.id	 = errorID;
			var newp = document.createElement('p');
			newp.appendChild(document.createTextNode(errorMsg))
			// clone and insert the error image
			newp.appendChild(errorIndicator.cloneNode(true));
			em.appendChild(newp);
			// find the submit button 
			for (var i=0;i<of.getElementsByTagName('input').length;i++) {
				if (/submit/i.test(of.getElementsByTagName('input')[i].type)) {
					var sb	= of.getElementsByTagName('input')[i];
					break;
				}
			}
			if (sb) {
				sb.parentNode.insertBefore(em,sb);
			}
		}
	}
	function cf_isEmailAddr(str) {
		return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
}

//-->