/*---- AJSautocomplete.js ----*/

var _interfaceAC = this;
var _pjpaResultCache = new Object(); // mecanisme de cache des requetes
var _pjpaProximiteRegex = null;

var _pjpaEventKeycode = null;
var _pjpaIsPress = false;
var _pjpaLastKeyCode = null;
var _pjpaMotSansReponse = "Null";
var _pjpaDataAutoCompDefaut = null;
var _pjpaSelectedValue = false;
var _pjpaOnEct = 0;
var _pjpaIframePostForm = null;

var _pjpaMouseDown = 0;
var _pjpaOnScroll = 0;

var _pjpaDataAutoCompOuDefaut = null;
var _pjpaMotOuSansReponse = "Null";
var _pjpaResultCacheOu = null; // mecanisme de cache des requetes
var _pjpaIsOuPress = false;
var _pjpaSelectedOuValue = false;
var _pjpaFocusChamps = "";
var _pjpaTempsAppel = 150;

var PJPARegGras_Ouvrant = new RegExp("({)", "gi");
var PJPARegGras_Fermant = new RegExp("(})", "gi");
var PJPARegGras_OuvrantFermant = new RegExp("[{}]", "gi");

var _alwayUseUrlServeur = false;
var _pjpaUrlServeur = '';
/************Chargement Interface AutoCompletion***************************************************/

function PJPAInitInterface(form, champQuoi, champsOu, champsOuHiddenField, BtnTrouvez, secteur, methode, topOu, leftOu) {

    _interfaceAC = new PJPAInterfaceAC((form == '' || form == undefined ? undefined : document.getElementById(form)),
										(champQuoi == '' || champQuoi == undefined ? undefined : document.getElementById(champQuoi)),
										(champsOu == '' || champsOu == undefined ? undefined : document.getElementById(champsOu)),
										(champsOuHiddenField == '' || champsOuHiddenField == undefined ? undefined : document.getElementById(champsOuHiddenField)),
										(BtnTrouvez == '' || BtnTrouvez == undefined ? undefined : document.getElementById(BtnTrouvez)), 
										secteur, methode, undefined, topOu, leftOu);
	_pjpaResultCacheOu = new Object();
}

function PJPAChargementInterface(textInputId, IsQuoi, top, left, AutoCompleteSelectedHiddenFieldId) {
    var fieldTypeName = (IsQuoi ? "Quoi" : "Ou");
    
    var html = '<div id="DivSuggestion' + fieldTypeName + '" class="DivSuggestion" ></div>';
   
    if (IsQuoi) {
        html += '<div id="DivAlerte' + fieldTypeName + 'NoSelect" style=" line-height:0px; font-size:0px;" ></div>';
        html += '<div id="DivAlerte' + fieldTypeName + 'Vide" style=" line-height:0px; font-size:0px;" ></div>';
        
    }
    else {
        html += '<div id="DivAlerte' + fieldTypeName + '" style=" line-height:0px; font-size:0px;" ></div>';
    }
    
    $('#' + textInputId).after(html);
}

/************Interface AutoCompletion*************************************************************/
function PJPAInterfaceAC(idFormulaire, idChampsQuoi, idChampsOu, idChampsOuHiddenField, idBoutton, secteur, methode, topListeQuoi, topListeOu, leftListeOu) {

    _interfaceAC = this;
    this.DocumentForm = idFormulaire;
    this.SubmitButton = idBoutton;
    this.Secteur = secteur;
    this.WidthListeQuoi = -1;
    this.WidthListeOu = -1;
    this.AllResponseQuoi = false;
    this.AllResponseOu = false;
    this.Methode = methode;
    this.TopListeQuoi = topListeQuoi;
    this.TopListeOu = topListeOu;
    this.LeftListeOu = leftListeOu;
    this.WithProximite = true;
    this.TypesGeloc = "Ville|Dept|Region";
    this.ScrDataAC = 1;
    this.HaveMessageDefaut = false;
    this.MessageDefaut = "";

    if (this.Secteur == 0) {
        this.Mode = "Accueil";
    }
    else {
        this.Mode = "Sectorise";
    }

    if (idChampsQuoi != '' && idChampsQuoi != undefined) {
        this.DivSuggestionQuoi = document.getElementById("DivSuggestionQuoi");
        this.DivAlerteQuoiNoSelect = document.getElementById("DivAlerteQuoiNoSelect");
        this.DivAlerteQuoiVide = document.getElementById("DivAlerteQuoiVide");
        this.QuoiField = idChampsQuoi;
        this.QuoiItemSelected = null;
        this.QuoiField.autocomplete = "off";
        this.CurrentQuoiFieldValue = PJPARightTrim(this.QuoiField.value);
        this.OldQuoiFieldValue = "";
        this.Data = new PJPADictionary();

        var top = (this.TopListeQuoi != undefined ? this.TopListeQuoi : 30);
        var left = (this.LeftListeQuoi != undefined ? this.LeftListeQuoi : 6);

        this.ListeSuggestionQuoi = new PJPAInterfaceSuggestion(true, this.DivSuggestionQuoi, this.QuoiField, "ListeQuoi", 210, false, 10, top, left);
        this.ListeSuggestionQuoi.SetEvenement(PJPAInterfaceAC.OnBlur, PJPAInterfaceAC.OnFocus, up, down);

        this.QuoiField.focus();

        PJPALaunchCall(this.Secteur, "", false, false, _interfaceAC.Methode);
        setTimeout("_interfaceAC.Recherche();", _pjpaTempsAppel);

        PJPAInterfaceAC.InitAlerteQuoi();
    }

    if (idChampsOu != '' && idChampsOu != undefined) {
        this.DivSuggestionOu = document.getElementById("DivSuggestionOu");
        this.DivAlerteOu = document.getElementById("DivAlerteOu");
        this.OuField = idChampsOu;
        this.OuHiddenField = idChampsOuHiddenField;
        this.OuItemSelected = null;
        this.OuField.autocomplete = "off";
        this.CurrentInputFieldOuValue = PJPARightTrim(this.OuField.value);
        this.OldInputFieldOuValue = this.CurrentInputFieldOuValue;
        this.OuData = new PJPADictionary();

        var top = (this.TopListeOu != undefined ? this.TopListeOu : 30);
        var left = (this.LeftListeOu != undefined ? this.LeftListeOu : 6);

        this.ListeSuggestionOu = new PJPAInterfaceSuggestion(false, this.DivSuggestionOu, this.OuField, "ListeOu", 210, false, 10, top, left);
        this.ListeSuggestionOu.SetEvenement(PJPAInterfaceAC.OnBlurOu, PJPAInterfaceAC.OnFocusOu, up, down);

        if (this.ScrDataAC == 1) {
        	PJPALaunchCallRegexProximite(this.Methode);
        	PJPALaunchCallOu("", false, _interfaceAC.Methode, false, this.TypesGeloc, this.ScrDataAC);
        	setTimeout("_interfaceAC.RechercheOu();", _pjpaTempsAppel);
        }
        
        PJPAInterfaceAC.InitAlerteOu();
    }

    var bsubmitbtn = (this.SubmitButton != undefined && this.SubmitButton != null);
    var bQuoiField = (this.QuoiField != undefined && this.QuoiField != null);
    var bOuField = (this.OuField != undefined && this.OuField != null);

    if (bsubmitbtn && (bQuoiField || bOuField)) {
        if (bQuoiField && bOuField) {
            this.SubmitButton.onclick = PJPAInterfaceAC.SubmitClick;
        }
        this.CanSubmit = true;
    }
    else {
        this.CanSubmit = false;
    }

    if (idChampsQuoi != '' && idChampsQuoi != undefined) {
        PJPAInterfaceAC.CompleteDivQuoiHide();
    }
    if (idChampsOu != '' && idChampsOu != undefined) {
        PJPAInterfaceAC.CompleteDivOuHide();
    }
 }

 /************Interface AutoCompletion DEBUG    *************************************************************/
 PJPAInterfaceAC.WriteDebug = function(texte) {
     $("#div1").html($("#div1").html() + "<br>" + texte);
 }

/************Interface AutoCompletion Properties*************************************************************/
 PJPAInterfaceAC.CompleteDivQuoiHide = function() {
 	if (_interfaceAC.DivSuggestionQuoi != '' && _interfaceAC.DivSuggestionQuoi != undefined) {
 		$(_interfaceAC.DivSuggestionQuoi).hide();
 	}
 }

 PJPAInterfaceAC.CompleteDivQuoiShow = function() {
 	if (_interfaceAC.DivSuggestionQuoi != '' && _interfaceAC.DivSuggestionQuoi != undefined) {
 		$(_interfaceAC.DivSuggestionQuoi).show();
 	}
 }

 PJPAInterfaceAC.CompleteDivOuHide = function() {
 if (_interfaceAC.DivSuggestionOu != '' && _interfaceAC.DivSuggestionOu != undefined) {
 		$(_interfaceAC.DivSuggestionOu).hide();
 	}
 }

 PJPAInterfaceAC.CompleteDivOuShow = function() {
 if (_interfaceAC.DivSuggestionOu != '' && _interfaceAC.DivSuggestionOu != undefined) {
 		$(_interfaceAC.DivSuggestionOu).show();
 	}
 } 

PJPAInterfaceAC.prototype.GetData = function() {
    return _interfaceAC.Data.GetListData();
}

PJPAInterfaceAC.prototype.SetData = function(valeur) {
    this.Data = valeur;
}

PJPAInterfaceAC.prototype.Initialize = function() {
    _pjpaIsPress = false;
    _pjpaSelectedValue = false;
}

PJPAInterfaceAC.prototype.InitializeOu = function() {
    _pjpaIsOuPress = false;
    _pjpaSelectedOuValue = false;
}

PJPAInterfaceAC.SetProximite = function(valeur) {
	_interfaceAC.WithProximite = valeur;
}

PJPAInterfaceAC.SetTypesGeoloc = function(valeur) {
	_interfaceAC.TypesGeloc = valeur;
}

PJPAInterfaceAC.SetPositionListe = function(IsQuoi, left, top) {
	var ajustY = 0;

	if ($.browser.msie) {
		ajustY = 1;
	}

	if (IsQuoi) {
		_interfaceAC.TopListeQuoi = top + ajustY;
		_interfaceAC.LeftListeQuoi = left;
		if (_interfaceAC.ListeSuggestionQuoi != undefined) {
			_interfaceAC.ListeSuggestionQuoi.SetPositionListe(left,top + ajustY);
		}
	}
	else {
		_interfaceAC.TopListeOu = top + ajustY;
		_interfaceAC.LeftListeOu = left;
		if (_interfaceAC.ListeSuggestionOu != undefined) {
			_interfaceAC.ListeSuggestionOu.SetPositionListe(left, top + ajustY);
		}		
	}
}

PJPAInterfaceAC.SetHiddenFieldItemSelected = function(valeur) {
	_interfaceAC.HiddenFieldItemSelected = document.getElementById(valeur);
}

PJPAInterfaceAC.SetPrixImmo = function() {
	_interfaceAC.ScrDataAC = 4;
	_interfaceAC.TypesGeloc = "Ville|Dept";
	PJPAInterfaceAC.InitAlerteOu();
	_interfaceAC.WithProximite = false;
}

PJPAInterfaceAC.SetColoc = function() {
	PJPAInterfaceAC.SetMessageDefaut("Ville, Dept. ou region");
	_interfaceAC.ScrDataAC = 2;
	_interfaceAC.TypesGeloc = "Ville|Dept|Region";
	PJPAInterfaceAC.InitAlerteOu();
	_interfaceAC.WithProximite = false;

	var saisieOu = _interfaceAC.OuField.value;
	if (saisieOu != '' && saisieOu != _interfaceAC.MessageDefaut) {
		PJPAInterfaceAC.SetInitialItemOu(saisieOu);
	}
}

PJPAInterfaceAC.SetLocVac = function() {
	PJPAInterfaceAC.SetMessageDefaut("Ville, Dept. ou region");
	_interfaceAC.ScrDataAC = 3;
	_interfaceAC.TypesGeloc = "Ville|Dept|Region";
	PJPAInterfaceAC.InitAlerteOu();
	_interfaceAC.WithProximite = false;

	var saisieOu = _interfaceAC.OuField.value;
	if (saisieOu != '' && saisieOu != _interfaceAC.MessageDefaut) {
		PJPAInterfaceAC.SetInitialItemOu(saisieOu);
	}
}

PJPAInterfaceAC.SetInitialItemOu = function(saisie) {
	_interfaceAC.OuItemSelected = new PJPADataAutoCompletionOu(-1, false, saisie, '', '', '', '', '', saisie);
}

PJPAInterfaceAC.SetMessageDefaut = function(message) {
	_interfaceAC.HaveMessageDefaut = true;
	_interfaceAC.MessageDefaut = message;
	_interfaceAC.StyleMessageDefaut = " italicgray";
	if (_interfaceAC.ListeSuggestionOu.InputAttached.value == "") {
		_interfaceAC.ListeSuggestionOu.InputAttached.value = _interfaceAC.MessageDefaut;
		_interfaceAC.ListeSuggestionOu.InputAttached.className += _interfaceAC.StyleMessageDefaut;
	}
}

/******************Interface AutoCompletion Methods QUOI ******************/
PJPAInterfaceAC.OnBlur = function() {
    _interfaceAC.ListeSuggestionQuoi.InputAttached.focused = false;
    _pjpaFocusChamps = "";
    if (PJPAInterfaceAC.CanHideSuggestion()) {
        setTimeout('PJPAInterfaceAC.CompleteDivQuoiHide();', 100);
        //PJPAInterfaceAC.InitSelection(0);
    }
}

PJPAInterfaceAC.CanHideSuggestion = function() {
    if (_pjpaOnEct == 0 )
        return true;

    return false;
}

PJPAInterfaceAC.FindItem = function(data, saisie) {
    for (var i = 0; i < data.length; i++) {
        if (data[i].ExpressionGlobal == saisie) {
            return true;
            break;
        }
    }
    return false;
}

PJPAInterfaceAC.OnFocus = function() {
	
	_interfaceAC.ListeSuggestionQuoi.InputAttached.focused = true;
	_pjpaFocusChamps = "Quoi";
	_pjpaIsPress = false;
	_pjpaSelectedValue = false;

	var taille = PJPACalculateWidth(_interfaceAC.ListeSuggestionQuoi.InputAttached);
	_interfaceAC.ListeSuggestionQuoi.SetWidth(taille);

	if (_interfaceAC.WhatFieldIsRequiredVide != undefined) {
		$(_interfaceAC.WhatFieldIsRequiredVide).hide();
	}
	if (_interfaceAC.WhatFieldIsRequiredNoSelected != undefined) {
		$(_interfaceAC.WhatFieldIsRequiredNoSelected).hide();
	}

	if (_interfaceAC.OuField != undefined && _interfaceAC.OuField != null) {
		PJPAInterfaceAC.CompleteDivOuHide();
	}

	var completeDiv = document.getElementById(_interfaceAC.ListeSuggestionQuoi._completeDiv.id);
	if (completeDiv != undefined && completeDiv.childNodes.length > 1) {
		if (PJPAInterfaceAC.CanDisplaySuggestion()) {
			PJPAInterfaceAC.InitSelection(1);
			PJPAInterfaceAC.CompleteDivQuoiShow();
		}
	}
	else {
		PJPAInterfaceAC.LanceRecherche();
		PJPAInterfaceAC.InitSelection(0);
	}
}

PJPAInterfaceAC.CanDisplaySuggestion = function() {

	if (_interfaceAC.QuoiField != undefined) {
		if (_interfaceAC.Secteur == 0 && PJPARightTrim(_interfaceAC.QuoiField.value) == "")
			return false;

		if (_interfaceAC.Secteur > 0 && _interfaceAC.Secteur < 4 && PJPATrimDoubleSpace(_interfaceAC.QuoiField.value) == "")
			return false;

		if ((_interfaceAC.Secteur > 0 && _interfaceAC.Secteur < 4 && (_pjpaMotSansReponse == "Null" || _pjpaMotSansReponse == undefined || _pjpaMotSansReponse == "")) 
			|| (_interfaceAC.Secteur == 0 || PJPARightTrim(_interfaceAC.QuoiField.value) == "")) {
			return true;
		}
	}
	return false;
}

