function handleKey(e)
{
    keycode = event.keyCode;
    ele = event.srcElement;
    //alert(keycode);
    if(ele != null) {
				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);
					event.cancelbubble=true;
					setSelected();
					return false;
				}
				else if(keycode == 46){  // delete
					if(event.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();
				}
				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();
				}
				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();
				}
				else if(keycode == 9 || keycode == 39 || keycode == 40){ // tab,up and down arrow
					event.cancelbubble=false;
					ele.enteredText = "";
					ele.insertIndex = -1;
					return true;
				}

	}
	return true;
}
function resetTime(ele){
		var curTime = new Date();
		var t = curTime.getTime() -  ele.lastEntered;
		ele.lastEntered = curTime;
		window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
}
function setSelected(){
	ele = event.srcElement;
	if (ele != null)
	{ // detect if element exists
		enteredText = ele.enteredText.toLowerCase();
		var selectIndex = -1;
		var selectLength = 20000;
		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;
		  	}
		  }
		}
		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;
}
function selectItem(txtField,tier2){
	ele = event.srcElement;
	if(isNaN(ele.insertIndex)) {
	  ele.insertIndex = -1;
	}
	if(ele.insertIndex > -1) {
		ele.enteredText = ele.enteredText.substr(0,ele.insertIndex) +  String.fromCharCode(event.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(event.keyCode);
	}
	event.cancelBubble=true;
	window.status= ":Search Text=" + ele.enteredText +  ":Selected Index=" + ele.selectedIndex + ":Current position=" + ele.insertIndex;
	return setSelected();
}

function spString(spText){
	spText = spText.replace("%20"," ");
	spText = spText.replace("%23","#");
	spText = spText.replace("%26","&");
	spText = spText.replace("%2B","+");
	spText = spText.replace("%2D","-");
	spText = spText.replace("%2HH","–");
	spText = spText.replace("%24","");
	spText = spText.replace("%2C",",");
	spText = spText.replace("%22", "\"");
	spText = spText.replace("%27","'");
	spText = spText.replace("%3C","<");
	spText = spText.replace("%3E",">");
	spText = spText.replace("%21","!");
	spText = spText.replace("%3F","?");
	spText = spText.replace("%28","(");
	spText = spText.replace("%29",")");
	spText = spText.replace("%5E","^");
	spText = spText.replace("%3D","=");
	spText = spText.replace("%3B",";");
	spText = spText.replace("%3A",":");
	spText = spText.replace("%7B","{");
	spText = spText.replace("%7D","}");
	spText = spText.replace("%5B","[");
	spText = spText.replace("%5D","]");
	spText = spText.replace("%5C","\\");
	spText = spText.replace("%7C","|");
	spText = spText.replace("%2F","/");
	return(spText);	
}

function chkString(spText){
	var spText;
	var chk = 0;
	chk += (spText.indexOf("%20")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%23")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%26")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%2B")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%24")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%2C")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%22")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%27")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3C")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3E")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%21")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3F")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%28")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%29")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%5E")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3D")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3B")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%3A")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%7B")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%7D")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%5B")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%5D")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%5C")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%7C")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%2F")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%2D")==-1)? 0 : 1 ;
	chk += (spText.indexOf("%2HH")==-1)? 0 : 1 ;
	if(chk > 0){
		spText = spString(spText);
		spText = chkString(spText);
	}
	return(spText);	
}

function CreateDIV(){
	this.id = null;
	this.className = null;
	this.position = null;
	this.display = null;
	this.left = null;
	this.top = null;
	this.width = null;
	this.height = null;
	this.backgroundColor = null;
	this.backgroundImage = null;
	this.My_dataDiv = null;

	this.divCreate = function divCreate (){
		this.div = document.createElement("div");
		this.div.className = this.className;
		this.div.id = this.id;
		this.div.style.position = this.position;
		this.div.style.display = this.display;
		this.div.style.left = this.left;
		this.div.style.top = this.top;
		this.div.style.width = this.width;
		this.div.style.height = this.height;
		this.div.style.backgroundColor = this.backgroundColor;
		this.div.background = this.backgroundImage;

		this.My_dataDiv = document.createTextNode(this.dataDiv);

		this.div.appendChild(this.My_dataDiv);
	}
}//function CreateDIV
