//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;
    
  var listaDomains = new Array();
  listaDomains.push(location.hostname);
  listaDomains.push("portale");
  listaDomains.push("www.unimib.it");
  listaDomains.push("www.test.unimib.it");
  listaDomains.push("www.shinystat.it");
  listaDomains.push("s1.shinystat.com");
  
  
  //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

    //var condition1 = true;
    //var condition2 = true;
    var isInternal = false;
    for(d=0;d<listaDomains.length;d++){
        var hostname = "http://" + listaDomains[d];
        var hostnameHTTPS = "https://" + listaDomains[d];
                
        var condition1 = href.substring(0,hostname.length)==hostname;
        var condition2 = href.substring(0,hostnameHTTPS.length)==hostnameHTTPS;
        
        isInternal = condition1 || condition2;
        
        if(isInternal){
        break;
        }
     }//   
        //if(!((href.substring(0,hostname.length)==hostname)||(href.substring(0,hostnameHTTPS.length)==hostnameHTTPS))&& !(href.substring(0,10)=='javascript') && !(href=="")){
        if(!isInternal && !(href.substring(0,10)=='javascript') && !(href.substring(0,7)=='mailto:')&& !(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);
  }
}
