    var globalSelectZIndex;
    var globalSelectInvertZIndex;
    var openedSelect;
    var clickedOn;
    clickedOn = false;
    openedSelect = false;

/* for automatic select redirect */
    var autoSelectID;
    autoSelectID = new Array();
    var autoSelectHREF;
    autoSelectHREF = new Array();


    function selectReplacement(obj) {

    if(obj.className.indexOf('newSelect') == -1) return false;

      obj.className += ' replaced';
      var ul = document.createElement('ul');
      ul.className = 'selectReplacement';
      var opts = obj.options;
      var selectedOpt = (!obj.selectedIndex) ? 0 : obj.selectedIndex;

      var selectedText;
      for (var i=0; i<opts.length; i++) {
        var li = document.createElement('li');
        var txt = document.createTextNode(opts[i].text);
        li.appendChild(txt);
        li.selIndex = i;
        li.selectID = obj.id;
        li.onclick = function() {
          selectMe(this);
        };
        if (i == selectedOpt) {
          li.className = 'selected';
          selectedText = opts[i].text;
          li.onclick = function() {
            closeAllSelect();
            this.parentNode.className += ' selectOpen';

            if(this.parentNode.parentNode.parentNode.parentNode.className.indexOf('openUp') > -1 )
              {
                _offsetTop = eval(-1 * this.parentNode.offsetHeight);
                _offsetTop = eval(_offsetTop - 20);
                this.parentNode.style.top = _offsetTop +'px';
              }
                    selectCloser();
                    _preDiv = this.parentNode.parentNode.getElementsByTagName('div');
                    _preDiv[0].style.display = "block";
          };
        }

        if (window.attachEvent) {
          li.onmouseover = function() {
            this.className += ' hover';
          };
          li.onmouseout = function() {
            this.className =
              this.className.replace(new RegExp(" hover\\b"), '');
          };
        }
        ul.appendChild(li);
      }
      obj.onfocus = function() {
        ul.className += ' selectFocused';
      };
      obj.onblur = function() {
        ul.className = 'selectReplacement';
        clearBody();
        openedSelect = false;
      };
      obj.onchange = function() {
        var idx = this.selectedIndex;
        selectMe(ul.childNodes[idx]);
      };
      obj.onkeypress = obj.onchange;

      var div = document.createElement('div');
      div.id = obj.id+'_replaced';
      div.className = 'selectField';

      if(obj.parentNode.className.indexOf('openUp') > -1 )
        {
          div.style.zIndex = globalSelectInvertZIndex;

        }else{
          div.style.zIndex = globalSelectZIndex;
        }
      div.appendChild(ul);

      var divBack = document.createElement('div');
      divBack.className = 'selectBack';
      divBack.appendChild(div);

      obj.parentNode.insertBefore(divBack,obj);

      var subDiv = document.createElement('div');
      subDiv.className = 'selectActual';

      _test = document.createTextNode(selectedText);
      subDiv.appendChild(_test);

      ul.parentNode.insertBefore(subDiv,ul);
    }

    function copySelectedActual(obj){
      var _sOpts = obj.parentNode.getElementsByTagName('li');
      var _sObj = obj.parentNode.parentNode;
      for (var i=0; i<_sOpts.length; i++) {
        if( _sOpts[i].className.indexOf('selected') > -1 )
        {
          _sObj.firstChild.removeChild(_sObj.firstChild.firstChild);
          _nTnode = document.createTextNode(_sOpts[i].firstChild.nodeValue);
          _sObj.firstChild.appendChild(_nTnode);
        }
      }
      clearBody();
    }

    function selectMe(obj) {
      _preDiv = obj.parentNode.parentNode.getElementsByTagName('div');
      _preDiv[0].style.display = "none";

      var lis = obj.parentNode.getElementsByTagName('li');
      for (var i=0; i<lis.length; i++) {
        if (lis[i] != obj) {
          lis[i].className='';
          lis[i].onclick = function() {
             selectMe(this);
          };
       } else {
          setVal(obj.selectID, obj.selIndex);
          obj.className='selected';
          obj.parentNode.className =
            obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');

          if(obj.parentNode.parentNode.parentNode.parentNode.className.indexOf('openUp') > -1 )
            {
              obj.parentNode.style.top = '0px';
            }

          obj.onclick = function() {
            closeAllSelect();
            obj.parentNode.className += ' selectOpen';

            if(obj.parentNode.parentNode.parentNode.parentNode.className.indexOf('openUp') > -1 )
              {
                _offsetTop = eval(-1 * obj.parentNode.offsetHeight);
                _offsetTop = eval(_offsetTop - 20);
                obj.parentNode.style.top = _offsetTop +'px';
              }
            selectCloser();
            _preDiv = obj.parentNode.parentNode.getElementsByTagName('div');
            _preDiv[0].style.display = "block";
            this.onclick = function() {
              selectMe(this);
            };
          };
          obj.onblur = function() {
            ul.className = 'selectReplacement';
            clearBody();
            openedSelect = false;
          };
        }
      }
      copySelectedActual(obj);
    }

    function selectCloser() { setTimeout( closeSelect, 20); }

    function closeSelect()
    {
      _docBody = document.getElementsByTagName('body');

      _docBody[0].onclick = function() { closeAllSelect(); }
    }

    function closeAllSelect()
    {
        uls = document.getElementsByTagName('ul');
        for (var i=0; i<uls.length; i++) {
          if( uls[i].className.indexOf(' selectOpen') > -1){
             uls[i].className = 'selectReplacement';
            if(uls[i].parentNode.parentNode.parentNode.className.indexOf('openUp') > -1 )
              {
               uls[i].style.top = '0px';
              }
          }
        }

        clearBody();
    }

    function setVal(objID,val) {
/* itt tortenik a select modositasa */
      var obj = document.getElementById(objID);
      obj.selectedIndex = val;
      if( in_array(objID, autoSelectID) )
      {
/* ha van auto select redirect: */
        _key = get_key( objID, autoSelectID );
        if(obj.options[obj.selectedIndex].value != 0)
          location.href = autoSelectHREF[_key]+obj.options[obj.selectedIndex].value;
      }
    }


    function in_array(_needle, _haystack)
    {
      for(var i=0; i<_haystack.length; i++)
      {
        if(_haystack[i] == _needle)
        {
          return true;
        }
      }
      return false;
    }


    function get_key(_needle, _haystack)
    {
      for(var i=0; i<_haystack.length; i++)
      {
        if(_haystack[i] == _needle)
        {
          return i;
        }
      }
      return false;
    }


    function setForm() {
      globalSelectZIndex = 10000;
      globalSelectInvertZIndex = 10000
      var s = document.getElementsByTagName('select');
      for (var i=0; i<s.length; i++) {
        selectReplacement(s[i]);
        /* ie bug workaround */
        globalSelectZIndex = globalSelectZIndex - 200;
        globalSelectInvertZIndex = globalSelectInvertZIndex + 200;
      }

      _docBody = document.getElementsByTagName('body');
      _docBody[0].onclick = function() {}
    }


    function clearBody(){
      _docBody = document.getElementsByTagName('body');
      _docBody[0].onclick = function() {}
    }


    function offsetTest( objid )
    {
      if(document.getElementById(objid))
      {
        _obj = document.getElementById(objid);
        _uls = _obj.getElementsByTagName('ul');
        for (var i=0; i< _uls.length; i++)
        {
          if(_uls[i].className.indexOf('selectOpen') > -1)
          {
            alert(_uls[i].offsetHeight);
          }
        }
      }
    }

