// Field validation functions


// ===== Validate mandatory field isn't blank =====
function FValidateInput(control,msg)
{
 if (control.value=="" || control.value==control.title)
    {
    control.focus()
    alert(msg)
    return false
    }
 return true
}


// ===== Validate email address =====
function FValidateEmail(control,msg)
{
var tmp=control.value
var found=0
  
if (tmp!="")
   {
   for(var i=0;i<tmp.length;i++)
      {
      if (tmp.charCodeAt(i)==64)
         found++
      }
 
   if (found==1)
      return true
   else
      {
      alert(msg)
      control.focus()
      return false
      }
   }
else
   {
   return true
   }
}


// ===== Force Into CAPS =====
function FCaps(control)
{
 var tmp=control.value.toUpperCase()
 control.value=tmp
 return true
}


// ===== Digits only =====
function FDigits(control,allow_space,msg)
{
var tmp=control.value
  
if (tmp!="")
   {
   for(var i=0;i<tmp.length;i++)
      {
      var ascval=tmp.charCodeAt(i)
      if ((ascval<48 && ascval!=32) || ascval>57 || (ascval==32 && allow_space!="yes"))
         {
         alert(msg)
         control.focus()
         return false
         }
      }
   }

 return true
}


// ===== Decimal only =====
function FDecimal(control,msg)
{
var tmp=control.value
  
if (tmp!="")
   {
   for(var i=0;i<tmp.length;i++)
      {
      var ascval=tmp.charCodeAt(i)
      if ((ascval<48 || ascval>57) && ascval!=46 && ascval!=45)
         {
         alert(msg)
         control.focus()
         return false
         }
      }
   }

 return true
}


// ===== Check mileage =====
function FMileage(control,allow_blank,msg)
{
 var miles=parseInt(control.value)
 if (isNaN(miles)==true)
    {
    miles=0
    }

 if (miles>999999 || (miles==0 && allow_blank!='yes'))
    {
    alert(msg)
    control.focus()
    return false
    }

 return true
}

// ===== Check NI number =====
function FValidateNi(control,msg)
{
var tmp=control.value.toUpperCase()

if (tmp.length!=9)
   {
   alert(msg)
   control.focus()
   return false
   }
else   
   {
   for(var i=0;i<tmp.length;i++)
      {
      var ascval=tmp.charCodeAt(i)
      
      // Check first two characters are alpha
      if (i<2 && (ascval<65 || ascval>90) )
         {
         alert(msg + 'none char in pos 1 or 2')
         control.focus()
         return false
         }
            
      // Check 3 to 7 are all digits
      if ((i>1 && i<8) && (ascval<48 || ascval>57) )
         {
         alert(msg + 'char in pos 3 to 7')
         control.focus()
         return false
         }
      }

      if ((tmp.substring(0,1)=="D") || (tmp.substring(0,1)=="F") &&
          (tmp.substring(0,1)=="I") || (tmp.substring(0,1)=="Q") &&
          (tmp.substring(0,1)=="U") || (tmp.substring(0,1)=="V"))
         {
         alert(msg + 'invalid first character')
         control.focus()
         return false
         }

      if ((tmp.substring(1,2)=="D") || (tmp.substring(1,2)=="F") &&
          (tmp.substring(1,2)=="I") || (tmp.substring(1,2)=="O") &&
          (tmp.substring(1,2)=="Q") || (tmp.substring(1,2)=="U") &&
          (tmp.substring(1,2)=="V"))
         {
         alert(msg + 'invalid second character')
         control.focus()
         return false
         }

      if ((tmp.substring(0,2)=="GB") || (tmp.substring(0,2)=="BG") ||
          (tmp.substring(0,2)=="NK") || (tmp.substring(0,2)=="KN") ||
          (tmp.substring(0,2)=="TN") || (tmp.substring(0,2)=="NT") ||
          (tmp.substring(0,2)=="ZZ"))
         {
         alert(msg + 'first two char include GB BG NK KN TN NT or ZZ')
         control.focus()
         return false
         }

      if ((tmp.substring(8)!="A") && (tmp.substring(8)!="B") &&
          (tmp.substring(8)!="C") && (tmp.substring(8)!="D") &&
          (tmp.substring(8)!=" "))
         {
         alert(msg + 'invalid last character')
         control.focus()
         return false
         }

   }

 return true
}

function daysInFebruary (year)
{
 return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function DaysArray(n)
{
 for (var i = 1; i <= n; i++)
  {
  this[i] = 31
  if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
  if (i==2) {this[i] = 29}
  } 
 return this
}

function FValidateIsDate(controld,controlm,controly,allow_blank,msg)
{
var daysInMonth = DaysArray(12)
var day=parseInt(controld.value)
var month=parseInt(controlm.value)
var year=parseInt(controly.value)

if (day==0 && month==0 && year==0 && allow_blank=='yes')
   {
   return true
   }

if (month<1 || month>12)
   {
   alert("Invalid month of " + msg)
   controlm.focus()
   return false
   }

if (day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
   alert("Invalid day of " + msg)
   controld.focus()
   return false
   }


if (year==0){
   alert("Invalid year of " + msg)
   controly.focus()
   return false
   }

return true
}

// Code end

