var language;

var cal_months;

var cal_days;

var cal_dayOffset = jsGlobalDayOffset;

var cal_cbf;

var cal_savedBody;

var cal_savedWinc;

var cal_savedDiv;

var cal_savedFrame;

var cal_calldoc;

var cal_currentSetting;

var cal_backgroundcolor='#b5c7e7';

var cal_firstDate;

var cal_lastDate;

var cal_setDate;



function cal_checkUserAgent(){
    var ua=navigator.userAgent.toLowerCase();

    // Calendar can freeze IE 5.2 on the Mac, disable it.

    if (ua.indexOf('msie')!=-1 && ua.indexOf('mac')!=-1 && ua.indexOf('5.')!=-1){
        return false;
    }

    return true;
}



function showCalDivOffset(lang,d, callback, e, fd, ld, xOff, yOff){
    if (!cal_checkUserAgent()) return;

    if (cal_savedDiv){
        cal_close();
        return;
    }
     language=lang;
// window.alert("lang=  "+language);
     if(language==3){cal_months=jsGlobalMonths_d;cal_days= jsGlobalDaysAbbrev_d;}
     else if(language==2){cal_months=jsGlobalMonths_gb;cal_days= jsGlobalDaysAbbrev_gb;}
     else if(language==1){cal_months=jsGlobalMonths_it;cal_days= jsGlobalDaysAbbrev_it;}
     else{return;}

    cal_setDate=d;
    cal_cbf=callback;

    cal_calldoc=document;

    cal_savedDiv=document.createElement('div');

    cal_savedDiv.innerHTML=cal_getHTML("window.");

    cal_savedDiv.style.position='absolute';

    cal_savedDiv.style.top=cal_getMouseY(e)+yOff;

    cal_savedDiv.style.left=cal_getMouseX(e)+xOff;
    


    // Use an iframe to hide select form elements under the
    // calendar in Internet Explorer

    cal_savedFrame=document.createElement('iframe');

    cal_savedFrame.style.border='none';

    cal_savedFrame.style.position='absolute';

    cal_savedFrame.style.top=cal_getMouseY(e)+yOff;

    cal_savedFrame.style.left=cal_getMouseX(e)+xOff;

    cal_savedFrame.style.width='210px';

    cal_savedFrame.style.height='180px';

    document.body.appendChild(cal_savedFrame);
    

    document.body.appendChild(cal_savedDiv);    


    cal_currentSetting=new Date(d);

    cal_firstDate=fd;

    cal_lastDate=ld;
//window.alert(" cal_setDate=   "+ cal_setDate+"\n"+" cal_currentSetting=  "+ cal_currentSetting+"\n"+" cal_firstDate=   "+cal_firstDate+"\n"+"cal_lastDate=   "+cal_lastDate);
    cal_draw(0);
    return;
}



function cal_getHTML(wR){
    var s = "";

    s+="<table border='0' cellpadding='0' cellspacing='0' width='210'>";

    s+="<tr><td border='0' bgcolor='#4b73bb' style='border-left: 1px solid #666666; border-right: 1px solid #666666; border-top: 1px solid #666666;'>";

    s+=cal_getDF(wR);

    s+="</td></tr>";

    s+="<tr><td border=0 bgcolor='#dae4ea'>";

    s+=cal_getBody(wR);

    s+="</td></td></tr>";

    s+="<tr><td background='/img/calendar/rounded_br.gif' width='7' height='7' border='0'></td></tr></table>";

    s+="</table>";

    return s;
}



function cal_getDF(wR){
    var s="";

    s+="<table style='border-collaspse:collapse;border:none;height:100%;width:100%;background-color:#3678F0;'><tr>";

    s+="<td width='14' border=0>&nbsp;</td>";

    s+="<td border=0 style='color:#ffffff;font-size:11px;font-family:arial;' align='center'><span id='cal_select'></span></td>";

    s+="<td border=0 width='14'>&nbsp;</td>";

    s+="<td border=0 width='7' onclick='"+wR+"cal_close();' style='cursor:pointer;cursor:hand;'  align='right' valign='top'><img src='Immagini/x.gif'  border='0' align='right' valign='top' hspace='1' vspace='1' style='padding-left:2px;'></td>";

    s+="</tr></table>";

    return s;
}