PJPAInterfaceAC.IsItemDefaut = function(item) 
{
    if (item != undefined && _pjpaDataAutoCompDefaut != undefined && _pjpaDataAutoCompDefaut.length > 0) 
    {
        for (var i = 0; i < _pjpaDataAutoCompDefaut.length; i++) 
        {
            if (item.ExpressionGlobal == _pjpaDataAutoCompDefaut[i].ExpressionGlobal) 
            {
                return true; 
            }
        }
    }
    return false;
}

PJPAInterfaceAC.InitSelection = function(position) {
    var id = "quoi" + "_" + _interfaceAC.ListeSuggestionQuoi.PositionSelection;
    PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElement", "AutoCompleteElementAct");

    _interfaceAC.ListeSuggestionQuoi.PositionSelection = position;

    var id = "quoi" + "_" + _interfaceAC.ListeSuggestionQuoi.PositionSelection;
    PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElementAct", "AutoCompleteElement");
    
}

/************Interface AutoCompletion Methods Ou*************************************************************/
PJPAInterfaceAC.prototype.GetOuData = function() {
	return _interfaceAC.OuData.GetListData();
}

PJPAInterfaceAC.prototype.SetOuData = function(valeur) {
    this.OuData = valeur;
}

PJPAInterfaceAC.OnFocusOu = function() {
	//alert(_interfaceAC.ListeSuggestionOu.InputAttached.value + " " + _interfaceAC.HaveMessageDefaut);
	if (_interfaceAC.HaveMessageDefaut && _interfaceAC.ListeSuggestionOu.InputAttached.value == _interfaceAC.MessageDefaut) {

		_interfaceAC.ListeSuggestionOu.InputAttached.value = "";
		_interfaceAC.ListeSuggestionOu.InputAttached.className = _interfaceAC.ListeSuggestionOu.InputAttached.className.replace(_interfaceAC.StyleMessageDefaut, "");
	}

	_interfaceAC.ListeSuggestionOu.InputAttached.focused = true;
	_pjpaFocusChamps = "Ou";
	_pjpaIsOuPress = false;
	_pjpaSelectedOuValue = false;

	var taille = PJPACalculateWidth(_interfaceAC.ListeSuggestionOu.InputAttached);
	_interfaceAC.ListeSuggestionOu.SetWidth(taille);

	if (_interfaceAC.WhereFieldIsRequired != undefined) {
		$(_interfaceAC.WhereFieldIsRequired).hide();
	}

	if (_interfaceAC.QuoiField != undefined && _interfaceAC.QuoiField != null) {
		PJPAInterfaceAC.CompleteDivQuoiHide();
	}

	var completeDiv = document.getElementById(_interfaceAC.ListeSuggestionOu._completeDiv.id);
	var keyliste = _interfaceAC.ListeSuggestionOu.KeyListe;
	if (keyliste != undefined) {

		var saisie = PJPATrimDoubleSpace(_interfaceAC.OuField.value);

		if (completeDiv != undefined && completeDiv.childNodes.length > 1) {
			if (PJPAInterfaceAC.CanDisplaySuggestionOu()) {
				PJPAInterfaceAC.InitSelectionOu(1);
				PJPAInterfaceAC.CompleteDivOuShow();
			}
		}
		else {
			if (PJPARightTrim(_interfaceAC.OuField.value) != "") {
				PJPAInterfaceAC.LanceRechercheOu();
				PJPAInterfaceAC.InitSelectionOu(0);
			}
		}
	}
}

PJPAInterfaceAC.CanDisplaySuggestionOu = function() {
    if (PJPARightTrim(_interfaceAC.OuField.value) == "") {
        return false;
    }

    if ((_pjpaMotOuSansReponse == "Null" || _pjpaMotOuSansReponse == undefined) || (PJPARightTrim(_interfaceAC.OuField.value) == "")) {
        return true;
    }
    return false;
}

PJPAInterfaceAC.OnBlurOu = function() {

	_interfaceAC.ListeSuggestionOu.InputAttached.focused = false;
	_pjpaFocusChamps = "";
	if (_pjpaOnEct == 0) {
		PJPAInterfaceAC.CompleteDivOuHide();
	}

	if (_interfaceAC.HaveMessageDefaut && (_interfaceAC.ListeSuggestionOu.InputAttached.value == "" ||
		_interfaceAC.ListeSuggestionOu.InputAttached.value == _interfaceAC.MessageDefaut)) {

		_interfaceAC.ListeSuggestionOu.InputAttached.value = _interfaceAC.MessageDefaut;
		_interfaceAC.ListeSuggestionOu.InputAttached.className += _interfaceAC.StyleMessageDefaut;
	}
}

PJPAInterfaceAC.InitSelectionOu = function(position) {

    var id = "ou" + "_" + _interfaceAC.ListeSuggestionOu.PositionSelection;
    PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElement", "AutoCompleteElementAct");
    
    _interfaceAC.ListeSuggestionOu.PositionSelection = position;

    var id = "ou" + "_" + _interfaceAC.ListeSuggestionOu.PositionSelection;
    PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElementAct", "AutoCompleteElement");
}

PJPAInterfaceAC.AjusteDivSelonNavigateur = function() {
    var ajust = -3;
    if ($.browser.msie) {
        ajust += 9;
    }
    return ajust;
}


/*---- AppelWS.js ----*/

var _pjpaUrlProxy = "/test/V2/proxy.aspx";
var _pjpaServeur = "http://www-qualif.pjpa.annoncesjaunes.fr";
var webServiceUrl = '/WebServices/AutoCompletion.asmx/AutoCompletionGet';
var webServiceUrlLogger = '/WebServices/AutoCompletion.asmx/AutoCompletionLogger';
var webServiceUrlOu = '/WebServices/AutoCompletion.asmx/AutoCompleteAvecProximiteOu';
var webServiceUrlRegex = '/WebServices/AutoCompletion.asmx/AutoCompleteOuRegexProximite';
var WebServiceContentType = "application/json; charset=utf-8";

/************Fonction JSON : DATA QUOI AutoCompletion*************************************************************/
PJPAInterfaceAC.FormatForKeyCache = function(Saisie) {
    return PJPATrimDoubleSpace(PJPARemoveAccents(Saisie)).toLowerCase();
}

PJPAInterfaceAC.FormatForKeyCacheOu = function(Saisie) {
    return PJPATrimDoubleSpace(PJPARemoveAccentsCache(Saisie)).toLowerCase();
}

function PJPALaunchCall(secteurid, saisie, allResponseQuoi, getHiddenItem, Methode) {
    if (Methode == "POST") {
        PJPALaunchCallPOST(secteurid, saisie, allResponseQuoi, getHiddenItem);
       }
    
}

function PJPALaunchCallPOST(secteurid, saisie, allResponseQuoi, getHiddenItem) {
    WriteDebugText("PJPALaunchCallPOST Deb : " + saisie);    
    if (getHiddenItem == undefined) {
        getHiddenItem = false;
    }
    
    saisie = PJPAInterfaceAC.FormatForKeyCache(saisie);
    $.ajax({
        type: "POST",
        url: webServiceUrl,
        data: '{ "secteurId" : "' + secteurid + '", "saisie" : "' + saisie + '", "allResponse" : "' + allResponseQuoi + '" , "getHiddenItem" : "' + getHiddenItem + '" }',
        contentType: WebServiceContentType,
        dataType: "json",
        success: PJPAAjaxCallSucceedJson,
        error: ajaxCallError,
        saisie: saisie,
        allResponseQuoi: allResponseQuoi,
        getHiddenItem: getHiddenItem
    });
    WriteDebugText("PJPALaunchCallPOST Fin : " + saisie);    
}

function PJPAAjaxCallSucceedJson(response) {

    var QuoiFieldValue = this.saisie;
    WriteDebugText("PJPAAjaxCallSucceedJson Deb : " + QuoiFieldValue);
        
    if (QuoiFieldValue == "" && (_pjpaDataAutoCompDefaut == undefined || _pjpaDataAutoCompDefaut == null)) {
        PJPADataAutoCompletionQuoi.LoadDataFromJSon(response, _interfaceAC.Data, _interfaceAC.Mode, QuoiFieldValue)
        PJPACacheResults("", _interfaceAC.GetData());
        _pjpaDataAutoCompDefaut = _pjpaResultCache[""];
    }
    else {
        _interfaceAC.Data = new PJPADictionary();

        PJPADataAutoCompletionQuoi.LoadDataFromJSon(response, _interfaceAC.Data, _interfaceAC.Mode, QuoiFieldValue)

        var data = _interfaceAC.GetData();
        if (this.allResponseQuoi) {

            PJPACacheResults("All_" + QuoiFieldValue, data);
            PJPAInterfaceAC.AfficheListeComplete(data);
        }
        else {
            PJPACacheResults(QuoiFieldValue, data);
            PJPAInterfaceAC.AfficheListe();
        }

        if (QuoiFieldValue != "" && _pjpaDataAutoCompDefaut != undefined && PJPACompare(data, _pjpaDataAutoCompDefaut)) {
            _pjpaMotSansReponse = QuoiFieldValue;
        }

        if (_interfaceAC.GetData().length == 0) {
            _pjpaMotSansReponse = QuoiFieldValue;
        }
    }
    WriteDebugText("PJPAAjaxCallSucceedJson Fin : " + QuoiFieldValue);    
}

function ajaxCallError(error) {
	if (getObj("div1") != undefined) {
		$('#div1').html('ERROR - ' + error); 
	}
}

/************Fonction JSON : DATA OU AutoCompletion*************************************************************/
function PJPALaunchCallOu(saisie, allResponseOu, Methode, withProx, typesGeoloc, srcAC) {
    if (Methode == "POST") {
    	PJPALaunchCallOuPOST(saisie, allResponseOu, withProx, typesGeoloc, srcAC);
    }
}

function PJPALaunchCallOuPOST(saisie, allResponseOu, withProx, typesGeoloc, srcAC) {
    saisie = PJPAInterfaceAC.FormatForKeyCacheOu(saisie);    
    if (window.location.hostname.indexOf('googleusercontent') == -1) {
    	$.ajax({
    		type: "POST",
    		url: webServiceUrlOu,
    		data: '{"saisie" : "' + saisie + '", "allResponse" : "' + allResponseOu + '", "withProximite": "' + withProx + '", "typesGeoloc": "' + typesGeoloc + '", "sourceAC" : "' + srcAC + '" }',
    		contentType: WebServiceContentType,
    		dataType: "json",
    		success: PJPAAjaxCallSucceedJsonOu,
    		error: ajaxCallError,
    		saisie: saisie,
    		allResponseOu: allResponseOu
    	});
    }
}

// Appel pour l'autoCompletion du champs Ou
function PJPAAjaxCallSucceedJsonOu(response) {
    _interfaceAC.OuData = new PJPADictionary();
    var ouFieldValue = PJPAInterfaceAC.FormatForKeyCacheOu(this.saisie);

    PJPADataAutoCompletionOu.LoadDataFromJSon(response, _interfaceAC.OuData, ouFieldValue);

    if (this.allResponseOu) {
        PJPACacheResultsOu("All_" + ouFieldValue, _interfaceAC.GetOuData());
        PJPAInterfaceAC.AfficheListeCompleteOu(_interfaceAC.GetOuData());
    }
    else {
        PJPACacheResultsOu(ouFieldValue, _interfaceAC.GetOuData());
//        PJPAInterfaceAC.AfficheListeOu(_interfaceAC.GetOuData());
        PJPAInterfaceAC.AfficheListeOu();
    }
    
    if (ouFieldValue == "") {
        _pjpaDataAutoCompOuDefaut = _interfaceAC.GetOuData();
    }
}

/************Fonction JSON : Recupere la  regex pour gérer la proximite au niveau du secteur Emploi et Service ******************/
function PJPALaunchCallRegexProximite(Methode) {
    if (Methode == "POST") {
        PJPALaunchCallRegexProximitePOST();
    }
}

function PJPALaunchCallRegexProximitePOST() {
	if (window.location.hostname.indexOf('googleusercontent') == -1) {
		$.ajax({
			type: "POST",
			url: webServiceUrlRegex,
			data: '{}',
			contentType: WebServiceContentType,
			dataType: "json",
			success: ajaxCallSucceedRegexJson,
			error: ajaxCallError
		});
	}
}

function ajaxCallSucceedRegexJson(response) {
_pjpaProximiteRegex = response;
}


/************Fonction JSON : Recupere la  regex pour gérer la proximite au niveau du secteur Emploi et Service ******************/
function PJPALaunchCallLogger(Secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre, Valide, Methode, Referer) {
    if (Methode == "POST") {
        PJPALaunchCallLoggerPOST(Secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre, Valide, Referer);
    }
}

function PJPALaunchCallLoggerPOST(Secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre, Valide, Referer) {
    $.ajax({
        type: "POST",
        url: webServiceUrlLogger,
        data: '{ "Secteur" : "' + Secteur +
        '", "Cat" : "' + Cat +
        '", "SousCat" : "' + SousCat +
        '", "QuoiLibre" : "' + QuoiLibre +
        '", "OuProximite" : "' + OuProximite +
        '", "Ou" : "' + Ou +
        '", "OuSuffixe" : "' + OuSuffixe +
        '", "OuLibre" : "' + OuLibre +
        '", "Referer" : "' + Referer +
        '", "Valide" : "' + Valide + '" }',
        contentType: WebServiceContentType,
        dataType: "json",
        success: PJPAAjaxCallSucceedJsonLogger,
        error: ajaxCallErrorLogger,
        Submit: Valide
    });
}

function PJPAAjaxCallSucceedJsonLogger(response) {
    if (this.Submit) {
        PJPAInterfaceAC.Redirect();
    }
}

function ajaxCallErrorLogger(error) {
    if (this.Submit) {
        PJPAInterfaceAC.Redirect();
    }
}


/*---- DataAutoCompletion.js ----*/

/****************** DataAutoCompletion QUOI ******************/
function PJPADataAutoCompletion() {
    this.HaveItemHidden = false;

    this.Data = new PJPADictionary();
}

function PJPADataAutoCompletionQuoi(idsecteur, secteur, libelleCat, libelleSsCat, html, valCat, valSsCat, mode, defaut, saisie) {
    this.IdSecteur = idsecteur;
    this.Secteur = secteur;
    this.LibelleCat = libelleCat;
    this.LibelleSsCat = libelleSsCat;
    this.ValCat = valCat;
    this.ValSsCat = valSsCat;
    this.IsSelected = false;
    this.Mode = mode;
    this.Defaut = defaut;
    this.Width = 0;
    this.Saisie = saisie;

    this.Libelle = html;

    if (this.Mode == "Accueil" || this.IdSecteur == 4 || this.IdSecteur == 5) {
        this.ExpressionGlobal = secteur + " > " + libelleCat + " " + libelleSsCat;
    }
    else {
        this.ExpressionGlobal = libelleCat + (libelleSsCat != null && libelleSsCat != undefined && libelleSsCat != "" ? " > " + libelleSsCat : "");
    }
    this.ExpressionGlobal = PJPATrimDoubleSpace(this.ExpressionGlobal);
}

function PJPAGetRegExprIgnoreAccents(chaine) {
    chaine = "(( " + chaine + "))";
    temp = chaine.replace(/[aàâä]/gi, ")[ä|à|â|a](")
    temp = temp.replace(/[eéèêë]/gi, ")[é|è|ê|ë|e](")
    temp = temp.replace(/[iîï]/gi, ")[î|ï|i](")
    temp = temp.replace(/[oôö]/gi, ")[ô|ö|o](")
    temp = temp.replace(/[uùûü]/gi, ")[ù|û|ü|u](")
    temp = temp.replace(/[cç]/gi, ")[c|ç](")
    return temp
}

PJPADataAutoCompletionQuoi.prototype.GetSecteurId = function() {
    return this.IdSecteur;
}

