
// francesco previsioni beta 
function histats_site_previsioni_class() {
    try {

        this.giorni_da_iscr = 0 ;
       
        this.secondi_da_inizioora = 0 ;
        this.cur_min = 0 ;
        this.cur_h = 0 ;
        this.cur_sec = 0 ;
        this.secondi_da_iniziogiorno = 0 ;
        this.bool_troppopresto = 1 ;
        this.bool_high_range = 0 ;
        this.nmod = 0;
        this.ids = 0;

        this.AR_percentuali_giornaliere_interne = new Array();
        this.AR_percentuali_giornaliere_media = new Array(); // dato creato
        this.AR_maxdelta_h = new Array(); // contiene per ogni giorno l'ora con il max delta ( da escludere )
        this.AR_percentuale_fino_ora = new Array(); // per giorno , percentuale eseguita
        this.AR_percentuale_fino_ora_oggi = 0; // percentuale di oggi eseguita
        this.AR_percentuale_fino_ora_ora = 0; // percentuale di oggi eseguita

        this.forec_newvis_ratio = new Array();
        this.forec_ppv_ratio = new Array();
        
        this.AR_hits = new Array();
        this.AR_nevis = new Array();
        this.AR_vis = new Array();
        this.AR_ppv = new Array();
        this.AR_nvisPERC = new Array();
        this.AR_onlineAVG = new Array();
        this.AR_freq = new Array();

        this.TOTAL_HITS = 0 ;
        this.TOTAL_VIS = 0 ;
        this.TOTAL_nVIS = 0 ;

        this.AR_Compared= new Array();

    } catch(e){
        alert("err loading javascript ,    try refreshing browser cache \n "  + e.message + "\n ");
    }
	
} // end
//
// build online average values based on vis
var OBJ_prev = new histats_site_previsioni_class();


/*
* AR_FORE_DAYBACK
(
    [0] => 14
    [1] => 7
)
AR_FORE_DAYBACK_nday
(
    [0] => 25
    [1] => 1
)
AR_maxdelta_h
(
    [1] => 14
    [25] => 12
)


*/

// normalizza i delta massimi usando una media tra i due laterali
histats_site_previsioni_class.prototype.reset_forecast  = function() {
    try {
        this.bool_troppopresto = 1 ;


        this.AR_percentuali_giornaliere_interne = new Array();
        this.AR_percentuali_giornaliere_media = new Array(); // dato creato
        this.AR_maxdelta_h = new Array(); // contiene per ogni giorno l'ora con il max delta ( da escludere )
        this.AR_percentuale_fino_ora = new Array(); // per giorno , percentuale eseguita
        this.AR_percentuale_fino_ora_oggi = 0; // percentuale di oggi eseguita
        this.AR_percentuale_fino_ora_ora = 0; // percentuale di oggi eseguita

        this.forec_newvis_ratio = new Array();
        this.forec_ppv_ratio = new Array();

        this.AR_hits = new Array();
        this.AR_nevis = new Array();
        this.AR_vis = new Array();
        this.AR_ppv = new Array();
        this.AR_nvisPERC = new Array();
        this.AR_onlineAVG = new Array();
        this.AR_freq = new Array();

        this.TOTAL_HITS = 0 ;
        this.TOTAL_VIS = 0 ;
        this.TOTAL_nVIS = 0 ;

        this.AR_Compared= new Array();
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }
}

histats_statsmodule_class.prototype.f_print_forecast_day_ONmultimonth  = function(G_MULTIMONT) {
    if(!OBJ_prev) return ;
    try {
        if(OBJ_prev.bool_troppopresto==1) return ;
        G_MULTIMONT.ARSWF_variables['var_for_col1'] =  OBJ_prev.TOTAL_nVIS+'#';
        //alert(G_MULTIMONT.ARSWF_variables['var_for_col1']);
        G_MULTIMONT.ARSWF_variables['var_for_col2'] =  OBJ_prev.TOTAL_VIS+'#';
        G_MULTIMONT.ARSWF_variables['var_for_col3'] = OBJ_prev.TOTAL_HITS+'#';
        //alert(G_MULTIMONT.tmp_count_DAY_forecast);
        G_MULTIMONT.tmp_count_DAY_forecast= G_MULTIMONT.tmp_count_DAY - 1;
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }
}

