
function onTextInputFocus() {
	
	var textInput = document.getElementById('nlvLookupTextInput').getAttribute('value');
	
	var elNlvLookupTextInput = document.getElementById('nlvLookupTextInput');
	
	if (textInput == 'Type test name') {
		elNlvLookupTextInput.setAttribute('value','');
		elNlvLookupTextInput.style.color = '#000000';
	}
	
}

		
var gCurFilterItemId = '0';
function getNLVs(sQuery) {

	var aResults = [];
	
	if(sQuery.length > 0) { 

	var oResponse = nlvDataSet;
	
		if (oResponse) {
		
	for (var i = oResponse.length -1; i >= 0; i--) {
	
	    if (!oResponse[i]) continue; // For IE which wants to start at oResponse.length -2
	
		var sKey = oResponse[i].LABEL;

		var sKeyText = sKey.replace(/<.*?>/g, ""); // strip tags while comparing to query

		var sKeyIndex = encodeURI(sKeyText.toLowerCase()).indexOf(sQuery.toLowerCase());

		// Return results that match criteria - a) match query string or all in current category
		if ( ((sKeyIndex > -1) || (sQuery == "*")) && (oResponse[i].GROUP.indexOf(gCurFilterItemId) > -1) ) {
			aResults.unshift([sKey,oResponse[i].DETAIL,oResponse[i].GROUP.charAt(2),oResponse[i].CATEGORY]);
		}
		
	}
}
	return aResults;
} else {
	return null;
}
	
}


