//************************
//Configuration variables:
//************************

var imgDir="../"+m_cThemePath+"/formPage/"
var imgsrc=new Array("drop1.gif","drop2.gif","left1.gif","left2.gif","right1.gif","right2.gif","close.gif","divider.gif")
var calendarReady=false

var fixedX=-1             //-1 if to appear below control
var fixedY=-1             //-1 if to appear below control
var startAt=1             // 0 - sunday ; 1 - monday
var showWeekNumber=1      // 0 - don't show; 1 - show
var showToday=1           // 0 - don't show; 1 - show

var gotoString,todayString,weekString,scrollLeftMessage,scrollRightMessage
var selectMonthMessage,selectYearMessage,selectDateMessage
var monthName,dayName

var calendarObj,monthSelected,yearSelected,dateSelected
var omonthSelected,oyearSelected,odateSelected,monthConstructed,yearConstructed
var intervalID1,intervalID2,timeoutID1,timeoutID2,ctlToPlaceValue,ctlNow,dateFormat,nStartingYear

var bPageLoaded=false
var dom=CtrlById
var ns4=document.layers

var today=new Date()
var dateNow=today.getDate()
var monthNow=today.getMonth()
var yearNow=today.getYear()
var img=new Array()

var bShow=false
var HolidaysCounter=0
var Holidays=new Array()

var styleAnchor="text-decoration:none;color:#000000;"                               //Colore dei numeri dei giorni
var styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"    //Colore del riquadro del giorni selezionato

function PrepareJsCalendar(){
  //Prepara il calendario per visualizzazrlo appena si chiama il metodo ShowPopUpCalendar
  InitCalendarVars()
  BuildCalendar()
}

function InitCalendarVars(){
  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")

  gotoString="Go To Current Month"
  todayString="Today is"
  weekString="Wk"
  scrollLeftMessage="Click to scroll to previous month. Hold mouse button to scroll automatically."
  scrollRightMessage="Click to scroll to next month. Hold mouse button to scroll automatically."
  selectMonthMessage="Click to select a month."
  selectYearMessage="Click to select a year."
  selectDateMessage="Select [date] as date."

  if(typeof(m_cLanguage)!='undefined'){
    switch(m_cLanguage){
      case 'ita':
        monthName=new Array("Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre")
        if (startAt==0)
          dayName=new Array("Dom","Lun","Mar","Mer","Gio","Ven","Sab")
        else
          dayName=new Array("Lun","Mar","Mer","Gio","Ven","Sab","Dom")

        gotoString="Vai al mese corrente"
        todayString="Oggi è"
        weekString="Sett"
        scrollLeftMessage="Premere per scorrere al mese precedente. Tieni premuto per scorrere automaticamente."
        scrollRightMessage="Premere per scorrere al mese prossimo. Tieni premuto per scorrere automaticamente."
        selectMonthMessage="Premere per cambiare mese."
        selectYearMessage="Premere per cambiare anno."
        selectDateMessage="Seleziona [date] come data."
        break
    }
  }
}

function BuildCalendar(){
  if (dom){
    document.write("<div id='Calendar' onmouseover='PrepareToDoNotHide()' onmouseout='PrepareToHide()' style='position:absolute;visibility:hidden;z-index:+999'>")
    document.write("<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'>")
    document.write("<tr class='calendar'>")
    document.write("<td onmousedown=dragCalendar(event,'Calendar',5,5)>")
    document.write("<table width='"+((showWeekNumber==1)?248:218)+"'>")
    document.write("<tr>")
    document.write("<td class='calendar' style='padding:2px;font-family:arial;font-size:11px'>")
    document.write("<b><span id='calendar_caption'></span></b>")
    document.write("</td>")
    document.write("<td align='right'><a href='javascript:hideCalendar()'>")
    document.write("<a href='javascript:hideCalendar()'>")
    document.write("<img src='"+imgDir+imgsrc[6]+"' width='15' height='13' border='0' alt='Close the Calendar'>")
    document.write("</a>")
    document.write("</td>")
    document.write("</tr>")
    document.write("</table>")
    document.write("</td>")
    document.write("</tr>")
    document.write("<tr>")
    document.write("<td style='padding:5px' bgcolor='#ffffff'>")
    document.write("<span id='content'></span>")
    document.write("</td>")
    document.write("</tr>")
    if (showToday==1){
      document.write("<tr bgcolor=#f0f0f0>")
      document.write("<td style='padding:5px;color:#000000' align=center>")
      document.write("<span id='lblToday'></span>")
      document.write("</td>")
      document.write("</tr>")
    }
    document.write("</table>")
    document.write("</div>")
    document.write("<div id='selectMonth' style='z-index:+999;position:absolute;visibility:hidden'></div>")
    document.write("<div id='selectYear' style='z-index:+999;position:absolute;visibility:hidden'></div>")
  }
}

