//definizioni variabili var months = ["Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Lugio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre"]; var days = ["Domenica","Lunedì", "Martedì", "Mercoledì", "Giovedì", "Venerdì", "Sabato"]; //creo il mio OGGETTO function datetime_webcam(obj_datatime) { this.datatime = new Date(obj_datatime.getTime()); this.url_img_full = get_url_foto_webcam(obj_datatime,"FULL_SIZE");//URL_corrispondente alla data foto GRANDE; this.url_img_full_old = ""; this.url_img_small = get_url_foto_webcam(obj_datatime,"SMALL_SIZE"); //URL_corrispondente alla data foto PICCOLA; this.url_img_hd = get_url_foto_webcam(obj_datatime,"HD_SIZE"); //URL_corrispondente alla data foto PICCOLA; //this.str_datatime_norm = normamalizza_datatime_str(obj_datatime.getTime()); this.str_data_norm = normamalizza_data_str(obj_datatime.getTime()); this.str_time_norm = normamalizza_time_str(obj_datatime.getTime()); this.slider_poit=1; this.loading=false; this.update_url =function(obj_datatime){ this.datatime = new Date(obj_datatime.getTime()); //oggetto data this.url_img_full = get_url_foto_webcam(obj_datatime,"FULL_SIZE");//URL_corrispondente alla data foto GRANDE this.url_img_small = get_url_foto_webcam(obj_datatime,"SMALL_SIZE"); //URL_corrispondente alla data foto PICCOLA this.url_img_hd = get_url_foto_webcam(obj_datatime,"HD_SIZE"); this.str_data_norm = normamalizza_data_str(obj_datatime.getTime()); this.str_time_norm = normamalizza_time_str(obj_datatime.getTime()); } } function normamalizza_data_str(obj_datatime_msec){ var now_datatime = new Date(); var msec; if((now_datatime.getTime() - obj_datatime_msec) 01 if(dd<10){dd='0'+dd;} if(MM<10){MM='0'+MM;} if(yy<10){yy='0'+yy;} //var str_datatime_norm = new_obj_datatime.toLocaleDateString() + " " + new_obj_datatime.toLocaleTimeString().slice(0,5); var str_data_norm = dd + '/' + MM + '/' + yy; return str_data_norm; } function normamalizza_time_str(obj_datatime_msec){ var now_datatime = new Date(); var msec; if((now_datatime.getTime() - obj_datatime_msec) 01 if(mm<10){mm='0'+mm;} if(hh<10){hh='0'+hh;} if(dd<10){dd='0'+dd;} if(MM<10){MM='0'+MM;} if(yy<10){yy='0'+yy;} var url_path_cost = 'http://www.iw3hnp.altervista.org/slideshow/'; var url_path_cost_HD = 'http://www.iw3hnp.altervista.org/fotogiorno/'; var url_img_webcam = ""; if(size_foto=="FULL_SIZE"){ url_img_webcam = url_path_cost + yyyy + '-' + MM + '-' + dd + '/' + yy + '-' + MM+ '-' + dd + '_' + hh + '-' + mm + '.jpg'; return url_img_webcam; } if(size_foto=="SMALL_SIZE"){ url_img_webcam = url_path_cost + yyyy + '-' + MM + '-' + dd + '/miniatura' + yy + '-' + MM + '-' + dd + '_' + hh + '-' + mm + '.jpg'; return url_img_webcam; } if(size_foto=="HD_SIZE"){ url_img_webcam = url_path_cost_HD + hh + '-' + mm + '.jpg?' + obj_datatime.getTime(); return url_img_webcam; } } function dec_inc_obj_datetime(obj_datatime,dec_min){ //calcolo millisecondi di decremento var dec_millisec=dec_min*MSEC_MIN; //eseguo il conto var obj_datatime_star_ms = obj_datatime.getTime(); var obj_datatime_stop_ms = obj_datatime_star_ms + dec_millisec; //inizializzo la nuova data var obj_datatime_return = new Date(obj_datatime_stop_ms); //obj_datatime_return.setTime(obj_datatime_stop_ms); //ritorno la data decrementata return obj_datatime_return; } //aggiorna variabilie foto function foto_onclick(msec){ webcam1_obj.update_url(new Date (parseInt(msec.getAttribute("data-obj_datatime-msec")))); } //inizializza la galleria del modal, START function inner_img_gallery(){ var foto = new datetime_webcam(obj_datatime_gallery_start); var modal_height = document.getElementById("myModal"); var h = document.getElementById("webcam1_gallery"); var str_out=""; //**************************************************** //immagine galleria //**************************************************** var obj_img = ["", "
", //foto.str_data_norm, "", "", //foto.str_time_norm, "
", "", //chiude TAG "
"]; //**************************************************** if(webcam1_obj.datatime.getTime()== obj_datatime_gallery_start.getTime()){ while((foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime() ) && (modal_height.scrollHeight <= screen_height) ){ if((((foto.datatime.getTime()+(MIN_N_STEP*MSEC_MIN))-(foto.datatime.getTimezoneOffset()*MSEC_MIN))%(24*MSEC_ORE))!=0){ //24 ore 60 minuti msce min //var str = "" + foto.str_datatime_norm + "
"; str = obj_img[0] + foto.datatime.getTime() + obj_img[1] + obj_img[2] + foto.str_data_norm + obj_img[3] + obj_img[4] + foto.str_time_norm+ obj_img[5] + obj_img[6] + foto.url_img_small + obj_img[7] + obj_img[8]; }else{ today = new Date (foto.datatime.getTime()-1); str = '
' + days[today.getDay()] + '
' + obj_img[0] + foto.datatime.getTime() + obj_img[1] + obj_img[2] + foto.str_data_norm + obj_img[3] + obj_img[4] + foto.str_time_norm+ obj_img[5] + obj_img[6] + foto.url_img_small + obj_img[7] + obj_img[8]; } h.insertAdjacentHTML("beforeend", str); foto.datatime = dec_inc_obj_datetime(foto.datatime,-15); foto.update_url(foto.datatime); } console.log("SCROLL: ECCEZIONE INI"); screen_height = screen_height + (screen_height/2); obj_datatime_gallery_start.setTime(foto.datatime.getTime()); }else{ str_day = days[obj_datatime_gallery_start.getDay()]; while((foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime() ) && (modal_height.scrollHeight <= screen_height) ){ if((((foto.datatime.getTime()+(MIN_N_STEP*MSEC_MIN))-(foto.datatime.getTimezoneOffset()*MSEC_MIN))%(24*MSEC_ORE))!=0){ //24 ore 60 minuti msce min var str = obj_img[0] + foto.datatime.getTime() + obj_img[1] + obj_img[2] + foto.str_data_norm + obj_img[3] + obj_img[4] + foto.str_time_norm+ obj_img[5] + obj_img[6] + foto.url_img_small + obj_img[7] + obj_img[8]; }else{ today = new Date (foto.datatime.getTime()-1); var str = '
' + days[today.getDay()] + '
' + obj_img[0] + foto.datatime.getTime() + obj_img[1] + obj_img[2] + foto.str_data_norm + obj_img[3] + obj_img[4] + foto.str_time_norm+ obj_img[5] + obj_img[6] + foto.url_img_small + obj_img[7] + obj_img[8]; } h.insertAdjacentHTML("beforeend", str); foto.datatime = dec_inc_obj_datetime(foto.datatime,-15); foto.update_url(foto.datatime); } screen_height = screen_height + (screen_height/2); obj_datatime_gallery_start.setTime(foto.datatime.getTime()); } } //carica immagine function inner_img_webcam(obj_datatime){ if(obj_datatime instanceof Date){ //verifico se gli sto passando una data var foto = new datetime_webcam(obj_datatime); }else{ if(obj_datatime instanceof datetime_webcam){ var foto = new datetime_webcam(new Date (obj_datatime.datatime.getTime())); //verifico se è gia un oggetto pronto }else{ //gli sto passando i msec var foto = new datetime_webcam(new Date (parseInt(obj_datatime))); } } //-------------------------------------- //DA VERIFICARE SE EFFETIVAMENTE PU0' SERVIRMI perchè ridondante webcam1_obj.update_url(foto.datatime); webcam1_obj.loading = true; //sto caricado immagine e alzo il flag altrimenti il datatimepicker mi chiama in modo ricorsivo webcam1_obj.url_img_full_old = document.getElementById('webcam1_img').src; //-------------------------------------- if(FLAG_STATUS_STREAM==STOP){ if(document.getElementById('container_webcam1_img_fault').style.visibility == "visible"){ //if(!webcam1_obj.playing)document.getElementById('container_load_img').style.visibility = "visible"; document.getElementById('container_load_img').style.visibility = "visible"; document.getElementById('container_webcam1_img').style.visibility = "hidden"; document.getElementById('webcam1_img').src = foto.url_img_full; }else{ document.getElementById('webcam1_img_clone').src = webcam1_obj.url_img_full_old ; document.getElementById('container_webcam1_img_clone').style.visibility = "visible"; document.getElementById('container_webcam1_img').style.visibility = "hidden"; //if(!webcam1_obj.playing)document.getElementById('container_load_img').style.visibility = "visible"; document.getElementById('container_load_img').style.visibility = "visible"; document.getElementById('webcam1_img').src = foto.url_img_full; } $(function () { $('#datetimepicker2').data("DateTimePicker").date(webcam1_obj.datatime); }); }else{//sono in riproduzione document.getElementById('webcam1_play_img0').src = document.getElementById('webcam1_play_img1').src; document.getElementById('webcam1_play_img0').style.opacity = "1"; document.getElementById('webcam1_play_img1').style.opacity = "0"; //document.getElementById("webcam1_play_img0").style.zIndex = "1"; document.getElementById('webcam1_play_img1').src = webcam1_obj.url_img_full; } } function datetimepicker_convert(str_datetime){ //separo data e ora var split_str_datetime = str_datetime.split(" "); var str_date = split_str_datetime[0]; var str_time = split_str_datetime[1]; //estrapolo anno mese giorno ora minuti var date = str_date.split("/"); var mtime = str_time.split(":"); var obj_datatime = new Date(0); obj_datatime.setDate(parseInt(date[0])); obj_datatime.setMonth(parseInt(date[1]-1)); obj_datatime.setFullYear(parseInt(date[2])); obj_datatime.setHours(parseInt(mtime[0])); obj_datatime.setMinutes(parseInt(mtime[1])); return obj_datatime; } function img_load(type) { var type_imgage = type.getAttribute("data-img_type"); webcam1_obj.loading = false; //ho caricato immagine if(type_imgage=="IMG_SCREEN"){ document.getElementById('container_webcam1_img_fault').style.visibility = "hidden"; document.getElementById('container_load_img').style.visibility = "hidden"; document.getElementById('container_webcam1_img').style.visibility = "visible"; document.getElementById('container_webcam1_img_clone').style.visibility = "hidden"; return; } if(type_imgage=="IMG_FULLSCREEN"){ //document.getElementById('container_webcam1_img_fullscreen_fault').style.visibility = "hidden"; //document.getElementById('container_webcam1_img_fullscreen_load').style.visibility = "hidden"; document.getElementById('container_webcam1_img_fullscreen').style.opacity = "1"; return; } if(type_imgage=="IMG_VIDEO"){ //TIMER_PLAY_1 = setInterval("img_play_change()",MSEC_TP_1); //FLAG_STATUS_STREAM=PLAY; return; } if(type_imgage=="IMG_GALLERY"){ //var ID_FOTO = type.getAttribute('data-obj_datatime-msec'); //document.getElementById(ID_FOTO).style.display = "block"; //N_FOTO_GALLERY_PAGE --; return; } if(DEBUG)debug(); } function img_fault(type){ var type_imgage = type.getAttribute("data-img_type"); webcam1_obj.loading = false; //ho caricato immagine if(type_imgage=="IMG_SCREEN"){ document.getElementById('container_webcam1_img').style.visibility = "hidden"; document.getElementById('container_load_img').style.visibility = "hidden"; document.getElementById('container_webcam1_img_clone').style.visibility = "hidden"; document.getElementById('container_webcam1_img_fault').style.visibility = "visible"; return; } if(type_imgage=="IMG_FULLSCREEN"){ document.getElementById('container_webcam1_img_fullscreen').src = "/img/webcam/img_non_disponibile.png"; //document.getElementById('container_webcam1_img_fullscreen_load').style.visibility = "hidden"; //document.getElementById('container_webcam1_img_fullscreen_fault').style.visibility = "visible"; return; } if(type_imgage=="IMG_VIDEO"){ //TO DO DA VERIFICARE document.getElementById('webcam1_play_img1').src = "/img/webcam/img_non_disponibile.png"; return; } if(type_imgage=="IMG_GALLERY"){ var ID_FOTO = type.getAttribute('data-obj_datatime-msec'); document.getElementById(ID_FOTO).style.display = "none"; Control_Gallery_Foto(FLAG_STATUS_GALLERIA); return; } } //ritorna stringa date time decremnata function reflash_slider(obj_datatime){ var new_obj_datatime = new Date(obj_datatime.getTime()); document.getElementById("time0").innerHTML = normamalizza_time_str(dec_inc_obj_datetime(new_obj_datatime,TIME_ARRAY_SLIDER[0])); document.getElementById("time25").innerHTML = normamalizza_time_str(dec_inc_obj_datetime(new_obj_datatime,TIME_ARRAY_SLIDER[1])); document.getElementById("time50").innerHTML = normamalizza_time_str(dec_inc_obj_datetime(new_obj_datatime,TIME_ARRAY_SLIDER[2])); document.getElementById("time75").innerHTML = normamalizza_time_str(dec_inc_obj_datetime(new_obj_datatime,TIME_ARRAY_SLIDER[3])); document.getElementById("time100").innerHTML = normamalizza_time_str(dec_inc_obj_datetime(new_obj_datatime,TIME_ARRAY_SLIDER[4])); } function Set_Windows(type){ if(type=='FOTO'){ document.getElementById('container_webcam1_img_fault').style.visibility = "hidden"; document.getElementById('container_load_img').style.visibility = "hidden"; document.getElementById('container_webcam1_img_clone').style.visibility = "hidden"; document.getElementById('container_webcam1').style.visibility = "hidden"; document.getElementById('webcam1_img').src = webcam1_obj.url_img_full; document.getElementById('container_webcam1_img').style.visibility = "visible"; document.getElementById('webcam1_play_box').style.display = "none"; document.getElementById('container_webcam1').style.display = "block"; } if(type=='STREAM'){ document.getElementById('container_webcam1_img_fault').style.visibility = "hidden"; document.getElementById('container_load_img').style.visibility = "hidden"; document.getElementById('container_webcam1_img').style.visibility = "hidden"; document.getElementById('container_webcam1_img_clone').style.visibility = "hidden"; document.getElementById('container_webcam1').style.visibility = "hidden"; document.getElementById('container_webcam1').style.display = "none"; document.getElementById('webcam1_play_box').style.display = "block"; } } //************************************************************************ // GALLERIA STORICO //************************************************************************ var obj_img = ["", //[3] "
", //[4] "", //[5] "", //[6] "
", //[7] "", //[11] "
"]; //[12] function Control_Gallery_Foto_ORIGINAL(STATUS_GALLERY){ var DIV_gallery = document.getElementById("webcam1_gallery"); var str_input_foto; switch (STATUS_GALLERY) { case GALLERY_CLOSE: //---------------------------- Stop_Worker(); //---------------------------- break; case GALLERY_OPEN: //---------------------------- Start_Worker(WORK_GALLERY); //---------------------------- break; case GALLERY_INJECTS_OPEN: case GALLERY_INJECTS_ADD: //---------------------------- *DA MIGLIORARE e CONTROLLARE if((((gallery_foto.datatime.getTime()+(MIN_N_STEP*MSEC_MIN))-(gallery_foto.datatime.getTimezoneOffset()*MSEC_MIN))%(24*MSEC_ORE))!=0){ //24 ore 60 minuti msce min str_input_foto = obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.str_data_norm + obj_img[3] + obj_img[4] + gallery_foto.str_time_norm+ obj_img[5] + obj_img[6] + gallery_foto.url_img_small + obj_img[7] + obj_img[8]; }else{ today = new Date (gallery_foto.datatime.getTime()-1); str_input_foto = '
' + days[today.getDay()] + '
' + obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.str_data_norm + obj_img[3] + obj_img[4] + gallery_foto.str_time_norm+ obj_img[5] + obj_img[6] + gallery_foto.url_img_small + obj_img[7] + obj_img[8]; } DIV_gallery.insertAdjacentHTML("beforeend", str_input_foto); //---------------------------- break; default: //---------------------------- FLAG_STATUS_GALLERIA=ERROR_GALLERY_SWITCH; //---------------------------- if(DEBUG)debug(); break; }//END SWITCH } function Control_Gallery_Foto(STATUS_GALLERY){ var DIV_gallery = document.getElementById("webcam1_gallery"); var str_input_foto; switch (STATUS_GALLERY) { case GALLERY_CLOSE: //---------------------------- //Stop_Worker(); //---------------------------- break; case GALLERY_OPEN: //---------------------------- //Start_Worker(WORK_GALLERY); //---------------------------- //break; //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //MODAL_GALLERY_SCROLL W_height = window.innerHeight; //ALTEZZA FINESTRA //---------------------------- //N_FOTO_GALLERY_PAGE = parseInt(window.innerWidth / WIDTH_SMALL_FOTO)* parseInt(window.innerHeight / HEIGHT_SMALL_FOTO); //---------------------------- case GALLERY_INJECTS_OPEN: while((gallery_foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime())&& (M_G_scroll_height <= W_height)){ //---------------------------- var msec = normamalizza_datatime(gallery_foto.datatime).getTime(); msec -= gallery_foto.datatime.getTimezoneOffset()*MSEC_MIN; msec += MIN_N_STEP*MSEC_MIN; //---------------------------- if((msec % MSEC_GIORNO)!=0){ //24 ore 60 minuti msce min str_input_foto = obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.datatime.getTime() + obj_img[3] + obj_img[4] + gallery_foto.str_data_norm + obj_img[5] + obj_img[6] + gallery_foto.str_time_norm+ obj_img[7] + obj_img[8] + gallery_foto.url_img_small + obj_img[9] + obj_img[10] + gallery_foto.datatime.getTime() + obj_img[11] + obj_img[12]; }else{ today = new Date (normamalizza_datatime(gallery_foto.datatime).getTime()-1); str_input_foto = '
' + days[today.getDay()] + '
' + obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.datatime.getTime() + obj_img[3] + obj_img[4] + gallery_foto.str_data_norm + obj_img[5] + obj_img[6] + gallery_foto.str_time_norm+ obj_img[7] + obj_img[8] + gallery_foto.url_img_small + obj_img[9] + obj_img[10] + gallery_foto.datatime.getTime() + obj_img[11] + obj_img[12]; } //---------------------------- DIV_gallery.insertAdjacentHTML("beforeend", str_input_foto); //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //---------------------------- gallery_foto.update_url(dec_inc_obj_datetime(gallery_foto.datatime,-15)); //---------------------------- } //---------------------------- M_G_scroll_height_LAST = M_G_scroll_height; //---------------------------- FLAG_STATUS_GALLERIA=GALLERY_INJECTS_ADD; //---------------------------- if(DEBUG)debug_gallery(); //---------------------------- break; case GALLERY_INJECTS_ADD: //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //MODAL_GALLERY_SCROLL M_G_scroll_height_LAST = M_G_scroll_height; W_height = window.innerHeight; //ALTEZZA FINESTRA //---------------------------- if((document.getElementById("myModal").scrollHeight - document.getElementById("myModal").scrollTop)<=window.innerHeight){ //---------------------------- while((gallery_foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime())&& ((M_G_scroll_height - M_G_scroll_height_LAST)<=HEIGHT_SMALL_FOTO)){ //---------------------------- *DA MIGLIORARE e CONTROLLARE var msec = normamalizza_datatime(gallery_foto.datatime).getTime(); msec -= gallery_foto.datatime.getTimezoneOffset()*MSEC_MIN; msec += MIN_N_STEP*MSEC_MIN; //---------------------------- if((msec % MSEC_GIORNO)!=0){ //24 ore 60 minuti msce min str_input_foto = obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.datatime.getTime() + obj_img[3] + obj_img[4] + gallery_foto.str_data_norm + obj_img[5] + obj_img[6] + gallery_foto.str_time_norm+ obj_img[7] + obj_img[8] + gallery_foto.url_img_small + obj_img[9] + obj_img[10] + gallery_foto.datatime.getTime() + obj_img[11] + obj_img[12]; }else{ today = new Date (normamalizza_datatime(gallery_foto.datatime).getTime()-1); str_input_foto = '
' + days[today.getDay()] + '
' + obj_img[0] + gallery_foto.datatime.getTime() + obj_img[1] + obj_img[2] + gallery_foto.datatime.getTime() + obj_img[3] + obj_img[4] + gallery_foto.str_data_norm + obj_img[5] + obj_img[6] + gallery_foto.str_time_norm+ obj_img[7] + obj_img[8] + gallery_foto.url_img_small + obj_img[9] + obj_img[10] + gallery_foto.datatime.getTime() + obj_img[11] + obj_img[12]; } //---------------------------- DIV_gallery.insertAdjacentHTML("beforeend", str_input_foto); //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //---------------------------- gallery_foto.update_url(dec_inc_obj_datetime(gallery_foto.datatime,-15)); //---------------------------- } } if(DEBUG)debug_gallery(); break; default: //---------------------------- FLAG_STATUS_GALLERIA=ERROR_GALLERY_SWITCH; //---------------------------- if(DEBUG)debug(); break; }//END SWITCH } //======================================================================== //************************************************************************ // STRREAM VIDEO //************************************************************************ function Control_Stream_Foto(STATUS_STREAM_VIDEO){ switch (STATUS_STREAM_VIDEO) { //STOP: case STOP: //---------------------------- if(!(TIMER_PLAY_1==0 & TIMER_PLAY_2==0)){ clearInterval(TIMER_PLAY_1); clearInterval(TIMER_PLAY_2); } //---------------------------- Stop_Worker(); //---------------------------- Set_Windows('FOTO'); //sono in stop lo rimetto su modalita foto //---------------------------- if(FLAG_STATUS_STREAM<=ERROR_TIMEOUT_MAX_SLIDER)FLAG_STATUS_STREAM=STOP; //altrimenti tengo l'errore //---------------------------- if(DEBUG)debug(); //---------------------------- break; //PLAY_START: case PLAY_START: if(webcam1_obj.slider_poit=webcam1_obj.slider_poit){ var dec_inc = (slider_point_new - webcam1_obj.slider_poit)*MIN_N_STEP; webcam1_obj.slider_poit = slider_point_new; }else{ var dec_inc = (webcam1_obj.slider_poit-slider_point_new )* MIN_N_STEP * -1; webcam1_obj.slider_poit = slider_point_new; } //---------------------------- var foto = new datetime_webcam(dec_inc_obj_datetime(webcam1_obj.datatime,dec_inc)); //---------------------------- inner_img_webcam(foto); //---------------------------- if(DEBUG)debug(); //---------------------------- clearInterval(TIMER_PLAY_1); clearInterval(TIMER_PLAY_2); TIMER_PLAY_1 = setInterval('Control_Stream_Foto(PLAY_CHAGE)',MSEC_TP_1) TIMER_PLAY_2 = setInterval('Bufferig_Timeout()',MSEC_TP_2); //Timer di sicurezza //---------------------------- break; //continuo a step sucessivo }else{ if(DEBUG)debug(); //---------------------------- FLAG_STATUS_STREAM=ERROR_TIMEOUT_MAX_SLIDER; //---------------------------- Control_Stream_Foto(STOP); //continue STOP; //verificare se serve break } //PLAY_CHAGE: case PLAY_CHAGE: if(FLAG_STATUS_STREAM==PLAY_START)BUFFER_SIZE=BUFFER_SIZE_PLAY; if(FLAG_STATUS_STREAM==PLAY_CHAGE)BUFFER_SIZE=BUFFER_SIZE_PLAY_MIN; if((FLAG_STATUS_STREAM!=PLAY_START)&(FLAG_STATUS_STREAM!=PLAY_CHAGE)){ //---------------------------- FLAG_STATUS_STREAM=ERROR_FLAG_STATUS; //---------------------------- if(DEBUG)debug(); //---------------------------- break; } if(((BufferImgSize>BUFFER_SIZE)| ((MAX_N_STEP-webcam1_obj.slider_poit)<=BUFFER_SIZE))&webcam1_obj.slider_poit < MAX_N_STEP){ //alla partenza buferizzo almento 3 immagini //---------------------------- clearInterval(TIMER_PLAY_1); clearInterval(TIMER_PLAY_2); TIMER_PLAY_1 = setInterval('Control_Stream_Foto(PLAY_CHAGE)',MSEC_TP_1); TIMER_PLAY_2 = setInterval('Bufferig_Timeout()',MSEC_TP_2); //---------------------------- var element = document.getElementById("webcam1_play_img1"); element.classList.remove("transparent"); void element.offsetWidth; element.classList.add("transparent"); //---------------------------- var slider_point_new = (webcam1_obj.slider_poit + 1); slider.noUiSlider.set(slider_point_new); //---------------------------- if(slider_point_new>=webcam1_obj.slider_poit){ var dec_inc = (slider_point_new - webcam1_obj.slider_poit)*MIN_N_STEP; webcam1_obj.slider_poit = slider_point_new; }else{ var dec_inc = (webcam1_obj.slider_poit-slider_point_new )* MIN_N_STEP * -1; webcam1_obj.slider_poit = slider_point_new; } //---------------------------- var foto = new datetime_webcam(dec_inc_obj_datetime(webcam1_obj.datatime,dec_inc)); //---------------------------- inner_img_webcam(foto); BufferImgSize--; //---------------------------- FLAG_STATUS_STREAM=PLAY_CHAGE; //---------------------------- if(DEBUG)debug(); //---------------------------- break; }else{ if(webcam1_obj.slider_poit == MAX_N_STEP){ //ho raggiunto il massimo //---------------------------- clearInterval(TIMER_PLAY_1); clearInterval(TIMER_PLAY_2); //---------------------------- if(DEBUG)debug(); //---------------------------- FLAG_STATUS_STREAM=ERROR_TIMEOUT_MAX_SLIDER; //---------------------------- Control_Stream_Foto(STOP); break; //continue STOP; //stoppo riproduzione; } else{ //laconnessione è solo un pò lenta o sto buferizzando //---------------------------- clearInterval(TIMER_PLAY_1); TIMER_PLAY_1 = setInterval('Control_Stream_Foto(PLAY_CHAGE)',MSEC_TP_1); //---------------------------- FLAG_STATUS_STREAM=PLAY_START; //---------------------------- if(DEBUG)debug(); //---------------------------- break; } } default: //---------------------------- FLAG_STATUS_STREAM=ERROR_SWITCH; //---------------------------- if(DEBUG)debug(); break; } //END SWITCH }//END FUNCTION function Bufferig_Timeout(){ clearInterval(TIMER_PLAY_1); clearInterval(TIMER_PLAY_2); Control_Stream_Foto(STOP); //---------------------------- FLAG_STATUS_STREAM=ERROR_TIMEOUT_LOAD; //---------------------------- if(DEBUG)debug(); //---------------------------- } function Wdt(){ clearInterval(TIMER_WDT); //---------------------------- FLAG_STATUS_STREAM=STOP; //---------------------------- Control_Stream_Foto(STOP); //resetto macchina a stati //---------------------------- } //======================================================================== //************************************************************************ // WORKER //************************************************************************ //---------------------------- var WorkerImg; var worker; var work_type; var BufferImg = new Array(1); BufferImg[0] = new Array(1); var BufferImgSize = 0; var M_G_scroll_height; var M_G_scroll_height_LAST; var W_height; BufferImg[0][0] = get_url_foto_webcam(normamalizza_datatime(now_datetime),"FULL_SIZE"); BufferImg[0][1] = normamalizza_datatime(now_datetime).getTime(); var imgs = [BufferImg[0][0]]; var URL = window.URL || window.webkitURL; var url = URL.createObjectURL( new Blob( [document.getElementById('imgloader').textContent], { type: "text/javascript" } ) ); //---------------------------- //START WORKER //---------------------------- function Start_Worker(type) { URL = window.URL || window.webkitURL, url = URL.createObjectURL( new Blob( [document.getElementById('imgloader').textContent], { type: "text/javascript" } ) ); work_type = type; //---------------------------- if(typeof(Worker) !== "undefined") { if(typeof(worker) == "undefined") { //---------------------------- FLAG_STATUS_WORKER=0; //---------------------------- switch (work_type){ case WORK_STREAM: BufferImg[0][0] = get_url_foto_webcam(normamalizza_datatime(webcam1_obj.datatime),"FULL_SIZE"); BufferImg[0][1] = normamalizza_datatime(webcam1_obj.datatime).getTime(); imgs[0] = BufferImg[0][0]; BufferImgSize=0; //---------------------------- var obj_datatime_max = new Date(BufferImg[0][1]+((MAX_N_STEP-webcam1_obj.slider_poit)*(MIN_N_STEP*MSEC_MIN))); var obj_datatime_max_msec = obj_datatime_max.getTime(); //---------------------------- break; case WORK_GALLERY: //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //MODAL_GALLERY_SCROLL W_height = window.innerHeight; //ALTEZZA FINESTRA //---------------------------- imgs[0] = gallery_foto.url_img_small; //---------------------------- FLAG_STATUS_GALLERIA=GALLERY_INJECTS_OPEN; //---------------------------- break; default: FLAG_STATUS_WORKER = ERROR_WORKER_SWITCH_START; break; } //---------------------------- worker = new Worker(url); worker.postMessage(imgs); //---------------------------- //---------------------------- // WORKER .onmessage //---------------------------- worker.onmessage = function (e) { if(FLAG_STATUS_STREAM!=STOP | FLAG_STATUS_GALLERIA !=GALLERY_CLOSE){ var frag = document.createDocumentFragment(); var count = imgs.length; var onload = function () { delete this.onload; frag.appendChild(this); if (--count === 0) { //---------------------------- switch (work_type){ case WORK_STREAM: //---------------------------- BufferImgSize++; //---------------------------- if(DEBUG)debug(); //---------------------------- BufferImg[0][1]=BufferImg[0][1]+(MIN_N_STEP*MSEC_MIN); BufferImg[0][0]=get_url_foto_webcam(BufferImg[0][1],"FULL_SIZE"); imgs[0] = BufferImg[0][0]; //---------------------------- if(BufferImg[0][1]<=obj_datatime_max_msec){ imgs[0]=BufferImg[0][0]; worker.postMessage(imgs); }else{//chiudo web worker Stop_Worker(); } break; case WORK_GALLERY: //---------------------------- switch (FLAG_STATUS_GALLERIA){ case GALLERY_INJECTS_OPEN: //---------------------------- //if((gallery_foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime())&& (M_G_scroll_height <= W_height)){ if((gallery_foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime())&& (M_G_scroll_height <= W_height)){ //---------------------------- Control_Gallery_Foto(GALLERY_INJECTS_OPEN); //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //---------------------------- gallery_foto.update_url(dec_inc_obj_datetime(gallery_foto.datatime,-15)); //---------------------------- imgs[0] = gallery_foto.url_img_small; //---------------------------- worker.postMessage(imgs); //---------------------------- }else{ //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; M_G_scroll_height_LAST = M_G_scroll_height; //---------------------------- FLAG_STATUS_GALLERIA = GALLERY_INJECTS_ADD; } //---------------------------- break; //---------------------------- case GALLERY_INJECTS_ADD: if((gallery_foto.datatime.getTime() >= obj_datatime_gallery_stop.getTime())&& ((M_G_scroll_height - M_G_scroll_height_LAST)<=HEIGHT_SMALL_FOTO)){ //---------------------------- Control_Gallery_Foto(GALLERY_INJECTS_ADD); //---------------------------- M_G_scroll_height = document.getElementById("myModal").scrollHeight; //---------------------------- gallery_foto.update_url(dec_inc_obj_datetime(gallery_foto.datatime,-15)); //---------------------------- imgs[0] = gallery_foto.url_img_small; //---------------------------- worker.postMessage(imgs); //---------------------------- }else {//chiudo web worker //---------------------------- //Stop_Worker(); //---------------------------- //FLAG_STATUS_GALLERIA=GALLERY_INJECTS_STOP; //---------------------------- } //---------------------------- break; //---------------------------- default: FLAG_STATUS_WORKER = ERROR_WORKER_SWITCH_ONMESSAGE; break; } break; default: FLAG_STATUS_WORKER = ERROR_WORKER_SWITCH_ONMESSAGE; break; } } }; imgs.forEach(function (img) { var el = document.createElement('img'); //---------------------------- el.onload = onload; el.src = img; el.onerror = onload; //---------------------------- }); URL.revokeObjectURL(url); }else{Stop_Worker()}; }; //---------------------------- // WORKER .error //---------------------------- worker.addEventListener('error', function(e){ var l = e.lineno; var f = e.filename; var m = e.message; document.getElementById("worker_result").innerHTML = 'ERROR: Line ' + l + ' in ' + f + ': ' + m; //console.log('ERROR: Line ' + l + ' in ' + f + ': ' + m); }); } } else { //---------------------------- // WORKER doesn't work //---------------------------- console.log('Sorry! No Web Worker support.'); //TO DO scrivere ed implementare secondo meccanismo } } //---------------------------- // WAKE UP WORKER //---------------------------- function WakeUp_Worker() { M_G_scroll_height_LAST = M_G_scroll_height; if((document.getElementById("myModal").scrollHeight - document.getElementById("myModal").scrollTop)<=window.innerHeight){ worker.postMessage(imgs); } if(DEBUG)debug_gallery(); //altrimenti ignora evento } //---------------------------- //STOP WORKER //---------------------------- function Stop_Worker() { if(typeof(worker) != "undefined") { worker.terminate(); worker = undefined; } } //======================================================================== //************************************************************************ // FULL SCREEN IMMAGE //************************************************************************ function Control_Fullscreen_Foto(STATUS_FULLSCREEN_FOTO){ switch (STATUS_FULLSCREEN_FOTO) { //STOP: case FULLSCREEN_OPEN: //---------------------------- break; case FULLSCREEN_ZOOM: //---------------------------- document.getElementById("container_webcam1_img_fullscreen").style.display = "none"; document.getElementById('myimage').src = document.getElementById('webcam1_img_fullscreen').src; document.getElementById("webcam1_img_zoom").style.display = "block"; imageZoom("myimage", "myresult"); //---------------------------- //---------------------------- break; case FULLSCREEN_CLOSE: //---------------------------- break; default: //---------------------------- if(DEBUG)debug(); break; } //END SWITCH } function imageZoom(imgID, resultID) { var img, lens, result, cx, cy; img = document.getElementById(imgID); result = document.getElementById(resultID); /*create lens:*/ lens = document.createElement("DIV"); lens.setAttribute("class", "img-zoom-lens"); lens.setAttribute("id", "img_zoom_lens"); /*insert lens:*/ img.parentElement.insertBefore(lens, img); /*calculate the ratio between result DIV and lens:*/ cx = result.offsetWidth / lens.offsetWidth; cy = result.offsetHeight / lens.offsetHeight; /*set background properties for the result DIV*/ result.style.backgroundImage = "url('" + img.src + "')"; result.style.backgroundSize = (img.width * cx) + "px " + (img.height * cy) + "px"; /*execute a function when someone moves the cursor over the image, or the lens:*/ lens.addEventListener("mousemove", moveLens); img.addEventListener("mousemove", moveLens); /*and also for touch screens:*/ lens.addEventListener("touchmove", moveLens); img.addEventListener("touchmove", moveLens); function moveLens(e) { var pos, x, y; if((e.type != "touchmove") & (e.type != "touchend") & (e.type != "touchstart")){ /*prevent any other actions that may occur when moving over the image*/ e.preventDefault(); /*get the cursor's x and y positions:*/ pos = getCursorPos(e); /*calculate the position of the lens:*/ x = pos.x - (lens.offsetWidth / 2); y = pos.y - (lens.offsetHeight / 2); }else{ x = e.touches[0].clientX - (lens.offsetWidth / 2); y = e.touches[0].clientY - (lens.offsetHeight / 2); } /*prevent the lens from being positioned outside the image:*/ if (x > img.width - lens.offsetWidth) {x = img.width - lens.offsetWidth;} if (x < 0) {x = 0;} if (y > img.height - lens.offsetHeight) {y = img.height - lens.offsetHeight;} if (y < 0) {y = 0;} /*set the position of the lens:*/ lens.style.left = x + "px"; lens.style.top = y + "px"; /*display what the lens "sees":*/ result.style.backgroundPosition = "-" + (x * cx) + "px -" + (y * cy) + "px"; } function getCursorPos(e) { var a, x = 0, y = 0; e = e || window.event; /*get the x and y positions of the image:*/ a = img.getBoundingClientRect(); /*calculate the cursor's x and y coordinates, relative to the image:*/ x = e.pageX - a.left; y = e.pageY - a.top; /*consider any page scrolling:*/ x = x - window.pageXOffset; y = y - window.pageYOffset; return {x : x, y : y}; } } //======================================================================== //************************************************************************ // DEBUG //************************************************************************ function debug_gallery(){ var elmnt = document.getElementById("myModal").scrollTop; //altezza utilizzabile scheda height windows sheet document.getElementById("hws").innerHTML = window.innerHeight; //altezza finestra modal: height windows modal document.getElementById("hwm").innerHTML = elmnt; //altezza complessiva: hws + hwm height windows total document.getElementById("hwt").innerHTML = document.getElementById("myModal").scrollHeight; document.getElementById("hh1").innerHTML = window.innerHeight; document.getElementById("fls").innerHTML = GALLERY_STATUS[FLAG_STATUS_GALLERIA]; var flag; flag = document.getElementById("fl1").style.backgroundColor ; if(flag == "blue" ){ document.getElementById("fl1").style.backgroundColor = "green"; }else { document.getElementById("fl1").style.backgroundColor = "blue"; } } function debug_box(type) { if(type == 'MOTION' ){ var checkBox = document.getElementById("Check_MOTION"); if (checkBox.checked == true){ document.getElementById('DEBUG_MOTION').style.display = "block"; Set_Parameter(-1); } else { document.getElementById('DEBUG_MOTION').style.display = "none"; } } if(type == 'STORICO' ){ var checkBox = document.getElementById("Check_STORICO"); if (checkBox.checked == true){ document.getElementById('DEBUG_STORICO').style.display = "block"; Set_Parameter(-1); } else { document.getElementById('DEBUG_STORICO').style.display = "none"; } } if(type == 'ZOOM_IMG' ){ var checkBox = document.getElementById("Check_ZOOM"); if (checkBox.checked == true){ document.getElementById('DEBUG_ZOOM').style.display = "block"; var c = document.getElementsByClassName("img-zoom-lens"); var cc = c.style.width; //document.getElementById("width_zoom").value = document.getElementById("img_zoom_lens").style.width; //document.getElementById("height_zoom").value = document.getElementById("img_zoom_lens").style.height; } else { document.getElementById('DEBUG_ZOOM').style.display = "none"; } } } function debug_touch(state){ document.getElementById("fl2").style.backgroundColor = state; } function debug(){ document.getElementById("DEBUG_FlagStatus").innerHTML = STREAM_STATUS[FLAG_STATUS_STREAM]; SET_bar(BufferImgSize); //---------------------------- if(FLAG_STATUS_STREAM>=ERROR_TIMEOUT_LOAD){ if(WDT)TIMER_WDT = setInterval('Wdt()',MSEC_WDT); } //---------------------------- } function SET_bar(n) { var elem = document.getElementById("DEBUG_BarProgresImg"); var width = n; elem.style.width = width + '%'; document.getElementById("DEBUG_BarProgresImglabel").innerHTML = width * 1 ; /* //---------------------------- if(BufferImgSize>BUFFER_SIZE)document.getElementById("buf_dot_green").style.opacity = else //---------------------------- */ } function Set_Parameter(type){ if(type!=-1){ var type_parameter = type.getAttribute("data-type_parameter"); var list_parameter = ["t1", "t2", "lb1", "lb2","tmr2", "tmrWDT", "zoom_paremeter"]; var index_parameter = list_parameter.indexOf(type_parameter); switch (index_parameter) { case (list_parameter.indexOf("t2")): MSEC_TP_1 = document.getElementById(type_parameter).value; document.getElementById("sp_" + type_parameter ).innerHTML = MSEC_TP_1; break; case (list_parameter.indexOf("lb1")): BUFFER_SIZE_PLAY = document.getElementById(type_parameter).value; document.getElementById("sp_" + type_parameter ).innerHTML = BUFFER_SIZE_PLAY; break; case (list_parameter.indexOf("lb2")): BUFFER_SIZE_PLAY_MIN = document.getElementById(type_parameter).value; document.getElementById("sp_" + type_parameter ).innerHTML = BUFFER_SIZE_PLAY_MIN; break; case (list_parameter.indexOf("tmr2")): MSEC_TP_2 = document.getElementById(type_parameter).value; document.getElementById("sp_" + type_parameter ).innerHTML = MSEC_TP_2; break; case (list_parameter.indexOf("tmrWDT")): MSEC_WDT = document.getElementById(type_parameter).value; document.getElementById("sp_" + type_parameter ).innerHTML = MSEC_WDT; break; case (list_parameter.indexOf("zoom_paremeter")): //document.getElementById("img_zoom_lens").style.width = document.getElementById("width_zoom").value; //document.getElementById("img_zoom_lens").style.height = document.getElementById("height_zoom").value; break; } }else{ document.getElementById("t2").value =MSEC_TP_1; document.getElementById("lb1").value =BUFFER_SIZE_PLAY; document.getElementById("lb2").value =BUFFER_SIZE_PLAY_MIN; document.getElementById("tmr2").value =MSEC_TP_2; document.getElementById("tmrWDT").value =MSEC_WDT; } //---------------------------- } function get_Parameter_Storico(){ var modal_height = document.getElementById("myModal").scrollHeight; var modal_width = document.getElementById("myModal").scrollWidth; document.getElementById("lwf").innerHTML = modal_height; document.getElementById("awf").innerHTML = modal_width; document.getElementById("lws").innerHTML = screen.availWidth; document.getElementById("aws").innerHTML = screen.availHeight; document.getElementById("aft").innerHTML = screen.availTop; } //======================================================================== //CONTROLLO STREEM //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ // LENTE //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************ //************************************************************************