Skip to content

Instantly share code, notes, and snippets.

@xMAC94x
Last active August 29, 2015 14:14
Show Gist options
  • Save xMAC94x/1ae81c12ea978619954f to your computer and use it in GitHub Desktop.
Save xMAC94x/1ae81c12ea978619954f to your computer and use it in GitHub Desktop.
a Greasemonky script that shows how much u scrolled on 9gag
// ==UserScript==
// @name 9gagScroll-O-Meter
// @namespace xMAC94x
// @include http://9gag.com/
// @version 1
// @grant none
// ==/UserScript==
// i am not an JavaScript expert, so this is just some aweful code.
// dont be hard to me. Be happy that the code is working :)
// thanks to post http://9gag.com/gag/aObqqrD
var scrolledPixel = 0;
var gagmode = 0;
var lastscrop = window.pageYOffset;
var pixelperinch = 96;
function pixels_to_si(apixel) {
var aamount = apixel / pixelperinch * 2.54;
var aunit = "cm";
if (aamount > 120) {
aamount = aamount / 100;
aunit = "m";
if (aamount > 1200) {
aamount = aamount / 1000;
aunit = "km";
}
}
return {
amount: aamount,
unit: aunit
};
}
function pixels_to_iu(apixel) {
var aamount = apixel / pixelperinch;
var aunit = "inch";
if (aamount > 15) {
aamount = aamount / 12;
aunit = "feet";
if (aamount > 4) {
aamount = aamount / 3;
aunit = "yard";
if (aamount > 1500) {
aamount = aamount / 1760;
aunit = "miles";
}
}
}
return {
amount: aamount,
unit: aunit
};
}
function pixels_to_9gag(apixel) {
var bannanasize = 14; // official min bannana Size in EU ;)
var aamount = apixel / pixelperinch * 2.54 / bannanasize;
var aunit = "Bananas";
if (aamount > 1200) {
aamount = aamount / 1000;
aunit = "k Banana";
if (aamount > 1200) {
aamount = aamount / 1000;
aunit = "kk Banana";
if (aamount > 1200) {
aamount = aamount / 1000;
aunit = "kkk Banana";
}
}
}
return {
amount: aamount,
unit: aunit
};
}
function createCookie(name, value, days) {
var expires = '';
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
expires = '; expires=' + date.toGMTString();
}
else {expires = '';}
document.cookie = name + '=' + value + expires + '; path=/';
}
function readCookie(name) {
var nameEQ = name + '=';
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
function eraseCookie(name) {
createCookie(name, '', - 1);
}
function gagShow() {
var r = null;
switch (gagmode) {
case 0:
r = pixels_to_si(scrolledPixel);
break;
case 1:
r = pixels_to_iu(scrolledPixel);
break;
case 2:
r = pixels_to_9gag(scrolledPixel);
break;
}
var astr = (r.amount).toFixed(1) + " " + r.unit;
document.title = '[' + astr + '] 9GAG';
iDiv2.innerHTML = astr;
}
function gagDoScroll() {
var scrolldiff = window.pageYOffset - lastscrop;
scrolldiff = Math.abs(scrolldiff);
lastscrop = window.pageYOffset;
scrolledPixel = scrolledPixel + scrolldiff;
gagShow();
gagSave();
}
function gagSave() {
createCookie('scrolledPixel_amount', scrolledPixel, 370);
}
function gagLoad() {
scrolledPixel = 0.0;
scrolledPixel = parseInt(readCookie('scrolledPixel_amount'),10);
if (isNaN(scrolledPixel) || (scrolledPixel > 100000000000)) {
scrolledPixel = 0.0;
}
}
function gagModeChange() {
gagmode = gagmode + 1;
if (gagmode > 2) {
gagmode = 0;
}
gagShow();
}
function gaghandleVisibilityChange() {
// ohhh yeah, sync between multiple tabs, cool huuu ?
if (document['hidden']) {
gagSave();
} else {
gagLoad();
gagShow();
}
}
var abox = document.getElementById("top-nav").children[0];
var iDiv = document.createElement('div');
var iDiv2 = document.createElement('h2');
iDiv.className = "headbar-items";
iDiv.style.marginRight = "20px";
iDiv.onclick = gagModeChange;
iDiv.titel = "click to change unit";
iDiv2.innerHTML = "Hello";
iDiv.insertBefore(iDiv2,null);
abox.insertBefore(iDiv,abox.children[0]);
document.addEventListener("visibilitychange", gaghandleVisibilityChange, false);
window.onbeforeunload = gagSave;
window.onscroll = gagDoScroll;
gagLoad();
gagShow();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment