var arrOptions = new Array();
var strLastValue="";
var theTextBox="";
var TextBox=""
var currentValueSelected=-1;
var req;
var XMLHttpReq;
	
function aaa(){
var elemSpan = document.createElement("span");
elemSpan.id = "spanOutput";
elemSpan.className = "spanTextDropdown";
document.body.appendChild(elemSpan);
document.frmIndex.keyword.onMouseDown = GiveOptions();
}
function GiveOptions()
{
	var intKey = -1;
	if(window.event){
		intKey = event.keyCode;  //to get value of KeyBoard 
		//alert(intKey);
		//theTextBox = event.srcElement;
		//if(event.srcElement.tagName=="keyword")
		//alert("abc");
		theTextBox =document.getElementById('keyword');
	}
	if(theTextBox.value.length == 0){
			HideTheBox();
			strLastValue = "";
			return false;
	}
	if(intKey == 13){
			GrabHighlighted();
			theTextBox.blur();
			return false;
	} 
	
	else if(intKey == 38){
		MoveHighlight(-1);	
		return false;
	}
	
	else if(intKey == 40){
		MoveHighlight(1);
		return false;
	}
	if(theTextBox.value.indexOf(strLastValue)!=0||
		arrOptions.length == 0 || (theTextBox.value.length>0)||
		(theTextBox.value.length<= strLastValue.length))
	{
		strLastValue = theTextBox.value;//alert(theTextBox.value);
		TypeAhead(theTextBox.value);
	}
	else
	{
		BuildList(theTextBox.value);
	}
}

function createXMLHttpRequest(){
	//alert("sss");
		if(window.XMLHttpRequest){
			req = new XMLHttpRequest();
		}
		else if(window.ActiveXObject){
			try{
				req=new ActiveXObject("MSxml12.XMLHTTP");
			}catch(e){
				try{
					req = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e){}
			}
		}
}

function TypeAhead(xStrText)
	{ 	
		TextBox =document.getElementById('lanType');
		var lanType="";
	 	lanType=TextBox.value;
		createXMLHttpRequest();
		var url = "../../com_makeIndex?lanType="+lanType+"&param="+xStrText;
			req.open("GET",url,true);
			req.onreadystatechange=callback;
			req.send(null);
	}
	
function callback(){
	if(req.readyState == 4){
		if(req.status == 200){
			parseMessage();			
		}
		else
		{
			alert ("Not able to retrieve description"+ req.status);
			
		}
	}
	else
	{}
}

function parseMessage() {
	var xmlDoc = req.responseXML.documentElement;//alert(xmlDoc);
	var node = xmlDoc.getElementsByTagName('info');
	//alert(node);
	arrOptions = new Array();
	for(var i=0;i<node.length;i++)
	{
		arrOptions[i]=node[i].firstChild.nodeValue;
	}
	//alert(theTextBox.value);
	BuildList(theTextBox.value);
	strLastValue = theTextBox.value;
}

function BuildList(theText){
	SetElementPosition();
	var inner = "";
	var theMatches = MakeMatches(theText);
	
	for(var i=0;i<theMatches.length;i++)
	{
		inner +=theMatches[i];
	}
	
	if(theMatches.length>0)
	{
		document.getElementById("spanOutput").innerHTML=inner;
			document.getElementById("OptionsList_0").className ="spanHighElement";
			currentValueSelected = 0;
	}
	else{
		HideTheBox();
	}
}

function SetElementPosition(){

	var selectedPosX = 0;
	var selectedPosY = 0;
	var theElement = document.frmIndex.keyword;
	var theTextBoxInt = document.frmIndex.keyword;
	if(!theElement) return;
	var theElemHeight = theElement.offsetHeight;
	var theElemWidth = theElement.offsetWidth;
	while(theElement != null){
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	xPosElement = document.getElementById("spanOutput");
	xPosElement.style.left = selectedPosX;
	xPosElement.style.width = theElemWidth;
	xPosElement.style.top = selectedPosY + theElemHeight;
	xPosElement.style.display = "block";
}

var countForId = 0;
function MakeMatches(xCompareStr)
{
	countForId = 0;
	var matchArray = new Array();
	var regExp = new RegExp(xCompareStr,"ig");
	for(var i=0;i<arrOptions.length;i++)
	{
		if((arrOptions[i].search(regExp))>=0)
		{
			matchArray[matchArray.length]=CreateUnderline(arrOptions[i],xCompareStr,i);
		}
		else
		{
			continue;
		}
	}//alert(matchArray);
	return matchArray;
}

var undeStart = "<span class='spanMatchText'>";
var undeEnd = "</span>";
var selectSpanStart = "<span style='width:100%;display:block;' class='spanNormalElement' onmouseover='SetHighColor(this)'";
var selectSpanEnd ="</span>";
function CreateUnderline(xStr,xTextMatch,xVal){
	selectSpanMid = "onclick='SetText(" + xVal +")'"+
	"id='OptionsList_"+
	countForId+"'theArrayNumber='"+xVal+"'>";
	countForId++;
	var regExp = new RegExp(xTextMatch,"ig");
	var start = xStr.search(regExp);
	var matchedText = xStr.substring(start,start + xTextMatch.length);
	var Replacestr = xStr.replace(regExp,undeStart+matchedText+undeEnd);
	return selectSpanStart + selectSpanMid + Replacestr + selectSpanEnd;
}

function SetHighColor(theTextBox){
	if(theTextBox){
		currentValueSelected = 
		theTextBox.id.slice(theTextBox.id.indexOf("_")+1,
		theTextBox.id.length);
	}
	for(var i=0;i < countForId; i++){
		document.getElementById('OptionsList_' + i).className = 'spanNormalElement';
	}
	document.getElementById('OptionsList_' +
	currentValueSelected).className = 'spanHighElement';
}

function SetText(xVal){
	theTextBox = document.frmIndex.keyword;
	theTextBox.value = arrOptions[xVal];
	document.frmIndex.submit();
	//document.getElementById("spanOutput").style.display = "none";
	//currentValueSelected = -1;
}

function GrabHighlighted(){//alert("aaaaa");
	if(currentValueSelected >= 0){
		xVal = document.getElementById("OptionsList_" +
		currentValueSelected).getAttribute("theArrayNumber");
		SetText(xVal);
		HideTheBox();
	}
}

function HideTheBox(){
	document.getElementById("spanOutput").style.display = "none";
	currentValueSelected = -1;
}

function MoveHighlight(xDir){
	if(currentValueSelected >= 0){
		newValue = parseInt(currentValueSelected) + parseInt(xDir);
		if(newValue > -1 && newValue <countForId){
			currentValueSelected = newValue;
			SetHighColor(null);
		}
	}
}

function ReDraw()
{
	BuildList(document.frmIndex.keyword.value);
	//alert("dddddddddddd");
}
function hide(){
setTimeout("HideTheBox()",200);
}