var g_f;

function CancelEvent(e)
{
	if (window.event)
	{
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	else
	{
		e.cancelBubble=true;
		e.returnValue=false;
	}
}

function EnableAutoComplete(inputBoxName, iframeOutName, divOutId, f, actype, optTLAOutId, onfocusFn )
{
	g_f = f;
	var inputBox = g_f[inputBoxName];
	var outputTLAOutId = "";

	if (optTLAOutId != null)
		outputTLAOutId = optTLAOutId;

	inputBox.onkeyup = function (e) { 
		var kc
		if (window.event) kc = window.event.keyCode;
		else if (e) kc = e.which;

		var wacf = frames[iframeOutName];
		if (wacf != null)
		{ 
			wacf.g_f = f;
			wacf.ACKeyUp(kc, iframeOutName, inputBoxName, divOutId, actype, outputTLAOutId);
		}
	};


	inputBox.autocomplete = "off";
	inputBox.onfocus = function () 
		{ 
			this.select();
			this.hasfocus = true; 
			if( onfocusFn != "" ) 
			{ 
				eval( onfocusFn );
			}
		}	
	inputBox.onblur = function () { 
		this.hasfocus = false;		
		var wacf = frames[iframeOutName];
		var acf = getObj(iframeOutName);
		if (acf != null)	{ wacf.HideACFrame(acf); }
	};

	inputBox.onkeypress = function (e) { 
		var kc
		if (window.event) kc = window.event.keyCode;
		else if (e) kc = e.which;

		var acf = getObj(iframeOutName);		

		if (kc == 13 && acf.hidden == false)
		{
			CancelEvent(e);
		
			var wacf = frames[iframeOutName];

			wacf.HideACFrame(acf);
			
			return false;
		}
	};

	inputBox.onkeydown = function (e) {
		var kc;
		if (window.event) kc = window.event.keyCode;
		else if (e) kc = e.which;

		var wacf = frames[iframeOutName];
		var acf = getObj(iframeOutName);		
		var divOut = wacf.getObj(divOutId);

		if (kc == 40 || kc == 38)
		{
			if (divOut.iSelected < divOut.childNodes.length && divOut.iSelected >= 0)
				wacf.ACEntryUnselect(divOut.childNodes[divOut.iSelected])
			
			if (kc == 40)
				divOut.iSelected++;
			else
				divOut.iSelected--;

			if (divOut.iSelected < 0)
				divOut.iSelected = 0;
			if (divOut.iSelected >= divOut.childNodes.length)
				divOut.iSelected = divOut.childNodes.length-1;

			if (divOut.iSelected < divOut.childNodes.length && divOut.iSelected >= 0)
				wacf.ACEntrySelect(divOut.childNodes[divOut.iSelected]);			
		}
		else if (kc == 9 || kc == 13)
		{			
			if (!acf.hidden)
			{
				var wacf = frames[iframeOutName];

				if (wacf != null)
				{
					if (wacf.ACFUpdate(inputBoxName))
					{
						if (divOut.iSelected >= 0 && divOut.iSelected < divOut.childNodes.length)
						{							
							this.value = divOut.childNodes[divOut.iSelected].displayNameLocal;
							if (outputTLAOutId.length > 0)
								g_f[outputTLAOutId].value = divOut.childNodes[divOut.iSelected].tla;
						}
					}

				}

				if (kc == 13)
				{
					if (window.event)
						wacf.HideACFrame(acf);
					
					CancelEvent(e);
					return false;
				}
			}
		}
	};

	AddFreeEventElement(inputBox);	
}

