function DCH_validateForm()
{
// defaults for the script
   var errors = '';
   var dateerror = '';
   var oMyForm = document.appform;
// regular expression patterns
   var validemail    = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
   var validname     = /^([a-zA-Z\-'])+ *([a-zA-Z\- '])*$/;
   var validphone    = /^[\d ]{10,}$/;
   var validpc1      = /^[a-zA-Z0-9 ]{2,}$/;
   var validpc2      = /^[a-zA-Z0-9 ]{3,}$/;
   var validcurrency = /^[0-9]{1,}$/;
   var valid3digit    = /^[0-9]{3}$/;
   var valid4digit    = /^[0-9]{4}$/;

// test for basic mandatory form field values
   if(oMyForm.c1_ttl.value =='')
   {errors+='Select your title from the list.\n';}
   if(!validname.test(oMyForm.c1_fn.value))
   {errors+='Provide your first name.\n';}
   if(!validname.test(oMyForm.c1_sn.value))
   {errors+='Provide your last name.\n';}
   if(!validemail.test(oMyForm.c1_em.value))
   {errors+='Provide a valid email address.\n';}
// DATE OF BIRTH CHECK
   if(oMyForm.c1_day.value != '' && oMyForm.c1_mnth.value != '' && oMyForm.c1_yr.value != '')
   {
      if(!valid4digit.test(oMyForm.c1_yr.value))
      { dateerror++; }
      if((oMyForm.c1_day.value == 31) && (oMyForm.c1_mnth.value == 4 || oMyForm.c1_mnth.value == 6 || oMyForm.c1_mnth.value == 9 || oMyForm.c1_mnth.value == 11))
      { dateerror++; }
      if((oMyForm.c1_day.value > 29) && (oMyForm.c1_mnth.value == 2)) 
      { dateerror++; }
   }
   else 
   { dateerror++; }
   if(dateerror) 
   { errors+='Invalid date for date of birth.\n'; }
// END OF DATE OF BIRTH CHECK
   if((!validphone.test(oMyForm.c1_th.value)) && (!validphone.test(oMyForm.c1_tm.value)))
   {errors+='Provide at least one contact telephone number.\n';}
   if(oMyForm.calltime.value =='')
   {errors+='Tell us the best time to call you.\n';}
   if((oMyForm.c1_ad1.value =='') && (oMyForm.c1_ad2.value =='') && (oMyForm.c1_cty.value ==''))
   {errors+='Provide your postal address.\n';}
   if(!validpc1.test(oMyForm.c1_pc1.value) || !validpc2.test(oMyForm.c1_pc2.value))
   {errors+='Please provide a valid postcode.\n';}
   if(oMyForm.livingstatus.value =='')
   {errors+='Please select your living status.\n';}
   if(oMyForm.c1_mar.value =='')
   {errors+='Please select your marital status.\n';}
   if(oMyForm.c1_dep.value =='')
   {errors+='How many dependants do you have?.\n';}
   
   if(!validcurrency.test(oMyForm.ff_adm.value) && oMyForm.ff_adm.value != '')
   {errors+='Invalid mortgage equity.\n';}
   if(!validcurrency.test(oMyForm.ff_adv.value) && oMyForm.ff_adv.value != '')
   {errors+='Invalid vehicle value.\n';}
   if(!validcurrency.test(oMyForm.ff_adhp.value) && oMyForm.ff_adhp.value != '')
   {errors+='Invalid outstanding HP.\n';}
   if(!validcurrency.test(oMyForm.ff_adc.value) && oMyForm.ff_adc.value != '')
   {errors+='Invalid cash in bank amount.\n';}
   if(!validcurrency.test(oMyForm.ff_ado.value) && oMyForm.ff_ado.value != '')
   {errors+='Invalid other assets amount.\n';}
   if(!validcurrency.test(oMyForm.ff_esm.value) && oMyForm.ff_esm.value != '')
   {errors+='Invalid mortgage expense.\n';}
   if(!validcurrency.test(oMyForm.ff_esi.value) && oMyForm.ff_esi.value != '')
   {errors+='Invalid insurances amount.\n';}
   if(!validcurrency.test(oMyForm.ff_esu.value) && oMyForm.ff_esu.value != '')
   {errors+='Invalid utilities amount.\n';}
   if(!validcurrency.test(oMyForm.ff_eso.value) && oMyForm.ff_eso.value != '')
   {errors+='Invalid other expenses amount.\n';}
   
   if(!validcurrency.test(oMyForm.ff_igr1.value) && oMyForm.ff_igr1.value != '')
   {errors+='Invalid salary amount.\n';}
   if(!validcurrency.test(oMyForm.ff_id2.value) && oMyForm.ff_id2.value != '')
   {errors+='Invalid 2nd income amount.\n';}
   if(!validcurrency.test(oMyForm.ff_idp.value) && oMyForm.ff_idp.value != '')
   {errors+='Invalid pension income amount.\n';}
   if(!validcurrency.test(oMyForm.ff_ids.value) && oMyForm.ff_ids.value != '')
   {errors+='Invalid income support amount.\n';}
   if(!validcurrency.test(oMyForm.ff_idf.value) && oMyForm.ff_idf.value != '')
   {errors+='Invalid family tax credit amount.\n';}
   if(!validcurrency.test(oMyForm.ff_idc.value) && oMyForm.ff_idc.value != '')
   {errors+='Invalid child benefit amount.\n';}
   if(!validcurrency.test(oMyForm.ff_ido.value) && oMyForm.ff_ido.value != '')
   {errors+='Invalid other income amount.\n';}

   if(oMyForm.ff_dde1.value == '' || oMyForm.ff_do1.value == '')
      {errors+='Please complete at least one outstanding debt entry.\n';}

   if(oMyForm.ff_dde1.value != '' || oMyForm.ff_do1.value != '')
   {  if(oMyForm.ff_dde1.value == '' || !validcurrency.test(oMyForm.ff_do1.value) )
      {errors+='First outstanding debt details incomplete.\n';}
   }
   if(oMyForm.ff_dde2.value != '' || oMyForm.ff_do2.value != '')
   {  if(oMyForm.ff_dde2.value == '' || !validcurrency.test(oMyForm.ff_do2.value) )
      {errors+='Second outstanding debt details incomplete.\n';}
   }
   if(oMyForm.ff_dde3.value != '' || oMyForm.ff_do3.value != '')
   {  if(oMyForm.ff_dde3.value == '' || !validcurrency.test(oMyForm.ff_do3.value) )
      {errors+='Third outstanding debt details incomplete.\n';}
   }
   if(oMyForm.ff_dde4.value != '' || oMyForm.ff_do4.value != '')
   {  if(oMyForm.ff_dde4.value == '' || !validcurrency.test(oMyForm.ff_do4.value) )
      {errors+='Fourth outstanding debt details incomplete.\n';}
   }
   if(oMyForm.ff_dde5.value != '' || oMyForm.ff_do5.value != '')
   {  if(oMyForm.ff_dde5.value == '' || !validcurrency.test(oMyForm.ff_do5.value) )
      {errors+='Fifth outstanding debt details incomplete.\n';}
   }

// check to see if agreement has been checked
   if(oMyForm.dataprotection.checked == false)
         {errors+='Please tick the box to accept our data protection information.\n';}

// show errors or submit form
   if (errors){alert('We cannot accept your application until the following fields are completed\n-----------------------------------------------------------------------------\n'+errors);}
   else{oMyForm.submit();}
}