histats_statsmodule_class.prototype.f_print_forecast___PORTION  = function() {
    try {
        if(!OBJ_prev) return ;
        if(OBJ_prev.bool_troppopresto == 1 ) return ;
        this.AR_hits = new Array();
        this.AR_nevis = new Array();
        this.AR_vis = new Array();
        var str_colhits = '';
        var str_colnevis = '';
        var str_colvis = '';
        var str_separator = '' ;

        for(var i = OBJ_prev.cur_h;i<24;i++ ){
            if(OBJ_prev.AR_hits[i]){
                str_colhits+=(str_separator+OBJ_prev.AR_hits[i]);
            }else{
                str_colhits+=(str_separator+'0');
            }
            if(OBJ_prev.AR_nevis[i]){
                str_colnevis+=(str_separator+OBJ_prev.AR_nevis[i]);
            }else{
                str_colnevis+=(str_separator+'0');
            }
            if(OBJ_prev.AR_vis[i]){
                str_colvis+=(str_separator+OBJ_prev.AR_vis[i]);
            }else{
                str_colvis+=(str_separator+'0');
            }
            str_separator = '#';
        }
        //alert(str_colvis);
        this.ARSWF_variables['var_for_col1'] =  str_colnevis;
        this.ARSWF_variables['var_for_col2'] =  str_colvis;
        this.ARSWF_variables['var_for_col3'] =  str_colhits;
        //this.ARSWF_variables['var_for_col2'] = '#16000#17000#18000#';
        this.ARSWF_variables['var_gg_forecast'] =  (''+OBJ_prev.cur_h);
    //this.ARSWF_variables['var_val_col2'] = OBJ_DAY.str_vis ;
    //this.ARSWF_variables['var_val_col3'] = OBJ_DAY.str_hits;
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }

}

