function CALENDAR_HANDLER_class() {

    this.AR_CALENDAR = Array(); // array of datecal object
    this.count_cal_obj = 0 ;


    this.get_next_free_id =  function () {
        return this.count_cal_obj;
    }

    // create a object and return the free id
    this.crate_cal_obj =  function () {
        var CAL_ID = this.get_next_free_id();
        this.AR_CALENDAR[CAL_ID] = new histats_datecal_class();
        this.AR_CALENDAR[CAL_ID].ID_DATECAL = CAL_ID;
        this.count_cal_obj++;
        return CAL_ID;
    }

}
G_CAL_HANDLER = new CALENDAR_HANDLER_class();

function histats_datecal_class() { // vigotti's unserialize  class
    try {
        this.ids = 0 ;
        this.nmod = 1000 ; // mod not set
        this.ID_DATECAL = 0; // unique id 
        this.wday = 0 ;

        this.div_datecal = 'div_DATECAL' ;

        this.tOFFSET = 86400 ;
        this.tNOW = 0 ;
        this.tTIMEZONE_ID = 0 ;
        this.tTIMEZONE_str = 0 ;
        this.range = 'd' ;
        this.DYNAMIC_SIGN = 'd' ;

        this.tabALL = 0 ;

        this.dateAR  = new Array();
        this.dateURL_STRING = '' ;

        this.BOOL_build_html_portions = false;
        this.AR_HTML  = new Array(); // contain html portions
        this.AR_HTMLlinks  = new Array(); // contain html link //['day'] ['month']
        this.HTML_tabSTYLE = 'b'; // b, m , d
        this.HTML_TAB_SELECTED = 'd';
        this.AR_CURRENTS_ID = new Array(); // contain current month and year

        this.STR_EVAL_CALLBACK = '' ; // function callback
        this.callback_type = 'string'; // string, funct, data , obj ( stora il path relativo della funct )
        this.FUNCT_callback = null ; // pointer or copy of callback function
        this.AR_RETURN_DATA = Array(); // array of return data for callback functions 
        if(this.callback_type=='funct'){
            if(G_SWF_HANDLER.AR_SWFOBJ[idswf].STR_EVAL_CALLBACK.length > 0 ){
                eval(G_SWF_HANDLER.AR_SWFOBJ[idswf].STR_EVAL_CALLBACK + idswf + ',\'' +  value + '\');'); // functNAME(idswf,'value');
            }
        }

    } catch(e){
        alert("err loading javascript ,    try refreshing browser cache \n "  + e.message + "\n ");
    }
	
} // end
var G_DATECAL = new histats_datecal_class();

// callback of all swf functions
function CALENDARcallback(idcal,value) {
    //if(!G_SWF_HANDLER) return ;
    //if(!G_SWF_HANDLER.AR_SWFOBJ[idswf]) return ;

    //setTimeout('alert (\''+idswf + ' , ' + value+ " callback = " + (G_SWF_HANDLER.AR_SWFOBJ[idswf].STR_EVAL_CALLBACK + idswf + ',' +  value + ');') + '\' );',200);

    //alert(G_SWF_HANDLER.AR_SWFOBJ[idswf].STR_EVAL_CALLBACK);
    if(G_CAL_HANDLER.AR_CALENDAR[idcal].callback_type =='string'){
        if(G_CAL_HANDLER.AR_CALENDAR[idcal].STR_EVAL_CALLBACK.length > 0 ){
            eval(G_CAL_HANDLER.AR_CALENDAR[idcal].STR_EVAL_CALLBACK + idcal + ',\'' +  value + '\');'); // functNAME(idswf,'value');
        }
    }
    if(G_CAL_HANDLER.AR_CALENDAR[idcal].callback_type =='funct'){
        return G_CAL_HANDLER.AR_CALENDAR[idcal].FUNCT_callback(idcal,value);
    }
    if(G_CAL_HANDLER.AR_CALENDAR[idcal].callback_type =='data'){
        if(!G_CAL_HANDLER.AR_CALENDAR[idcal].AR_RETURN_DATA[value]) return "";
        return G_CAL_HANDLER.AR_CALENDAR[idcal].AR_RETURN_DATA[value];
    }
}




histats_datecal_class.prototype.build_URL  = function(){
    // 25-11-2009-0d
    this.dateURL_STRING = this.dateAR['day']+'-'+this.dateAR['month']+'-'+this.dateAR['year']+'-0'+this.range ;
}
histats_datecal_class.prototype.move_days  = function(ndays){
    this.tNOW+=(86400*ndays);
    this.build_dateAR();
}