PJPADataAutoCompletionQuoi.LoadDataFromJSon = function(_Response, _DataAc, _Mode, _Saisie) {
    var _data = _Response;
    for (var i = 0; i < _data.length; i++) {
        if (_data[i]) {
            var idsecteur = _data[i].IdSect;

            var _secteur = _data[i].Sect;
            var _cat = (_data[i].Cat != null ? _data[i].Cat : "");
            var _sscat = (_data[i].SsCat != null ? _data[i].SsCat : "");

            var vcat = (_data[i].VCat != null ? _data[i].VCat : "");
            var vsscat = (_data[i].VSsCat != null ? _data[i].VSsCat : "");
            var defaut = (_data[i].Def != null ? _data[i].Def : false);

            secteur = _secteur.replace(PJPARegGras_OuvrantFermant, "");
            //secteur = secteur.replace(PJPARegGras_Fermant, "");

            cat = _cat.replace(PJPARegGras_OuvrantFermant, "");
            //cat = cat.replace(PJPARegGras_Fermant, "");

            sscat = _sscat.replace(PJPARegGras_OuvrantFermant, "");
            //sscat = sscat.replace(PJPARegGras_Fermant, "");

            var secteurG = _secteur.replace(PJPARegGras_Ouvrant, "<b>");
            secteurG = secteurG.replace(PJPARegGras_Fermant, "</b>");

            var catG = _cat.replace(PJPARegGras_Ouvrant, "<b>");
            catG = catG.replace(PJPARegGras_Fermant, "</b>");

            var sscatG = _sscat.replace(PJPARegGras_Ouvrant, "<b>");
            sscatG = sscatG.replace(PJPARegGras_Fermant, "</b>");

            var htmlLib = PJPADataAutoCompletionQuoi.GetLibGras(secteurG, catG, sscatG, _Mode);

            dataAc = new PJPADataAutoCompletionQuoi(idsecteur, secteur, cat, sscat, htmlLib, vcat, vsscat, _Mode, defaut, _Saisie);
            _DataAc.Add(dataAc.ExpressionGlobal, dataAc);
        }
    }
}

PJPADataAutoCompletionQuoi.GetLibGras = function(secteur, libelleCat, libelleSsCat, Mode) {
    var bal_secteur = '<div class="secteur">';
    var bal_categorie = '<div class="categorie">';
    var bal_souscategorie = '<div class="souscat">';
    var bal_fin = '</div>';

    var retFin = "";
    if (Mode == "Accueil" || _interfaceAC.Secteur == 4 || _interfaceAC.Secteur == 5) {
        if (secteur != '') { retFin += bal_secteur + secteur + bal_fin; }
    }
    if (Mode == "Accueil" || _interfaceAC.Secteur == 4 || _interfaceAC.Secteur == 5) {
        if (libelleCat != '') { retFin += bal_categorie + libelleCat + bal_fin; }
    }
    else {
        if (libelleCat != '') { retFin += bal_secteur + libelleCat + bal_fin; }
    }

    if (libelleSsCat != null && libelleSsCat != undefined && PJPARightTrim(libelleSsCat) != "") {
        retFin += bal_souscategorie + libelleSsCat + bal_fin;
    }

    return retFin;
}

PJPADataAutoCompletionQuoi.prototype.GetValeur = function() {
    if (this.IdSecteur == 4 || this.IdSecteur == 5) {
        return this.LibelleCat + " " + this.LibelleSsCat;
    }
    else {
        var libCat = PJPAInterfaceAC.FormatForKeyCache(this.LibelleCat.toLowerCase());
        var annonce = " annonces immobilières";
        annonce = PJPAInterfaceAC.FormatForKeyCache(annonce.toLowerCase());
        if (libCat == annonce && this.IdSecteur == 1)
            var quoi = this.ValCat;
        else if (this.ValCat != "" && this.IdSecteur == 2)
            var quoi = this.ValCat;
        else if (this.ValCat != "" && this.IdSecteur == 3)
            var quoi = this.ValCat;
        else
            var quoi = this.LibelleCat + " " + this.LibelleSsCat;

        quoi = PJPACleanLRField(quoi);
        return quoi;
    }
}

PJPADataAutoCompletionQuoi.prototype.GetValeurCat = function() {
    return this.ValCat;
}

PJPADataAutoCompletionQuoi.prototype.GetValeurSousCat = function() {
    return this.ValSsCat;
}

PJPADataAutoCompletionQuoi.prototype.GetLibelle = function(i, isFirst) {
    if (isFirst) {
        if (this.IdSecteur == 1) {
            return this.Libelle.replace('class="secteur"', 'class="sectImmoF"');
        }
        if (this.IdSecteur == 2) {
            return this.Libelle.replace('class="secteur"', 'class="sectAutoF"');
        }
        if (this.IdSecteur == 3) {
            return this.Libelle.replace('class="secteur"', 'class="sectMotoF"');
        }
        if (this.IdSecteur == 4) {
            return this.Libelle.replace('class="secteur"', 'class="sectEmploiF"');
        }
        if (this.IdSecteur == 5) {
            return this.Libelle.replace('class="secteur"', 'class="sectStageF"');
        }
        if (this.IdSecteur == 6) {
            return this.Libelle.replace('class="secteur"', 'class="sectServiceF"');
        }
    }
    else {
        return this.Libelle;
    }
}

PJPADataAutoCompletionQuoi.prototype.GetLibelleGras = function(tab) {
    var bal_secteur = '<div class="secteur">';
    var bal_categorie = '<div class="categorie">';
    var bal_souscategorie = '<div class="souscat">';
    var bal_fin = '</div>';

    var secteur = "";
    var libelleCat = "";
    var libelleSsCat = "";

    if (this.Defaut == 1) {
        secteur = this.Secteur;
        libelleCat = this.LibelleCat;
        libelleSsCat = this.LibelleSsCat;
    }
    else {
        secteur = PJPAReplaceSaisie(this.Secteur, tab);
        libelleCat = PJPAReplaceSaisie(this.LibelleCat, tab);
        libelleSsCat = PJPAReplaceSaisie(this.LibelleSsCat, tab);
    }

    var retFin = "";
    if (this.Mode == "Accueil" || this.IdSecteur == 4 || this.IdSecteur == 5) {
        if (secteur != '') { retFin += bal_secteur + secteur + bal_fin; }
    }
    if (this.Mode == "Accueil" || this.IdSecteur == 4 || this.IdSecteur == 5) {
        if (libelleCat != '') { retFin += bal_categorie + libelleCat + bal_fin; }
    }
    else {
        if (libelleCat != '') { retFin += bal_secteur + libelleCat + bal_fin; }
    }

    if (libelleSsCat != null && libelleSsCat != undefined && PJPARightTrim(libelleSsCat) != "") {
        retFin += bal_souscategorie + libelleSsCat + bal_fin;
    }

    return retFin;
}

/****************** DataAutoCompletion OU ******************/
function PJPADataAutoCompletionOu(idOu, doublonOu, libelleOu, typeLocalite, prefixe, suffixe, OuWithoutPrefixe, elargissement, saisie) {
	this.idOu = idOu;
	this.doublonOu = doublonOu;

    this.libelleOu = libelleOu;
    this.typeLocalite = typeLocalite;
    this.prefixe = prefixe;
    this.suffixe = suffixe;
    this.ouWithoutPrefixe = OuWithoutPrefixe;
    this.elargissement = elargissement
    this.IsSelected = false;
    this.Saisie = PJPATrimDoubleSpace(saisie);
    this.Width = 0;
    this.ExpressionGlobal = libelleOu;
    if (this.Saisie != undefined) {
        var saisieSansParenthese = PJPAReplaceParentheses(this.Saisie, "(");
        var saisieSansParenthese = PJPAReplaceParentheses(saisieSansParenthese, ")");
        var TabListeMot = PJPADataAutoCompletion.TriPArMotPlusLong(saisieSansParenthese);
        for (var i = 0; i < TabListeMot.length; i++) {
            TabListeMot[i] = PJPAGetRegExprIgnoreAccents(TabListeMot[i]);
        }

        this.Libelle = this.GetLibelleGras(TabListeMot);
    }
}

PJPADataAutoCompletion.TriPArMotPlusLong = function(valeur) {
    var tab = (valeur.toLowerCase()).split(' ');
    for (var i = 0; i < tab.length; i++) {
        for (var j = i + 1; j < tab.length; j++) {
            if (tab[i].length < tab[j].length) {
                var tmp = tab[i];
                tab[i] = tab[j];
                tab[j] = tmp;
            }
        }
    }
    return tab;
}


PJPADataAutoCompletionOu.prototype.GetLibelleGras = function(tab) {
    var libelleOu = "";
    var bal_DivOu = '<div class="divOu">';
    var bal_fin = '</div>';

    libelleOu = PJPAReplaceSaisie(this.libelleOu, tab);

    var retFin = "";

    if (libelleOu != '') { retFin += libelleOu; }

    return bal_DivOu + retFin + bal_fin;
}

PJPADataAutoCompletionOu.prototype.GetLibelle = function(val, i) {
    return this.Libelle;
}

PJPADataAutoCompletionOu.prototype.GetValeur = function(secteur) {
	var valeur;
	if (secteur == 4 || secteur == 5) {
		if (this.prefixe != '') {
			valeur = this.elargissement;
		}
		else {
			var intVal = PJPATryParseInt(this.ouWithoutPrefixe, -1);
			if (intVal != -1) {
				valeur = "(" + this.ouWithoutPrefixe + ")";
			}
			else {
				valeur = PJPARemplacerAccents(PJPAFormatOu(this.libelleOu));
			}
		}
	}
	else if (secteur == 6) {

		if (this.prefixe != '') {
			valeur = this.elargissement;
		}
		else {

			valeur = PJPARemplacerAccents(PJPAFormatOu(this.libelleOu));
		}
	}
	else {
		var intVal = PJPATryParseInt(this.ouWithoutPrefixe, -1);
		if (intVal != -1) {
			if (this.prefixe != '') {
				valeur = this.prefixe + " " + this.ouWithoutPrefixe;
			}
			else {
				valeur = this.ouWithoutPrefixe;
			}
		}
		else {
			var correctOu = PJPACorrectOu(this.ExpressionGlobal);
			correctOu = PJPACleanLRField(correctOu);
			valeur = correctOu;
		}
	}
	return valeur;
}

PJPADataAutoCompletionOu.LoadDataFromJSon = function(response, ouData, saisie) {
    var _data = response;
    for (var i = 0; i < _data.length; i++) {
        var libelleOu = "";
        var defaut = false;
        if (_data[i]) {
            var libelleOu = (_data[i].OuLibelle != null ? _data[i].OuLibelle : "");
            var typeLocalite = (_data[i].TypeLocalite != null ? _data[i].TypeLocalite : "");
            var suffixe = (_data[i].Suffixe != null ? _data[i].Suffixe : "");
            var prefixe = (_data[i].Prefixe != null ? _data[i].Prefixe : "");
            var elargissement = (_data[i].Elargissement != null ? _data[i].Elargissement : "");
            var ouWithoutPrefixe = (_data[i].OuWithoutPrefixe != null ? _data[i].OuWithoutPrefixe : "");

            var idOu = (_data[i].Id != null ? _data[i].Id : -1);
            var doublonOu = (_data[i].Doublon != null ? _data[i].Doublon : false);

            var dataAc = new PJPADataAutoCompletionOu(idOu, doublonOu, libelleOu, typeLocalite, prefixe, suffixe, ouWithoutPrefixe, elargissement, saisie);
            ouData.Add(dataAc.ExpressionGlobal, dataAc);
        }
    }
}

/****************** PJPADictionary ******************/
function PJPADictionary() {
    this.DicoData = new Array();
    this.Keys = new Array();
}

PJPADictionary.prototype.Add = function(key, obj) {
    /*    this.DicoData[key] = obj;
    this.Keys.push(key);
    */

    this.DicoData[this.DicoData.length] = obj;

}

PJPADictionary.prototype.RemoveLast = function() {
    //    var key = this.Keys.pop();
    //    this.DicoData[key] = null;

    var list = new Array()
    for (var i = 0; i < this.Keys.length - 1; i++) {
        list.push(this.DicoData[this.Keys[i]]);
    }
    return list;

}

PJPADictionary.prototype.Get = function(key) {
    return this.DicoData[key];
}

PJPADictionary.prototype.GetListData = function() {
    /*   var list = new Array()
    for (var i = 0; i < this.Keys.length; i++) {
    list.push(this.DicoData[this.Keys[i]]);
    }
    return list;
    */
    return this.DicoData
}


/*---- DeplacementSelection.js ----*/

/*---- DeplacementSelection.js ----*/
/**********EVENEMENT ******************/
var _pjpaKeypressEnterChamp = false;
var _pjpaKeycodeAuth = ";49;50;52;53;54;55;57;48;219;187;107;192;188;111;110;221;"
var _pjpaKeycodeSupp = ";46;8;"

function PJPAKeyIsLettreOuChiffre(keyCode) {
    if (keyCode >= 48 && keyCode <= 57 || keyCode >= 97 && keyCode <= 122 || keyCode >= 65 && keyCode <= 90) {
        return true;
    }
    return false;
}

function PJPAKeyIsKeycodeAuth(keyCode) {
    if (_pjpaKeycodeAuth.indexOf(";" + keyCode + ";") >= 0) {
        return true;
    }
    return false;
}

function PJPAKeyIsKeycodeSupp(keyCode) {
    if (_pjpaKeycodeSupp.indexOf(";" + keyCode + ";") >= 0) {
        return true;
    }
    return false;
}

/****************** QUOI ******************/
function down(event) {
    var isquoi = (_interfaceAC.ListeSuggestionQuoi != undefined && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus());
    var isou = (_interfaceAC.ListeSuggestionOu != undefined && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus());

    if (isquoi || isou) {
        if (isquoi && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus())
            _pjpaIsPress = true;
        else if (isou && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus())
            _pjpaIsOuPress = true;
                    
        Action(event);
    }
}

function up(event) {
    var isquoi = (_interfaceAC.ListeSuggestionQuoi != undefined && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus());
    var isou = (_interfaceAC.ListeSuggestionOu != undefined && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus());

    if (isquoi &&_interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus())
        _pjpaIsPress = false;
    else if (isou && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus())
        _pjpaIsOuPress = false;
}

function Action(e) {
    var isquoi = (_interfaceAC.ListeSuggestionQuoi != undefined && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus());
    var isou = (_interfaceAC.ListeSuggestionOu != undefined && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus());

    if (isquoi || isou) {
        PJPAOnKeyUpHandler(e);

        if (_pjpaIsPress || _pjpaIsOuPress)
            setTimeout("Action()", 200);
    }
}

/****************** OU ******************/

