function kPress(e)
{	
	if (!e) e = event;
	var keycode = e.keyCode;
	var ele;
	if (e.currentTarget)
	{
		ele = e.currentTarget;
	}
	else
	{
		ele = e.srcElement;
	}
	//alert(keycode);
	//alert(ele);
	//alert("Start: " + e.cancelBubble);
	if(ele != null && navigator.appName == "Microsoft Internet Explorer") {
		//alert("ele != null && IE: " + e.cancelBubble);
		/*
		if(keycode == 8 || keycode == 127) // backspace
		{
			if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
				ele.enteredText = ele.enteredText.substring(0,ele.enteredText.length-1);
				ele.insertIndex = -1;
			}
			else{
				ele.enteredText = ele.enteredText.substr(0,ele.insertIndex-1) + ele.enteredText.substr(ele.insertIndex);
				if(ele.insertIndex > 0 ) {
					ele.insertIndex = ele.insertIndex - 1;
				}
			}
			resetTime(ele);
			e.cancelBubble=true;
			setSelected(e);
			return false;
		}
		else if(keycode == 46){  // delete
			if(e.shiftKey) {
				ele.enteredText = "";
				ele.selectedIndex=0;
				ele.insertIndex = -1;
			}
			else {
				ele.enteredText = ele.enteredText.substr(0,ele.insertIndex) + ele.enteredText.substr(ele.insertIndex+1);
			}
			resetTime(ele);
			setSelected(e);
		}
		else 
		*/
		if( keycode == 8 || keycode == 127 ) // backspace
		{
			//alert("Keycode 8: " + e.cancelBubble);
			ele.enteredText = '';
			if (!e.cancelBubble)
			{
				e.cancelBubble = true;
			}
			/*
			if (e.stopPropagation)
			{
				alert("Stopping Propagation");
				e.stopPropagation();
			}
			
			resetTime(ele);
			setSelected();
			*/
			return false;
		}
		else if( keycode == 37 )
		{ // left arrow
			if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
			ele.insertIndex = ele.enteredText.length-1;
			}
			else {
			if(ele.insertIndex > 0 ) {
				ele.insertIndex = ele.insertIndex - 1;
			}
			}
			resetTime(ele);
			setSelected(e);
		}
		else if( keycode == 39 )
		{ // right arrow
			if(isNaN(ele.insertIndex) || ele.insertIndex == -1) {
			ele.insertIndex = ele.enteredText.length;
			}
			else {
			if(ele.insertIndex < ele.enteredText.length) {
				ele.insertIndex = ele.insertIndex + 1;
			}
			}
			resetTime(ele);
			setSelected(e);
		}
		else if( keycode == 9 || keycode == 39 || keycode == 40 )
		{ // tab,up and down arrow
			e.cancelBubble=false;
			ele.enteredText = "";
			ele.insertIndex = -1;
			return true;
		}
	}
	return true;
}
function kCancel(e)
{
	var keycode = e.keyCode;
	var ele;
	if (e.currentTarget)
	{
		ele = e.currentTarget;
	}
	else
	{
		ele = e.srcElement;
	}
	if (navigator.appName == "Microsoft Internet Explorer")
	{
		e.cancelBubble = true;
		return false;
	}
}
function kSelect(e)
{
	if (navigator.appName == "Microsoft Internet Explorer") {
		var keycode = e.keyCode;
		var ele;
		if (e.currentTarget)
		{
			ele = e.currentTarget;
		}
		else
		{
			ele = e.srcElement;
		}
		if(isNaN(ele.insertIndex)) {
			ele.insertIndex = -1;
		}
		if(ele.insertIndex > -1) {
			ele.enteredText = ele.enteredText.substr(0,ele.insertIndex) +  String.fromCharCode(keycode) + ele.enteredText.substr(ele.insertIndex);
			ele.insertIndex = ele.insertIndex +1;
		}
		else {
			if(ele.enteredText == "") {
				ele.lastEntered = new Date();
			}
			else {
				var curTime = new Date();
				var t = curTime.getTime() -  ele.lastEntered;
				ele.lastEntered = curTime;
				if(t > 2000) {
							ele.enteredText = "";
 				}
			}
			ele.enteredText = ele.enteredText + String.fromCharCode(keycode);
		}
		e.cancelBubble=true;
		//window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
		return setSelected(e);
	}

	/**********/

	function resetTime(ele){
			var curTime = new Date();
			var t = curTime.getTime() -  ele.lastEntered;
			ele.lastEntered = curTime;
			alert(ele.lastEntered);
			//window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
	}
	function setSelected(e){
		if (!e) e = event;
		var ele;
		var txt;
		if (e.currentTarget)
		{
			ele = e.currentTarget;
		}
		else
		{
			ele = e.srcElement;
		}
		if (ele != null)
		{ // detect if element exists
			var enteredText = ele.enteredText.toLowerCase();
			var selectIndex = -1;
			var selectLength = 20000;
			if (ele.children)
			{
				for(k=0; k < ele.children.length;k++){
					txt = ele.children[k].text.toLowerCase()
					if( txt.indexOf(enteredText) == 0) {
					if(txt == enteredText){
		  				selectIndex =k;
		  				break;
		  			}
		  			var len = txt.length;
		  			if(selectLength > len) {
		  				selectLength = len;
		  				selectIndex = k;
		  			}
					}
				}
			}
			else
			{
				//alert(enteredText);
				for (k=0; k < (ele.length-1); k++)
				{
					txt = ele.options[k].text;
					if( txt.indexOf(enteredText) == 0) {
						if(txt == enteredText){
		  				selectIndex =k;
		  				break;
		  			}
		  			var len = txt.length;
		  			alert(len);
		  			if(selectLength > len) {
		  				selectLength = len;
		  				selectIndex = k;
		  			}
					}
				}
			}
			if(selectIndex > -1) {
				ele.selectedIndex=selectIndex;
				//window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
				return false;
			}
		} // end if
		return false;
	}
}