function checkform()
{
	formObj = document.forms[checkform.arguments[0]];
	if(!document.createTextNode){return;}

	if(!formObj.elements['required']) {return;}

	var reqfields=formObj.elements['required'].value.split(',');
	var error;
	var errorMsg;

// Cleanup old mess
  // if there is an old error field, delete it
  for(var i=0;i<reqfields.length;i++)
  {
// check if the error is set
	f=formObj.elements[reqfields[i]];
	if (f.style) {
		f.style.backgroundColor = "#ffffff";
	}
	else  {
		document.getElementById(f[0].name).style.backgroundColor = "#ffffff";
	}
// alert(f.style.backgroundColor);
}

// loop over required fields
  for(var i=0;i<reqfields.length;i++)
  {
// check if required field is there
    var f=formObj.elements[reqfields[i]];
    if(!f){continue;}

// test if the required field has an error according to its type

if (f.type) {
    switch(f.type.toLowerCase())
    {
	case 'text':
	if (f.value=='' && f.name !='email')
	{
		cf_adderr(f);
		errorMsg='Please fill in all required fields!';
	}

	// email is a special field and needs checking
	if (((f.name == 'email') || (f.name == 'submit_by')) && !cf_isEmailAddr(f.value))
	{
		cf_adderr(f);
		errorMsg=f.value + " is not a valid e-mail address. Please re-enter your e-mail address";
	}

	break;
	case 'textarea':
	if(f.value=='')
	{
		cf_adderr(f);
		errorMsg='Please fill in all required fields!';
	}
	break;
	case 'checkbox':
	if(!f.checked)
	{
		cf_adderr(f)
		errorMsg='Please fill in all required fields!';
	}
	break;
	case 'select-one':
	if(!f.selectedIndex && f.selectedIndex==0)
	{
		cf_adderr(f);
		errorMsg='Please fill in all required fields!';
	}
	break;
	case 'password':
	if(f.value=='')
	{
		cf_adderr(f);
		errorMsg='Please fill in all required fields!';
	}
	if (formObj.elements["passwordNew"].value != formObj.elements["passwordVerify"].value)
	{
		cf_adderr(f);
		errorMsg='Password Missmatch!';
	}
	break;
   }
}
else {
	// checkbox
	flag = "zero";
	for (var idx=0;idx<f.length;idx++) {
		if (f[idx].checked)
		{
			flag = "OK";
		}
	}
	if (flag == "zero")
	{
		errorMsg='Please fill in all required fields!';
		cf_adderr(document.getElementById(f[0].name));
	}
}
}



	if (error)
	{
		alert (errorMsg);
	}

 	return !error;





  /* Tool methods */
  function cf_adderr(el)
  {
// red error fields
	el.style.backgroundColor = "#f7ec14";
	error = true;
  }

  function cf_isEmailAddr(str)
  {
//       return str.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
      return str.match(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/);
//       return str.match(/^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/);
//       return str.match(/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])(([a-z0-9-])*([a-z0-9]))+(\.([a-z0-9])([-a-z0-9_-])?([a-z0-9])+)+$/i/);
  }
}