// Handler pour le keyup de lu champ texte
function PJPAOnKeyUpHandler(event) {
    var isquoi = (_interfaceAC.ListeSuggestionQuoi != undefined && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus());
    var isou = (_interfaceAC.ListeSuggestionOu != undefined && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus());


    if (isquoi && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus()) {
        var canUseKeyBoard = (_interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus());
        var ListeSuggestion = _interfaceAC.ListeSuggestionQuoi;
        var quoi = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.ListeSuggestionQuoi.InputAttached.value);
        var AllResponse = _interfaceAC.AllResponseQuoi;
        var maxLen = 10;

        if (_interfaceAC.QuoiItemSelected != null && _interfaceAC.QuoiItemSelected != undefined) {
            var quoi = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiItemSelected.Saisie);
            if (AllResponse) {
                data = _pjpaResultCache["All_" + quoi];
            }
            else {
                data = _pjpaResultCache[quoi];
            }
        }
        else {
            if (AllResponse) {
                data = _pjpaResultCache["All_" + quoi];
            }
            else {
                data = _pjpaResultCache[quoi];
            }
        }
    }
    else if (isou && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus()) {
        var canUseKeyBoard = (!PJPACompare(_interfaceAC.GetOuData(), _pjpaResultCacheOu[""]));
        var ListeSuggestion = _interfaceAC.ListeSuggestionOu;
        var ou = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.ListeSuggestionOu.InputAttached.value);
        var maxLen = 10;
        var AllResponse = _interfaceAC.AllResponseOu;

        if (_interfaceAC.OuItemSelected != null && _interfaceAC.OuItemSelected != undefined) {
            var ou = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.OuItemSelected.Saisie);
            if (AllResponse) {
                data = _pjpaResultCacheOu["All_" + ou];
            }
            else {
                data = _pjpaResultCacheOu[ou];
            }
        }
        else {
            if (AllResponse) {
                data = _pjpaResultCacheOu["All_" + ou];
            }
            else {
                data = _pjpaResultCacheOu[ou];
            }
        }        
    }

    if (canUseKeyBoard) {
        // acces evenement compatible IE/Firefox
        if (!event && window.event) {
            event = window.event;
        }

        if (event != undefined ) {
            _pjpaEventKeycode = event.keyCode;

            var completeDiv = document.getElementById(ListeSuggestion._completeDiv.id);
            if (completeDiv == undefined)
                return;
                
            // Dans les cas touches touche haute(38) ou touche basse (40)
            if (data != undefined && (_pjpaEventKeycode == 40 || _pjpaEventKeycode == 38) && ListeSuggestion._completeDiv.style.display != 'none') {

                if (data != null && data != undefined) {

                    if (AllResponse) {
                        maxLen = data.length;
                    }
                    else {
                        if (data.length > 10)
                            maxLen = 10;
                        else
                            maxLen = data.length;
                    }

                    if (!ListeSuggestion.IsQuoi) {
                        var isDefaut = PJPACompare(data, _pjpaResultCacheOu[""]);
                        if (isDefaut)
                            return;
                    }

                    var id = (ListeSuggestion.IsQuoi ? "quoi" : "ou") + "_" + ListeSuggestion.PositionSelection;
                    PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElement", "AutoCompleteElementAct");

                    if (_pjpaEventKeycode == 40 && (ListeSuggestion.PositionSelection < maxLen || ListeSuggestion.PositionSelection == 0))
                        ListeSuggestion.PositionSelection = ListeSuggestion.PositionSelection + 1 + (ListeSuggestion.PositionSelection == 0 ? 1 : 0);
                    else if (_pjpaEventKeycode == 40 && ListeSuggestion.PositionSelection == maxLen) {
                        ListeSuggestion.PositionSelection = 1;
                        ListeSuggestion.Fin = 10;
                        ListeSuggestion.Debut = 1;
                        completeDiv.scrollTop = 0;
                    }

                    if (_pjpaEventKeycode == 38 && ListeSuggestion.PositionSelection > 1)
                        ListeSuggestion.PositionSelection = ListeSuggestion.PositionSelection - 1;
                    else if (_pjpaEventKeycode == 38 && (ListeSuggestion.PositionSelection == 1 || ListeSuggestion.PositionSelection == 0)) {
                        ListeSuggestion.PositionSelection = maxLen;
                        ListeSuggestion.Fin = maxLen;
                        ListeSuggestion.Debut = maxLen - 10;
                        completeDiv.scrollTop = ListeSuggestion.Debut * 17;
                    }

                    if (ListeSuggestion.PositionSelection > ListeSuggestion.Fin + 1 ||
                    ListeSuggestion.PositionSelection < ListeSuggestion.Debut) {

                        if (_pjpaEventKeycode == 38) {
                            completeDiv.scrollTop = completeDiv.scrollTop - 17;
                            ListeSuggestion.Fin = ListeSuggestion.Fin - 1;
                            ListeSuggestion.Debut = ListeSuggestion.Debut - 1;
                        }
                        if (_pjpaEventKeycode == 40) {
                            completeDiv.scrollTop = completeDiv.scrollTop + 17;
                            ListeSuggestion.Fin = ListeSuggestion.Fin + 1;
                            ListeSuggestion.Debut = ListeSuggestion.Debut + 1;
                        }
                    }

                    if (ListeSuggestion.PositionSelection > ListeSuggestion.Fin + 1 ||
                        ListeSuggestion.PositionSelection < ListeSuggestion.Debut) {

                        if (_pjpaEventKeycode == 38) {
                            completeDiv.scrollTop = completeDiv.scrollTop - 17;
                            ListeSuggestion.Fin = ListeSuggestion.Fin - 1;
                            ListeSuggestion.Debut = ListeSuggestion.Debut - 1;
                        }
                        if (_pjpaEventKeycode == 40) {
                            completeDiv.scrollTop = completeDiv.scrollTop + 17;
                            ListeSuggestion.Fin = ListeSuggestion.Fin + 1;
                            ListeSuggestion.Debut = ListeSuggestion.Debut + 1;
                        }
                    }

                    if (ListeSuggestion.PositionSelection >= 1 && maxLen > 0) {
                        var id = (ListeSuggestion.IsQuoi ? "quoi" : "ou") + "_" + ListeSuggestion.PositionSelection;
                        PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElementAct", "AutoCompleteElement");
                    }
                }
            }
            else if (data != undefined && (_pjpaEventKeycode == 13 || _pjpaEventKeycode == 3)) {
                if (!_pjpaKeypressEnterChamp) {
                    if (ListeSuggestion._completeDiv.style.display != 'none') {
                        if (ListeSuggestion.PositionSelection == 0) {
                            ListeSuggestion.PositionSelection = 1;
                        }
                    }
                    var obj = $((ListeSuggestion.IsQuoi ? "quoi" : "ou") + "_" + ListeSuggestion.PositionSelection);
                    if (ListeSuggestion.IsQuoi) {
                        PJPADivOnMouseClickQuoi(obj, quoi);
                    }
                    else {
                        PJPADivOnMouseClickOu(obj, ou);
                    }
                    _pjpaKeypressEnterChamp = true;
                }
                else {
                    _pjpaKeypressEnterChamp = false;
                    PJPAInterfaceAC.SubmitClick();
                }
            }
            else {
                if (PJPAKeyIsLettreOuChiffre(_pjpaEventKeycode) || PJPAKeyIsKeycodeAuth(_pjpaEventKeycode) || PJPAKeyIsKeycodeSupp(_pjpaEventKeycode)) {
                    ListeSuggestion.PositionSelection = 1;
                    if (ListeSuggestion.IsQuoi) {
                        _pjpaOnEct = 0;
                        _pjpaSelectedValue = false;
                        _interfaceAC.QuoiItemSelected = null;
                        _interfaceAC.AllResponseQuoi = false;
                        setTimeout("_interfaceAC.Recherche();", _pjpaTempsAppel);
                    }
                    else {
                        _pjpaOnEct = 0;
                        _pjpaSelectedOuValue = false;
                        _interfaceAC.OuItemSelected = null;
                        _interfaceAC.AllResponseOu = false;
                        setTimeout("_interfaceAC.RechercheOu();", _pjpaTempsAppel);
                    }
                    _pjpaKeypressEnterChamp = false;
                }
            }
        }
    }
}

function PJPADivOnMouseClickQuoi(obj, saisie) {
    var data;
    var quoi = PJPAInterfaceAC.FormatForKeyCache(saisie);
    if (_interfaceAC.AllResponseQuoi) {
        data = _pjpaResultCache["All_" + quoi];
    }
    else {
        data = _pjpaResultCache[quoi];
    }

    if (data != undefined) {
        var i = _interfaceAC.ListeSuggestionQuoi.PositionSelection - 1;
        if (data[i] != undefined) {
            ValideDataQuoi(data[i]);
            var keyCache = PJPAInterfaceAC.FormatForKeyCache(data[i].ExpressionGlobal);
            PJPACacheResults(keyCache, data);
        }
    }
}

function ValideDataQuoi(data) {
    _interfaceAC.QuoiField.value = data.ExpressionGlobal;
    _interfaceAC.QuoiItemSelected = data;
    _pjpaSelectedValue = true;
    _interfaceAC.QuoiField.focus();
    PJPAInterfaceAC.CompleteDivQuoiHide();
}

function PJPADivOnMouseClickOu(obj, saisieUt) {
	var saisie = saisieUt.replace("`", "'");
    
    var data;
    var ouVal = PJPAInterfaceAC.FormatForKeyCacheOu(saisie);
    if (_interfaceAC.AllResponseOu) {
        data = _pjpaResultCacheOu["All_" + ouVal];
    }
    else {
        data = _pjpaResultCacheOu[ouVal];
    }

    if (data != undefined) {
        var i = _interfaceAC.ListeSuggestionOu.PositionSelection - 1;
        if (data[i] != undefined) {
            ValideDataOu(data[i]);
            var keyCache = PJPAInterfaceAC.FormatForKeyCacheOu(data[i].ExpressionGlobal);
            PJPACacheResultsOu(keyCache, data);
        }
    }
}

function ValideDataOu(data) {
    _pjpaSelectedOuValue = true;
    _interfaceAC.OuField.value = data.ExpressionGlobal;
    _interfaceAC.OuHiddenField.value = data.ExpressionGlobal;
    if (_interfaceAC.HiddenFieldItemSelected != undefined) {
    	_interfaceAC.HiddenFieldItemSelected.value = data.ExpressionGlobal + ";" + data.idOu + ";" + data.doublonOu + ";" + data.suffixe + ";" + data.typeLocalite;
    }
    _interfaceAC.OuItemSelected = data;
    _interfaceAC.OuField.focus();
    PJPAInterfaceAC.CompleteDivOuHide();
}

var PJPADivOnMouseOver = function(obj) {
    var tabId = obj.id.split('_');
    var IsQuoi = (tabId[0] == "quoi" ? true : false);

    if (IsQuoi) {
        var ListeSuggestion = _interfaceAC.ListeSuggestionQuoi;
    }
    else {
        var ListeSuggestion = _interfaceAC.ListeSuggestionOu;
    }

    if (ListeSuggestion._completeDiv == undefined)
        return;

    var completeDiv = document.getElementById(ListeSuggestion._completeDiv.id);

    if (completeDiv != undefined && ListeSuggestion.PositionSelection >= 1) {
        var id = (ListeSuggestion.IsQuoi ? "quoi" : "ou") + "_" + ListeSuggestion.PositionSelection;
        PJPAInterfaceAC.ChangeClasse(id, "AutoCompleteElement", "AutoCompleteElementAct");
    }

    $(obj).addClass('AutoCompleteElementAct');

    if (obj.id != undefined) {
        var posdeb = obj.id.indexOf("_");
        if (posdeb != -1) {
            var id = obj.id.substr(posdeb + 1, obj.id.length - posdeb - 1);
            ListeSuggestion.PositionSelection = parseInt(id);
        }
    }
};

// declenchee quand la sourie quitte une div de possiblite. La div repasse a l'etat normal
var PJPADivOnMouseOut = function(obj) {
    $(obj).addClass('AutoCompleteElement');
    $(obj).removeClass('AutoCompleteElementAct');
};

PJPAInterfaceAC.ChangeClasse = function(id, classSet, classRemove) {
    $("#" + id).addClass(classSet);
    $("#" + id).removeClass(classRemove);
}

function ValideData(data) {
    _interfaceAC.QuoiField.value = data.ExpressionGlobal;
    _interfaceAC.QuoiItemSelected = data;
    _pjpaSelectedValue = true;
    _interfaceAC.QuoiField.focus();
    PJPAInterfaceAC.CompleteDivQuoiHide();
}


var onKeyDownHandler = function(event) {
    if (!event && window.event) {
        event = window.event;
    }

    if (event) {
        _pjpaLastKeyCode = event.keyCode;
    }
}

//****************** COMMUN ******************
function onKeyUpDocument(event) {

    // accès evenement compatible IE/Firefox
    if (!event && window.event) {
        event = window.event;
    }
    if (event != undefined) {
        _pjpaEventKeycode = event.keyCode;

        if (_pjpaEventKeycode == 13 || _pjpaEventKeycode == 3) {
            _pjpaFocusChamps = "";
            return false;
        }
        else {
            if (_interfaceAC.QuoiField != undefined && _interfaceAC.QuoiField != null) {
                if (_interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus()) {
                    _interfaceAC.Initialize();
                }
            }
            if (_interfaceAC.OuField != undefined && _interfaceAC.OuField != null) {
                if (_interfaceAC.ListeSuggestionOu.InputAttached.hasFocus()) {
                    _interfaceAC.InitializeOu();
                }
            }
        }
    }
    return true;
}

/*---- FonctionAutoCompletion.js ----*/


PJPAInterfaceAC.IsNotNullUndefined = function(obj, TestVide) {
    if (obj != undefined && obj != null) {
        if (TestVide && obj != "")
            return true;
        else
            return false;
    }
    return false;
}

function PJPAPrepareMatch(ou) {
    var avant = ou;
    var caractereAutorise = "azertyuiopqsdfghjklmwxcvbnéèàùçêûîâ0123456789";
    var returnOu = "";

    while (ou.indexOf("(") > -1) {
    
        var debParenthese = ou.indexOf("(");
        var finParenthese = ou.indexOf(")", debParenthese);
        ou = ou.substring(0, debParenthese) + ou.substring(finParenthese + 1);

    }
    ou = ou.toLowerCase();

    for (i = 0; i < ou.length; i++) {
        if (caractereAutorise.indexOf(ou.charAt(i)) > -1)
            returnOu += ou.charAt(i);
        else
            returnOu += " ";
    }

    returnOu = PJPARemoveAccents(returnOu);
    returnOu = PJPARightTrim(returnOu);

    return returnOu;
}


function PJPARemplacerAccents(chaine) {
    chaine = chaine.replace(/[éèêë]/g, "e");
    chaine = chaine.replace(/[àâä]/g, "a");
    chaine = chaine.replace(/[ïî]/g, "i");
    chaine = chaine.replace(/[ùûü]/g, "u");
    chaine = chaine.replace(/[öô]/g, "o");
    return chaine;
}


function PJPARemoveAccentsCache(input) {
    /*
    var listOfAccentedLetters = ['é', 'è', 'ë', 'ê', 'à', 'â', 'î', 'ï', 'ô', 'û', 'ù', 'ü', 'ç', '-', '(', ')', '>', '"' ];
    var listOfUnAccentedLetters = ['e', 'e', 'e', 'e', 'a', 'a', 'i', 'i', 'o', 'u', 'u', 'u', 'c', ' ', ' ', ' ', '', '.' ];
    */
    var listOfAccentedLetters = ['é', 'è', 'ë', 'ê', 'à', 'â', 'î', 'ï', 'ô', 'û', 'ù', 'ü', 'ç', '-', '>', '"'];
    var listOfUnAccentedLetters = ['e', 'e', 'e', 'e', 'a', 'a', 'i', 'i', 'o', 'u', 'u', 'u', 'c', ' ', '', '.'];


    var l__input = input;
    if (l__input != '') {
        for (var i = 0; i < listOfAccentedLetters.length; i++) {
            if (l__input.indexOf(listOfAccentedLetters[i]) != -1) {
                if (listOfAccentedLetters[i] == '(' || listOfAccentedLetters[i] == ')') {
                    var reg = new RegExp("(\\" + listOfAccentedLetters[i] + ")", "gi");
                }
                else {
                    var reg = new RegExp("(" + listOfAccentedLetters[i] + ")", "gi");
                }

                l__input = l__input.replace(reg, listOfUnAccentedLetters[i]);
            }
        }
    }
    return l__input;
}



function PJPARemoveAccents(input) {

    var listOfAccentedLetters = ['é', 'è', 'ë', 'ê', 'à', 'â', 'î', 'ï', 'ô', 'û', 'ù', 'ü', 'ç', '-', '(', ')', '>', '"'];
    var listOfUnAccentedLetters = ['e', 'e', 'e', 'e', 'a', 'a', 'i', 'i', 'o', 'u', 'u', 'u', 'c', ' ', ' ', ' ', '', '.'];


    var l__input = input;
    if (l__input != '') {
        for (var i = 0; i < listOfAccentedLetters.length; i++) {
            if (l__input.indexOf(listOfAccentedLetters[i]) != -1) {
                if (listOfAccentedLetters[i] == '(' || listOfAccentedLetters[i] == ')') {
                    var reg = new RegExp("(\\" + listOfAccentedLetters[i] + ")", "gi");
                }
                else {
                    var reg = new RegExp("(" + listOfAccentedLetters[i] + ")", "gi");
                }

                l__input = l__input.replace(reg, listOfUnAccentedLetters[i]);
            }
        }
    }
    return l__input;
}


function PJPAReplaceParentheses(input, parenthesis) {
    if (input != undefined && input != "") {
        input = input.replace(parenthesis, '\\' + parenthesis);
    }
    return input;
}

