Utente:Codicorumus/Pagina principale/script opzioni.js

Da Wikinotizie, le notizie a contenuto aperto

Nota: dopo aver pubblicato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tieni premuto il tasto delle maiuscole Shift e fai clic su Ricarica, oppure premi Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premi Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer / Edge: tieni premuto il tasto Ctrl e fai clic su Aggiorna, oppure premi Ctrl-F5
  • Opera: premi Ctrl-F5.
$(function() {
  
  function onDivTitleClick() {

    var audioNoBoxHr = document.getElementById('audioNoBoxHr');
    var audioNoBoxDiv = document.getElementById('audioNoBoxDiv');
    var audioUl = document.getElementById('audioUl');
    var audioBoxTitolo = document.getElementById('audioBoxTitolo');
    var audioBoxContenuto = document.getElementById('audioBoxContenuto');
    var audioBoxContenutoTd = audioBoxContenuto.getElementsByTagName('td')[0];

    audioNoBoxHr.style.display = 'none';
    audioNoBoxDiv.style.display = 'none';
    audioBoxTitolo.style.display = 'table-row';
    audioBoxContenuto.style.display = 'table-row';

    audioBoxContenutoTd.appendChild(audioUl);

  }

  function onBoxTitleClick() {

    var audioNoBoxHr = document.getElementById('audioNoBoxHr');
    var audioNoBoxDiv = document.getElementById('audioNoBoxDiv');
    var audioUl = document.getElementById('audioUl');
    var audioBoxTitolo = document.getElementById('audioBoxTitolo');
    var audioBoxContenuto = document.getElementById('audioBoxContenuto');

    audioNoBoxHr.style.display = 'block';
    audioNoBoxDiv.style.display = 'block';
    audioBoxTitolo.style.display = 'none';
    audioBoxContenuto.style.display = 'none';

    audioNoBoxDiv.parentNode.insertBefore(audioUl, audioNoBoxDiv.nextSibling);

  }

  function init() {

    // get all TD (as) content box
    var tdList = jQuery('td[class*="MainPageBG"]').toArray();
    if (!tdList) return;

    var tdSecondoPiano = tdList[1];
    // get TR blocks
    var trBlocks = tdSecondoPiano.getElementsByTagName('tr');
    // identificazione dei TR con un ID
    for (var i = 0; i < trBlocks.length; i++) {
      trBlocks[i].id = 'trBlock-' + i;
      if (Math.floor(i/2) == i/2) {
        trBlocks[i].setAttribute('onclick', 'opzioni_home_onTitleClick(' + i + ');');
        trBlocks[i].style.cursor = 'pointer';
      }
    }

    var tdPrimoPiano = tdList[0];
    // get TR blocks
    trBlocks = tdPrimoPiano.getElementsByTagName('tr');

    var trEsclusive = trBlocks[3];
    var audioNoBoxHr = trEsclusive.getElementsByTagName('hr')[1];
    var audioNoBoxDiv = trEsclusive.getElementsByTagName('div')[4];
    var audioUl = trEsclusive.getElementsByTagName('ul')[1];
    var audioBoxTitolo = trBlocks[4];
    var audioBoxContenuto = trBlocks[5];

    // setIds
    trEsclusive.id = 'trEsclusive';
    audioNoBoxHr.id = 'audioNoBoxHr';
    audioNoBoxDiv.id = 'audioNoBoxDiv';
    audioUl.id = 'audioUl';
    audioBoxTitolo.id = 'audioBoxTitolo';
    audioBoxContenuto.id = 'audioBoxContenuto';

    // set pointer
    audioNoBoxDiv.style.cursor = 'pointer';
    audioBoxTitolo.style.cursor = 'pointer';

    // set listeners
    addClickHandler(audioNoBoxDiv, onDivTitleClick);
    addClickHandler(audioBoxTitolo, onBoxTitleClick);

  }

  init();

});

function opzioni_home_onTitleClick(clickedId) {

  function switchMargins() {

    var h2_0 = trList[0].getElementsByTagName('h2')[0];
    var h2_2 = trList[2].getElementsByTagName('h2')[0];

    h2_0.style.margin = '0.5em 0pt 0pt';
    h2_2.style.margin = '0pt';

  }

  var trList = jQuery('tr[id^="trBlock"]').toArray();

  var clickedPosition = -1;
  for (var i = 0; i < trList.length; i++) {
    if (trList[i].id == 'trBlock-' + clickedId) {
      clickedPosition = i;
    }
  }
  if (clickedPosition == -1) {
    return;
  }
  // effettua lo spostamento
  var parent = trList[0].parentNode;
  if (clickedPosition == 0) {
    // spostamento
    parent.appendChild(trList[0])
    parent.appendChild(trList[1])
    // correzione margini
    switchMargins();
  } else {
    var up2Sibling = trList[clickedPosition - 2];
    // spostamento
    parent.insertBefore(trList[clickedPosition], up2Sibling);
    parent.insertBefore(trList[clickedPosition + 1], up2Sibling);
    // correzione margini
    if (clickedPosition == 2) {
      switchMargins();
    }
  }

}