
		function IsValidPostCode(source, args)
		{
		
  // Permitted letters depend upon their position in the postcode.
  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkstuw]";                                // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  

  // Array holds the regular expressions for the valid postcodes
  var pcexp = new Array ();

  // Expression for postcodes: AN NAA, ANN NAA, AAN NAA, and AANN NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  // Expression for postcodes: ANA NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));

  // Expression for postcodes: AANA  NAA
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  
  

  // Load up the string to check
  var postCode = args.Value;

  // Assume we're not going to find a valid postcode
  var valid = false;
  
  // Check the string against the types of post codes
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
    
      // The post code is valid - split the post code into component parts
      pcexp[i].exec(postCode);
      
      // Copy it back into the original string, converting it to uppercase and
      // inserting a space between the inward and outward codes
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      

      
      // Load new postcode back into the form element
      valid = true;
      
      // Remember that we have found that the code is valid and break from loop
      break;
    }
  }
  
  // Return with either the reformatted valid postcode or the original invalid 
  // postcode
  args.IsValid=valid;

		}



function IsMOTDateValid(y,m,d){

var isoThirteenMonthsAge  = new Date();
var isoThirteen,isoCheck

	if (ValidateDate(y,m,d))
	{
		isoThirteenMonthsAge.setMonth(isoThirteenMonthsAge.getMonth() - 13);
		isoThirteen = (isoThirteenMonthsAge.getFullYear()*10000) + ((isoThirteenMonthsAge.getMonth()+1) *100)+ (isoThirteenMonthsAge.getDate()) ;
		isoCheck = (y*10000)+(m*100)+(d*1);
		return (isoThirteen <= isoCheck);
	}else 
	{
	  return false;
	}


}


function getObject(szDivID) 
{
	if(document.layers)	   //NN4+
	{
		return document.layers[szDivID];
	}
	else if(document.getElementById)	  //gecko(NN6) + IE 5+
	{
		return document.getElementById(szDivID);
		
	}
	else if(document.all)	// IE 4
	{
		return document.all[szDivID];
	}
}

function getAge(y,m,d){

var today  = new Date();
var isoToday,isoCheck;

//alert((((today.getMonth()+1) *100)+ (today.getDate()) > ((m*100)+(d*1)) ? 1 :0));
return ((today.getFullYear() - y*1)- (((today.getMonth()+1) *100)+ (today.getDate()) > ((m*100)+(d*1)) ? 0 :1));


}

function IsDateInThePast(y,m,d) {

var today  = new Date();
var isoToday,isoCheck;

isoToday = (today.getFullYear()*10000) + ((today.getMonth()+1) *100)+ (today.getDate()) ;
isoCheck = (y*10000)+(m*100)+(d*1);


return (isoCheck < isoToday);
}



function IsDateInTheFuture(y,m,d) {

var today  = new Date();
var isoToday,isoCheck;

isoToday = (today.getFullYear()*10000) + ((today.getMonth()+1) *100)+ (today.getDate()) ;
isoCheck = (y*10000)+(m*100)+(d*1);

return (isoCheck >= isoToday);
}

function ValidateDate(y, m, d) { var D // m = 1..12 ; y m d ints, y!=0
  with (D=new Date(y, --m, d))
    return (getMonth()==m && getDate()==d) ? true : false }