function PJPAFormatOu(ou) {
	var ouWithoutAccent = PJPARemoveAccents(ou);
	if (_pjpaProximiteRegex != undefined || _pjpaProximiteRegex != "") {
	    var reg = new RegExp(_pjpaProximiteRegex, "gi");
		if (reg.test(ouWithoutAccent)) {
			ou = ouWithoutAccent.replace(reg, "");
		}
	}
	return ou;
}


//debut de mot commencant par
function PJPAReplaceSaisie(contenu, TabSaisie) {
    var contenuTmp = " " + contenu;

    if (TabSaisie != undefined) {
        contenu = PJPAReplaceSaisieSansAccent(contenu, TabSaisie);
    }

    return contenu;
}

function PJPAReplaceSaisieSansAccent(contenu, TabSaisie) {

    var remplacer = "";
    var contenuTmp = " " + contenu;
    
    for (var i = 0; i < TabSaisie.length; i++) {

        var reg = new RegExp(TabSaisie[i], "gi");
        remplacer = contenuTmp.replace(reg, "<b>$1</b>");

        contenuTmp = remplacer;
    }

    return contenuTmp;
}

function PJPAReplaceSaisieSansAccent2(contenu, TabSaisie) {
    var NBLETTRE = 7;
    var DEB = "<b>";
    var FIN = "</b>";
    contenuSsAccent = " " + PJPARemoveAccents(contenu.toLowerCase())
    contenu = " " + contenu;

    var debut = 0;
    var contenuTmp = "";

    for (var i = 0; i < TabSaisie.length; i++) {
        saisie = " " + PJPARightTrim(TabSaisie[i].toLowerCase());
        if (saisie != undefined && saisie.length > 0 && contenu != undefined && contenu.length > 0 && saisie != " " && saisie != "  ") {

            contenuTmp = PJPARightTrim(contenuSsAccent.toLowerCase());
            debut = contenuTmp.indexOf(saisie, debut);

            if (debut != -1) {
                //PJPAInterfaceAC.WriteDebug("  mot : " + saisie + " trouve à " + debut + "<br>");
                var fin = debut + saisie.length;
                var saisieTmp = DEB + contenu.substr(debut, saisie.length) + FIN;
                contenuDeb = contenu.substring(0, debut)
                contenuFin = contenu.substr(fin, contenu.length - fin);
                contenu = contenuDeb + saisieTmp + contenuFin;

                var fin = debut + saisie.length;
                var saisieTmp = DEB + contenuSsAccent.substr(debut, saisie.length) + FIN;
                contenuDeb = contenuSsAccent.substring(0, debut)
                contenuFin = contenuSsAccent.substr(fin, contenu.length - fin);
                contenuSsAccent = contenuDeb + saisieTmp + contenuFin;

                debut = contenu.indexOf(FIN, debut) + FIN.length;
            }
        }
    }
    return contenu;
}

function PJPAChangeSelection(saisie, debut, contenu, NBLETTRE, DEB, FIN) {
    if (debut != -1) {
        var fin = debut + saisie.length;
        var saisieTmp = DEB + contenu.substr(debut, saisie.length) + FIN;
        contenuDeb = contenu.substring(0, debut)
        contenuFin = contenu.substr(fin, contenu.length - fin);
        contenu = contenuDeb + saisieTmp + contenuFin;
        debut = contenu.indexOf(FIN, debut) + FIN.length;
    }
    return contenu;
}

function PJPACompareOld(data1, data2) {

    if (data1 == undefined || data2 == undefined
    || data1.length != data2.length || data2.length == 0
    || data2[0] == undefined) return false;

    for (var i = 0; i < data1.length; i++) {
        if (data1[i].ExpressionGlobal != data2[i].ExpressionGlobal) {
            return false;
        }
    }
    return true;
}

function PJPACompare(data1, data2) {

    if (data1 == undefined || data2 == undefined || data1.length != data2.length || data2.length == 0
    || data2[0] == undefined) return false;

    for (var i = 0; i < data1.length; i++) {
        var expressReg = PJPAReplaceParentheses(data1[i].ExpressionGlobal, "(");
        var expressReg = PJPAReplaceParentheses(expressReg, ")");
        
        var QuoiReg = new RegExp("(" + expressReg + ")", "gi");
        if (!data2[i].ExpressionGlobal.match(QuoiReg)) {
            return false;
        }    
    }
    return true;
}
function PJPASetStylePourElement(c, name) {
    c.className = name;
}

// calcule le décalage à gauche
function PJPACalculateOffsetLeft(r) {
    return PJPACalculateOffset(r, "offsetLeft")
}

// calcule le décalage vertical
function PJPACalculateOffsetTop(r) {
    return PJPACalculateOffset(r, "offsetTop")
}

function PJPACalculateOffset(r, attr) {
    var kb = 0;
    while (r) {
        kb += r[attr];
        r = r.offsetParent
    }
    return kb
}

// calcule la largeur du champ
function PJPACalculateWidth(input) {
    if (input != undefined && input != null)
        return input.offsetWidth - 2 * 1 - 4;
    else
        return 300;
}

// calcule la largeur du champ
function PJPACalculateHeight(input) {
    if (input != undefined && input != null)
        return input.offsetHeight - 2 * 1 - 4;
    else
        return 210;
}

// echappe les caractère spéciaux
function PJPAEscapeURI(La) {
    if (encodeURIComponent) {
        return encodeURIComponent(La);
    }
    if (escape) {
        return escape(La)
    }
}

// Mecanisme de caching des réponses
function PJPACacheResults(debut, suggestions) {
    _pjpaResultCache[debut] = suggestions
}

function PJPACacheResultsOu(debut, suggestions) {
    _pjpaResultCacheOu[debut] = suggestions;
}


function PJPARightTrim(sString) {
    while (sString.substring(sString.length - 1, sString.length) == ' ') {
        sString = sString.substring(0, sString.length - 1);
    }
    return sString;
}

function PJPATrimDoubleSpace(sString) {
    if (sString != undefined && sString.length > 0) {
        var reg = new RegExp("(  )", "gi");

        while (sString.indexOf('  ') >= 0) {
            sString = sString.replace(reg, ' ');
        }
        return PJPARightTrim(sString);
    }
    return "";
}

// Mecanisme de control de Quoi,Ou lors d'un appel antidot
function PJPACorrectOu(ou) { 
    var result = parseInt(ou);

    if (result != NaN) {
        if (result < 0) {
            result = result * -1;
            ou = result.ToString();
        }
        
        if (result != 0 && result <= 9) {
            // If result == 2 check if it is "corse"
            if (result == 2) {
                var twoFirstChars = ou.substr(0, 2);

                // if city is "corse" so we return 2a or 2b
                if (twoFirstChars.toLowerCase() == "2a" || twoFirstChars.toLowerCase() == "2b") {
                    ou = twoFirstChars;
                } else  {
                    ou = "0" + result;
                }
            } else {
                ou = "0" + result;
            }
        }
    }
    
    // In case of Paris 75, we replace it by Paris
    ou = ou.replace("Paris (75)", "Paris");
    
   	return ou;
}
   	
function PJPACleanLRField(input) {
   	var result = input;

   	if (result != undefined && result != "") {
   	    result = PJPARemoveAccents(result);
   		result = PJPACleanPonctuation(result);
   		result = PJPACleanParenthesis(result);
   		result = PJPARemoveSuccessiveOccurance(result, " ");
   	}

   	return result;

}


function PJPACleanPonctuation(input) {
   	input = input.replace(',', ' ');
   	input = input.replace('.', ' ');
   	input = input.replace('!', ' ');
   	input = input.replace('?', ' ');
   	return input;
}

function PJPACleanParenthesis(input) {
   	input = input.replace('(', ' ');
   	input = input.replace(')', ' ');
   	input = input.replace("%28", " ");
   	input = input.replace("%29", " ");
   	return input;
}


function PJPARemoveSuccessiveOccurance(input, separator) {
   	var result = input;

   	if (input != undefined && input != "") {
   		var tab = input.split(' ');
   		if (tab != undefined) {
   			result = "";
   			for (var i = 0; i < tab.length; i++) {
   				if (tab[i] != "") {
   					result += tab[i];
   					if (i != tab.length - 1) {
   						result += " ";
   					}
   				}
   			}
   		}
   	}

   	return PJPARightTrim(result);
}

function PJPATagXitiTrouvez(secteur) {
	if (secteur == 1) {
		xt_med('C', '0', 'Home_Immo::I_Moteur_Trouvez', 'N');
	}
	else if (secteur == 2) {
		xt_med('C', '0', 'Home_Auto::A_Moteur_Trouvez', 'N');
	}
	else if (secteur == 3) {
		xt_med('C', '0', 'Home_Moto::M_Moteur_Trouvez', 'N');
	}
	else if (secteur == 6) {
		xt_med('C', '0', 'Home_Sad::S_Moteur_Trouvez', 'N');
	}
	else if (secteur == 0) {
		xt_med('C', '0', 'Home::H_Moteur_Trouvez', 'N');
	}
}


function PJPATryParseInt(str, defaultValue) {
    var retValue = defaultValue;
    if (str != null) {
        if (str.length > 0) {
            if (!isNaN(str)) {
                retValue = parseInt(str);
            }
        }
    }
    return retValue;
}


function PJPACleanSaisie(saisie) {
	saisie = saisie.replace(/[:]/g, " ");
	return saisie;
}


/*---- InterfaceSuggestion.js ----*/

/*---- InterfaceSuggestion.js ----*/
/****************** DataAutoCompletion QUOI ******************/
function PJPAInterfaceSuggestion(isQuoi, conteneur, input, idListe, height, useAppenChild, nbAfficheSugg, top, left) {
    this.IsQuoi = isQuoi;
    //this.Data = data;
    this.Conteneur = conteneur;
    this.IdListe = idListe;
    this.Height = height;
    this.UseAppenChild = useAppenChild;
    this.InputAttached = input;
    this.PositionSelection = 1;
    this.Debut = 1;
    this.Fin = 10;
    this.AllResponse = false;
    
    this.KeyListe = undefined;

    this.NbAfficheSugg = nbAfficheSugg;
    this.TopListe = top;
    this.LeftListe = left;
    this.WidthListe = -1;

    this.WithChargement = false;
    this.InputAttached.focused = false;
    this.InputAttached.hasFocus = function() {
        return this.focused;
    };

    this.CreerAutoCompletionDiv("");
}

PJPAInterfaceSuggestion.prototype.SetWidth = function(valeur) {
	if (valeur != -1) {
		this.WidthListe = valeur;
		this.Width = valeur-2;
	}
}

PJPAInterfaceSuggestion.prototype.SetEvenement = function(blur, focus, keyup, keydown) {
    this.InputAttached.onblur = blur;
    this.InputAttached.onfocus = focus;
    this.InputAttached.onkeyup = keyup;
    this.InputAttached.onkeydown = keydown;
   }

PJPAInterfaceSuggestion.prototype.SetPositionListe = function(left, top) {
	this.TopListe = top;
	this.LeftListe = left;
}

PJPAInterfaceSuggestion.prototype.AfficheListeDecaler = function(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick) {
    this.WithChargement = true;
    this.AfficheListe(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick);
}

PJPAInterfaceSuggestion.prototype.AfficheListe = function(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick) {
    if (this.IsQuoi) {
        this.AfficheListeQuoi(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick);
    }
    else {
        this.AfficheListeOu(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick);
    }
}

PJPAInterfaceSuggestion.prototype.AfficheListeQuoi = function(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick) {
    var conteneurSug = "";

    //var data = this.Data;
    if (this.WithChargement) {
        conteneurSug += this.CreationChargement(this.IsQuoi);
    }

    conteneurSug += this.CreationTitre(rulesTitreSuggestion, data, this.Width, (isDefaut && data.length > 10));
    this.PositionSelection = 1;

    for (var i = 0; i < data.length; ++i) {
        if (data[i].IdSecteur != -1) {
            var classe = "AutoCompleteElement";
            var isFirst = false;
            if (i == 0) {
                classe = "AutoCompleteElementAct";
                isFirst = true;
                this.KeyListe = data[i].Saisie;
            }

            if (i > 0 && i < data.length && data[i].Secteur != data[i - 1].Secteur && !isDefaut && _interfaceAC.Secteur == 0) {
                isFirst = true;
                classe += " separateur";
            }
            else if (isDefaut && _interfaceAC.Secteur == 0) {
                isFirst = true;
                classe += " separateur";
            }

            var id = "quoi_" + (i + 1);
            var innerHTML = data[i].GetLibelle(i, isFirst);
            var nouveauDiv = this.CreateItem(id, this.Width, innerHTML, classe, divOnMouseOver, divOnMouseOut, divOnMouseClick, data[i].Saisie);

            conteneurSug += nouveauDiv;

            if ((!allResponse && i == this.NbAfficheSugg - 1 && !isDefaut)) {
                break;
            }
        }
    }

    if (data.length > this.NbAfficheSugg && !allResponse && !isDefaut || modeItemCache) {
        conteneurSug += this.CreationEcetera(data, this.Width, true, false, modeItemCache);
    }

    var useScroll = (isDefaut && data.length > this.NbAfficheSugg || allResponse && data.length > this.NbAfficheSugg + 1);
    this.CreerAutoCompletionDiv(conteneurSug, useScroll);
    this.WithChargement = false;
}

PJPAInterfaceSuggestion.prototype.AfficheListeOu = function(data, afficheSuggestion, rulesTitreSuggestion, modeItemCache, isDefaut, allResponse, divOnMouseOver, divOnMouseOut, divOnMouseClick) {
	if (data.length > 0) {

		var conteneurSug = "";

		if (this.WithChargement) {
			conteneurSug += this.CreationChargement(this.IsQuoi);
		}

		conteneurSug += this.CreationTitre(false, data, this.Width, (isDefaut && data.length > 10));

		this.PositionSelection = 1;

		for (var i = 0; i < data.length; ++i) {
			var classe = "AutoCompleteElement";
			var isFirst = false;
			if (i == 0) {
				classe = "AutoCompleteElementAct";
				isFirst = true;
				this.KeyListe = data[i].Saisie;
			}

			if (i > 0 && i < data.length && data[i].typeLocalite != data[i - 1].typeLocalite && !isDefaut) {
				classe += " separateur";
			}

			var id = "ou_" + (i + 1); ;
			var innerHTML = data[i].GetLibelle(this.InputAttached.value, i);

			if (isDefaut) {
				classe = "AutoCompleteElement NoCursor";
				var nouveauDiv = this.CreateItem("", this.Width, innerHTML, classe, "", "", "", data[i].Saisie);
			}
			else {
				var nouveauDiv = this.CreateItem(id, this.Width, innerHTML, classe, divOnMouseOver, divOnMouseOut, divOnMouseClick, data[i].Saisie);
			}

			conteneurSug += nouveauDiv;

			if ((!allResponse && i == this.NbAfficheSugg - 1 && !isDefaut)) {
				break;
			}
		}

		if (data.length > this.NbAfficheSugg && !allResponse && !isDefaut || modeItemCache) {
			conteneurSug += this.CreationEcetera(data, this.Width, this.IsQuoi, false, modeItemCache);
		}

		var useScroll = (isDefaut && data.length > this.NbAfficheSugg || allResponse && data.length > this.NbAfficheSugg + 1);
		this.CreerAutoCompletionDiv(conteneurSug, useScroll);
		this.WithChargement = false;
	}
}

PJPAInterfaceSuggestion.prototype.AfficheListeNoResult = function(message, saisie) {
	var conteneurSug = "";

	this.PositionSelection = 1;

	conteneurSug += this.CreationNoResult(message, saisie, this.Width);

	var useScroll = false;
	this.CreerAutoCompletionDiv(conteneurSug, useScroll);
	this.WithChargement = false;
}

