

var fixedX = 20         // x position (-1 if to appear below control)
var fixedY = 0         // y position (-1 if to appear below control)
var startAt = 1         // 0:sunday 1:monday ...
var showWeekNumber = 1  // 0:don't show 1:show
var showToday = 1       // 0:don't show 1:show
var imgDir = "images/"   // directory for images

var gotoString  = "Go To Current Month"
var todayString = "Today is:"
var weekString  = "Wk"

// Status Bar Messages
var scrollLeftMessage   = "Click to scroll to previous month. Hold mouse button to scroll automatically."
var scrollRightMessage  = "Click to scroll to next month. Hold mouse button to scroll automatically."
var scrollLeft1Message  = "Click to scroll to previous year. Hold mouse button to scroll automatically."
var scrollRight1Message = "Click to scroll to next year. Hold mouse button to scroll automatically."
var selectMonthMessage  = "Click to select a month."
var selectYearMessage   = "Click to select a year."
var selectDateMessage   = "Select [date] as date." // [date] will be replaced.

var crossobj, crossMonthObj, crossYearObj
var monthSelected, yearSelected, dateSelected;
var omonthSelected, oyearSelected, odateSelected;
var monthConstructed, yearConstructed;
var intervalID1, intervalID2;
var timeoutID1, timeoutID2;
var ctlToPlaceValue, ctlNow;
var dateFormat, nStartingYear

var bPageLoaded = false
var bShow = false;

var ie=document.all
var dom=document.getElementById
var ns4=document.layers

var today    = new Date()
var dateNow  = today.getDate()
var monthNow = today.getMonth()
var yearNow  = today.getYear()

var imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")
var img = new Array()

