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='errorField'
	var errorMsg='Mandatory fields missing. All the fields marked with a (*) are required.';
	var errorImg='images/error.gif';
	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);
		//}

		// remove error field class only from fields that have it
		if(f) {
			f.className+=f.className?' noerrorField':'noerrorField';
		}
		//f.className='noerrorField';
	}
	
	// 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 'password':
				if(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)
	{
		// replace field class with error class
		o.className = errorClass;

		// add error field class instead of replace like above - need to figure this out
		//o.className+=o.className?' errorField':'errorField';

		// Check if there is no error message
		if(!document.getElementById(errorID))
		{
			var em=document.createElement('div');
			em.id=errorID;
			// scroll the page to the top so user can see error
			scroll(0,0);
			// build the error message
			document.getElementById('formerror').innerHTML = '<span class=errorText><img src=' + errorImg + '>' + errorMsg + '</span>'

			// 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}$/);
	}
}

function moreVehicles(elem,elem2){
	document.getElementById(elem).style.display="block";
	document.getElementById(elem2).style.display="none";
}
