
// calendar routines ------------------------------------------

// pass the fieldname of the field to have the date done to changedate 
// and it will do the rest

var datefieldname = "";

function changedate(fieldname)
{
  // dateformat we are using   dd/mm/yyyy
  //set the year

  datefieldname = fieldname;

  datestr = getfieldvalue(fieldname); 
  var yearstr = "";
  var monthstr = "";
  var daystr = "";

  // have we got a valid date?
  if (datestr == "" || datestr.substring(6,10) == "0000")
  {
    // the date has not been set - set it to today
    var todaysdate = new Date();
    daystr = todaysdate.getDate();
    monthstr = todaysdate.getMonth()+1;
    yearstr = todaysdate.getYear();
    // pad them out
    if (daystr < 10) daystr = "0"+daystr;
    if (monthstr < 10) monthstr = "0"+monthstr;
    if (yearstr < 1000 && yearstr > 100) yearstr = 2000+(yearstr-100);
    if (yearstr < 10) yearstr = "0"+yearstr;
    if (yearstr < 100) yearstr = "19"+yearstr;
    if (yearstr < 1000) yearstr = yearstr+1900;
    datestr = daystr+"/"+monthstr+"/"+yearstr+" 00:00:00";
  }
  yearstr = datestr.substring(6,10);
  monthstr = datestr.substring(3,5);
  daystr = datestr.substring(0,2);


  putfieldvalue("fulldate",yearstr+"-"+monthstr+"-"+daystr+" 00:00:00");

  var cnt = 0;
  while (cnt < calendarform.yearsel.options.length)
  {
    if (yearstr == calendarform.yearsel.options[cnt].value) 
    {
      calendarform.yearsel.selectedIndex = cnt;
      break;
    }
    cnt = cnt + 1;
  }
  cnt = 0;
  while (cnt < calendarform.monthsel.options.length)
  {
    if (monthstr == calendarform.monthsel.options[cnt].value) 
    {
      calendarform.monthsel.selectedIndex = cnt;
      break;
    }
    cnt = cnt + 1;
  }
  fillcalendar(getfieldvalue("fulldate"));
  calendar.style.visibility = "visible";  

}

function fillcalendar(datestr)
{
  //fill in the calendar block
  // stage 1 - empty previous values
  var fieldname = "";
  var row = 0;
  var col = 0;
  row=0;  

  // how many days are there in this month?
  var monthstr = datestr.substring(5,7);
  var yearval = datestr.substring(0,4);
  var val=0;
  var leap=0;
  var maxday = 31;
  if (monthstr > 12) monthstr = "12";
  if (monthstr == "02")
  {
    val = yearval % 4;
    if (val == 0) leap = 1;
    if (leap == 1)
    {
      if (yearval.substring(2,4) == "00")
      {
        leap = 0;
        val = yearval % 400;
        if (val == 0) leap = 1;
      }
    }
    maxday = 28 + leap;
  }
  // now for the 30 day lot
  // 30 days hath 04, 06,09,11
  if (monthstr == "04" || monthstr == "06" || monthstr == "09" || monthstr == "11")
  {
     maxday = 30;
  }  

  var daynum = 1;
  var mnthnum = datestr.substring(5,7);
  mnthnum = mnthnum - 1;
  var yearnum = datestr.substring(0,4) * 1;

  var daterotate = new Date(yearnum,mnthnum,daynum,0,0,0);
  col = daterotate.getDay()-1;
  if (col == -1) col = 6;

  for (row=0; row<6; row++)
  {
    for (boxnum=0; boxnum < 7; boxnum++)
    {  
      fieldname = "d"+row+boxnum;
      if (boxnum+(row*7) < col || daynum > maxday)
      {
        putfieldvalue(fieldname,"");
        changevisibility(fieldname,"hidden");
      } else
      {
        putfieldvalue(fieldname,daynum);
        changevisibility(fieldname,"visible");
        daynum = daynum + 1;
      }
      changebackground(fieldname,"#cccccc");
    }
  }
}

function canceldate()
{
  var row = 0;
  var col = 0;
  // row loop
  for (row=0; row < 6; row++)
  {  
    // col loop
    for (col=0; col < 7; col++)
    {
      // set value to ""
      fieldname = "d"+row+col;
      putfieldvalue(fieldname,"");
      changevisibility(fieldname,"hidden");
    }
  }  
  calendar.style.visibility = "hidden";
}

