//Private Debug funtions
function MapDebug(value)
{
    var dbg=document.getElementById('Dbg');
    dbg.innerHTML+=value+"<br>";
}

var panel;

function SetPanel(id)
{
  panel = document.getElementById(id);
  if (panel == null)
  {
    alert('Invalid panel id');
    return;
  }   
}

//Filtra i tasti per evitare il postback
function  checkKey(e)
{
  if (window.event.keyCode == 13)
  {
    var input=window.event.srcElement;
    //Se l'utente ha inserito la password valida il form
    if (input.value.length > 0)
    {
      test.ValidaRisposta();
    }
    window.event.cancelBubble = true;
    return false;
  } else {
    return true;
  }
}

//Test class
var test=function Test()
{
    this.id;
    this.idEdizione;
    this.effect;
    
    this.Highlight=function()
    {
        var obj=document.getElementById('videoMessaggio');
        if (typeof(obj)!='object')
          return;
        
        var linkReply=document.createElement('A');
        linkReply.setAttribute('href','#domanda');
        linkReply.innerHTML="Rispondi alla domanda";
        obj.innerHTML="";
        obj.appendChild(linkReply);
        obj.style.display="block";
        
        if (typeof(test.effect)!='object')
        {
            var animation1=new AjaxControlToolkit.Animation.ColorAnimation(obj, 0.5, 2, 'style', 'backgroundColor', '#ffffff', '#ff0000');
            var animation2=new AjaxControlToolkit.Animation.ColorAnimation(obj, 0.5, 2, 'style', 'backgroundColor', '#ff0000', '#ffffff');

            test.effect=new AjaxControlToolkit.Animation.SequenceAnimation(obj, null, null, null , 3000);
            test.effect.add(animation1);
            test.effect.add(animation2);
            
            test.effect.play();
        } else {
            test.effect.stop();
            test.effect.play();
        }
                    
    }
    
    this.ResetHighlight=function()
    {
        if (typeof(test.effect)=='object')
        {
          test.effect.stop();
        }
        
        var messaggio=document.getElementById('videoMessaggio');
        if (typeof(messaggio)=='object')
        {
          //messaggio.style.visibility='hidden';
          messaggio.innerHTML="";
          messaggio.style.display="none";
        }          
    }
    
    this.FineTrasmissione=function()
    {
      //MapDebug("Test result");
      
      test.ResetHighlight();
      //Controlla se l'utente ha risposto al questionario
      Map.Fad.Web.WSQuestionario.GetIdRisultato(
           test.id, 
           test.idEdizione,
           test.FineTrasmissioneOnComplete,     //Complete event
           OnTimeout                  //Timeout event
           );

    }
    
    this.FineTrasmissioneOnComplete=function(idRisultato)
    {
      var text;
      
      if (idRisultato==null)
      {
      //Se l'utente non ha risposto al questionario, mostra il link alla homepage
        text="<a href='/Default.aspx'>Trasmissione terminata</a>";
      } 
      else 
      {
      //Se l'utente ha risposto al questionario, mostra il link alla pagina dei risultati
        text="<a href='/Crediti/Risultati.aspx?idrisultato="+idRisultato+"&calcola=true'>VISUALIZZA I RISULTATI DEL QUESTIONARIO</a>";
      }
      
      panel.innerHTML=text;        
    }
    
    this.ClearDomanda=function()
    {
        test.ResetHighlight();
        
        panel.style.display='none';
        panel.innerHTML='';
    }
    
    this.ShowDomanda=function(codice)
    {
      Map.Fad.Web.WSQuestionario.GetDomandaByCodice(
           test.id, 
           test.idEdizione, 
           codice,                          //Params
           test.ShowDomandaOnComplete,      //Complete event
           OnTimeout                        //Timeout event
           );
    }
    
    this.ShowDomandaOnComplete=function(domanda)
    {
        //Domanda inesistente o gia' risposta
        if (domanda==null)
          return;
        
        var text="";
    
        //Mostra domanda+password
        if (domanda.Tipo==0)
        {
            text+="<div class='contenitoreQuesito'><a name='domanda'></a>";
            text+="<div class='domandaQuestionario'>"+domanda.Testo+"</div>";
            text+="</div>";
            text+="<label for='idRisposta' class='selezionaRisposta'>Seleziona la risposta</label>";
            text+="<select id='idRisposta' name='idRisposta' class='idRisposta'>";
            for (var i=0;i<domanda.Risposte.length;++i)
            {
              var risposta=domanda.Risposte[i];
              text+="<option value='"+risposta.Id+"'>"+risposta.Testo+"</option>";
            }
            text+="</select>";
            text+="<div class='inserimentoPassword'>";
            text+="<label for='password'>Inserisci la tua password</label>";
            text+="<input type='password' id='password' name='password' classs='password' onkeypress='return checkKey()'/>";
            text+="<img src='/images/icone/help2.gif' title='In questo campo devi inserire la password che utilizzi per effettuare la login' align='absmiddle'/>";
            text+="<input type='button' id='btInvia' onClick='return test.ValidaRisposta()' value='Invia la risposta' class='inviaRisposta'/>";
            text+="</div>";
        } 
        //Mostra password
        else if (domanda.Tipo==10)
        {
            text+="<input type='password' id='password' name='password' onkeypress='return checkKey()'/>";
            text+="<input type='button' onClick='return test.ValidaPassword()'/>";
        }
        text+="<input type='hidden' name='idDomanda' value='"+ domanda.ID +"'/>";
        text+="<input type='hidden' name='idEdizione' value='"+ test.idEdizione +"'/>";
       
        panel.style.display='none';
        panel.innerHTML=text;
        panel.style.display='block';
        
        //Evidenzia la domanda all'utente
        test.Highlight();
    }
    
    this.ValidaRisposta=function()
    {
        var passwordObj=document.getElementById('password');
        var password=passwordObj.value;
        
        if (password=='')
        {
            alert('Inserire la propria password');
        }
        else
        {
            //Verifica la password dell'utente
            Map.Fad.Web.WSQuestionario.ValidaUtente(
                            password,
                            test.ValidaRispostaOnComplete,  //Complete event
                            OnTimeout                  //Timeout event
                            );
        }
    }


    this.ValidaRispostaOnComplete=function(result)
    {
        var idDomanda=document.getElementById('idDomanda').value;
        var idRisposta=document.getElementById('idRisposta').value;
        var idEdizione=document.getElementById('idEdizione').value;
        var passwordObj=document.getElementById('password');
        var password=passwordObj.value;
        
        if (result)
        {
            //Salva la risposta
            test.SaveRisposta(idDomanda, idRisposta, idEdizione, password);

            test.ResetHighlight();
            
            panel.innerHTML="";
        }
        else
        {
            alert('Password non valida');
        }

        return false;
    }

    this.ValidaPassword=function()
    {
        var password=document.getElementById('password').value;

        //Verifica la password dell'utente
        Map.Fad.Web.WSQuestionario.ValidaUtente(
                        password,
                        test.ValidaPasswordOnComplete,  //Complete event
                        OnTimeout                  //Timeout event
                        );
    }


    this.ValidaPasswordOnComplete=function(result)
    {        

        if (result)
        {
            var idDomanda=document.getElementById('idDomanda').value;
            var idEdizione=document.getElementById('idEdizione').value;
            var passwordObj=document.getElementById('password');
            var password=passwordObj.value;
            
            //Salva la presenza solo se l'utente ha inserito la password corretta
            test.SavePresenza(idDomanda, idEdizione, password);
        }
        else
        {
            panel.innerHTML="";
            //alert('Password non valida');
        }

        return false;
    }

    this.SaveRisposta=function(idDomanda, idRisposta, idEdizione, password)
    {
        //Salva la risposta
        Map.Fad.Web.WSQuestionario.SaveRisposta(this.id, idEdizione, idDomanda, idRisposta, password);

        panel.innerHTML="";

        return false;
    }
    
    this.SavePresenza=function(idDomanda, idEdizione, password)
    {
        //Salva la presenza dell'utente all'evento
        Map.Fad.Web.WSQuestionario.SavePresenza(this.id, idEdizione, idDomanda, password);

        panel.innerHTML="";

        return false;
    }

}

