var month_short=new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var day_short=new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
var month_long=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var day_long=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
var ordinal_ext=new Array('th','st','nd','rd');

function printtoday(type) {
  var t = new Date();
  var d = t.getDate();
  var y = t.getYear();
  var dext;

  if (y < 1900) y += 1900;

  if (d % 10 > 3 || (d > 10 && d < 14))
    dext = 0;
  else
    dext = d % 10;

  switch (type) {
  case "short":
    document.write(day_short[t.getDay()] + ", " + month_short[t.getMonth()] + "&nbsp;" + d + ordinal_ext[dext] + " " + y);
  break;

  default: 
    document.write(day_long[t.getDay()] + ", " + month_long[t.getMonth()] + "&nbsp;" + d + ordinal_ext[dext] + " " + y);
  }
}

var urlre = /^\s*([hH][tT][tT][pP][sS]?:\/\/(([A-Za-z0-9][A-Za-z0-9\.\-]*\.[A-Za-z]{2,6})|([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+))(:[0-9]+)?\/.*)/;

var emailre = /^\s*([a-zA-Z0-9_\.\-]+\@(([A-Za-z0-9][A-Za-z0-9\.\-]*\.[A-Za-z]{2,6})|([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)))\s*$/;

var textre = /^\s*(.*)\s*$/;

var intre = /^\s*([-+]?[0-9]+)\s*$/;

var floatre = /^\s*([-+]?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+)))\s*$/;

var datere = /^\s*([0-9][0-9]?)([\/\-\.])([0-9][0-9]?)\2(([0-9][0-9])?[0-9][0-9])\s*$/;

var timere = /^\s*([0-9][0-9]?):([0-9][0-9])(:([0-9][0-9]))?( ?([aApP])(\.?[mM]\.?)?)?\s*$/;

var etimere = /^\s*([0-9]+):([0-9][0-9])(:([0-9][0-9]))?\s*$/;


function gettime(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var timeparts = timere.exec(teststr);
  if (timeparts == null)
    return null;

  var hr = timeparts[1] * 1;
  var min = timeparts[2] * 1;
  var sec;
  var offset = 0;
  if (timeparts.length >= 5) {
    if (timeparts[4] == null || timeparts[4] == "")
      sec = 0;
    else
      sec = timeparts[4] * 1;
    if (timeparts.length >= 7) {
      if (timeparts[6] != null && timeparts[6] != "") {
        if (timeparts[6] == "p" || timeparts[6] == "P")
          offset = 43200;
        else
          offset = 86400;
        if (hr == 0) hr = 13;
        if (hr == 12) hr = 0;
      }
    }
  }
  else
    sec = 0;
  if ((offset > 0 && hr > 11) || (offset == 0 && hr > 23) || min > 59 || sec > 59)
    return null;

  return (hr * 60 + min) * 60 + sec + (offset % 86400);
}

function getetime(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var timeparts = etimere.exec(teststr);
  if (timeparts == null)
    return null;

  var hr = timeparts[1] * 1;
  var min = timeparts[2] * 1;
  var sec;
  if (timeparts.length >= 5 && timeparts[4] != null && timeparts[4] != "")
    sec = timeparts[4] * 1;
  else
    sec = 0;
  if (min > 59 || sec > 59)
    return null;

  return (hr * 60 + min) * 60 + sec;
}

function geturl(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var urlparts = urlre.exec(teststr);
  if (urlparts == null)
    return null;

  if (urlparts[1] == "")
    return null;
  else
    return urlparts[1];
}

function getemail(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var emailparts = emailre.exec(teststr);
  if (emailparts == null)
    return null;

  if (emailparts[1] == "" || emailparts[2].indexOf("..") != -1)
    return null;
  else
    return emailparts[1];
}

function getint(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var intparts = intre.exec(teststr);
  if (intparts == null)
    return null;

  if (intparts[1] == "")
    return null;
  else
    return intparts[1] * 1;
}

function getfloat(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var floatparts = floatre.exec(teststr);
  if (floatparts == null)
    return null;

  if (floatparts[1] == "")
    return null;
  else
    return floatparts[1] * 1.0;
}

function gettext(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var textpart = textre.exec(teststr);
  if (textpart == null)
    return null;
  else
    return textpart[1];
}