// crea le derivazioni dei valori secondari 
histats_site_previsioni_class.prototype.crea_hits_newsiv  = function() {
    try {
        var PTR_MOD = OBJ_STATSsheet.ARmodules[this.nmod];
 
        var OBJ_SITE =  OBJ_SITEs[this.ids];
        var OBJ_dateSID =  G_CAL_HANDLER.AR_CALENDAR[OBJ_SITE.ID_CALDATE_SITE];
        var DAY_TO_DISPLAY =OBJ_dateSID.dateAR['day'];
        var OBJ_DAY = OBJ_SITE.daily_stats[DAY_TO_DISPLAY];
    
        this.TOTAL_HITS = 0 ;
        this.TOTAL_VIS = 0 ;
        this.TOTAL_nVIS = 0 ;
        
        var for_cumulativo_newvis = 0;
        var for_cumulativo_ppv = 0;

        var cur_cumulativo_newvis = 0;
        var cur_cumulativo_ppv = 0;

        var devianza_newvis_oggi = 1;
        var devianza_ppv_oggi = 1;
        var cnt_F_newvis_ratios = 0;
        var cnt_F_ppv_ratios = 0;
        var cnt_C_newvis_ratios = 0;
        var cnt_C_ppv_ratios = 0;

        if(this.cur_h > 0 ){ // devianza based on early hours of today
            for(var i = 0 ; i < this.cur_h ; i++){
                this.TOTAL_HITS+= parseInt(OBJ_DAY.AR_hits[i]);
                this.TOTAL_VIS+= parseInt(OBJ_DAY.AR_vis[i]);
                this.TOTAL_nVIS+= parseInt(OBJ_DAY.AR_nevis[i]);
                if(this.forec_newvis_ratio[i] > 0){
                    for_cumulativo_newvis+=(this.forec_newvis_ratio[i]);
                    cnt_F_newvis_ratios++;
                }
                if(this.forec_ppv_ratio[i] > 0){
                    for_cumulativo_ppv+=(this.forec_ppv_ratio[i]);
                    cnt_F_ppv_ratios++;
                }

                if(OBJ_DAY.AR_newvis_ratio[i] > 0){
                    cur_cumulativo_newvis+=(OBJ_DAY.AR_newvis_ratio[i]);
                    cnt_C_newvis_ratios++;
                }
                if(OBJ_DAY.AR_ppv_ratio[i] > 0){
                    cur_cumulativo_ppv+=(OBJ_DAY.AR_ppv_ratio[i]);
                    cnt_C_ppv_ratios++;
                }
            }

            if(cnt_F_newvis_ratios > 0 )for_cumulativo_newvis = for_cumulativo_newvis/cnt_F_newvis_ratios;
            if(cnt_F_ppv_ratios > 0 )for_cumulativo_ppv = for_cumulativo_ppv/cnt_F_ppv_ratios;
            if(cnt_C_newvis_ratios > 0 )cur_cumulativo_newvis = cur_cumulativo_newvis/cnt_C_newvis_ratios;
            if(cnt_C_ppv_ratios > 0 )cur_cumulativo_ppv = cur_cumulativo_ppv/cnt_C_ppv_ratios;
            
            if(for_cumulativo_newvis > 0 && cur_cumulativo_newvis > 0 ) devianza_newvis_oggi= cur_cumulativo_newvis/for_cumulativo_newvis;
            if(for_cumulativo_ppv > 0 && cur_cumulativo_ppv > 0 ) devianza_ppv_oggi= cur_cumulativo_ppv/for_cumulativo_ppv;
        }

        if(this.TOTAL_HITS < 100 ||  this.TOTAL_VIS < 50 || this.TOTAL_nVIS < 50)    return false;


        // calcola ore mancanti
        for(var i =  this.cur_h ; i < 24; i++){

            this.AR_hits[i] = parseInt(this.AR_vis[i]*(this.forec_ppv_ratio[i]*devianza_ppv_oggi));
            this.AR_nevis[i] = parseInt(this.AR_vis[i]*(this.forec_newvis_ratio[i]*devianza_newvis_oggi));
            if(this.AR_nevis[i] > this.AR_vis[i]) this.AR_nevis[i] = this.AR_vis[i];
            if(this.AR_hits[i] < this.AR_vis[i]) this.AR_hits[i] = this.AR_vis[i];

            this.TOTAL_HITS+= parseInt(this.AR_hits[i]);
            this.TOTAL_VIS+= parseInt(this.AR_vis[i]);
            this.TOTAL_nVIS+= parseInt(this.AR_nevis[i]);
        }

 
        for(k in AR_FORE_DAYBACK){
       
            var tmp_NDAYBACK = AR_FORE_DAYBACK[k];
            var tmp_NDAYBACK_nday = AR_FORE_DAYBACK_nday[k];
            if(OBJ_SITE.daily_stats[tmp_NDAYBACK_nday]){
                OBJ_DAY = OBJ_SITE.daily_stats[tmp_NDAYBACK_nday];
                this.AR_Compared[tmp_NDAYBACK] = new Array();
                this.AR_Compared[tmp_NDAYBACK]['h'] = 0 ;
                this.AR_Compared[tmp_NDAYBACK]['d'] = 0 ;
                if(OBJ_DAY.AR_vis[this.cur_h] > 0 ) this.AR_Compared[tmp_NDAYBACK]['h'] = parseInt((((this.AR_vis[this.cur_h]/OBJ_DAY.AR_vis[this.cur_h])*100)-100)*10)/10;
                if(OBJ_DAY.TOTAL_VIS > 0 ) this.AR_Compared[tmp_NDAYBACK]['d'] = parseInt((((this.TOTAL_VIS/OBJ_DAY.TOTAL_VIS)*100)-100)*10)/10;
                if(this.AR_Compared[tmp_NDAYBACK]['d'] > 1500){ // too high forecast value!
                    this.bool_high_range = this.AR_Compared[tmp_NDAYBACK]['d'];
                    this.reset_forecast();
                
               
                    return true ;
                }
            }

        }
  
        return true ;
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }
}


histats_site_previsioni_class.prototype.set_timings  = function() {
    try {
        //alert('aaa');
 
        if(this.bool_troppopresto==1) return ;
        this.bool_troppopresto = 1 ;
        //return ;
        if(!OBJ_SITEs[this.ids]) return;
        var OBJ_SITE =  OBJ_SITEs[this.ids];
        //alert('entrato!! ' + OBJ_SITE.lht);
        if(OBJ_SITE.lht < 1000) return ;
        var lh_tz = OBJ_SITE.lht-86400+ OBJ_SITE.time_offset;
        var AR_DATE = f_return_DATE_AR(lh_tz);

        this.secondi_da_iniziogiorno = (AR_DATE['hour']*3600)+(AR_DATE['min']*60)+AR_DATE['sec'];
        this.secondi_da_inizioora= (AR_DATE['min']*60)+AR_DATE['sec'];
        this.bool_troppopresto = 0 ;
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }
}

