// JavaScript Document
		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 any highlighted fields.';
			var errorImg='img/alert.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.nextSibling && /img/i.test(f.nextSibling.nodeName)) /*Original*/
				if(f.nextSibling && (f.nextSibling.className == 'failed_validation errorbackground'))
				{
					f.parentNode.removeChild(f.nextSibling);
				}
//				f.className='';
				f.style.background = '#ffffff';
//				f.style.border='1px solid #fff';
//				f.style.padding='0 0 0 0.5em';
//				f.style.margin='0 0 0.6em 0';

			}
		// 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==''){cf_adderr(f,'Required')}							
/*						if(f.value=='' && f.id!='Email'){cf_adderr(f,'Required')}							
		// email is a special field and needs checking
					if(f.id=='Email' && f.value==''){cf_adderr(f,'Email required')}
						else if(f.id=='Email' && !cf_isEmailAddr(f.value)){cf_adderr(f,'Please check email: Must contain one "@" and no spaces e.g. me@example.com or me.you@example.home.co.uk etc.')}				*/
						if(f.value=='' && f.id!='Price' && f.id!='Ad_url'){cf_adderr(f,'Required')}							
		// Price is a special field and needs checking
					if(f.id=='Price' && f.value==''){cf_adderr(f,'Required')}
						else if(f.id=='Price' && !cf_isPrice(f.value)){cf_adderr(f,'May contain only digits 0-9 and a decimal point followed by 2 digits if required e.g. 12500, 10.00 (no commas)')}
					if(f.id=='Ad_url' && f.value==''){cf_adderr(f,'Required')}
						else if(f.id=='Ad_url' && !cf_isUrl(f.value)){cf_adderr(f,'May contain only letters (a-z), numbers (0-9), a hyphen (-) and/or an underscore (_)')}				

						
					break;
					case 'textarea':
					if(f.value==''){cf_adderr(f,'Please enter some text')}
					if(f.value=='Include as much information as you can........... Please use proper capitalization where possible. Only use UPPERCASE for whole words when you want to emphasize them. If you use uppercase for every word it is difficult for some people to read and looks like you are SHOUTING.' && f.id=='_Description'){cf_adderr(f,'Please enter your own description')}
					break;
					case 'checkbox':
					if(!f.checked){cf_adderr(f,'Please tick box','noborder')}	/*original*/						
					break;
					case 'select-one':
//					if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f,'Please select one')}							
					if(f.value==''){cf_adderr(f,'Please select one')}							
					break;
				}
			}
			return !document.getElementById(errorID);

			/* Tool methods */
			function cf_adderr(o,p,q)
			{
				// create image, add to and colourise the error fields
				var errorIndicator=document.createElement('span');
				errorIndicator.innerHTML=p;

//				o.className=errorClass;
//				o.parentNode.insertBefore(errorIndicator,o); /* Original */
				o.parentNode.insertBefore(errorIndicator,o.nextSibling); 
				if (q == 'noborder')
				{
				o.style.background = 'transparent';
//				o.style.border='0 solid #000000';
//				o.style.padding='0';
//				o.style.margin='0 0 0.1em 0';
				}
				else
				{
				o.style.background = '#FFD7DA';
//				o.style.border='1px solid #000000';
//				o.style.padding='0 0 0 0.5em';
//				o.style.margin='0 0 0.6em 0';
				o.style.float='left';
				}
/*				o.nextSibling.style.padding = '0 1em 0 20px'; 
				o.nextSibling.style.background = '#FFD7DA url(/warning.gif) no-repeat';
				o.nextSibling.className = 'errorbackground'; //
*/				o.nextSibling.className = 'failed_validation errorbackground'; /* If change also change test on line 30 */
				

			// 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); /* Original */
					}	
				} 
			}
			function cf_isNumber(str) 
			{
			    return str.match(/^\d+(\.\d+)?$/);
			}
			function cf_isPrice(str) 
			{
			    return str.match(/^[0-9]{1,}(\.[0-9]{2})?$/);
			}
			function cf_isUrl(str) 
			{
			    return str.match(/^[\-_a-z0-9-]+$/);
			}
			function cf_isEmailAddr(str) 
			{
			    return str.match(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/);
//			    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
				
				/* Look at later for multiple email addresses.
				var emailReg = // Your email Regex here;
var myStr    = "me@domain.com, me2@domain.com, me3@domain.com"; // simulated data from a textfield
var emails   = myStr.split( /, ?/ );

for ( var i = 0; ( email = emails[i] ); i++ )
{
    if ( ! emailReg.test( email ) )
    {
        // didn't validate, do whatever here
    }
    else
    {
        // did validate
    }
}
				*/
			}
		}