function getdate(teststr) {
  if (typeof teststr != "string")
    return null;

  if (teststr == "")
    return "";

  var dateparts = datere.exec(teststr);
  if (dateparts == null)
    return null;
  if (dateparts.length == 5 || dateparts[5] == "" || dateparts[5] == null)
    dateparts[4] = (dateparts[4] < 90 ? "20" : "") + dateparts[4];

  var testdate = new Date(dateparts[4], dateparts[3] - 1, dateparts[1]);
  var y = testdate.getYear();
  if (y < 1900) y += 1900;

  if (dateparts[1] != testdate.getDate() || dateparts[3] != (testdate.getMonth() + 1) || dateparts[4] != y)
    return null
  else
    return testdate;
}

var valformflds = new Array();

function addval(obj, objtype, arg1, arg2) {
  if (typeof obj == "undefined" || typeof obj.form == "undefined" || (typeof objtype != "string" && typeof objtype != "function"))
    return;

  var fn;
  if (typeof objtype == "function")
    fn = objtype;
  else
  switch (objtype) {
    case "date" :
      fn = getdate;
    break;

    case "text" :
      fn = gettext;
    break;

    case "int" :
      fn = getint;
    break;

    case "float" :
      fn = getfloat;
    break;

    case "time" :
      fn = gettime;
    break;

    case "etime" :
      fn = getetime;
    break;

    case "email" :
      fn = getemail;
    break;

    case "url" :
      fn = geturl;
    break;

    default :
      fn = null;
    break;
  }

  if (fn == null)
    return;

  var i, j;
  i = 0;
  while (i < valformflds.length) {
    if (valformflds[i][0] == obj.form)
      break;
    i ++;
  }
  if (i >= valformflds.length) {
    valformflds[i] = new Array();
    valformflds[i][0] = obj.form;
  }
  j = valformflds[i].length;
  valformflds[i][j] = new Array(4);
  valformflds[i][j][0] = obj;
  valformflds[i][j][1] = fn;
  valformflds[i][j][2] = false;
  if (typeof arg2 == "boolean")
    valformflds[i][j][2] = arg2;
  if (typeof arg1 == "boolean")
    valformflds[i][j][2] = arg1;
  if (typeof arg1 == "string")
    valformflds[i][j][3] = arg1;
  if (typeof arg2 == "string")
    valformflds[i][j][3] = arg2;
}

function valform(frm) {
  var i = 0;
  while (i < valformflds.length) {
    if (valformflds[i][0] == frm)
      break;
    i ++;
  }
  if (i >= valformflds.length)
    return true;

  var j, k, messages;
  messages = "";
  for (j = 1; j < valformflds[i].length; j ++) {
    result = valformflds[i][j][1](valformflds[i][j][0].value);
    if (result == null || (valformflds[i][j][2] && result + "" == "")) {
      if (messages == "")
        k = j;
      if (typeof valformflds[i][j][3] == "undefined")
        messages = messages + "Illegal values present.  Please correct.\n";
      else
        messages = messages + valformflds[i][j][3] + "\n";
    }
  }
  if (messages != "") {
    alert(messages);
    valformflds[i][k][0].select();
    valformflds[i][k][0].focus();
    return false;
  }

  return true;
}

var rollovers = new Array();

function addroll(img_name, status_text, over_img) {

  if (typeof document.images.length == "undefined" && typeof over_img != "undefined")
    return;

  rollovers[img_name] = new Array(4);
  
  rollovers[img_name][0] = null;
  rollovers[img_name][1] = status_text;
  if (typeof over_img != "undefined") {
    var i;
    for (i = 0; i < document.images.length; i ++) {
      if (document.images[i].name == img_name) {
        rollovers[img_name][0] = document.images[i];
        break;
      }
    }
    if (rollovers[img_name][0] != null) {
      rollovers[img_name][2] = new Image();
      rollovers[img_name][2].src = over_img;

      rollovers[img_name][3] = new Image();
      rollovers[img_name][3].src = document.images[i].src;
    }
  }
}

function rollover(img_name) {
  if (typeof img_name.name == "string")
    img_name = img_name.name;

  if (typeof rollovers.length == "undefined" || typeof rollovers[img_name].length == "undefined")
    return true;

  if (rollovers[img_name][0] != null)
    rollovers[img_name][0].src = rollovers[img_name][2].src;

  window.status = rollovers[img_name][1];
  return true;
}

function rollout(img_name) {
  if (typeof img_name.name == "string")
    img_name = img_name.name;

  if (typeof rollovers.length == "undefined" || typeof rollovers[img_name].length == "undefined")
    return true;

  if (rollovers[img_name][0] != null)
    rollovers[img_name][0].src = rollovers[img_name][3].src;

  window.status = '';
  return true;
}

function newwin(url, name, width, height, resize, scroll, menubar, locationbar, statusbar) {
  var win = window.open(url, name, "width=" + width + ",height=" + height + ",resizable=" + resize + ",scrollbars=" + scroll + ",menubar=" + menubar + ",location=" + locationbar + ",status=" + statusbar);
  win.opener = self;

  return false;
}