PJPAInterfaceSuggestion.prototype.CreateItem = function(id, width, innerHTML, classe, divOnMouseOver, divOnMouseOut, divOnMouseClick, saisie) {
	var saisiJs = saisie.replace("'", "`");

	var id_str = (id == "" ? "" : " id='" + id + "' ");

	var width_str = (width == "" ? "" : " style='width:" + (width + 100 + 3) + "px' ");

	var classe_str = (classe == "" ? "" : " class='" + classe + "' ");

	var divOnMouseOver_str = (divOnMouseOver == "" ? "" : " onmouseover='" + divOnMouseOver + "(this)' ");

	var divOnMouseOut_str = (divOnMouseOut == "" ? "" : " onmouseout='" + divOnMouseOut + "(this)' ");

	var divOnMouseClick_str = "";
	if (divOnMouseClick != "") {
		divOnMouseClick_str = " onmousedown='" + divOnMouseClick + "(this, \"" + saisiJs + "\")' ";
	}

	var div = "<div " + id_str + width_str + classe_str +
    divOnMouseOver_str + divOnMouseOut_str + divOnMouseClick_str +
    " >" + innerHTML + "</div>";

	return div;
}

PJPAInterfaceSuggestion.AddScrollWidthDelay = function(Obj) {
    if (document.getElementById(Obj) != undefined) {
        $(document.getElementById(Obj)).addClass('scroll');
    }
}

PJPAInterfaceSuggestion.prototype.CreerAutoCompletionDiv = function(listeSuggestion, useScroll) {
	var conteneur = document.createElement("DIV");

	this._Shadow = document.createElement("DIV");
	this._Shadow.id = "shadowSugg";
	this._Shadow.className = "shadowSugg";
	this.SetShadowSize();

	this._completeDiv = document.createElement("DIV");
	this._completeDiv.className = "AutoCompleteDiv";

	if (this.IsQuoi) {
		this._completeDiv.id = "completeDivQuoi";
		_interfaceAC._completeDiv = this._completeDiv;
	}
	else {
		this._completeDiv.id = "completeDivOu";
		this._completeDiv.id = "completeDivOu";
		_interfaceAC._completeOuDiv = this._completeDiv;
	}

	if (useScroll) {
		if (this.WithChargement) {
			setTimeout('PJPAInterfaceSuggestion.AddScrollWidthDelay("' + this._completeDiv.id + '")', 750);
		}
		this._completeDiv.style.height = "210px";
	}

	this.SetCompleteDivSize();

	this._completeDiv.style.position = "relative";
	this._completeDiv.style.backgroundColor = "white";
	this._completeDiv.innerHTML = listeSuggestion;

	this._Shadow.appendChild(this._completeDiv);
	conteneur.appendChild(this._Shadow);

	this.Conteneur.innerHTML = conteneur.innerHTML;
}

PJPAInterfaceSuggestion.prototype.CreationTitre = function(rulesTitreSuggestion, data, isWithScroll) {
    var Div = document.createElement("DIV");
    var nouveauDiv = document.createElement("DIV");

    if (this.IsQuoi) {
        nouveauDiv.id = "titreSuggestionQuoi";
    }
    else {
        nouveauDiv.id = "titreSuggestionOu";
    }

    PJPASetStylePourElement(nouveauDiv, "titreSuggestion");

    if (rulesTitreSuggestion) {
        if (_interfaceAC.Secteur == 0) {
            nouveauDiv.innerHTML = "Désolé, cette cat&eacute;gorie n'existe pas.<div class='noir'>Veuillez modifier votre recherche<br> ou s&eacute;lectionner l'une des 6 cat&eacute;gories suivantes :</div>";
        }
        else {
            nouveauDiv.innerHTML = "Désolé, cette cat&eacute;gorie n'existe pas.<div class='noir'>Veuillez modifier votre recherche<br> ou s&eacute;lectionner l'une des cat&eacute;gories suivantes :</div>";
        }
    }
    else {
        nouveauDiv.innerHTML = "Suggestions";
    }

    nouveauDiv.style.width = (this.Width + 1) + "px";
    this._titreSuggestion = nouveauDiv;
    Div.appendChild(nouveauDiv);

    return Div.innerHTML;
}

PJPAInterfaceSuggestion.prototype.CreationEcetera = function(data, width, IsQuoi, forceEcetera, modeItemCache) {
    var id = (IsQuoi ? "id='CadEcetera'" : "id='CadEceteraOu'");

    var width = " style='width:" + (this.Width + 4) + "px;' ";
    var classe = " class='AutoCompleteElement' ";
    var onmousedown = "";
    var onmouseover = "";
    var onmouseout = "";

    var Div = document.createElement("DIV");
    var Ecetera = document.createElement("DIV");
    Ecetera.id = (IsQuoi ? "Ecetera" : "EceteraOu");
    _pjpaOnEct = 0;

    if (data[0].Saisie.length > 1 && !forceEcetera) {
        onmouseover = " onmouseover='PJPAInterfaceSuggestion.divOnMouseOverEctera(this);' ";
        onmouseout = " onmouseout='PJPAInterfaceSuggestion.divOnMouseOutEctera(this);' ";
        if (IsQuoi) {
            if (modeItemCache) {
                var onmousedown = " onmousedown='PJPAInterfaceAC.CompleteRechercheSousCat();' ";
            }
            else {
                var onmousedown = " onmousedown='PJPAInterfaceAC.CompleteRecherche();' ";
            }
        }
        else {
            var onmousedown = " onmousedown='PJPAInterfaceAC.CompleteRechercheOu();' ";
        }
        PJPASetStylePourElement(Ecetera, "Ecetera ");
        Ecetera.innerHTML = "Plus...";
    }
    else {
        PJPASetStylePourElement(Ecetera, "EceteraUneLettre");
        Ecetera.innerHTML = "...";
    }

    Ecetera.style.width = this.Width + "px";
    Div.appendChild(Ecetera);

    var CadEcetera = "<Div " + id + classe + width + onmousedown + onmouseover + onmouseout + " >" + Div.innerHTML + "</div>";

    return CadEcetera;
   }

   PJPAInterfaceSuggestion.prototype.CreationNoResult = function(message, saisie, width) {
	var id = "id='CadNoResult'";

	var width = " style='width:" + (this.Width ) + "px;height:auto;margin-bottom:5px;' ";
   	var classe = " class='AutoCompleteElement' ";

   	var Div = document.createElement("DIV");
   	var NoResult = document.createElement("DIV");
   	NoResult.id = "NoResult" ;
   	_pjpaOnEct = 0;

   	PJPASetStylePourElement(NoResult, "divOu");
   	NoResult.innerHTML = message + " <b>" + saisie + "</b>";


   	NoResult.style.width = (this.Width - 7) + "px";
   	Div.appendChild(NoResult);

   	var CadEcetera = "<Div " + id + classe + width + " >" + Div.innerHTML + "</div>";

   	return CadEcetera;
   }

PJPAInterfaceSuggestion.prototype.CreationChargement = function(IsQuoi) {
    var divlb = document.createElement("DIV");
    var divetc = document.createElement("DIV");

    var width = this.Width;

    var Ecetera = document.createElement("DIV");
    PJPASetStylePourElement(Ecetera, "chargementTransparent");
    Ecetera.id = (IsQuoi ? "chargement1" : "chargementOu1");
    Ecetera.innerHTML = "";
    Ecetera.style.width = width + "px";


    var blancTransparent = document.createElement("DIV");
    PJPASetStylePourElement(blancTransparent, "chargementAutoCompletion");
    blancTransparent.id = (IsQuoi ? "chargement2" : "chargementOu2");
    blancTransparent.innerHTML = "";
    blancTransparent.style.width = width + "px";

    blancTransparent.style.left = (width / 2 - 20) + "px";
    blancTransparent.style.top = (210 / 2 - 20) + "px";

    Ecetera.appendChild(blancTransparent);
    divetc.appendChild(Ecetera);

    this._chargement = Ecetera;

    setTimeout('PJPAInterfaceSuggestion.HideChargementWidthDelay("' + this._chargement.id + '")', 750);

    return divetc.innerHTML;
}

PJPAInterfaceSuggestion.HideChargementWidthDelay = function(Obj) {
    if (document.getElementById(Obj) != undefined) {
        $(document.getElementById(Obj)).remove();

    }
}
PJPAInterfaceSuggestion.prototype.SetCompleteDivSize = function() {
	if (this._completeDiv) {
		this._completeDiv.style.left = "-6px";
		this._completeDiv.style.top = "-6px";
		if (this.Width != undefined) {
			this._completeDiv.style.width = this.Width + "px";
		}
		//		this._completeDiv.style.width = (PJPACalculateWidth(this.InputAttached) - 2) + "px";
		//		this.Width = PJPACalculateWidth(this.InputAttached) + 1;
	}
}

PJPAInterfaceSuggestion.prototype.SetShadowSize = function() {
    this._Shadow.style.top = this.TopListe + "px";
    this._Shadow.style.left = this.LeftListe + "px";
}

PJPAInterfaceSuggestion.divOnMouseOverEctera = function(obj) {

    _pjpaOnEct = 1;
    $(".AutoCompleteElementAct").addClass('AutoCompleteElement');
    $(".AutoCompleteElementAct").removeClass('AutoCompleteElementAct');
    $(obj).addClass('AutoCompleteElementAct');

}

PJPAInterfaceSuggestion.divOnMouseOutEctera = function(obj) {
    setTimeout('_pjpaOnEct = 0;', 500);
    $(obj).addClass('AutoCompleteElement');
    $(obj).removeClass('AutoCompleteElementAct');
}



/*---- Recherche.js ----*/

PJPAInterfaceAC.prototype.Recherche = function() {
    if (!_pjpaSelectedValue) {
        _interfaceAC.CurrentQuoiFieldValue = PJPARightTrim(_interfaceAC.QuoiField.value);

        if (_interfaceAC.OldQuoiFieldValue != _interfaceAC.CurrentQuoiFieldValue) {
            PJPAInterfaceAC.InitSelection(0);
            _pjpaOnEct = 0;
            _pjpaSelectedValue = false;
            _interfaceAC.QuoiItemSelected = null;
            _interfaceAC.AllResponseQuoi = false;
            PJPAInterfaceAC.LanceRecherche();
        }
        _interfaceAC.OldQuoiFieldValue = _interfaceAC.CurrentQuoiFieldValue;
        setTimeout("_interfaceAC.Recherche();", _pjpaTempsAppel);
        return true;
    }
    return false;
}

PJPAInterfaceAC.prototype.RechercheOu = function() {
    if (!_pjpaSelectedOuValue) {
        _interfaceAC.CurrentInputFieldOuValue = PJPARightTrim(_interfaceAC.OuField.value);

        if (_interfaceAC.OldInputFieldOuValue != _interfaceAC.CurrentInputFieldOuValue) {
            PJPAInterfaceAC.InitSelectionOu(0);
            _pjpaOnEct = 0;
            _pjpaSelectedOuValue = false;
            _interfaceAC.OuItemSelected = null;
            _interfaceAC.AllResponseOu = false;
            PJPAInterfaceAC.LanceRechercheOu();
        }
        _interfaceAC.OldInputFieldOuValue = _interfaceAC.CurrentInputFieldOuValue;
        setTimeout("_interfaceAC.RechercheOu();", _pjpaTempsAppel);
        return true;
    }
    return false;
}
/*********************************** LanceRecherche ***********************************/
PJPAInterfaceAC.LanceRecherche = function() {
    var QuoiFieldValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value);
    if (QuoiFieldValue != "") {
        PJPAInterfaceAC.InitSelection(0);
        var _data = _pjpaResultCache[QuoiFieldValue];
        if (_data != undefined) {
            PJPAInterfaceAC.AfficheListe();
        }
        else {
            if (_pjpaMotSansReponse != "" && QuoiFieldValue.indexOf(_pjpaMotSansReponse) == 0) {
                PJPACacheResults(QuoiFieldValue, _pjpaDataAutoCompDefaut);
                _interfaceAC.SetData(_pjpaDataAutoCompDefaut);
            }
            else {
                PJPALaunchCall(_interfaceAC.Secteur, QuoiFieldValue, _interfaceAC.AllResponseQuoi, false, _interfaceAC.Methode);
            }
        }
    }
    else {
        PJPAInterfaceAC.CompleteDivQuoiHide();
    }
}

PJPAInterfaceAC.UpdateRecherche = function() {
    var OuFieldValue = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.OuField.value);
    PJPALaunchCallOu(OuFieldValue, _interfaceAC.AllResponseOu, _interfaceAC.Methode, _interfaceAC.WithProximite, _interfaceAC.TypesGeloc, _interfaceAC.ScrDataAC);
}

PJPAInterfaceAC.LanceRechercheOu = function() {
    var OuFieldValue = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.OuField.value);
    if (OuFieldValue != "") {
        PJPAInterfaceAC.InitSelectionOu(0);
        var _data = _pjpaResultCacheOu[OuFieldValue];
        if (_data != undefined) {
            PJPAInterfaceAC.AfficheListeOu();
        }
        else {
        	PJPALaunchCallOu(OuFieldValue, _interfaceAC.AllResponseOu, _interfaceAC.Methode, _interfaceAC.WithProximite, _interfaceAC.TypesGeloc, _interfaceAC.ScrDataAC);
        }    
    }
    else {
        PJPAInterfaceAC.CompleteDivOuHide();
    } 
}

/***********************************Affichage des donnees QUOI***********************************/
PJPAInterfaceAC.RulesTitreSuggestion = function(data) {
    data = _pjpaResultCache[PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value)];
    if (PJPARightTrim(_interfaceAC.QuoiField.value) != "" && PJPACompare(data, _pjpaDataAutoCompDefaut)) {
        return true;
    }
    return false;
}

PJPAInterfaceAC.RulesAfficheSuggestion = function(IsDefaut) {
    var idSecteur = _interfaceAC.DetectSecteurIdFromSaisie("");
    var id_secteur = (idSecteur != -1 ? idSecteur : _interfaceAC.Secteur);

    if (id_secteur > 0 && id_secteur < 4 && IsDefaut)
        return false;

    if (_interfaceAC.Secteur == 0 && PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value) != "") {
        return true;
    }
    if (_interfaceAC.Secteur > 0) {
        return true;
    }
    return false;
}
/*
PJPAInterfaceAC.RulesAfficheSuggestion = function() {
    if (_interfaceAC.Secteur == 0 && PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value) != "") {
        return true;
    }
    if (_interfaceAC.Secteur > 0) {
        return true;
    }
    return false;
}
*/
PJPAInterfaceAC.CompleteRecherche = function() {
    _pjpaOnEct = 1;
    _interfaceAC.AllResponseQuoi = true;
    
    _interfaceAC.PositionSelection = 0;
    _interfaceAC._completeDiv.scrollTop = 0;
    _interfaceAC._completeDiv.Fin = 0;
    _interfaceAC._completeDiv.Debut = 10;

    if (_interfaceAC.QuoiItemSelected != null && _interfaceAC.QuoiItemSelected != undefined) {
        var QuoiFieldValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiItemSelected.Saisie);
    }
    else {
        var QuoiFieldValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value);
    }
    PJPALaunchCall(_interfaceAC.Secteur, QuoiFieldValue, _interfaceAC.AllResponseQuoi, false, _interfaceAC.Methode);
}

