function SlideList(id, width) {
  this.name=id;
  this.id = id;
  eval(this.id+"=this");
  this.items = new Object();
  this.w = width;
  this.menuOffset = 0;
  this.isOpen = 0;
  this.strClassName = '';
  this.div = '';
  
  this.imgPath="/images/";
  this.css = "<style>\n";
  this.itemH = 0;
  this.cont = null; this.holder = null; this.shadow = null;
  this.loc = null;
  this.locX=this.locY=this.isOpen=this.done=this.isOver=0;
  this.hideEl = null;
  
  this.init     = listInit;
  this.over     = listOver;
  this.out      = listOut;
  this.build    = new Function();
  this.add      = slAdd;
  this.build    = slBuild;
  this.show     = slShow;
  this.locate   = slLocate;
  this.sShadow  = slsShadow;
  this.hShadow  = slhShadow;
}

// kick off mouse events
function listInit(strLink) {
  var oItem=null;
  this.handle = getObj(this.id+this.handle);
  oItem = getObj(this.id);
  // set mouseevents
  addEvt(oItem, "mouseover", new Function(this.id+".over()"),false);
  addEvt(oItem, "mouseout", new Function(this.id+".out()"),false);
  if (oBw.ns) oItem.captureEvents(Event.MOUSEDOWN) // needed for ns4
  this.cont = getObj(this.id+'cont');
  this.holder = getObj(this.id+'holder');
  this.shadow = getObj(this.id+'shadow');
  this.loc = getObj(strLink);
  if (oBw.ie4up) { this.shadow.style.filter = 'Alpha(opacity = 30)'; }
  if (oBw.ns6) this.shadow.style.MozOpacity = '16%';
}

function listOver(idx) {
  this.isOver = 1;
}

function listOut(idx,isPrem) {
  this.isOver = 0;
}

function slAdd(items) {
  if (items==null) return;
  this.items = new Object();
  this.items.text = items;
  this.items.y = this.h;
  this.h += this.itemH;
}

function slBuild() {
  var cssArr = new Array();
  var divArr = new Array();
  
  var hasClip = (oBw.ns)? ' left:1px; clip:rect(0 '+this.w+' '+this.itemH+' 0);':'';
  var nspad = (oBw.ns)? 1:0;
  var i_shW = (oBw.ie)? 2:12;
  this.css += '.shadow'+this.id+' { position:absolute; left:-500px; top:-'+(this.itemH*1+2)+'px; width:'+(this.w+i_shW)+'px; height:'+(this.itemH*1+2)+'px; background-image:url('+this.imgPath+'shadow.gif); background-repeat:repeat; display:none; z-index:2; visibility:hidden; } \n#'+this.id+'cont { position:absolute; visibility:hidden; left:-500px; top:-500px; width:'+(this.w+2)+'px; height:'+(this.itemH*1+2)+'px; clip:rect(0 '+(this.w+25)+' '+(this.itemH*1+20)+' 0); } \n#'+this.id+'holder { position:absolute; left:0px; top:-'+(this.itemH*1+2)+'px; width:'+(this.w+((oBw.ns6)? 10:2))+'px; height:'+(this.itemH*1+((oBw.ns6)? 5:2))+'px; border:1px solid #cccccc; z-index:1000; } \n'
 
  this.css += '#'+this.id;
  cssArr[0] = '#'+this.id+' { top:'+(nspad)+'px; } \n';
	divArr[0] = '<div id='+this.id+'>'+this.items.text+'</div> \n';

  this.css += ' { position:absolute; width:'+this.w+'px; height:'+(this.itemH-((oBw.ie&&oBw.mac)? 0:5))+'px; padding:5px; left:0px; text-align:left;'+hasClip+'}\n'  
  this.css += cssArr.join('')

  this.div += '<div id='+this.id+'cont>\n<div id='+this.id+'shadow class=shadow'+this.id+'>&nbsp;</div>\n<div id='+this.id+'holder class='+this.strClassName+'>\n'
  this.div += divArr.join('')
  this.div += (oBw.ns)? '<img src="'+this.imgPath+'spacer.gif" width=10 height='+(this.itemH*1-10)+'>\n':'' // needed to create the height for ns
  this.div += '</div>\n</div>\n'
}

function slsShadow() {
  if (oBw.op||oBw.ns||oBw.mac) {
    this.done=1;
    return;
  }
  var i_offsetY = (oBw.ie)? 8:12;
  moveTo(this.shadow,5,i_offsetY);
  show(this.shadow,'block');
  this.done=1;
}

