  function checkDate(d,m,y)
  { // Checks for valid date in range 1/1/1900 to 31/12/2099
    if (!isNumeric(d) || !isNumeric(m) || !isNumeric(y)) {return false;}
        if (m<1 || m>12) {return false;}
        if (y<1900 || y>2099) {return false;}
    var daysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
        if (y%1000==0 ||(y%4==0 && y%100!=0)) {daysInMonth[1]=29;}
        if (d<1 || d>daysInMonth[m-1]) {return false;}
        return true;
  }


  function checkEmail(email)
  { // this checks for a valid format email address
//    var pattern=/^[a-zA-Z0-9]+([.|_|-][a-zA-Z0-9]+)?[@]{1}[a-zA-Z0-9]+([.|_|-][a-zA-Z0-9]+)*[.]{1}[a-zA-Z0-9]{2,3}$/;
    var pattern=/^[a-zA-Z0-9]+([.|_|-][a-zA-Z0-9]+){0,2}[@]{1}[a-zA-Z0-9]+([.|_|-][a-zA-Z0-9]+)*[.]{1}[a-zA-Z0-9]{2,3}$/;
    var result=email.match(pattern);
    if (result==null)
      {
       return false;
      }
      else  return true;
  }




  function checkPass(pass)
  { // This checks password is 6-12 chars, starts with a letter and contains
    // only alphanumerics

        if (pass.length<6 || pass.length>12) {return false;}
        var pattern=/^[a-zA-Z][a-zA-Z0-9]{0,11}$/;
    var result=pass.match(pattern);
    if (result==null)
      {
       return false;
      }
      else  return true;
  }

  function checkPhoneNo(phone)
  { // This checks a phone number contains at least 11 digits. It
    // ignores blanks and hyphens
        var p=phone.replace(/ |-/g,""); // Remove blanks or hyphens
        if (p.length<11 || !isNumeric(p)) {return false;}
        else {return true;}
  }

  function checkTime(h,m)
  {
    if (!isNumeric(h) || !isNumeric(m)) {return false;}
        if (h<0 || h>23) {return false;}
        if (m<0 || m>59) {return false;}
        return true;
  }

  function checkURL(URL)
  { // this checks for a valid format URL
    // NB this does not check anything beyond the basic address - ie no parameters
        var patternFormat=/^(http\:\/\/)?(www\.)?[a-zA-Z0-9]+([.|_|-][a-zA-Z0-9]+)+[.]{1}[a-zA-Z0-9]{2,3}/;
    var result=URL.match(patternFormat);
    if (result==null)
      {
       return false;
      }
      else  return true;
  }

  function compareDates(f, date1Name, date2Name)
  { // This function validates the two dates and if both are valid it compares them.
    // It returns results as follows:
    // -1  One or both of the dates is invalid
    // 0 The dates are equal
    // 1 The first date is later than the second
    // 2 The second date is later than the first
     var opt=eval("f." + date1Name + "Day.selectedIndex");
     var day=eval("f." + date1Name + "Day.options[opt].text");
     opt=eval("f." + date1Name + "Month.selectedIndex");
     var month=eval("f." + date1Name + "Month.options[opt].value");
     opt=eval("f." + date1Name + "Year.selectedIndex");
     var year=eval("f." + date1Name + "Year.options[opt].text");

     if (!checkDate(day, month, year)) {return -1;}
     var tempMonth=month-1;    // Date expects an offset Month
     var firstDate=new Date(year, tempMonth, day);

     var opt=eval("f." + date2Name + "Day.selectedIndex");
     var day=eval("f." + date2Name + "Day.options[opt].text");
     opt=eval("f." + date2Name + "Month.selectedIndex");
     var month=eval("f." + date2Name + "Month.options[opt].value");
     opt=eval("f." + date2Name + "Year.selectedIndex");
     var year=eval("f." + date2Name + "Year.options[opt].text");

     if (!checkDate(day, month, year)) {return -1;}
     var tempMonth=month-1;    // Date expects an offset Month
     var secondDate=new Date(year, tempMonth, day);
     if (firstDate.getTime()==secondDate.getTime())  {return 0;}
     if (firstDate.getTime()>secondDate.getTime())  {return 1;}
     return 2;
  }

  function empty(s)
  {
    if (s=="" || s==null || isblank(s)) {return true;}
        else {return false;}
  }

  function generateRandomNo(x, y)
  { // This function generates a random integer between x & y
    var range = y - x + 1;
    return Math.floor(Math.random() * range) + x;
  }

  function getElement(id)
  {
    if (document.getElementById) {var elmt=document.getElementById(id);}
    else
    {
      if (document.all) {var elmt=document.all[id];}
          else
          {
            if (document.layers) {var elmt=document.layers[id];}
            else elmt=false;
          }
    }
    if (!elmt)
    {
      // alert ("getElement(): Element " + id + " not found");      // Testing only
      return false;
    }
    return elmt;
  }

  function isblank (s)
  { // Returns false if field contains any non-blank chars other than new line
    for (var i=0; i<s.length; i++) {
      var c=s.charAt(i);
          if (c!=" " && c!="\n" && c!="") {
          return false;
          }
    }
    return true;
  }


  function isNumeric (number, decPlaces)
  { // This function checks for numerics with a maximum of decPlaces decimal places
    var pattern="/^[0-9]+$/";
    if (decPlaces!='0')
        { // Decimal places allowed
          var dPlaces=2;
          var strPlaces=String(decPlaces);
      var result=strPlaces.match(pattern);
          if (result)  {dPlaces=decPlaces;}
          pattern=eval("/^([-])?[0-9]+([.][0-9]{1," + dPlaces + "})?$/");
    }
        var result=number.match(pattern);
        return result;
  }


  function makeTime(f, timeName)
  {
    var opt=eval("f." + timeName + "Hour.selectedIndex");
        var hour=eval("f." + timeName + "Hour.options[opt].text");
        opt=eval("f." + timeName + "AmPm.selectedIndex");
        var amPm=eval("f." + timeName + "AmPm.options[opt].text");
        opt=eval("f." + timeName + "Minutes.selectedIndex");
        var minutes=eval("f." + timeName + "Minutes.options[opt].text");
        if (amPm=="pm" && hour!=12) {hour=Number(hour)+12;}
        else
        {
          if (hour<10) {hour="0"+hour;}
        }
        if (minutes<10) {minutes="0" + minutes;}
        return hour+":"+minutes;
  }


  function newWindow(url, w, h)
  { // Opens URL w in a new window positioned top left and ensures it has the focus
    if (!w) {var wide=400;} else {wide=w;}
        if (!h) {var high=450;} else {high=h;}
        var paras="width=" + wide + ",height=" + high + "align=center scrollbars=yes, left=0, top=0, screenx=0, screeny=0";
    var x=window.open(url, "newWindow", paras);
        x.window.focus();
  }

  function refreshFrames(first, second)
  { // Refreshes contents of specified frams, where first & second are frame names. Use OnClick...
    eval("parent." + first + ".document.reload()");
    eval("parent." + second + ".document.reload()");
  }

  function setFrameURL (frameName, URL)
  { // Reloads the specified frame with the specified URL
    eval("parent." + frameName + ".location.href = '" + URL + "'" );
  }

  function validateDate(f, dateName, future)
  {
     var opt=eval("f." + dateName + "Day.selectedIndex");
     var day=eval("f." + dateName + "Day.options[opt].text");
     opt=eval("f." + dateName + "Month.selectedIndex");
     var month=eval("f." + dateName + "Month.options[opt].value");
     opt=eval("f." + dateName + "Year.selectedIndex");
     var year=eval("f." + dateName + "Year.options[opt].text");

     if (future!=null)
     {
       var tempMonth=month-1;    // Date expects an offset Month
       var theDate=new Date(year, tempMonth, day);
       var today=new Date();
       today.setHours(0,0,0,0);
       if (future=="Past")
       {
         if (theDate.getTime()>today.getTime()) {return false;}
       }
       else
       {
         if (theDate.getTime()<today.getTime()) {return false;}
       }
     }
     return checkDate(day, month, year);
  }

  function validateSlashDate(ddmmyy)
  {
    var dateArray=ddmmyy.split("/");
        var d=dateArray[0];
        var m=dateArray[1];
        var y=dateArray[2];
        if (empty(d) || empty(m) || empty(y)) {return false;}
        var valid=checkDate(d, m, y);
        return valid;
  }

var win=null;
function NewWindow(mypage,myname,w,h,pos,infocus){
if(pos=="random"){myleft=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;mytop=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){myleft=(screen.width)?(screen.width-w)/2:100;mytop=(screen.height)?(screen.height-h)/2:100;}
else if((pos!='center' && pos!="random") || pos==null){myleft=0;mytop=20}
settings="width=" + w + ",height=" + h + ",top=" + mytop + ",left=" + myleft + ",scrollbars=no,location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes";win=window.open(mypage,myname,settings);
win.focus();}