function Menucat( myname ){
  
  this.instname = myname;
  this.nummenu = 0;
  this.lstmenuid = new Array();
  this.lstmenuimgid = new Array();
  this.lstmenuimg = new Array();
  this.lstmenuselimg = new Array();
  this.xitempos = new Array();
  this.xitemsize = new Array();
  this.xselitemsize = new Array();
  this.offset = 14;
  this.headerwidth = 897;
  this.infoid = "h2menutext";
  
  this.addMenu = addMenu;
  this.preloadImg = preloadImg;
  this.setImg = setImg;
  this.setLoaded = setLoaded;
  this.changeImg = changeImg;
  this.moveToright = moveToright;
  this.moveToleft = moveToleft;
  this.changeOpacity = changeOpacity;
  this.restoreImg = restoreImg;
  this.startRestore = startRestore;
  this.restoreNow = restoreNow;
  
  var timerxpostorid = 0;
  var timerxpostolid = 0;
  var timerrestore = 0;
  var opacity;
  var curxpos = new Array();
  var selected;
  var loaded = false;
  var imgobj = new Array();
  
  function addMenu( menuid, imgid, img, selimg, xpos, xsize, xselsize ){
    this.lstmenuid[this.nummenu] = menuid;
    this.lstmenuimgid[this.nummenu] = imgid;
    this.lstmenuimg[this.nummenu] = img;
    this.lstmenuselimg[this.nummenu] = selimg;
    this.xitempos[this.nummenu] = xpos;
    this.xitemsize[this.nummenu] = xsize;
    this.xselitemsize[this.nummenu] = xselsize;
    this.nummenu++;
  }
  
  function preloadImg(){
    for( var i=0; i<this.nummenu; i++ ){
       imgobj[i] = new Image();
       imgobj[i].src = this.lstmenuimg[i];
       imgobj[i].src = this.lstmenuselimg[i];
    }
  }
  
  function setImg( index ){
    document.getElementById( this.lstmenuid[index] ).childNodes[0].width = this.xselitemsize[index];
    eval("document." + this.lstmenuimgid[index] + ".src='" + this.lstmenuselimg[index] + "'");
  }

  function setLoaded(){
    //loaded = true;
  }
  
  function changeImg( index ){
    //if( loaded == false ){ loaded = true; return; }
    clearTimeout( timerrestore );
    timerrestore = 0;
    if( index != selected && selected != undefined ){
       this.startRestore( selected );
       //this.restoreNow( selected, index );
    }
    selected = index;
    for( var i=0; i<this.nummenu; i++ ){
       curxpos[i] = this.xitempos[i];
    }
    ////document.getElementById( this.lstmenuid[index] ).style.filter = 'alpha(opacity=0)';
    
    document.getElementById( this.infoid ).style.filter = 'alpha(opacity=0)';
    
    var func = this.instname + ".moveToright()";
    timerxpostorid = setTimeout( func, 100 );
  }
  
  function moveToright(){
    var i;
    var func;
    
    for( i=0; i<this.nummenu; i++ ){
       if( i > selected ){
          curxpos[i] += 3;
       }
    }
    for( i=0; i<this.nummenu; i++ ){
       if( i > selected ){
          document.getElementById(this.lstmenuid[i]).style.left = curxpos[i] + "px";
       }
    }
    var pos = this.xitempos[selected]+this.xitemsize[selected]+this.xselitemsize[selected]+this.offset;
    if( (selected == this.nummenu-1) || (curxpos[selected+1] > pos) ){
       clearTimeout( timerxpostorid );
       timerxpostorid = 0;
       ///var obj = document.getElementById(this.lstmenuid[selected]);
       ///obj.style.width = (this.xselitemsize[selected] + this.offset) + "px";
       /////document.getElementById( this.lstmenuimgid[selected] ).width = this.xselitemsize[selected];
       ///document.getElementById( this.lstmenuid[selected] ).childNodes[0].width = this.xselitemsize[selected];
       ///eval("document." + this.lstmenuimgid[selected] + ".src='" + this.lstmenuselimg[selected] + "'");
       
       eval("document." + this.infoid + ".src='" + this.lstmenuselimg[selected] + "'");
       var obj = document.getElementById( this.infoid );
       obj.style.left = this.xitempos[selected]+this.xitemsize[selected]+5;
       obj.style.visibility = "visible";
       
       opacity = 0;
       func = this.instname + ".changeOpacity()";
       timerxpostorid = setTimeout( func, 100 );
    }
    else{
       func = this.instname + ".moveToright()";
       timerxpostorid = setTimeout( func, 1 );
    }
  }
  
  function changeOpacity(){
    opacity += 3;
    ///var obj = document.getElementById(this.lstmenuid[selected]);
    
    var obj = document.getElementById( this.infoid );
    
    obj.style.filter = 'alpha(opacity=' + opacity +')';
    if( opacity < 90 ){
       var func = this.instname + ".changeOpacity()";
       timerxpostorid = setTimeout( func, 1 );
    }
    else{
       obj.style.filter = 'alpha(opacity=90)';
       clearTimeout( timerxpostorid );
       timerxpostorid = 0;
       //obj = document.getElementById( this.infoid );
       //obj.style.left = this.xitempos[selected] + 2;
       //eval("document." + this.infoid + ".src='" + this.lstmenuselimg[selected] + "'");
       //obj.style.visibility = "visible";
    }
  }
  
  function restoreImg( index ){
    //loaded = true;
    var func = this.instname + ".startRestore(" + index + ")";
    timerrestore = setTimeout( func, 700 );
    //timerrestore = setTimeout( func, 300 );
  }
  
  function startRestore( index ){
    timerrestore = 0;
    var obj;
    obj = document.getElementById( this.lstmenuid[index] );
    obj.style.width = (this.xitemsize[index] + this.offset) + "px";
    //document.getElementById( this.lstmenuimgid[index] ).width = this.xitemsize[index];
    obj.childNodes[0].width = this.xitemsize[index];
    eval("document." + this.lstmenuimgid[index] + ".src='" + this.lstmenuimg[index] + "'");
    obj.style.filter = 'alpha(opacity=100)';
    var func = this.instname + ".moveToleft()";
    //var func = this.instname + ".moveToleft(" + index + ")";
    timerxpostolid = setTimeout( func, 1 );
    obj = document.getElementById( this.infoid );
    obj.style.visibility = "hidden";
  }
  
  function restoreNow( index, norestore ){
    var obj;
    obj = document.getElementById( this.lstmenuid[index] );
    obj.style.width = this.xitemsize[index] + "px";
    obj.childNodes[0].width = this.xitemsize[index];
    eval("document." + this.lstmenuimgid[index] + ".src='" + this.lstmenuimg[index] + "'");
    obj.style.filter = 'alpha(opacity=100)';
    for( var i=0; i<this.nummenu; i++ ){
       //if( i != norestore ){
          document.getElementById(this.lstmenuid[i]).style.left = this.xitempos[i] + "px";
       //}
    }
  }
  
  function moveToleft(){
  //function moveToleft( selected ){
    var i;
    for( i=0; i<this.nummenu; i++ ){
       if( i > selected ){
          curxpos[i] -= 4;
       }
    }
    for( i=0; i<this.nummenu; i++ ){
       if( i > selected ){
          document.getElementById(this.lstmenuid[i]).style.left = curxpos[i] + "px";
       }
    }
    var pos = this.xitempos[selected]+this.xitemsize[selected]+20;
    if( (selected == this.nummenu-1) || (curxpos[selected+1] <= pos) ){
       clearTimeout( timerxpostolid );
       var obj = document.getElementById(this.lstmenuid[selected]);
       obj.style.width = (this.xitemsize[selected] + this.offset) + "px";
       for( i=0; i<this.nummenu; i++ ){
          document.getElementById(this.lstmenuid[i]).style.left = this.xitempos[i] + "px";
       }
    }
    else{
       var func = this.instname + ".moveToleft()";
       timerxpostolid = setTimeout( func, 1 );
    }
  }
  
  return this;
}
