function togClpse(idprefix)
{
  var aclosed=document.getElementById(idprefix+"_1");
  var aopened=document.getElementById(idprefix+"_2");
  var divcollapsable=document.getElementById(idprefix+"_3");
  if(divcollapsable.style.display == "none")
  {
    // open:
    divcollapsable.style.display="block";
    aclosed.style.display="none";
    if(aopened) aopened.style.display="inline";
  }
  else
  {
    divcollapsable.style.display="none";
    aclosed.style.display="inline";
    if(aopened) aopened.style.display="none";
  }
}

function fillDays(frm)
{
  var weekdayoffset=-1;
  var numdays=31;
  if( (frm.datmn.selectedIndex >= 0) && (frm.datyr.selectedIndex >= 0) )
  {
    var month=frm.datmn.selectedIndex+1;
    var year=frm.datyr.options[frm.datyr.selectedIndex].value-0;
    numdays=getMonthLength(month,year);
    var firstday=new Date(year,month-1,1);
    weekdayoffset=firstday.getDay();
  }
  var sel=frm.datday.selectedIndex;
  var oldnum=frm.datday.options.length;
  for(var i=0;i<numdays;i++)
  {
    var dayname=""+(i+1);
    if(weekdayoffset >= 0)
    {
      dayname=daynames[(weekdayoffset+i+6)%7]+" "+dayname;
    }
    if(i < oldnum)
    {
      frm.datday.options[i].text=dayname;
    }
    else
    {
      frm.datday.options[i]=new Option(dayname,i+1,false,false);
    }
  }
  while(frm.datday.options.length > numdays)
  {
    frm.datday.options[numdays]=null;
  }
  if(sel >= numdays)
  {
    sel=numdays-1;
  }
  frm.datday.selectedIndex=sel;
}
// get the number of days in a certain month
//   mon: 1-12
//   yr: eg 2001
function getMonthLength(mon,yr)
{
  var d1=new Date(yr,mon-1,1);
  var d2;
  if(mon >= 11)
  {
    d2=new Date(yr+1,mon-12,1);
  }
  else
  {
    d2=new Date(yr,mon,1);
  }
  return Math.round((d2-d1)/1000/60/60/24);
}

function dateenablecheckboxchange(frm)
{
  var chk=frm.dateenable;
  var now=new Date();
  var disable=!chk.checked;
  chk.form.datday.disabled=disable;
  chk.form.datmn.disabled=disable;
  chk.form.datyr.disabled=disable;
  chk.form.datnr.disabled=disable;
  chk.form.datday.style.backgroundColor=disable? "silver":"white";
  chk.form.datmn.style.backgroundColor=disable? "silver":"white";
  chk.form.datyr.style.backgroundColor=disable? "silver":"white";
  chk.form.datnr.style.backgroundColor=disable? "silver":"white";
}

var _calform=null;
function doHRCCalendar(formid,linkid)
{
  var frm=document.getElementById(formid);
  if(frm)
  {
    if(frm.datyr && (!frm.datyr.disabled) )
    {
      var cal = new CalendarPopup();
      _calform=frm;
      cal.setReturnFunction("HRCCalendarReturnFunc");
      var now=new Date();
      var yesterday=dateAddDays(now,-1);
      var yesterday_str=date2MysqlDate(yesterday);
      var nextyear=dateAddDays(now,366);
      var nextyear_str=date2MysqlDate(nextyear);
      cal.addDisabledDates(null, yesterday_str);
      cal.addDisabledDates(nextyear_str, null);
      cal.setDayHeaders(dayletters.charAt(0),dayletters.charAt(1),dayletters.charAt(2),dayletters.charAt(3),dayletters.charAt(4),dayletters.charAt(5),dayletters.charAt(6));
      cal.setTodayText(today);
      cal.setMonthNames(monthnames[0],monthnames[1],monthnames[2],monthnames[3],monthnames[4],monthnames[5],monthnames[6],monthnames[7],monthnames[8],monthnames[9],monthnames[10],monthnames[11]);
      var y=frm.datyr.options[frm.datyr.selectedIndex].value;
      var m=frm.datmn.selectedIndex+1;
      var d=frm.datday.selectedIndex+1;
      var datestring=y+'-'+m+'-'+d;
      cal.showCalendar(linkid,datestring);
    }
  }
}

function formatDigits(value,digits)
{
  var negative=(value < 0);
  if(negative) value=-value;
  var str=value+"";
  var numzeros=(digits-str.length);
  while(numzeros-- > 0)
  {
    str="0"+str;
  }
  if(negative) str="-"+str;
  return str;
}

function dateAddDays(date,days)
{
  return new Date((date-0)+days*24*60*60*1000);
}

function date2MysqlDate(date)
{
  return date.getFullYear()+"-"+formatDigits((date.getMonth()+1),2)+"-"+formatDigits(date.getDate(),2);
}

function HRCCalendarReturnFunc(y,m,d)
{
  if(_calform)
  {
    setListboxValue(_calform.datyr,y);
    _calform.datyr.onchange();
    _calform.datmn.selectedIndex=m-1;
    _calform.datmn.onchange();
//    _calform.datmn.fireEvent('onchange');
    _calform.datday.selectedIndex=d-1;
  }
}

function setListboxValue(lb,v)
{
  for (var i=0; i<lb.options.length; i++)
  {
    if (lb.options[i].value==v)
    {
      lb.selectedIndex=i;
    }
  }
}

function showPleaseWait(frm)
{
  for(var i=0; i < frm.elements.length; i++)
  {
    if(frm.elements[i].type && (frm.elements[i].type == "submit") )
    {
      frm.elements[i].disabled=true;
    }
  }
  document.getElementById("pleasewait").style.display="block";
}

