﻿//written by Tan Ling Wee on 2 Dec 2001
//last updated 15 Jan 2002
//email : fuushikaden@yahoo.com
var empty = ''; // x position (-1 if to appear below control)

var fixedX = -1; // x position (-1 if to appear below control)
var fixedY = -1; // y position (-1 if to appear below control)
var startAt = 1; // 0 - sunday ; 1 - monday
var showWeekNumber = 0; // 0 - don't show; 1 - show
var showToday = 0; // 0 - don't show; 1 - show
var imgDir = "/images/calendar/"; // directory for images ... e.g. var imgDir="/img/"

var gotoString = "Επιστροφή στον τρέχον μήνα";
var todayString = "Σήμερα είναι";
var weekString = "Εβδ";
var scrollLeftMessage = "Πατήστε εδώ για να πάτε στον προηγούμενο μήνα.";
var scrollRightMessage = "Πατήστε εδώ για να πάτε στον επόμενο μήνα.";
var selectMonthMessage = "Πατήστε εδώ για να διαλέξετε το μήνα.";
var selectYearMessage = "Πατήστε εδώ για να διαλέξετε το χρόνο.";
var selectDateMessage = "Επιλογή της ημερομηνίας [date]."; // do not replace [date], it will be replaced by date.

var crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlNow, dateFormat, nStartingYear;

var bPageLoaded = 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();

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];
   }
   document.write ("<div id='calendar' style='position:absolute;visibility:hidden;'><table width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#A0A0A0;font-family:arial; font-size:11px}' bgcolor='#FFFFFF'><tr bgcolor='#800000'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#FFFFFF'><B><span id='caption'></span></B></font></td><td style='padding:2px;font-family:arial; font-size:11px;' align=right><span id='spanClose' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='this.style.borderColor=\"#FFFFFF\";' onclick='javascript:hideCalendar()' onmouseout='this.style.borderColor=\"#FDBF6C\";'>&nbsp;<IMG SRC='"+imgDir+"close.gif' WIDTH='9' HEIGHT='9' BORDER='0' ALT='Close the Calendar'>&nbsp;</span></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#FFFFFF><span id='content'></span></td></tr>");
   if (showToday==1) document.write ("<tr bgcolor=#EEEEEE><td style='padding:5px' align=center><span id='lblToday'></span></td></tr>");
   document.write ("</table></div><div id='selectMonth' style='position:absolute;visibility:hidden;'></div><div id='selectYear' style='position:absolute;visibility:hidden;'></div>");
}

var monthName = new Array("Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μαΐος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος");
if (startAt==0) dayName = new Array ("Κυ","Δε","Τρ","Τε","Πε","Πα","Σα");
else dayName = new Array ("Δε","Τρ","Τε","Πε","Πα","Σα","Κυ");
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 initCalendar() {
   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 = todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3) + " " + yearNow + "</a>";
      sHTML1="<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' width=9 height=9 BORDER=0>&nbsp</span>&nbsp;";
      sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#FDBF6C\";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=9 height=9 BORDER=0>&nbsp</span>&nbsp";
      sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;";
      sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onclick='popUpYear()'></span>&nbsp;";
      document.getElementById("caption").innerHTML = sHTML1;
      bPageLoaded=true;
   }
}

function initSingleCalendar() {
   if (!ns4) {
      //if (!ie) yearNow += 1900;
      crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar;
      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 = todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3) + " " + yearNow + "</a>";
      sHTML1="<span id='spanLeft' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"left2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"left1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<IMG id='changeLeft' SRC='"+imgDir+"left1.gif' width=9 height=9 BORDER=0>&nbsp</span>&nbsp;";
      sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeRight\",\"right2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"right1.gif\");this.style.borderColor=\"#FDBF6C\";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=9 height=9 BORDER=0>&nbsp</span>&nbsp";
      sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"drop1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;";
      sHTML1+="<span id='spanYear' style='border-style:solid;border-width:1;border-color:#FDBF6C;cursor:pointer' onmouseover='swapImage(\"changeYear\",\"drop2.gif\");this.style.borderColor=\"#FFFFFF\";window.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"drop1.gif\");this.style.borderColor=\"#FDBF6C\";window.status=\"\"' onclick='popUpYear()'></span>&nbsp;";
      document.getElementById("caption").innerHTML = sHTML1;
      bPageLoaded=true;
   }
}

