

Date.prototype.yyyymmdd = function() {
  var mm = this.getMonth() + 1; // getMonth() is zero-based
  var dd = this.getDate();

  return [this.getFullYear(),
          (mm>9 ? '' : '0') + mm,
          (dd>9 ? '' : '0') + dd
         ].join('-');
};

var date = new Date();

var arraypagella = Array();
var arraydatas = Array();
var version = 'voti.json';
var v = 0;
var editable = false;

$(document).ready(function () { load(); });
		
	function load() {
        if ((version == null) | (version == '')) { version = 'voti.json';}
        if (version == 'voti.json') { v = 1;}
        
        $.ajax ({
	        url: "/analytics/php/voti.php",
	        data: {
	           v: version,
	        },
	        type: "POST",        
        })
            .done(function(result){
	            console.log("CHANGED TO V: "+version);
	            if (version == 'voti.json') {window.editable = true;} else {window.editable = false;}
	            if (result) { CreateAnalytics(result,window.editable); }
	            else { console.log(result); }
            })
            
            .fail(function(result){
                console.log('fail');
                 document.getElementById('mastercontainer').innerHTML = '<div class="row"><div class="col-md-8 col-md-offset-2"><div style="height:180px"></div><h1>Analytics</h1><h2>Si è verificato un errore nel caricare la pagina.</h2><a href="index.php"><h3 class ="subtitle">Ricarica <img src="/assets/img/icons/reload.png" onclick="javascript:load()" class="iconB"></h3></a></div></div>';
        })  
        setTimeout(checkOptions(), 200);
    }
        
    function CreateAnalytics (result, editable) {	       
        try {
	        document.getElementById('analytics-materie').innerHTML = '';
            var data = JSON.parse(result);
            arraypagella = new Array();
	        arraydatas = new Array();
			arraydatas = data.materie;
			
			if (editable) {
				document.getElementById('analytics-aggiungi-materia').className = '';
	            document.getElementById('analytics-data-version').innerHTML = '';
			} else {
				document.getElementById('analytics-aggiungi-materia').className = 'hidden';
	            document.getElementById('analytics-data-version').innerHTML = data.info.resave;
			}
			
	       
	        $.each(data.materie, function (i, materia) {		                
	            CreateMaterie (i, materia, editable);
	        });
	        if (data.materie.length == 0) {
		        try {
	            document.getElementById('a-loading').style.display = 'none';
				document.getElementById('a-nomarks').style.display = '';	
				document.getElementById('a-more-options').style.display = '';
				} catch (e) {}
	        } else {
		        try {
	            document.getElementById('analytics-pagella').style.display = '';
	            document.getElementById('a-loading').style.display = 'none';
				document.getElementById('a-nomarks').style.display = 'none';
				document.getElementById('a-more-options').style.display = 'none';
				} catch (e) {}
	        }                                         
        } catch(e) {
            console.log(e);
            document.getElementById('a-loading').style.display = 'none';
            document.getElementById('a-nomarks').style.display = '';
        }

		var url = location.href;
        if (call == 'lastSubject') {
            call = document.getElementById("tabellone").lastChild.id;
        }
        location.href = "#"+call;
        history.replaceState(null,null,url);
        
        drawChart();
        createPagella ();  
  
        document.getElementById('a-more-options').style.display = '';
        if (editable) { document.getElementById('button-reset').style.display = ''; } else { document.getElementById('button-reset').style.display = 'none'; }
    }
    function CreateMaterie (i, materia, editable) {	  	                
		if (editable) {
			op = '<div class="mobile-hidden analytics-subj-header-btns"><button class="trasparent" onclick="shouldAddMark('+i+')" ><img src="/assets/img/icons/add.svg" class="icon"></button> <button type="button" onclick="shouldDeleteSubj('+i+')" class="trasparent collapsed"><img src="/assets/img/icons/delete.svg" class="icon"></button> <button type="button" onclick="shouldEditSubj('+i+')" class="trasparent"><img src="/assets/img/icons/edit.png" class="icon"></button></div><div class="mobile-shown analytics-subj-header-btns"><button class="trasparent" onclick="moreSubj('+i+')"><img src="/assets/img/icons/dots.png" class="icon"></button></div>';
		} else { op = ''; } 
        if (materia.dati.length == 0) {
			if (editable) {pmes="Per abilitare delle statistiche è necessario aggiungere almeno un voto."} else {pmes=t("Non sono stati aggiunti voti in questa materia");}
            $('#analytics-materie').append('<section id="M'+i+'" class="analytics-subj-sect" data-i="'+i+'" data-subj="'+materia.materia+'"><hr><div class="analytics-subj-header" ondblclick="shouldEditSubj('+i+')"><h2 class="analytics-subj-label">'+materia.materia+'</h2>'+op+'</div> <div class="row" id="subj:'+materia.materia+'"><span><h4 class="analytics-m-l">'+pmes+'</h4></span></div>'+PPregistro(materia, i, editable)+'</section>');          
        } else {
        	$('#analytics-materie').append('<section id="M'+i+'" class="analytics-subj-sect" data-i="'+i+'" data-subj="'+materia.materia+'"> <div class="analytics-subj-header" ondblclick="shouldEditSubj('+i+')"><h2 class="analytics-subj-label">'+materia.materia+'</h2> '+op+'</div><hr><div class="row" id="subj:'+materia.materia+'"><div class ="col-md-5">'+PPregistro(materia, i, editable)+'</div><div class ="col-md-5">'+PPanalytics(materia, i)+'</div><div class ="col-md-2">'+PPvoto(materia, i)+'</div></section>');
        }
    }
    
    function PPregistro (materia, index, editable) {
	    
	    var righetabella = '';
	    
	    $.each(materia.dati, function (j, dato) {
		    
		    red = '';
	        if ( dato.voto <6) {
		        red = 'style = "color:red;"';
	        }
		    
		    var op = '';              
		    if (editable) {
			    op = '<div class="analytics-btns analytics-btns-2 mobile-hidden-a"><button onclick="shouldDeleteMark('+index+','+j+')" value="'+index+'#'+j+'" class="trasparent"><img src="/assets/img/icons/delete.svg" class="icon"></button> <button onclick="shouldEditMark('+index+','+j+');" value="'+index+'#'+j+'" class="trasparent"><img src="/assets/img/icons/edit.png" class="icon"></button></div><div class="analytics-btns mobile-shown"><button class="trasparent mobile-shown" onclick="moreMark('+index+','+j+')"><img src="/assets/img/icons/dots.png" class="icon"></button></div>';
			} else { op = ''; }
		    
	        righetabella += '<tr '+red+'id="M'+index+"S"+j+'" class="analytics-tr" data-subjname="'+materia.materia+'" data-i="'+index+'" data-j="'+j+'" data-caption="'+dato.descrizione+'" data-data="'+dato.data+'" data-mark="'+dato.voto+'" onclick="showInfo('+index+','+j+')"><td class="analytics-tb-mark-desc">'+dato.descrizione+'</td><td class="analytics-mob-hidden" style="width: 135px !IMPORTANT;">'+dato.data+'</td><td class="analytics-tb-mark">'+shapeMark(dato.voto)+'</td></tr>';
	    }); 
	    
	    if (materia.dati.length == 0) {
			return '';
		} else {
			return '<table class="analytics-table"><thead><tr class="analytics-th hidden"><th></th><th class="analytics-mob-hidden">Data</th><th></th></tr></thead><tbody>'+righetabella+'</tbody></table>';
		}
    }
    
    function PPanalytics (materia, index) {
	   
		if (!(materia.dati === undefined || materia.dati.length == 0)) {
		    var arrayvoti = Array();
		    var arraydescription = Array();
		    
		    $.each(materia.dati, function (j, dato) {
				arrayvoti.push(dato.voto); 
				arraydescription.push(dato.descrizione); 
			});
			  	   
		    return '<div id="chart_div'+index+'" class="analytics-g-chart-cont"></div>';
		}
    }
        
    function PPvoto (materia, index) {
	    
		var arraydescription ="";
        var arrayvoti ="";
        var avoti = Array();
        var sommavoti = 0.0;
        
        $.each(materia.dati, function (j, dato) {
            avoti.push(dato.voto);
            sommavoti += Math.round(dato.voto*100)/100;
        });     
        
        
        var count = avoti.length;
        if (count < 1) { 
           return '';
        }
        
        count = 0;
        
        arraydescription = arraydescription.slice(0, -1);
        arrayvoti = arrayvoti.slice(0, -1);
         
        var arr1=avoti;
        var mf = 1;
        var m = 0;
        var item = "NaN";
        for (var i=0; i<arr1.length; i++) {
            for (var j=i; j<arr1.length; j++)
            {
                if (arr1[i] == arr1[j])
                    m++;
                if (mf<m)
                {
                    mf=m; 
                    item = arr1[i];
                }
            }
            m=0;
        }
        
        // creo le statistiche relative ai voti dell'utente
        
        if (arr1.length >= 0) {
            var media = Math.round(sommavoti/avoti.length*100)/100;
            var mediaint = parseInt(sommavoti/avoti.length);
            var moda = Math.round(item*100)/100;
            
            avoti.sort();
            
            if (arr1.length %2 == 0) {
                var ma = Math.round(avoti[Math.round((avoti.length - 2) / 2)]*100)/100;
                var mb = Math.round(avoti[Math.round((avoti.length) / 2)]*100)/100;
                var mediana = Math.round((ma+mb)*100)/200;
            } else {
                var mediana = Math.round(avoti[Math.round((avoti.length - 1) / 2)]*100)/100;
            }
            	
            	var d = new Date();
				var n = d.getMonth();
            	var bonus = 0;
				if (n>=1 && n <=8) {
					bonus += 0.04;
				} else {
					bonus -= 0.04;
				}
				
				if (arr1.length > 2) {
					if (materia.dati[0].voto <= media) {
						bonus += 0.02;
						if (materia.dati[materia.dati.length -1].voto >= media) {
							bonus += 0.02;
						}
					}
					if (materia.dati[materia.dati.length -1].voto >= media) {
						bonus += 0.02;
					} 
					if (materia.dati[0].voto >= media) {
						bonus -= 0.02;
					}
				}
				
        
            if (mf >= 1) {
                var finale = Math.round(media + bonus);
            } else {
                var xmoda = moda;
                if ((moda < media)&&(moda < mediana)) {
                    moda = (media + mediana)/2;
                }
                var finale = Math.round(moda + bonus);
                
                moda = xmoda;
            }
        } else {
            var media = Math.ceil(sommavoti);
            var mediaint = parseInt(sommavoti);
            var moda = Math.ceil(sommavoti);
            var mediana = Math.ceil(sommavoti);
            var finale = Math.ceil(sommavoti);
        }
        
        var neededUP = Math.round(((finale+0.7)*(avoti.length+1))-sommavoti);
        var neededDOWN = Math.round((((finale-0.7)*(avoti.length+1))-sommavoti)*10)/10;
        
		if (neededUP >= 16) {
			neededUP = '-';
		} else if (neededUP > 10) {
			var neededUP2 = Math.round(((finale+1)*(avoti.length+2))-sommavoti-10);
			if (neededUP2 > 10) {
				neededUP = '-';
			} else {
				neededUP = 10+', '+neededUP2;
			}
		}
		
		if (neededDOWN < 3) {
			neededDOWN = '-';
		}
      
        arraypagella.push([materia.materia, finale, media]);
        red = '';
        if (finale<6) {
	        console.log(finale);
	        red = 'style = "color:red;"';
        }
        
        res = '<div><br><h5 class="center">voto stimato</h5><h1 class="an-mark-label center" '+red+'>'+finale+'</h1></div><br>'+secAnStat(media, moda, mediana)+'</div>';
        if (v) {
	        res += '<hr class="analytics-slim-hr"><div class="an-100-box"><div class="an-100-el" style="text-align:center;"><img class="iconM" src="/assets/img/icons/arrow-green-up.svg"><h4 class="analytics-stat-mark">'+neededUP+'</h4></div><div class="an-100-el" style="text-align:center"><img class="iconM" src="/assets/img/icons/arrow-red-down.svg"><h4 class="analytics-stat-mark">'+neededDOWN+'</h4></div>';
        }
        res += '</div>';
        return res;
    }
    function secAnStat(media, moda, mediana) {
	    r = '<div class="an-100-box">';
	    if (!isNaN(media)) {
		    r += '<div class="an-100-el center"><h5 class="center">Media</h5><h4 class="analytics-stat">'+media+'</h4></div>';
	    }
	    if (!isNaN(moda)) {
		    r += '<div class="an-100-el center"><h5 class="center">Moda</h5><h4 class="analytics-stat">'+moda+'</h4></div>';
	    }
	    if (!isNaN(mediana)) {
		   // r += '<div class="an-100-el center"><h5 class="center">Mediana</h5><h4 class="analytics-stat">'+mediana+'</h4></div>';
	    }
	    return r;
    }
    
    function call(type) {   
        if (type == 'home') {
      	    window.location.replace("../");
        } else if (type == 'profilo') {
            window.location.replace("../users/"+id+"/");
		}
    }
        
           
    function createPagella () {
	    
	    document.getElementById('resutls-pagella').innerHTML = '';
		var righetabella = '';
		var totvoti = 0.00;
		
		
		if (arraypagella.length >= 1) {
		
			$.each(arraypagella, function (k, materia) {
				red = '';
	        if ( materia[1] <6) {
		        red = 'style = "color:red;"';
	        }
				if (!isNaN(materia[1])) {
					righetabella += '<tr '+red+' class="analytics-th"><td class="analytics-tb-mark-desc"><a class="analytics-a-subject" onclick="scrollToSubj('+"'M"+k+"'"+')">'+materia[0]+'</a></td><td class="analytics-tb-mark">'+materia[1]+'</td></tr>';
					totvoti += materia[1];
				}
			}); 
		    
		    
		    var media = Math.round((totvoti/arraypagella.length) * 100) / 100;
		    	    
		    $('#resutls-pagella').append('<div class="row"><div class="col-xs-12 col-sm-5 col-md-3"><table class="analytics-table"><thead></thead><tbody>'+righetabella+'</tbody></table></div><div class ="col-xs-12 col-sm-7 col-md-7"><div id="pagella-graph-A" class="analytics-report-graph" style="height: 350px;"></div></div><div class ="col-xs-12 col-sm-12 col-md-2"><div class="analytics-final-average"></div><h3 class="analytics-f-rep-cap">Media finale:</h3><h1 class="analytics-f-rep-mark">'+media+'</h1></div></div>');
	    	
			var p1 = Math.round((totvoti+1)/arraypagella.length * 100) / 100;
			var p2 = Math.round((totvoti+2)/arraypagella.length * 100) / 100;
			var p3 = Math.round((totvoti+3)/arraypagella.length * 100) / 100;
			var pp = document.getElementById("v0").innerHTML = Math.round(totvoti * 100/arraypagella.length) / 100;
			var m1 = Math.round((totvoti-1)/arraypagella.length * 100) / 100;
			var m2 = Math.round((totvoti-2)/arraypagella.length * 100) / 100;
			
			if (m1<=0) { m1 = '-'; }
			if (m2<=0) { m2 = '-'; }
			if (p1>10) { p1 = '-'; }
			if (p2>10) { p1 = '-'; }
			if (p3>10) { p3 = '-'; }
			
			document.getElementById("v-2").innerHTML = m2;
            document.getElementById("v-1").innerHTML = m1;
            document.getElementById("v0").innerHTML = pp;
            document.getElementById("v+1").innerHTML = p1;
            document.getElementById("v+2").innerHTML = p2;
            document.getElementById("v+3").innerHTML = p3;
            
            document.getElementById("cv-2").innerHTML = m2;
            document.getElementById("cv-1").innerHTML = m1;
            document.getElementById("cv+1").innerHTML = p1;
            document.getElementById("cv+2").innerHTML = p2;
                           	    
            drawPagella();
		    
		    document.getElementById('analytics-pagella').style.display = '';
		    document.getElementById('a-nomarks').className = 'hidden';
		    
		    document.getElementById('button-reset').style.display = '';
        } else {
	        document.getElementById('analytics-pagella').style.display = 'none';
	        document.getElementById('a-nomarks').className = '';
	        
	        document.getElementById('button-reset').style.display = 'none';
        }
    }
               
	function deleteSubj(i) { 
		console.log("Asked to delete materia at index: "+i);     
        $.ajax ({
       	    url: "php/deletemateria.php",
            data: {                        
                index: i,
            },
            type: "POST",
            
        })
        .done(function(result){
            load();
        })
        .fail(function(result){
            console.log('fail');     
        })
    }
    function addSubj(_input_set_id) {
			
		var input_set = document.getElementById(_input_set_id);
		var materia = input_set.childNodes[0].value;
       
         $.ajax ({
            url: "php/addmateria.php",
            data: { 
                materia: materia,
            },
            type: "POST",
        
        })
        .done(function(result){
			load();
        })
        .fail(function(result){
            console.log('fail');     
        })
    }
    function editSubj(_input_set_id) {
	    
		var input_set = document.getElementById(_input_set_id);	
        var nmateria = input_set.childNodes[0].value;
        var i = input_set.childNodes[1].value;
		
		console.log(nmateria);
		console.log(i);
       
         $.ajax ({
            url: "php/editmateria.php",
            data: {
                nmateria: nmateria,
                index: i,
            },
            type: "POST",
        
         })
        .done(function(result){
	        console.log(result);
			load();
        })
        .fail(function(result){
            console.log('fail');     
         })
    }    
   
	function addMark(_input_set_id) {
		var input_set = document.getElementById(_input_set_id);	
        var descrizione = input_set.childNodes[0].value;
        var data = input_set.childNodes[1].value;
        var voto = input_set.childNodes[2].value;
        var i = input_set.childNodes[3].value;

         $.ajax ({
            url: "php/addvoto.php",
            data: {         
                index: i,
                descrizione: descrizione, 
                data: data,
                voto: voto,
            },
            type: "POST",
         })
        .done(function(result){
            console.log(result);
            load();
           // load(parentId.parentId);
        })
        .fail(function(result){
            console.log('fail');     
         })
    }
    function editMark(_input_set_id) {		
		var input_set = document.getElementById(_input_set_id);
        var descrizione = input_set.childNodes[0].value;
        var data = input_set.childNodes[1].value;
        var voto = input_set.childNodes[2].value;
        var i = input_set.childNodes[3].value;
        var j = input_set.childNodes[4].value;

        $.ajax ({
            url: "php/editvoto.php",
            data: {         
                index: i,
                jndex: j,
                descrizione: descrizione, 
                data: data,
                voto: voto,
            },
            type: "POST",
        
         })
        .done(function(result){
            console.log(result);
            load();
           // load(parentId.parentId);
        })
        .fail(function(result){
            console.log('fail');     
         })
    }
    function deleteMark(_this_parent_id, _this_id) {
                              
             $.ajax ({
                url: "php/deletevoto.php",
                data: {
                       index: _this_parent_id,
                       indexvoto: _this_id,
                      },
                type: "POST",
             })
            .done(function(result){
                load(); 
            })
            .fail(function(result){
                console.log('fail');     
            })
        }
        
    function isNumberKey(evt) {
		var charCode = (evt.which) ? evt.which : evt.keyCode;
		if (charCode != 46 && charCode > 31 
		&& (charCode < 48 || charCode > 57))
		 return false;
		
		return true;
    }
       
    function resetAnalytics(_input_set_id, keep_subjects) {		
		var input_set = document.getElementById(_input_set_id);
        var rname= input_set.childNodes[0].value;
        
        console.log()
	        
	    $.ajax ({
                url: "php/reset.php",
                data: {
	                resave: rname,
	                keepSubjects: keep_subjects
                },
                type: "POST",
            
             })
            .done(function(result) {
	            console.log(result);
                load(); 
                scrollTo(0, 0);
            })
            .fail(function(result) {
                console.log('fail');     
             })
    }
    
    function shouldEditSubj(_this_id) {
		subj = document.getElementById("M"+_this_id).dataset;
	    subjname = subj.subj;
	    i = subj.i;
    	var input_set_id = new Date().getUTCMilliseconds() + "is";
	    presentMPMOWithTitleMessageOptions('Vuoi cambiare nome a <strong>'+subjname+'</strong>?','<div id="'+input_set_id+'"><input type="text" class="form-control" placeholder="Materia" value=\''+subjname+'\' onkeyup="MPMOonInputKeyFireFunc(event, 13, this, \'MPMOSetFuncAtIndex(THIS, 0)\')"><input type="text" class="form-control hidden" value="'+i+'"> </div>',["Modifica","Annulla"],['editSubj(\''+input_set_id+'\')','']);
    }
    function shouldAddSubj() {
		var input_set_id = new Date().getUTCMilliseconds() + "is";
	    presentMPMOWithTitleMessageOptions("Aggiungi materia",'<div id="'+input_set_id+'"><input type="text" class="form-control" placeholder="Materia" onkeyup="MPMOonInputKeyFireFunc(event, 13, this, \'MPMOSetFuncAtIndex(THIS, 0)\')"></div>',["Aggiungi","Annulla"],['addSubj(\''+input_set_id+'\')',''],['','']);
    }
    function shouldDeleteSubj(_this_id) {
		subj = document.getElementById("M"+_this_id).dataset;
	    subjname = subj.subj;
	    i = subj.i;
		presentMPMOWithTitleMessageOptions('Vuoi eliminare <strong>'+subjname+'</strong>?','', ["Elimina","Annulla"],['deleteSubj('+i+')',''], ["/assets/img/icons/trash-1.svg", ""]);
    }
    function shouldAddMark(_this_id) {
		subj = document.getElementById("M"+_this_id).dataset;
        title = subj.subj
	    i = subj.i;
	    var input_set_id = new Date().getUTCMilliseconds() + "is";
	    presentMPMOWithTitleMessageOptions('Aggiungi voto in <strong>'+title+'</strong>','<div id="'+input_set_id+'"><input type="text" class="form-control"  placeholder="Descrizione"><input type="date" class="form-control" placeholder="Data" value="'+date.yyyymmdd()+'"><input onkeypress="return isNumberKey(event, this)" type="text" class="form-control" placeholder="Voto" onkeyup="MPMOonInputKeyFireFunc(event, 13, this, \'MPMOSetFuncAtIndex(THIS, 0)\')"><input type="text" class="form-control hidden" value="'+i+'"> </div>',["Aggiungi","Annulla"],['addMark(\''+input_set_id+'\')',''],['','']);
	    
	    // <select class="form-control"  placeholder="Descrizione"><option value="10.25">10 e lode</option><option value="10">10</option><option value="9.75">10-</option><option value="9.5">9½</option><option value="9.25">9+</option><option value="9">9</option><option value="8.75">9-</option><option value="8.5">8½</option><option value="8.25">8+</option><option value="8" selected="">8</option><option value="7.75">8-</option><option value="7.5">7½</option><option value="7.25">7+</option><option value="7">7</option><option value="6.75">7-</option><option value="6.5">6½</option><option value="6.25">6+</option><option value="6">6</option><option value="5.75">6-</option><option value="5.5">5½</option><option value="5.25">5+</option><option value="5">5</option><option value="4.75">5-</option><option value="4.5">4½</option><option value="4.25">4+</option><option value="4">4</option><option value="3.75">4-</option><option value="3.5">3½</option><option value="3.25">3+</option><option value="3">3</option><option value="2.75">3-</option><option value="2.5">2½</option><option value="2.25">2+</option><option value="2">2</option><option value="1.75">2-</option><option value="1.5">1½</option><option value="1.25">1+</option><option value="1">1</option></select>
    }
    function shouldEditMark(_this_parent_id, _this_id) {
	    ob = document.getElementById("M"+_this_parent_id+"S"+_this_id).dataset;
	    subjname = ob.subjname;
	    i = ob.i;
	    j = ob.j;
	    caption = ob.caption;
	    data = ob.data;
	    mark = ob.mark;
	    var input_set_id = new Date().getUTCMilliseconds() + "is";
	    presentMPMOWithTitleMessageOptions('Vuoi modificare questo voto in <strong>'+subjname+'</strong>?','<div id="'+input_set_id+'"><input type="text" class="form-control" placeholder="Descrizione" value="'+caption+'"><input type="date" class="form-control" placeholder="Data" value="'+data+'"><input onkeypress="return isNumberKey(event, this)" type="text" class="form-control" placeholder="Voto" value="'+mark+'"><input type="text" class="form-control hidden" value="'+i+'"><input type="text" class="form-control hidden" value="'+j+'"> </div>',["Modifica","Annulla"],['editMark(\''+input_set_id+'\')','']);
    }
    function shouldDeleteMark(_this_parent_id, _this_id) {
	    ob = document.getElementById("M"+_this_parent_id+"S"+_this_id).dataset;
	    subjname = ob.subjname;
	    presentMPMOWithTitleMessageOptions('Vuoi eliminare questo voto in <strong>'+subjname+'</strong>?','',["Elimina","Annulla"],['deleteMark('+_this_parent_id+','+_this_id+')',''], ["/assets/img/icons/trash.svg", ""]);
    }
    function shouldResetMarks(){
	    presentMPMOWithTitleMessageOptions("Sei sicuro di voler resettare la tua pagella?","Resettando la pagella potrai inserire i tuoi nuovi voti da capo. La pagella attuale sarà comunque visibile nella sezione <strong>Dati salvati</strong>. <br><br> Può essere opportuno resettare la pagella a fine anno, o quando comincia un nuovo quadrimestre.",["Resetta","Annulla"],['shouldResetSubjects()',''], ["/assets/img/icons/reload.png", ""]);
    }
    function shouldResetSubjects(){
	    presentMPMOWithTitleMessageOptions('Vuoi mantenere le materie?','Potrai modificare le materie anche in seguito, ma se selezioni il reseta dovrai aggiungerle manualmente.', ["Mantieni materie","Resetta materie"],['marksResaveName(true)','marksResaveName(false)'], ["", ""]);
    }
    function marksResaveName(keep_subjects) {
	    var input_set_id = new Date().getUTCMilliseconds() + "is";
	    presentMPMOWithTitleMessageOptions("Come vuoi salvare questa pagella?",'<div id="'+input_set_id+'"><input type="text" class="form-control"  placeholder="Versione del '+date.yyyymmdd()+'"> </div>',["Resetta","Annulla"],['resetAnalytics(\''+input_set_id+'\', '+keep_subjects+')','']);
	    
    }
    function showInfo(_this_parent_id, _this_id) {
	    ob = document.getElementById("M"+_this_parent_id+"S"+_this_id).dataset;
	    subjname = ob.subjname;
	    i = ob.i;
	    j = ob.j;
	    caption = ob.caption;
	    data = ob.data;
	    mark = ob.mark;
	    presentMPMOWithTitleMessageOptions(caption+' in <strong>'+subjname+'</strong>','<div style="color:black"><h4>Descrizione: <strong>'+caption+'</strong></h4><h4>Data: <strong>'+data+'</strong></h4><h4>Voto: <strong>'+mark+'</strong></h4></div>',["Opzioni","Annulla"],['moreMark('+i+','+j+')','']);
    }
    
    function changeVersion(nv) {
	    version = nv;
	    load();
	    scrollTo(0, 0);
    }
    function checkOptions() {
	    var btns = document.getElementById('a-more-options').getElementsByClassName('btn');
        var s = 0;
		$.each(btns, function (i, btn) {		                
	        if (btn.style.display != 'none') { s++;}
	    });
	    if (s == 0) { 
		    document.getElementById('a-more-options').style.display = 'none';
	    } else {
		    document.getElementById('a-more-options').style.display = '';
	    }
    }
    function scrollToSubj(id) {
	    element = document.getElementById(id);
	    console.log(element);
	    var top = 0;
		    do {
		        top += element.offsetTop  || 0;
		        element = element.offsetParent;
		    } while(element);
		top = top - 50;
		$('html,body').animate({scrollTop: top}, 1000);
    }
    function renameSubj(el,i) {
	    id = el.parentNode.id.replace("M", "");
	    console.log(id,i);
    }
    
    function moreSubj(_this_id) {
        subj = document.getElementById("M"+_this_id).dataset;
        title = subj.subj
        presentMPMOWithTitleMessageOptions("",title, ["Aggiungi voto", "Modifica materia", "Elimina materia"],["shouldAddMark("+_this_id+")", "shouldEditSubj("+_this_id+")", "shouldDeleteSubj("+_this_id+")"],["/assets/img/icons/add.png", "/assets/img/icons/edit.png", "/assets/img/icons/trash-1.svg"]);
	}
	function moreMark(_this_parent_id, _this_id) {
		        ob = document.getElementById("M"+_this_parent_id+"S"+_this_id).dataset;
		        title = ob.subjname
		        caption = ob.caption;
		        presentMPMOWithTitleMessageOptions("",caption+" in "+title, ["Modifica voto", "Elimina voto"],["shouldEditMark("+_this_parent_id+','+_this_id+")", "shouldDeleteMark("+_this_parent_id+','+_this_id+")"], ["/assets/img/icons/edit.png", "/assets/img/icons/trash-1.svg"]);
	}
	function showData() {

		var titles = Array();
		var actions = Array();
		
		$.ajax ({
            url: "/analytics/php/getvotiversions.php",
            data: {},
            type: "POST",
        
         })
        .done(function(result){
            var data = JSON.parse(result);
            $.each(data, function (j, dato) {
                var txt = '';
                var rid = 0;
                if (dato == 'voti.json') {txt = "Versione attuale";} else { txt = dato.substring(15).slice(0, -5); rid = dato.substring(0,14);}
                if (txt && txt != '') {
	                titles.push(txt);
	                actions.push('changeVersion('+rid+')');
	        	}
			}); 
			checkOptions();
			presentMPMOWithTitleMessageOptions("Dati salvati","Mostra i dati salvati", titles, actions);
        })
        .fail(function(result){
            console.log('fail');     
        })
	}
	
function shapeMark(mark){
	de = Math.round( mark % 1 * 10 ) / 10;
	if (de) {
		if (de == 0.5 != 0) {
			return parseInt(mark)+"&#189";
		}
		if (de == 0.2 | de == 0.25 | de == 0.3) {
			return parseInt(mark)+"+";
		}
		if (de == 0.8 | de == 0.75 | de == 0.7) {
			return parseInt(mark)+1+"-";
		}
	}
	return mark;
}