PJPAInterfaceAC.CompleteRechercheSousCat = function() {
    _pjpaOnEct = 1;
    _interfaceAC.AllResponseQuoi = true;

    _interfaceAC.PositionSelection = 0;
    _interfaceAC._completeDiv.scrollTop = 0;
    _interfaceAC._completeDiv.Fin = 0;
    _interfaceAC._completeDiv.Debut = 10;

    if (_interfaceAC.QuoiItemSelected != null && _interfaceAC.QuoiItemSelected != undefined) {
        var QuoiFieldValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiItemSelected.Saisie);
    }
    else {
        var QuoiFieldValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value);
    }
    PJPALaunchCall(_interfaceAC.Secteur, QuoiFieldValue, _interfaceAC.AllResponseQuoi, true, _interfaceAC.Methode);
}
/***********************************************************************************************/
PJPAInterfaceAC.AfficheListe = function() {
    var quoi = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value);
    var data;
    if (_interfaceAC.AllResponseQuoi) {
        data = _pjpaResultCache["All_" + quoi];
    }
    else {
        data = _pjpaResultCache[quoi];
    }

    if (data == undefined)
        return;

    var isDefaut = PJPACompare(data, _pjpaResultCache[""]);

    if (PJPAInterfaceAC.RulesAfficheSuggestion(isDefaut) && _interfaceAC.ListeSuggestionQuoi.InputAttached.hasFocus()) {
        //_interfaceAC.QuoiField.value == data[0].Saisie => je verifie si ce que j'affiche correspond a la recherche en cours

        if (data != undefined && data.length > 0) {
            var quoiValue = PJPAInterfaceAC.FormatForKeyCache(_interfaceAC.QuoiField.value);
            var dataQuoi = PJPAInterfaceAC.FormatForKeyCache(data[0].Saisie);

            var QuoiReg = new RegExp("(" + quoiValue + ")", "gi");
            if (!dataQuoi.match(QuoiReg) && quoiValue.length == dataQuoi.length) {
                return;
            }

            var modeItemCache = (data[data.length - 1].IdSecteur == -1);

            _interfaceAC.ListeSuggestionQuoi.AfficheListe(data, true, PJPAInterfaceAC.RulesTitreSuggestion(data), modeItemCache, isDefaut, _interfaceAC.AllResponseQuoi, 'PJPADivOnMouseOver', 'PJPADivOnMouseOut', 'PJPADivOnMouseClickQuoi');

            PJPAInterfaceAC.CompleteDivQuoiShow();
        }
        else {
            PJPAInterfaceAC.CompleteDivQuoiHide();
        }
    }
    else {
        PJPAInterfaceAC.CompleteDivQuoiHide();
    }

}

PJPAInterfaceAC.AfficheListeComplete = function(data) {

    if (data != undefined && data.length > 0) {
        _interfaceAC._completeDiv.style.height = "210px";

        var isDefaut = false;
        var modeItemCache = false;
        _interfaceAC.ListeSuggestionQuoi.AfficheListeDecaler(data, true, PJPAInterfaceAC.RulesTitreSuggestion(data), modeItemCache, isDefaut, _interfaceAC.AllResponseQuoi, 'PJPADivOnMouseOver', 'PJPADivOnMouseOut', 'PJPADivOnMouseClickQuoi');

        _interfaceAC._completeDiv.onscroll = PJPAInterfaceAC.OnScroll;
        _interfaceAC._completeDiv.onmousedown = PJPAInterfaceAC.OnMouseDown;
        document.body.onmousedown = PJPAInterfaceAC.OnMouseDown;

        PJPAInterfaceAC.CompleteDivQuoiShow();
        _interfaceAC.QuoiField.focus();
    }
}

/***********************************Affichage des donnees OU***********************************/
PJPAInterfaceAC.CompleteRechercheOu = function() {
    _pjpaOnEct = 1;
    _interfaceAC.AllResponseOu = true;

    _interfaceAC.PositionSelectionOu = 0;
    _interfaceAC._completeOuDiv.scrollTop = 0;
    _interfaceAC._completeOuDiv.Fin = 0;
    _interfaceAC._completeOuDiv.Debut = 10;

    if (_interfaceAC.OuItemSelected != null && _interfaceAC.OuItemSelected != undefined) {
        var OuFieldValue = PJPARemoveAccents(PJPARightTrim(_interfaceAC.OuItemSelected.Saisie));
    }
    else {
        var OuFieldValue = PJPARemoveAccents(PJPARightTrim(_interfaceAC.OuField.value));
    }
    PJPALaunchCallOu(OuFieldValue, _interfaceAC.AllResponseOu, _interfaceAC.Methode, _interfaceAC.WithProximite, _interfaceAC.TypesGeloc, _interfaceAC.ScrDataAC);
}

PJPAInterfaceAC.AfficheListeOu = function() {

	var ou = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.OuField.value);
	var data;
	if (_interfaceAC.AllResponseOu) {
		data = _pjpaResultCacheOu["All_" + ou];
	}
	else {
		data = _pjpaResultCacheOu[ou];
	}

	if (data != undefined && _interfaceAC.ListeSuggestionOu.InputAttached.hasFocus()) {
		if (data.length > 0) {
			var OuValue = PJPAInterfaceAC.FormatForKeyCacheOu(_interfaceAC.OuField.value);
			var dataOu = PJPAInterfaceAC.FormatForKeyCacheOu(data[0].Saisie);

			var OuReg = new RegExp("(" + OuValue + ")", "gi");
			if (!dataOu.match(OuReg) && OuValue.length == dataOu.length) {
				return;
			}

			var dataDefaut = _pjpaResultCacheOu[""]
			var isDefaut = PJPACompare(data, dataDefaut);

			_interfaceAC.ListeSuggestionOu.AfficheListe(data, false, true, false, isDefaut, _interfaceAC.AllResponseOu, 'PJPADivOnMouseOver', 'PJPADivOnMouseOut', 'PJPADivOnMouseClickOu');

			PJPAInterfaceAC.CompleteDivOuShow();
		}
		else {
			if (_interfaceAC.ScrDataAC >= 2) {
				var message = "Aucun résultat pour ";
				_interfaceAC.ListeSuggestionOu.AfficheListeNoResult(message, _interfaceAC.OuField.value + ".");
				PJPAInterfaceAC.CompleteDivOuShow();
			}
		}
	}
	else {
		PJPAInterfaceAC.CompleteDivOuHide();
	}
}

PJPAInterfaceAC.AfficheListeCompleteOu = function(data) {
    if (data != undefined && data.length > 0) {
        _interfaceAC._completeOuDiv.style.height = "210px";

        var isDefaut = false;
        if (PJPACompare(data, _pjpaResultCache[""])) {
            isDefaut = true;
        }

        var top = (_interfaceAC.TopListeOu != undefined ? _interfaceAC.TopListeOu : 27);
        var left = (_interfaceAC.LeftListeOu != undefined ? _interfaceAC.LeftListeOu : 6);

        _interfaceAC.ListeSuggestionOu.AfficheListeDecaler(data, false, true, false, false, _interfaceAC.AllResponseOu, 'PJPADivOnMouseOver', 'PJPADivOnMouseOut', 'PJPADivOnMouseClickOu');

        _interfaceAC._completeOuDiv.onscroll = PJPAInterfaceAC.OnScroll;
        _interfaceAC._completeOuDiv.onmousedown = PJPAInterfaceAC.OnMouseDown;
        document.body.onmousedown = PJPAInterfaceAC.OnMouseDown;

        PJPAInterfaceAC.CompleteDivOuShow();
        _interfaceAC.OuField.focus();
    }
}

/***********************************************************************************************/
var oLeft = 0;
var oTop = 0;

$(document).bind('mousemove', function(e) {
	oLeft = e.pageX;
	oTop = e.pageY;
});

PJPAInterfaceAC.OnMouseDown = function(e) {
	_pjpaMouseDown = 1;

	var x = oLeft;
	var y = oTop;

	if (_interfaceAC.AllResponseQuoi) {
		//$("#erreurJS").html($("#erreurJS").html() + "<br>quoi");
		_interfaceAC.ListeSuggestionQuoi.InputAttached.focused = true;
		var top = (_interfaceAC.TopListeQuoi != undefined ? _interfaceAC.TopListeQuoi : 27);
		var left = (_interfaceAC.LeftListeQuoi != undefined ? _interfaceAC.LeftListeQuoi : 6);

		var Xmin = PJPACalculateOffsetLeft(_interfaceAC.DivSuggestionQuoi);
		var Xmax = Xmin + PJPACalculateWidth(_interfaceAC.QuoiField) + 10;
		var Ymin = PJPACalculateOffsetTop(_interfaceAC.DivSuggestionQuoi);
		var Ymax = Ymin + 210 + 10;
	}
	else if (_interfaceAC.AllResponseOu) {
		//$("#erreurJS").html($("#erreurJS").html() + "<br>ou");
		_interfaceAC.ListeSuggestionOu.InputAttached.focused = true;
		var top = (_interfaceAC.TopListeOu != undefined ? _interfaceAC.TopListeOu : 27);
		var left = (_interfaceAC.LeftListeOu != undefined ? _interfaceAC.LeftListeOu : 6);

		var Xmin = PJPACalculateOffsetLeft(_interfaceAC.DivSuggestionOu);
		var Xmax = Xmin + PJPACalculateWidth(_interfaceAC.OuField) + 10;
		var Ymin = PJPACalculateOffsetTop(_interfaceAC.DivSuggestionOu);
		var Ymax = Ymin + 210 + 10;
	}

	//$("#erreurJS").html($("#erreurJS").html() + "<br>souris X: " + x + " +++ " + Xmin + " " + Xmax);
	//$("#erreurJS").html($("#erreurJS").html() + "<br>souris Y: " + x + " +++ " + Ymin + " " + Ymax);

	if (x > Xmin && x < Xmax && y > Ymin && y < Ymax) {
		_pjpaOnEct = 1;
		return false;
	}
	else {
		_pjpaOnEct = 0;
		_pjpaOnScroll = 0;
		PJPAInterfaceAC.CompleteDivQuoiHide();
		PJPAInterfaceAC.CompleteDivOuHide();
		//PJPAInterfaceAC.WriteDebug("this : " + this.id + " => " + x + " >" + Xmin + " && " + x + " < " + Xmax + " && " + y + " > " + Ymin + " && " + y + " < " + Ymax);
	}
}

PJPAInterfaceAC.OnScroll = function() {
    _pjpaOnScroll = 1;
}

PJPAInterfaceAC.IsScrolling = function() {
    if (_pjpaOnScroll == 1)
        return true;
    return false;
}


/*---- Validation.js ----*/

PJPAInterfaceAC.InitAlerteQuoi = function() {
    var top = (_interfaceAC.TopListeQuoi != undefined ? _interfaceAC.TopListeQuoi : 27);
    var left = (_interfaceAC.LeftListeQuoi != undefined ? _interfaceAC.LeftListeQuoi : 6) + (PJPACalculateWidth(_interfaceAC.QuoiField) / 2 - 30);

    _interfaceAC.WhatFieldIsRequiredVide = PJPAInterfaceAC.AlerteFormulaireIEquoi("DivAlerteQuoiVide", "whatFieldIsRequiredVide", "Veuillez préciser une recherche.", left, top, true);
    $(_interfaceAC.WhatFieldIsRequiredVide).hide();

    _interfaceAC.WhatFieldIsRequiredNoSelected = PJPAInterfaceAC.AlerteFormulaireIEquoi("DivAlerteQuoiNoSelect", "whatFieldIsRequiredNoSelected", "Désolé, cette catégorie n'existe pas. <br>Veuillez modifier votre recherche.", left, top, true);
    $(_interfaceAC.WhatFieldIsRequiredNoSelected).hide();
}

PJPAInterfaceAC.InitAlerteOu = function() {
	var topOu = (_interfaceAC.TopListeOu != undefined ? _interfaceAC.TopListeOu : 27);
	var leftOu = (_interfaceAC.LeftListeOu != undefined ? _interfaceAC.LeftListeOu : 6) + (PJPACalculateWidth(_interfaceAC.OuField) / 2 - 30);
	var msg = "Veuillez préciser une ville, un département ou une région";

	var bVille = _interfaceAC.TypesGeloc.indexOf("Ville") != -1;
	var bDept = _interfaceAC.TypesGeloc.indexOf("Dept") != -1;
	var bRegion = _interfaceAC.TypesGeloc.indexOf("Region") != -1;
	var bLocVacOrColoc = _interfaceAC.ScrDataAC == 2 || _interfaceAC.ScrDataAC == 3;

	if (bVille && bDept && bRegion && !bLocVacOrColoc) {

		if (_interfaceAC.ScrDataAC == 4) {
			msg = "Veuillez sélectionner une ville, <br>un département ou une région";
		}
		else {
			msg = "Veuillez préciser une ville, <br>un département ou une région";
		}
	}
	else {
		if (_interfaceAC.ScrDataAC == 4) {
			msg = "Veuillez sélectionner ";
		}
		else {
			msg = "Veuillez préciser ";
		}
		msgGeoloc = "";

		var bgeoloc = false;
		if (bVille) {
			msgGeoloc += "une ville";
			bgeoloc = true;
		}
		if (bDept) {
			if (!bgeoloc)
				msgGeoloc += " un département";
			else
				msgGeoloc += " ou un département";
			bgeoloc = true;
		}
		if (bRegion) {
			if (!bgeoloc)
				msgGeoloc += " une région";
			else
				msgGeoloc += " ou une région";

			bgeoloc = true;
		}
		msg += msgGeoloc;
	}

	_interfaceAC.WhereFieldIsRequired = PJPAInterfaceAC.AlerteFormulaireIEquoi("DivAlerteOu", "whereFieldIsRequired", msg, leftOu, topOu, false);
	$(_interfaceAC.WhereFieldIsRequired).hide();
}

PJPAInterfaceAC.SetPositionAlerteOu = function(top, left) {
    _interfaceAC.WhereFieldIsRequired.css("left", left);
    _interfaceAC.WhereFieldIsRequired.css("top", top);
}

PJPAInterfaceAC.CreateHiddenField = function(name, value) {
    var hidden = document.createElement("input")
    hidden.type = "hidden";
    hidden.name = name;
    hidden.value = value;
    return hidden;
}

PJPAInterfaceAC.prototype.DetectSecteurIdFromSaisie = function(secteur) {
    if (secteur == "" || secteur == undefined || secteur == null) {
        var saisie = " " + this.QuoiField.value.toLowerCase();

        if (saisie.match(PJPAGetRegExprIgnoreAccents("immo"))) {
            return 1;
        }
        else if (saisie.match(PJPAGetRegExprIgnoreAccents("auto"))) {
            return 2;
        }
        else if (saisie.match(PJPAGetRegExprIgnoreAccents("moto"))) {
            return 3;
        }
        return -1;
    }
    return secteur;
}

PJPAInterfaceAC.prototype.DetectSecteurFromSaisie = function(secteur) {
    if (secteur == "" || secteur == undefined || secteur == null) {
        var saisie = " " + this.QuoiField.value.toLowerCase();

        if (saisie.match(PJPAGetRegExprIgnoreAccents("immo"))) {
            return "IMMO";
        }
        else if (saisie.match(PJPAGetRegExprIgnoreAccents("auto"))) {
            return "AUTO";
        }
        else if (saisie.match(PJPAGetRegExprIgnoreAccents("moto"))) {
            return "MOTO";
        }
    }
    return secteur;
}

PJPAInterfaceAC.prototype.GetParamLog = function() {
    var secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre;
    secteur = Cat = SousCat = QuoiLibre = OuProximite = Ou = OuSuffixe = OuLibre = "";

    var params = new Array();

    var saisie = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.QuoiField.value));
    var saisieOu = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.OuField.value));

    var b_QuoiItemSelected = (_interfaceAC.QuoiItemSelected != undefined && _interfaceAC.QuoiItemSelected != null);
    var b_QuoiFieldValue = (saisie != "");

    var b_OuItemSelected = (_interfaceAC.OuItemSelected != undefined && _interfaceAC.OuItemSelected != null);
    var b_OuFieldValue = (saisieOu != "");

    if (b_QuoiItemSelected && PJPAInterfaceAC.IsNotNullUndefined(_interfaceAC.QuoiItemSelected.Secteur, true)) {
        secteur = _interfaceAC.QuoiItemSelected.Secteur;
        Cat = _interfaceAC.QuoiItemSelected.LibelleCat;
        SousCat = _interfaceAC.QuoiItemSelected.LibelleSsCat;
        QuoiLibre = "";
    }
    else if (b_QuoiFieldValue) {
        QuoiLibre = _interfaceAC.QuoiField.value;
    }

    if (b_OuItemSelected) {
        OuProximite = _interfaceAC.OuItemSelected.prefixe;
        Ou = _interfaceAC.OuItemSelected.ouWithoutPrefixe;
        OuSuffixe = _interfaceAC.OuItemSelected.suffixe;
        OuLibre = "";
    }
    else if (b_OuFieldValue) {
        OuLibre = _interfaceAC.OuField.value;
    }

    if ((secteur == "" || secteur == undefined) && _interfaceAC.Secteur != 0) {
        secteur = _interfaceAC.Secteur;
    }

    params = [secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre];

    return params;
}