histats_site_previsioni_class.prototype.build_PREV  = function() {
    try {
        var PTR_MOD = OBJ_STATSsheet.ARmodules[this.nmod];
        this.ids = PTR_MOD.ids;
        var OBJ_SITE =  OBJ_SITEs[this.ids];
        var OBJ_dateSID =  G_CAL_HANDLER.AR_CALENDAR[OBJ_SITE.ID_CALDATE_SITE];
        var DAY_TO_DISPLAY =OBJ_dateSID.dateAR['day'];
        var OBJ_DAY = OBJ_SITE.daily_stats[DAY_TO_DISPLAY];
        this.set_timings();
        if(this.bool_troppopresto==1) return ;
        //alert(DAY_TO_DISPLAY);

        this.cur_min = parseInt((this.secondi_da_iniziogiorno%3600)/60) ;
        this.cur_sec = parseInt((this.secondi_da_iniziogiorno%60)) ;
        this.cur_h = parseInt((this.secondi_da_iniziogiorno/3600)) ;
        var n_giorni_base_forecast = 0 ;
        n_giorni_base_forecast=f_array_size(AR_FORE_DAYBACK);
        if(f_array_size(AR_FORE_DAYBACK) < 1 ){
            this.bool_troppopresto = 1 ;
            return ;
        }
        if(f_array_size(AR_FORE_DAYBACK_nday) < 1 ){
            this.bool_troppopresto = 1 ;
            return ;
        }
        for(k in AR_FORE_DAYBACK_nday){
            if(!OBJ_SITE.daily_stats[(AR_FORE_DAYBACK_nday[k])]){
                this.bool_troppopresto = 1 ;
                return ;
            }
        }

        var ngiorno = 0 ;
        var ptr_giorno = null;
        var ptr_perc = null;
        var cnt_newvisratio = new Array() ;
        var cnt_ppvratio = new Array();
        this.forec_newvis_ratio= new Array();
        this.forec_ppv_ratio= new Array();
        for(k in AR_FORE_DAYBACK_nday){
            ngiorno = AR_FORE_DAYBACK_nday[k];
            ptr_giorno =  OBJ_SITE.daily_stats[ngiorno];
            PTR_MOD.f_dailystats_build_addional_stats(ngiorno);
        
            this.AR_percentuali_giornaliere_interne[ngiorno] = new Array();
            this.AR_percentuali_giornaliere_interne[ngiorno]['vis'] = new Array();
            ptr_perc = this.AR_percentuali_giornaliere_interne[ngiorno]['vis'];

        
            for(h in ptr_giorno.AR_vis ){
                ptr_perc[h] = 0 ;
                if(ptr_giorno.TOTAL_VIS > 0 ) ptr_perc[h] =  ((ptr_giorno.AR_vis[h] / ptr_giorno.TOTAL_VIS));
                if(!this.forec_newvis_ratio[h]) this.forec_newvis_ratio[h] = 0 ;
                if(!this.forec_ppv_ratio[h]) this.forec_ppv_ratio[h] = 0 ;
            
                if(ptr_giorno.AR_vis[h] > 0 ){
                    if(!cnt_newvisratio[h]) cnt_newvisratio[h] = 0 ;
                    cnt_newvisratio[h]++;
                    this.forec_newvis_ratio[h]+=  ((ptr_giorno.AR_nevis[h]/ptr_giorno.AR_vis[h]));
                }
                if(ptr_giorno.AR_vis[h] > 0 ){
                    if(!cnt_ppvratio[h]) cnt_ppvratio[h] = 0 ;
                    cnt_ppvratio[h]++;
                    this.forec_ppv_ratio[h]+=  ((ptr_giorno.AR_hits[h]/ptr_giorno.AR_vis[h]));
                    
                }
        
            }
            
        }
     
        for(h in  this.forec_ppv_ratio ){
            if(cnt_ppvratio[h] > 0 )                 this.forec_ppv_ratio[h] = this.forec_ppv_ratio[h]/cnt_ppvratio[h];
        }
        for(h in  this.forec_newvis_ratio ){
            if(cnt_newvisratio[h] > 0 ) this.forec_newvis_ratio[h] = this.forec_newvis_ratio[h]/cnt_newvisratio[h];
        }
   
         
        for(k in AR_FORE_DAYBACK_nday){
            ngiorno = AR_FORE_DAYBACK_nday[k];
            ptr_giorno =  OBJ_SITE.daily_stats[ngiorno];
            PTR_MOD.f_dailystats_build_addional_stats(ngiorno);
            ptr_perc = this.AR_percentuali_giornaliere_interne[ngiorno]['vis'];
            //max  delta orario
            this.AR_maxdelta_h[ngiorno] = 100;
            var max_h_delta = 100 ;
            var max_valore_delta_perc = 0 ;
            var cur_valore_delta_perc = 0 ;
            var ultimo_valore_perc = 0 ;

      
            this.AR_percentuale_fino_ora[ngiorno] = 0 ;
            if(!(!(ptr_perc[23]))) ultimo_valore_perc = ptr_perc[23];
            for(h in ptr_perc ){
          
                cur_valore_delta_perc = (ptr_perc[h]-ultimo_valore_perc);
                if(cur_valore_delta_perc < 0) cur_valore_delta_perc*=-1;
                //alert(cur_valore_delta_perc + ' , ' + max_valore_delta_perc);
                if( cur_valore_delta_perc > max_valore_delta_perc){
                    max_valore_delta_perc = cur_valore_delta_perc;
                    this.AR_maxdelta_h[ngiorno] = h ;
                }
            
            }

            if(f_array_size(AR_FORE_DAYBACK_nday) > 1 ){ // 2 days, switch HIGHESTmaxdelta perc
                var h_old =0;
               
                var d_old =0;
                var d_new =0;
                for(kmx_ngiorno in this.AR_maxdelta_h){
                    h_old =  this.AR_maxdelta_h[kmx_ngiorno];
                    d_old =  kmx_ngiorno;
                    var ptr_OLDDAY = null ;
                    for(kkkndayid in AR_FORE_DAYBACK_nday){
                        d_new = AR_FORE_DAYBACK_nday[kkkndayid];

                        if(d_new!=d_old){
                            ptr_OLDDAY = this.AR_percentuali_giornaliere_interne[d_new]['vis'];
                            //  alert(d_new + ' -> ' + d_old + ' , ' +  ptr_perc[h_old] + ' -> ' + this.AR_percentuali_giornaliere_interne[d_new]['vis'][h_old]);
                            ptr_perc[h_old] =  ptr_OLDDAY[h_old];

                        }
                    }
                }

            }

            var secondi_eseguiti = 0 ;
            for(h in ptr_perc ){
                secondi_eseguiti+=3600;
                // percentuale eseguita
                if(secondi_eseguiti <  this.secondi_da_iniziogiorno){
                    this.AR_percentuale_fino_ora[ngiorno]+=    ptr_perc[h]; // perc piena
                }else if ((secondi_eseguiti-3600) <  this.secondi_da_iniziogiorno){ // percentuale proporzionata interna
                    this.AR_percentuale_fino_ora[ngiorno]+= (ptr_perc[h]/3600*(this.secondi_da_iniziogiorno-(secondi_eseguiti-3600)));
                }
            }


        }
        var tmp_PERC_ESEGUITA = 0 ;
        var tmp_count_days = 0 ;
        this.AR_percentuali_giornaliere_media = [];
        for (kgiorno in  this.AR_percentuale_fino_ora){
            tmp_PERC_ESEGUITA+=      this.AR_percentuale_fino_ora[kgiorno];
            tmp_count_days++;
            ptr_perc = this.AR_percentuali_giornaliere_interne[kgiorno]['vis'];
            for(h in ptr_perc){
                if(!this.AR_percentuali_giornaliere_media[h]) this.AR_percentuali_giornaliere_media[h] = 0; // initialize
                this.AR_percentuali_giornaliere_media[h]+=ptr_perc[h];
            }


        }
        if(tmp_count_days > 0 ){
            tmp_PERC_ESEGUITA = tmp_PERC_ESEGUITA/tmp_count_days;
            for(h in this.AR_percentuali_giornaliere_media){
                this.AR_percentuali_giornaliere_media[h] = (this.AR_percentuali_giornaliere_media[h]/tmp_count_days); // media % tra giorni di forecast
            }
        }

        var secondi_eseguiti = 0 ;
        // percentuale eseguita
        var ar_adjust_percent_minuti = new Array();
        var delta_perc_precedente = 0 ; // negativo se cresce
        var delta_perc_successivo = 0 ; // positivo se cresce
        var cur_min = 0 ;
        var cur_hour_sec = 0 ;
        var ptr_perc_media = null;
        this.AR_percentuali_giornaliere_media = replace_ar_INTindex(this.AR_percentuali_giornaliere_media); // replace key with integer
        var influenza_perc_h = 0 ;
        var cumulative_vis_forecast = 0 ;
    
        this.AR_percentuale_fino_ora_oggi = 0 ;
        for(var h in this.AR_percentuali_giornaliere_media){
            h = parseInt(h);
            ptr_perc_media = this.AR_percentuali_giornaliere_media;
            secondi_eseguiti+=3600;

            if(secondi_eseguiti <  this.secondi_da_iniziogiorno){
                //alert('a');
                this.AR_vis[h]= OBJ_DAY.AR_vis[h];
                cumulative_vis_forecast+= this.AR_vis[h];
                this.AR_percentuale_fino_ora_oggi+=    ptr_perc_media[h]; // perc piena
            }else if ((secondi_eseguiti-3600) <  this.secondi_da_iniziogiorno){ // percentuale proporzionata interna
                //alert('b');
                cur_hour_sec = parseInt((this.secondi_da_iniziogiorno-(secondi_eseguiti-3600)));
                cur_min = cur_hour_sec/60;
                if(h > 0 ) {
                    delta_perc_precedente =  ptr_perc_media[(h-1)] - ptr_perc_media[h] ;
                }else{
                    delta_perc_precedente =  ptr_perc_media[23]- ptr_perc_media[h];
                }
                if(h < 23 ) {
                    delta_perc_successivo =  ptr_perc_media[(h+1)] - ptr_perc_media[h] ;
                //alert('a1 , ' + (h+1) + ' , ' + ptr_perc_media[(h+1)] + ', ' + ptr_perc_media[h] + ','+delta_perc_successivo ) ;
                }else{
                    delta_perc_successivo =  ptr_perc_media[0]- ptr_perc_media[h];
                }
          
                //alert(  OBJ_DAY.day + ' , ' + h + ' , ' + OBJ_DAY.AR_vis[h]);
                this.AR_percentuale_fino_ora_oggi+= ptr_perc_media[h] ; //(ptr_perc_media[h]/3600*(this.secondi_da_iniziogiorno-(secondi_eseguiti-3600)));
                this.AR_vis[h]= this.crea_perc_by_min(delta_perc_precedente,delta_perc_successivo,ptr_perc_media[h],OBJ_DAY.AR_vis[h],cur_hour_sec);
                cumulative_vis_forecast+= this.AR_vis[h];
            }else{ // ore successive
                // alert(cumulative_vis_forecast+','+this.AR_percentuale_fino_ora_oggi+','+ptr_perc_media[h]);
                this.AR_vis[h]=parseInt((cumulative_vis_forecast/this.AR_percentuale_fino_ora_oggi)* ptr_perc_media[h]);

            }
     
        }

        //this.AR_vis
        //OBJ_DAY

        // proiezione today
        if(this.crea_hits_newsiv()){
            this.bool_troppopresto = 0 ;
        }


        //alert(tmp_PERC_ESEGUITA);
        //print_r(this);
        //print_r(this.AR_maxdelta_h);
        return ;
    //print_r(this.AR_percentuali_giornaliere_interne);
    
    //print_r(this.AR_percentuale_fino_ora);
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }
}

