function DCH_validateMortgageForm()
{
// 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 validpc1       = /^[a-zA-Z0-9 ]{2,}$/;
   var validpc2       = /^[a-zA-Z0-9 ]{3,}$/;
   var valid3digit    = /^[0-9]{3}$/;
   var valid4digit    = /^[0-9]{4}$/;
   var validcurrency  = /^[0-9]{4,}$/;
   var validphone     = /^[\d ]{10,}$/;

// 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'; }
// 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(!validemail.test(oMyForm.c1_em.value))
   { errors+='Provide a valid email address.\n'; }
   if(!validphone.test(oMyForm.c1_th.value) && !validphone.test(oMyForm.c1_tw.value) && !validphone.test(oMyForm.c1_tm.value))
   { errors+='Please provide at least one contact number.\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.ff_et1.value =='')
   { errors+='Select your employment status from the list.\n'; }
   if((oMyForm.ff_igr1.value !='') && (!validcurrency.test(oMyForm.ff_igr1.value)))
   { errors+='Gross Annual Income field is invalid.\n'; }

// credit history checks			
   if(oMyForm.ff_cr1.value =='')
   { errors+='Select your credit rating from the list.\n'; }

// loan requirement checks
   if(oMyForm.ff_ct.value =='')
   { errors+='Select the required mortgage type from the list.\n'; }
   if( (!validcurrency.test(oMyForm.ff_pp.value) ) || (parseInt(oMyForm.ff_pp.value) < 15000 ) )
   { errors+='Provide purchase price/estimated value.\n'; }
   if( (!validcurrency.test(oMyForm.ff_mr.value) ) || (parseInt(oMyForm.ff_mr.value) < 15000 ) )
   { errors+='Provide required mortgage amount (at least £15000).\n'; }
   if(oMyForm.ff_mt.value =='')
   { errors+='Select repayment type.\n'; }
   if(isNaN(oMyForm.ff_mty.value) || (oMyForm.ff_mty.value <3))
   {errors+='Please state required repayment period.\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();}
}

