ie=(navigator.userAgent.indexOf('MSIE')!=-1);

function $(id) {
 if (!document.getElementById(id)) return false;
  return document.getElementById(id);
}

mobj=new Array();

function initmove(element, property, newval, steps, hide, initval) {
 itemid=mobj.length;
 mobj[itemid]=new Array(element,property,newval);
 if (typeof(steps)!='undefined') {
  mobj[itemid][3]=steps;                            // total no of steps
  mobj[itemid][4]=0;                                // current step
  if (!initval) mobj[itemid][5]=parseFloat(gp(element,property)); // initial value
   else mobj[itemid][5]=initval;
 }
 mobj[itemid][7]=(typeof(hide)!='undefined'&&hide!=false)?true:false;
 if (itemid==0) iv=setInterval('domove()',10);
}

function gp(obj,prop) {
 if (ie) return ($(obj).currentStyle[prop]);
  else return ($(obj).style.getPropertyValue(prop));
}

function sp(obj,prop,value) {
 eval("$('"+obj+"').style."+prop+"='"+value+"px';");
}

function domove() {
 for (i=0; i<mobj.length; i++) {
 
  if (!mobj[i][3]) { // normal transform with easing
 
   p=parseFloat(gp(mobj[i][0],mobj[i][1]));

   if (mobj[i][2]>p) { sx=Math.floor(mobj[i][2]-p)/5+1; if (sx>50) sx=50; p=p+sx; if (p>mobj[i][2]) p=mobj[i][2]; }
   if (mobj[i][2]<p) { sx=Math.floor(p-mobj[i][2])/5+1; if (sx>50) sx=50; p=p-sx; if (p<mobj[i][2]) p=mobj[i][2]; }
   
  } else { // step based transform with easing
  
     p=(mobj[i][2]-mobj[i][5])/mobj[i][3]*mobj[i][4]*(1+(mobj[i][3]-mobj[i][4])/mobj[i][3])+mobj[i][5];
     mobj[i][4]++;

    }
    
  mobj[i][6]=p;
    
  sp(mobj[i][0],mobj[i][1],p);

 }

 // delete finished transforms

 do {
 
  del=false;
  for (i=0; i<mobj.length; i++)
   if (mobj[i][2]==mobj[i][6]) {
    del=true;
    if (mobj[i][7]) sp(mobj[i][0],'display','none');
    mobj.splice(i,1);
    break;
   }
 
 } while (del);
   
 if (mobj.length==0) clearInterval(iv);
}

function getpagescroll() {
 return [ie?document.body.scrollLeft:window.pageXOffset,ie?document.body.scrollTop:window.pageYOffset];
}

function getpos(obj) {
// Code from: http://siderite.blogspot.com/2007/10/absolute-position-of-html-elements-in.html
 curleft=curtop=0;
 if (obj.offsetParent) {
  while (obj.offsetParent) {
   curleft+=obj.offsetLeft-obj.scrollLeft;
   curtop+=obj.offsetTop-obj.scrollTop;
   var position='';
   if (obj.style&&obj.style.position) position=obj.style.position.toLowerCase();
   if (!position)
    if (obj.currentStyle && obj.currentStyle.position)
     position = obj.currentStyle.position.toLowerCase();
   if ((position=='absolute')||(position=='relative')) break;
   while (obj.parentNode!=obj.offsetParent) {
    obj=obj.parentNode;
    curleft-=obj.scrollLeft;
    curtop-=obj.scrollTop;
   }
   obj=obj.offsetParent;
  }
 } else {
    if (obj.x) curleft+=obj.x;
    if (obj.y) curtop+=obj.y;
   }
 return [curleft,curtop];
}

function getfixedpos(obj) {
 tmp0=getpos(obj);
 tmp1=getpagescroll();
 return [tmp0[0]-tmp1[0],tmp0[1]-tmp1[1]];
}