PJPAInterfaceAC.prototype.ValideQuoi = function(idSecteur, secteur, saisie, b_QuoiItemSelected, b_QuoiFieldValue) {

	var id_secteur = (idSecteur != -1 ? idSecteur : _interfaceAC.Secteur);

	if (b_QuoiItemSelected) {
		return true;
	}
	else if (!b_QuoiItemSelected && b_QuoiFieldValue && ((idSecteur >= 1 && idSecteur <= 3) || (_interfaceAC.Secteur >= 1 && _interfaceAC.Secteur <= 3))) {
		_interfaceAC.QuoiItemSelected = new PJPADataAutoCompletionQuoi(id_secteur, secteur, saisie, '', saisie, '', '', 0, saisie);
		return true;
	}
	else {
		if (!b_QuoiItemSelected && !b_QuoiFieldValue) {
			if (idSecteur == 1 || _interfaceAC.Secteur == 1) {
				return true;
			}
			else {
				$(_interfaceAC.WhatFieldIsRequiredVide).show();
			}
		}
		else if (!b_QuoiItemSelected && b_QuoiFieldValue) {
			$(_interfaceAC.WhatFieldIsRequiredNoSelected).show();
		}
		return false;
	}
}

PJPAInterfaceAC.prototype.ValideOu = function(idSecteur, secteur, saisie, b_QuoiItemSelected, b_QuoiFieldValue, b_OuItemSelected, b_OuFieldValue) {
    if (idSecteur >= 2 && idSecteur <= 5) {
        _interfaceAC.OuItemSelected = new PJPADataAutoCompletionOu(-1, false, saisie, '', '', '', '', '', saisie);
        return true;
    }

    if (b_OuItemSelected || b_OuFieldValue) {
        if (!b_OuItemSelected) {
        	_interfaceAC.OuItemSelected = new PJPADataAutoCompletionOu(-1, false, saisie, '', '', '', '', '', saisie);
        }
        return true;
    }
    else if (!b_OuItemSelected && !b_OuFieldValue) {
        if (b_QuoiItemSelected && _interfaceAC.QuoiItemSelected.IdSecteur > 1 && _interfaceAC.QuoiItemSelected.IdSecteur <= 5) {
        	_interfaceAC.OuItemSelected = new PJPADataAutoCompletionOu(-1, false, saisie, '', '', '', '', '', saisie);
            return true;
        }
        else if (!b_QuoiItemSelected && b_QuoiFieldValue && ((idSecteur > 1 && idSecteur < 3) || (_interfaceAC.Secteur > 1 && _interfaceAC.Secteur < 3))) {
        _interfaceAC.OuItemSelected = new PJPADataAutoCompletionOu(-1, false, saisie, '', '', '', '', '', saisie);
            return true;
        }
        else {
            $(_interfaceAC.WhereFieldIsRequired).show();
            return false;
        }
    }
    else {
        $(_interfaceAC.WhereFieldIsRequired).show();
        return false;
    }
}

// Submit click on button "Trouver". Need to return false to interrupt user click action.
PJPAInterfaceAC.SubmitClick = function() {
	var b_SubmitQuoi = (_interfaceAC.QuoiField != undefined && _interfaceAC.QuoiField != null);
	var b_SubmitOu = (_interfaceAC.OuField != undefined && _interfaceAC.OuField != null);

	if (_interfaceAC.CanSubmit && b_SubmitQuoi && b_SubmitOu) {
		var ok = true;
		var params = _interfaceAC.GetParamLog();

		var secteur = params[0];
		var Cat = params[1];
		var SousCat = params[2];
		var QuoiLibre = params[3];
		var OuProximite = params[4];
		var Ou = params[5];
		var OuSuffixe = params[6];
		var OuLibre = params[7];

		var saisie = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.QuoiField.value));
		var saisieOu = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.OuField.value));

		var b_QuoiItemSelected = (_interfaceAC.QuoiItemSelected != undefined && _interfaceAC.QuoiItemSelected != null);
		var b_QuoiFieldValue = (saisie != "");

		var b_OuItemSelected = (_interfaceAC.OuItemSelected != undefined && _interfaceAC.OuItemSelected != null);
		var b_OuFieldValue = (saisieOu != "");

		var idSecteur = _interfaceAC.DetectSecteurIdFromSaisie(secteur);
		var secteur = _interfaceAC.DetectSecteurFromSaisie(secteur);

		var okQuoi = _interfaceAC.ValideQuoi(idSecteur, secteur, saisie, b_QuoiItemSelected, b_QuoiFieldValue);
		var okOu = _interfaceAC.ValideOu(idSecteur, secteur, saisieOu, b_QuoiItemSelected, b_QuoiFieldValue, b_OuItemSelected, b_OuFieldValue);

		PJPALaunchCallLogger(secteur, Cat, SousCat, QuoiLibre, OuProximite, Ou, OuSuffixe, OuLibre, (okQuoi && okOu), _interfaceAC.Methode, (_interfaceAC.Secteur == 0 ? "Accueil" : "Sectorise"));
	}
	else if (_interfaceAC.CanSubmit && !b_SubmitQuoi && b_SubmitOu) {
		var bcontinue = false;
		if (_interfaceAC.ScrDataAC == 1 ) {
			bcontinue = PJPAInterfaceAC.LocaliteIsOk();
		}
		if (_interfaceAC.ScrDataAC == 2 || _interfaceAC.ScrDataAC == 3 || _interfaceAC.ScrDataAC == 4) {
			bcontinue = PJPAInterfaceAC.LocaliteMandatoryIsOk();
		}

		if (bcontinue) {
			_interfaceAC.SubmitButton.click();
			return true;
		}
	}
	return false;
}

PJPAInterfaceAC.LocaliteIsOk = function() {
	var saisieOu = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.OuField.value));
	var b_OuItemSelected = (_interfaceAC.OuItemSelected != undefined && _interfaceAC.OuItemSelected != null);
	var b_OuFieldValue = (saisieOu != "");
	var secteur = _interfaceAC.Secteur;
	var idSecteur = _interfaceAC.DetectSecteurIdFromSaisie(secteur);

	var okOu = _interfaceAC.ValideOu(idSecteur, secteur, saisieOu, false, '', b_OuItemSelected, b_OuFieldValue);

	if (okOu)
		return true;

	return false;
}

PJPAInterfaceAC.LocaliteMandatoryIsOk = function() {

	var saisieOu = PJPARemoveAccents(PJPATrimDoubleSpace(_interfaceAC.OuField.value));

	if (saisieOu != '' && saisieOu != _interfaceAC.MessageDefaut) {
		var b_OuItemSelected = (_interfaceAC.OuItemSelected != undefined && _interfaceAC.OuItemSelected != null);

		if (b_OuItemSelected) {
			return true;
		}
		else {
			$(_interfaceAC.WhereFieldIsRequired).show();
			return false;
		}
	}
	else {
		_interfaceAC.OuField.value = "";
		return true;
	}
}


PJPAInterfaceAC.Redirect = function() {
    
    PJPATagXitiTrouvez(_interfaceAC.Secteur);

	var QuoiItemIdSecteur = (_interfaceAC.QuoiItemSelected != null && _interfaceAC.QuoiItemSelected != undefined ? _interfaceAC.QuoiItemSelected.IdSecteur : -1);
	
	if (_interfaceAC.Secteur == 1 || QuoiItemIdSecteur == 1 || QuoiItemIdSecteur == 2 || QuoiItemIdSecteur == 3) {
		_interfaceAC.ValideImmoAutoMoto();
	}
	//emploi
	if (QuoiItemIdSecteur == 4) {
		_interfaceAC.ValideEmploi();
	}
	//stages
	if (QuoiItemIdSecteur == 5) {
		_interfaceAC.ValideStages();
	}
	//services
	if (QuoiItemIdSecteur == 6) {
		_interfaceAC.ValideServices();
	}
}

PJPAInterfaceAC.prototype.ValideImmoAutoMoto = function() {
    var url = null;

    var QuoiItemIdSecteur = (_interfaceAC.QuoiItemSelected != null && _interfaceAC.QuoiItemSelected != undefined ? _interfaceAC.QuoiItemSelected.IdSecteur : -1);

    if (_interfaceAC.Secteur == 1 || QuoiItemIdSecteur == 1) {
        url = "/MoteurRecherchePJPA.aspx?";
        url += "secteur=immo";
        var quoi = "";
        if (this.QuoiItemSelected != null && typeof (this.QuoiItemSelected) != undefined) {
            quoi = this.QuoiItemSelected.GetValeur();
        }

        url += "&Quoi=" + quoi;
        url += "&Ou=" + this.OuItemSelected.GetValeur();
        url += "&Combien=";
    }
    if (this.QuoiItemSelected != null && QuoiItemIdSecteur == 2) {
        url = "/MoteurRecherchePJPA.aspx?";
        url += "secteur=auto";
        url += "&Quoi=" + this.QuoiItemSelected.GetValeur();
        url += "&Ou=" + this.OuItemSelected.GetValeur();
        url += "&Combien=";
    }
    if (this.QuoiItemSelected != null && QuoiItemIdSecteur == 3) {
        url = "/MoteurRecherchePJPA.aspx?";
        url += "secteur=moto";
        url += "&Quoi=" + this.QuoiItemSelected.GetValeur();
        url += "&Ou=" + this.OuItemSelected.GetValeur();
        url += "&Combien=";
    }
    
    this.RedirectToUrl(url);
}

PJPAInterfaceAC.prototype.ValideEmploi = function() {
	var idFonction = _interfaceAC.QuoiItemSelected.GetValeurCat();
	var idNiveauQualification = "0";
	var ou = _interfaceAC.OuItemSelected.GetValeur(4);

	var url = "/Emploi/EmploiJob.aspx";
	url += "?IdFonction=" + idFonction;
	url += "&IdNiveauQualification=" + idNiveauQualification;
	url += "&Ou=" + ou;

	this.RedirectToUrl(url);
}

PJPAInterfaceAC.prototype.ValideStages = function() {
    var idFonction = _interfaceAC.QuoiItemSelected.GetValeurCat();
    var idNiveauQualification = "0";
    var ou = _interfaceAC.OuItemSelected.GetValeur(4);

    var url = "/Stages/stages.aspx";
    url += "?IdFonction=" + idFonction;
    url += "&IdNiveauQualification=" + idNiveauQualification;
    url += "&Ou=" + ou;

    this.RedirectToUrl(url);
}

PJPAInterfaceAC.prototype.RedirectToUrl = function(relativeUrl) {
    if (relativeUrl != null) {
        var url = _pjpaUrlServeur + relativeUrl;

        if (this.SubmitButton.target == '_blank') {
            window.open(url);
        } else if (this.SubmitButton.target == '_parent') {
            window.parent.location = url;
        } else {
            if (_alwayUseUrlServeur) {
                window.location = url;
            } else {
                window.location = relativeUrl;
            }
        }
    }
    
    return false;
}

PJPAInterfaceAC.prototype.ValideServices = function() {
	if (PJPARightTrim(_interfaceAC.QuoiField.value) != '') {
		PJPAInterfaceAC.SubmitFormService(_interfaceAC.QuoiItemSelected.GetValeurCat(),
                                       _interfaceAC.QuoiItemSelected.GetValeurSousCat(),
                                       _interfaceAC.OuItemSelected.GetValeur(6));
	}
}

PJPAInterfaceAC.SubmitFormService = function(cat_id, srv_id, ou) {
	if (cat_id != -1) {
		_interfaceAC.FrameRecherche = document.createElement("FORM");
		_interfaceAC.FrameRecherche.id = "FORM_service";
		_interfaceAC.FrameRecherche.action = "http://services.annoncesjaunes.fr/recherche/aj.html";
		_interfaceAC.FrameRecherche.method = "POST";

		var hiddentype = PJPAInterfaceAC.CreateHiddenField("type", "etu");
		var hiddenrecherche = PJPAInterfaceAC.CreateHiddenField("recherche", "1");
		var hiddencat_id = PJPAInterfaceAC.CreateHiddenField("cat_id", cat_id);
		var hiddensrv_id = PJPAInterfaceAC.CreateHiddenField("srv_id", srv_id);

		var hiddenlocalisation = PJPAInterfaceAC.CreateHiddenField("localisation", PJPARemplaceOu(ou));
		_interfaceAC.FrameRecherche.appendChild(hiddentype);
		_interfaceAC.FrameRecherche.appendChild(hiddenrecherche);
		_interfaceAC.FrameRecherche.appendChild(hiddencat_id);
		_interfaceAC.FrameRecherche.appendChild(hiddensrv_id);
		_interfaceAC.FrameRecherche.appendChild(hiddenlocalisation);

		document.body.appendChild(_interfaceAC.FrameRecherche);

		_interfaceAC.FrameRecherche.submit();
	} else {
		document.location = "http://services.annoncesjaunes.fr/recherche-d-etudiants/0/0-0-0-0-1-1-P-0/0.html";
	}
}

PJPAInterfaceAC.AlerteFormulaire = function(id, texteAlerte, left, top) {
    var alerteDiv = document.createElement("DIV");
    alerteDiv.id = id;
    alerteDiv.style.top = top + "px";
    alerteDiv.style.left = left + "px";
    alerteDiv.className = "alerte_champ_requis alerte_champ_ou";

    var sousDiv = document.createElement("DIV");

    var alerteHg = document.createElement("DIV");
    alerteHg.className = "alerte_hg";

    var alerteTop = document.createElement("SPAN");
    alerteTop.className = "alerte_top";

    var alerteBottom = document.createElement("SPAN");
    alerteBottom.className = "alerte_bottom";

    var alertePointe = document.createElement("SPAN");
    alertePointe.className = "alerte_pointe";

    var texte = document.createElement("P");
    $(texte).html(texteAlerte);

    alerteHg.appendChild(alerteTop);
    alerteHg.appendChild(alerteBottom);
    alerteHg.appendChild(alertePointe);
    alerteHg.appendChild(texte);

    sousDiv.appendChild(alerteHg);
    alerteDiv.appendChild(sousDiv);

    document.body.appendChild(alerteDiv);

    return alerteDiv;
}

PJPAInterfaceAC.AlerteFormulaireIEquoi = function(divConteneur, id, texteAlerte, left, top, IsQuoi) {
	var doc = document.getElementById(divConteneur);

	if (IsQuoi) {
		if (id == "whatFieldIsRequiredNoSelected") {
			doc = document.getElementById("DivAlerteQuoiNoSelect");
		}
		else {
			doc = document.getElementById("DivAlerteQuoiVide");
		}
	}
	else {
		doc = document.getElementById("DivAlerteOu");
	}

	var conteneur = document.createElement("DIV");

	var alerteDiv = document.createElement("DIV");
	alerteDiv.id = id;
	alerteDiv.style.top = top + "px";
	alerteDiv.style.left = left + "px";
	alerteDiv.style.width = "190px";
	alerteDiv.className = "alerte_champ_requis alerte_champ_ou";

	var sousDiv = document.createElement("DIV");

	var alerteHg = document.createElement("DIV");
	alerteHg.className = "alerte_hg";

	var alerteTop = document.createElement("SPAN");
	alerteTop.className = "alerte_top";

	var alerteBottom = document.createElement("SPAN");
	alerteBottom.className = "alerte_bottom";

	var alertePointe = document.createElement("SPAN");
	alertePointe.className = "alerte_pointe";

	var texte = document.createElement("P");
	$(texte).html(texteAlerte);
	
	alerteHg.appendChild(alerteTop);
	alerteHg.appendChild(alerteBottom);
	alerteHg.appendChild(alertePointe);
	alerteHg.appendChild(texte);

	sousDiv.appendChild(alerteHg);
	alerteDiv.appendChild(sousDiv);
	conteneur.appendChild(alerteDiv);

	if (IsQuoi) {
		doc.innerHTML = conteneur.innerHTML;
		if (id == "whatFieldIsRequiredNoSelected") {
			_interfaceAC.DivAlerteQuoiNoSelect = doc.innerHTML;
		}
		else {
			_interfaceAC.DivAlerteQuoiVide = doc.innerHTML;
		}
	}
	else {
		doc.innerHTML = conteneur.innerHTML;
		_interfaceAC.DivAlerteOu = doc.innerHTML;
	}

	return $("#" + id);
}



