
var ddb_new_list= new Array(); // lista nou creata
var ddb_this_obj; // obiectul pe care e focusul
var ddb_lyr="ddb_sugg_layer";
var ddb_selected_opt=-1; // optiunea selectata

var ddb_over_opt=-1; 

var ddb_max_sugg_height=100;  //inaltimea layerului cu sugestii








function ddb_showhide(ddb_lyr,shw)
{
	var x = document.getElementById(ddb_lyr);
	if (shw) x.style.visibility = 'visible';
	else x.style.visibility = 'hidden';
	ddb_over_opt=-1;
	ddb_selected_opt=-1;
}


function ddb_setddb_lyr(obj,ddb_lyr,latx,laty)
{
	var newX = ddb_findPosX(obj) + latx;
	var newY = ddb_findPosY(obj) + laty;
	var x = document.getElementById(ddb_lyr);
	x.style.top = newY + 'px';
	x.style.left = newX + 'px';
	x.style.width=obj.offsetWidth+'px';
}

function ddb_findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function ddb_findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}














function ddb_Start()
{
	for (var i=0; i<ddb_asc_fields.length; i++){ 
		var field = window.document.getElementById( ddb_asc_fields[i] );
		if ( field != null ){

			field.setAttribute('autocomplete', 'off');
			field.onkeyup = ddb_OnKeyUp;
			field.onkeydown = ddb_OnKeyDown;
			field.onblur = ddb_OnBlur;
			field.onfocus =  ddb_OnFocus;
			field.onclick = ddb_OnClick;
		}
	}
	ddb_CreateLayer();
}




function ddb_OnFocus(event)
{
	ddb_OverField( event );
}





function ddb_OnBlur()
{
	if (ddb_over_opt==-1) ddb_showhide(ddb_lyr,false);
}





function ddb_OnClick(event)
{
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	ddb_OverField( event );
}






function ddb_OnKeyDown( event )
{
	if ( event == null ) event = window.event;

	var keyCode = event.keyCode;
	switch (keyCode)
	{
		case 13:
			//~ event.returnValue = false;
			CancelEvent(event);
			ddb_enter(event);
			break
		case 9:
			ddb_tab();
			break
	}
}







function ddb_OnKeyUp(event)
{
	if ( event == null ) event = window.event;

	var keyCode = event.keyCode;
	switch (keyCode)
	{
		case 38:
			ddb_up(event);
			break
		case 40:
			ddb_down(event);
			break
		case 13:
			break
		default:
			ddb_chars(event);
	}	

}







function ddb_chars(event)
{
	
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	
	var which_f;
	
	for (var i=0; i<ddb_asc_fields.length; i++){
		if (ddb_asc_fields[i]==ddb_this_obj.id) which_f=i;
	}
	
	var it_cnt=ddb_items[which_f].length;
	var nc=0;

	
	ddb_new_list=[null];
	for (var j=0; j<it_cnt; j++) {
		var val_index=ddb_items[which_f][j].toLowerCase().indexOf(ddb_this_obj.value.toLowerCase());
		var val_index_cuv=ddb_items[which_f][j].toLowerCase().indexOf(" "+ddb_this_obj.value.toLowerCase());
		
		if (((val_index==0)||(val_index_cuv>0))&&(ddb_this_obj.value.length>=ddb_min_chars)) { 
			ddb_new_list[nc]=ddb_items[which_f][j].substr(0,val_index)+'<b>'+ddb_items[which_f][j].substr(val_index,ddb_this_obj.value.length)+'</b>'+ddb_items[which_f][j].substr(val_index+ddb_this_obj.value.length,ddb_items[which_f][j].length);
			nc++;
			
		}
	}
	if (nc>0) ddb_ShowListLayer(event);
	else ddb_showhide(ddb_lyr,false);
}












function ddb_ShowListLayer(event)
{
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	
	var it_cnt=ddb_new_list.length;
	var cont='';
	var a_cls='';
	var ddb_lyr_obj=document.getElementById(ddb_lyr);
	for (var j=0; j<it_cnt; j++) {
		if (j==0) a_cls='class="ddb_selected"';
		else a_cls='class="ddb_a"';
		cont+='<a href="javascript:void(0);" id="ddb_so_'+j+'" '+a_cls+' onclick="ddb_SetSelectedValue(\''+ddb_new_list[j]+'\');" >&nbsp;&nbsp;&nbsp;'+ddb_new_list[j]+'</a>';
	}

	ddb_lyr_obj.style.height='';
	//ddb_lyr_obj.style.overflow='hidden';
	
	ddb_lyr_obj.innerHTML=cont;
	if (ddb_lyr_obj.offsetHeight>=ddb_max_sugg_height) {
		//ddb_lyr_obj.style.overflow='auto';
		ddb_lyr_obj.style.height=ddb_max_sugg_height+'px';
	}
	ddb_showhide(ddb_lyr,true);
	ddb_selected_opt=0;
}






