var selectedPastille = '';

function wceSelectPastille(elem){
    if (selectedPastille != '')
        document.getElementById(selectedPastille).style.background='url(/modules/rlpe/img/puce_verte.png)';
    selectedPastille = elem.id;
    elem.style.background='url(/modules/rlpe/img/puce_bleu.png)';
    document.getElementById('selected_pep').value=selectedPastille.substr(9);
    dims_xmlhttprequest_todiv('index.php','dims_op=wce_select_pastille&id='+(selectedPastille.substr(9)),false,'info_contact');
}

function onOverPastille(elem){
    //document.getElementById('pastille_'+document.getElementById('selected_pep').value).style.background='url(/modules/rlpe/img/puce_verte.png)';
    elem.style.background='url(/modules/rlpe/img/puce_bleu_pleine.png)';
    dims_xmlhttprequest_todiv('index.php','dims_op=wce_select_pastille&id='+(elem.id.substr(9)),false,'info_contact');
}

function onOutPastille(elem){
    if (elem.id.substr(9) == document.getElementById('selected_pep').value)
        elem.style.background='url(/modules/rlpe/img/puce_bleu.png)';
    else
        elem.style.background='url(/modules/rlpe/img/puce_verte.png)';
    //document.getElementById('pastille_'+document.getElementById('selected_pep').value).style.background='url(/modules/rlpe/img/puce_bleu.png)';
    dims_xmlhttprequest_todiv('index.php','dims_op=wce_select_pastille&id='+(document.getElementById('selected_pep').value),false,'info_contact');
}

function addPastille(e){
    var posx = 0;
    var posy = 0;
    if (!e)
        var e = window.event;
    if (e.pageX || e.pageY) 	{
        posx = e.pageX;
        posy = e.pageY;
    }
    else if (e.clientX || e.clientY) 	{
        posx = e.clientX + document.body.scrollLeft
            + document.documentElement.scrollLeft;
        posy = e.clientY + document.body.scrollTop
            + document.documentElement.scrollTop;
    }
    var obj = document.getElementById('rlpe_map');
    var topValue= 0,leftValue= 0;
    while(obj){
        leftValue+= obj.offsetLeft;
        topValue+= obj.offsetTop;
        obj= obj.offsetParent;
    }

    var realX = posx-leftValue;
    var realY = posy-topValue;

    var imgX = posx-9;
    var imgY = posy-8;

    document.getElementById('positionnement').style.display='block';

    if (selectedPastille == ''){
        var pastille = document.getElementById('pastille_add');
        if (document.getElementById('label_tiers') != null && document.getElementById('label_tiers').value==''){
            dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_add_pastille&posx='+realX+'&posy='+realY,false,'positionnement');
        }else if(document.getElementById('label_tiers') == null)
            dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_add_pastille&posx='+realX+'&posy='+realY,false,'positionnement');
        var label_pastille = document.getElementById('label_add');
    }else{
        var pastille = document.getElementById(selectedPastille);
        var id = selectedPastille.substr(9);
        if ((document.getElementById('autocomplete') != null) || (document.getElementById('pos_div') == null))
            dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_modif_pastille&posx='+realX+'&posy='+realY+'&id='+id,false,'positionnement');
        else //if (document.getElementById('pos_div').options[document.getElementById('pos_div').options.selectedIndex].value != document.getElementById('prev_position').value)
            dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_modif_pastille&posx='+realX+'&posy='+realY+'&id='+id,false,'positionnement');
        var id = selectedPastille.replace('pastille_','');
        var label_pastille = document.getElementById('pastille_label_'+id);
    }
    pastille.style.top=imgY+'px';
    pastille.style.left=imgX+'px';
    pastille.style.display='block';

    if (document.getElementById('prev_position') != null){
        var width_lab = label_pastille.offsetWidth;
        var height_lab = label_pastille.offsetHeight;
        var pos_left = pastille.style.left;
        pos_left = parseInt(pos_left.substr(0,pos_left.length-2));
        var pos_top = pastille.style.top;
        pos_top = parseInt(pos_top.substr(0,pos_top.length-2));
        switch(document.getElementById('prev_position').value){
            case 'left':
                label_pastille.style.top=pos_top+'px';
                label_pastille.style.left=(pos_left-width_lab-2)+'px';
                break;
            case 'right':
                label_pastille.style.top=pos_top+'px';
                pos_left = pos_left+18;
                label_pastille.style.left=pos_left+'px';
                break;
            case 'top':
                label_pastille.style.top=(pos_top-height_lab)+'px';
                label_pastille.style.left=(pos_left-(width_lab/3))+'px';
                break;
            case 'bottom':
                label_pastille.style.top=(pos_top+19)+'px';
                label_pastille.style.left=(pos_left-(width_lab/3))+'px';
                break;
        }
    }
}

function rlpe_changePos(elem){
    document.getElementById('prev_position').value=elem.options[elem.options.selectedIndex].value;
    if (selectedPastille == ''){
        var pastille = document.getElementById('pastille_add');
        var label_pastille = document.getElementById('label_add');
    }else{
        var pastille = document.getElementById(selectedPastille);
        var id = selectedPastille.replace('pastille_','');
        var label_pastille = document.getElementById('pastille_label_'+id);
    }
    var width_lab = label_pastille.offsetWidth;
    var height_lab = label_pastille.offsetHeight;
    var pos_left = pastille.style.left;
    pos_left = parseInt(pos_left.substr(0,pos_left.length-2));
    var pos_top = pastille.style.top;
    pos_top = parseInt(pos_top.substr(0,pos_top.length-2));
    switch(elem.options[elem.options.selectedIndex].value){
        case 'left':
            label_pastille.style.top=pos_top+'px';
            label_pastille.style.left=(pos_left-width_lab-2)+'px';
            break;
        case 'right':
            label_pastille.style.top=pos_top+'px';
            pos_left = pos_left+18;
            label_pastille.style.left=pos_left+'px';
            break;
        case 'top':
            label_pastille.style.top=(pos_top-height_lab)+'px';
            label_pastille.style.left=(pos_left-(width_lab/3))+'px';
            break;
        case 'bottom':
            label_pastille.style.top=(pos_top+19)+'px';
            label_pastille.style.left=(pos_left-(width_lab/3))+'px';
            break;
    }
}