function cal_getBody(wR){
    var s="";

    s+="<table style='font-family:Tahoma,Arial,Helvetica,sans-serif;font-size:12px;background-color:#DAE4EA;border:none;cursor:pointer;cursor:hand;'>";

    s+=cal_getWDayH(wR);

    s+=cal_getDays(wR);

    s+="</table>";

    return s;
}



function cal_getWDayH(wR){
    var s="";

    s+="<tr>";

    for (var i=0;i<6; i++){s+="<td style='width:30px;border:1px solid #999999;color:#000099;font-weight:bold;background-color:#e3Ebf3;text-align:center;'>"+cal_days[i]+"</td>";}

    s+="<td style='width:30px;border:1px solid #999999;color:#ff0000;font-weight:bold;background-color:#e3Ebf3;text-align:center;'>"+cal_days[6]+"</td></tr>";

    return s;
}



function cal_getDays(wR){

    var s="";
    var k=1;

    for (var j=0;j<6;j++){
        s+="<tr>";

        for (var i=0;i<cal_days.length; i++)s+="<td id=cal_c"+k+" onclick='"+wR+"cal_dCb("+(k++)+");' type=text style='text-align:center;height:25px;'></td>";

        s+="</tr>";
    }
    return s;
}



function cal_getScreenX(e){
    if (!e && window.event) e = window.event;

    if (e && e.screenX) return e.screenX;

    return 0;
}



function cal_getScreenY(e){
    if (!e && window.event) e = window.event;

    if (e && e.screenY) return e.screenY;

    return 0;
}



function cal_getMouseX(e){
    if (!e && window.event) e = window.event;

    if (e && e.pageX) return e.pageX;

    if (e && e.clientX) return e.clientX + document.body.scrollLeft;
    return 50;
}



function cal_getMouseY(e){
    if (!e && window.event) e = window.event;

    if (e && e.pageY) return e.pageY;

    if (e && e.clientY) return e.clientY + document.body.scrollTop;

    return 50;
}



function cal_setToday(){
  cal_currentSetting = new Date();
  cal_draw();
}



function cal_dCb(dateIndex){
    cal_currentSetting.setDate(1);

    var subtract = (cal_currentSetting.getDay() + 5 - cal_dayOffset) % 7 + 1;

    if (subtract <= 2) subtract += 7;

    var workingDate = new Date(cal_currentSetting);

    var dateCorrection=dateIndex-subtract-1;

    for (var i=0; i<dateCorrection; i++){
        workingDate.setMilliseconds(86400000);
    }
    for (var i1=0; i1>dateCorrection; i1--){
        workingDate.setMilliseconds(-86400000);
    }
    if (cal_dcomp(cal_firstDate,workingDate) <= 0 && cal_dcomp(cal_lastDate,workingDate) >= 0){
        cal_close();

        cal_cbf(workingDate);
    }
}



function cal_close(){
    if (cal_savedBody) cal_calldoc.body.innerHTML = cal_savedBody;

    if (cal_savedWinc) cal_savedWinc.close();

    if (cal_savedDiv) document.body.removeChild(cal_savedDiv);

    if (cal_savedFrame) document.body.removeChild(cal_savedFrame);

    cal_savedBody=cal_savedWinc=cal_savedDiv=null;
}




