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")
var checker_side;


//  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 = 0   // 0 - don't show; 1 - show
  var imgDir = "http://www.orenair.ru/img/"     // 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("pp.jpg","pp.jpg","pp.jpg","pp.jpg","pp.jpg","pp.jpg")
  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++ )
        {
//        alert(document.all.tags( elmID ).length);
          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; border: 1px solid black; background-color: white;'><table cellspacing=0>"+
                    "<tr bgcolor='#0068B2'><td><table width=180 border=0><tr><td style='font: bold 10px Tahoma ;'><span id='caption'></span></td><td align=right><a href='javascript: hideCalendar()'><IMG SRC='"+imgDir+"cal_close.gif' BORDER='0'/></a></td></tr></table></td></tr><tr><td><span id='content'></span></td></tr>")
    if (showToday==1) {document.write ("<tr bgcolor=#f9f9f9><td 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("ßíâàðü","Ôåâðàëü","Ìàðò","Àïðåëü","Ìàé","Èþíü","Èþëü","Àâãóñò","Ñåíòÿáðü","Îêòÿáðü","Íîÿáðü","Äåêàáðü")
  var monthName_eng = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
  if (startAt==0)
  {dayName = new Array ("Âñ", "Ïí", "Âò", "Ñð", "×ò", "Ïò", "Ñá");}
  else
  {dayName = new Array ("Ïí", "Âò", "Ñð", "×ò", "Ïò", "Ñá", "Âñ");}
  var styleAnchor="text-decoration: none; color: black; font-size: 10px;"
  var styleLightBorder = " color: #00BFFF; font: bold 10px tahoma;";

  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 = todayString + " <a title='"+gotoString+"' style='"+styleAnchor+"' >"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,3)  + " " +  "</a>"; }

      sHTML1  = "<span id='spanLeft'  style='cursor: pointer' onclick='decMonth()' onmouseout='clearInterval(intervalID1);' onmousedown='clearTimeout(timeoutID1); timeoutID1 = setTimeout(\"StartDecMonth()\",500)' onmouseup='clearTimeout(timeoutID1); clearInterval(intervalID1)'>&nbsp;<a href='#' OnClick='return false;'><IMG id='changeLeft'  SRC='"+imgDir+"cal_left.gif' width=10 height=10 BORDER=0></a>&nbsp;</span>&nbsp;";
      sHTML1 += "<span id='spanRight' style='cursor: pointer' onclick='incMonth()' onmouseout='clearInterval(intervalID1);' onmousedown='clearTimeout(timeoutID1); timeoutID1 = setTimeout(\"StartIncMonth()\",500)' onmouseup='clearTimeout(timeoutID1); clearInterval(intervalID1)'>&nbsp;<a href='#' OnClick='return false;'><IMG id='changeRight' SRC='"+imgDir+"cal_right.gif' width=10 height=10 BORDER=0></a>&nbsp;</span>&nbsp;"
      sHTML1 += "<span id='spanMonth' style='cursor: pointer' onclick='popUpMonth()'></span>&nbsp;";
      sHTML1 += "<span id='spanYear'  style='cursor: pointer' 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)

        if(checker_side !=1 ) make_date();
  }

  /*** 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 += 2) {
        if (i == monthSelected) { sName = "<B>" + monthName[i] + "</B>"; } else { sName = monthName[i]; }
        sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\"#FBE3BA\"' onmouseout='this.style.backgroundColor=\"\"' " + "style='cursor: pointer; font: 11px tahoma;' onclick='monthConstructed = false; monthSelected = " + i + "; constructCalendar(); popDownMonth(); event.cancelBubble = true'>&nbsp;" + sName + "&nbsp;</td>";
        if ((i + 1) == monthSelected) { sName = "<B>" + monthName[i+1] + "</B>"; } else { sName = monthName[i+1]; }
        sHTML +=     "<td id='m" + (i + 1) + "' onmouseover='this.style.backgroundColor=\"#FBE3BA\"' onmouseout='this.style.backgroundColor=\"\"' " + "style='cursor: pointer; font: 11px tahoma;' onclick='monthConstructed = false; monthSelected = " + (i + 1) + "; constructCalendar(); popDownMonth(); event.cancelBubble = true'>&nbsp;" + sName + "&nbsp;</td></tr>";
      }
      document.getElementById("selectMonth").innerHTML = "<table style='border: #a0a0a0 solid 1px;' bgcolor='#f3f3f3' 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) + 20) + "px"
    hideElement( 'SELECT', document.getElementById("selectMonth") );
    hideElement( 'APPLET', document.getElementById("selectMonth") );
  }

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

  /*** Year Pulldown ***/

  function incYear() {
    for (i = 0; i < 3; 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 < 3; 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=\"#FBE3BA\"' 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 - 1;
      for (i = (yearSelected - 1); i <= (yearSelected + 1); i++) {
        if (i == yearSelected){ sName = "<B>" + i + "</B>"; } else { sName = i; }
        sHTML += "<tr><td id = 'y" + j + "' onmouseover='this.style.backgroundColor=\"#FBE3BA\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor: pointer; font: 11px tahoma' onclick='selectYear("+j+"); event.cancelBubble = true'>&nbsp;" + sName + "&nbsp;</td></tr>"
        j ++;
      }
      sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\"#FBE3BA\"' 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 style='border: #a0a0a0 solid 1px;' bgcolor='#f3f3f3' 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) + 20)  + "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 cellspacing=0 cellpadding=0 style='z-index: 5000;'><tr>";

//    if (showWeekNumber==1) { sHTML += "<td width=27 style='color=#356CA5'><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 align='right' style='color: #ff0000; font: bold 10px tahoma; width: 27px;'>"+ dayName[i]+"&nbsp&nbsp</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;
      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=\"\"' ";

      n1 = new Date();
      n2 = new Date(yearSelected, monthSelected, datePointer);
      n1 > n2 ? sStyle1 = sStyle + "color: #DCDCDC;" : sStyle1 = sStyle + "color: black;"
      if ((datePointer == odateSelected) && (monthSelected == omonthSelected) && (yearSelected == oyearSelected)) { sStyle1 += styleLightBorder; }
      if (n1 > n2) {rrr = "#";} else {rrr = "javascript: dateSelected=" + datePointer + "; closeCalendar();";}


      sHTML += "<a   style='"+sStyle1+"' href='" + rrr + "'>" + datePointer + "&nbsp&nbsp</a>"

/*      if ((datePointer == dateNow) && (monthSelected == monthNow) && (yearSelected == yearNow))
      { sHTML += "<b><a style='"+sStyle1+"' href='javascript: dateSelected=" + datePointer + "; closeCalendar();'>" + datePointer + "&nbsp&nbsp</a></b>"}
      else if (dayPointer % 7 == (startAt * -1)+1)
      { sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle1+"' href='javascript: dateSelected=" + datePointer + ";closeCalendar();'>" + datePointer + "&nbsp&nbsp</a>" }
      else
      { sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle1+"' href='javascript: dateSelected=" + datePointer + ";closeCalendar();'>" + datePointer + "&nbsp&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 = "<a style='text-decoration: none; color: #ffffff; font-size: 10px; ' href='#' OnClick='return false;'>&nbsp;" + monthName[monthSelected] + "&nbsp;<IMG id='changeMonth' SRC='"+imgDir+"cal_drop.gif' WIDTH='12' HEIGHT='10' BORDER=0></a>"
    document.getElementById("spanYear").innerHTML = "<a style='text-decoration: none; color:#FFFFFF; font-size: 10px;' href='#' OnClick='return false;'>&nbsp;" + yearSelected + "&nbsp;<IMG id='changeYear' SRC='"+imgDir+"cal_drop.gif' WIDTH='12' HEIGHT='10' BORDER=0></a>"
  }

  function popUpCalendar(ctl, ctl2, format, mode, side, evt) {
    var leftpos=0
    var toppos=0

    if (side == 1) checker_side = 1; else checker_side = 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) { 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 = document.getElementById('backDate');
          aTag = ctl;
//        alert(ctl2);
//        var br1 = aTag.getBoundingClientRect();
//        alert(br1.top);
//        alert(br1.left);
/*        do {
          aTag = aTag.offsetParent;
          leftpos += aTag.offsetLeft;
          toppos += aTag.offsetTop;
        } while(aTag.tagName != "BODY");*/

/*           while (aTag)
    {
        leftpos += aTag.offsetLeft;
        toppos += aTag.offsetTop;
        aTag = aTag.offsetParent;
    }*/

//          aTag = aTag.offsetParent;
//          leftpos = aTag.offsetLeft;
//          toppos = aTag.offsetTop;
//          leftpos = br1.left;
//          toppos = br1.top;
 var top=0, left=0
/*    while(aTag) {
        top = top + parseInt(aTag.offsetTop)
        left = left + parseInt(aTag.offsetLeft)
        aTag = aTag.offsetParent
    }*/

//        top = document.getElementById("yyy").style.top;
//        left = document.getElementById("yyy").style.left;
//        alert('d');         alert(top);

if (!evt) evt = window.event;
    if (evt.pageX || evt.pageY) {
        x = evt.pageX;
        y = evt.pageY;
    } else if (evt.clientX || evt.clientY){
        x = evt.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft) - document.documentElement.clientLeft;
        y = evt.clientY + (document.documentElement.scrollTop || document.body.scrollTop) - document.documentElement.clientTop;
    }

left = x;
top = y;


//          crossobj.left = left - 230;           crossobj.top = top - 240;
          crossobj.left = left;           crossobj.top = top;
//          toppos = 100;
//          alert(leftpos);
//          alert(toppos);

        //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 { window.onload=init; }
  init();