function slhShadow() {
  this.isOpen=0;
}

function slShow() {
  var intMax = 0;
  var intMin = 0;
  var offsetY = (oBw.ns6)? 12:(oBw.mac)? 0:12; 
  var offsetX = (oBw.ns6)? 12:(oBw.mac)? 6:12;
  (oBw.ie)? 12:1;
  var w = this.menuOffset;
  this.locate();
  if (!this.isOpen) {    // slide menu down
    this.done=0;
    show(this.cont);
    moveTo(this.cont,(this.locX-w)+offsetX,this.locY+offsetY);
    setZ(this.cont,2000);
    slide(this.holder,0,2,9,this.id+".sShadow()");
    if (this.hideEl!=null && oBw.ie) {
      var oHide = getObj(this.hideEl);
      oHide.style.visibility="hidden";
    }
    this.isOpen=1;
    if (oBw.ie) {
      intMin = getPageX(this.cont) * 1;
      intMax = (this.w * 1) + intMin + 5;//+ 5 is for Shadow
      for (var j=0; j<document.forms.length; j++) {
        if (blnHideDropDownForMenu) {
          for (var i=0; i<document.forms[j].length; i++) {
            if (document.forms[j].elements[i].type=='select-one')
              if (((getPageX(document.forms[j].elements[i]) * 1) + (getW(document.forms[j].elements[i]) * 1) > intMin)  && ((getPageX(document.forms[j].elements[i]) * 1) < intMax))
                hide(document.forms[j].elements[i]);
          }
        }
      }
    }
  } else { // slide menu up
    if (oBw.ie) {
      intMin = getPageX(this.cont) * 1;
      intMax = (this.w * 1) + intMin + 5;//+ 5 is for Shadow
      for (var j=0; j<document.forms.length; j++) {
        if (blnHideDropDownForMenu) {
          for (var i=0; i<document.forms[j].length; i++) {
            if (document.forms[j].elements[i].type=='select-one')
              if (((getPageX(document.forms[j].elements[i]) * 1) + (getW(document.forms[j].elements[i]) * 1) > intMin)  && ((getPageX(document.forms[j].elements[i]) * 1) < intMax))
                show(document.forms[j].elements[i]);
          }
        }
      }
    }
    if (!this.done) return;
    this.done=0;
    slide(this.holder,0,-(this.itemH+10),9,this.id+".hShadow()"); // +10 b/c of ns6
    if (!oBw.ns) {
      moveTo(this.shadow,-500,-500);
      hide(this.shadow,'none');
    }
    setTimeout("hide("+this.id+".cont)",100);
    if (this.hideEl!=null && oBw.ie) {
      var oHide = getObj(this.hideEl);
      oHide.style.visibility="visible";
    }
  }
  return false;
}

function slLocate() {
  this.locX = getPageX(this.loc);
  this.locY = getPageY(this.loc);
}

function slide(e,x,y,sp,funcCall,xNow,yNow){
  var num;
  if(typeof e!='object'){
    num=e;
    e=slide.all[num];
    e.sliding=true;
  }
  else{
    if(e.sliding) return
  }
  eLT = getX(e);
  eRT = getY(e);
  xNow=xNow||parseInt(eLT);
  yNow=yNow||parseInt(eRT);
  x = (x==null)? eLT:x;
  y = (y==null)? eRT:y;
  distX=Math.abs(xNow-x);
  distY=Math.abs(yNow-y);
  if(Math.round(xNow)!=x)xNow+=(distX/(11-sp)*sign(xNow,x));
  if(Math.round(yNow)!=y)yNow+=(distY/(11-sp)*sign(yNow,y));
  setX(e,px(Math.round(xNow)));
  setY(e,px(Math.round(yNow)));
  if(num==null){
    num=slide.all.length;
    slide.all[num]=e;
  }
  if(Math.round(xNow)!=x||Math.round(yNow)!=y)
    setTimeout('slide('+num+','+x+','+y+','+sp+',"'+funcCall+'",'+xNow+','+yNow+')', 30);
  else{
    e.sliding=false;
    if(funcCall!='undefined')eval(funcCall);
  }
};

function sign(x,y){
  return(x<y)?1:-1;
}

function px(n){
  return n+(!oBw.ns&&!oBw.op?'px':0);
}
var blnHideDropDownForMenu;
blnHideDropDownForMenu=true
slide.all=[];
