function maketoday() {
   invalid="<font color=red>INVALID</font>"
   today=new Date()
   today_d=today.getDate()
   today_m=today.getMonth()+1
   today_y=today.getFullYear()-2000
}

function makemonthyear(m,y) {
   y=y.toString()
   if(y.length<2)y="0"+y
   var mi=parseInt(m,10)
   switch(mi) { 
      case 1: mn="January";break
      case 2: mn="Febuary";break
      case 3: mn="March";break
      case 4: mn="April";break
      case 5: mn="May";break
      case 6: mn="June";break
      case 7: mn="July";break
      case 8: mn="August";break
      case 9: mn="September";break
      case 10: mn="October";break
      case 11: mn="November";break
      case 12: mn="December";break
      default: mn=invalid+"("+m+")"
   }
   if (y.length>3 || isNaN(parseInt(y,10))) y=invalid+"("+y+")"
   mn+=" 20"+y
   return mn
}

function makedate(d,m,y) {
   var di=parseInt(d,10)
   var mi=parseInt(m,10)
   var yi=parseInt(y,10)
   var fd=(yi/4==parseInt(yi/4,10)) ? 29 : 28 // days in feb leap year calc - ignores every 4th century clause as this code won't be around by the time it matters again
   var dv=false
   var ds=invalid+"("+d+")"
   if (di>0) {
      switch(mi) {
         case 9 : if (di<=30) dv=true;break // checks date is valid for month
         case 4 : if (di<=30) dv=true;break
         case 6 : if (di<=30) dv=true;break
         case 11 : if (di<=30) dv=true;break
         case 2 : if (di<=fd) dv=true;break
         default : if (di<=31) dv=true
      }
   }
   if (dv) {
      d=d.toString()
      ds=d
      var suf="th"
      if (d.charAt(0)!="1") { // 11th 12th 13th not 11st 12nd 13rd
         var rn=(d.length==1) ? ds.charAt(0) : ds.charAt(1)
         switch (rn) {
            case "1" : suf="st";break //  changes the suffix if appropriate
            case "2" : suf="nd";break
            case "3" : suf="rd";break
         }
      }

      if (ds.charAt(0)=="0") ds=ds.charAt(1)
      ds+="<sup>"+suf+"</sup>"
   }
   var day=makeday(d,m,y)
   ds=day+" "+ds
   return ds
}

function validtime(t) { // checks the validty of the time when it is in the 24 clock e.g. 16:30, 03:50
   var ts=invalid+"("+t+")"
   var ci=t.indexOf(":")
   if (ci!=-1 && t.length==5) {
      var tp1=parseInt(t.substring(0,ci),10)
      var tp2=parseInt(t.substring(ci+1,t.length),10)
      if ((!isNaN(tp1) && !isNaN(tp2)) && (tp1>=0 && tp1<=23) && (tp2>=0 && tp2<=59)) ts=t
   }
   return ts
}

function makeday(d,m,y) {
   y=y.toString()
   if(y.length<2)y="0"+y
//y="20"+y because otherwise you get the year as 19xx which is just wrong...
   var when=new Date("20"+y,m-1,d)
   var day=when.getDay()
   switch (day) {
      case 0 : day="Sunday";break
      case 1 : day="Monday";break
      case 2 : day="Tuesday";break
      case 3 : day="Wednesday";break
      case 4 : day="Thursday";break
      case 5 : day="Friday";break
      case 6 : day="Saturday";break
      default : day=invalid
   }
   return day
}