function cal_nextMonth(){
    cal_currentSetting.setDate(1);

    var year=cal_currentSetting.getFullYear();
    var month=cal_currentSetting.getMonth();

    var index=cal_calldoc.getElementById("select_cal").selectedIndex;

   var stringyear=cal_calldoc.getElementById("select_cal")[index].value.split(/\//)[1];
   var stringmonth=cal_calldoc.getElementById("select_cal")[index].value.split(/\//)[0];

//window.alert("index="+index+"\n"+"month="+month+"\n"+"stringmonth="+ stringmonth+"\n\n\n"+" year= "+ year+"\n"+"stringyear= "+stringyear);

     switch(stringmonth){
	case '01':
		index=0
		break;
	case '02': 
		index=1
		break;
	case '03': 
		index=2
		break;
	case '04': 
		index=3
		break;
	case '05': 
		index=4
		break;
	case '06': 
		index=5
		break;
	case '07': 
		index=6
		break;
	case '08':
		index=7
		break;
	case '09': 
		index=8
		break;
	case '10': 
		index=9
		break;
	case '11': 
		index=10
		break;
	case '12': 
		index=11
		break;
	}     


//window.alert("dopo switch:"+"\n"+"index="+index+"\n"+"month="+month+"\n"+"stringmonth="+ stringmonth);

    var yeardiff=year-stringyear;
    var monthdiff=index-month;

 if(yeardiff==-1){cal_currentSetting.setFullYear(stringyear);}
     else if(yeardiff==1){cal_currentSetting.setFullYear(year);}


 if(monthdiff!=0){
     month= cal_currentSetting.getMonth(cal_currentSetting.setMonth(index));
//window.alert("month="+month);
      monthdiff=index-month;
//window.alert("monthdiff dopo if="+monthdiff);

//   window.alert("cal_currentSetting=   "+cal_currentSetting);
    }
    cal_draw(1);

}





function cal_dcomp(d1, d2){
    if (!d1 || !d2) return 0;

    if (d1.getYear() == d2.getYear()){
        if (d1.getMonth() == d2.getMonth()){
            return d1.getDate() - d2.getDate();
        }
        return d1.getMonth()-d2.getMonth();
    }
    return d1.getYear()-d2.getYear();
}


function cal_draw(p){
    var today = new Date();

    cal_currentSetting.setDate(1);

    var year = cal_currentSetting.getFullYear();

    var month = cal_currentSetting.getMonth();
    

         if(p==0){
          cal_calldoc.getElementById("cal_select").innerHTML=cal_setHTMLselectMonths(cal_setDate);
      }


    var workingDate = new Date(cal_currentSetting);

    var subtract = (cal_currentSetting.getDay() + 5 - cal_dayOffset) % 7 + 1;

    if (subtract <= 2) subtract += 7;

    workingDate.setMilliseconds(-subtract*86400000);

    for(var dayCount=1; dayCount <= 42; dayCount++){
        var field = cal_calldoc.getElementById("cal_c"+dayCount);

        field.innerHTML = workingDate.getDate();

        var bgcolor = '#ffffff';

        var bordcolor = '#ffffff';

        var fgcolor = '#000000';

        if (cal_dcomp(cal_firstDate,workingDate) > 0 || cal_dcomp(cal_lastDate,workingDate) < 0){

            bgcolor = '#666666';
            bordcolor = '#cccccc';
            fgcolor = '#cccccc';

        } else if (workingDate.getMonth() != month){

            bgcolor = '#dae4ea';
            bordcolor = '#dae4ea';
            fgcolor = '#999999';

        } else if (cal_dcomp(workingDate, cal_setDate) == 0){

            bgcolor = '#ffcc66';
            bordcolor = '#000000';
            fgcolor = '#000000';

        } else if (cal_dcomp(workingDate, today) == 0){
            bordcolor = '#999999';

        } else if ((workingDate.getDay() + 5 - cal_dayOffset) % 7 + 1 == 0 || (workingDate.getDay() + 5 - cal_dayOffset) % 7 + 1 == 6){

        } 
        
        field.style.backgroundColor = bgcolor;
        field.style.borderColor = bordcolor;
        field.style.color = fgcolor;
        workingDate.setMilliseconds(86400000);
    }
}


//-----------------------------------------------------------------------------------------------------------------------------------------

function cal_setHTMLselectMonths(d){
        var s="<select id='select_cal' style='font-color:#200080;font-size:8pt;font-family: arial,arial narrow,helvetica, sans serif,verdana;' onChange='cal_nextMonth()'>";
        var date=d;var j;var z;
        var month=date.getMonth();
        var year= date.getFullYear();
        for (var i=0; i<=11; i++){
	j=month+i;
	z=month+i;
	if(j>11){j=j%11-1;if(z==12){year+=1;}}
//        alert("i= "+i);
	s+="<option value='"+cal_valueOption(j,year)+"'>"+cal_months[j]+" "+year+"</option>";
	 }
	s+="</select>";
//        alert("s= "+s);
        return s;
}


function cal_valueOption(m,y) {
        var m=m;var y=y;
        m=padMonth(m+1);
        var s=m+"/"+y;
//         alert("s= "+s);
       return s;
}

