//Defintion constantes
nameInput = 'mots';
nameSelect = 'type-rech';
nameDiv = 'autocmp';
urlAjax = 'index.php?option=com_opac&view=ajax&task=autocomplete&format=raw';
cssSelected = 'autocomplete-selected';
cssNoSelected = 'autocomplete-noselected';
mots = '';
type = '';
autocmp = '';
prefixe = '';

// Pour avoir une seule instance
theAjax = new Ajax(urlAjax, {method: 'post', autoCancel:true});
var comp;

function stopAutocomp()
{
	theAjax.cancel;
	clearTimeout(comp);
}

function timer_cpl(id, type_rech)
{
	getPropositions(id,type_rech);
}

//Fonction autocompletion
function Autocomplete (id,keyCode,type_rech,prefix)
{	
	if(autocmp_actif == 0){
		return;
	}
		
	mots = $(prefix + nameInput + id);
	type = $(prefix + nameSelect + id);
	autocmp = $(prefix + nameDiv + id);
	prefixe = prefix;
		
	var val = mots.value;
	
	if(val.length > 2){
		
		if(keyCode != 40 && keyCode != 38){
			window.clearTimeout(comp);
			comp = window.setTimeout("timer_cpl(" + id + "," + type_rech + ")", 1000);
		}
		else{
			setSelection(keyCode,autocmp,mots);
		}
		
	}
	else{
		autocmp.style.visibility = 'hidden';
	}
}

//Requete ajax autocompletion
function getPropositions(id,type_rech)
{	
	var postStr  = 'prefix=' + prefixe + '&valeur=' + mots.value + '&type=' + (convert_type(type.value,type_rech)) + '&num_lst=' + id;

	theAjax.options.data = postStr;
	theAjax.addEvent('onSuccess', function(resp) {
		autocmp.innerHTML = resp;
		autocmp.style.position = "fixed";
		autocmp.style.width = mots.offsetWidth + "px";
		autocmp.style.left = mots.getPosition().x + "px";
		autocmp.style.top = mots.getPosition().y + mots.offsetHeight + "px";
		if(autocmp.childNodes.length > 1){
			autocmp.style.visibility = 'visible';
		}
	});
	theAjax.request(); 
}

//Gestion keyup et keydown autocompletion
function setSelection(keycode,autocmp,mots)
{
	var v = 1;
	if(keycode != 40){
		v = -1;
	}

	for(i=0;i<autocmp.childNodes.length;i++){
		if(autocmp.childNodes[i].nodeName == "DIV"){
			if(autocmp.childNodes[i].className == cssSelected){
				if((i + v) == autocmp.childNodes.length || (i + v) < 1){
					break;
				}
				autocmp.childNodes[i].className= cssNoSelected ;
				autocmp.childNodes[i+v].className = cssSelected;
				mots.value = autocmp.childNodes[i+v].firstChild.innerHTML;
				break;
			}
		}
	}
}

//Test si une valeur existe dans un tableau
function is_in_array(tab,value)
{
	for(i=0;i<tab.length;i++){
		if(value.length > 1){
			if(tab[i].length == 1){
				continue;
			}
			var v = value.substr(0,tab[i].length);
			if(tab[i] == v){
				return true;
			}
		}
		else{
			if(tab[i] == value){
				return true;
			}
		}				
	}
	return false;
}

///Correspondance recherche simple et détaillée pour le type de recherche
function convert_type(val,type_rech)
{
	if(type_rech == 1){
		var v1 = val.substr(0,3);
		if(v1 == "38_"){
			v1 = val.substring(val.length - 1,val.length);
			return("38_" + v1);
		}
		if (v1 == "86_") {
			v1 = val.substring(val.length - 1,val.length);
			if (v1=="4") // On passe en auteur
				return("2");
			if (v1=="3")
				return "5";
		}
		return(val);
	}
	
	switch(val){
		case "2": // titre
			return("1");
		case "0": // auteur
			return("2");
		case "3": // sujet
			return("5");
		case "1": // editeur
			return("3");
		case "4": // collection
			return("4");
		case "18": // accès spé 1
			return("38_1");
		case "19": // accès spé 2
			return("38_2");
		case "20": // accès spé 3
			return("38_3");
		case "21": // accès spé 4
			return("38_4");
		case "22": // accès spé 5
			return("38_5");
		case "23": // accès spé 6
			return("38_6");
		case "24": // accès spé 7
			return("38_7");
		case "25": // accès spé 8
			return("38_8");
		case "31": // Mots titres
			return("86_1");
		case "32": // Mots auteurs -> On passe en recherche auteur
			return("2");
		case "33": // Mots sujets -> On passe en recherche sujet
			return("5");
			
		default:
			return(val);
	}
	
}