histats_datecal_class.prototype.hover_arrow  = function(id){
    var AR_STR_ARROW = new Array(GL.R('1wback'),GL.R('1dback'),GL.R('1dfw'),GL.R('1wfw'),GL.R('oggi'));
    var divname = 'calendar_div_arrows_'+this.ID_DATECAL;
    if(!document.getElementById(divname)) return ;
    $('#'+divname).html(AR_STR_ARROW[id]);
// document.getElementById(divname).innerHTML = AR_STR_ARROW[id];
}
histats_datecal_class.prototype.hover_arrowm  = function(id){
    var AR_STR_ARROW = new Array(GL.R('1yback'),GL.R('1mback'),GL.R('1mfw'),GL.R('1yfw'),GL.R('mese_corrente'));
    var divname = 'calendar_div_arrows_month_'+this.ID_DATECAL;
    if(!document.getElementById(divname)) return ;
    //document.getElementById(divname).innerHTML = AR_STR_ARROW[id];
    $('#'+divname).html(AR_STR_ARROW[id]);
}
histats_datecal_class.prototype.dayclick  = function(dayn){
    alert(f_return_DAYN_by_UnxT(dayn));
}

histats_datecal_class.prototype.monthclick  = function(monthstr){
    alert(monthstr);
}
histats_datecal_class.prototype.build_dateAR  = function(){
   
    this.dateAR = f_return_DATE_AR(this.tNOW);
//alert('build date of : ' + this.tNOW  + ', ' + this.dateAR['day']) ;
}
histats_datecal_class.prototype.clicktab  = function(clicked_id){
    if(clicked_id == 1 ) this.HTML_TAB_SELECTED = 'd';
    if(clicked_id == 2 ) this.HTML_TAB_SELECTED = 'm';
    if(clicked_id == 3 ) this.HTML_TAB_SELECTED = 'a';
    this.print_toDIV();
}

histats_datecal_class.prototype.print_toDIV  = function(){
    //alert('stampo su div:  ' + this.div_datecal ) ;
    if(!document.getElementById(this.div_datecal)) return ;
    //if(this.HTML_tabSTYLE=='b' || this.HTML_tabSTYLE=='m')
    var HTML_DIV = '' ;
    if(this.HTML_tabSTYLE=='b' ){
        var AR_BASE_BKG = new Array();
        var AR_BASE_BKG_col = new Array();
        AR_BASE_BKG['d'] = 'background="'+GLOBALS['FOLDER_img']+'calendaTAB_off.png" ';
        AR_BASE_BKG['m'] = 'background="'+GLOBALS['FOLDER_img']+'calendaTAB_off.png" ';
        AR_BASE_BKG['a'] = 'background="'+GLOBALS['FOLDER_img']+'calendaTAB_off.png" ';
        AR_BASE_BKG_col['d'] = 'text11_Lgrey';
        AR_BASE_BKG_col['m'] = 'text11_Lgrey';
        AR_BASE_BKG_col['a'] = 'text11_Lgrey';
        AR_BASE_BKG[this.HTML_TAB_SELECTED] = ' background="'+GLOBALS['FOLDER_img']+'calendaTAB_on.png" ';
        AR_BASE_BKG_col[this.HTML_TAB_SELECTED] = 'text11_Dblue';
        
        var PRTtabAll = '<td height="18" width="60"></td>';
        if(this.tabALL==1){
            PRTtabAll = '<td height="18" width="60" '+AR_BASE_BKG['a']+'  align="center" onclick="G_CAL_HANDLER.AR_CALENDAR['+this.ID_DATECAL+'].clicktab(3)" class="hl"><font  class="'+AR_BASE_BKG_col['a']+'">'+GL.R('ONEever')+'</a></td>';
        }

        HTML_DIV+='<div id="calendar_div_tabbing_'+this.ID_DATECAL+'"  name="calendar_div_tabbing_'+this.ID_DATECAL+'">\
                    <table border="0" width="220" cellspacing="0" cellpadding="0"><tr>\
                        <td width="10"></td>\
                        <td height="18" width="70" '+AR_BASE_BKG['d']+' align="center" onclick="G_CAL_HANDLER.AR_CALENDAR['+this.ID_DATECAL+'].clicktab(1)" class="hl"><font class="'+AR_BASE_BKG_col['d']+'">daily</font></td>\
                        <td height="18" width="70"  '+AR_BASE_BKG['m']+'  align="center" onclick="G_CAL_HANDLER.AR_CALENDAR['+this.ID_DATECAL+'].clicktab(2)" class="hl"><font  class="'+AR_BASE_BKG_col['m']+'">monthly</a></td>\
                        '+PRTtabAll+'\
                        <td width="10" align="center"><img border="0" src="'+GLOBALS['FOLDER_img']+'026.png" width="10" height="10"></td>\
                    </tr></table>\
                </div>';
    }
    if(this.HTML_TAB_SELECTED == 'd')   HTML_DIV+= this.AR_HTML['day'];
    if(this.HTML_TAB_SELECTED == 'm'){
        HTML_DIV+= this.AR_HTML['month'];
    }
    if(this.HTML_TAB_SELECTED == 'a')   HTML_DIV+= '<div class="Ccalenda"><div align="center">\
                                                        <table border="0" width="210" cellspacing="0" cellpadding="0"><tr><td align="center" height="60"><font class="text14_blue">'+GL.R('Cumulative data')+'</font></td></tr></table>\
                                                    </div></div';
    document.getElementById(this.div_datecal).innerHTML = HTML_DIV;
    
    if(this.HTML_TAB_SELECTED == 'a'){
        f_calendaCUMULATIVE();
    }
}
histats_datecal_class.prototype.print_dayHTML  = function(){
    var nomediv = 'DIV_html_daycalendar_'+ID_DATECAL;
    if(!document.getElementById(nomediv)) return ;
    document.getElementById(nomediv).innerHTML = this.AR_HTML['day'];;
}
histats_datecal_class.prototype.print_monthHTML  = function(){
    var nomediv = 'DIV_html_monthcalendar_'+ID_DATECAL;
    if(!document.getElementById(nomediv)) return ;
    document.getElementById(nomediv).innerHTML = this.AR_HTML['month'];;
}


