//Questa funzione si occupa di analizzare i link della pagina e introdurre le azioni javascript per aprire in un'altra finestra:
// - Link Esterni
// - Allegati con estensione presente nella variabile fileInAltraFinestra

function aggiornaLinkEsterniEdAllegati(iconaDocumento,iconaLinkEsterno){
  //Recupero tutti i link della pagina
  var linkPagina = document.getElementsByTagName("a");
  var href;
  
  //Elenco dei file da aprire in un'altra finestra
  var fileInAltraFinestra = new Array(".txt", ".pdf", ".doc", ".xls", ".ppt", ".odt", ".ods");
  
  //Creo le immagini da visualizzare all'interno dei link
  var immagineLinkEsterno;
  var immagineAllegato;
  //Ricavo l'hostname corrente per riconoscere i link esterni
  var hostname = "http://" + location.hostname;
  var hostnameHTTPS = "https://" + location.hostname;
  //Ciclo su tutti i link
  for(i=0;i<linkPagina.length;i++){
    href = linkPagina[i].href;
    //Se l'href dei link non inizia con l'hostname corrente (verifica su HTTP e HTTPS), non e' una chiamata javascript e non e' nullo allora e' un link esterno
    if(!((href.substring(0,hostname.length)==hostname)||(href.substring(0,hostnameHTTPS.length)==hostnameHTTPS))&& !(href.substring(0,10)=='javascript') && !(href=="")){
      var aggiorna = document.getElementsByTagName("a")[i];
      //Se il link ha gia' assegnato un'azione javascrip non faccio niente
      if(!aggiorna.onclick && !aggiorna.onkeypress){
          aggiorna.onclick = function(){caricaPagina(this.href, '_blank'); return false;};
          aggiorna.onkeypress = function(){caricaPagina(this.href, '_blank'); return false;};
          if(iconaLinkEsterno!=null && iconaLinkEsterno!=""){
            immagineLinkEsterno = document.createElement("img");
            immagineLinkEsterno.src=iconaLinkEsterno;
            immagineLinkEsterno.alt="Immagine Link Esterno";
            immagineLinkEsterno.width="10";
            immagineLinkEsterno.height="10";
            aggiorna.innerHTML+="&nbsp;";
            //Inserisco l'immagine per indicare che si tratta di un link esterno
            //aggiorna.parentNode.insertBefore(immagineLinkEsterno, aggiorna);
            insertAfter(aggiorna.parentNode,immagineLinkEsterno,aggiorna)
          }
       }
      //Altrimenti verifico se è un allegato 
    }else{
        var aggiorna = document.getElementsByTagName("a")[i];
        //Se il link ha gia' assegnato un'azione javascrip non faccio niente
        if(!aggiorna.onclick && !aggiorna.onkeypress){
            var trovato = false;
            var j=0;
            while(j<fileInAltraFinestra.length && !trovato){
                if(href.indexOf(fileInAltraFinestra[j])!=-1){
                  aggiorna.onclick = function(){caricaPagina(this.href, '_blank'); return false;};
                  aggiorna.onkeypress = function(){caricaPagina(this.href, '_blank'); return false;};
                  if(iconaDocumento!=null && iconaDocumento!=""){
                    immagineAllegato = document.createElement("img");
                    immagineAllegato.src=iconaDocumento;
                    immagineAllegato.alt="Immagine Allegato";
                    //Inserisco l'immagine per indicare che si tratta di un documento
                    //aggiorna.parentNode.insertBefore(immagineAllegato, aggiorna);
                    insertAfter(aggiorna.parentNode,immagineAllegato,aggiorna)
                  }
                  trovato=true;
                }
              j++;
            }
        }
    }
  }
};

function insertAfter(parent, node, referenceNode) {
  if(referenceNode.nextSibling){
      parent.insertBefore(node, referenceNode.nextSibling);
  }else{
      parent.appendChild(node);
  }
}
