//************************
//Configuration variables:
//************************

var imgDir='../'+(typeof(ZtVWeb)!='undefined' ? ZtVWeb.theme : (window['m_cThemePath'] ? m_cThemePath : 'SpTheme_2'))+'/formPage/';
var calendarWidth = SPTheme.calendarWidth||250;
var imgsrc=new Array((SPTheme.calendarDrop1||imgDir+"drop1.gif"),(SPTheme.calendarDrop2||imgDir+"drop2.gif"),(SPTheme.calendarLeft1||imgDir+"left1.gif"),(SPTheme.calendarLeft2||imgDir+"left2.gif"),(SPTheme.calendarRight1||imgDir+"right1.gif"),(SPTheme.calendarRight2||imgDir+"right2.gif"),(SPTheme.calendarClose||imgDir+"close.gif"),(SPTheme.calendarDivider||imgDir+"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;"
var styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"    //Colore del riquadro del giorni selezionato

function PrepareJsCalendar(documentOpened){
  //Prepara il calendario per visualizzazrlo appena si chiama il metodo ShowPopUpCalendar
  if(typeof(monthName)=='undefined'){//Non e' ancora preparato
    InitCalendarVars()
    BuildCalendar(documentOpened)
  }
}

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':
      case 'default':
        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 \u00e8"
        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(documentOpened){
	documentOpened = documentOpened || (window.document.readyState && window.document.readyState!='complete')
	var document = documentOpened ? window.document : [];
  if (!document.write){
		document.write=function(s){
			this.push(s);
		}
	}
  document.write("<div class='SPCalendar' id='Calendar' onmouseover='PrepareToDoNotHide()' onmouseout='PrepareToHide()' style='position:absolute;visibility:hidden;z-index:+999'>")
  document.write("<table cellspacing='0' width='"+((showWeekNumber==1)?calendarWidth:(calendarWidth-30))+"'>")
  document.write("<tr class='SPCalendarHeader'>")
	document.write("<td valign='middle' class='SPCalendarHeaderAll'>")
  document.write("<table width='"+((showWeekNumber==1)?(calendarWidth-2):(calendarWidth-32))+"'>")
	document.write("<tr>")
  document.write("<td class='SPCalendarHeader'>")
	document.write("<span id='calendar_caption'></span>")
	document.write("</td>")
	document.write("<td class='SPCalendarDragger' onmousedown=\"dragCalendar(event,'Calendar',this)\" style='width:100%;cursor:move;'>")
	document.write("&nbsp;")
	document.write("</td>")
	document.write("<td align='right'><a href='javascript:hideCalendar()'>")
	document.write("<a href='javascript:hideCalendar()'>")
	document.write("<img src='"+imgsrc[6]+"' 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 class='SPCalendarContent' style='padding:5px'>")
	document.write("<span id='content'></span>")
	document.write("</td>")
	document.write("</tr>")
	if (showToday==1){
    document.write("<tr class='SPCalendarFooter'>")
    document.write("<td style='padding:0;padding-bottom:8px;' 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' class='SPCalendarMonth' style='z-index:+999;position:absolute;visibility:hidden'></div>")
	document.write("<div id='selectYear' class='SPCalendarYear' style='z-index:+999;position:absolute;visibility:hidden'></div>")
	if(!documentOpened){
		var d=window.document.createElement('div');
		d.innerHTML=document.join('');
		window.document.body.appendChild(d);
	}
}

function InitCalendar(){
  for (i=0;i<imgsrc.length;i++){
    img[i]=new Image;
    img[i].src=imgsrc[i];
  }

  if (!ns4){
    if (!IsIE() && !IsOpera()){
      yearNow+=1900
    }
    calendarObj=Ctrl("Calendar").style;
    monthConstructed=false;
    yearConstructed=false;
    hideCalendar();

    if (showToday==1){
      Ctrl("lblToday").innerHTML=todayString+" <a class='SPCalendarFooter' 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='SPCalendarHeader' id='spanLeft' style='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='SPCalendarHeader' id='spanRight' style='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='SPCalendarHeader' id='spanMonth' style='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='SPCalendarHeader' id='spanYear' style='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=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 if(eval("typeof("+Left(ctlToPlaceValue.id,10)+"_Valid)")=="function"){
      //Nello zoom, la procedura _Valid non e' presente
      eval(Left(ctlToPlaceValue.id,10)+"_Valid()")
    }
    SetControlFocus(ctlToPlaceValue.id);
  } 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+",event)'>&nbsp;"+sName+"&nbsp;</td></tr>"
    }
    Ctrl("selectMonth").innerHTML="<table class='SPCalendarHeader' style='border-width:1;border-style:solid;border-color:#a0a0a0' width='70' cellspacing='0' onmouseover='clearTimeout(timeoutID1)' onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);stopEvent(event);'>"+sHTML+"</table>"
    monthConstructed=true
  }
}

function stopEvent(evt){
	evt || window.event;
	if (evt.stopPropagation){
	evt.stopPropagation();
	evt.preventDefault();
	}else if(typeof evt.cancelBubble != "undefined"){
	evt.cancelBubble = true;
	evt.returnValue = false;
	}
	return false;
}

function MonthChanged(i,evt){
  monthConstructed=false;
  monthSelected=i;
  constructCalendar();
  popDownMonth();
  stopEvent(evt);
}

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+");stopEvent(event);'>&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='SPCalendarHeader' style='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){
var year=n.getFullYear(),month=n.getMonth()+1,day=n.getDate()+(startAt==0?1:0)
var 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)
var 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 class='SPCalendarBody' border='0'><tr>";

  if(showWeekNumber==1){
    sHTML+="<td align='right' width='"+parseInt(calendarWidth/8)+"'><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='"+parseInt(calendarWidth/8)+"' align='right' style='color:#909090'><B>"+dayName[i]+"</B></td>";
    else
      sHTML+="<td width='"+parseInt(calendarWidth/8)+"' align='right'><B>"+dayName[i]+"</B></td>";
  }
  sHTML+="</tr><tr>";

  if (showWeekNumber==1){
    sHTML+="<td align='right'>"+WeekNbr(startDate)+"&nbsp;</td>";
  }
  for (var i=1;i<=dayPointer;i++){
    sHTML+="<td>&nbsp;</td>";
  }
  for (datePointer=1;datePointer<=numDaysInMonth;datePointer++){
    dayPointer++;
    sHTML+="<td align=right>";
    sStyle=styleAnchor;

    if ((datePointer==odateSelected) && (monthSelected==omonthSelected) && (yearSelected==oyearSelected)){
      sStyle+=styleLightBorder;
    }
    sHint="";
    for (k=0;k<HolidaysCounter;k++){
      if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1))){
        if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0))){
          sStyle+="background-color:#FFDDDD;";
          sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc;
        }
      }
    }
    var regexp= /\"/g;
    sHint=sHint.replace(regexp,"&quot;");

    dateMessage="onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' ";

    if ((datePointer==dateNow)&&(monthSelected==monthNow)&&(yearSelected==yearNow)){
      sHTML+="<b><a "+dateMessage+" title=\""+sHint+"\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#ff0000>&nbsp;"+datePointer+"</font>&nbsp;</a></b>";
    }
    else if (dayPointer%7==(startAt*-1)+1){
      sHTML+="<a "+dateMessage+" title=\""+sHint+"\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'>&nbsp;<font color=#909090>"+datePointer+"</font>&nbsp;</a>";
    }
    else{
      sHTML+="<a class='SPCalendarBody' "+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>";
      }
    }
  }
  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 e' 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")

      if(Ctrl("bodyDiv") && Ctrl("bodyDiv").scrollTop)
        toppos=toppos-Ctrl("bodyDiv").scrollTop;

      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,dragger){
  Ctrl("selectYear").style.visibility=Ctrl("selectMonth").style.visibility="hidden";
  dragToolbar(event,obj,dragger.offsetLeft);
}