function OnTimeout(result)
{
    alert(result);
}

//Player events
function ScriptCommand(scType, scParam)
{
    //MapDebug(scType +'='+ scParam);
    
    if (scType=='QUESTION')
    {
       var codice=scParam;
       
       //Se esiste il questionario mostra la domanda 
       if (test.id!=0)
       {
         test.ShowDomanda(codice);       
       }
    }
    else if (scType=='END')
    {
       test.FineTrasmissione();
    }
}

function PlayStateChange(newState)
{
    var stateName;
    switch (newState)
    {
        case 0:
          stateName ="Undefined";
          break;
        case 1:
          stateName ="Stopped";
          break;
        case 2:
          stateName ="Paused";
          test.ClearDomanda();
          break;
        case 3:
          stateName ="Playing";
          break;
        case 4:
          stateName ="ScanForward";
          break;
        case 5:
          stateName ="ScanReverse";
          break;
        case 6:
          stateName ="Buffering";
          break;
        case 7:
          stateName ="Waiting";
          break;
        case 8:
          stateName ="MediaEnded";
          break;
        case 9:
          stateName ="Transitioning";
          break;
        case 10:
          stateName ="Ready";
          break;
        case 11:
          stateName ="Reconnecting";
          break;
    }
    //MapDebug("("+newState+") "+stateName);
    
    //Al termine della trasmissione mostra i risultati (se esiste il questionario)
    //if ((newState==1) && (test.id!=0))
    //{
    //  test.FineTrasmissione();
    //}
}

//Init Function