function selectPastille(elem,e){
    document.getElementById('positionnement').style.display='none';
    document.getElementById('pastille_add').style.display='none';
    if (selectedPastille != '')
        document.getElementById(selectedPastille).style.background='url(./modules/rlpe/img/puce_verte.png)';
    selectedPastille = elem.id;
    elem.style.background='url(./modules/rlpe/img/puce_bleu.png)';
    addPastille(e);
}

// autocompletion
var value_suggested = '';
function suggest(element){
	//Détection du navigateur
	var is_ie = ((navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1));

	/*Fonction utile : détermine la position absolue exacte d'un objet sur la page*/
	findPos = function(obj){
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft;
			curtop = obj.offsetTop;
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			}
		}
		return [curleft,curtop];
	}	
	
	//Création de la liste des propositions si elle n'existe pas encore
	if(!document.getElementById('suggestsList')){
		var suggestsList = document.createElement('ul');
		suggestsList.id = 'suggestsList';
		
		/*On donne à la liste la même largeur que le champ de texte => on doit récupérer sa largeur et son padding*/
		var style = (!is_ie ? window.getComputedStyle(element, null) : element.currentStyle); //Récupération du style
		if(style.width){
			var width = parseInt(style.width.replace(/px/, '')); //On transforme la largeur dans le style en int
			
			//On récupère le padding éventuel du champ pour le rajouter à la largeur à attribuer à la liste
			var paddingRight = (style.paddingRight ? style.paddingRight : false);
			if(paddingRight){
				paddingRight = parseInt(paddingRight.replace(/px/, ''));
				width += paddingRight;
			}
			
			var paddingLeft = (style.paddingLeft ? style.paddingLeft : false);
			if(paddingLeft){
				paddingLeft = parseInt(paddingLeft.replace(/px/, ''));
				width += paddingLeft;
			}
			
			width = (isNaN(width) ? 150 : width);
			suggestsList.style.width = width+'px'; //On donne à la liste la même largeur que celle du champ de texte
		}
		
		//On positionne la liste sous le champ
		suggestsList.style.position = 'absolute';
		var coord = findPos(element); //Récupération des coordonnées du champ
		suggestsList.style.left = coord[0]+'px';
		suggestsList.style.top = coord[1]+(19)+'px'; //On ajoute 19px de haut pour que la liste soit sur le champ et non par-dessus
		document.body.appendChild(suggestsList); //On insère la liste dans le document
	}
	else{
		//Si la liste existe déjà, on se contente de la repérer par rapport à son id
		suggestsList = document.getElementById('suggestsList');
	}
    //Si la valeur a changée, on masque la liste, le temps d'actualiser son contenu
	if(element.value != value_suggested){
		suggestsList.style.display = 'none';
	}
	
	//Fonction servant à cacher les suggestions
	closeSuggest = function(nofocus){
		var todelete = document.createElement('div');
		todelete.appendChild(suggestsList);
		if(!nofocus){ element.focus(); }
	};
	
	//Fonction gérant le parcour des éléments à l'aide des touches directionnelles
	selectSuggest = function(direction){
		//On regarde si un élément est selectionné
		var selected = -1;
		var lis = suggestsList.getElementsByTagName('li');
		for(i=0; i<lis.length; i++){
			if(lis[i].id == 'selectedSuggest'){
				selected = i;
			}
			lis[i].id = '';
		}
		
		selected += direction;
		selected = (selected < -1 ? (lis.length-1) : selected);
		if(selected >= 0 && selected < lis.length){
			lis[selected].id = 'selectedSuggest';
		}
	};
	
	//Remplit le champ avec la suggestion sélectionnée
	useSelected = function(){
		//On regarde si un élément est selectionné
		var lis = suggestsList.getElementsByTagName('li');
		for(i=0; i<lis.length; i++){
			if(lis[i].id == 'selectedSuggest'){
				element.value = lis[i].firstChild.textContent;
                document.getElementById('label_tiers').value=element.value;
                rlpe_changePos(document.getElementById('pos_div'));
                dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_remplissage_content&value='+element.value,'','label_add');
                //dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_div_pastille&value='+element.value,'','label_pastille');
			}
		}
		closeSuggest();
	};
	
	document.body.onkeyup = function(e){
		var key = (!is_ie ? e.keyCode : window.event.keyCode);
		switch(key){
			case 27: //Esc
				closeSuggest();
				break;
			case 9: //Tab
				closeSuggest(true); //On referme la liste sans redonner le focus au champ
				break;
			case 38: //Up
				selectSuggest(-1);
				break
			case 40: //Down
				selectSuggest(1);
				break;
			case 13: //Enter
				useSelected();
				break;
		}
	};
	document.body.onclick = function(){ closeSuggest(true); };
	
		
	if(element.value != '' && element.value != value_suggested){
        dims_xmlhttprequest_todiv('admin.php','dims_op=rlpe_autocompletion&search='+element.value,'','suggestsList');
	}
	else if(element.value == ''){
		//Si le champ est vide, on cache la liste
		closeSuggest();
	}
    value_suggested = element.value;
}
