if(typeof __wm==="undefined") __wm={}; (function(){ var prettyMonths = [ "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; var $D=document,$=function(n){return document.getElementById(n)}; function formatNumber(n) { return (''+n).replace(/\B(?=(\d{3})+$)/g, ','); } var ajax=__wm.ajax=function ajax(method, url, callback) { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function() { if (this.readyState == 4) { callback(xmlhttp); } }; xmlhttp.open(method, url, true); xmlhttp.send(); } __wm.h=function hideToolbar(ev) { $("wm-ipp").style.display="none"; ev.stopPropagation(); } var $exbtn, $capinfo; __wm.bt=function bootstrap(imgWidth,imgHeight,yearImgWidth,monthImgWidth, coll,wbCurrentUrl,captureDate,firstYear) { var wbPrefix='/'+(coll||'web')+'/'; captureDate = captureDate.split('-'); var displayDay = captureDate[2]; var displayMonth = captureDate[1]; var displayYear = captureDate[0]; var trackerVal,curYear = -1,curMonth = -1; var yearTracker,monthTracker; var $spk=$('wm-ipp-sparkline') var $expand=$('wm-expand'); $exbtn=$expand.children[0]; $capinfo=$('wm-capinfo'); function showTrackers(event) { var val = event.type=="mouseenter"?1:0; if (val===trackerVal) return; var $ipp=$("wm-ipp"); var $y=$("displayYearEl"),$m=$("displayMonthEl"),$d=$("displayDayEl"); if (val) { $ipp.className="hi"; } else { $ipp.className=""; $y.innerHTML=displayYear;$m.innerHTML=prettyMonths[displayMonth-1];$d.innerHTML=displayDay; } yearTracker.style.display=val?"inline":"none"; monthTracker.style.display=val?"inline":"none"; trackerVal = val; } function getElementX2(el) { var de = $D.documentElement; var box = (typeof el.getBoundingClientRect!=='undefied')? el.getBoundingClientRect():{top:0,left:0}; return box.left + (window.pageXOffset||de.scrollLeft)-(de.clientLeft||0); } function navCaptures(captures) { var $e = $("wm-nav-captures"); var count = 0; var years = captures.years; var first_ts = captures.first_ts, last_ts = captures.last_ts; for (var j = 0; j < years.length; j++) { var months = years[j][1]; for (var i = 0; i < months.length; i++) { count += months[i]; } } var html = '' + formatNumber(count) + ' ' + (count > 1 ? "captures" : "capture") + ''; var timespan = __wbTs.format(first_ts, '%d %b %Y'); if (last_ts != first_ts) { timespan += ' - ' + __wbTs.format(last_ts, '%d %b %Y'); } html += '
' + timespan + '
'; $e.innerHTML = html; } function trackMouseMove(event) { //var element = event.target; var element = $spk; var eventX = getEventX(event); var elementX = getElementX2(element); var xOff = Math.min(Math.max(0, eventX - elementX),imgWidth); var monthOff = xOff % yearImgWidth; var year = Math.floor(xOff / yearImgWidth); var monthOfYear = Math.min(11,Math.floor(monthOff / monthImgWidth)); // 1 extra border pixel at the left edge of the year: var month = (year * 12) + monthOfYear; var day = monthOff % 2==1?15:1; var dateString = zeroPad(year + firstYear) + zeroPad(monthOfYear+1,2) + zeroPad(day,2) + "000000"; $("displayYearEl").innerHTML=year+firstYear; $("displayMonthEl").innerHTML=prettyMonths[monthOfYear]; // looks too jarring when it changes.. //$("displayDayEl").innerHTML=zeroPad(day,2); var url = wbPrefix + dateString + '/' + wbCurrentUrl; $("wm-graph-anchor").href=url; if(curYear != year) { var yrOff = year * yearImgWidth; yearTracker.style.left = yrOff + "px"; curYear = year; } if(curMonth != month) { var mtOff = year + (month * monthImgWidth) + 1; monthTracker.style.left = mtOff + "px"; curMonth = month; } } function disclaimElement(element) { if (window.top == window.self) { element.style.display = "block"; $D.body.insertBefore(element, $D.body.firstChild); } } yearTracker=$D.createElement('div'); yearTracker.className='yt'; with(yearTracker.style){ display='none';width=yearImgWidth+"px";height=imgHeight+"px"; } monthTracker=$D.createElement('div'); monthTracker.className='mt'; with(monthTracker.style){ display='none';width=monthImgWidth+"px";height=imgHeight+"px"; } $spk.appendChild(yearTracker); $spk.appendChild(monthTracker); var $cv=$('wm-sparkline-canvas'); $spk.onmouseenter=showTrackers; $spk.onmouseleave=showTrackers; $spk.onmousemove=trackMouseMove; var $ipp=$("wm-ipp"); $ipp&&disclaimElement($ipp); var testCanvas = document.createElement('canvas'); if(!!(testCanvas.getContext && testCanvas.getContext('2d'))) { var sparkline_url = "/__wb/sparkline?output=json&url=" + encodeURIComponent(wbCurrentUrl) + (coll && "&collection=" + coll || ''); ajax("GET", sparkline_url, function(response) { if(response.status == 200) { var capnav=JSON.parse(response.responseText); var yearsobj = capnav.years; var ykeys = Object.getOwnPropertyNames(yearsobj); var years = (capnav.years = []); for (var i = 0; i < ykeys.length; i++) { var y = ykeys[i]; if (yearsobj[y]) { years.push([y, yearsobj[y]]); } } navCaptures(capnav); sparkline(capnav,imgWidth,imgHeight,'wm-sparkline-canvas', firstYear, displayYear, displayMonth); } }); } else { var sparklineImg = new Image(); sparklineImg.src = "/__wb/sparkline?url=" + encodeURIComponent(wbCurrentUrl) + "&width=" + imgWidth + "&height=" + imgHeight + "&selected_year=" + displayYear + "&selected_month=" + displayMonth + (coll && "&collection=" + coll || ''); sparklineImg.alt= "sparkline"; sparklineImg.width=imgWidth; sparklineImg.height=imgHeight; sparklineImg.id="sparklineImgId"; sparklineImg.border="0"; $cv.parentNode.replaceChild(sparklineImg, $cv); } function process_autocomplete(data) { var out = [] var len = data.length; for(var i=0; i0) { var output = process_autocomplete(data.hosts); suggest(output); } else if (typeof data.isUrl!=='undefined' && data.isUrl===true && typeof data.excluded==='undefined') { suggest([query]); } else { ajax("GET", '/__wb/search/anchor?q='+encodeURIComponent(query), function(data) { var data = JSON.parse(data.response); if (typeof data!=='undefined' && data.length>0) { var output = process_autocomplete(data.slice(0,5)); suggest(output); } }); } }); }, onSelect: function(e, term, item) { $("wmtb").submit(); } }); $("wmtb").onsubmit = function(e) { var query = $("wmtbURL").value; // if textbox value is not a URL, redirect to search if (!(query.indexOf('http://') === 0 || query.indexOf('https://') === 0 || query.match(/[\w\.]{2,256}\.[a-z]{2,4}/gi))) { document.location.href="/web/*/" + $("wmtbURL").value; e.preventDefault(); return false; } }; } __wm.ex=function expand(ev) { ev.stopPropagation(); var c=$exbtn.className; if (c.match(/down/)) { // closed $exbtn.className=c.replace(/down/,'up'); $capinfo.style.display='block'; } else { $exbtn.className=c.replace(/up/,'down'); $capinfo.style.display='none'; } } })();