function StartVideo(playerId, panelId, testId, edizioneId)
{
  var object = document.getElementById(playerId);
  if (object == null)
  {
    alert('Invalid player id');
    return;
  }   
  
  SetPanel(panelId);

  test=new Test();
  test.id = parseInt(testId);
  test.idEdizione = parseInt(edizioneId);
  
  if(object.attachEvent)
  {
    object.attachEvent('ScriptCommand', ScriptCommand);
    object.attachEvent('PlayStateChange', PlayStateChange);
  }  
}


//Demo Function
var demoState = 0;

function StartDemo(playerId, panelId )
{
  var object = document.getElementById(playerId);
  if (object == null)
  {
    alert('Invalid player id');
    return;
  }   
  
  demoState = 0;
  SetPanel(panelId);
  
  setTimeout('ShowDemoResult()', 40000);
  if(object.attachEvent){
      object.attachEvent('ScriptCommand', ScriptCommandDemo);
      object.attachEvent('PlayStateChange', PlayStateChangeDemo);
  }
}

function ScriptCommandDemo(scType, scParam)
{
    if ((scType=='TEST') && (demoState == 0))
    {
       demoState = 10;
    }
}

function PlayStateChangeDemo(newState)
{
    var stateName;
    switch (newState)
    {
        case 0:
          stateName ="Undefined";
          break;
        case 1:
          stateName ="Stopped";
          break;
        case 2:
          stateName ="Paused";
          break;
        case 3:
          stateName ="Playing";
          break;
        case 4:
          stateName ="ScanForward";
          break;
        case 5:
          stateName ="ScanReverse";
          break;
        case 6:
          stateName ="Buffering";
          break;
        case 7:
          stateName ="Waiting";
          break;
        case 8:
          stateName ="MediaEnded";
          break;
        case 9:
          stateName ="Transitioning";
          break;
        case 10:
          stateName ="Ready";
          break;
        case 11:
          stateName ="Reconnecting";
          break;
    }
    
    //Al termine del filmato mostra il risultato del test sul sistema
    
    if (newState==1)
    {
        ShowDemoResult();
    }
}

function ShowDemoResult()
{
    if (demoState==0)
    {
        demoState = 90;
        //Mostra messaggio per test fallito   
        panel.style.display='none';
        panel=document.getElementById('Error');
        panel.style.display='block';
    }
    else if (demoState==10)
    {
        demoState = 90;
        //Mostra messaggio per test passato        
        panel.style.display='none';
        panel=document.getElementById('Successo');
        panel.style.display='block';
    }
    
    
}

function ShowAnswer(){
    var divs=document.getElementsByTagName('DIV');
    if(divs) for(var i=0;i<divs.length;i++){
        if(divs[i].className=='showHide'){
            divs[i].onclick=function(){
                for(var i2=0;i2<this.childNodes.length;i2++){
                    if(this.childNodes[i2].className=='domande'){
                        if((this.childNodes[i2].style.color=='rgb(255, 255, 255)')||(this.childNodes[i2].style.color=='rgb(255,255,255)')){
                            this.childNodes[i2].style.color='rgb(0, 0, 0)';
                        }    
                        else this.childNodes[i2].style.color='rgb(255, 255, 255)';
                        if((this.childNodes[i2].style.backgroundColor=='rgb(103, 149, 195)')||(this.childNodes[i2].style.backgroundColor=='rgb(103,149,195)')){
                            this.childNodes[i2].style.backgroundColor='rgb(238, 238, 238)'
                        }
                        else this.childNodes[i2].style.backgroundColor='rgb(103, 149, 195)';
                        if((this.childNodes[i2].style.backgroundImage=='url(../images/arrowCollapsed.gif)')||(this.childNodes[i2].style.backgroundImage=='')){
                            this.childNodes[i2].style.backgroundImage='url(../images/arrowExpanded.gif)';
                        }
                        else this.childNodes[i2].style.backgroundImage='url(../images/arrowCollapsed.gif)';
                    }    
                    if(this.childNodes[i2].className=='risposte') this.childNodes[i2].style.display=this.childNodes[i2].style.display=='block'?'none':'block';
                }
            }
        }
    }
}

// Apertura pop-up generica
// N.B. ritorna null se l'aperura viene bloccata dal browser
function popUp(url,name,param) {
  var popUp;

  popUp=window.open(url,name,param);
//Se l'apertura del pop up viene bloccata, esce
  if (popUp==null) 
  {
    return null;
  }
  else
  {
    popUp.focus();
    return popUp;
  }  
}


function OpenQuesiti(url, target)
{
  popUp(url, target, 'width=800,height=600,status=yes,location=no,toolbar=no,scrollbars=yes,resizable=yes');
  
  return false;
}

function OpenForum(url, target)
{
  popUp(url, target, 'width=800,height=600,status=yes,location=no,toolbar=no,scrollbars=yes,resizable=yes');
  
  return false;
}

function OpenCredits(url, target)
{
  popUp(url, target, 'width=370,height=150,scrollbars=no,resizable=no,status=no');
  
  return false;
}