NLV_ACJSFunction = function() {
	var oACDS;
	var oAutoComp;
	var blnTextBoxInvalid = false;
	var blnOnItemSelected = false;

	return {
		init: function() {
			oACDS = new YAHOO.widget.DS_JSFunction(getNLVs);
			oAutoComp = new YAHOO.widget.AutoComplete("nlvLookupTextInput","nlvLookupDisplay", oACDS);

			oAutoComp.autoHighlight = true;
			oAutoComp.queryDelay = 0;
			oAutoComp.maxResultsDisplayed = 8;
			
			oAutoComp.formatResult = function(aArgs, sQuery) {

				return "<img src=\"../nlvimages/" + aFilterLinkColors[aArgs[2]] + "-bullet.png\"/><a class=\"menuItem\" title=\"" + aArgs[3] +"\">" + aArgs[0] + "</a>"
			},
			
			oAutoComp._clearList = function() { 
				
				var bForce = false;
				
				if (arguments.length > 0)
					bForce = arguments[0];
				
				var textInputValue = document.getElementById('nlvLookupTextInput').value;
				
				if (bForce == true) {

			    this._oContainer._oContent.scrollTop = 0;

			    var aItems = this._aListItems;

			    if(aItems && (aItems.length > 0)) {

			        for(var i = aItems.length-1; i >= 0 ; i--) {

			            aItems[i].style.display = "none";

			        }

			    }

			    if (this._oCurItem) {

			        this._toggleHighlight(this._oCurItem,"from");

			    }

			    this._oCurItem = null;

			    this._nDisplayedItems = 0;

			    this._sCurQuery = null;

			    this._toggleContainer(false);

				}

			}
			
			oAutoComp.itemSelectEvent.subscribe(NLV_ACJSFunction.nlvOnItemSelect);
			oAutoComp.textboxKeyEvent.subscribe(NLV_ACJSFunction.nlvOnTextBoxKeyEvent);
			oAutoComp.textboxFocusEvent.subscribe(NLV_ACJSFunction.nlvOnTextBoxFocusEvent);	
			oAutoComp.dataReturnEvent.subscribe(NLV_ACJSFunction.nlvOnDataReturn); 
			oAutoComp.dataRequestEvent.subscribe(NLV_ACJSFunction.nlvOnDataRequest); 
			
			oACDS.flushCache();
			oAutoComp.sendQuery("*");
			document.getElementById("nlvLookupHeader").innerHTML = "<div class=\"categoryHeading\">" + aCategoryNames[gCurFilterItemId] + "</div>";

		},

		nlvOnItemSelect: function(sEvent,aArgs) {
		
            blnOnItemSelected = true;		
			blnTextBoxInvalid = true;
			
			document.getElementById('nlvLookupTextInput').style.backgroundColor = "#FFFFFF";
			document.getElementById('nlvLookupTextInput').style.color = "#999999";	

			oAutoComp.setBody("<span class=\"menuItemResult\" title=\"" + aArgs[2][3] + "\"><img src=\"../nlvimages/" + aFilterLinkColors[aArgs[2][2]] + "-bullet.png\"/> " + aArgs[2][0] + ": " + aArgs[2][1] + "</span>");
			
			document.getElementById("nlvLookupFooter").innerHTML = "";
			
			document.getElementById('nlvLookupTextInput').value = document.getElementById('nlvLookupTextInput').value.replace(/<.*?>/g, "");
			
			document.getElementById('nlvLookupTextInput').blur();
			
		},
		nlvOnTextBoxKeyEvent: function(aArgs) {
			oAutoComp._clearList(true);
			var textInput = document.getElementById('nlvLookupTextInput').value;
			if ( (textInput == "") || (textInput == "Type test name")) {
				oACDS.flushCache();
				oAutoComp.sendQuery("*");
			}
		},
		nlvOnTextBoxFocusEvent: function(aArgs) {
		  
		  // Ugly hack to avoid MSIE event bubbling issue
		  if (navigator.appVersion.indexOf("MSIE")!=-1) {
		    if (blnOnItemSelected == true) {
		      blnOnItemSelected = false;
		      return;
		    }
		    }
		
			if (blnTextBoxInvalid == true) {
				document.getElementById('nlvLookupTextInput').value = "";
				blnTextBoxInvalid = false;
			}
			
			document.getElementById('nlvLookupTextInput').style.backgroundColor = '#FFFFCC';
			var textInput = document.getElementById('nlvLookupTextInput').value;

			if ((textInput == "") || (textInput == "Type test name")) {
				document.getElementById('nlvLookupTextInput').value = "";
				document.getElementById("nlvLookupHeader").innerHTML = "<div class=\"categoryHeading\">" + aCategoryNames[gCurFilterItemId] + "</div>";
				document.getElementById("nlvLookupTextInput").style.color = "#000000";
				oACDS.flushCache();
				oAutoComp.sendQuery("*");
			}
		},
		onShowFilterLinkClick: function() {
			oACDS.flushCache();
			oAutoComp.setBody( document.getElementById("nlvCategoryMenu").innerHTML);
			document.getElementById("nlvLookupFooter").innerHTML = "";
			YAHOO.util.Event.addListener(document.getElementById('_0'),'click',NLV_ACJSFunction.onFilterItemClick, '0');
			YAHOO.util.Event.addListener(document.getElementById('_1'),'click',NLV_ACJSFunction.onFilterItemClick, '1');
			YAHOO.util.Event.addListener(document.getElementById('_2'),'click',NLV_ACJSFunction.onFilterItemClick, '2');
			YAHOO.util.Event.addListener(document.getElementById('_3'),'click',NLV_ACJSFunction.onFilterItemClick, '3');
			YAHOO.util.Event.addListener(document.getElementById('_4'),'click',NLV_ACJSFunction.onFilterItemClick, '4');
			YAHOO.util.Event.addListener(document.getElementById('_5'),'click',NLV_ACJSFunction.onFilterItemClick, '5');
			YAHOO.util.Event.addListener(document.getElementById('_6'),'click',NLV_ACJSFunction.onFilterItemClick, '6');
			YAHOO.util.Event.addListener(document.getElementById('_7'),'click',NLV_ACJSFunction.onFilterItemClick, '7');
			YAHOO.util.Event.addListener(document.getElementById('_8'),'click',NLV_ACJSFunction.onFilterItemClick, '8');
		},
		onFilterItemClick: function(evt, category) {

			//Set filter ID
			gCurFilterItemId = parseInt( category );
			
			// Set filter image
			document.magnifier.src = '../nlvimages/magnifier-arrow-' + aFilterLinkColors[gCurFilterItemId] + '.png';
			document.getElementById("nlvLookupHeader").innerHTML = "<div class=\"categoryHeading\">" + aCategoryNames[gCurFilterItemId] + "</div>";
			document.getElementById('nlvLookupTextInput').value = "Type test name";
			document.getElementById('nlvLookupTextInput').style.color = '#999999';
			
			oACDS.flushCache();

		},
		nlvOnDataReturn: function(aArgs) {

			var aResultsLength =  arguments[1][2].length;
			var sQuery = arguments[1][1];

			var wTestWord = "tests";
			if (arguments[1][2].length == 1)
				wTestWord = "test";
				
			var sMessage = "";

			var iNumShown = (oAutoComp.maxResultsDisplayed >= aResultsLength)?aResultsLength:oAutoComp.maxResultsDisplayed;
			sMessage = "Showing " + iNumShown + " of " + aResultsLength + " " + wTestWord;

			document.getElementById("nlvLookupFooter").innerHTML = "<div class=\"categoryFooter\">" + sMessage + "</div>";
			
			if (aResultsLength == 0)
			oAutoComp.setBody("<span style=\"font-family:arial;font-size:10pt\">No matches found.</span>");

		},
		nlvOnDataRequest: function(aArgs){
			//alert("nlvOnDataRequest" + "; ac: " + aArgs[0] + "; sQ: " + aArgs[1]);
			//oAutoComp.setHeader("<div class=\"nlvDisplayHeader\">" + +  arguments[0] + ", " + arguments[1] + ", " + arguments[2] + "</div>");
			//alert("nlvOnDataRequest: " +  arguments[0] + ", " + arguments[1] + ", " + arguments[2]);
		}
		
	};
}();

var aFilterLinkColors = ['white','red','pink','green','yellow','blue','purple','tiel','orange'];

var aCategoryNames = new Array();
aCategoryNames[0] = "All Studies";
aCategoryNames[1] = "Hematology";
aCategoryNames[2] = "Blood, Plasma, and Serum Chemistry Studies";
aCategoryNames[3] = "Endocrine";
aCategoryNames[4] = "Urine";
aCategoryNames[5] = "Gastrointestinal";
aCategoryNames[6] = "Pulmonary";
aCategoryNames[7] = "Cerebrospinal Fluid";
aCategoryNames[8] = "Hemodynamic Measurements";