var expandLink=document.getElementById('expandAll'); // FIXME: call to just read state and apply current expandLink.onclick=function() { var expand=false; //console.log('innerText', expandLink.innerText); if (expandLink.textContent==='Expand All Images') { // expand expandLink.textContent='Collapse All Images'; expand=true; } else { expandLink.textContent='Expand All Images'; } var imageLinks = document.getElementsByClassName('imgLink'); for (var i = 0; i < imageLinks.length; i++) { var link=imageLinks[i]; //console.log(link); var thumb = link.getElementsByTagName('img')[0]; thumb.style.display = expand?'none':''; // set none/clear none if (expand) { var expandedSrc = link.href; // If the thumb is the same image as the source, do nothing if (thumb.src === expandedSrc) { continue; } var expanded = link.getElementsByClassName('imgExpanded')[0]; // do we have expanded version? if (expanded) { expanded.style.display = ''; // clear none } else { expanded = document.createElement('img'); // generate element expanded.setAttribute('src', expandedSrc); expanded.setAttribute('class', 'imgExpanded'); link.appendChild(expanded); // add expanded element } } else { // collapse var elems=link.getElementsByClassName('imgExpanded'); if (elems.length) { elems[0].style.display = 'none'; } } } return false; }