
var r1=new Array();
var r2=new Array();
var r3=new Array();
var r4=new Array();
var r5=new Array();
var r6=new Array();
var r7=new Array();
var r8=new Array();
var r9=new Array();
var r10=new Array();

var dltmp=new Array();//temporary dl
var chars;//2chrs as index
var selnum=0;//dl selection index
var obj;//input
var dlkey;//dl index (sql num.)
var dlmode=0;//0,1,2 -> Begin with, Contain, End with.

function dlini(o,key){

	obj = o;
	dlkey = key;//register dl key
	chars = "";//clear
	dltmp = new Array();

	// PROTOTYPE OBSERVE //
	Event.stopObserving(o.id, 'keyup', dlu);
	Event.stopObserving(o.id, 'keydown', dld);
	Event.observe(o.id, 'keyup', dlu, false);
	Event.observe(o.id, 'keydown', dld, false);
	// POSITION
	var offset = Position.cumulativeOffset(o);
	$("ddn").innerHTML = "";
	$("ddn").style.left = offset[0];
	$("ddn").style.top = offset[1]+16;
	$("ddn").style.width = obj.style.width;
	$("ddn").style.display = "none";
	o.select();
	compute();
}

var url="./dlist/get_dynlist.php";
//var url="http://192.168.0.101/pierre/distance/dlist/get_dynlist.php";

function getlist()
{

	if(dlmode==0){
		chars = obj.value.substring(0,2);
		if(eval("r"+dlkey+"[chars];"))return;
	}else{
		chars = obj.value;
	}

	var myAjax = new Ajax.Request(url,{
		method: 'post', 
		parameters: '&o='+chars+'&key='+dlkey+'&mode='+dlmode, 
		onComplete: make
	});
}

function make(xhr){//charge et cache les données
	if(xhr.status==404){alert("404 : "+url);return;}
	if(!xhr.responseText){
		var dats=new Array();
	}else{
		var dats=xhr.responseText.split("\n");
	}
	var tmp=new Array();
	for(i=0;i<dats.length;i++)tmp[i]=dats[i].split("\t");
	
	if(dlmode==0){
		eval("r"+dlkey+"[chars]=tmp;");
	}else{
		dltmp=tmp;
	}
	compute();
}


function compute(){//generate droplist depending of the input value
	
	//if(chars.length<2)return false;
	//DATAS

	if(dlmode==0)
	{
		if(!eval("r"+dlkey+"[chars];"))return false;
		var rlen=eval("r"+dlkey+"[chars].length;");
		if(rlen==0)return false;

		var str=obj.value.toLowerCase();
		var strln=obj.value.length;

		dltmp = new Array();
		for(i=0;i<rlen;i++)
		{
			//var compare=r1[chars][i][1].substring(0,strln).toLowerCase();
			var compare=eval("r"+dlkey+"[chars][i][1].substring(0,strln).toLowerCase();");
			var compare2=eval("r"+dlkey+"[chars][i][1].substring(0,strln+8).toLowerCase();"); // Added by Renaud on 2008-02-13 : to allow "order / " vessels
			if(compare==str||compare2=="order / "+str)dltmp[dltmp.length]=eval("r"+dlkey+"[chars][i];");
		}
	}
	else
	{
		//mode "contain" ou "end with"
	}
	
	//window.status="compute. Mode:"+dlmode+" - Key:"+dlkey+" - Chars:"+chars;
	
	selnum=0;
	//$("view").value=dltmp;//DEBUG

	// HTML //
	var rows=new Array();
	
	for(i=0;i<dltmp.length;i++){
		rows[i]="<TR ID=itm"+i+" ONMOUSEDOWN=sel("+i+")><TD><NOBR>"+dltmp[i][1];
		if(dltmp[i][2])rows[i]+="<TD ALIGN=RIGHT><NOBR>"+dltmp[i][2];
		if(dltmp[i][3])rows[i]+="<TD ALIGN=RIGHT><NOBR>"+dltmp[i][3];
	}

	if(dltmp.length==0){rows[0]="<TR><TD>No results</TR>";}
	//$("ddn").innerHTML="<TABLE WIDTH='100%' BORDER=0 CLASS=dl STYLE='border-collapse:collapse;'>"+rows.join("\n")+"</TABLE>";
	$("ddn").innerHTML="<TABLE WIDTH='100%' BORDER=0 STYLE='border-collapse:collapse;font-family:verdana;font-size:11px;overflow:hidden;white-space:nowrap;'>"+rows.join("\n")+"</TABLE>";

	


	//DIV RESIZE
	if(dltmp.length==0){
		$("ddn").style.height=18;
	}else if(dltmp.length<=15){
		$("ddn").style.height=(dltmp.length*18);
	}else{
		$("ddn").style.height=270;//270 is 18px*15itm
	}

	$("ddn").show();
	if(dltmp.length>0)$("itm"+selnum).addClassName("sel");//selection le premier element

}