function ddb_SetSelectedValue(v)
{
	ddb_this_obj.value=v.replace("<b>","").replace("</b>","");	
	ddb_showhide(ddb_lyr,false);
}







function ddb_enter(e) 
{
	if (ddb_selected_opt>=0) ddb_SetSelectedValue(ddb_new_list[ddb_selected_opt]);
}








function ddb_tab()
{
	ddb_showhide(ddb_lyr,false);
}







function ddb_down(event)
{
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	//alert(ddb_selected_opt);
	if (((ddb_selected_opt+1)<ddb_new_list.length)&&(ddb_selected_opt>-1)) {
		document.getElementById('ddb_so_'+ddb_selected_opt).className="ddb_a";
		ddb_selected_opt=ddb_selected_opt+1;
		var so=document.getElementById('ddb_so_'+ddb_selected_opt);
		so.className="ddb_selected";
		var topxx=so.offsetTop + so.offsetHeight;
		if (topxx - document.getElementById(ddb_lyr).scrollTop > ddb_max_sugg_height) {
			document.getElementById(ddb_lyr).scrollTop=so.offsetTop;
		}
	}
}











function ddb_up(event)
{
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	
	if ((ddb_selected_opt-1)>=0) {
		document.getElementById('ddb_so_'+ddb_selected_opt).className="ddb_a";
		ddb_selected_opt=ddb_selected_opt-1;
		var so=document.getElementById('ddb_so_'+ddb_selected_opt);
		so.className="ddb_selected";
		
		if (so.offsetTop - document.getElementById(ddb_lyr).scrollTop < 0) document.getElementById(ddb_lyr).scrollTop=so.offsetTop;
	}
}










function ddb_FindField( event )
{
	if ( event == null ) event = window.event;
	if ( event == null ) return null;

	if ( event.srcElement != null ) // IE
	{	return event.srcElement; }
	
	var retVal = event.target;
	while ( retVal && retVal.nodeType != 1 ) // climb up from text nodes on Moz
	{
		retVal = retVal.parentNode;
	}
	return retVal;
}











function ddb_OverField( event ) {
	
	ddb_this_obj=ddb_FindField( event );
	if ( ddb_this_obj == null ) return;
	ddb_setddb_lyr(ddb_this_obj,ddb_lyr,0,ddb_this_obj.offsetHeight);
}










function ddb_SetFocustoField()
{
	ddb_this_obj.focus();
}















function ddb_CreateLayer()
{
  id=ddb_lyr; 
   if (document.all) { // Iexplorer
  
  if (document.all[id]) {
   
   alert ('Layer with this ID already exists!')
   return
  }
 
  var LR= '\n<DIV id="'+id+'" onMouseOut="ddb_over_opt=-1;" onMouseOver="ddb_over_opt=23;" onscroll="ddb_SetFocustoField();"  ' 
  +' style="position:absolute; left:0px; top:0px; width:0px; z-index:1; background-color:#F3F3F3; '
  +'border:1px solid #999999; font-style:italic; visibility:hidden; overflow-x:hidden; overflow:auto;">aaa</DIV>';
  
  document.body.insertAdjacentHTML("BeforeEnd",LR)
 
 }
 else { // Mozilla
 
 var tagString= '\n<DIV id="'+id+'" onMouseOut="ddb_over_opt=-1;" onMouseOver="ddb_over_opt=23;" ' 
  +' style="position:absolute; left:0px; top:0px; width:0px; z-index:1; background-color:#F3F3F3; '
  +'border:1px solid #999999; font-style:italic; visibility:hidden; overflow-x:hidden; overflow:auto;">aaa</DIV>';
  
  range = document.createRange(); 
  range.selectNode( document.getElementsByTagName( "body" ).item( 0 ) );
  documentFragment = range.createContextualFragment(tagString); 
  document.body.appendChild(documentFragment);
 
  }
}













function CancelEvent ( event )
{
	//alert('cance');
	event.returnValue = false;
	if(event.stopPropagation) event.stopPropagation();
	
	event.cancelBubble = true;
	if ( event.preventDefault ) event.preventDefault();
}
