var vibeElm=null;
var vibeTimer=null;
var vibeIval=null;

function getElementsByClassName(className,tag,elm) {
 var testClass=new RegExp("(^|\s)"+className+"(\s|$)");
 var tag=tag || "*";
 var elm=elm || document;
 var elements=(tag=="*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
 var returnElements=[];
 var current;
 var length=elements.length;
 for (var i=0; i<length; i++) {
  current=elements[i];
  if (testClass.test(current.className)) {returnElements.push(current);};
  };
 return returnElements;
 };

function initVibes(cn) {
 var parents=document.getElementsByClassName(cn);
 var x,y,elm;
 for (x=0; x<parents.length; x++) {
  elm=parents[x].getElementsByTagName('a');
  for (y=0; y<elm.length; y++) {
   elm[y].onmouseover=startVibe;
   elm[y].style.position='relative';
   };
  };
 };

function startVibe() {
if (vibeIval) {clearInterval(vibeIval);};
if (vibeTimer) {clearTimeout(vibeTimer);};
vibeElm=this;
vibeTimer=setTimeout('stopVibe()',500);
vibeIval=setInterval('vibrate()',50);
};


function stopVibe() {
 if (vibeIval) {clearInterval(vibeIval);};
 if (vibeTimer) {clearTimeout(vibeTimer);};
 if (vibeElm) {
  vibeElm.style.left='0';
  vibeElm.style.top='0';
  vibeElm=null;
  };
 };

function vibrate() {
 vibeElm.style.left=Math.floor(Math.random()*3)-1+'px';
 vibeElm.style.top=Math.floor(Math.random()*3)-1+'px';
 };