function selectday(obj)
{
  //pad out the string
  var daystr = obj.value;
  if (daystr < 10) daystr = "0"+daystr;
  var fulldate = getfieldvalue("fulldate");
  fulldate = fulldate.substring(0,8)+daystr+fulldate.substring(10,19);
  putfieldvalue("fulldate",fulldate);
  canceldate();
  //pass back the value 
  var datestr=fulldate.substring(8,10)+"/"+fulldate.substring(5,7)+"/"+fulldate.substring(0,4);

  putfieldvalue(datefieldname,datestr);
}

function changemonth()
{
  // change the month in the string and fill in the calendar 
  var fulldate = getfieldvalue("fulldate");
  var monthsel = getfieldvalue("monthsel");
  putfieldvalue("fulldate",fulldate.substring(0,5)+monthsel+fulldate.substring(7,19));
  fillcalendar(getfieldvalue("fulldate"));
}

function changeyear()
{
  var fulldate = getfieldvalue("fulldate");
  var yearsel = getfieldvalue("yearsel");
  putfieldvalue("fulldate",yearsel+fulldate.substring(4,19));
  fillcalendar(getfieldvalue("fulldate"));
}

function prevmonth()
{
  var datestr = document.calendarform.fulldate.value;
  var daystr = "01";
  var monthstr = datestr.substr(5,2);
  var yearstr = datestr.substr(0,4);
  monthstr = monthstr - 1;
  if (monthstr < 1) 
  {
    monthstr = "12";
    yearstr = yearstr - 1;
  }

  if (monthstr < 10) monthstr = "0"+monthstr;
  datestr = yearstr+"-"+monthstr+"-"+daystr;
  monthstr = monthstr - 1;
  if (monthstr == 11)
  {
    var currentyear = 0;
    while (currentyear < document.calendarform.yearsel.length-1 && document.calendarform.yearsel[currentyear].value != yearstr)
    {
      currentyear = currentyear + 1;
    } 
    if (document.calendarform.yearsel[currentyear].value == yearstr)
    {
      document.calendarform.yearsel[currentyear].selected = true;
    } else
    {
      //dont do it we haven't got the year for this
      return
    }
  }
  document.calendarform.monthsel[monthstr].selected = true;
  document.calendarform.fulldate.value = datestr;
  fillcalendar(getfieldvalue("fulldate"));
}

function nextmonth()
{
  var datestr = document.calendarform.fulldate.value;
  var daystr = "01";
  var monthstr = datestr.substr(5,2);
  var yearstr = datestr.substr(0,4);
  monthstr = (monthstr*1) + 1;

  if (monthstr > 12) 
  {
    monthstr = "1";
    yearstr = (yearstr*1) + 1;
  }
  if (monthstr < 10) monthstr = "0"+monthstr;
  datestr = yearstr+"-"+monthstr+"-"+daystr;
  monthstr = monthstr - 1;
  if (monthstr == 0)
  {
    var currentyear = 0;
    while (currentyear < document.calendarform.yearsel.length-1 && document.calendarform.yearsel[currentyear].value != yearstr)
    {
      currentyear = currentyear + 1;
    } 
    if (document.calendarform.yearsel[currentyear].value == yearstr)
    {
      document.calendarform.yearsel[currentyear].selected = true;
    } else
    {
      //dont do it we haven't got the year for this
      return
    }
  }
  document.calendarform.monthsel[monthstr].selected = true;
  document.calendarform.fulldate.value = datestr;
  fillcalendar(getfieldvalue("fulldate"));
}

function fillindates()
{
  var yearstr = "";
  var monthstr = "";
  var daystr = "";

  datestr = getfieldvalue("checkin");
  yearstr = datestr.substring(6,10);
  monthstr = datestr.substring(3,5);
  daystr = datestr.substring(0,2);
  

  foruser = new Date(yearstr,monthstr-1,daystr);
  yearstr = foruser.toLocaleString();
  var cnt = yearstr.indexOf(":")-3;
  if (cnt >= 0)
  {
    yearstr = yearstr.substring(0,cnt);
    putfieldvalue("checkinlocale",yearstr);
  } else
  {
    putfieldvalue("checkinlocale",getfieldvalue("checkin"));
  }

  datestr = getfieldvalue("checkout");
  yearstr = datestr.substring(6,10);
  monthstr = datestr.substring(3,5);
  daystr = datestr.substring(0,2);
  foruser = new Date(yearstr,monthstr-1,daystr);
  yearstr = foruser.toLocaleString();
  cnt = -1;
  cnt = yearstr.indexOf(":")-3;
  if (cnt >= 0)
  {
    yearstr = yearstr.substring(0,cnt);
    putfieldvalue("checkoutlocale",yearstr);
  } 
}