function sel(i){
	//alert("sel("+i+")");
	selnum=i;
}

function set(){
	//console.trace();
	if(dltmp.length==0)return;
	// Beg rno - 2008-02-13 - clean vessel name key 10
	var tmp=dltmp[selnum][1];
	var lg=tmp.length;
	if (tmp.substr(0,5)=="order") tmp=tmp.substr(8,lg);
	tmp=tmp.replace(/(<([^>]+)>)/ig,"");
	lg=tmp.length;
	if (tmp.substr(lg-4,lg)==" cur"||tmp.substr(lg-4,lg)==" exn"||tmp.substr(lg-4,lg)==" gsn") tmp=tmp.substr(0,lg-4);
	dltmp[selnum][1]=tmp;
	// End rno
	obj.value=dltmp[selnum][1];
	eval(obj.name+"_id="+dltmp[selnum][0]);
	obj.title=dltmp[selnum][1];
	window.status="set "+obj.name+": "+dltmp[selnum];
}


function dlb(){// ONBLUR
	$("ddn").hide();
	//window.setTimeout('set()', 100);
	set();
	//setTimeout('set()', 10);
	return;
}

function dlu(e){//dl key up
	
	if(obj.value.length<2)return;

	if (document.all){ //ie 
		e = window.event;
		n = e.keyCode;
	}else if(document.layers){ 
		n = e.which; 
	}else{
		n = e.which; 
	}
	window.status="key up, "+n;
	switch(n){
		case 13://return
		case 37:
		case 38:
		case 39:
		case 40:
			return false;
			break;

		case 118://begin with
			dlmode=0;
			break;
	
		case 119://contain
			dlmode=1;
			break;
		
		case 120://endwith
			dlmode=2;
			break;

	}
	//window.status="key up, "+obj.value;
	getlist();
	compute();
	//return false;
}

function dld(e){//dl key down
	//return false;
	if (document.all){ //ie 
		e = window.event;
		n = e.keyCode;
	}else if(document.layers){ 
		n = e.which; 
	}else{
		n = e.which; 
	}

	if(dltmp.length<=1)return;
	switch(n){
		case 13://RETURN;
			//set();
			dlb();
			return false;
			break;

		case 38://up
			$("itm"+selnum).removeClassName("sel");
			if(selnum==0)selnum=dltmp.length-1;
			else selnum--;
			$("itm"+selnum).addClassName("sel");
			return false;
			break;

		case 40://down
			$("itm"+selnum).removeClassName("sel");
			selnum++;
			if(selnum>=dltmp.length)selnum=0;
			$("itm"+selnum).addClassName("sel");
			return false;
			break;
	}

	return;
}

document.write("<DIV ID=ddn STYLE='position:absolute;background:white;display:none;border:solid;border-width:1;overflow:auto;z-index:999'></DIV>");
