( function(traitement) { // alert("immo:"+traitement); /* fonction appelée quand jQuery est disponible */ var loader = function(jQueryAlreadyLoaded) { /* évite d'appeler cette fonction plusieurs fois */ if (arguments.callee._executed) return; arguments.callee._executed = true; if (jQueryAlreadyLoaded === true) jQuery_wg(traitement); // on attend que le document soit // ready else { jQuery_wg=jQuery.noConflict(true); traitement(); // on a chargé jQuery dynamiquement, donc le // document est déjà ready } } /* chargement de jQuery */ if(typeof jQuery_wg !=='undefined') { /* cette page utilise déjà jQuery */ loader(true); } else { //alert("load immo"); var s=document.createElement('script'); s.setAttribute('type','text/javascript'); var urlJquery='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'; if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number if (ieversion<8) urlJquery='http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js'; } s.setAttribute('src',urlJquery); if (s.addEventListener) /* standard */ { s.addEventListener("load", loader, false); } else if ("onreadystatechange" in s) /* IE */ { s.onreadystatechange = function() { if (this.readyState == 'complete' || this.readyState == 'loaded') { loader(); } }; } else { window.setTimeout(loader(),2500); } document.getElementsByTagName('head')[0].appendChild(s); } } ) ( function() { /*----------*-------------------------*-------------------------------------------------- ' Date | Auteur | Observation '----------*-------------------------*-------------------------------------------------- ' 27/05/09 | Gérald COLLEAUX | - correction : this.image !== "_px_140_.jpg" '---------*-------------------------*--------------------------------------------------*/ /* global jQuery_wg */ function bindClickImmo($div) { jQuery_wg("p:last a", $div).click(function () { var url = jQuery_wg(this).attr("href"); getListeAnnoncesImmo(url, $div); return false; }); } function getListeAnnoncesImmo (url, $div) { /* initialisation du widget : récupération de l'url */ if (url === "") { url = jQuery_wg("span.widgetinfo", $div).text(); /* * cas où la fonction est appelée sur un div déjà * initialisé, ou non widget */ if (url === "") { return; } /* sauvegarde la couleur des liens */ $div.data('linkcolor', jQuery_wg("span.widgetlinkcolor", $div).text()); } /* Masque les résultats précédents */ $div.text("Chargement en cours..."); var linkcolor = $div.data('linkcolor'); /* Récupère la liste des annonces */ // .load(url, bindClickImmo); <- n'est pas cross domain // jQuery_wg.getJSON(url + '&jsoncallback=?', function (data) jQuery_wg.ajax({url: url, cache: true, dataType: 'jsonp', jsonp: 'jsoncallback', jsonpCallback: 'fonctiondecallbackgetListeAnnoncesImmo', success: function(data) { //alert("immo"); var urlSite = data[0], nbAnnonces = data[1], page = url.match('page=[0-9]+') ? parseInt(url.match('page=([0-9]+)')[1], 10) : 1, nb = parseInt(url.match('nb=([0-9]+)')[1], 10), nbPages = Math.floor(nbAnnonces / nb), i, m, link, text, photo = '', xtor_params; if (nbPages < nbAnnonces / nb) { nbPages += 1; } // Titre var domaineSite = urlSite.split('.')[1].replace('-immo', ''); $div.empty().append(''); // Liste des annonces jQuery_wg.each(data.slice(2), function () { if (this.image !== "_px_140_.jpg") { photo = ''; } else { photo = ""; } $div.append('

' + photo + '' + this.titre + '
' + this.texte + '

'); }); if (nbPages === 0) { $div.append("

Désolé, il n'y a aucune annonce correspondant à cette recherche.

"); } // Pagination link = ' page :' + ((page > 1) ? link + (page - 1) + '"><<' : ''); // for (i = Math.max(1, page - 5), m = Math.min(Math.max(10, // page + 4), nbPages); i <= m; i += 1) for (i = page, m = Math.min(nbPages, page + 1); i <= m; i += 1) { text += (page === i) ? ' ' + i : link + i + '">' + i + ''; } text += (page < nbPages) ? link + (page + 1) + '">>>

' : '

'; bindClickImmo($div.append(text)); // Liens supplémentaires xtor_params = (url.match('s=(l|r)') && url.match('s=(l|r)')[1] === 'r') ? 'xtor=AL-147&utm_source=recherche&utm_medium=widgetr&utm_campaign=widget' : // widget // de // type // recherche 'xtor=AL-146&utm_source=liste&utm_medium=widgetl&utm_campaign=widget'; // widget // de // type // liste $div.append('' + '+ Consulter toutes les annonces
+ Déposer votre annonce internet GRATUITE'); // Style des liens $div.find("a").css({"color": linkcolor, "font-weight": "bold"}); }}); }; function initSearchImmo(pUrlSite, searchBox) { var $div = jQuery_wg("div.widgetboxIMMO", searchBox); if ($div.text() === '') // searchBox déjà prise en compte { return; } else { $div.data('linkcolor', jQuery_wg("span.widgetlinkcolor", $div).text()).empty(); } // console.log('initSearchImmo : ', searchBox); jQuery_wg.ajax({url: 'http://' + pUrlSite + '/scripts/consult/widget/WGT_select.asp', cache: true, dataType: 'jsonp', jsonp: 'callback', jsonpCallback: 'fonctiondecallbackinitSearchImmo', success: function(data) { var $select = jQuery_wg('select', searchBox).empty(); jQuery_wg.each(data, function () { $select.append(''); }); }}); jQuery_wg("form", searchBox).submit(function () { // Récupère les paramètres var idloc = jQuery_wg("input[name=IN_LOC_id]", searchBox).val(), libloc = window.escape(jQuery_wg("input[name=IN_LOC_libelle]", searchBox).val()), nb = jQuery_wg("input[name=nbOffres]", searchBox).val(), type = jQuery_wg("select", searchBox).val(), params; params = "mode=html&s=r&type=" + type + "&idloc=" + idloc + "&libloc=" + libloc + "&nb=" + nb; // Récupère la liste des annonces getListeAnnoncesImmo("http://" + pUrlSite + "/widget/listebox.htm?" + params, $div); // Interdit la soumission du formulaire return false; } ); jQuery_wg(searchBox).widgetIMMOautocomplete(pUrlSite); } /** * Autocomplétion * * @param searchBox * {object} div mère du formulaire de recherche * @param pUrlSite * {string} url du site à interroger */ jQuery_wg.widgetIMMOautocomplete = function (searchBox, pUrlSite) { // zone de saisie var $input = jQuery_wg("div.zoneRechercheVille input:text", searchBox).attr("autocomplete", "off"), // zone d'affichage des résultats $results = jQuery_wg("div.zoneSuggestionVille", searchBox), // message "Saisissez..." $message = $input.siblings().eq(0), msgSaisie = "Saisissez tout ou partie du nom d'une ville ou le code postal :", timeout = null, active = -1, // numéro de la ville sélectionnée lastKeyPressCode = null, prev = null, cache = {}; cache.data = {}; cache.length = 0; if (jQuery_wg("input[name=IN_LOC_libelle]", searchBox).val() !== '') { $input.val(jQuery_wg("input[name=IN_LOC_libelle]", searchBox).val()); } function moveSelectIMMO(step) { var $lis = jQuery_wg("li", $results); active += step; if (active < 0) { active = 0; } else if (active >= $lis.size()) { active = $lis.size() - 1; } $lis.removeClass("ac_over") .eq(active).addClass("ac_over"); } function selectItemIMMO(item) { // console.log(item.text(), item.data('id')); prev = item.text().replace(/\s\([0-9]{5}\)$/, ""); $input.val(prev); jQuery_wg("input[name=IN_LOC_libelle]", searchBox).val(prev); jQuery_wg("input[name=IN_LOC_id]", searchBox).val(item.data('id')); $results.hide(); $message.hide(); } function selectCurrentIMMO() { var li = jQuery_wg("li", $results).eq(active); if (li.is("li")) { selectItemIMMO(li); return true; } else { return false; } } function dataToDomIMMO(q, data) { var $ul = $results.empty().append("