var isDOM = document.getElementById //DOM1 browser 

var isO   = isO5 = window.opera && isDOM; //Opera 5+

var isO6  = isO && window.print //Opera 6+

var isO7  = isO && document.readyState //Opera 7+

var isIE  = document.all && document.all.item && !isO //Microsoft Internet Explorer 4+

var isIE5 = isIE && isDOM //MSIE 5+

var isMZ  = isDOM && (navigator.appName=="Netscape")





//  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 = "/img/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("calendar_drop1.gif","calendar_drop2.gif","calendar_left1.gif","calendar_left2.gif","calendar_right1.gif","calendar_right2.gif")

  var img = new Array()



  var bShow = false;



    /* 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;				

				if (objParent.tagName == 'HTML') break

          }

      

          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:1999;position:absolute;visibility:hidden;'><table  width="+

                    ((showWeekNumber==1)?250:220)+

                    " style='font-family:tahoma;font-size:12px;border-width:1px;border-style:solid;border-color:#006b5b;font-family:tahoma; font-size:13px;}' bgcolor='#ffffff'>"+

                    "<tr bgcolor='#006b5b'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:tahoma;font-size:12px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a onclick='javascript:hideCalendar();return false;' href='#'><IMG SRC='"+imgDir+"calendar_close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Закрыть календарь' /></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content2'></span></td></tr>")

      

    if (showToday==1)

    {

      document.write ("<tr bgcolor=#e0f5f2><td style='padding:5px; font-size: 11px' align=center><span id='lblToday'></span></td></tr>")

    }

      

    document.write ("</table></div><div id='selectMonth' style='z-index:2000;position:absolute;visibility:hidden;'></div>"+

                    "<div id='selectYear' style='z-index:2000;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; font-size: 11px;"

  var styleLightBorder="border-style:solid;border-width:1px;border-color:#006b5b;"



  function swapImage(srcImg, destImg){

    if (ie) { document.getElementById(srcImg).setAttribute("src",imgDir + destImg) }

  }



  function init() { 	  

    if (isO7) { yearNow = today.getFullYear(); }

	 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='self.status=\""+gotoString+"\"' onmouseout='self.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' onclick='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();return false;' href='#'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)  + " " + yearNow + "</a>"

      }



      sHTML1="<span id='spanLeft' style='cursor:pointer' onmouseover='swapImage(\"changeLeft\",\"calendar_left2.gif\");this.style.borderColor=\"#77B7F7\";self.status=\""+scrollLeftMessage+"\"' onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\"calendar_left1.gif\");this.style.borderColor=\"#FFFFFF\";self.status=\"\"' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp;<a href='#' OnClick='return false;' title='"+scrollLeftMessage+"'><IMG id='changeLeft' SRC='"+imgDir+"calendar_left1.gif' width=10 height=11 BORDER=0></a>&nbsp;</span>&nbsp;"

      sHTML1+="<span id='spanRight' style='cursor:pointer' onmouseover='swapImage(\"changeRight\",\"calendar_right2.gif\");this.style.borderColor=\"#77B7F7\";self.status=\""+scrollRightMessage+"\"' onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\"calendar_right1.gif\");this.style.borderColor=\"#FFFFFF\";self.status=\"\"' onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'  onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp;<a href='#' OnClick='return false;' title='"+scrollRightMessage+"'><IMG id='changeRight' SRC='"+imgDir+"calendar_right1.gif' width=10 height=11 BORDER=0></a>&nbsp;</span>&nbsp;"

      sHTML1+="<span id='spanMonth' style='cursor:pointer' onmouseover='swapImage(\"changeMonth\",\"calendar_drop2.gif\");this.style.borderColor=\"#77B7F7\";self.status=\""+selectMonthMessage+"\"' onmouseout='swapImage(\"changeMonth\",\"calendar_drop1.gif\");this.style.borderColor=\"#FFFFFF\";self.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"

      sHTML1+="<span id='spanYear' style='cursor:pointer' onmouseover='swapImage(\"changeYear\",\"calendar_drop2.gif\");this.style.borderColor=\"#77B7F7\";self.status=\""+selectYearMessage+"\"' onmouseout='swapImage(\"changeYear\",\"calendar_drop1.gif\");this.style.borderColor=\"#FFFFFF\";self.status=\"\"'  onclick='popUpYear()'></span>&nbsp;"

      

      document.getElementById("caption").innerHTML  = sHTML1



      bPageLoaded=true

    }

  }



  function hideCalendar() {

    if (crossobj) 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)

  }



  /*** 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=\"#E3E3E3\"' onmouseout='this.style.backgroundColor=\"\"' "+

                 "style='cursor:pointer; font-size: 11px' 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:tahoma; font-size:13px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#ffffff' 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) {

    yearSelected=parseInt(nYear+nStartingYear);

    yearConstructed=false;

    constructCalendar();

    popDownYear();

  }



  function constructYear() {

    popDownMonth()

    sHTML = ""

    if (!yearConstructed) {



      sHTML = "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#E3E3E3\"' 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=\"#E3E3E3\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer;font-size: 11px;' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;" + sName + "&nbsp;</td></tr>"

        j ++;

      }



      sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#E3E3E3\"' 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:tahoma; font-size:13px; border-width:1; border-style:solid; border-color:#a0a0a0;' bgcolor='#ffffff' 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();

      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



    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:tahoma;font-size:13px;'><tr>"



    if (showWeekNumber==1)

    {

      sHTML += "<td width=27 style='color=#660000;'><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' style='color:#660000; font-size: 12px; font-family: tahoma'><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='self.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='self.status=\"\"' "



      if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow))

      { sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='javascript:dateSelected="+datePointer+";closeCalendar();return false;' href='#'><font color=#006b5b>&nbsp;" + datePointer + "</font>&nbsp;</a></b>"}

      else if (dayPointer % 7 == (startAt * -1)+1)

      { sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='javascript:dateSelected="+datePointer + ";closeCalendar();return false;' href='#'>&nbsp;<font color=#909090>" + datePointer + "</font>&nbsp;</a>" }

      else

      { sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' onclick='javascript:dateSelected="+datePointer + ";closeCalendar();return false;' href='#'>&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("content2").innerHTML   = sHTML

    document.getElementById("spanMonth").innerHTML = "<a style='text-decoration:none;color:#ffffff' href='#' OnClick='return false;' title='"+selectMonthMessage+"'>&nbsp;" + monthName[monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='"+imgDir+"calendar_drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0></a>"

    document.getElementById("spanYear").innerHTML = "<a style='text-decoration:none;color:#FFFFFF;' href='#' OnClick='return false;' title='"+selectYearMessage+"'>&nbsp;" + yearSelected + "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"calendar_drop1.gif' WIDTH='12' HEIGHT='10' BORDER=0></a>"

  }



  function popUpCalendar(ctl, ctl2, format, mode) {

 

  	if(isO7) {yearNow  = today.getFullYear(); }

//	alert(today.getFullYear());

    var leftpos=0

    var toppos=0	 		 

    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=""

              }

            }

          }

        }



		if ((afn = aFormat[2].indexOf(' ')) > 0) aFormat[2] = aFormat[2].substr(0, afn);

		//if ((afn = aFormat[2].indexOf('-')) > 0) aFormat[2] = aFormat[2].substr(0, afn);



        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;

			if (aTag.tagName == 'HTML') { break }

        } while(aTag.tagName!="BODY");

        //OS modifications:

        //left-oriented may be

        if(mode!="left")

          crossobj.left = (fixedX==-1 ? ctl.offsetLeft + leftpos : fixedX) + "px"

        else

          crossobj.left = (fixedX==-1 ? ctl.offsetLeft + leftpos - ((showWeekNumber==1)?250:220) : fixedX) + "px"

        crossobj.top = (fixedY==-1 ? ctl.offsetTop + toppos + ctl.offsetHeight + 2 : fixedY) + "px"

        constructCalendar (1, monthSelected, yearSelected);

        crossobj.visibility=(dom||ie)? "visible" : "show"



        hideElement( 'SELECT', document.getElementById("calendar") );

        hideElement( 'APPLET', document.getElementById("calendar") );     

        hideElement( 'OBJECT', document.getElementById("calendar") );     



        bShow = true;

      }

      else

      {

        hideCalendar()

        if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, format)}

      }

      ctlNow = ctl

    }

  }



 if (isIE){



  document.onkeypress = function hidecal1 () { 

     if (!bPageLoaded) init();

     if (event!=null)

    if (event.keyCode==27) 

    {

      hideCalendar() 		

    }

  }



  document.onclick = function hidecal2 () {     

     if (!bPageLoaded) init();

    if (!bShow)

    {

      hideCalendar()

    }

    bShow = false

  }

  }else if (isMZ) {

   // todo: provide analog

  }





  if(ie)

  {

    init();	

  }

  else

  {

    init();	

  }

  