var calwin;

function fillmth(frmfld, yr, mth, current) {

  calwin.document.open();

  if (current == null) current = "";

  var edate;
  var sdate = new Date(yr, mth, 1);
  var i = sdate.getDay();
  sdate = sdate.getTime();
  if (mth == 11)
    edate = new Date(yr + 1, 0, 1);
  else
    edate = new Date(yr, mth + 1, 1);
  edate = edate.getTime();
  var days = (edate - sdate) / 86400000;
  var t = new Date();
  var tyr = t.getYear();
  if (tyr < 1900) tyr += 1900;
  var tmth = t.getMonth();
  var today = -7;
  if (t.getTime() >= sdate && t.getTime() < edate)
    today = t.getDate();
  var picked = -7;
  if (current > "") {
    var dateparts = datere.exec(current);
    if (dateparts != null) {
      if (dateparts.length == 5 || dateparts[5] == null || dateparts[5] == "")
        dateparts[4] = (dateparts[4] < 90 ? "20" : "") + dateparts[4];
      var cdate = new Date(dateparts[4], dateparts[3] - 1, dateparts[1]);
      var cyr = cdate.getYear();
      if (cyr < 1900) cyr += 1900;
      var cmth = cdate.getMonth();
      if (cdate.getTime() >= sdate && cdate.getTime() < edate)
        picked = cdate.getDate();
    }
    else
      current = "";
  }

  with (calwin.document) {
    write('<HTML><HEAD><TITLE>calendar</TITLE><STYLE>\
.basefont { font-family: Verdana; font-size: 12pt; font-weight: bold; }\
.calfont { font-family: Verdana; font-size: 10pt; }\
.dayfont { color: darkgreen; font-weight: bold; }\
</STYLE><SCRIPT LANGUAGE="Javascript"><!--\n\
function retdate(dtval) {\n\
 self.opener.document.' + frmfld + '.value = dtval;\n\
 window.close();\n\
 return false;\n\
}\n\
// -->\
</SCRIPT></HEAD>\
<BODY LINK=black VLINK=black ALINK=black TEXT=black CLASS=basefont><CENTER>\
' + month_long[mth] + ' ' + yr + '<BR><TABLE WIDTH=100% BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR=#e0e0e0 CLASS=basefont><TR ALIGN=center><TD>\
[<A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + (yr - 1) + ', ' + mth + ', \'' + current + '\');">' + (yr - 1) + '</A>]<TD>\
[<A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + (yr - (mth == 0 ? 1 : 0)) + ', ' + ((mth + 11) % 12) + ', \'' + current + '\');">' + month_short[((mth + 11) % 12)] + '</A>]<TD>\
[<A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + (yr + (mth == 11 ? 1 : 0)) + ', ' + ((mth + 1) % 12) + ', \'' + current + '\');">' + month_short[((mth + 1) % 12)] + '</A>]<TD>\
[<A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + (yr + 1) + ', ' + mth + ', \'' + current + '\');">' + (yr + 1) + '</A>]\
<TR ALIGN=center><TD COLSPAN=');
    if (current > "")
      write('2><A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + cyr + ', ' + cmth + ', \'' + current + '\');">Selected</A><TD COLSPAN=2');
    else
      write('4');
    write('><A HREF="javascript:self.opener.fillmth(\'' + frmfld + '\', ' + tyr + ', ' + tmth + ', \'' + current + '\');">Today</A></TABLE>\
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=2 WIDTH=100% CLASS=calfont>\
<TR CLASS=dayFont><TD WIDTH=14%>Sun<TD WIDTH=14%>Mon<TD WIDTH=14%>Tue<TD WIDTH=*>Wed<TD WIDTH=14%>Thu<TD WIDTH=14%>Fri<TD WIDTH=14%>Sat');

    var l = 1 - i;
    var k = i + days - 1;
    var mystr = '/' + (mth + 1) + '/' + yr;
    for (var j = 0; i <= k || j % 7 > 0; j++, l ++) {
      if (j % 7 == 0)
        write('<TR>');
      write('<TD');
      if (l == picked)
        write(' BACKGROUND=/images/cal_circle.gif');
      if (l == today)
        write(' BGCOLOR=pink');
      else if (j % 7 == 0 || j % 7 == 6)
        write(' BGCOLOR=#e0e0e0');
      if (j < i || j > k)
        write('>&nbsp;');
      else
        write(' onClick="retdate(\'' + l + mystr + '\')"><A HREF="#" onClick="retdate(\'' + l + mystr + '\')">' + l + '</A>');
      if (j == i) i ++;
    }

    write('</TABLE></CENTER></BODY></HTML>');
  }

  calwin.document.close();
}

