	var DRAWER_PARENT_SUFFIX = "Drawer";
			var DRAWER_HEADER_SUFFIX = DRAWER_PARENT_SUFFIX + "Header";
			var DRAWER_CONTAINER_SUFFIX = DRAWER_PARENT_SUFFIX + "Container";
			var STYLE_OPEN = "headerActive";
			var STYLE_CLOSE = "headerEnabled";
			
			var list = null; // will hold reference to select item
			var specs = null;
			var specRefs = null;
			
			function specItem(id, dispText, pos) {
				var self = this;
				
				this.id = id;
				this.headerRef = null;
				this.displayText = dispText;
				this.cardinality = pos;
				this.isOpen = false;
				this.toggle = function() {
					openClosePackage(document.getElementById((self.id + DRAWER_HEADER_SUFFIX)).parentNode, STYLE_OPEN , STYLE_CLOSE);
					
				};
			}
			
			function extractId(substrate) {
				var id = "";
				
				var pos = substrate.indexOf(DRAWER_HEADER_SUFFIX);
				if(pos != -1) {
					id = substrate.substring(0, pos);
				}
				
				return id;
			}
			
			function drawerToggler(id, closeOthers) {
				
				//call the toggle function for the specItem:
				//alert(id);
				specRefs[id].toggle();
				//set the isOpen property to the inverse of what it was previously:
				specRefs[id].isOpen = specRefs[id].isOpen ? false : true;
				
				if(closeOthers) {
					//in this case we assume that we want to move the relative screen position towards the drawer:
					//close any other drawer which is open
					for(var i=0; i < specs.length; i++) {
						//can exclude the current one:
						if(i != specRefs[id].cardinality) {
							if(specs[i].isOpen) { 
								specs[i].toggle();
								specs[i].isOpen = false;
							};
						}
					}
					
					window.location = "#" + id;
				}
				
			}
			
			function buildSelectList() {
				//get reference to the empty select element:
				list = document.getElementById("featuresSpecsList");
				
				//loop through
				myString = "";
				for(var i=0; i < specs.length; i++) {
					var specRef = specs[i];
					//build the option:
					var temp = new Option(specRef.displayText, specRef.id, false, false);
					//list.options[list.options.length] = temp;
					myString += "<option value='" + specRef.id + "'>" + specRef.displayText + "</option>";
					//alert(myString);
					
				}
				
				//Fix to display accented characters in the drop down.  Excapes are not rendered when passed to a javascript constructor
				if (navigator.userAgent.indexOf("Firefox") == -1) {
					getItem("featuresSpecsList").outerHTML = '<select id="featuresSpecsList" onchange="drawerToggler(this.options[selectedIndex].value, true);">' + myString + '</select>';
				} else {
					getItem("featuresSpecsList").innerHTML = myString;
				}
				//alert(getItem("featuresSpecsList").outerHTML);
				//open the the first drawer, as a matter of course:
				drawerToggler(specs[0].id, false);
				
				//omniture-specific variable setting; variable is defined in utils.js
				pageLoadTabSelect = true;
			}
			
function showHideFields() {
	var elemRef = getItem('featuresSpecsList');
	if(elemRef) {
		if(elemRef.style.visibility != "hidden") {
			elemRef.style.visibility = "hidden";
		}
		else {
			elemRef.style.visibility = "visible";
		}
	}
}

