var minVLen=Number.MAX_VALUE;
var	maxVLen=Number.MIN_VALUE;
var	 minTLen=Number.MAX_VALUE;
var	 maxTLen=Number.MIN_VALUE;
var len;
var h;
var c;
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
*/
	selectArray = new Array();
	var count=0;
	var toreplace=new Array();
	var sels=document.getElementsByTagName('select');
	r=0;
	
	for(var i=0;i<sels.length;i++){
		//alert(sels[i]);
		if (ts_check(sels[i],ts_selectclass))
		{
		//	alert(sels[i].getAttribute("name") );
			var selectName = sels[i].getAttribute("name");
			var sel = document.getElementById(selectName);
		//	var sel = document.getElementById("cities");
			lens = sel.length;
			
			minVLen=Number.MAX_VALUE;
			maxVLen=Number.MIN_VALUE;
			minTLen=Number.MAX_VALUE;
			maxTLen=Number.MIN_VALUE;
			
			
			for (j=0;j<sel.length;j++){
				
				if(sel[j].value.length < minVLen) minVLen = sel[j].value.length;
				if(sel[j].text.length < minTLen) minTLen = sel[j].text.length;
				if(sel[j].value.length > maxVLen) maxVLen = sel[j].value.length;
				if(sel[j].text.length > maxTLen) maxTLen = sel[j].text.length;
			}
			
			c = eval(maxTLen * 6 -10) +'px';
			u = eval(maxTLen * 6 +20) +'px';
			if(eval(maxTLen * 6)<70)
			{
				c='70px';
			}
		
		//var u = eval( c - 10);
			if(lens < 15)
			{
				 h = eval(lens * 12  +5) +'px';
			}
			else
			{
				 h = '200px';
			}
			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;
			//alert(hiddenfield.id+ " "+ hiddenfield.value);
			sels[i].parentNode.insertBefore(hiddenfield,sels[i]);
			var trigger=document.createElement('input');
			ts_addclass(trigger,ts_triggeroff);
			//trigger.href='#';
			trigger.value = sels[i].options[0].text;
			trigger.name = sels[i].options[0].value;
			
			trigger.onclick=function(){
				ts_swapclass(this,ts_triggeroff,ts_triggeron);
				ts_swapclass(this.parentNode.getElementsByTagName('ul')[0],ts_dropdownclosed,ts_dropdownopen);
				return false;
			};
			
			//trigger.appendChild(document.createTextNode(sels[i].options[0].text));
			sels[i].parentNode.insertBefore(trigger,sels[i]);
			var replaceUL=document.createElement('ul');
			//_setStyle(ul, 'float:left; font-weight:bold');
			replaceUL.setAttribute("id",selectName );
			replaceUL.id =selectName;
			var het = 'height:'+h +';width:'+u;
			//replaceUL.setAttribute("style", het );
			replaceUL.style.cssText = het;
			//replaceUL.attributes('id','')
			for(var j=0;j<sels[i].getElementsByTagName('option').length;j++)
			{
				var newli=document.createElement('li');
				var newa=document.createElement('input');
				newli.v=sels[i].getElementsByTagName('option')[j].value;
				newli.elm=hiddenfield;
				newli.istrigger=trigger;
				newa.setAttribute("style", 'width:'+c );
				//newa.style='width:'+c;
				newa.style.cssText=  'width:'+c;
				//newa.href='#';
				//newa.appendChild(document.createTextNode(sels[i].getElementsByTagName('option')[j].text));
				newa.value = sels[i].getElementsByTagName('option')[j].text;
				newa.name = sels[i].getElementsByTagName('option')[j].value;
				
				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.substr(0,11);
					
						this.istrigger.value = 	this.firstChild.value.substr(0,10);
					//alert(this.firstChild.value);
					//alert(this.istrigger.value);
					return false;
				};
				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++;
			
		
			
			
			
			selectArray[r] = [];
			selectArray[r].push(selectName);
			selectArray[r].push(c);
			selectArray[r].push(h);
			r=r+1;
			


		}
	}
	
/*
	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('input').length;j++)
			{
				var newopt=document.createElement('option');
				//newopt.value=uls[i].getElementsByTagName('input')[j].href;	
				newopt.appendChild(document.createTextNode(uls[i].getElementsByTagName('input')[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]);
	}
	
//	alert ("Maximum Value Length: "+maxVLen+"\nMinimum Value Length: "+minVLen+"\nMaximum Text Length: "+maxTLen+"\nMinimum Text Length: "+minTLen)
	

	
//	$('.dropcontainer ul').css('width' ,c);
	//$('.dropcontainer ul').css('width' ,u);
//	
//	$('#cities').css('height' ,'300px');
//	alert(selectArray);
//	
//	for (var z=1;z<selectArray.length;z++)
//	{
//		alert(selectArray[z][0]);
//		alert(selectArray[z][2]);
//		$('#cities').css('height' ,selectArray[z][2]);
//	}
//	
//	
//	
	
	
	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()
{
	
	//var sel = document.getElementById("cities");
	//lens = sel.length;
	/*for (i=0;i<sel.length;i++){
	
		if(sel[i].value.length < minVLen) minVLen = sel[i].value.length;
		if(sel[i].text.length < minTLen) minTLen = sel[i].text.length;
		if(sel[i].value.length > maxVLen) maxVLen = sel[i].value.length;
		if(sel[i].text.length > maxTLen) maxTLen = sel[i].text.length;
	}
	*/
	//alert ("Maximum Value Length: "+maxVLen+"\nMinimum Value Length: "+minVLen+"\nMaximum Text Length: "+maxTLen+"\nMinimum Text Length: "+minTLen)

	tamingselect();
	
	$('.trigger').blur(function(){
		
		if( ! $('.dropcontainer ul').hasClass('hasfocus'))
		{
			$('.dropcontainer ul').addClass('dropdownhidden').removeClass('dropdownvisible');
		}
		
	});
	
	$('.dropcontainer ul').mouseenter(function(){
	//	alert('n');
		$('.dropcontainer ul').addClass('hasfocus');
	}).mouseleave(function(){
	//	alert('out');
		$('.dropcontainer ul').removeClass('hasfocus');
    });
	
	
}