/* hides <select> and <applet> objects (for IE only) */
function hideElement( elmID, overDiv )
{
  if(ie)
  {
    for(i=0; i<document.all.tags(elmID).length; i++)
    {
      obj = document.all.tags(elmID)[i];
      if(!obj || !obj.offsetParent) continue;

      // Find the element's offsetTop and offsetLeft relative to the BODY tag.
      objLeft   = obj.offsetLeft;
      objTop    = obj.offsetTop;
      objParent = obj.offsetParent;
      while(objParent.tagName.toUpperCase() != "BODY")
      {
        objLeft  += objParent.offsetLeft;
        objTop   += objParent.offsetTop;
        objParent = objParent.offsetParent;
      }
      objHeight = obj.offsetHeight;
      objWidth = obj.offsetWidth;
      if((overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
      else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
      else if( overDiv.offsetTop >= ( objTop + objHeight ));
      else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
      else obj.style.visibility = "hidden";
    }
  }
}

/* unhides <select> and <applet> objects (for IE only) */
function showElement(elmID)
{
  if(ie)
  {
    for(i=0; i<document.all.tags(elmID).length; i++)
    {
      obj = document.all.tags(elmID)[i];
      if(!obj || !obj.offsetParent) continue;
      obj.style.visibility = "";
    }
  }
}

function HolidayRec(d, m, y, desc)
{
  this.d = d
  this.m = m
  this.y = y
  this.desc = desc
}
var HolidaysCounter = 0
var Holidays = new Array()
function addHoliday(d, m, y, desc)
{
  Holidays[HolidaysCounter++] = new HolidayRec(d, m, y, desc)
}

if(dom)
{
  for(i=0; i<imgsrc.length; i++)
  {
    img[i] = new Image
    img[i].src = imgDir + imgsrc[i]
  }
  var tempStr = "<div onclick='bShow=true' id='calendar' style='z-index:+999;position:absolute;visibility:hidden;'><table  width="+((showWeekNumber==1)?100:220)+" style='font-family:arial;font-size:6px;border-width:1;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:6px}' bgcolor='#ffffff'><tr bgcolor='#0000aa'>"
                   + "<td><table width='"+((showWeekNumber==1)?175:218)
                   + "'><tr><td style='padding:1px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=left><a href='javascript:hideCalendar()'><img src='"
                   + imgDir + "close.gif' width='10' height='10' alt='Close the Calendar'></a></td></tr></table></td></tr><tr><td style='padding:1px' bgcolor=#ffffff><span id='content'></span></td></tr>"
  document.write(tempStr)
  if(showToday==1)
  {
    document.write ("<tr bgcolor=#f0f0f0><td style='padding:1px' align=center><span id='lblToday'></span></td></tr>")
  }
  document.write ("</table></div><div id='selectMonth' style='z-index:+999;position:absolute;visibility:hidden;'></div><div id='selectYear' style='z-index:+999;position:absolute;visibility:hidden;'></div>");
}

var monthName = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
if(startAt==0)
  dayName = new Array ("Sun","Mon","Tue","Wed","Thu","Fri","Sat")
else
  dayName = new Array ("Mon","Tue","Wed","Thu","Fri","Sat","Sun")

var styleAnchor="text-decoration:none;color:black;"
var styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"

function swapImage(srcImg, destImg)
{
  if(ie) {document.getElementById(srcImg).setAttribute("src",imgDir + destImg)}
}

function init()
{
  if(!ns4)
  {
    if(!ie) yearNow += 1900;
    crossobj = (dom)? document.getElementById("calendar").style : ie? document.all.calendar : document.calendar
    hideCalendar()
    crossMonthObj = (dom)? document.getElementById("selectMonth").style : ie? document.all.selectMonth : document.selectMonth
    crossYearObj  = (dom)? document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear
    monthConstructed = false;
    yearConstructed  = false;
    if(showToday==1)
      document.getElementById("lblToday").innerHTML = "<font size=1>"+todayString + " <a onfocus='blur()' onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'><font color=red>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)    + " " + yearNow + "</font></a>"

    sHTML1="<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' width=10 height=10>&nbsp</span>&nbsp;"
    sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"
    sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight' SRC='"+imgDir+"right1.gif' width=10 height=10>&nbsp</span>&nbsp&nbsp&nbsp"

    sHTML1+="<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeLeft2\",\"left2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollLeft1Message+"\"' onclick='javascript:decYear1()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft2\",\"left1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecYear()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft2' SRC='"+imgDir+"left1.gif' width=10 height=10>&nbsp</span>&nbsp;"
    sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"'  onclick='popUpYear()'></span>&nbsp;"
    sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#3366FF;cursor:pointer' onmouseover='swapImage(\"changeRight2\",\"right2.gif\");this.style.borderColor=\"#88AAFF\";window.status=\""+scrollRight1Message+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight2\",\"right1.gif\");this.style.borderColor=\"#3366FF\";window.status=\"\"' onclick='incYear1()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncYear()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeRight2' SRC='"+imgDir+"right1.gif' width=10 height=10>&nbsp</span>&nbsp"
    document.getElementById("caption").innerHTML  = sHTML1
    bPageLoaded=true
  }
}

function hideCalendar()
{
  crossobj.width='0';
  crossobj.overflow='hidden';
  crossobj.visibility = "hidden"
  if(crossMonthObj != null) crossMonthObj.visibility = "hidden"
  if(crossYearObj  != null) crossYearObj.visibility="hidden"
  showElement('SELECT');
  showElement('APPLET');
}

function padZero(num)
{
  return (num < 10)? '0' + num : num;
}

function constructDate(d, m, y)
{
  sTmp = dateFormat
  sTmp = sTmp.replace("dd","<e>")
  sTmp = sTmp.replace("d","<d>")
  sTmp = sTmp.replace("<e>",padZero(d))
  sTmp = sTmp.replace("<d>",d)
  sTmp = sTmp.replace("mmm","<o>")
  sTmp = sTmp.replace("mm","<n>")
  sTmp = sTmp.replace("m","<m>")
  sTmp = sTmp.replace("<m>",m+1)
  sTmp = sTmp.replace("<n>",padZero(m+1))
  sTmp = sTmp.replace("<o>",monthName[m])
  return sTmp.replace("yyyy",y)
}

function closeCalendar()
{
  var sTmp
  hideCalendar();
  ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
  if(callFunction)
  {
   // call = eval(callFunction);
    if(outDate)
    {
        outDate.value = showDate(ctlToPlaceValue.value)
    }
   // call();
  }
}

    /*** Month Pulldown ***/

    function StartDecMonth() {
        intervalID1=setInterval("decMonth()",80)
    }

    function StartIncMonth() {
        intervalID1=setInterval("incMonth()",80)
    }

    function incMonth () {
        monthSelected++
        if (monthSelected>11) {
            monthSelected=0
            yearSelected++
        }
        constructCalendar()
    }

    function decMonth () {
        monthSelected--
        if (monthSelected<0) {
            monthSelected=11
            yearSelected--
        }
        constructCalendar()
    }

    function constructMonth() {
        popDownYear()
        if (!monthConstructed) {
            sHTML = ""
            for (i=0; i<12; i++) {
                sName = monthName[i];
                if (i==monthSelected){
                    sName = "<B>" + sName + "</B>"
                }
                sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
            }
            document.getElementById("selectMonth").innerHTML = "<table width=70 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' cellspacing=0 onmouseover='clearTimeout(timeoutID1)' onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" + sHTML + "</table>"
            monthConstructed=true
        }
    }

    function popUpMonth() {
        constructMonth()
        crossMonthObj.visibility = (dom||ie)? "visible" : "show"
        crossMonthObj.left = parseInt(crossobj.left) + 50
        crossMonthObj.top = parseInt(crossobj.top) + 26
        hideElement( 'SELECT', document.getElementById("selectMonth") );
        hideElement( 'APPLET', document.getElementById("selectMonth") );
    }

    function popDownMonth() {
        crossMonthObj.visibility= "hidden"
    }

    /*** Year Pulldown ***/

    function incYear() {
        for (i=0; i<7; i++) {
            newYear = (i+nStartingYear)+1
            if (newYear==yearSelected)
                txtYear = "&nbsp;<B>" + newYear +   "</B>&nbsp;"
            else
                txtYear =   "&nbsp;" + newYear + "&nbsp;"
            document.getElementById("y"+i).innerHTML = txtYear
        }
        nStartingYear ++;
        bShow=true
    }

    function decYear() {
        for (i=0; i<7; i++){
            newYear = (i+nStartingYear)-1
            if (newYear==yearSelected)
                txtYear =   "&nbsp;<B>" + newYear + "</B>&nbsp;"
            else
                txtYear =   "&nbsp;" + newYear + "&nbsp;"
            document.getElementById("y"+i).innerHTML = txtYear
        }
        nStartingYear --;
        bShow=true
    }

function StartDecYear() {intervalID1 = setInterval("decYear1()",80)}
function StartIncYear() {intervalID1 = setInterval("incYear1()",80)}
function decYear1() {--yearSelected; constructCalendar();}
function incYear1() {++yearSelected; constructCalendar();}

function selectYear(nYear)
{
  yearSelected = parseInt(nYear + nStartingYear);
  yearConstructed = false;
  constructCalendar();
  popDownYear();
}

function constructYear()
{
  popDownMonth();
  sHTML = "";
  if(!yearConstructed);
  {
    sHTML = "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>"
    j = 0;
            nStartingYear = yearSelected-3
            for (i=(yearSelected-3); i<=(yearSelected+3); i++) {
                sName = i;
                if (i==yearSelected)
                    sName = "<B>" + sName + "</B>"
                sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"
                j ++;
            }
            sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FFCC99\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>"
            document.getElementById("selectYear").innerHTML = "<table width=44 style='font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#FFFFDD' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>" + sHTML + "</table>"
            yearConstructed = true
        }
}

function popDownYear()
{
  clearInterval(intervalID1);
  clearTimeout(timeoutID1);
  clearInterval(intervalID2);
  clearTimeout(timeoutID2);
  crossYearObj.visibility= "hidden";
}

    function popUpYear() {
        var leftOffset
        constructYear()
        crossYearObj.visibility = (dom||ie)? "visible" : "show"
        leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft
        if (ie)
            leftOffset += 6
        crossYearObj.left = leftOffset
        crossYearObj.top = parseInt(crossobj.top) + 26
    }

    /*** calendar ***/
   function WeekNbr(n) {
      // Algorithm used:
      // From Klaus Tondering's Calendar document (The Authority/Guru)
      // hhtp://www.tondering.dk/claus/calendar.html
      // a = (14-month) / 12
      // y = year + 4800 - a
      // m = month + 12a - 3
      // J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
      // d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
      // L = d4 / 1460
      // d1 = ((d4 - L) mod 365) + L
      // WeekNumber = d1 / 7 + 1

      year = n.getFullYear();
      month = n.getMonth() + 1;
      if (startAt == 0)
         day = n.getDate() + 1;
      else
         day = n.getDate();
      a = Math.floor((14-month) / 12);
      y = year + 4800 - a;
      m = month + 12 * a - 3;
      b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
      J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
      d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
      L = Math.floor(d4 / 1460);
      var d1 = (((d4 - L) % 365) + L);
      week = Math.floor(d1/7) + 1;
      return week;
   }

function constructCalendar()
{
  var aNumDays = Array(31,0,31,30,31,30,31,31,30,31,30,31)
  var dateMessage
  var startDate = new Date(yearSelected, monthSelected, 1)
  var endDate
  if(monthSelected == 1)
  {
    endDate = new Date (yearSelected,monthSelected+1,1);
    endDate = new Date (endDate - (24*60*60*1000));
    numDaysInMonth = endDate.getDate()
  }
  else numDaysInMonth = aNumDays[monthSelected];
  datePointer = 0;
  dayPointer = startDate.getDay() - startAt;
  if(dayPointer < 0) dayPointer = 6;

  sHTML = "<table cellSpacing=0 style='font-family:verdana;font-size:10px;'><tr>"
  if(showWeekNumber == 1)
    sHTML += "<td width=20><b><font class=week>" + weekString + "</font></b></td><td width=1 rowspan=7 class=weeknumber-div-style><img src='"+imgDir+"divider.gif'></td>"
  for(i=0; i<7; i++)
    sHTML += "<td width=20 align='center'><B><font class=week>"+ dayName[i]+"</font></b></td>"

  sHTML +="</tr><tr>"
  if(showWeekNumber==1)
    sHTML += "<td align=center><font class=weeknum>" + WeekNbr(startDate) + "</font></td>"
  for(var i=1; i<=dayPointer; i++)
    sHTML += "<td>&nbsp</td>"

  for(datePointer=1; datePointer<=numDaysInMonth; datePointer++)
  {
    dayPointer++;
    sHTML += "<td align=center>"
    sStyle = styleAnchor
    if((datePointer==odateSelected) && (monthSelected==omonthSelected) && (yearSelected==oyearSelected))
      sStyle+=styleLightBorder;
    sHint = ""
    for(k=0; k<HolidaysCounter; k++)
    {
      if((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))
      {
        if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))
        {
          sStyle+="background-color:#FFDDDD;"
          sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc
        }
      }
    }
    var regexp= /\"/g
    sHint = sHint.replace(regexp,"&quot;")
    dateMessage = "onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' "
    if((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))
      sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font class=today>" + datePointer + "</font></a></b>";

    else if((dayPointer % 7 == (startAt * -1)+1) || (dayPointer % 7 == (startAt * -1)+7))
      sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'><font color=#909090>" + datePointer + "</font></a>";

    else
      sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>" + datePointer + "</a>";
    sHTML += ""
    if((dayPointer+startAt) % 7 == startAt)
    {
      sHTML += "</tr><tr>"
      if((showWeekNumber==1) && (datePointer<numDaysInMonth))
        sHTML += "<td align=center><font class=weeknum>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "</font></td>"
    }
  }
  document.getElementById("content").innerHTML   = sHTML
  document.getElementById("spanMonth").innerHTML = monthName[monthSelected] + "<img id='changeMonth' src='"+imgDir+"drop1.gif' width='12' height='8'>"
  document.getElementById("spanYear").innerHTML = yearSelected + "<img id='changeYear' src='"+imgDir+"drop1.gif' width='12' height='8'>"
}

