var calX = 480;
var calY = 120;

var CurrentMonth = 0;

// current form element objects
var dropYear = null;
var dropMonth = null;
var dropYearMonth = null;
var dropDay = null;
var dropYearMonthNext = null;
var dropDayNext = null;

var created_objects = false;

function create_objects_cal() {
  if (!created_objects) {
    create_objects();
    created_objects = true;
  }
}

function draw_calendar(month)
{
  var table_top;
  var print_string;
  var tmpHtml = "";

  var begin_highlight = '<table cellspacing="0" cellpadding="0" width="18" border="1"><tr><td width="18" class="highlight" align="center">';
  var end_highlight   = '</td></tr></table>';
  var spaceForSingleDigit = '&nbsp;&nbsp;';

  table_top = '<table cellpadding="2" cellspacing="0" border="0" width="144" bgcolor="#000000">\n';
  table_top += '<tr><td width="14" align="left" valign="top"><table cellpadding="0" cellspacing="0" border="0" width="140" bgcolor="#FFFFFF">\n';
  table_top += '<tr>\n';

  if (month > 0)
    tmpHtml = '<a class="calNextPrev" href="javascript:move_month(-1);">&lt;&lt;</a>';
  else
    tmpHtml = '<span class="largeTextBold">&nbsp;</span>';

  table_top += '<td width="20" align="center">' + tmpHtml + '</td>\n';

  table_top += '<td align="center" colspan="5" class="largeTextBold">' + months[month] + '</td>\n';

  if (month < (monthMatrix.length-1))
    tmpHtml = '<a class="calNextPrev" href="javascript:move_month(1);">&gt;&gt;</a>';
  else
    tmpHtml = '<span class="largeTextBold">&nbsp;</span>';

  table_top += '<td width="20" align="center">' + tmpHtml + '</td>\n';

  table_top += '</tr>\n';
  table_top += '<tr><td colspan="7" height="4"></td></tr>\n';
  table_top += '<tr>\n';
  for (dh=0;dh<dayHeaders.length;dh++) {
    table_top += '<td width="20" align="center" class="dayOfWeekheader">'+dayHeaders[dh]+'</td>';
  }
  table_top += '</tr>\n';
  table_top += '<tr><td colspan="7" height="5"></td></tr>\n';

  print_string = '<tr>\n';

  thisMonth = monthMatrix[month];
  for (rw=0;rw<thisMonth.length;rw++)
  {
    if (rw!=0 && rw!=(thisMonth.length-1) && (rw%7==0))
      print_string += "</tr><tr>";

    print_string += '<td width="24" align="center">';
    if (thisMonth[rw]!=0) {
      var clickDate = (monthDates[month]*100 + thisMonth[rw]);
      if (thisMonth[rw]>200) {
              if(thisMonth[rw]%200 < 10){
                                    
                                    print_string += begin_highlight + '<a class="highlighthyperlink" href="javascript:handle_click(' +
                      (clickDate-200) + ');">' + spaceForSingleDigit + thisMonth[rw]%200 + '</a>' + end_highlight;
            
            }else{
                  
                  print_string += begin_highlight + '<a class="highlighthyperlink" href="javascript:handle_click(' +
                      (clickDate-200) + ');">' + thisMonth[rw]%200 + '</a>' + end_highlight;
                  
                }
      
      
      } else if (thisMonth[rw]>100) {
        print_string += '<span class="pastdate">' + thisMonth[rw]%100 + '</span>\n';
      } else {
        print_string += '<a class="validdate" href="javascript:handle_click(' +
            clickDate + ');">' + thisMonth[rw] + '</a>\n';
      }
    } else {
      print_string += '&nbsp;\n';
    }
    print_string += '</td>\n';
  }
  print_string += '</tr>\n';
  print_string += '<tr><td colspan="7" bgcolor="#000000"><img src="images/dotBlank.gif" width="1" height="1"></td></tr>\n';
  print_string += '<tr><td colspan="7" align="center" valign="top"><a class="calCloseLink" href="javascript:hide_calendar();">' + multiLingCloseText + '</a></td></tr>\n';

  print_string += '</table>\n';
  print_string += '</td></tr></table>\n';

  create_objects_cal();

  objects['startCalendar'].move(calX, calY);
  objects['startCalendar'].set_zindex(1);
  objects['startCalendar'].set_html(table_top + print_string);
  objects['startCalendar'].show();

  //document.forms["dateSelection"].elements["dump"].value=table_top + print_string;
}