// crea la percentuale minuto per minuto e previsione dei minuti mancanti 
histats_site_previsioni_class.prototype.crea_perc_by_min  = function(delta_precedente,delta_succ,cur_percent,cur_value,cur_hour_sec) {
    try {
        var ar_previsioni = new Array();
        var ar_influenze = new Array();
   
        var influenza = 0 ;
        var influenza_cumulativa = 0 ;
        //var delta_precedente = perc_precedente - cur_percent;
        //var delta_succ = perc_successiva - cur_percent;
        var valore_proiettato = 0;
        valore_proiettato = cur_value + ((cur_value/cur_hour_sec)*(3600-cur_hour_sec));
        //alert(valore_proiettato + ',  ' + cur_value +',' + cur_hour_sec);
        for(var i = 0 ; i < 60 ; i++ ){
            influenza = 0;
            if(i < 30 && i > 0 ) influenza = ((30/i)*delta_precedente)/30;
            if(i > 30) influenza = ((30/(60-i))*delta_succ)/30;
            ar_influenze[i] = influenza;
            if(i>(cur_hour_sec/60))   influenza_cumulativa+=influenza;

        //document.writeln( i + ','+influenza+'<br>');
        }
        //check
        if(influenza_cumulativa < 0.5 && influenza_cumulativa > -0.5 ) valore_proiettato = valore_proiettato + (valore_proiettato*influenza_cumulativa);
        //alert((valore_proiettato));
        return parseInt(valore_proiettato);
    } catch(e){
        OBJ_prev.bool_troppopresto = 1 ;
    }

}

if(!JSCACHE) JSCACHE = [] ;
JSCACHE.push(['previsioni.class.js',1]);
