	function selectReplacement(obj, index) {
	 
	  // append a class to the select
	  obj.className += ' replaced';
	  // create list for styling
	  var ul = document.createElement('ul');
	  ul.className = 'selectReplacement';
	  ul.style.zIndex = 100+index;
	  var opts = obj.options;
	  for (var i=0; i<opts.length; i++) {
		var selectedOpt;
		if (opts[i].selected) {
		  selectedOpt = i;
		  break;
		} else {
		  selectedOpt = 0;
		}
	  }
	  var maxsize = 0;
	  for (var i=0; i<opts.length; i++) {
	  	var nodesize = opts[i].text.length;
		if(nodesize>maxsize){
			maxsize = nodesize;
		}
		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';
			//var selectedli = this;
			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);
	}
	  maxsize = 6*maxsize;
	  var lis = ul.getElementsByTagName("li");
	  for (var l=0; l<lis.length; l++) {
	 	lis[l].style.width = maxsize+"px";	 	
  	  }
	  // add the input and the ul before the submit
	  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) { // not the selected list item
		  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"), '');
		  obj.onclick = function() {
			obj.parentNode.className += ' selectOpen';
			this.onclick = function() {
			  selectMe(this);
			}
		  }
		}
	  }
	}

	function setVal(objID, selIndex) {
	 var obj = document.getElementById(objID);
	 obj.selectedIndex = selIndex;
	}

	function setForm() {
		var s = window.document.getElementsByTagName('select');
		for (var i=0; i<s.length; i++) {
			selectReplacement(s[i], s.length - i);
		}
	}

	function submitOnChange(className){
		jQuery('ul').each(function(){
			if(jQuery(this).hasClass(className)){
				jQuery(this).bind("click", {obj:jQuery(this)},enableSubmit);	
			}
		});
	}

	function enableSubmit(evtObj){
		var obj = evtObj.data.obj;
		jQuery(obj).unbind("click", enableSubmit);
		jQuery(obj).bind("click", {obj:jQuery(this)},submitIt);
	}
	
	function submitIt(evtObj){
		var obj = evtObj.data.obj;
		jQuery(obj).parents().each(function(){
			if(jQuery(this).is("form")){
				jQuery(this).submit();
				return false;
			}
		});
	}
	
	function closeSel(obj) {
	  // close the ul
	}