/*
 *  build current datecal object over a sid account
 */
histats_datecal_class.prototype.getWday  = function(){
    this.build_dateAR();
    return  this.dateAR['wday'];
}

/*
 *  build current datecal object over a sid account
 */
histats_datecal_class.prototype.build_OVER_IDS  = function(ids){
    this.OBJ_CURRENTdatecal =  new histats_datecal_class();
    if(!OBJ_SITEs) return ;
    if(!OBJ_SITEs[ids]) return ;
    //alert(ids);
    this.BOOL_build_html_portions = false;
    ptr  =this;
    ptrSITE = OBJ_SITEs[ids];
    ptr.tNOW = ptrSITE.site_time;
    
    ptr.build_dateAR();
    //  alert('this monthcode : ' + this.dateAR['monthcode']);
    ptr.tOFFSET = ptrSITE.time_offset;
 
    ptr.tTIMEZONE_ID = ptrSITE.timezone_id ;
    ptr.tTIMEZONE_str = ptrSITE.timezone_str ;
    ptr.ids = ptrSITE.ids ;
    ptr.DYNAMIC_SIGN = 'd';

    ptr.wday = ptr.getWday();
//dateAR['monthcode'] = (dateAR['year']*13) + dateAR['month'];
    

}


histats_datecal_class.prototype.get_hour  = function(){
    if(!this.dateAR['hour']) return '';
    var strmin = (''+this.dateAR['min']);
    if(strmin.length <=1) strmin=('0'+strmin);
    var strsec = (''+this.dateAR['sec']);
    if(strsec.length <=1) strmin=('0'+strsec);
    var str_return = this.dateAR['hour'] + ':' + strmin + ':' +strsec ;
    return str_return;
}

histats_datecal_class.prototype.get_dateday  = function(){
    if(!this.dateAR['day']) return '';
    var str_return = this.dateAR['day'] + ' ' + GL.R(GLOBAL_AR_MONTH_long[parseInt(this.dateAR['month'])]);
    return str_return;
}
histats_datecal_class.prototype.get_dateday_y  = function(){
    if(!this.dateAR['day']) return '';
    var str_return = this.dateAR['day'] + ' ' + GL.R(GLOBAL_AR_MONTH_long[this.dateAR['month']]) + ' ' + this.dateAR['year'] ;
    return str_return;
}
histats_datecal_class.prototype.get_month_y  = function(){
    if(!this.dateAR['month']) return '';
    var str_return =  GL.R(GLOBAL_AR_MONTH_long[this.dateAR['month']])  + ' ' + this.dateAR['year'] ;
    return str_return;
}
histats_datecal_class.prototype.build_html_portions  = function(){
 
    this.AR_HTML['day'] = f_BUILD_DATECALENDAR_daily(this);
    this.AR_HTML['month'] = f_BUILD_DATECALENDAR_monthly(this);

}


histats_datecal_class.prototype.get_PREVmonth_y  = function(){
    var UNIXtprevM = 0;
    var tmp_ArINFOdata = f_return_DATE_AR(this.tNOW); 
    UNIXtprevM = this.tNOW-((parseInt(tmp_ArINFOdata['day'])*86400)+86400);
    tmp_ArINFOdata = new Array();
    tmp_ArINFOdata = f_return_DATE_AR(UNIXtprevM); 
    
    if(!tmp_ArINFOdata['month']) return '';
    return(GL.R(GLOBAL_AR_MONTH_long[tmp_ArINFOdata['month']])  + ' ' + tmp_ArINFOdata['year']);
}

