﻿// JScript File

var lista_serie = "utile_esercizio";
var lista_legenda = "Utile esercizio";

// Torna la lista delle voci selezionate
function lista_voci_checked(TreeView, contentSerie, contentLegend) 
{ 
  contentLegend.value = "";
  contentSerie.value = "";
  for (cont = 0; cont < TreeView.ItemStorageArray.length; cont++){
     node = TreeView.ItemStorageArray[cont];
     if (node.length >= 26){ // Se è lungo più di 26 si tratta di una foglia
       if (node[26] == "1"){    // Il 26 ci dice se è checked
         contentSerie.value == "" ? contentSerie.value += node[4] : contentSerie.value += "," + node[4];   // Il 4 contiene il value
         contentLegend.value == "" ? contentLegend.value += node[3] : contentLegend.value += "," + node[3];   // Il 3 contiene la descrizione
       }
     }
  }
}

function lista_anni_checked(contentAnni){
  contentAnni.value = "";
  all_check = document.getElementsByTagName("input");
  for (cont = 0; cont < all_check.length; cont++)
  {
    if (all_check[cont].id.substring(0, 6) == "cbAnno" && all_check[cont].checked)
    {
      if (contentAnni.value === "")
        contentAnni.value = all_check[cont].id.substring(6, 12);
      else
        contentAnni.value += "," + all_check[cont].id.substring(6, 12);
    }
  }
}

function ClickYear(sender){
   var framesList = document.getElementsByTagName("iframe");
   frame = framesList[0];
   if (frame != null){
     doc = frame.contentWindow.document;
     serie = doc.getElementById("paramSerie"); // input nel quale mettiamo la lista delle serie
     legend = doc.getElementById("paramLegend"); // input nel quale mettiamo la lista delle serie     
     anni = doc.getElementById("paramAnni");
     if (serie  != null){
        //lista_voci_checked(TreeView1, serie, legend);
        lista_anni_checked(anni);
        serie.value = lista_serie;
        legend.value = lista_legenda;        
        form = doc.getElementById("formbar");         // form del chart
        form.submit();
     }     
   }  
   else{ // Annulla il click: il frame ancora non si è¨ ricaricato
     if (sender != null){
       sender.Checked = !sender.Checked;
     }
   }
}


function openchart(TreeView, sender)
{               
   var framesList = document.getElementsByTagName("iframe");
   frame = framesList[0];
   if (frame != null){
     doc = frame.contentWindow.document;
     serie = doc.getElementById("paramSerie"); // input nel quale mettiamo la lista delle serie
     legend = doc.getElementById("paramLegend"); // input nel quale mettiamo la lista delle serie     
     anni = doc.getElementById("paramAnni");     
     if (serie  != null){
        lista_voci_checked(TreeView, serie, legend);
        lista_anni_checked(anni);        
        form = doc.getElementById("formbar");         // form del chart
        form.submit();
     }
     else{ // Annulla il click: il frame ancora non si e' ricaricato
       if (sender != null){
          sender.Checked = !sender.Checked;
          a_checkbox = document.getElementsByName("checker_" + sender.PostBackID);
          if (a_checkbox[0] != null)
          {
            a_checkbox[0].checked = sender.Checked;
          }
         }
       }
    }  
    else{ // Annulla il click: il frame ancora non si e' ricaricato
      if (sender != null){
        sender.Checked = !sender.Checked;
      }
    }
  } 



function newOpenChart(sender)
{
   var framesList = document.getElementsByTagName("iframe");
   /* Attenzione, se manca l'iframe oppure ne viene aggiunto un altro, potrebbe non funzionare  */
   /* La sintassi migliore sarebbe trappare tutta la funzione e poi cercare l'iframe dall'id */
   frame = framesList[0];
   if (frame != null){
     doc = frame.contentWindow.document;
     serie = doc.getElementById("paramSerie"); // input nel quale mettiamo la lista delle serie
     legend = doc.getElementById("paramLegend"); // input nel quale mettiamo la lista delle serie     
     anni = doc.getElementById("paramAnni");     
     if (serie  != null){
        serie.value = lista_serie;
        legend.value = lista_legenda;
        lista_anni_checked(anni);
        form = doc.getElementById("formbar");         // form del chart
        form.submit();
     }
     else{ // Annulla il click: il frame ancora non si è ricaricato
       if (sender != null){
          sender.Checked = !sender.Checked;
          a_checkbox = document.getElementsByName("checker_" + sender.PostBackID);
          if (a_checkbox[0] != null)
          {
            a_checkbox[0].checked = sender.Checked;
          }
         }
       }
    }  
    else{ // Annulla il click: il frame ancora non si è ricaricato
      if (sender != null){
        sender.Checked = !sender.Checked;
      }
    }
}

// Poiché stiamo lavorando su un albero utilizziamo una funzione RICORSIVA
function ListaSerie(node)
{ 
  if (typeof(node.Nodes(0).length) == "undefined") // componentArt 2006
  {
    for (var cont = 0; cont < node.get_nodes().get_length(); cont++)
    {
      subNode = node.get_nodes().getNode(cont);
      if (subNode.get_nodes().get_length() > 0) // Si tratta di un ramo
        ListaSerie(subNode); // RICORSIONE ??? ma non si dice ricorrenza?
      else if (subNode.Checked) // Si tratta di una foglia ed e' selezionata
      {
        lista_serie == "" ? lista_serie = subNode.ID : lista_serie += ","  + subNode.ID;             // Aggiungiamo l'ID della foglia alla lista
        lista_legenda == "" ? lista_legenda = subNode.Text : lista_legenda += ","  + subNode.Text;   // Aggiungiamo il nome della foglia alla lista          
      }
    }
  }
  else // compatibile con la versione precedente ComponentArt 3.0
  {
    for (var cont = 0; cont < node.Nodes(0).length; cont++)
    {
      subNode = node.Nodes(0)[cont];
      if (subNode.Nodes(0).length > 0) // Si tratta di un ramo
      {
        ListaSerie(subNode); // RICORSIONE ??? ma non si dice ricorrenza?
      }
      else // Si tratta di una foglia
      {
        if (subNode.Checked) 
        {
            lista_serie == "" ? lista_serie = subNode.ID : lista_serie += ","  + subNode.ID;             // Aggiungiamo l'ID della foglia alla lista
            lista_legenda == "" ? lista_legenda = subNode.Text : lista_legenda += ","  + subNode.Text;   // Aggiungiamo il nome della foglia alla lista          
        }
      }
    }
  }
  
}


// Obiettivo prendere tutte le voci della sezione dell'ultimo nodo selezionato
// o dell'ultimo nodo che è stato aperto
// Una sezione è identificata da ogni nodo al primo livello
function NodeCheckChanged(node)
{ 
  lista_serie = "";
  lista_legenda = "";
  section = node;
  while (section.ParentNode != null) 
    section = section.ParentNode; // Questo nodo identifica la sezione
  ListaSerie(section);
  newOpenChart(node);
  //openchart(node.ParentTreeView, node); 
}
