
function ddlList(el){
this.element=el;
var tbl=document.getElementById(el.getAttribute('list'));
tbl.parentNode.style.display='none';
tbl.parentNode.style.height=el.getAttribute('ddlHeight');
tbl.parentNode.style.width=el.getAttribute('ddlWidth');
tbl.parentNode.style.overflow='auto';
tbl.parentNode.style.position = 'relative';
tbl.parentNode.style.position.left = '10px';
tbl.parentNode.style.position.top = '10px';

tbl.parentNode.style.zIndex = 1000;
for(var i=0;i<tbl.rows.length;i++){
	tbl.rows[i].onmouseover=function(){this.className="selectedRow";}
	tbl.rows[i].onmouseout=function(){this.className="ddlRow";}
}

el.onclick=function(evt){
var ev = window.event || evt;
var elt = ev.target || ev.srcElement;
var re=new RegExp(el.value,'i');
var leftPos = 10;
var topPos = 0;//elt.offsetHeight;
obj=elt;
var ind;
if(el.getAttribute('searchIndex')==null) ind=el.getAttribute('valueIndex')
else ind=el.getAttribute('searchIndex');
ik = 0;
while( obj.tagName != "BODY" && obj.tagName != "HTML")
{
//alert(obj.offsetTop);
	if(ik < 2)
	{
		leftPos += obj.offsetLeft;
      topPos += obj.offsetTop;
      
	}
	obj = obj.offsetParent;
	ik++;
}
var br=obj.getBoundingClientRect()
//alert("Top:"+br.top+", Left:"+br.left+", Right:"+br.right+", Bottom:"+br.bottom)
//alert("left: "+leftPos+"top: "+topPos);
topPos = topPos-235;
//leftPos = leftPos-30;
//alert(leftPos+parseInt(elt.clientWidth)-parseInt(ev.clientX));
if (leftPos+parseInt(elt.clientWidth)-parseInt(ev.clientX)<=162){
tbl.parentNode.style.top=topPos+'px';
tbl.parentNode.style.left=leftPos+'px';
tbl.parentNode.style.display='block';
for(var i=0;i<tbl.rows.length;i++){
if (el.getAttribute('keyIndex')!=null)
		//tbl.rows[i].cells[el.getAttribute('keyIndex')].style.display='none';
if(ind!=null){
if(tbl.rows[i].cells[ind].innerHTML.match(re))
	try{ tbl.rows[i].style.display='table-row';} catch(e){tbl.rows[i].style.display='block';}
else	tbl.rows[i].style.display='none';
}
}
}
}

el.onmousemove=function(evt){
var ev = window.event || evt;
var elt = ev.target || ev.srcElement;
var leftPos = 0;
obj=elt;
while( obj.tagName != "BODY" && obj.tagName != "HTML")
{
      leftPos += obj.offsetLeft;
      obj = obj.offsetParent;
}

if(leftPos+parseInt(elt.clientWidth)-parseInt(ev.clientX)<=16) elt.style.cursor="pointer";
else elt.style.cursor="text";
}

tbl.onmousedown=function(evt){
var ev = window.event || evt;
var elt = ev.target || ev.srcElement;
//alert(elt.tagName);
if(elt.tagName=="TD"){
if(el.getAttribute('valueIndex')!=null)
	el.value=elt.parentNode.cells[el.getAttribute('valueIndex')].innerHTML;
}
tbl.parentNode.style.display='none';
}
var tm;
el.onblur=function(){
tm=setTimeout(function(){tbl.parentNode.style.display='none';},100);
}
tbl.parentNode.onmousedown=function(){clearTimeout(tm);el.focus();}
tbl.parentNode.onfocus=function(){clearTimeout(tm);el.focus();}
//tbl.parentNode.onblur=function(){tbl.parentNode.style.display='none';}

el.onkeyup=function(){
var ind;
//alert("!!");
if(el.getAttribute('searchIndex')==null) ind=el.getAttribute('valueIndex')
else ind=el.getAttribute('searchIndex');
if(ind==null) return;
var re=new RegExp(el.value,'i');
for(var i=0;i<tbl.rows.length;i++){
if(tbl.rows[i].cells[ind].innerHTML.match(re))
	try{ tbl.rows[i].style.display='table-row';} catch(e){tbl.rows[i].style.display='block';}
else	tbl.rows[i].style.display='none';

}
}

}

