function foo(px,py,pw,ph,baseElement,fid) {
    var win = document.getElementById(this.fid);
}

function dropdown_menu_hack(el,direction) {
  if(el.runtimeStyle.behavior.toLowerCase()=="none"){return;}
  el.runtimeStyle.behavior="none";
  var ie5 = false; //(document.namespaces==null);

  el.ondblclick = function(e) {
    window.event.returnValue=false;
    return false;
  }
  
  if(window.createPopup==null) {
    var fid = "dropdown_menu_hack_" + Date.parse(new Date());
  
    window.createPopup = function() {
      if(window.createPopup.frameWindow==null){
          el.insertAdjacentHTML("AfterEnd","<iframe   id='"+fid+"' name='"+fid+"' src='about:blank'  frameborder='1' scrolling='no'></></iframe>");
          var f = document.frames[fid];
          f.document.open();
          f.document.write("<html><body></body></html>");
          f.document.close();
          f.fid = fid; 
          
          var fwin = document.getElementById(fid);
          fwin.style.cssText="position:absolute;top:0;left:0;display:none;z-index:99999;";
          
          f.show = function(px,py,pw,ph,baseElement) {             
            py = py + baseElement.getBoundingClientRect().top + Math.max( document.body.scrollTop, document.documentElement.scrollTop) ;
            px = px + baseElement.getBoundingClientRect().left + Math.max( document.body.scrollLeft, document.documentElement.scrollLeft) ;
            fwin.style.width = pw + "px";
            fwin.style.height = ph + "px";            
            fwin.style.posLeft =px ;
            fwin.style.posTop = py ;    
            fwin.style.display="block";           
          }
          
          f_hide = function(e) { 
            if(window.event && window.event.srcElement  && window.event.srcElement.tagName && window.event.srcElement.tagName.toLowerCase()=="select"){return true;}
            fwin.style.display="none";
          } 

          f.hide = f_hide;
          document.attachEvent("onclick",f_hide);   
          document.attachEvent("onkeydown",f_hide);   
      }
      return f;
    }
  }

  function showMenu() {

    function selectMenu(obj) {       
        var o = document.createElement("option");
        o.value = obj.name;
        o.innerHTML = obj.innerHTML;
        if(obj.style.background=="#333366") o.selected=true;      
        while(el.options.length>0){el.options[0].removeNode(true);}
        el.appendChild(o);
        el.title =  o.innerHTML; 
        el.contentIndex = obj.selectedIndex  ;
        el.menu.hide();
    }   
    
    el.menu.show(0 , el.offsetHeight , 10,  10, el); 
    var mb = el.menu.document.body;
    
    mb.style.cssText ="border:solid 1px black;margin:0;padding:0;overflow-y:auto;overflow-x:auto;background:white;font-family:Arial, sans-serif;font-size:10px;direction:"+direction+";";
    var t = el.contentHTML;
    t = t.replace(/<select/gi,'<ul');
    t = t.replace(/<option/gi,'<li');
    t = t.replace(/<\/option/gi,'</li');
    t = t.replace(/<\/select/gi,'</ul');
    t = t.replace(/value/gi,'name');
    mb.innerHTML = t; 
  
    
    el.select = mb.all.tags("ul")[0];
    el.select.style.cssText="list-style:none;margin:0;padding:0;";
    mb.options = el.select.getElementsByTagName("li");
    
    for(var i=0;i<mb.options.length;i++) {
      mb.options[i].selectedIndex = i;
      mb.options[i].style.cssText = "list-style:none;margin:0;padding:1px 2px;width/**/:100%;cursor:hand;cursor:pointer;white-space:nowrap;direction:"+direction+";"
      mb.options[i].title = mb.options[i].innerHTML;
      mb.options[i].innerHTML = mb.options[i].innerHTML;
      mb.options[i].onmouseover = function() {
        if( mb.options.selected ){mb.options.selected.style.background="white";mb.options.selected.style.color="black";}
        mb.options.selected = this;
        this.style.background="#333366";this.style.color="white";
      }
      
      mb.options[i].onmouseout = function(){this.style.background="white";this.style.color="black";}
      mb.options[i].onmousedown = function(){selectMenu(this);  }
      mb.options[i].onkeydown = function(){selectMenu(this);  }
        
      if(i == el.contentIndex) {
        mb.options[i].style.background="#333366";
        mb.options[i].style.color="white";  
        mb.options.selected = mb.options[i];
      }
    }
  
    
    var mw = Math.max( ( el.select.offsetWidth + 5 ), el.offsetWidth + 5 ); //22
        mw = Math.max(  mw, ( mb.scrollWidth+5) ); //22
    var mh =  mb.options.length * 15  + 8 ; 
       
    var mx = (ie5)?-3:0;
    var my = el.offsetHeight -2;
    var docH =   document.documentElement.offsetHeight ;
    var bottomH = docH  - el.getBoundingClientRect().bottom ; 

    mh = Math.min(mh, Math.max(( docH - el.getBoundingClientRect().top - 50),100)   );
    
    if(bottomH < mh){
      
      mh = Math.max( (bottomH - 12),10);
      if(mh < 100) { 
        my = -100 ;
      }
      mh = Math.max(mh,100);      
    }

    
    self.focus(); 
    
    el.menu.show( mx , my ,  mw, mh , el); 
    sync=null;
    if(mb.options.selected) {
      mb.scrollTop = mb.options.selected.offsetTop;
    }
    window.onresize = function(){el.menu.hide()};   
  }

  function switchMenu() {
    if(event.keyCode) {
      if(event.keyCode==40){ el.contentIndex++ ;}
      else if(event.keyCode==38){ el.contentIndex--; }
    }
    else if(event.wheelDelta ){
      if (event.wheelDelta >= 120)
      el.contentIndex++ ;
      else if (event.wheelDelta <= -120)
      el.contentIndex-- ;
    }
    else{return true;}

    if(el.contentIndex > (el.contentOptions.length-1) ){ el.contentIndex = 0;}
    else if (el.contentIndex<0){el.contentIndex = el.contentOptions.length-1 ;}

    var o = document.createElement("option");
       o.value = el.contentOptions[el.contentIndex].value;
       o.selected = el.contentOptions[el.contentIndex].selected;
       o.innerHTML = el.contentOptions[el.contentIndex].text;
       while(el.options.length>0){el.options[0].removeNode(true);}
       el.appendChild(o);
       el.title = o.innerHTML; 
  }
  
  if(dropdown_menu_hack.menu ==null) {
    dropdown_menu_hack.menu =  window.createPopup();
    document.attachEvent("onkeydown",dropdown_menu_hack.menu.hide);
  }
  el.menu = dropdown_menu_hack.menu ;
  el.contentOptions = new Array();
  el.contentIndex = el.selectedIndex;
  el.contentHTML = el.outerHTML;

  for(var i=0;i<el.options.length;i++) { 
    el.contentOptions [el.contentOptions.length] = 
    {
      "value": el.options[i].value,
      "text": el.options[i].innerHTML,
      "selected": el.options[i].selected
    }

    if(!el.options[i].selected){el.options[i].removeNode(true);i--;};
  }

  el.onkeydown = switchMenu;
  el.onclick = showMenu;
  el.onmousewheel= switchMenu;

}