histats_datecal_class.prototype.get_PREVdateday  = function(){
    var tmp_ArINFOdata = f_return_DATE_AR((this.tNOW-86400));
    if(!tmp_ArINFOdata['day']) return '';
    return(tmp_ArINFOdata['day'] + ' ' + GL.R(GLOBAL_AR_MONTH_long[tmp_ArINFOdata['month']]));
}

function f_BUILD_DATECALENDAR_daily(obj_cal,nmod){
    var a = 0 ;
    var i = 0 ;
    //alert(2 + ' -> ' + obj_cal.ids);
    if(!OBJ_SITEs) return ;
    if(!OBJ_SITEs[obj_cal.ids]) return ;
    ptrSITE = OBJ_SITEs[obj_cal.ids];
    ptrDATEsite = G_CAL_HANDLER.AR_CALENDAR[ptrSITE.ID_CALDATE_SITE];
    var DATE_curday = ptrDATEsite.dateAR['day'];
    var DATE_curUnixT = ptrDATEsite.dateAR['unixtime']

    var TMP_DAY_UNIXTIME = obj_cal.dateAR['unixtime'] ;

    var vista_id = obj_cal['v'];
    var sel_giorno = 0  ;
    if(obj_cal['range'] == 'd')  sel_giorno =obj_cal.dateAR['day'];
    if(!obj_cal.AR_HTMLlinks['day']) obj_cal.AR_HTMLlinks['day'] = 'onclick="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].dayclick({--day--});"';

    //if(!(GLOBAL_VISTAHANDLER.AR_VISTE[vista_id])) return;
    //if(!(GLOBAL_VISTAHANDLER.AR_VISTE[vista_id]['day'])) return;
    var tmp_CURMONTH =  parseInt(ptrDATEsite.dateAR['month']);
    var Tndayprevmon  = f_days_month((tmp_CURMONTH-1));
    //var tmpday = parseInt(obj_cal.dateAR['day']);
    var tmpday = parseInt(DATE_curday);
  
    obj_cal.AR_CURRENTS_ID['day'] = DATE_curday;

    //alert(DATE_curday + ' , ' + obj_cal.dateAR['day']);
    var tmp_DELTADAY = DATE_curday;
    if(obj_cal.dateAR['day'] > DATE_curday ){ // prev month
        tmp_DELTADAY+=Tndayprevmon;
        tmp_DELTADAY-=obj_cal.dateAR['day'];
    }else{
        tmp_DELTADAY-=obj_cal.dateAR['day'];
    }
    //alert('deltaday = ' + tmp_DELTADAY );
    var AR_ARROW = new Array('','','','');
    var tmp_curlink_unixtime = 0;
    if(tmp_DELTADAY < 23){
        var tmpday_link = obj_cal.dateAR['day']-7;
        if(tmpday_link < 1) tmpday_link+=Tndayprevmon;
        tmp_curlink_unixtime = TMP_DAY_UNIXTIME+(86400*-7);
        var tmp_strlink = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+tmp_curlink_unixtime);
        AR_ARROW[0] = '<img border="0" '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_ll.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(0);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(4);" class="hl">';
    }
    if(tmp_DELTADAY < 29){
        var tmpday_link = obj_cal.dateAR['day']-1;
        if(tmpday_link < 1) tmpday_link+=Tndayprevmon;
        tmp_curlink_unixtime = TMP_DAY_UNIXTIME+(86400*-1);
        var tmp_strlink = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+tmp_curlink_unixtime);
        AR_ARROW[1] = '<img border="0"  '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_l.png"  onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(1);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(4);" class="hl">';
    }
    if(tmp_DELTADAY > 0){
        var tmpday_link = obj_cal.dateAR['day']+1;
        if(tmpday_link < 1) tmpday_link+=Tndayprevmon;
        tmp_curlink_unixtime = TMP_DAY_UNIXTIME+(86400*1);
        var tmp_strlink = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+tmp_curlink_unixtime);
        AR_ARROW[2] = '<img border="0"  '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_r.png"  onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(2);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(4);" class="hl">';
    }
    if(tmp_DELTADAY >6){
        var tmpday_link = obj_cal.dateAR['day']+7;
        if(tmpday_link < 1) tmpday_link+=Tndayprevmon;
        tmp_curlink_unixtime = TMP_DAY_UNIXTIME+(86400*7);
        var tmp_strlink = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+tmp_curlink_unixtime);
        AR_ARROW[3] = '<img border="0"  '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_rr.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(3);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrow(4);" class="hl">';
    }
    var DATE_1weekago = tmpday-7;
    if(DATE_1weekago < 1) DATE_1weekago+=Tndayprevmon;
    var DATE_1dayago = tmpday-1;
    if(DATE_1dayago < 1) DATE_1dayago+=Tndayprevmon;

    var ncurWEEKday = parseInt(ptrDATEsite.dateAR['wday']);

    //var tmpstrMON = GLOBAL_VISTAHANDLER.AR_VISTE[vista_id]['Tmon'];
    var tmpstrMON = GL.R(GLOBAL_AR_MONTH[tmp_CURMONTH]);

    var tmp_cal_month_1 = GL.R(GLOBAL_AR_MONTH[tmp_CURMONTH]);
    var tmp_nprev_MONTH = tmp_CURMONTH-1;
    if(tmp_nprev_MONTH < 1 ) tmp_nprev_MONTH+=12;
    var tmp_cal_month_2 =  GL.R(GLOBAL_AR_MONTH[tmp_nprev_MONTH]);
    //alert(tmpstrMON);
    // S 	M 	T 	W 	F 	F 	S
    // 7    1       2       3       4       5 	6
    //

    var AR_ROWScalendar = new Array();
    TMP_DAY_UNIXTIME = ptrDATEsite.dateAR['unixtime'] ;

    //   alert('curday = ' + ncurWEEKday );
    var tmp_cur_MONTH = tmp_CURMONTH ;
    var tmp_dayend = (tmpday)+2;
    if(tmp_dayend > Tndayprevmon) tmp_dayend =Tndayprevmon; //  parseInt(Tndayprevmon) - (tmp_dayend-Tndayprevmon )
    var tmp_bgcolor_standard = 'cal_td_on2';
    var tmp_bgcolor_old_month = 'cal_td_on1';
    var tmp_bgcolor_selected = 'cal_td_onT';
    var tmp_bgcolor = tmp_bgcolor_standard;
    for (var i = 0 ; i <= 5; i++){
        // alert(i +' curday : ' + ncurWEEKday );
        AR_ROWScalendar[i] = Array();
        for(var a = ncurWEEKday ; a >= 1 ; a--){
            AR_ROWScalendar[i][a] = Array();
            AR_ROWScalendar[i][a]['wd'] = a ;
            AR_ROWScalendar[i][a]['d'] = tmpday  ;
            AR_ROWScalendar[i][a]['u'] = TMP_DAY_UNIXTIME  ;
            AR_ROWScalendar[i][a]['bg'] = tmp_bgcolor  ;
            if(a > 5){
                AR_ROWScalendar[i][a]['bg'] = 'cal_td_sd'; // SABATO E DOMENICA (CLASS)
            }
            if(tmpday == sel_giorno){
                AR_ROWScalendar[i][a]['bg'] =tmp_bgcolor_selected;
            }

            AR_ROWScalendar[i][a]['strmon'] = tmpstrMON ;
            // AR_ROWScalendar[i][a] = tmpstrMON + ' '+ tmpday +' ' + a + ' / ' ; // + AR_ROWS[i];
            TMP_DAY_UNIXTIME-=86400;
            tmpday--;
            if(tmpday==0){
                tmp_cur_MONTH = tmp_nprev_MONTH;
                tmpday=  Tndayprevmon;
                tmpstrMON = 'may';
                tmp_bgcolor =tmp_bgcolor_old_month; // inizia il mese precedente

            }
            if((tmpday == tmp_dayend) && (tmp_cur_MONTH==tmp_nprev_MONTH)){
                //alert(' esco ciclo : '+ tmpday + ' , ' + tmp_dayend);
                i = 10;
                a=-1;
            }

        }
        ncurWEEKday = 7;
    }

    //var print_table_calendar = '<table border="1" cellspacing="3" id="table39" style="border-collapse: collapse" bordercolor="#DEE7EB" cellpadding="2" width="180">';
    var print_table_calendar ='';
    var ll = AR_ROWScalendar.length -1;
    for( i = ll ; i>=0;i--){
        if(AR_ROWScalendar[i] ){
            print_table_calendar+='<tr>';
            for( a = 1 ; a<8;a++){ //(AR_ROWScalendar[i].length )

                if(AR_ROWScalendar[i][a]){
                    //document.writeln(AR_ROWScalendar[i][a]['wd']);

                    var tmp_strlink = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+AR_ROWScalendar[i][a]['u']);
                    //  print_table_calendar+=  '<td class="'+AR_ROWScalendar[i][a]['bg']+'" align="center" width="20" '+tmp_strlink+'  style="cursor:pointer;cursor:hand;"><font class="text11_Dark">'+AR_ROWScalendar[i][a]['d']+'</font></td>';
                    print_table_calendar+=  '<td class="'+AR_ROWScalendar[i][a]['bg']+'"  '+tmp_strlink+'  onmouseover="this.className=\'cal_td_over\';" onmouseout="this.className=\''+AR_ROWScalendar[i][a]['bg']+'\';">'+AR_ROWScalendar[i][a]['d']+'</td>';

                }else{
                    print_table_calendar+=  ' <td class="cal_td_off"></td> '; 
                }
            }
            print_table_calendar+='</tr>';
        }
    //document.writeln( '<br>');
    }

    //print_table_calendar+= '</table>';
    //alert(print_table_calendar);
    var tmp_strlink_current = obj_cal.AR_HTMLlinks['day'].split("{--day--}").join(""+DATE_curUnixT);
    var OUT_STR = '';
    OUT_STR = '<div class="Ccalenda"><div align="center">\
                        <table border="0" width="210" cellspacing="0" cellpadding="0"><tr>\
                                <td width="30" align="left" valign="top">\
                                    <table border="0" width="100%" cellspacing="0" cellpadding="0">\
                                        <tr><td height="20"></td></tr>\
                                        <tr><td height="22"><font class="text11_orange">'+tmp_cal_month_2+'</font></td></tr>\
                                    </table>\
                                </td>\
                                <td align="center" width="150">\
                                    <table border="0" width="140" cellpadding="0" height="20"><tr>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('monday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('tuesday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('wednesday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('thursday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('friday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('saturday_1Letter')+'</b></font></td>\
                                        <td width="20" align="center"><font class="text11_grey"><b>'+GL.R('sunday_1Letter')+'</b></font></td>\
                                    </tr></table>\
                                    <table border="0" width="140" cellpadding="0">'+print_table_calendar+'</table>\
                                </td>\
                                <td width="30" align="right" valign="bottom">\
                                    <table border="0" width="100%" cellspacing="0" cellpadding="0">\
                                        <tr><td height="22"><font class="text11_Dblue">'+tmp_cal_month_1+'</font></td></tr>\
                                    </table>\
                                </td>\
                            </tr></table>\
                            <table border="0" width="100%" cellspacing="0" cellpadding="0" height="5"><tr><td></td></tr></table>\
                            <table border="0" width="210" cellspacing="0" cellpadding="0"  height="18"><tr>\
                                <td align="left" width="17">'+AR_ARROW[0]+'</td>\
                                <td align="left" width="17">'+AR_ARROW[1]+'</td>\
                                <td width="142" align="center"><div class="CcalendaBT" id="calendar_div_arrows_'+obj_cal.ID_DATECAL+'"  name="calendar_div_arrows_'+obj_cal.ID_DATECAL+'"  '+tmp_strlink_current+' >'+GL.R('oggi')+'</div></td>\
                                <td align="left" width="17">'+AR_ARROW[2]+'</td>\
                                <td align="left" width="17">'+AR_ARROW[3]+'</td>\
                            </tr></table>\
                        </td></tr>\
                    </div></div>';

    return OUT_STR;
//new_textselect = f_insert_text_in_text(document.getElementById('div_dhtmlMENU_date_'+this.nmod).innerHTML,'<!--START SELECT FIELD -->','<!--END SELECT FIELD -->',OUT_STR);
//document.getElementById('div_dhtmlMENU_date_'+this.nmod).innerHTML = new_textselect;
}



function CALENDAR_monthbuilder_class() {

    this.AR_CALENDAR = Array(); // array of datecal object
    this.count_cal_obj = 0 ;


}
function f_BUILD_DATECALENDAR_monthly(obj_cal){
    if(!OBJ_SITEs) return ;
    if(!OBJ_SITEs[obj_cal.ids]) return ;

    ptrSITE = OBJ_SITEs[obj_cal.ids];
    ptrDATEsite = G_CAL_HANDLER.AR_CALENDAR[ptrSITE.ID_CALDATE_SITE];
    var nMonthBACK = parseInt(ptrSITE.d_subscr/30 );
    if(!obj_cal.AR_HTMLlinks['month']) obj_cal.AR_HTMLlinks['month']  = 'onclick="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].monthclick({--monthyear--});"';
    /*
     * CREATE MONTH SELECT LIST
     */
    // <select size="1" name="form_select_dateSm_12345678900" id="form_select_dateSm_12345678900" style="font-size: 11px; font-family: Arial; color: rgb(80, 80, 80);"><option selected="selected" value="0">select</option><option value="1-2009">jan</option><option value="2-2009">feb</option><option value="3-2009">mar</option><option value="4-2009">apr</option><option value="5-2009">may 2009</option></select>

    var CURRENT_MONTHn  =ptrDATEsite.dateAR['month'] ;
    //alert(CURRENT_MONTHn);
    var tmp_current_YEAR = ptrDATEsite.dateAR['year'] ;
    var tmp_CURMY = (tmp_current_YEAR*13)+CURRENT_MONTHn;
    obj_cal.AR_CURRENTS_ID['MY'] = tmp_CURMY;
    var tmp_startMY = (tmp_CURMY-nMonthBACK );
    
    var YEAR_BACK = parseInt(nMonthBACK/13);
    var YEAR_START = tmp_current_YEAR-YEAR_BACK;
    var MONTH_START = CURRENT_MONTHn-(nMonthBACK%13);
    //   alert(MONTH_START + ' , ' + CURRENT_MONTHn + ' , ' + (nMonthBACK%13));
    //alert((tmp_current_YEAR-YEAR_START));
    if((tmp_current_YEAR-YEAR_START) >= 2){
        YEAR_START = tmp_current_YEAR-2;
        MONTH_START = 1 ;
    }
    if(MONTH_START < 1){
        YEAR_START--;
        MONTH_START+=12;
    }
    //alert('ystart = ' +YEAR_START + ' , monthstart = ' + MONTH_START);

    var SELECTED_M =  obj_cal.dateAR['month'] ;
    var SELECTED_Y =  obj_cal.dateAR['year'] ;
    var SELECTED_R =  obj_cal['range'] ;
    if(SELECTED_R !='m') {
        SELECTED_M = CURRENT_MONTHn;
        SELECTED_Y = tmp_current_YEAR;
    }
    var tmp_SELMY = (SELECTED_Y*13)+SELECTED_M;
    
    
    var AR_ARROW = new Array('','','','');
    //
    if((tmp_SELMY-tmp_startMY) >= 12){
        var tmpday_link = tmp_SELMY-12;
        var tmp_strlink = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+tmpday_link);
        AR_ARROW[0] = '<img border="0" '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_ll.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(0);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(4);"  class="hl">';
    }
    if((tmp_SELMY-tmp_startMY) >= 1){
        var tmpday_link = tmp_SELMY-1;
        //alert(tmp_SELMY);
        var tmp_strlink = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+tmpday_link);
        AR_ARROW[1] = '<img border="0" '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_l.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(1);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(4);"  class="hl">';
    }
    if((tmp_CURMY-tmp_SELMY) >= 1){
        var tmpday_link = tmp_CURMY+1;
        var tmp_strlink = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+tmpday_link);
        AR_ARROW[2] = '<img border="0" '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_r.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(2);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(4);"  class="hl">';
    }

    if((tmp_CURMY-tmp_SELMY) >= 12){
        var tmpday_link = tmp_CURMY+12;
        var tmp_strlink = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+tmpday_link);
        AR_ARROW[3] = '<img border="0" '+tmp_strlink+' src="'+GLOBALS['FOLDER_img']+'CALarr_rr.png" onmouseover="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(3);" onmouseout="G_CAL_HANDLER.AR_CALENDAR['+obj_cal.ID_DATECAL+'].hover_arrowm(4);"  class="hl">';
    }
    
    var tmp_count_error = 0 ;

    var AR_YEARS = Array();
    var TMP_HTMLCALENDAR = '<div class="Ccalenda"><div align="center">';
    var tmp_html_monthclass = 'calM_td_on';
    var tmp_strlink = '';
    do{
        tmp_html_monthclass = 'calM_td_on';
        if(MONTH_START > 12){
            MONTH_START = 1 ;
            AR_YEARS[YEAR_START]+= '</tr></table></td></tr></table>';
            TMP_HTMLCALENDAR+=AR_YEARS[YEAR_START];
            YEAR_START++;
        }
        if(SELECTED_R =='m' && SELECTED_M == MONTH_START && SELECTED_Y ==YEAR_START)  tmp_html_monthclass = 'calM_td_onT';
        if(!AR_YEARS[YEAR_START]){ // initialize year 
            AR_YEARS[YEAR_START] = ' <table border="0" width="200" cellspacing="0" cellpadding="0">\
                <tr>\
		<td width="30"><font class="text11_grey">'+ YEAR_START + '</font></td>\
		<td width="168">\
		<table border="0" width="100%" cellpadding="0">';
            if(MONTH_START > 1 ){
                AR_YEARS[YEAR_START]+= '<tr>';
                for(var i = 1 ; i < MONTH_START ; i++){
                    AR_YEARS[YEAR_START]+= '<td class="calM_td_on"></td>';
                    if(i==6){
                        AR_YEARS[YEAR_START]+= '</tr><tr>';
                    }
                }

            }
        } // end initialize year 
        tmp_strlink = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+((YEAR_START*13)+MONTH_START) );
        AR_YEARS[YEAR_START]+= '<td class="'+tmp_html_monthclass+'" onmouseover="this.className=\'calM_td_over\';" onmouseout="this.className=\''+tmp_html_monthclass+'\';" '+tmp_strlink+'>'+GL.R(GLOBAL_AR_MONTH[MONTH_START])+'</td>';
        if(MONTH_START==6){
            AR_YEARS[YEAR_START]+= '</tr><tr>';
        }
        
        tmp_count_error++;
        if( (YEAR_START==tmp_current_YEAR && CURRENT_MONTHn==MONTH_START ) ) tmp_count_error = 200;

        MONTH_START++;
    }while( tmp_count_error < 200);
    AR_YEARS[YEAR_START]+= '</tr></table></td></tr></table>';
    TMP_HTMLCALENDAR+=AR_YEARS[YEAR_START];

    var tmp_strlink_current = obj_cal.AR_HTMLlinks['month'].split("{--monthyear--}").join(""+obj_cal.AR_CURRENTS_ID['MY'] );

    TMP_HTMLCALENDAR+='<table border="0" width="100%" cellspacing="0" cellpadding="0" height="5"><tr><td></td></tr></table>\
                        <table border="0" width="210" cellspacing="0" cellpadding="0"  height="18"><tr>\
                            <td align="left" width="17">'+AR_ARROW[0]+'</td>\
                            <td align="left" width="17">'+AR_ARROW[1]+'</td>\
                            <td width="142" align="center"><div class="CcalendaBT" id="calendar_div_arrows_month_'+obj_cal.ID_DATECAL+'"  name="calendar_div_arrows_month_'+obj_cal.ID_DATECAL+'" '+tmp_strlink_current+'>'+GL.R('mese_corrente')+'</div></td>\
                            <td align="left" width="17">'+AR_ARROW[2]+'</td>\
                            <td align="left" width="17">'+AR_ARROW[3]+'</td>\
                        </tr></table>\
                    </div></div>';
    //alert(TMP_HTMLCALENDAR);
    return TMP_HTMLCALENDAR;

   
