    function selectReplacement(obj, selectType) {
      obj.className += ' replaced';
      var ul = document.createElement('ul');
      ul.className = selectType;
      var opts = obj.options;
      for (var i=0; i<opts.length; i++) {
        var selectedOpt;
        if (opts[i].selected) {
          selectedOpt = i;
          break;
        } else {
          selectedOpt = 0;
        }
      }
      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 = opts[i].index;
        li.selectID = obj.id;
        li.onclick = function() {
          selectMe(this);
        }
        if (i == selectedOpt) {
          li.className = 'selected';
          li.onclick = function() {
            this.parentNode.className += ' selectOpen';
            this.onclick = function() {
              selectMe(this);
            }
          }
        }
        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.parentNode.insertBefore(ul,obj);
    }
    function selectMe(obj) {
      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 {
          var prevSelectedIndex = document.getElementById(obj.selectID).selectedIndex;        
          var currentIndex = obj.selIndex;
          setVal(obj.selectID, obj.selIndex);
          obj.className='selected';
          obj.parentNode.className =
            obj.parentNode.className.replace(new RegExp(" selectOpen\\b"), '');

          obj.onclick = function() {
            obj.parentNode.className += ' selectOpen';
            this.onclick = function() {
              selectMe(this);
            }
          }
          
          if (currentIndex != prevSelectedIndex) {
		  var changeFunc = getOnChangeFunction(obj.selectID);
		  if (changeFunc != '') {
			eval(changeFunc);
		  }
	  }
        }
      }
    }
    function setVal(objID, selIndex) {
      var obj = document.getElementById(objID);
      obj.selectedIndex = selIndex;
    }
    function setForm() {
      var s = document.getElementsByTagName('select');
          for (var i=0; i<s.length; i++) {
                if (s[i].id.indexOf("customSelect") >= 0) {
			selectReplacement(s[i], "selectReplacement");	                	
                } 
        }
    }
    
    function getFunctionName(functionDesc) {
	if (functionDesc != '' && functionDesc != null && functionDesc != 'undefined') {
		functionDesc = functionDesc.toString()
		var functionStart = functionDesc.indexOf("{");
		var functionEnd = functionDesc.indexOf("}");
		var functionName = functionDesc.substring(functionStart + 2, functionEnd -1);
		return functionName;
	} else {
		return '';
	}
    }

    function getOnChangeFunction(objID) {
      var obj = document.getElementById(objID);
      return getFunctionName(obj.onchange);
    }
    
   
 function addLoadEvent(func) {   
   var oldonload = window.onload;   
   if (typeof window.onload != 'function') {   
     window.onload = func;   
   } else {   
     window.onload = function() {   
       if (oldonload) {   
         oldonload();   
       }   
       func();   
     }   
   }   
 }   
   
 
   


    function starter() {
      (document.all && !window.print) ? null : setForm();
    }
    
 addLoadEvent(window.onload); 
 addLoadEvent(starter);   
 
    
    
    