var callFunction;
var outDate;
function popUpCalendar(ctl, ctl2, format,funcTobeCalled, ctl3)
{
  
  callFunction = funcTobeCalled;
  outDate = ctl3;
  var leftpos = 0;
  var toppos = 0;
  crossobj.width='auto';
  if(bPageLoaded)
  {
    if(crossobj.visibility == "hidden")
    {
      ctlToPlaceValue = ctl2
      dateFormat = format;
      formatChar = " "
      aFormat = dateFormat.split(formatChar)
      if(aFormat.length < 3)
      {
        formatChar = "/"
        aFormat = dateFormat.split(formatChar)
        if(aFormat.length < 3)
        {
          formatChar = "."
          aFormat = dateFormat.split(formatChar)
          if(aFormat.length < 3)
          {
            formatChar = "-"
            aFormat = dateFormat.split(formatChar)
            if(aFormat.length < 3)
            {
              // invalid date format
              formatChar="";
            }
          }
        }
      }
      tokensChanged = 0
      if(formatChar != "" )
      {
        // use user's date
        aData = ctl2.value.split(formatChar)
        for (i=0;i<3;i++)
        {
          if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
          {
            dateSelected = parseInt(aData[i], 10);
            tokensChanged++;
          }
          else if ((aFormat[i]=="m") || (aFormat[i]=="mm"))
          {
            monthSelected = parseInt(aData[i], 10) - 1;
            tokensChanged++;
          }
          else if (aFormat[i] == "yyyy")
          {
            yearSelected = parseInt(aData[i], 10);
            tokensChanged++;
          }
          else if(aFormat[i] == "mmm")
          {
            for(j=0; j<12; j++)
            {
              if(aData[i] == monthName[j])
              {
                monthSelected = j;
                tokensChanged++;
              }
            }
          }
        }
      }
      if((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
      {
        dateSelected = dateNow
        monthSelected = monthNow
        yearSelected = yearNow
      }
      odateSelected  = dateSelected
      omonthSelected = monthSelected
      oyearSelected  = yearSelected
      aTag = ctl
      do
      {
        aTag     = aTag.offsetParent;
        leftpos += aTag.offsetLeft;
        toppos  += aTag.offsetTop;
      }
      while(aTag.tagName != "BODY");

      crossobj.left = ctl.offsetLeft + leftpos + fixedX
      crossobj.top  = ctl.offsetTop + toppos + fixedY
      constructCalendar(1, monthSelected, yearSelected);
      crossobj.visibility = (dom||ie)? "visible" : "show";

      hideElement('SELECT', document.getElementById("calendar"));
      hideElement('APPLET', document.getElementById("calendar"));
      bShow = true;
    }
    else
    {
      hideCalendar()
      if(ctlNow != ctl) {popUpCalendar(ctl, ctl2, format)}
    }
    ctlNow = ctl
  }
}

document.onkeypress = function hidecal1() {if(event.keyCode == 27) hideCalendar()}
document.onclick = function hidecal2() {if(!bShow) hideCalendar(); bShow = false;}

init()
