var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); "use strict"; (function () { // VARIABLES var timeline = document.querySelector(".timeline ol"), elH = document.querySelectorAll(".timeline li > div"), arrows = document.querySelectorAll(".timeline .arrows .arrow"), arrowPrev = document.querySelector(".timeline .arrows .arrow__prev"), arrowNext = document.querySelector(".timeline .arrows .arrow__next"), firstItem = document.querySelector(".timeline li:first-child"), lastItem = document.querySelector(".timeline li:last-child"), xScrolling = 280, disabledClass = "disabled"; // START window.addEventListener("load", init); function init() { setEqualHeights(elH); animateTl(xScrolling, arrows, timeline); setSwipeFn(timeline, arrowPrev, arrowNext); setKeyboardFn(arrowPrev, arrowNext); } // SET EQUAL HEIGHTS function setEqualHeights(el) { var counter = 0; for (var i = 0; i < el.length; i++) { var singleHeight = el[i].offsetHeight; if (counter < singleHeight) { counter = singleHeight; } } for (var i = 0; i < el.length; i++) { el[i].style.height = counter + "px"; } } // CHECK IF AN ELEMENT IS IN VIEWPORT // http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport function isElementInViewport(el) { var rect = el.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth); } // SET STATE OF PREV/NEXT ARROWS function setBtnState(el) { var flag = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; if (flag) { el.classList.add(disabledClass); } else { if (el.classList.contains(disabledClass)) { el.classList.remove(disabledClass); } el.disabled = false; } } // ANIMATE TIMELINE function animateTl(scrolling, el, tl) { var counter = 0; for (var i = 0; i < el.length; i++) { el[i].addEventListener("click", function () { if (!arrowPrev.disabled) { arrowPrev.disabled = true; } if (!arrowNext.disabled) { arrowNext.disabled = true; } var sign = this.classList.contains("arrow__prev") ? "" : "-"; if (counter === 0) { tl.style.transform = "translateX(-" + scrolling + "px)"; } else { var tlStyle = getComputedStyle(tl); // add more browser prefixes if needed here var tlTransform = tlStyle.getPropertyValue("-webkit-transform") || tlStyle.getPropertyValue("transform"); var values = parseInt(tlTransform.split(",")[4]) + parseInt("" + sign + scrolling); tl.style.transform = "translateX(" + values + "px)"; } setTimeout(function () { isElementInViewport(firstItem) ? setBtnState(arrowPrev) : setBtnState(arrowPrev, false); isElementInViewport(lastItem) ? setBtnState(arrowNext) : setBtnState(arrowNext, false); }, 1100); counter++; }); } } // ADD SWIPE SUPPORT FOR TOUCH DEVICES function setSwipeFn(tl, prev, next) { var hammer = new Hammer(tl); hammer.on("swipeleft", function () { return next.click(); }); hammer.on("swiperight", function () { return prev.click(); }); } // ADD BASIC KEYBOARD FUNCTIONALITY function setKeyboardFn(prev, next) { document.addEventListener("keydown", function (e) { if (e.which === 37 || e.which === 39) { var timelineOfTop = timeline.offsetTop; var y = window.pageYOffset; if (timelineOfTop !== y) { window.scrollTo(0, timelineOfTop); } if (e.which === 37) { prev.click(); } else if (e.which === 39) { next.click(); } } }); } })(); } /* FILE ARCHIVED ON 22:00:24 Oct 06, 2017 AND RETRIEVED FROM THE INTERNET ARCHIVE ON 10:23:02 Mar 29, 2025. JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE. ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C. SECTION 108(a)(3)). */ /* playback timings (ms): captures_list: 0.672 exclusion.robots: 0.028 exclusion.robots.policy: 0.015 esindex: 0.013 cdx.remote: 11.726 LoadShardBlock: 100.252 (3) PetaboxLoader3.datanode: 1585.682 (4) load_resource: 1576.852 PetaboxLoader3.resolve: 63.258 */