//        written        by Tan Ling        Wee        on 2 Dec 2001
//        last updated 23 June 2002
//        email :        fuushikaden@yahoo.com

        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 = 1                // 0 - don't show; 1 - show
        var imgDir = "../lib/js/calendar/";                        // directory for images ... e.g. var imgDir="/img/"

        var gotoString = "Go To Current Month"
        var todayString = "Today is"
        var weekString = "Wk"
        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 selectMonthMessage = "Click to select a month."
        var selectYearMessage = "Click to select a year."
        var selectDateMessage = "Select [date] as date." // do not replace [date], it will be replaced by date.
        var check

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

        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.getFullYear()
        var        imgsrc = new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif")
        var        img        = new Array()
        var bShow = false;
		var topbgcolor = '#3A75AD';

		

    /* 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]
             }
             document.write ("<div onclick='bShow=true' id='calendar'        style='z-index:+999;position:absolute;visibility:hidden;'><table  border=0      width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1px;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:11px}' bgcolor='#ffffff'><tr bgcolor='"+topbgcolor+"'><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 align=right><a href='javascript:hideCalendar()'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calendar'></a></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=#f0f0f0><td style='padding:5px' 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("January","February","March","April","May","June","July","August","September","October","November","December")
        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 || dom)        { 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 =        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:1px;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=11 BORDER=0>&nbsp</span>&nbsp;"
                        sHTML1+="<span id='spanRight' style='border-style:solid;border-width:1px;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=11 BORDER=0>&nbsp</span>&nbsp"
                        sHTML1+="<span id='spanMonth' style='border-style:solid;border-width:1px;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='spanYear' style='border-style:solid;border-width:1px;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;"
						
                        document.getElementById("caption").innerHTML  =        sHTML1

                        bPageLoaded=true
                }
        }

        function hideCalendar()        {
                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
                var abc
                hideCalendar();
                ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected)
				//alert(monthSelected);
                dayBox.value = strpad(dateSelected);
                monthBox.value = strpad(monthSelected+1);
                yearBox.value = yearSelected;


                //setDate();
        }

        /*** Month Pulldown        ***/

        function StartDecMonth()
        {
                intervalID1=setInterval("decMonth()",80)
        }

        function StartIncMonth()
        {
                intervalID1=setInterval("incMonth()",80)
        }

        function incMonth ()
        {

                var checkyear
                var dateobj = new Date;
                checkyear =  parseInt(dateobj.getFullYear()) + 2;
                checkmonth=  strpad(parseInt(dateobj.getMonth())+1);
             //   alert(yearSelected + "---" + checkyear + "---" +monthSelected)
                if(!((monthSelected == checkmonth-1) && (yearSelected == checkyear)))
                {
                    if(yearSelected <= checkyear)
                    {
                        monthSelected++
                        if (monthSelected>11) {
                                monthSelected=0
                                yearSelected++
                        }
                        constructCalendar()
                    }
                }
        }

        function decMonth ()
        {
                var checkyear
                var dateobj = new Date;
                checkyear =  parseInt(dateobj.getFullYear());
                if(!((monthSelected == 0) && (yearSelected == checkyear)))
                if(checkyear <= yearSelected)
                {
                    monthSelected--
                    if (monthSelected<0) {
                            monthSelected=11
                            yearSelected--
                    }
                    constructCalendar()
                }
        }

        function strpad(str)
        {
          var len,tmp;
          S = new String(str);
          len = S.length;
          if(len <2)
          tmp= '0'+ str;
          else
          tmp = str;
          return tmp;
        }

        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:1px; 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+'px'
                crossMonthObj.top =        parseInt(crossobj.top) + 26+'px'

                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 selectYear(nYear) {
				//alert("StartingYear :" + nStartingYear + "Year :" + nYear);
				yearSelected=parseInt(nYear);
                yearConstructed=false;
                constructCalendar();
                popDownYear();
        }

        function constructYear() {
                popDownMonth()
                var dateobj = new Date;

                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 = parseInt(dateobj.getFullYear());
                        yearSelected = nStartingYear;
						//alert(yearSelected);
                        for(i=(yearBox.value); i<=(yearSelected+2); 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("+i+");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:1px; 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 + 'px'
                crossYearObj.top = parseInt(crossobj.top) +        26+'px'
        }

        /*** 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();
	 // alert(year);
      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);
      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
				//alert(startDate);
                if (monthSelected==1)
                {
                        endDate        = new Date (yearSelected,monthSelected+1,1);
                        endDate        = new Date (endDate        - (24*60*60*1000));
                        numDaysInMonth = endDate.getDate()
                }
				//alert(endDate);
                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>a" + 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=\"\"' "
						//alert(yearSelected);
                        
						
						if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))
                        {
						
						sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'>&nbsp;<font color='#ff0000'><b>" + datePointer + "</b></font>&nbsp;</a>"}
                        else if        (dayPointer % 7 == (startAt * -1)+1)
                        { 
						
						sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;<font color='#3366FF'>" + 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='12' HEIGHT='10' BORDER=0>"
                document.getElementById("spanYear").innerHTML =        "&nbsp;" + yearSelected        + "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0>"
        }

        function popUpCalendar(ctl,ctl2,format,checkfield,dayBoxHnd,monthBoxHnd,yearBoxHnd)
        {
                var        leftpos=0
                var        toppos=0
                dayBox = dayBoxHnd;
                monthBox = monthBoxHnd;
                yearBox = yearBoxHnd;
				//alert(ctl2);

				
                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        != "" )
                                {
                                        if ((dayBoxHnd.value!='') && (monthBoxHnd.value!='') && (yearBoxHnd.value !='')) {
											ctl2.value = yearBoxHnd.value+formatChar+monthBoxHnd.value+formatChar+dayBoxHnd.value
										}
										// 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 ++
														//alert(monthSelected);
                                                }
                                                else if        (aFormat[i]=="yyyy")
                                                {
                                                        yearSelected = parseInt(aData[i], 10)
                                                        tokensChanged ++
														//alert(yearSelected);
                                                }
                                                else if        (aFormat[i]=="mmm")
                                                {
                                                        for        (j=0; j<12;        j++)
                                                        {
                                                                if (aData[i]==monthName[j])
                                                                {
                                                                        monthSelected=j
                                                                        tokensChanged ++
																		//alert(monthSelected);
                                                                }
                                                        }
                                                }
                                        }
                                }

                                if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
                                {
                                        dateSelected = dateNow
                                        monthSelected =        monthNow
                                        yearSelected = yearNow
                                }

                                odateSelected=dateSelected
                                omonthSelected=monthSelected
                                oyearSelected=yearSelected
								//alert(oyearSelected);
                                aTag = ctl
                                do {
                                        aTag = aTag.offsetParent;
                                        leftpos        += aTag.offsetLeft;
                                        toppos += aTag.offsetTop;
                                } while(aTag.tagName!="BODY");
								
                                crossobj.left = fixedX==-1 ? ctl.offsetLeft+ leftpos+'px' :fixedX
								crossobj.top = fixedY==-1 ?        ctl.offsetTop +        toppos + ctl.offsetHeight +        2 +'px':        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,dayBox,monthBox,yearBox)}
                        }

                        ctlNow = ctl

                        check = checkfield
                }
        }
        document.onkeypress = function hidecal1 () {
              
			  
			  if (ie) {
			    if (event.keyCode==27)
                {
                        hideCalendar()
                }
			}
        }
        document.onclick = function hidecal2 () {
                if (!bShow)
                {
                        hideCalendar()
                }
                bShow = false
        }

        if(ie)
        {
                init()
        }
        else
        {
                window.onload=init
        }
