(  
        function(traitement) 
        {
            // alert("bato:"+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 bato");
                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 bindClickBateau($div)
            {
                jQuery_wg("p:last a", $div).click(function ()
                        {
                    var url = jQuery_wg(this).attr("href");
                    getListeAnnoncesBateau(url, $div);
                    return false;
                        });
            }

            function getListeAnnoncesBateau (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, bindClickBateau); <- n'est pas cross domain
                jQuery_wg.ajax({url: url, cache: true, dataType: 'jsonp',  jsonp: 'jsoncallback', jsonpCallback: 'fonctiondecallbackgetListeAnnoncesBateau', success: function(data)
                    {
                    //alert("bato");
                    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, photo = '', text, xtor_params;
                    if (nbPages < nbAnnonces / nb)
                    {
                        nbPages += 1;
                    }

                    // Titre
                    $div.empty().append('<div class="widgetLogo" style="font-family:arial,sans-serif;text-align:center;_height:1%;">' +
                            '<a href="http://' + urlSite + '" target="_blank">' +
                            '<img src="http://' + urlSite + '/images/widget/logoBox.gif" style="border:0" /></a> ' +
                            '<div style="padding:0 0 8px;font-weight:bold">Les derni&egrave;res annonces pr&egrave;s de chez vous</div>' +
                    '</div>');
                    // Liste des annonces
                    jQuery_wg.each(data.slice(2), function ()
                            {
                        if (this.image !== '_px_140_.jpg')
                        {
                            photo = '<img name="widgetPhotoBateau" src="' + this.image + '" width="60" style="margin: 0px 5px 5px 0; border:0; float:left" />';
                        }
                        else
                        {
                            photo = '';
                        }
                        $div.append('<div style="clear:both;margin:10px 0;_height:1%;">' + photo +
                                '<a href="http://' + urlSite + this.url + '" target="_blank">' + this.titre +
                                '</a><br />' + this.texte + '</div>');
                            });
                    if (nbPages === 0)
                    {
                        $div.append("<p>D&eacute;sol&eacute;, il n'y a aucune annonce correspondant &agrave; cette recherche.</p>");
                    }

                    // Pagination
                    link = ' <a class="widgetPagination" href="' + url.replace(/&page=[0-9]+/, '') + '&page=';
                    text = '<p class="widgetPagination" style="clear:both">page :' + ((page > 1) ? link + (page - 1) + '">&lt;&lt;</a>' : '');
                    // 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 + '</a>';
                    }
                    text += (page < nbPages) ? link + (page + 1) + '">&gt;&gt;</a></p>' : '</p>';
                    bindClickBateau($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('<a href="http://' + urlSite + '?' + xtor_params + '" target="_blank">' +
                            '+ Consulter toutes les annonces</a><br /><a href="http://' + urlSite +
                            '/scripts/consult/passer/PAS_accueil.asp?' + xtor_params +
                    '" target="_blank">+ D&eacute;poser une annonce</a>');

                    // Style des liens
                    $div.find("a").css({"color": linkcolor, "font-weight": "bold"});
                    }});
            };

            // Lie 2 éléments 'select' pour que les options du fils dépendent de
            // l'option sélectionnée du père
            function dependentSelectBATO(pUrlSite, $parent, $child)
            {
                var cache = {};

                $parent.change(function ()
                        {
                    var rubrique = jQuery_wg(this).val(),
                    url = "http://" + pUrlSite + "/scripts/consult/widget/wgt_select.asp?rubrique=" + rubrique,
                    selectedValues = Array.prototype.slice.call(arguments), // Converti
                                                                            // les
                                                                            // param
                                                                            // en
                                                                            // tableau
                    fillSelect;
                    selectedValues.shift(); // supprime l'objet event du tableau

                    fillSelect = function (data)
                    {
                        $child.empty().append('<option value="-1">Tous</option>');

                        jQuery_wg.each(data, function ()
                                {
                            $child.append('<option value="' + this.optionValue + '">' + this.optionDisplay + '</option>');
                                });
                        if (data.length > 0)
                        {
                            $child.parent().show();
                        }
                        else
                        {
                            $child.parent().hide();
                        }

                        if (selectedValues.length > 0)
                        {  // Trigger change appelé avec des paramètres
                            $child.attr("value", selectedValues[0]) // sélection
                                                                    // de
                                                                    // l'option
                                                                    // du select
                                                                    // fils
                            .trigger("change", selectedValues.slice(1));
                        }
                        else
                        {
                            $child.attr("value", "-1").change();
                        }
                    };

                    if (this.value !== "-1") // Si une valeur autre que
                                                // "Tous" a été sélectionnée
                    {  // chargement des valeurs
                        if (typeof cache[rubrique] === "undefined")
                        {
                            jQuery_wg.ajax({url: url, cache: true, dataType: 'jsonp',  jsonp: 'callback', jsonpCallback: 'fonctiondecallBateaudependentSelectBATO', success: function(data)                            
                                    {
                                cache[rubrique] = data;
                                fillSelect(data);
                                    }});
                        }
                        else
                        {
                            fillSelect(cache[rubrique]);
                        }
                    }
                    else
                    {
                        $child.attr("value", "-1").parent().hide().end().change();
                    }
                        });
            }

            // Positionne les select avec les valeurs choisies
            // Paramètres : id du select le plus haut, tableau des valeurs
            function selectedValuesBATO(select_id, arrayValues)
            {
                jQuery_wg("#" + select_id).attr("value", arrayValues[0]).trigger("change", arrayValues.slice(1));
            }

            function initFormBato(pUrlSite, searchBox, callback)
            {
                var $categorie = jQuery_wg("select[name=categorie]", searchBox);
                dependentSelectBATO(pUrlSite, $categorie, jQuery_wg("select[name=marque]", searchBox));
                dependentSelectBATO(pUrlSite, jQuery_wg("select[name=marque]", searchBox), jQuery_wg("select[name=modele]", searchBox));

                jQuery_wg.ajax({url: "http://" + pUrlSite + "/scripts/consult/widget/wgt_select.asp?rubrique=0", cache: true, dataType: 'jsonp',  jsonp: 'callback', jsonpCallback: 'fonctiondecallinitFormBato', success: function(data)                            
                        {
                    $categorie.empty();
                    jQuery_wg.each(data, function ()
                            {
                        $categorie.append('<option value="' + this.optionValue + '">' + this.optionDisplay + '</option>');
                            });
                    if (typeof callback === 'function')
                    {
                        callback(); // selectedValues(...)
                    }
                    else
                    {
                        $categorie.change();
                    }
                        }}
                );
            }

            function initSearchBato(pUrlSite, searchBox)
            {
                var $div = jQuery_wg("div.widgetboxBATEAU", searchBox);

                if ($div.text() === '') // searchBox déjà prise en compte
                {
                    return;
                }
                else
                {
                    $div.data('linkcolor', jQuery_wg("span.widgetlinkcolor", $div).text()).empty();
                }

                // console.log('initSearchBato : ', searchBox);

                jQuery_wg("form", searchBox).submit(function ()
                        {
                    // Récupère les paramètres
                    var nb = jQuery_wg("input[name=nbOffres]", searchBox).val(),
                    categorie = jQuery_wg("select[name=categorie]", searchBox).val(),
                    marque = jQuery_wg("select[name=marque]", searchBox).val(),
                    modele = jQuery_wg("select[name=modele]", searchBox).val(),
                    rub_id = categorie,
                    dep_id = jQuery_wg("select[name=Departement_id]", searchBox).val(),
                    departement = "",
                    params;

                    if (marque !== "-1")
                    {
                        rub_id = marque;
                        if (modele !== "-1")
                        {
                            rub_id = modele;
                        }
                    }

                    if (dep_id !== null)
                    {
                        jQuery_wg.each(dep_id, function (i, val) {
                            departement += "&departement_id=" + val;
                        });
                    }

                    params = "mode=html&s=r&rub_id=" + rub_id + departement + "&nb=" + nb;

                    // Récupère la liste des annonces
                    getListeAnnoncesBateau("http://" + pUrlSite + "/widget/listebox.htm?" + params, $div);

                    // Interdit la soumission du formulaire
                    return false;
                        }
                );
            }


            jQuery_wg('div.widgetboxBATEAU').each(function() {getListeAnnoncesBateau('', jQuery_wg(this))});      

        }
);
