function quickDowns(selectID){
	
	/* Written by Jon Linklater-Johnson June 2008 ~ http://binarytales.co.uk */
	/* Written for Richard Quick Design ~ http://richardquickdesign.com */
	/* Profiling at around 28ms according to Firebug */

	// Tester Function
	if(!document.getElementById || !document.getElementsByTagName){
		return false;
	}
		
	//Set Us Up The Variables
	var subOptions = new Array();
	var mainOptions = new Array();

	// Get Exisiting Select
	var select = document.getElementById(selectID);
	
	var optgroups = select.getElementsByTagName('optgroup');

	// Clone Multi Dimensional Array of Sub Options
	for (var i=0; i < optgroups.length; i++) {
		subOptions[i] = new Array(optgroups[i].getElementsByTagName('option').length);
		for (var j=0; j < subOptions[i].length; j++) {			
			subOptions[i][j] = optgroups[i].getElementsByTagName('option')[j];
		}
	}
	
	// Get Main Options
	var j = 0;
	for (var i=0; i < select.childNodes.length; i++){
		if(select.childNodes[i].nodeName == "OPTION"){
			mainOptions[j] = select.childNodes[i].cloneNode(true);
			j++;
		}
		else if (select.childNodes[i].nodeName == "OPTGROUP"){
			mainOptions[j] = select.childNodes[i].getAttribute('label');	
			j++;
		}
	}

	// Remove Original Options
	while (select.firstChild){select.removeChild(select.firstChild);}
	
	// Create New Select From OptGroups
	select.setAttribute("id",selectID + "group");
	select.setAttribute("name",selectID + "group");
	
	j = 0;
	for (var i=0; i < mainOptions.length; i++) {			
		if(mainOptions[i].nodeType == 1){
			var newOption = document.createElement("option");
			newOption.setAttribute("value",mainOptions[i].getAttribute("value"));
			newOption.setAttribute("class","other")
			select.appendChild(newOption);	
				var newOptionText = document.createTextNode(mainOptions[i].firstChild.nodeValue);		
				newOption.appendChild(newOptionText);		
		}
		else{
			var newOption = document.createElement("option");
			newOption.setAttribute("value",j);
			// Get and Set "selected" here
			select.appendChild(newOption);	
				var newOptionText = document.createTextNode(mainOptions[i]);
				newOption.appendChild(newOptionText);
			j++;
		}
	}

	//Create New Select With Sub Options
	var newSelect = document.createElement("select");
	newSelect.setAttribute("id",selectID);
	newSelect.setAttribute("name",selectID);
	select.parentNode.appendChild(newSelect);

	if(mainOptions[0].nodeType == 1){
		var newOption = document.createElement("option");
		newOption.setAttribute("value",mainOptions[0].getAttribute("value"));
		newSelect.appendChild(newOption);	
		newSelect.setAttribute("disabled","disabled");
		newSelect.setAttribute("id",selectID + "disabled");
		newSelect.setAttribute("name",selectID + "disabled");
		select.setAttribute("id",selectID);
		select.setAttribute("name",selectID);	
	}
	else{
		for (var i=0; i < subOptions[0].length; i++) {	
			var newOption = document.createElement("option");
			newSelect.appendChild(newOption);	
			var newOptionText = document.createTextNode(subOptions[0][i].firstChild.nodeValue);		
			newOption.appendChild(newOptionText);	
		}
	}
	
	// Update Sub Options
	select.onchange = function() {
		while (newSelect.firstChild){newSelect.removeChild(newSelect.firstChild);}

		if(this.options[this.selectedIndex].getAttribute("class") == "other"){
			var newOption = document.createElement("option");
			newOption.setAttribute("value",this.options[this.selectedIndex].getAttribute("value"));
			newSelect.appendChild(newOption);
			newSelect.setAttribute("disabled","disabled");
			newSelect.setAttribute("id",selectID + "disabled");
			newSelect.setAttribute("name",selectID + "disabled");
			select.setAttribute("id",selectID);
			select.setAttribute("name",selectID);
		}else{	
			var group = this.options[this.selectedIndex].value;
			for (var i=0; i < subOptions[group].length; i++) {	
				newSelect.appendChild(subOptions[group][i].cloneNode(true));
				newSelect.removeAttribute("disabled");
				select.setAttribute("id",selectID + "group");
				select.setAttribute("name",selectID + "group");
				newSelect.setAttribute("id",selectID);
				newSelect.setAttribute("name",selectID);
			}
		}
	};	
}
