Difference between revisions of "User:Svip/monobook.js"

From The Infosphere, the Futurama Wiki
Jump to navigation Jump to search
m
m (BRAINS)
Line 48: Line 48:
   };
   };
   request.send(null);
   request.send(null);
}
/* Brain cursor chaser, version [0.0.4]
Originally from: Splarka
Notes:
* Full of constants that can be tweaked.
* Doesn't /have/ to be brains, but that was the design.
* Movement is random, a smoother circular movement system might be cooler.
*/
var ismsie = (navigator.appName.toLowerCase().indexOf('internet explorer') != -1);
var scrW, scrH, mouseX, mouseY, brainX = [0], brainY = [0], brainTimer;
var brainR = 'http://img505.imageshack.us/img505/4064/brainr.png';
var brainL = 'http://img505.imageshack.us/img505/7910/brainl.png';
function initBrains() {
  var docobj = document.getElementById('globalWrapper') || document.body;
  appendCSS('.brain {position:absolute;z-index:3;}');
  for(var i=0;i<5;i++) {
    var img = document.createElement('img');
    img.src = 'file:///c:/goldrush/js/wiki/brain-r.png';
    img.id = 'brain-' + i;
    brainX[i] = rand(10,150);
    brainY[i] = rand(10,150);
    img.style.left = (brainX[i] - 24) + 'px';
    img.style.top = (brainY[i] - 20) + 'px';
    img.style.zIndex = rand(2,4);
    img.className = 'brain';
    docobj.appendChild(img);
  }
  screenResizeBrains();
  if(!ismsie) document.captureEvents(Event.MOUSEMOVE)
  addHandler(document,'mousemove',mousemoveBrains);
  addHandler(window,'resize',screenResizeBrains);
  brainTimer = setTimeout('moveBrains()',1000);
}
addOnloadHook(initBrains);
function moveBrains() {
  try {
    if(brainTimer != null) {
      clearTimeout(brainTimer);
      brainTimer = null;
    }
  } catch (e) {
    return;
  }
  if(!mouseX || !mouseY) return
  mx = mouseX;
  my = mouseY;
  var brains = getElementsByClassName(document.body,'img','brain');
  for(var i=0;i<brains.length;i++) {
    var b = brains[i], bx = brainX[i], by = brainY[i];
    var d = Math.sqrt(((bx - mx) * (bx - mx)) + ((by - my) * (by - my))); //distance
    var dr = Math.abs(bx - mx) / Math.abs(by - my), dx = 0, dy = 0; //delta ratio, deltaX,Y
    if(dr > 1) {
      dr = 1 / parseFloat(dr);
      dx = (1 - dr / 2);
      dy = dr / 2;
    } else {
      dx = dr / 2;
      dy = (1 - dr / 2);
    }
    if(bx > mx) {
      b.src = brainL;
      dx = -dx;
    } else {
      b.src = brainR;
    }
    if(by > my) dy = -dy
    brainX[i] += dx*15 + rand(-8,8);
    brainY[i] += dy*15 + rand(-8,8);
    b.style.left = (brainX[i] - 24) + 'px';
    b.style.top = (brainY[i] - 20) + 'px';
  }
  brainTimer = setTimeout('moveBrains()',100);
}
window.onresize = screenResizeBrains;
function mousemoveBrains(e) {
  try {
    var debug = document.getElementById('debug');
    if(ismsie) {
      var mx = event.clientX + document.body.scrollLeft;
      var my = event.clientY + document.body.scrollTop;
    } else {
      var mx = e.pageX;
      var my = e.pageY;
    }
    if (mx < 0) mx = 0
    if (my < 0) my = 0
    mouseX = mx;
    mouseY = my;
    if(brainTimer == null) brainTimer = setTimeout('moveBrains()',100)
  } catch (e) {
    return;
  }
}
function screenResizeBrains() {
  var docElement = (document.compatMode=='CSS1Compat') ? document.documentElement : document.body
  scrW = docElement.clientWidth;
  scrH = docElement.clientHeight;
}
function rand(n,z) {
  var s = (!z) ? 0 : z
  return Math.floor(Math.random() * (n - s) + s);
}
}

Revision as of 15:27, 16 July 2009

var barWidth = 200;
var topAmount = 500;
var currentAmount = 0;

function updateDonationNotice() {
  if(!document.getElementById("donation-progress-number"))
    return;
  getDonation();
}

addOnloadHook(updateDonationNotice);

function getDonation() {
  var url = "/api.php?action=query&meta=allmessages&ammessages=donation-amount&amlang=en&format=xml";
  ajax(url, getDonationEnd, []);
}

