// -------------------------------------- // Index page // -------------------------------------- var scrollY = 0; var distance = 1; var speed = 35; // Scroll entire page for presentation purposes function autoScrollTo(el){ var currentY = window.pageYOffset; var targetY = document.getElementById(el).offsetTop; var bodyHeight = document.body.offsetHeight; var yPos = currentY + window.innerHeight; var animator = setTimeout('autoScrollTo(\'' +el+'\')', speed); document.onkeypress = function (e) { var e = e || window.event; var keyunicode = e.charCode || e.KeyCode if(keyunicode == 98) { clearTimeout(animator); } if(keyunicode == 115) { animator = setTimeout('autoScrollTo(\''+el+'\')', speed); } if(keyunicode == 114) { resetScroller('container');} }; if(yPos > bodyHeight) { clearTimeout(animator);} else { if(currentY < targetY-distance) { scrollY = currentY+distance; window.scroll(0,scrollY); } else { clearTimeout(animator);} } } var new_scrollY = 0; function resetScroller(el) { var currentY = window.pageYOffset; var targetY = document.getElementById(el).offsetTop; var animator = setTimeout('resetScroller(\''+el+'\')', speed); if(currentY > targetY) { new_scrollY = currentY - distance; window.scroll(0,new_scrollY); } else { clearTimeout(animator); } } document.onkeypress = function (e) { var e = e || window.event; var keyunicode2 = e.charCode || e.KeyCode if(keyunicode2 == 115) { autoScrollTo('end'); } }; // -------------------------------------- // Turing Machine page // -------------------------------------- // Function used to simulate turing machine computation. function Start() { var delay = 1000; setTimeout(function(){document.getElementById("p1").style.visibility = 'hidden';}, delay); setTimeout(function(){document.getElementById("p2").style.visibility = 'visible';}, delay); setTimeout(function(){ document.getElementById("p2").style.visibility = 'hidden' document.getElementById("p3").style.visibility = 'visible';}, delay + 2000); setTimeout(function(){ document.getElementById("p3").style.visibility = 'hidden' document.getElementById("p4").style.visibility = 'visible';}, delay + 3000 ); setTimeout(function(){ document.getElementById("d1").innerHTML = "1";}, delay + 4500); setTimeout(function(){ document.getElementById("p4").style.visibility = 'hidden' document.getElementById("p5").style.visibility = 'visible';}, delay + 6000); setTimeout(function(){ document.getElementById("p5").style.visibility = 'hidden' document.getElementById("p6").style.visibility = 'visible';}, delay +7000); setTimeout(function(){ document.getElementById("p6").style.visibility = 'hidden' document.getElementById("p7").style.visibility = 'visible' document.getElementById("d3").style.border = '1px solid black' document.getElementById("d3").style.visibility = 'visible';}, delay + 8500 ); setTimeout(function(){ document.getElementById("p7").style.visibility = 'hidden' document.getElementById("p6").style.visibility = 'visible' document.getElementById("d3").style.visibility = 'hidden';}, delay + 10000); setTimeout(function(){ document.getElementById("d2").innerHTML = "0";}, delay + 11000); } // resets state of tape after computation is done function rst() { document.getElementById("p1").style.visibility = 'visible'; document.getElementById("p2").style.visibility = 'hidden'; document.getElementById("p3").style.visibility = 'hidden'; document.getElementById("p4").style.visibility = 'hidden'; document.getElementById("d1").innerHTML = "+"; document.getElementById("p5").style.visibility = 'hidden'; document.getElementById("p6").style.visibility = 'hidden'; document.getElementById("p7").style.visibility = 'hidden'; document.getElementById("d2").innerHTML = "1"; document.getElementById("d3").style.visibility = "hidden"; } // -------------------------------------- // Bletchley Park page // -------------------------------------- var element; var title; var string1; var string2; function randomString(length, chars) { var result = ""; result = chars[Math.round(Math.random() * (chars.length - 1))]; return result; } function changeText(id1, id2, text1, text2) { document.getElementById(id2).textContent = text2; document.getElementById(id1).textContent = text1; } // returns i-th character of final string to be displayed function goodString(i) { var name = "Bletchley Park"; var title = "Alan Turing "; return [name[i], title[i]]; } // upon startup of page load random text instead of proper title function loadCipherText() { for(var i = 1; i < 15; i++) { string1 = randomString(1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); string2 = randomString(1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); element = "word" + i; title = "title" + i; changeText(element, title, string1, string2); } } var newmaxLoops = 15; var newcounter = 0; var newelement; var newtitle; var newstring1; var newstring2; var newi = 14; setTimeout(function() { (function newText() { if( newcounter++ >= newmaxLoops) return; setTimeout(function(){ newstring1 = randomString(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"); newstring2 = randomString(1,"ABCDEFGHIJKLMNOPQRSTUVWXYZ"); newelement = "word" + newi; newtitle = "title" + newi; changeText(newelement, newtitle, newstring1, newstring2); newi--; newText(); }, 150); })();}, 300); var finalmaxLoops = 15; var finalcounter = 0; var finalelement; var finaltitle; var finalstring1; var finalstring2; var finali = 1; var finale = 0; setTimeout(function() { (function finalText() { if( finalcounter++ >= finalmaxLoops) return; setTimeout(function(){ var texts = goodString(finale); finalstring1 = texts[0]; finalstring2 = texts[1]; finalelement = "word" + finali; finaltitle = "title" + finali; changeText(finalelement,finaltitle,finalstring1,finalstring2); finali++; finale++; finalText(); }, 200); })();}, 2700); // -------------------------------------- // Enigma page // -------------------------------------- var images = 1; var totimages = 2; var text1 = "3 rotori da inserire in Enigma"; var text2 = "Struttura interna del rotore"; function slide_enigma(x) { var Image = document.getElementById('rotors'); images += x; if (images > totimages){ images = 1;} else if(images == 0) { images = totimages;} if(images == 1) {var text = text1;} if(images == 2) {var text = text2;} Image.src= "../media/images/enigma/rotor" + images + ".jpg"; document.getElementById('rotori_text').textContent = text; } var text1 = "3 rotori da inserire in Enigma"; var text2 = "Struttura interna del rotore"; window.setInterval(function slide_enigmaA() { var Image = document.getElementById('rotors'); images += 1; if (images > totimages){ images = 1; } else if(images == 0) { images = totimages; } if(images == 1) {var text = text1;} if(images == 2) {var text = text2;} Image.src= "../media/images/enigma/rotor" + images + ".jpg"; document.getElementById('rotori_text').textContent = text; },15000);