// Classe domande, che gestisce la correlazione tra le domande e risposte
function domande( _selezionaDomanda, _selezionaSottoDomanda )
{
    this.aggiungiDomanda        = _aggiungiDomanda;
    this.aggiungiRisposta       = _aggiungiRisposta;
    this.rispostaByDomanda      = _rispostaByDomanda;
    this.aggiungiSottoDomanda   = _aggiungiSottoDomanda;
    this.selezionaDomanda       = _selezionaDomanda;
    this.selezionaSottoDomanda  = _selezionaSottoDomanda;
    this.domandeCollegate       = Array();
}





// Aggiunge una domanda da gestire
function _aggiungiDomanda( oDomanda )
{
    // Crea un vettore di domande
    this.domandeCollegate[this.domandeCollegate.length] = oDomanda;
    
    // Crea una funzione anonima, per invocare l'event handler con parametri
    addEvent(   oDomanda, 
                "click",
                function(e) {
                    _clickDomanda( oDomanda.id );
                    this.selezionaDomanda( oDomanda.id );
                },
                false );
    oDomanda.domande = this;
}

// Aggiunge una risposta da gestire
function _aggiungiRisposta( sIdDomanda, oRisposta )
{
    this[sIdDomanda] = oRisposta;
}

// Recupera la risposta da gestire
function _rispostaByDomanda( sIdDomanda )
{
    return this[sIdDomanda];
}

// Aggiunge una sottodomanda da gestire
function _aggiungiSottoDomanda( oDomanda )
{
    // Crea una funzione anonima, per invocare l'event handler con parametri
    addEvent(   oDomanda, 
                "click", 
                function (e) {
                    _clickSottoDomanda( oDomanda.id );
                    this.selezionaSottoDomanda( oDomanda.id );
                }, 
                false );
    oDomanda.domande = this;
}







// Reagisce all'evento di click su una domanda
function _clickDomanda( sIdDomanda )
{
    // Recupera il div chiamante
    if (!sIdDomanda) return;
    var oDivDomanda = document.getElementById( sIdDomanda );
    if (!oDivDomanda) return;

    // Se sono in editing dei contenuti 
    if ( gbEditDomande && ( oDivDomanda.sottodomande == 0 ))
    	window.open( oDivDomanda.url, "_blank", "height=200,left=200,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no,top=200,width=400" );
    
    var oDivRisposta = oDivDomanda.domande.rispostaByDomanda(oDivDomanda.id);
   
   if (!gbEditDomande){
        //MODALITA' CON REDIREZIONE SU UN'ALTRA PAGINA 
        var sDivRisposta = new String(oDivRisposta.innerHTML);
        var iLinkBegins = sDivRisposta.indexOf("LINK=");
        if(parseInt(iLinkBegins)>=0){
            var iBegEllips = sDivRisposta.indexOf('"',parseInt(iLinkBegins)+1);
            var iEndEllips = sDivRisposta.indexOf('"',parseInt(iBegEllips)+1);
           if( iBegEllips>=0 && iEndEllips>=0){
                var sPath = sDivRisposta.substring(parseInt(iBegEllips)+1,iEndEllips);
                var sPathName = new String(document.location.pathname);
                var iBegFileName = sPathName.lastIndexOf("/");
                if(iBegFileName<=0)
                    {iBegFileName=sPathName.lastIndexOf("\\");}
                    if(iBegFileName>=0){
                        var sApplicationName = sPathName.substring(0,parseInt(iBegFileName)+1);
                        document.location.href = document.location.protocol +   sApplicationName + sPath;
                    }
                }
        }
        //FINE REDIREZIONE
    }
    
    if (!oDivRisposta) return;
    
    // Nasconde tutte le altre risposte 
    var oDivRisposte = oDivRisposta.parentNode;
    for ( var iPos=0; oDivRisposte.childNodes && (iPos < oDivRisposte.childNodes.length); iPos++ )
    {
        var oChildNode = oDivRisposte.childNodes[iPos];
        if ( oChildNode && oChildNode.style )
            oChildNode.style.display = "none";
    }
    
    oDivRisposta.style.display = "block";
}

// Reagisce all'evento di click su una sottodomanda
function _clickSottoDomanda( sIdDomanda )
{
    // Recupera il div chiamante
    if (!sIdDomanda) return;
    var oDivDomanda = document.getElementById( sIdDomanda );
    if (!oDivDomanda) return;
    
    // Se sono in editing dei contenuti 
    if ( gbEditDomande )
	window.open( oDivDomanda.url, "_blank", "height=200,left=200,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,titlebar=no,toolbar=no,top=200,width=400" );


    //alert( oDivDomanda.id );
    var oDivRisposta = oDivDomanda.domande.rispostaByDomanda(oDivDomanda.id);
    if (!oDivRisposta) return;
    
    // Inverte lo stile della risposta
    if ( oDivRisposta.style && (oDivRisposta.style.display != "none") )
        oDivRisposta.style.display = "none";
    else
        oDivRisposta.style.display = "block";
}

    
    
    
    

// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
function addEvent(elm, evType, fn, useCapture)
{
  if (elm.addEventListener) { 
    elm.addEventListener(evType, fn, useCapture); 
    return true; 
  } else if (elm.attachEvent) { 
    var r = elm.attachEvent('on' + evType, fn); 
    return r; 
  } else {
    elm['on' + evType] = fn;
  }
}


