
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_listclass='turnintoselect';		// class to identify ULs
	
	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

/// Turn all selects into DOM dropdowns ///
	var count=0;
	var toreplace=new Array();
	var sels=document.getElementsByTagName('select');
	for (var i=0;i<sels.length;i++) {
		if ( ts_check(sels[i],ts_selectclass) ) {
			var selindex=sels[i].selectedIndex;
			if ( selindex<0 ) selindex=0;
			var hiddenfield=document.createElement('input');
			hiddenfield.name=sels[i].name;
			hiddenfield.type='hidden';
			hiddenfield.id=sels[i].id;
			hiddenfield.value=sels[i].options[selindex].value;
			sels[i].parentNode.insertBefore(hiddenfield,sels[i])
			
			var trigger=document.createElement('a');
			ts_addclass(trigger,ts_triggeroff);
			trigger.href='#';
			
			trigger.selectedIndex=selindex;
			trigger.form=sels[i].form;
			if ( typeof(sels[i].onchange)=='function' ) trigger.triggerChange=sels[i].onchange;
			trigger.options=new Array();
			
			trigger.onclick=function(){
				ts_swapclass(this,ts_triggeroff,ts_triggeron)
				ts_swapclass(this.parentNode.getElementsByTagName('ul')[0],ts_dropdownclosed,ts_dropdownopen);
				this.blur();
				return false;
			}
			trigger.appendChild(document.createTextNode(sels[i].options[selindex].text));
			
			sels[i].parentNode.insertBefore(trigger,sels[i]);
			var replaceUL=document.createElement('ul');
			var options=sels[i].getElementsByTagName('option');
			for( var j=0; j<options.length; j++ ) {
				var newli=document.createElement('li');
				var newa=document.createElement('a');
				newli.option={
					value:options[j].value,
					text:options[j].text,
					index:j,
					trigger:trigger,
					elm:hiddenfield
				}
				trigger.options[j]=newli.option;
				newli.onclick=function() {
					ts_swapclass(this.parentNode, ts_dropdownopen, ts_dropdownclosed);
					with ( this.option ) {
						elm.value=value;
						ts_swapclass(trigger, ts_triggeron, ts_triggeroff);
						trigger.firstChild.nodeValue=text;
						trigger.selectedIndex=index;
						if ( typeof(trigger.triggerChange)=='function' ) trigger.triggerChange();
					}
					return false;
				}
				//newli.onmouseover=function(){setTimeout("closeExpand()",1000)};
				newa.href='#';
				newa.appendChild( document.createTextNode(options[j].text) );
				newli.appendChild(newa);
				replaceUL.appendChild(newli);
			}
			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++;
		}
	}
	
///	Turn all ULs with the class defined above into dropdown navigations ///
	var uls=document.getElementsByTagName('ul');
	for(var i=0;i<uls.length;i++) {
		if( ts_check(uls[i],ts_listclass) ) {
			var newform=document.createElement('form');
			var newselect=document.createElement('select');
			for( j=0; j<uls[i].getElementsByTagName('a').length; j++ ) {
				var newopt=document.createElement('option');
				newopt.value=uls[i].getElementsByTagName('a')[j].href;	
				newopt.appendChild(document.createTextNode(uls[i].getElementsByTagName('a')[j].innerHTML));	
				newselect.appendChild(newopt);
			}
			newselect.onchange=function() {
				window.location=this.options[this.selectedIndex].value;
			}
			newform.appendChild(newselect);
			uls[i].parentNode.insertBefore(newform,uls[i]);
			toreplace[count]=uls[i];
			count++;
		}
	}
	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;}
	}
}
/*
window.onload = function() {
	tamingselect();
}
*/