function loadImage(imageURL, callback) { var imageURL = proxify( imageURL ); window.gif = window.img = null if (imageURL.substr(-3) === "gif") { window.gif = GIF(imageURL); // gif.on("error", tryToLoadNextImage); // gif.on("rendered", trackLoadTime); gif.on("rendered", callback); return gif.render(); } else { window.img = new Image(); // img.addEventListener("error", tryToLoadNextImage); img.addEventListener("load", callback); img.crossOrigin = "anonymous"; return img.src = imageURL; } } function giveImage(t) { if (window.gif) { return gif.frames[gif.currentFrame(t)]; } else { return img; } } function proxify (url) { if (url.indexOf("http") == 0) return "/cgi-bin/proxy?" + url // .replace(/^https?:\/\//, ""); else return url } function filesize(n) { if (n < 1e3) return n + " bytes" if (n < 1e6) return decimalString(n/1e3) + " kb" if (n < 1e9) return decimalString(n/1e6) + " mb" return "WAY TOO BIG DUDE" } function decimalString(n){ var m = Math.floor(n); return m + "." + Math.round((n-m)*10) }