function actb(obj,ca)
{

	var submit1 = document.getElementById('submitForm1');

  	//alert(submit1);
	if (document.attachEvent)
    {  // for Internet Explorer
       submit1.attachEvent('onclick',there);
    }
    else
    { // for everyone else
      submit1.addEventListener('click',there,false);
    }
	/* ---- Public Variables ---- */
	this.actb_timeOut = -1; // Autocomplete Timeout in ms (-1: autocomplete never time out)
	this.actb_lim = 10;    // Number of elements autocomplete can show (-1: no limit)
	this.actb_firstText = false; // should the auto complete be limited to the beginning of keyword?
	this.actb_mouse = true; // Enable Mouse Support
	this.actb_delimiter = new Array(';',',');  // Delimiter for multiple autocomplete. Set it to empty array for single autocomplete
	this.actb_startcheck = 1; // Show widget only after this number of characters is typed in.
	/* ---- Public Variables ---- */

	/* --- Styles --- */
    this.actb_wordLength=55;
	this.actb_bgColor = '#FFFFFF';
	this.actb_textColor = '#080808';
	// this.actb_hColor = '#989898';
	this.actb_hColor = '#808000';
	this.actb_fFamily = 'Verdana';
	this.actb_fSize = '11px';
	this.actb_hStyle = 'text-decoration:underline;font-weight="bold"';
	this.actb_width='326px';
    this.actb_borderStyle='solid';
    this.actb_borderWidth='1px';
    this.actb_borderColor='#0f0f0f';
	/* --- Styles --- */

	/* ---- Private Variables ---- */
	var actb_delimwords = new Array();
	var actb_cdelimword = 0;
	var actb_delimchar = new Array();
	var actb_display = false;
	var actb_pos = 0;
	var actb_total = 0;
	var actb_subtotal=0;  //  I added these to allow
	var temp_subtotal=0; //     the download
	var actb_interval=20; //  of part of the data
	var actb_curr = null;
	var actb_rangeu = 0;
	var actb_ranged = 0;
	var actb_bool = new Array();
	var actb_pre = 0;
	var actb_toid;
	var actb_tomake = false;
	var actb_getpre = "";
	var actb_mouse_on_list = 1;
	var actb_kwcount = 0;
	var actb_caretmove = false;
	this.actb_keywords = new Array();

	/* ---- Private Variables---- */
	
	//alert(ca);
	this.actb_keywords = ca;
	var actb_self = this;

	actb_curr = obj;
	addEvent(actb_curr,"focus",actb_setup);
	function actb_setup(){
        actb_curr.value='';
		addEvent(document,"keydown",actb_checkkey);
		addEvent(actb_curr,"blur",actb_clear);
		addEvent(document,"keypress",actb_keypress);
	}
	

	//////**************************************************
    function there()
    {
		// this function handles the events for the button
		var answer='';
		if((actb_pos)&&(document.getElementById('tat_tr'+actb_pos)))// if a row is selected ...
		{
			var rowPos=document.getElementById('tat_tr'+actb_pos); //get the current row
			answer=rowPos.innerHTML; // answer = the stuff in that row
		}
		else
		{
			var field2=document.getElementById('field2'); //field2 is text box
			answer=field2.value; // answer is the stuff in the text box
		}
			var answer = answer.replace(/(<([^>]+)>)/ig,""); // remove all html tags
			answer=answer.replace("&nbsp;",""); // remove any '&nbsp'
		
		for(var counter=0;counter<actb_keywords.length;counter++)
		{
			if(actb_keywords[counter].indexOf(answer)>=0) // looks through the array of keywords to find match
			{ 
			answer=actb_keywords[counter]; // if so, answer will be a keyword
			counter=actb_keywords.length;
			}
		}
		answer = answer.substring(0,actb_wordlength);
		//alert($answer);
		var httpString ='http://mymanual.com/search.php?x=2&key_term='+escape(answer); //answer is added to string
		document.location.href=httpString;// http GET then sends the data in the URL
    }
	//////**************************************************

	function actb_clear(evt)
	{
		if (!evt) evt = event;
		removeEvent(document,"keydown",actb_checkkey);
		removeEvent(actb_curr,"blur",actb_clear);
		removeEvent(document,"keypress",actb_keypress);
		actb_removedisp();
	}
	
	//=========================================================================
	
	function actb_parse(n)
	{
		
		if (actb_self.actb_delimiter.length > 0)
		{
			var t = actb_delimwords[actb_cdelimword].trim().addslashes();
			var plen = actb_delimwords[actb_cdelimword].trim().length;
		}
		else
		{
			var t = actb_curr.value.addslashes();
			var plen = actb_curr.value.length;
		}
		
		var tobuild = '';
		var i;

		if (actb_self.actb_firstText)
		{
			var re = new RegExp("^" + t, "i");
		}
		else
		{
			var re = new RegExp(t, "i");
		}
		
		var p = n.search(re);
			
	
		if(p<0) // if re is not in the string ...
		{
		  plen=0; // plen=0 (length of p is set to 0)
		  p=0;  // p, location of string, is set to 0
		}
	
		for (i=0;i<p;i++)
		{
			tobuild += n.substr(i,1);
		}
		
		tobuild += "<font style='"+(actb_self.actb_hStyle)+"'>"
		
		for (i=p;i<plen+p;i++)
		{
			tobuild += n.substr(i,1);
		}
		tobuild += "</font>";
		
		for (i=plen+p;i<n.length;i++)
		{
			tobuild += n.substr(i,1);
		}
		return tobuild;
	}
	
	//============================================================================
	
	function actb_generate()
	{
		if (document.getElementById('tat_table'))
		{ 
			actb_display = false;
			document.body.removeChild(document.getElementById('tat_table')); 
		} 
		if (actb_kwcount == 0)
		{
			actb_display = false;
			return;
		}
		
		a = document.createElement('table');
		a.cellSpacing='1px';
		a.cellPadding='2px';
		a.style.position='absolute';
		a.style.top = eval(curTop(actb_curr) + actb_curr.offsetHeight) + "px";
		a.style.left = curLeft(actb_curr) + "px";
		a.style.backgroundColor=actb_self.actb_bgColor;
		a.style.borderStyle=actb_borderStyle;
		a.style.borderWidth=actb_borderWidth;
		a.style.borderColor=actb_borderColor;		
		a.id = 'tat_table';
		document.body.appendChild(a);
		var i;
		var first = true;
		var j = 1;
		
		if (actb_self.actb_mouse)
		{
			a.onmouseout = actb_table_unfocus;
			a.onmouseover = actb_table_focus;
		}
		var counter = 0;
		for (i=0;i<actb_self.actb_keywords.length;i++)
		{
			if (actb_bool[i]){
				counter++;
				r = a.insertRow(-1);
				if (first && !actb_tomake)
				{
					r.style.backgroundColor = actb_self.actb_hColor;
					first = false;
					actb_pos = counter;
				}
				else if(actb_pre == i)
				{
					r.style.backgroundColor = actb_self.actb_hColor;
					first = false;
					actb_pos = counter;
				}
				else
				{
					r.style.backgroundColor = actb_self.actb_bgColor;
				}
				r.id = 'tat_tr'+(j);
				c = r.insertCell(-1);
				c.style.color = actb_self.actb_textColor;
				c.style.fontFamily = actb_self.actb_fFamily;
				c.style.fontSize = actb_self.actb_fSize;
	            c.style.width=actb_width; 
			var keywords=(actb_self.actb_keywords[i]);
			var wlen=actb_self.actb_wordLength;
   			var keyword=(actb_self.actb_keywords[i]).substring(0,wlen);
			
			if(actb_self.actb_keywords[i].length>wlen)
			{
				var wend	= keyword.lastIndexOf(" ");
					keyword	= keyword.substring(0,wend);
			}
				c.innerHTML = actb_parse(keyword);
				//c.innerHTML = actb_parse(actb_self.actb_keywords[i]);
				c.id = 'tat_td'+(j);
				c.setAttribute('pos',j);
				
				if (actb_self.actb_mouse)
				{
					c.style.cursor = 'pointer';
					c.onclick=actb_mouseclick;
					c.onmouseover = actb_table_highlight;
				}
				j++;
			}
			if (j - 1 == actb_self.actb_lim && j < actb_total)
			{
				r = a.insertRow(-1);
				r.style.backgroundColor = actb_self.actb_bgColor;
				c = r.insertCell(-1);
				c.style.color = actb_self.actb_textColor;
				c.style.fontFamily = 'arial narrow';
				c.style.fontSize = actb_self.actb_fSize;
				c.align='center';
				replaceHTML(c,'\\/');
				if(actb_self.actb_mouse)
				{
					c.style.cursor = 'pointer';
					c.onclick = actb_mouse_down;
				}
				break;
			}
		}
		actb_rangeu = 1;
		actb_ranged = j-1;
		actb_display = true;
		if (actb_pos <= 0) actb_pos = 1;
	}
	
	//--------------------------------------------------------------------
	
	function actb_remake()
	{
		if (document.getElementById('tat_table'))
		{
			document.body.removeChild(document.getElementById('tat_table'));
		}
		a = document.createElement('table');
		a.cellSpacing='1px';
		a.cellPadding='2px';
		a.style.position='absolute';
		a.style.top = eval(curTop(actb_curr) + actb_curr.offsetHeight) + "px";
		a.style.left = curLeft(actb_curr) + "px";
		a.style.backgroundColor=actb_self.actb_bgColor;
                a.style.borderStyle=actb_borderStyle;
                a.style.borderWidth=actb_borderWidth;
                a.style.borderCOlor=actb_borderColor;		a.id = 'tat_table';
		a.id = 'tat_table';
		if (actb_self.actb_mouse)
		{
			a.onmouseout= actb_table_unfocus;
			a.onmouseover=actb_table_focus;
		}
		document.body.appendChild(a);
		var i;
		var first = true;
		var j = 1;
		if (actb_rangeu > 1)
		{
			r = a.insertRow(-1);
			r.style.backgroundColor = actb_self.actb_bgColor;
			c = r.insertCell(-1);
			c.style.color = actb_self.actb_textColor;
			c.style.fontFamily = 'arial narrow';
			c.style.fontSize = actb_self.actb_fSize;
			c.align='center';
			replaceHTML(c,'/\\');
			if (actb_self.actb_mouse)
			{
				c.style.cursor = 'pointer';
				c.onclick = actb_mouse_up;
			}
		}
		
		for (i=0;i<=actb_ranged;i++)
		{ 
		//table is recreated here
				
		//alert(i);
			if (true)
			{
				if (j >= actb_rangeu && j <= actb_ranged)
				{
					r = a.insertRow(-1);
					r.style.backgroundColor = actb_self.actb_bgColor;
					r.id = 'tat_tr'+(j);
					c = r.insertCell(-1);
					c.style.color = actb_self.actb_textColor;
					c.style.fontFamily = actb_self.actb_fFamily;
					c.style.fontSize = actb_self.actb_fSize;
	                                c.style.width=actb_width; 

					var wlen=actb_self.actb_wordLength;
					var keyword=(actb_self.actb_keywords[i]).substring(0,wlen);
					if(actb_self.actb_keywords[i].length>wlen)
					{
						var wend=keyword.lastIndexOf(" ");
						keyword=keyword.substring(0,wend);
					}
					c.innerHTML = actb_parse(keyword);
				
					c.id = 'tat_td'+(j);
					c.setAttribute('pos',j);
					if (actb_self.actb_mouse)
					{
						c.style.cursor = 'pointer';
						c.onclick=actb_mouseclick;
						c.onmouseover = actb_table_highlight;
					}
					j++;
				}
				else
				{
					j++;
				}
			}
			if (j > actb_ranged) break;
		}
		if (j-1 < actb_keywords.length)
		{
			r = a.insertRow(-1);
			r.style.backgroundColor = actb_self.actb_bgColor;
			c = r.insertCell(-1);
			c.style.color = actb_self.actb_textColor;
			c.style.fontFamily = 'arial narrow';
			c.style.fontSize = actb_self.actb_fSize;
			c.align='center';
			replaceHTML(c,'\\/');
			if (actb_self.actb_mouse)
			{
				c.style.cursor = 'pointer';
				c.onclick = actb_mouse_down;
			}
		}
	}
	
	//===========================================================================
	
	function actb_goup()
	{
		if (!actb_display) return;
		if (actb_pos == 1) return;
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_bgColor;
		actb_pos--;
		if (actb_pos < actb_rangeu) actb_moveup();
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_hColor;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list=0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================
	
	function actb_godown()
	{
	////////////////////////////////////
	///// this is where it happens /////
	////////////////////////////////////


        if (actb_pos==(temp_subtotal-18))
        { 
			var temp=actb_curr.value; 
			temp_subtotal=temp_subtotal+actb_interval;
			var limits=""+temp_subtotal+","+actb_interval;
			var x=aSend_post3b("string="+temp+"&limit="+limits);
        }

		if (!actb_display) return;
		if (actb_pos == actb_keywords.length) return;  /////////////////////////////
						
		/////   HERE IS THE ERRROR!!!  ///////******$$$$$$$$$&&&&&&&&&&&&///////
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_bgColor;
		//////////////////////////////////////////
		
		actb_pos++;
		
		if (actb_pos > actb_ranged) actb_movedown();
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_hColor;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list=0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================
	
	function actb_movedown()
	{
		actb_rangeu++;
		actb_ranged++;
		actb_remake();
	}
	
	//===========================================================================
	
	function actb_moveup()
	{
		actb_rangeu--;
		actb_ranged--;
		actb_remake();
	}

	//===========================================================================
	
	/* Mouse */
	function actb_mouse_down()
	{
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_bgColor;
		actb_pos++;
		actb_movedown();
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_hColor;
		actb_curr.focus();
		actb_mouse_on_list = 0;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list=0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================
	
	function actb_mouse_up(evt)
	{
		if (!evt) evt = event;
		if (evt.stopPropagation)
		{
			evt.stopPropagation();
		}
		else
		{
			evt.cancelBubble = true;
		}
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_bgColor;
		actb_pos--;
		actb_moveup();
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_hColor;
		actb_curr.focus();
		actb_mouse_on_list = 0;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list=0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================
	
	function actb_mouseclick(evt)
	{
		if (!evt) evt = event;
		if (!actb_display) return;
		actb_mouse_on_list = 0;
		actb_pos = this.getAttribute('pos');
		actb_penter();
	}
	
	//===========================================================================
	
	function actb_table_focus()
	{
		actb_mouse_on_list = 1;
	}
	
	//===========================================================================
	
	function actb_table_unfocus()
	{
		actb_mouse_on_list = 0;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list = 0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================
	
	function actb_table_highlight()
	{
		actb_mouse_on_list = 1;

		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_bgColor;
	
		actb_pos = this.getAttribute('pos');
		while (actb_pos < actb_rangeu) actb_moveup();
		while (actb_pos > actb_ranged) actb_movedown();
		document.getElementById('tat_tr'+actb_pos).style.backgroundColor = actb_self.actb_hColor;
		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list = 0;actb_removedisp();},actb_self.actb_timeOut);
	}
	
	//===========================================================================

	function actb_insertword(a)
	{
		if (actb_self.actb_delimiter.length > 0)
		{
			str = '';
			l=0;
			for (i=0;i<actb_delimwords.length;i++)
			{
				if (actb_cdelimword == i)
				{
					prespace = postspace = '';
					gotbreak = false;
					for (j=0;j<actb_delimwords[i].length;++j)
					{
						if (actb_delimwords[i].charAt(j) != ' ')
						{
							gotbreak = true;
							break;
						}
						prespace += ' ';
					}
					for (j=actb_delimwords[i].length-1;j>=0;--j)
					{
						if (actb_delimwords[i].charAt(j) != ' ') break;
						postspace += ' ';
					}
					str += prespace;
					str += a;
					l = str.length;
					if (gotbreak) str += postspace;
				}
				else
				{
					str += actb_delimwords[i];
				}
				if (i != actb_delimwords.length - 1)
				{
					str += actb_delimchar[i];
				}
		    }
			
			str=str.substring(0,actb_wordLength);
			
            var httpString='http://mymanual.com/search.php?x=1&key_term='+escape(str);
            document.location.href=httpString;

			setCaret(actb_curr,l);
		}
		else
		{
			actb_curr.value = a;
		}
		actb_mouse_on_list = 0;
		actb_removedisp();
	}
	
	//===========================================================================
	
	function actb_penter()
	{
		if (!actb_display) return;
		actb_display = false;
		var word = '';
		var c = 0;
		for (var i=0;i<=actb_self.actb_keywords.length;i++)
		{
			if (true) c++; // was if actb_bool[i];
	
			if (c == actb_pos)
			{
				word = actb_self.actb_keywords[i];
				break;
			}
		}
		actb_insertword(word);
		l = getCaretStart(actb_curr);
	}
	
	//===========================================================================
	
	function actb_removedisp()
	{
		if (actb_mouse_on_list==0)
		{
			actb_display = 0;
			if (document.getElementById('tat_table'))
			{
				setTimeout(" document.body.removeChild(document.getElementById('tat_table'));",500); 
			}
			if (actb_toid) clearTimeout(actb_toid);
		}
	}
	
	//===========================================================================
	
	function actb_keypress(e)
	{
		if (actb_caretmove) stopEvent(e);
		return !actb_caretmove;
	}
	
	//===========================================================================
	
	function actb_checkkey(evt)
	{
		
		//alert(evt);
		if (!evt) evt = event;
		a = evt.keyCode;
		caret_pos_start = getCaretStart(actb_curr);
		actb_caretmove = 0;
		switch (a)
		{
			case 38:
				actb_goup();
				actb_caretmove = 1;
				return false;
				break;
			case 40:
				actb_godown();
				actb_caretmove = 1;
				return false;
				break;
			case 13: case 9:
				if (actb_display){
					actb_caretmove = 1;
					actb_penter();
					return false;
				}else{
					return true;
				}
				break;
			default:
				setTimeout(function(){actb_tocomplete(a)},50);
				break;
		}
	}
	
	//===========================================================================

	function actb_tocomplete(kc)
	{
		//alert(kc);
		
		if (kc == 38 || kc == 40 || kc == 13) return;
		var i;
		if (actb_display)
		{ 
			var word = 0;
			var c = 0;
			for (var i=0;i<=actb_self.actb_keywords.length;i++)
			{
				if (actb_bool[i]) c++;
				if (c == actb_pos)
				{
					word = i;
					break;
				}
			}
			actb_pre = word;
		}
		else
		{ 
			actb_pre = -1
		}
		
		if (actb_curr.value == '')
		{
			actb_mouse_on_list = 0;
			actb_removedisp();
			return;
		}
			
			var temp=actb_curr.value;
				temp=temp.replace(/'/,"\'");
			
			var limits="0,"+actb_interval;
				temp_subtotal=actb_interval;
			var x=aSend_post3("string="+temp+"&limit="+limits);
			
		//alert(temp);	
		if (actb_self.actb_delimiter.length > 0)
		{
			caret_pos_start = getCaretStart(actb_curr);
			caret_pos_end = getCaretEnd(actb_curr);
			
			delim_split = '';
			for (i=0;i<actb_self.actb_delimiter.length;i++)
			{
				delim_split += actb_self.actb_delimiter[i];
			}
			delim_split = delim_split.addslashes();
			delim_split_rx = new RegExp("(["+delim_split+"])");
			c = 0;
			actb_delimwords = new Array();
			actb_delimwords[0] = '';
			for (i=0,j=actb_curr.value.length;i<actb_curr.value.length;i++,j--)
			{
				if (actb_curr.value.substr(i,j).search(delim_split_rx) == 0)
				{
					ma = actb_curr.value.substr(i,j).match(delim_split_rx);
					actb_delimchar[c] = ma[1];
					c++;
					actb_delimwords[c] = '';
				}
				else
				{
					actb_delimwords[c] += actb_curr.value.charAt(i);
				}
			}

			var l = 0;
			actb_cdelimword = -1;
			for (i=0;i<actb_delimwords.length;i++)
			{
				if (caret_pos_end >= l && caret_pos_end <= l + actb_delimwords[i].length)
				{
					actb_cdelimword = i;
				}
				l+=actb_delimwords[i].length + 1;
			}
			var ot = actb_delimwords[actb_cdelimword].trim(); 
			var t = actb_delimwords[actb_cdelimword].addslashes().trim();
		}
		else
		{
			var ot = actb_curr.value;
			var t = actb_curr.value.addslashes();
		}
		if (ot.length == 0)
		{
			actb_mouse_on_list = 0;
			actb_removedisp();
		}
		if (ot.length < actb_self.actb_startcheck) return this;
		if (actb_self.actb_firstText)
		{
			var re = new RegExp("^" + t, "i");
		}
		else
		{
			var re = new RegExp(t, "i");
		}

		actb_total = 0;
		actb_tomake = false;
		actb_kwcount = 0;
		for (i=0;i<actb_self.actb_keywords.length;i++)
		{
			actb_bool[i] = false;
			if (re.test(actb_self.actb_keywords[i]))
			{
				actb_total++;
				actb_bool[i] = true;
				actb_kwcount++;
				if (actb_pre == i) actb_tomake = true;
			}
		}

		if (actb_toid) clearTimeout(actb_toid);
		if (actb_self.actb_timeOut > 0) actb_toid = setTimeout(function(){actb_mouse_on_list = 0;actb_removedisp();},actb_self.actb_timeOut);
		actb_generate();
	}
	return this;
}
