// Defaults
var fmimage="images/oe/slug.gif";
var fmHTML=null;
var fmhotx=48;
var fmhoty=8;
var fmdistance=20;
var fmzindex=5;


// Internal
var fmobject=null;
var fmpx=0; fmpy=0;


// Browser detection

// Global variables
var browserversion=0.0;
var browsertype=0; // 0: unknown; 1:MSIE; 2:NN

// Return true if MSIE or NN detected
function browserdetect() {
  var agt= navigator.userAgent.toLowerCase();
  var appVer= navigator.appVersion.toLowerCase();
  browserversion= parseFloat(appVer);
  var iePos= appVer.indexOf('msie');
  if (iePos!=-1) browserversion= parseFloat(appVer.substring(iePos+5, appVer.indexOf(';',iePos)));
  var nav6Pos = agt.indexOf('netscape6');
  if (nav6Pos!=-1) browserversion= parseFloat(agt.substring(nav6Pos+10))
  browsertype= (iePos!=-1) ? 1 : (agt.indexOf('mozilla')!=-1) ? 2 : 0;
  return(browsertype>0);
}

browserdetect();



// General utils

// Find object by name or id
function fmobj(id) {
  var i, x;
  x= document[id];
  if (!x && document.all) x= document.all[id];
  for (i=0; !x && i<document.forms.length; i++) x= document.forms[i][id];
  if (!x && document.getElementById) x= document.getElementById(id);
  return(x);
}


// Move fmobject
function fmmove(x, y) {
  var d=Math.sqrt((x-fmpx)*(x-fmpx)+(y-fmpy)*(y-fmpy));

  if (d>fmdistance) {
    d=fmdistance/d;
    fmpx=x=d*(fmpx-x)+x;
    fmpy=y=d*(fmpy-y)+y;
    x-=fmhotx; y-=fmhoty;
    if (fmobject) {
      if (fmobject.style) {
	fmobject.style.left= x+"px";
	fmobject.style.top= y+"px";
      } else {
	fmobject.left= x;
	fmobject.top= y;
      }
    }
  }
}



// Main
function fmwrite() {
  var img;

  if (browsertype>0 && browserversion>=5) {
    img= "<div id='fmlayer' style='position:absolute; z-index:"+fmzindex+"'>"+
	   (fmHTML ? fmHTML :
	     "<img src='"+fmimage+"' border=0>")+
	 "</div>";
    document.write(img);
    fmobject=fmobj('fmlayer');

    switch (browsertype) {
      case 1:
        document.onmousemove=fmmousemoveIE;
	break;
      case 2:
        document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove=fmmousemoveNS;
	break;
    }
  }
}


// Mouse move events
function fmmousemoveNS(e) {
  fmmove(e.pageX, e.pageY);
  return(false);
}
function fmmousemoveIE() {
  fmmove(event.clientX+document.body.scrollLeft, event.clientY+document.body.scrollTop);
  return(false);
}