function InitCalendar(){
  for (i=0;i<imgsrc.length;i++){
    img[i]=new Image;
    img[i].src=imgDir+imgsrc[i];
  }

  if (!ns4){
    if (!IsIE()){
      yearNow+=1900
    }
    calendarObj=Ctrl("Calendar").style;
    monthConstructed=false;
    yearConstructed=false;
    hideCalendar();

    if (showToday==1){
      Ctrl("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 class='calendar' id='spanLeft' style='border-style:solid;border-width:1;cursor:pointer'"
    sHTML1+=" onmouseover='swapImage(\"changeLeft\",\""+imgsrc[3]+"\");window.status=\""+scrollLeftMessage+"\"'"
    sHTML1+=" onclick='javascript:decMonth()' onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\""+imgsrc[2]+"\");window.status=\"\"'"
    sHTML1+=" onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)'"
    sHTML1+=" onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<img id='changeLeft' src='"+img[2].src+"' border='0'>&nbsp</span>&nbsp;"

    sHTML1+="<span class='calendar' id='spanRight' style='border-style:solid;border-width:1;cursor:pointer'"
    sHTML1+=" onmouseover='swapImage(\"changeRight\",\""+imgsrc[5]+"\");window.status=\""+scrollRightMessage+"\"'"
    sHTML1+=" onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\""+imgsrc[4]+"\");window.status=\"\"'"
    sHTML1+=" onclick='incMonth()' onmousedown='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500)'"
    sHTML1+=" onmouseup='clearTimeout(timeoutID1);clearInterval(intervalID1)'>&nbsp<img id='changeRight' src='"+img[4].src+"' border='0'>&nbsp</span>&nbsp"

    sHTML1+="<span class='calendar' id='spanMonth' style='border-style:solid;border-width:1;cursor:pointer'"
    sHTML1+=" onmouseover='swapImage(\"changeMonth\",\""+imgsrc[1]+"\");window.status=\""+selectMonthMessage+"\"'"
    sHTML1+=" onmouseout='swapImage(\"changeMonth\",\""+imgsrc[0]+"\");window.status=\"\"' onclick='popUpMonth()'></span>&nbsp;"

    sHTML1+="<span class='calendar' id='spanYear' style='border-style:solid;border-width:1;cursor:pointer'"
    sHTML1+=" onmouseover='swapImage(\"changeYear\",\""+imgsrc[1]+"\");window.status=\""+selectYearMessage+"\"'"
    sHTML1+=" onmouseout='swapImage(\"changeYear\",\""+imgsrc[0]+"\");window.status=\"\"' onclick='popUpYear()'></span>&nbsp;"

    Ctrl("calendar_caption").innerHTML=sHTML1;
    bPageLoaded=true;
  }
}

/* hides <select> and <applet> objects (for IE only) */
function hideElement(elmID,overDiv){
  if(IsIE()){
    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(IsIE()){
    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
}

function addHoliday(d,m,y,desc){
  Holidays[HolidaysCounter++]=new HolidayRec(d,m,y,desc)
}

function swapImage(srcImg,destImg){
Ctrl(srcImg).src=imgDir+destImg
}

function hideCalendar(){
  if(typeof(calendarObj)!='undefined'){
    calendarObj.visibility="hidden"
    if (Ctrl("selectMonth").style!=null)
      Ctrl("selectMonth").style.visibility="hidden"
    if (Ctrl("selectYear").style!=null)
      Ctrl("selectYear").style.visibility="hidden"
    showElement('SELECT')
    showElement('APPLET')
    documentRemoveClick(hideCalendar2)
  }
}

function padZero(num){
  return (num<10) ? '0'+num : num
}

function constructDate(d,m,y){
  var 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(){
  hideCalendar();
  ctlToPlaceValue.value=constructDate(dateSelected,monthSelected,yearSelected)
  try{
    if(eval("typeof("+ctlToPlaceValue.id+"_Valid)")=="function"){
      //i campi aggiunti hanno un id uguale al nome e di lunghezza variabile
      eval(ctlToPlaceValue.id+"_Valid()")
    } else {
      //Nello zoom, la procedura _Valid non è presente
      eval(Left(ctlToPlaceValue.id,10)+"_Valid()")
    }
  } catch(e){}
}

/*** 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.className='mover' onmouseout=this.className='mout' style='cursor:pointer' onclick='MonthChanged("+i+")'>&nbsp;"+sName+"&nbsp;</td></tr>"
    }
    Ctrl("selectMonth").innerHTML="<table class='calendar' style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0' width='70' cellspacing='0' onmouseover='clearTimeout(timeoutID1)' onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>"+sHTML+"</table>"
    monthConstructed=true
  }
}

function MonthChanged(i){
  monthConstructed=false;
  monthSelected=i;
  constructCalendar();
  popDownMonth();
  event.cancelBubble=true;
}

function popUpMonth(){
  constructMonth()
  Ctrl("selectMonth").style.visibility=(dom||IsIE())? "visible" : "show"
  Ctrl("selectMonth").style.left=parseInt(calendarObj.left)+50
  Ctrl("selectMonth").style.top=parseInt(calendarObj.top)+26
  hideElement('SELECT',Ctrl("selectMonth"))
  hideElement('APPLET',Ctrl("selectMonth"))
}

function popDownMonth(){
  Ctrl("selectMonth").style.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;"
    }
    Ctrl("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;"
    }
    Ctrl("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.className='mover' onmouseout='clearInterval(intervalID1);this.className=\"mout\"'"
    sHTML+=" 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.className='mover' onmouseout=this.className='mout' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>&nbsp;"+sName+"&nbsp;</td></tr>"
      j++
    }
    sHTML+="<tr><td align='center' onmouseover=this.className='mover' onmouseout='clearInterval(intervalID2);this.className=\"mout\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)' onmouseup='clearInterval(intervalID2)'>+</td></tr>"
    Ctrl("selectYear").innerHTML="<table class='calendar' style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0' width='44' cellspacing='0' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)'>"+sHTML+"</table>"
    yearConstructed=true
  }
}

function popDownYear(){
  clearInterval(intervalID1)
  clearTimeout(timeoutID1)
  clearInterval(intervalID2)
  clearTimeout(timeoutID2)
  Ctrl("selectYear").style.visibility= "hidden"
}

function popUpYear(){
  var leftOffset

  constructYear()
  Ctrl("selectYear").style.visibility=(dom||IsIE())? "visible" : "show"
  leftOffset=parseInt(calendarObj.left)+Ctrl("spanYear").offsetLeft
  if (IsIE()){
    leftOffset+=6
  }
  Ctrl("selectYear").style.left=leftOffset
  Ctrl("selectYear").style.top=parseInt(calendarObj.top)+26
}

/*** calendar ***/
function WeekNbr(n){
  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:verdana;font-size:10px'><tr>"

  if (showWeekNumber==1){
    sHTML+="<td width=27 style='color:#000000'><b>"+weekString+"</b></td>"
    sHTML+="<td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+img[7].src+"' width=1></td>"
  }

  for (i=0;i<7;i++){
    if ((i==6&&startAt==1) || (i==0&&startAt==0))
      sHTML+="<td width='27' align='right' style='color:#909090'><B>"+dayName[i]+"</B></td>"
    else
      sHTML+="<td width='27' align='right' style='color:#000000'><B>"+dayName[i]+"</B></td>"
  }
  sHTML+="</tr><tr>"

  if (showWeekNumber==1){
    sHTML+="<td align=right style='color:#000000'>"+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 style='color:#000000'>"+(WeekNbr(new Date(yearSelected,monthSelected,datePointer+1)))+"&nbsp;</td>"
      }
    }
  }
  Ctrl("content").innerHTML=sHTML;
  Ctrl("spanMonth").innerHTML="&nbsp;"+monthName[monthSelected]+"&nbsp;<IMG id='changeMonth' SRC='"+img[0].src+"' BORDER=0>"
  Ctrl("spanYear").innerHTML="&nbsp;"+yearSelected+"&nbsp;<IMG id='changeYear' SRC='"+img[0].src+"' BORDER=0>"
}

function ShowPopUpCalendar(ctrl,getPicture,sayPicture){
  if (!calendarReady){
    InitCalendar()
    calendarReady=true
  }
  var leftpos=0
  var toppos=0
  if (bPageLoaded){
    if (calendarObj.visibility=="hidden"){
      ctlToPlaceValue=ctrl
      dateFormat=sayPicture
      currentDate=ctrl.value

      if (currentDate==""){
        dateSelected=dateNow
        monthSelected=monthNow
        yearSelected=yearNow
      }
      else{
        dateSelected=Val(Substr(currentDate,At('DD',getPicture),2))
        monthSelected=Val(Substr(currentDate,At('MM',getPicture),2))-1
        yearSelected=Val(Substr(currentDate,At('YYYY',getPicture),4))
        //Se la data inserita è sbagliata, seleziono quella attuale
        if (!CheckDate(dateSelected,monthSelected,yearSelected)){
          dateSelected=dateNow
          monthSelected=monthNow
          yearSelected=yearNow
        }
      }
      odateSelected=dateSelected
      omonthSelected=monthSelected
      oyearSelected=yearSelected

      aTag=ctrl
      do{
        aTag=aTag.offsetParent
        leftpos+=aTag.offsetLeft
        toppos+=aTag.offsetTop
      } while(aTag.tagName!="BODY")

      calendarObj.left=fixedX==-1 ? ctrl.offsetLeft+leftpos : fixedX
      calendarObj.top=fixedY==-1 ? ctrl.offsetTop+toppos+ctrl.offsetHeight+2 : fixedY
      if(document.body.offsetLeft+document.body.offsetWidth < eval(parseInt(calendarObj.left)+"+"+Ctrl("Calendar").offsetWidth))
        if ((calendarObj.left=parseInt(calendarObj.left)-256+ctrl.offsetWidth)<0)
          calendarObj.left=0
      if(document.body.offsetTop+document.body.offsetHeight < eval(parseInt(calendarObj.top)+"+"+Ctrl("Calendar").offsetHeight))
        if ((calendarObj.top=parseInt(calendarObj.top)-170-ctrl.offsetHeight)<0)
          calendarObj.top=0
      constructCalendar(1,monthSelected,yearSelected)
      calendarObj.visibility=(dom||IsIE()) ? "visible" : "show"

      hideElement('SELECT',Ctrl("calendar"))
      hideElement('APPLET',Ctrl("calendar"))

      bShow=true
    }
    else{
      hideCalendar()
      if (ctlNow!=ctrl)
        ShowPopUpCalendar(ctrl,getPicture,sayPicture)
    }
    ctlNow=ctrl
  }
  documentAddClick(hideCalendar2)
}
function hideCalendar2(){
  if (!bShow)
    hideCalendar()
}
function PrepareToDoNotHide(){
  bShow=true
}
function PrepareToHide(){
  bShow=false
}
function dragCalendar(event,obj,x,y){
  Ctrl("selectYear").style.visibility=Ctrl("selectMonth").style.visibility="hidden"
  dragToolbar(event,obj,x,y)
}

