
function imageholderclass(){
  this.over=new Array();
  this.down=new Array();
  this.src=new Array();
  this.store=store;
  
  function store(src, down, over){
    var AL = this.src.length;
    if (src) { this.src[AL] = new Image(); this.src[AL].src = src; }
    if (over) { this.over[AL] = new Image(); this.over[AL].src = over; }
    if (down) { this.down[AL] = new Image(); this.down[AL].src = down; }
  }
}

var ih = new imageholderclass();
var mouseisdown=0;

function preloader(t){
  for(i=0;i<t.length;i++){
    if(t[i].getAttribute('srcover')||t[i].getAttribute('srcdown')){
      
      storeimages(t[i]);
      var checker='';
      checker=(t[i].getAttribute('srcover'))?checker+'A':checker+'';
      checker=(t[i].getAttribute('srcdown'))?checker+'B':checker+'';
      
      switch(checker){
      case 'A' : mouseover(t[i]);mouseout(t[i]); break;
      case 'B' : mousedown(t[i]); mouseup2(t[i]); break;
      case 'AB' : mouseover(t[i]);mouseout(t[i]); 
                  mousedown(t[i]); mouseup(t[i]); break;
      default : return;      
      }
      
      if(t[i].src){t[i].setAttribute("oldsrc",t[i].src);}
    }
  }
}

function mouseup(t){
  var newmouseup;
  if(t.onmouseup){
    t.oldmouseup=t.onmouseup;
    newmouseup= 
      function(){mouseisdown=0;
                 this.src=this.getAttribute("srcover");
                 this.oldmouseup();}

  }
  else{
    newmouseup = 
      function(){mouseisdown=0;
                 this.src=this.getAttribute("srcover");}
  }
  t.onmouseup=newmouseup;
}

function mouseup2(t){
  var newmouseup;
  if(t.onmouseup){
    t.oldmouseup=t.onmouseup;
    newmouseup=function(){mouseisdown=0;
               this.src=this.getAttribute("oldsrc");
               this.oldmouseup();}
    }
  else{newmouseup=function(){mouseisdown=0;
                  this.src=this.getAttribute("oldsrc");}}
  t.onmouseup = newmouseup;
}

function mousedown(t){
  var newmousedown;
  if(t.onmousedown){
    t.oldmousedown=t.onmousedown;
    newmousedown=
      function(){if(mouseisdown==0)
                 {this.src=this.getAttribute("srcdown");
                  this.oldmousedown();}}
  }
  else{newmousedown=
       function(){if(mouseisdown==0){
                      this.src=this.getAttribute("srcdown");}}}
  t.onmousedown=newmousedown;
}

function mouseover(t){
  var newmouseover;
  if(t.onmouseover){
    t.oldmouseover=t.onmouseover;
    newmouseover= function(){this.src=this.getAttribute("srcover");
                             this.oldmouseover();}
  }
  else{newmouseover=function(){this.src=this.getAttribute("srcover");}}
  t.onmouseover=newmouseover;
}

function mouseout(t){
  var newmouseout;
  if(t.onmouseout){
    t.oldmouseout=t.onmouseout;
    newmouseout = 
   function(){this.src=this.getAttribute("oldsrc");this.oldmouseout();}
  }
  else{newmouseout=function(){this.src=this.getAttribute("oldsrc");}}
  t.onmouseout=newmouseout;
}

function storeimages(t){
  var s=(t.getAttribute('src'))?t.getAttribute('src'):'';
  var d=(t.getAttribute('srcdown'))?t.getAttribute('srcdown'):'';
  var o=(t.getAttribute('srcover'))?t.getAttribute('srcover'):'';
  ih.store(s,d,o);
}

function preloadimgsrc(){
  if(!document.getElementById) return;
  var it=document.getElementsByTagName('IMG');
  var it2=document.getElementsByTagName('INPUT');
  preloader(it);
  preloader(it2);
}

if(window.addEventListener)
  {window.addEventListener("load", preloadimgsrc, false);} 
else{
  if(window.attachEvent){window.attachEvent("onload", preloadimgsrc);}
  else{if(document.getElementById){window.onload=preloadimgsrc;}}
}