function move_month(dir) {
  if (dir==1) draw_calendar(++varCurrentMonth);
  else draw_calendar(--varCurrentMonth);
}

function handle_click(isoIn) {
  isoIn = "" + isoIn; // make into a string
  if (dropYear!=null) set_drop(dropYear, isoIn.substring(0,4) );
  if (dropMonth!=null) set_drop(dropMonth, isoIn.substring(4,6) );
  if (dropDay!=null) { dropDay.value = parseInt(isoIn.substring(6,8),10); }
  if (dropYearMonth!=null) set_drop(dropYearMonth, isoIn.substring(0,6) );
  if ( (dropYearMonthNext!=null) && (dropDayNext!=null) )
  {
    handleSyncDates();
  }
  hide_calendar();
}

function handleSyncDates()
{
  if (dropYearMonth[dropYearMonth.selectedIndex].value >
  dropYearMonthNext[dropYearMonthNext.selectedIndex].value)
  {
    set_drop(dropYearMonthNext, dropYearMonth[dropYearMonth.selectedIndex].value );
    dropDayNext.value = dropDay.value;
    return;
  }
  if (dropYearMonth[dropYearMonth.selectedIndex].value ==
  dropYearMonthNext[dropYearMonthNext.selectedIndex].value)
  {
    var dd = dropDay.value;
    var ddN = dropDayNext.value;
    if (dd.length<2) { dd = '0' + dd; }
    if (ddN.length<2) { ddN = '0' + ddN; }
    if (dd > ddN) {
      dropDayNext.value = dropDay.value;
    }
  }
}

function set_drop(o,val) {
  for (i=0;i<o.length;i++) {
    if (o[i].value==val) {
      o.selectedIndex = i;
    }
  }
}

function hide_calendar() {
  dropYear = null;
  dropMonth = null;
  dropYearMonth = null;
  dropDay = null;
  dropYearMonthNext = null;
  dropDayNext = null;
  create_objects_cal();
  objects['startCalendar'].hide();
}

function open_cal(dropYearMonthObj, dropDayObj) {
    dropYearMonth = dropYearMonthObj;
    dropDay = dropDayObj;
    dropYearMonthNext = null;
    dropDayNext = null;
    
    clearTimeout(autoTimer);
    closeScroller(1);

    for (i=0;i<monthDates.length;i++)
    {
      if (dropYearMonth[dropYearMonth.selectedIndex].value==monthDates[i])
      {
        varCurrentMonth = i;
      }
    }
    draw_calendar(varCurrentMonth);
}

function open_cal(dropYearMonthObj, dropDayObj, dropYearMonthNextObj, dropDayNextObj ) {
    dropYearMonth = dropYearMonthObj;
    dropDay = dropDayObj;
    dropYearMonthNext = dropYearMonthNextObj;
    dropDayNext = dropDayNextObj;

    clearTimeout(autoTimer);
    closeScroller(1);

    for (i=0;i<monthDates.length;i++)
    {
      if (dropYearMonth[dropYearMonth.selectedIndex].value==monthDates[i])
      {
        varCurrentMonth = i;
      }
    }
    draw_calendar(varCurrentMonth);
}

function getParentForm(elem)
{
  var par = elem.form;
  var formAncestor;
 
  if(par.tagName == 'FORM'){ formAncestor = par; }
  else{ formAncestor = false; }
  
  return formAncestor;
}

function simulateClick(el)
{
  var parentForm = getParentForm(el);
  if(parentForm)
  {
    if (dropYearMonth == null){ dropYearMonth = parentForm.startDateMonth; }
    if (dropDay == null){ dropDay = parentForm.startDateInput; }
    if (dropYearMonthNext == null){ dropYearMonthNext = parentForm.endDateMonth; }
    if (dropDayNext == null){ dropDayNext = parentForm.endDateInput; }

    handleSyncDates();
  }
  else{ return false; }
}