var today     = new Date();
var thisMonth =  today.getMonth();
var thisYear  =  today.getFullYear();
var Day   = today.getDate();
var currentMonth = today.getMonth();
var currentYear  = today.getFullYear();

// Objects
function array(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11)
{
     this[0] = m0; this[1] = m1; this[2]  = m2;  this[3]  = m3;
     this[4] = m4; this[5] = m5; this[6]  = m6;  this[7]  = m7;
     this[8] = m8; this[9] = m9; this[10] = m10; this[11] = m11;
}

function Calendar (a,ReturnField) {
this.gWinCal = a;
this.ret =  "\"" + ReturnField + "\""; ;
}

Calendar.prototype.wwrite = function (wtext) {
this.gWinCal.document.write(wtext);
}



Calendar.prototype.show = function (Month,Year) {

var names = new array("January","Febuary","March","April","May","June","July","August","September","October","November","December");
var days  = new array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var dow   = new array("Sun","Mon","Tue","Wed","Thu","Fri","Sat","","","","","");


    this.gWinCal.document.open();
var str = "";
     str = str + "<html><head><title>Calendar</title></head><body><FORM NAME='Cal' ><TABLE BGCOLOR='#DFDFDF' WIDTH=220><TR><TD ALIGN=LEFT>";
     str = str + "<FONT COLOR='#0000BB' FACE='Arial' SIZE=2><b>" + names[Month] + " " + Year + "</b></FONT></TD></TR><TR><TD WIDTH=50% ALIGN=LEFT>";
     str = str + "<SELECT NAME='Month' onChange='  var _theMonth = document.Cal.Month.options[document.Cal.Month.selectedIndex].value; var _theYear  = document.Cal.Year.value; window.opener.Build( " + this.ret + ",self,_theMonth,_theYear); '>";

     for (month=0; month<12; month++)
     {
          if (month == Month)
               str = str + "<OPTION VALUE=" + month +" SELECTED>" + names[month] + "</OPTION>";
          else
               str = str + "<OPTION VALUE=" + month + ">" + names[month] + "</OPTION>";
     }

     str = str + "</SELECT>";

     str = str + "<SELECT NAME='Year' onChange='var _theMonth = document.Cal.Month.options[document.Cal.Month.selectedIndex].value; var _theYear  = document.Cal.Year.value; window.opener.Build( " + this.ret + ",self,_theMonth,_theYear); '>";
 for (year=1900; year<2101; year++)
     {
          if (year == Year)
                    str = str + "<OPTION VALUE=" + year + " SELECTED>" + year + "</OPTION>";
          else
                    str = str + "<OPTION VALUE=" + year + ">" + year + "</OPTION>";
     }

          str = str + "</SELECT></TD></TR><TR><TD ALIGN=CENTER COLSPAN=2>";

//     str = str + "<INPUT TYPE=TEXT SIZE=5 NAME='Year' VALUE=" + Year + ">";
    

     firstDay = new Date(Year,Month,1);
     startDay = firstDay.getDay();

     if (((Year % 4 == 0) && (Year % 100 != 0)) || (Year % 400 == 0))
          days[1] = 29; 
     else
          days[1] = 28;

     str = str + "<TABLE CALLSPACING=0 CELLPADDING=0 BORDER=1 BORDERCOLORDARK='#FFFFFF' BORDERCOLORLIGHT='#C0C0C0'><TR>";

     for (i=0; i<7; i++)
     {
          str = str + "<TD WIDTH=30 ALIGN=CENTER BGCOLOR='#C0C0C0' VALIGN=MIDDLE><FONT SIZE=-1 COLOR='#000000' FACE='ARIAL'><B>" + dow[i] + "</B></FONT></TD>";
     }

     str = str + "</TR><TR ALIGN=CENTER VALIGN=MIDDLE>";

     var column = 0;
     var lastMonth = Month - 1;
     if (lastMonth == -1)
          lastMonth = 11;
     for (i=0; i<startDay; i++)
     {
           var temp = days[lastMonth]-startDay+i+1 ;
          str = str + "<TD WIDTH=30 HEIGHT=30><FONT SIZE=-1 COLOR='#808080' FACE='ARIAL'>" + temp + "</FONT></TD>";
          column++;
     }

     for (i=1; i<=days[Month]; i++)
     {

          if ((i == Day)  && (Month == currentMonth) && (Year == currentYear))
               str = str + "<TD WIDTH=30 HEIGHT=30 BGCOLOR='#FFFFFF' BORDERCOLORDARK='#000000' BORDERCOLORLIGHT='#C0C0C0'><FONT SIZE=-1 COLOR='#FF0000' FACE='ARIAL'><a  style='color:blue; cursor:hand;' name="  + i +" onClick=' window.opener.inputDate(this,self," + this.ret + "); '>" + i +"</a></FONT></TD>";
          else
               str = str + "<TD WIDTH=30 HEIGHT=30><FONT SIZE=-1 COLOR='#0000BB' FACE='ARIAL'><a  style='color:blue; cursor:hand;' name=" + i +" onClick='  window.opener.inputDate(this,self," + this.ret + "); '>" + i +"</a></FONT></TD>";
          column++;
          if (column == 7)
          {
               str = str + "</TR><TR ALIGN=CENTER VALIGN=MIDDLE>";
               column = 0;
          }
     }

     if (column > 0)
     {
          for (i=1; column<7; i++)
          {
               str = str + "<TD WIDTH=30 HEIGHT=30><FONT SIZE=-1 COLOR='#808080' FACE='ARIAL'>" + i +"</FONT></TD>";
               column++;
          }
     }
     str = str + "</TR></TABLE>";
     str = str + "</FORM></TD></TR></TABLE></body></html>";
     this.wwrite(str);
     this.gWinCal.document.close();
    
}

// Functions
function fromtop(b) {

if(b.offsetParent.tagName == "BODY")
{
   return b.offsetTop;
}
else
  return b.offsetTop + fromtop(b.offsetParent);
}

function fromleft(b) {

if(b.offsetParent.tagName == "BODY")

   return b.offsetLeft;

else
  return b.offsetLeft + fromleft(b.offsetParent);
}

function show_calendar (field) {
var temp = field.split(".");
var s = document.all(temp[1]);
var y = fromtop(s); 
var x = fromleft(s); 

var top = self.screenTop;
var left = self.screenLeft;
var scroll_top = document.body.scrollTop;
var scroll_left = document.body.scrollLeft;
var screen_height = screen.height;
y = y + top - scroll_top + 25;

if((screen_height - y)<300) y = y - 352;


x = x + left - scroll_left + 3;
var str="top=" + y + ",left=" + x + ",width=235,height=300,status=no,toolbar=no,menubar=no,scrollbars=no";
var WinCal= window.open("", "Calendar",str);
Build(field,WinCal,thisMonth,thisYear);
}

function Build (ret_field,a,Month,Year) {
var cal = new Calendar(a,ret_field);
cal.show(Month,Year);

}

function inputDate(obj,a,return_input)
{
var temp = return_input.split(".");
var str=obj.name;
if(str<10) str = "0" + str;
var month=a.document.Cal.Month.options[a.document.Cal.Month.selectedIndex].value; month++; if(month<10) month ="0" + month; 
str=month + "/" + str + "/" + a.document.Cal.Year.value;
//a.opener.document.index.elements[return_input].value = str;
a.opener.document.forms[temp[0]].elements[temp[1]].value = str;
a.close();
}