//new_textselect = f_insert_text_in_text(document.getElementById('div_dhtmlMENU_date_'+this.nmod).innerHTML,'<!--START SELECTmonth FIELD -->','<!--END SELECTmonth FIELD -->',MONTH_select_elements);
//document.getElementById('div_dhtmlMENU_date_'+this.nmod).innerHTML = new_textselect;

}
//var OBJ_DATECALs = new Array();  // array of datecal obj
function f_return_DAYN_by_UnxT(unixtime){
    var millunixtime = unixtime*1000;
    var d = new Date();
    d.setTime(millunixtime);
    return d.getUTCDate();
}
function f_return_unixT_by_idmonth(idmonth){
    var month = idmonth%13;
    var year = parseInt(idmonth/13);
    if(month == 0 ){
        month = 12 ;
        year--;
    }
    //alert(idmonth+ ' , month : ' + month + ' , year : ' + year)
    return (f_return_unixT_by_date(1,month,year));
}
function f_return_unixT_by_date(day,month,year){

    var d = new Date();
    d.setUTCDate(parseInt(day));
    d.setUTCMonth((parseInt(month)-1));
    d.setUTCFullYear(parseInt(year));
    return (parseInt((d.getTime()/1000)));

}
// return monthcode-- (but apply the id skip when needed)
function f_DATE_BACK_1_monthcode(monthcode){
    monthcode--;
    if(monthcode%13==0) monthcode--;
    return monthcode;
}
function f_return_DATE_AR(unixtime){
    var dateAR = new Array();
    var millunixtime = unixtime*1000;
    var d = new Date();
    d.setTime(millunixtime);
    dateAR['unixtime'] = unixtime;
    dateAR['day'] = d.getUTCDate();
    dateAR['month'] = d.getUTCMonth()+1;
    dateAR['ndayMonth'] = GLOBAL_AR_MONTHd[(d.getUTCMonth()+1)];
    var npremonth = (d.getUTCMonth()+1)-1;
    if(npremonth < 1) npremonth+=12;
    dateAR['ndayprevMonth'] = GLOBAL_AR_MONTHd[npremonth];
    dateAR['wday'] =   d.getUTCDay();
    dateAR['year'] = d.getUTCFullYear();
    dateAR['hour'] = d.getUTCHours();
    dateAR['hourampm'] = 'am';
    dateAR['hour12'] = dateAR['hour'];
    if(dateAR['hour'] >=12){
        dateAR['hourampm'] = 'pm';
        if(dateAR['hour'] >12) dateAR['hour12']-=12;
    }
    
    dateAR['min'] = d.getUTCMinutes();
    dateAR['sec'] = d.getUTCSeconds();
    dateAR['monthcode'] = (dateAR['year']*13) + dateAR['month'];

    var wdayFIRST = new Date();
    wdayFIRST.setUTCFullYear(dateAR['year'],(dateAR['month']-1),1);
    dateAR['wday1st'] = wdayFIRST.getUTCDay();
  
    //alert (dateAR['year']  + ' , ' + dateAR['month']  + ' , ' + dateAR['day']  + ' -  ' + dateAR['hour']  + ':' + dateAR['min']  + ':' + dateAR['sec']  + ':' + millunixtime  );
    return dateAR;
}

if(!JSCACHE) JSCACHE = [] ;
JSCACHE.push(['stats_datecal.class.js',1]);
