//
// AutoComp
//
// 1. onKeyUp -> myAjax pour récuperer un tab
// 2. on clean l'autoComp
// 3. autoComp avec new tab
// 4. On Click: clean autocomp et on remplit l'input avec le champs


var autoComps = new Array();
function AutoComp(input_id, ajax_fn, maxResult, nbminForResultS){
	
	this.index = autoComps.length;
	this.maxProposition = maxResult ? maxResult : 10 ;
	this.nbminForResult = nbminForResultS!=undefined ? nbminForResultS : 2 ;
	autoComps[this.index] = this;
	
	// BigDiv & SubDiv
	this.div_id = input_id+"_autocomp";
	this.div_curr_id = input_id+"_autocomp_curr";
	
	this.div = document.getElementById(this.div_id);
	this.div.style.position = "relative";
	this.div.innerHTML += "<div id='"+this.div_curr_id+"'></div>";
	
	this.div_curr = document.getElementById(this.div_curr_id);
	this.div_curr.style.position = "absolute";
	this.div_curr.style.top = (this.div.offsetHeight-2)+"px";
	this.div_curr.style.left = "0px";
	//this.div_curr.style.height = "200px";
	this.div_curr.style.width = (this.div.offsetWidth-2)+"px";
	this.div_curr.className = "autoComp";
	
	// Input
	this.inp = document.getElementById(input_id);
	this.inp.index = this.index;
	this.inp.onkeyup = AutoComp_onKeyUp;
	//this.inp.onfocus = AutoComp_onKeyUp;
	this.inp.onblur = function(){ setTimeout(AutoComp_clear,150, this.index); }
	
	// MyAjax
	this.ajax_fn = ajax_fn;
	
	AutoComp_clear(this.index);
}

// Cleaning pour la AutoCompAdd
function AutoComp_clear(index){
	autoComps[index].div_curr.innerHTML = "";
	autoComps[index].div_curr.style.display = "none";
}

function AutoComp_onKeyUp(){
	
	var val = autoComps[this.index].inp.value;
	var tmpAutoComp = autoComps[this.index];
	if(val.length<tmpAutoComp.nbminForResult){
		AutoComp_clear(this.index);
		return false;
	}
	
	myAjax(autoComps[this.index].ajax_fn, "&index="+this.index+"&val="+val, AutoComp_ajaxBack);
	return false;
}

function AutoComp_add(index, val){
	var tmpAutoComp = autoComps[index];
	tmpAutoComp.inp.value = val;
	AutoComp_clear(index);
	if( typeof(AutoComp_onAdd)=='function'){ AutoComp_onAdd(); }
	return false;
}

function AutoComp_complete(index, infos){

	var tmpAutoComp = autoComps[index];
	
	AutoComp_clear(index);
	tmpAutoComp.div_curr.style.display = "";	
	
	var content = "";
	for(var i=0; i<infos.length && i<tmpAutoComp.maxProposition; i++){
		content += "<div><a href='#' style='color: #3A3A34;' onmouseout='this.style.color= \"#3A3A34\";' onmouseover='this.style.color= \"#ffffff\";' onClick='return AutoComp_add("+index+", this.innerHTML);'>"+infos[i]+"</a></div>";
	}
	tmpAutoComp.div_curr.innerHTML = content;
	return false;
}

function AutoComp_ajaxBack(res){
	if( !res.res=="OK" ){ return false; }
	if( !res.index ){ return false; }
	
	var tmpAutoComp = autoComps[ parseInt(res.index) ];
	
	var tab = (res.autoComp) ? res.autoComp.split("|") : new Array();
	AutoComp_complete(res.index, tab);
}