function pop_mth_date(frmfld, current) {
  if (typeof frmfld == 'object') frmfld = frmfld.form.name + "." + frmfld.name;
  if (frmfld == null || frmfld == "") return false;

  if (current == null) current = "";
  var t = new Date();
  if (current > "") {
    dateparts = datere.exec(current);
    if (dateparts != null) {
      if (dateparts.length == 5 || dateparts[5] == null || dateparts[5] == "")
        dateparts[4] = (dateparts[4] < 90 ? "20" : "") + dateparts[4];
      t = new Date(dateparts[4] * 1, dateparts[3] * 1 - 1, dateparts[1]);
    }
  }
  var yr = t.getYear();
  if (yr < 1900) yr += 1900;
  var mth = t.getMonth();
  if (current > "")
    current = t.getDate() + "/" + (mth + 1) + "/" + yr;

  calwin = window.open("", "Calendar", "width=260,height=235,status=no,resizable=no,top=200,left=200");
  calwin.opener = self;

  fillmth(frmfld, yr, mth, current);
  return false;
}

var searchlists = new Array();

function addlist(list) {
  var i = searchlists.length;
  searchlists[i] = new Array(4);
  searchlists[i][0] = list;
  searchlists[i][1] = 0;
  searchlists[i][2] = 0;
  searchlists[i][3] = new Array(list.length);
  for (var j = 0; j < list.length; j ++) {
    txt = "00000" + j;
    searchlists[i][3][j] = list[j].text.toLowerCase() + "  " + txt.substr(txt.length - 5);
  }
  searchlists[i][3].sort();

  return searchlists[i];
}

function findlist(list) {
  for (var i = 0; i < searchlists.length; i ++)
    if (searchlists[i][0] == list)
      return searchlists[i];
  return addlist(list);
}

function chgpick(txtfld, selfld) {
  if (typeof txtfld == "undefined" || typeof txtfld.value != "string" || typeof selfld == "undefined" || typeof selfld.type != "string" || selfld.type.substr(0, 7) != "select-")
    return;

  var pickfrom = findlist(selfld.options);
  if (txtfld.value.length == 0) {
    selfld.selectedIndex = -1;
    pickfrom[2] = 0;
  }
  else {
    var testfld = txtfld.value.toLowerCase();

    var sel = -1;
    var start, i, j;
    if (testfld.length <= pickfrom[2]) {
      if (pickfrom[3][pickfrom[1]].substr(0, testfld.length) >= testfld)
        start = pickfrom[1];
      else {
        start = pickfrom[3].length;
        pickfrom[2] = 0;
      }
      for(i = pickfrom[1]; i >= 0; i --) {
        j = pickfrom[3][i].substr(0, pickfrom[3][i].length - 7);
        j = j.substr(0, testfld.length);
        if (j == testfld) {
          while (i > 0 && j == testfld) {
            i --;
            j = pickfrom[3][i].substr(0, pickfrom[3][i].length - 7);
            j = j.substr(0, testfld.length);
          }
          if (j < testfld)
            i ++;
          sel = pickfrom[3][i].substr(pickfrom[3][i].length - 5) * 1;
          break;
        }
        if (j < testfld)
          break;
      }
    }
    else {
      if (pickfrom[3][pickfrom[1]].substr(0, testfld.length) <= testfld)
        start = pickfrom[1];
      else {
        start = 0;
        pickfrom[2] = 0;
      }
      for(i = start; i < pickfrom[3].length; i ++) {
        j = pickfrom[3][i].substr(0, pickfrom[3][i].length - 7);
        j = j.substr(0, testfld.length);
        if (j == testfld) {
          sel = pickfrom[3][i].substr(pickfrom[3][i].length - 5) * 1;
          break;
        }
        if (j > testfld)
          break;
      }
    }
    if (sel != -1) {
      pickfrom[1] = sel;
      pickfrom[2] = txtfld.value.length;
    }
    else {
      pickfrom[1] = 0;
    }

    selfld.selectedIndex = sel;
  }
}

function chgtext(selfld, txtfld) {
  if (typeof txtfld == "undefined" || typeof txtfld.value != "string" || typeof selfld == "undefined" || typeof selfld.type != "string" || selfld.type.substr(0, 7) != "select-")
    return;

  if (selfld.selectedIndex != -1)
    txtfld.value = selfld.options[selfld.selectedIndex].text
}