function getDonationEnd(xml, data) {
  var doc = xml.documentElement;
  var currentAmount = parseInt(doc.getElementsByTagName("message")[0].firstChild.data);
  var nowWidth = (currentAmount/topAmount)*barWidth;
  var number = document.getElementById("donation-progress-number");
  number.innerHTML = currentAmount;
  var progBar = document.getElementById("donation-progress-indicator");
  progBar.setAttribute("style", "width: " + nowWidth + "px");
}

function ajax(url, callbackFunction, data) {
  var request =  new XMLHttpRequest();
  request.open("GET", url, true);
  //request.setRequestHeader("Content-Type",
  //                         "application/x-www-form-urlencoded");
  request.onreadystatechange = function() {
    var done = 4, ok = 200;
    if (request.readyState == done) {
      if (request.status == ok) {
        if (request.responseXML) {
          callbackFunction(request.responseXML, data);
        }
      } else {
        if (request.responseXML) {
          alert(request.responseXML);
        } else {
          //alert('Fejl:  Serveren stak mig i ryggen og skred. ' + request.status)
        }
      }
    }
  };
  request.send(null);
}

/* Brain cursor chaser, version [0.0.4]
Originally from: Splarka

Notes:
* Full of constants that can be tweaked.
* Doesn't /have/ to be brains, but that was the design.
* Movement is random, a smoother circular movement system might be cooler.

*/

var ismsie = (navigator.appName.toLowerCase().indexOf('internet explorer') != -1);
var scrW, scrH, mouseX, mouseY, brainX = [0], brainY = [0], brainTimer;
var brainR = 'http://img505.imageshack.us/img505/4064/brainr.png';
var brainL = 'http://img505.imageshack.us/img505/7910/brainl.png';


function initBrains() {
  var docobj = document.getElementById('globalWrapper') || document.body;
  appendCSS('.brain {position:absolute;z-index:3;}');
  for(var i=0;i<5;i++) {
    var img = document.createElement('img');
    img.src = 'file:///c:/goldrush/js/wiki/brain-r.png';
    img.id = 'brain-' + i;
    brainX[i] = rand(10,150);
    brainY[i] = rand(10,150);
    img.style.left = (brainX[i] - 24) + 'px';
    img.style.top = (brainY[i] - 20) + 'px';
    img.style.zIndex = rand(2,4);
    img.className = 'brain';
    docobj.appendChild(img);
  }
  screenResizeBrains();
  if(!ismsie) document.captureEvents(Event.MOUSEMOVE)
  addHandler(document,'mousemove',mousemoveBrains);
  addHandler(window,'resize',screenResizeBrains);
  brainTimer = setTimeout('moveBrains()',1000);
}
addOnloadHook(initBrains);

function moveBrains() {
  try { 
    if(brainTimer != null) {
      clearTimeout(brainTimer);
      brainTimer = null;
    }
  } catch (e) {
    return;
  }
  if(!mouseX || !mouseY) return
  mx = mouseX;
  my = mouseY;
  var brains = getElementsByClassName(document.body,'img','brain');
  for(var i=0;i<brains.length;i++) {
    var b = brains[i], bx = brainX[i], by = brainY[i];
    var d = Math.sqrt(((bx - mx) * (bx - mx)) + ((by - my) * (by - my))); //distance
    var dr = Math.abs(bx - mx) / Math.abs(by - my), dx = 0, dy = 0; //delta ratio, deltaX,Y

    if(dr > 1) {
      dr = 1 / parseFloat(dr);
      dx = (1 - dr / 2);
      dy = dr / 2;
    } else {
      dx = dr / 2;
      dy = (1 - dr / 2);
    }
    if(bx > mx) {
      b.src = brainL;
      dx = -dx;
    } else {
      b.src = brainR;
    }
    if(by > my) dy = -dy
    brainX[i] += dx*15 + rand(-8,8);
    brainY[i] += dy*15 + rand(-8,8);
    b.style.left = (brainX[i] - 24) + 'px';
    b.style.top = (brainY[i] - 20) + 'px';
  }
  brainTimer = setTimeout('moveBrains()',100);
}

window.onresize = screenResizeBrains;
function mousemoveBrains(e) {
  try { 
    var debug = document.getElementById('debug');
    if(ismsie) {
      var mx = event.clientX + document.body.scrollLeft;
      var my = event.clientY + document.body.scrollTop;
    } else {
      var mx = e.pageX;
      var my = e.pageY;
    }
    if (mx < 0) mx = 0
    if (my < 0) my = 0
    mouseX = mx;
    mouseY = my;
    if(brainTimer == null) brainTimer = setTimeout('moveBrains()',100)
  } catch (e) {
    return;
  }
}

function screenResizeBrains() {
  var docElement = (document.compatMode=='CSS1Compat') ? document.documentElement : document.body
  scrW = docElement.clientWidth;
  scrH = docElement.clientHeight;
}

function rand(n,z) { 
  var s = (!z) ? 0 : z 
  return Math.floor(Math.random() * (n - s) + s);
}