function hideCalendar() {
   crossobj.visibility="hidden";
   crossobj.display="none";
   if (crossMonthObj != null) crossMonthObj.visibility="hidden";
   if (crossYearObj != null) crossYearObj.visibility="hidden";
}

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);
}

/*** 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 = "<font color='#800000'><b>" + sName + "</b></font>";
         sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FDBF6C\"' 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:#800000;' bgcolor='#EEEEEE' 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;
}

function popDownMonth() {
   crossMonthObj.visibility= "hidden";
}

/*** Year Pulldown ***/
function incYear() {
   for (i=0; i<7; i++) {
      newYear = (i+nStartingYear)+1;
      if (newYear==yearSelected) txtYear = "&nbsp;<font color='#800000'><b>" + newYear + "</b></font>&nbsp;";
      else txtYear = "&nbsp;" + newYear + "&nbsp;";
      document.getElementById("y"+i).innerHTML = txtYear;
   }
   nStartingYear ++;
}

function decYear() {
   for (i=0; i<7; i++) {
      newYear = (i+nStartingYear)-1;
      if (newYear==yearSelected) txtYear = "&nbsp;<font color='#800000'><b>" + newYear + "</b></font>&nbsp;";
      else txtYear = "&nbsp;" + newYear + "&nbsp;";
      document.getElementById("y"+i).innerHTML = txtYear;
   }
   nStartingYear --;
}

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=\"#A0A0A0\"' 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 = "<font color='#800000'><b>" + sName + "</b></font>";
         sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\"#FDBF6C\"' 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=\"#A0A0A0\"' 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:#800000;' bgcolor='#EEEEEE' 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) {
   var P3D=259200000, P7D=604800000, y=n.getYear(), y=(y<1000?1900+y:y);
   var s=Math.floor((Date.UTC(y,n.getMonth(),n.getDate())+P3D)/P7D);
   tmp=new Date(s*P7D);
   j=tmp.getYear();
   j=(j<1000?1900+j:j);
   return 1+s-Math.floor((Date.UTC(j,0,4)+P3D)/P7D);
}


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 border=0 style='font-family:verdana;font-size:10px;'><tr>";
   if (showWeekNumber==1) sHTML += "<td width=27><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"divider.gif' width=1></td>";
   for (i=0; i<7; i++) sHTML += "<td width='27' align='right'><B>"+ dayName[i]+"</B></td>";
   sHTML +="</tr><tr>";
   if (showWeekNumber==1) sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>";
   for ( var i=1; i<=dayPointer;i++ ) sHTML += "<td>&nbsp;</td>";
   for ( datePointer=1; datePointer<=numDaysInMonth; datePointer++ ) {
      dayPointer++;
      sHTML += "<td align=right>";
      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 color=#ff0000>&nbsp;" + datePointer + "</font>&nbsp;</a></b>";
      else if (dayPointer % 7 == (startAt * -1)+1) sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;<font color=#909090>" + datePointer + "</font>&nbsp;</a>";
      else sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;" + datePointer + "&nbsp;</a>";
      sHTML += "";
      if ((dayPointer+startAt) % 7 == startAt) {
         sHTML += "</tr><tr>";
         if ((showWeekNumber==1)&&(datePointer<numDaysInMonth)) sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>";
      }
   }
   document.getElementById("content").innerHTML   = sHTML;
   document.getElementById("spanMonth").innerHTML = "&nbsp;" + monthName[monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='"+imgDir+"drop1.gif' WIDTH='9' HEIGHT='9' BORDER=0>&nbsp;";
   document.getElementById("spanYear").innerHTML = "&nbsp;" + yearSelected + "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='9' HEIGHT='9' BORDER=0>&nbsp;";
}

function popUpCalendar(ctl, ctl2, format) {
   var leftpos=0;
   var toppos=0;
   if (format=='') format='dd/mm/yyyy';
   if (bPageLoaded) {
      if ( crossobj.visibility == "hidden" ) {
         crossobj.display="block";
         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) formatChar=""; // invalid date format
               }
            }
         }
         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 = fixedX==-1 ? ctl.offsetLeft + leftpos : fixedX;
         crossobj.top = fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY;
         constructCalendar (1, monthSelected, yearSelected);
         crossobj.visibility=(dom||ie)? "visible" : "show";
      } else {
         hideCalendar();
         if (ctlNow!=ctl) popUpCalendar(ctl, ctl2, format);
      }
      ctlNow = ctl;
   }
}
