function tamingselect(){
	if(!document.getElementById && !document.createTextNode){return;}
	
	// Classes for the link and the visible dropdown
	var ts_selectclass='turnintodropdown'; 	// class to identify selects
	var ts_maxitems = 7 ; // how many items before we start scrolling
	var ts_scrollheight = 100 ; // scroll height
	
	var ts_boxclass='dropcontainer'; 		// parent element
	var ts_triggeron='activetrigger'; 		// class for the active trigger link
	var ts_triggeroff='trigger';			// class for the inactive trigger link
	var ts_dropdownclosed='dropdownhidden'; // closed dropdown
	var ts_dropdownopen='dropdownvisible';	// open dropdown
	var ts_currentli='current' ; // currently selecte element
	
	var count=0;
	var toreplace=new Array();
	var sels=document.getElementsByTagName('select');
	for(var i=0;i<sels.length;i++){
		var selectedItem = '' ; // this will store selected item
		if (ts_check(sels[i],ts_selectclass)){
			var hiddenfield=document.createElement('input');
			hiddenfield.name=sels[i].name;
			hiddenfield.type='hidden';
			hiddenfield.id=sels[i].id;
			hiddenfield.value=sels[i].options[0].value;
			sels[i].parentNode.insertBefore(hiddenfield,sels[i])
			var trigger=document.createElement('a');
			trigger.vv = hiddenfield.id;
			ts_addclass(trigger,ts_triggeroff);
			//trigger.href='#';
			trigger.href='javascript://';
			
			trigger.onclick=function(){
				// make sure that this is not clickable
				if (this.className == ts_triggeron) return false ;
				ts_swapclass(this,ts_triggeroff,ts_triggeron)
				// hide all other menus
				var uls = document.getElementsByTagName('ul') ;
				for(var j=0;j<uls.length;j++){
					if (uls[j].className == ts_dropdownopen ) {
						ts_swapclass(uls[j],ts_dropdownopen,ts_dropdownclosed);
						if (uls[j].parentNode.previousSibling.className == ts_triggeron ){
							uls[j].parentNode.previousSibling.className = ts_triggeroff;
						}
					}
				}
				// not working when selects are in the same div
				//ts_swapclass(this.parentNode.getElementsByTagName('ul')[0],ts_dropdownclosed,ts_dropdownopen);
				var currentUL = this.nextSibling.getElementsByTagName('ul')[0] ;
				ts_swapclass(currentUL,ts_dropdownclosed,ts_dropdownopen);
				for (var m = 0 ; m < currentUL.childNodes.length ; m++){
					if (currentUL.childNodes[m].v == document.getElementById(this.vv).value) {
						currentUL.childNodes[m].className = ts_currentli  ;
					}else{
						currentUL.childNodes[m].className = '' ;
					}
				}
				return false;
			}
			trigger.appendChild(document.createTextNode(sels[i].options[0].text));
			sels[i].parentNode.insertBefore(trigger,sels[i]);
			var replaceUL=document.createElement('ul');
			// fix for bleading uls in khtml
			replaceUL.style.zIndex = ( sels.length - i ) * 10 + 100 ; 
			for(var j=0;j<sels[i].getElementsByTagName('option').length;j++){
				var newli=document.createElement('li');
				var newa=document.createElement('a');
				newli.v=sels[i].getElementsByTagName('option')[j].value;
				newli.elm=hiddenfield;
				newli.istrigger=trigger;
				//newa.href='#';
				newa.href='javascript://';
				newa.appendChild(document.createTextNode(
				sels[i].getElementsByTagName('option')[j].text));
				newa.innerHTML=URLDecode(sels[i].getElementsByTagName('option')[j].text)  
				newli.onclick=function(){ 
					this.elm.value=this.v;
					ts_swapclass(this.istrigger,ts_triggeron,ts_triggeroff);
					ts_swapclass(this.parentNode,ts_dropdownopen,ts_dropdownclosed) 
					this.istrigger.firstChild.nodeValue=this.firstChild.firstChild.nodeValue;
					return false;
				}
				newli.appendChild(newa);
				replaceUL.appendChild(newli);
				if (sels[i].getElementsByTagName('option')[j].selected == true &&  j > 0) {
					 selectedItem = newli ;
				}
			}
			// make scrollbar
			if ( j >= ts_maxitems ) {
				replaceUL.style.height = ts_scrollheight +'px' ;
			}
			ts_addclass(replaceUL,ts_dropdownclosed);
			var div=document.createElement('div');
			div.appendChild(replaceUL);
			ts_addclass(div,ts_boxclass);
			sels[i].parentNode.insertBefore(div,sels[i])
			toreplace[count]=sels[i];
			count++;
		}
		if (selectedItem){// set selected item
			selectedItem.onclick() ;
			selectedItem.onclick() ;
		}
	}
	for(i=0;i<count;i++){
		toreplace[i].parentNode.removeChild(toreplace[i]);
	}
	
	function ts_check(o,c){
	 	return new RegExp('\\b'+c+'\\b').test(o.className);
	}
	
	function ts_swapclass(o,c1,c2){
		var cn=o.className
		o.className=!ts_check(o,c1)?cn.replace(c2,c1):cn.replace(c1,c2);
	}
	
	function ts_addclass(o,c){
		if(!ts_check(o,c)){o.className+=o.className==''?c:' '+c;}
	}

}

