﻿//**************************************************************
//                   FUNZIONI StarRatings
//**************************************************************

var InitStarRating = true

//True: Votato | False: Non votato                             
function StarRating_Votato(Nome){
    var IDOggetto
    IDOggetto = Nome + '_1'                                
    
    if (document.getElementById(IDOggetto).src.indexOf('stelletta-conferma.gif')>0){
        return true
    }else{
        return false
    }                                                                
}

// Evidenzia le stellette al mouse over
function StarRating_MouseOver(Nome,NumStar,NumStarTot){                                
    var i                                
    var IDOggetto
    
    if (!StarRating_Votato(Nome)){
        //Stellette da accendere                                
        for (i=1;i<=NumStar;i++){
            IDOggetto = Nome + '_' + i
            document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-accesa.gif'
        }
        
        //Stellette da spegnere
        for (;i<=NumStarTot;i++){
            IDOggetto = Nome + '_' + i
            document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-spenta.gif'                                    
        }        
    }                                                             
}

// Vota. Congela le stellette e incrementa il contatore dei voti
function StarRating_OnClick(Nome,Voto,ID_News,NomeTabella,Nome_linkedStarRate){
    var ID_NumVoti = Nome + '_NumVoti'    
    var NumVoti    = ''
    var objNumVoti = document.getElementById(ID_NumVoti)
    
    var ID_VoteDisplay = Nome + '_VoteStar'
    var objVoteDisplay = document.getElementById(ID_VoteDisplay + '_1')
    
    var ID_VoteDisplay_linked = Nome_linkedStarRate + '_VoteStar'
    var objVoteDisplay_linked = document.getElementById(ID_VoteDisplay_linked + '_1')
    
    var ReturnedVote    = ''
    var ReturnedNumVote = ''
    var ArrVote
    
    var nomeFile   = '/includes/rate.asp'	 
    var parameters = 'tab=' + NomeTabella + '&voto=' + Voto + '&ID=' + ID_News   
    nomeFile       = nomeFile + '?' + parameters            
    
    if (!StarRating_Votato(Nome)){ 
        var ajax       = assegnaXMLHttpRequest()        

        // se l'oggetto XMLHttpRequest non è nullo
        if(ajax) {			                		      
            // impostazione richiesta asincrona in GET
            nomeFile = nomeFile + "&random=" + (Math.random()*1000)				        
            ajax.open("get", nomeFile, true);
            // ajax.setRequestHeader("connection", "close");		        

            // impostazione controllo e stato della richiesta
            ajax.onreadystatechange = function() {			
                if(ajax.readyState === readyState.COMPLETATO) {        			
                    if (!(statusText[ajax.status] === "OK")){        				
                        // errore di caricamento
                        window.alert ("Errore riscontrato: " + ajax.status)        					
                    }else{       
                        //se la richiesta ajax è andata a buon fine
                        //incrementa i voti, congela lo starRating e aggiorna le stellette del voto                                                                        
                                                                                                                                                        
                        //congelo lo starRatings      
                        if (InitStarRating == false){
                            StarRating_Freeze(Nome,Voto,5)
                        }
                        
                        //leggo il voto e il num di voti di ritorno
                        ReturnedVote = ajax.responseText                                                                        
                        
                        //aggiorno il voto e il num di voti nella pagina
                        if ((objVoteDisplay) && (ReturnedVote!='')){                            
                            ArrVote = ReturnedVote.split("|")
                            
                            ReturnedVote    = ArrVote[0]
                            ReturnedNumVote = ArrVote[1]
                        
                            StarRating_RefreshVote(ID_VoteDisplay,ReturnedVote,5)
                            if (objNumVoti){
                                objNumVoti.innerHTML = ReturnedNumVote
                            }    
                        }    
                                                
                        //aggiorno lo starRate collegato (linked star rate)
                        if (Nome_linkedStarRate!=''){
                            var ObjNumVoti_Linked = document.getElementById(Nome_linkedStarRate + '_NumVoti') 
                            if (InitStarRating==false){
                                StarRating_Freeze(Nome_linkedStarRate,Voto)
                            }    
                            
                            if (ObjNumVoti_Linked){
                                ObjNumVoti_Linked.innerHTML = ReturnedNumVote
                            }                            
                            if ((objVoteDisplay_linked) && (ReturnedVote!='')){                            
                                StarRating_RefreshVote(ID_VoteDisplay_linked,ReturnedVote,5)
                            }                                                                                  
                        }
                        
                        if (InitStarRating==true){
                            InitStarRating = false                        
                        }
                        
                    }
                } 
            }
            // invio richiesta
            ajax.send(null);
        }
    }  					  		
        
}       

//congela lo StarRating
function StarRating_Freeze(Nome,Star_Index){
    var i                                
    var IDOggetto
    
    for (i=1;i<=Star_Index;i++){
        IDOggetto = Nome + '_' + i
        document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-conferma.gif'                                    
    }                                                          
}           

// Spegne tutte le stellette quando si esce dalla prima stelletta      
function StarRating_MouseOut(Nome,NumStarTot){
    var i                                
    var IDOggetto
    if (!StarRating_Votato(Nome)){
        for (i=1;i<=NumStarTot;i++){
            IDOggetto = Nome + '_' + i
            document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-spenta.gif'
        }
    }    
}

function StarRating_RefreshVote(Nome,Voto,NumStar){
    var i, Num_FullStar, HalfStar                             
    
    Num_FullStar = Math.floor(Voto)
    HalfStar     = false
    
    if ((Voto - Num_FullStar)!=0) {
        HalfStar = true
    }
    
    for (i=1;i<=Num_FullStar;i++){
        IDOggetto = Nome + '_' + i
        document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-accesa.gif'
    }
    if (HalfStar==true){
        Num_FullStar += 1
        IDOggetto     = Nome + '_' + Num_FullStar
        
        document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-divisa.gif'        
        
        Num_FullStar += 1
    }else{
        Num_FullStar += 1
    }
    
    if (Num_FullStar<=5) {
        for (i=Num_FullStar;i<=NumStar;i++){
            IDOggetto = Nome + '_' + i
            document.getElementById(IDOggetto).src = '/immagini/starRating/stelletta-spenta.gif'                
        }
    }
}

function Init_StarRating(Nome,ID_Oggetto,NomeTabella,Nome_linkedStarRate){        
    StarRating_OnClick(Nome,'0',ID_Oggetto,NomeTabella,Nome_linkedStarRate)    
}