/* NAMESPACE */ var Capifrance = {}; /* SCOPE PORTABLE OS */ (function(){ /* Fonction PermuteChk() * * @string : Element Id * * Permute le cochage d'un checkbox */ Capifrance.PermuteChk = function(Id) { $(Id).checked = !$(Id).checked; return $(Id).checked; } /* Effect (Class) */ Capifrance.Effect = { /* Fonction Slide() * * @string : Element Id * @number : Hauteur de Départ * @number : Hauteur d'Arriver * @number : Vitesse d'animation * @bool : Afficher l'élément en debut d'animation * @bool : Masquer l'élément en fin d'animation * * Effet glissement sur un élément */ Slide:function(P_Element,P_StartX,P_StopX,P_Speed,P_ShowBeforeAnim,P_HideAfterAnim) { // Test si un slide est en cours if(P_StopX!=$(P_Element).getHeight()) { //console.log("Element:"+P_Element+"\nStart:"+P_StartX+"\nStop:"+P_StopX+"\n"); //console.log("Is Sliding : "+this.IsSliding); // Calcul du P_StopX P_StopX = (P_StopX==0) ? 1:P_StopX; // Création de l'effet return new Effect.Scale(P_Element,100, { scaleX:false, duration: P_Speed, scaleContent: true, scaleContent: false, scaleFrom: ((100*P_StartX)/P_StopX), scaleMode: {originalHeight:P_StopX, originalWidth:$(P_Element).getWidth() }, afterSetup: function(E) { if(P_ShowBeforeAnim) $(P_Element).show(); }, afterFinishInternal: function(E) { if(P_HideAfterAnim) { $(P_Element).hide(); Capifrance.Map.IsClosing = false; $(P_Element).style.height = "0px"; } //console.log($(P_Element).getHeight()+" "+P_StopX); } }); } } }, /* Map (Class) */ Capifrance.Map = { /* Elément actuellement affiché */ ShownElement:0, /* Map Ouverte ? */ IsOpen:function() { return ($("MapBloc").style.display!="none"); }, /* Map en cours de fermeture ? */ IsClosing:false, /* Fonction ShowHide() * * @string : Critères de recherche d'annonces * * Rafraichi la carte */ ShowHide:function(P_Param) { // Ouverture du bloc Map if(!this.IsOpen()) { // Vide la frame si nécessaire var MapIframeSrc = $('MapIframe').src var ActualParam = MapIframeSrc.substring(MapIframeSrc.indexOf("?",0)+1); if(ActualParam != P_Param) { $('MapIframe').src = ""; MapIframeSrc = ""; } // Rafraichissement de l'iframe Capifrance.Map.Refresh(P_Param); // Ouverture du Bloc Map var IframeDoc = (!Prototype.Browser.IE) ? $("MapIframe").contentDocument:document.frames["MapIframe"].document; if(MapIframeSrc=="" || IframeDoc.getElementById("MapOverResult")) Capifrance.Map.AdjustBloc(1,150); else Capifrance.Map.AdjustBloc(1,450); } // Fermeture du bloc Map else { // Mise à jour de IsClosing Capifrance.Map.IsClosing = true; // Annulation de tous les effets en cours $A(Capifrance.Map.TabAjustEffect).each(function(Eff, index) { if(Eff) { // Annule l'effet Eff.cancel(); // Supprime l'effet du tableau Capifrance.Map.TabAjustEffect.remove(index); } }); // Fermeture du Bloc Map Capifrance.Effect.Slide("MapBloc",$("MapBloc").getHeight(),0,0.5,0,1); } }, /* Fonction Refresh() * * @string : Critères de recherche d'annonces * * Rafraichi la carte */ Refresh:function(P_Param) { // Si les critères sont différents var ActualParam = $('MapIframe').src.substring($('MapIframe').src.indexOf("?",0)+1); if(ActualParam != P_Param) { // Réajuste la taille de la map Capifrance.Map.AdjustBloc(0,150); // Affiche Chargement en cours Effect.Appear("LoadingFrame",{duration:0.4}); // Affiche la carte $('MapIframe').src = "liste_geo_map.php?"+P_Param; } }, /* Fonction AdjustBloc() * * @bool : Ouverture de la map ? * @int : Nouvelle taille d'ajustement * * Ajustement de la taille du bloc Map */ TabAjustEffect:Array(), AdjustBloc:function(OpenInstruction, AjustHeight) { // Si la fermeture du Bloc n'est pas en cours et que le bloc map est ouvert if(!Capifrance.Map.IsClosing && (Capifrance.Map.IsOpen() || OpenInstruction)) { // Annulation de tous les effets en cours $A(Capifrance.Map.TabAjustEffect).each(function(Eff, index) { if(Eff) { // Annule l'effet Eff.cancel(); // Supprime l'effet du tableau Capifrance.Map.TabAjustEffect.remove(index); } }); // Ajuste la taille du bloc map Capifrance.Map.TabAjustEffect.push(Capifrance.Effect.Slide("MapBloc",$("MapBloc").getHeight(),AjustHeight,0.5,OpenInstruction,0)); } } }, /* Liste (Class) */ Capifrance.Liste = { /* Fonction Refresh() * * @string : Critères de recherche d'annonces * * Rafraichi la liste */ TabAjaxRequest:Array(), IsRefreshingListe:false, Refresh:function(P_Param,P_Page,P_RefreshMap) { // Mise à jour de IsRefreshingListe Capifrance.Liste.IsRefreshingListe = true; // Change le curseur $("ListeAnnonce").setStyle({cursor: 'wait'}); // Affiche la liste en mode transparent $("ListeAnnonce").addClassName("transparent"); // Affiche le message liste $("MsgListe").show(); // Remonte en haut de liste if(Object.isElement($("NavPage"))) { // Calcul des tailles var NavPagePos = $('NavPage').cumulativeOffset().top; var TopListePos = $('TopListe').cumulativeOffset().top; var ScrollTopPos = document.viewport.getScrollOffsets().top; var ScrollBottomPos = ScrollTopPos+document.viewport.getHeight(); // Si TopListe n'est pas visible et que le Nav Page est visible if(TopListePos < ScrollTopPos && ScrollBottomPos > NavPagePos) { Effect.ScrollTo('TopListe', { duration:'0.5' }); } } // Annule les précédentes requêtes ajax $A(Capifrance.Liste.TabAjaxRequest).each(function(Request, index) { Request.abort(); }); // Lance la recherche sur la Map if($('MapBloc').getStyle("display")!="none" && P_RefreshMap) { Capifrance.Map.Refresh(P_Param); } // Page $("Page").value = P_Page; // Recupération des critères var Criteres = Capifrance.Liste.CleanParam(); // Mise à jour du Hash window.location.hash = "#"+Criteres.Hash; // Lance la recherche du mode liste Capifrance.Liste.TabAjaxRequest.push(new Ajax.Request("../ajax/Liste.php",{ parameters: Criteres.Ajax, onComplete:Capifrance.Liste.ShowListe })); }, /* Fonction ShowListe() * * @string : Résultat de requête ajax * * Affiche la liste */ ShowListe:function(Xhr) { // Récupère le nombre de bien var NbRes = Xhr.responseText.substring(0,Xhr.responseText.indexOf("|[#]|",0)); $("nbbien").innerHTML = Math.formatNumber(NbRes,{decimals:0,formatWhole:true,wholeDelimiter:' '}); // Affiche la liste de bien $('ListeAnnonce').innerHTML = Xhr.responseText.replace(NbRes+"|[#]|",""); // Ajout des évenements changement de page $$("span[name='Page']").each(function(Elem) { Event.observe(Elem,'click', function() { Capifrance.Liste.Refresh($('IdFormMiniMoteur').serialize(),Elem.id.replace("Page",""),false); }); }); // Gestion des javascript interieur aux masques $$("input[type='hidden'][name^='PARAM']").each(function(e) { // Recherche de la clé concernée var CurrentCle = e.name.replace("PARAM__",""); CurrentCle = CurrentCle.substring(0,CurrentCle.indexOf("__")); // Recherche de la valeur var CurrentValue = e.value; // Recherche de la variable var CurrentVar = e.name.replace("PARAM__"+CurrentCle+"__",""); // Action en fonction du paramètre switch(CurrentVar) { case "TimeSincePrixBaisse": if(CurrentValue < 8 && CurrentValue > -1) $("TimeSincePrixBaisse__"+CurrentCle).style.display="block"; break; case "TimeSinceCrea": if(CurrentValue < 8) $("TimeSinceCrea__"+CurrentCle).style.display="block"; break; case "Exclu": if(CurrentValue == 2 || CurrentValue == 5 || CurrentValue == 3) $("Exclu__"+CurrentCle).style.display="block"; break; } }); // Affiche le message liste $("MsgListe").hide(); // Affiche la liste en mode normal $("ListeAnnonce").removeClassName("transparent"); // Change le curseur $("ListeAnnonce").setStyle({cursor: 'auto'}); // Mise à jour de IsRefreshingListe Capifrance.Liste.IsRefreshingListe = false; }, /* Fonction RefreshTri() * * @string : Tri voulu * @string : Id Element contenant libellé du tri * * Rafraichi la liste en changeant le tri */ RefreshTri:function(P_Tri,P_IdLibTri) { // Tri $("Tri").value = P_Tri; // Affichage Tri Sélectionné $("CpSort").removeClassName("Highlight"); $("DteSort").removeClassName("Highlight"); $("PriceSort").removeClassName("Highlight"); $(P_IdLibTri).addClassName("Highlight"); // Refresh la liste Capifrance.Liste.Refresh($('IdFormMiniMoteur').serialize(),1,false); }, /* Fonction RefreshNouveau() * * Rafraichi la liste en affichant uniquement les nouveautés */ RefreshNouveau:function() { // Activer if($("Nouveau").value=="") { // Nouveau $("Nouveau").value = 8; // Affichage Nouveau Sélectionné $("OnlyNew").addClassName("Highlight"); } // Désactiver else { // Nouveau $("Nouveau").value = ""; // Affichage Nouveau Sélectionné $("OnlyNew").removeClassName("Highlight"); } // Refresh la liste Capifrance.Liste.Refresh($('IdFormMiniMoteur').serialize(),1,true); }, /* Fonction RefreshExclu() * * Rafraichi la liste en affichant uniquement les exclu */ RefreshExclu:function() { // Activer if($("Exclu").value=="") { // Nouveau $("Exclu").value = 1; // Affichage Nouveau Sélectionné $("OnlyExclu").addClassName("Highlight"); } // Désactiver else { // Nouveau $("Exclu").value = ""; // Affichage Nouveau Sélectionné $("OnlyExclu").removeClassName("Highlight"); } // Refresh la liste Capifrance.Liste.Refresh($('IdFormMiniMoteur').serialize(),1,true); }, /* Fonction AddToSelection() * * @string : Clé à ajouter en selection * * Affiche la liste */ AddToSelection:function(P_Cle) { // Requête ajax new Ajax.Request("../ajax/Selection.php",{ parameters: ({sel:P_Cle}), onComplete: Capifrance.Liste.RefeshSelection }); }, /* Fonction RefeshSelection() * * @string : Résultat de requête ajax * * Rafraichie le nombre de selection */ RefeshSelection:function(Xhr) { // Affiche la liste de bien $('NbSelection').innerHTML = "("+Xhr.responseText+")"; }, /* Fonction HighlightOffer() * * @string : Clé de l'annonce à mettre en surbrillance * @string : Evenement (Over ou Out) * * Mise en surbrillance d'une annonce */ HighlightOffer:function(Cle,Act) { // Si la liste n'est pas en train d'être rafraichie if(!Capifrance.Liste.IsRefreshingListe) { // Récupération de l'action var S1P = (Act!="Over") ? "_over":""; var S2P = (Act!="Out") ? "_over":""; if(Act=="Over") { $("OfferBloc"+Cle).setStyle({borderColor:'#063854'}); $("OfferBloc"+Cle).setStyle({backgroundColor:'#c2d2d7'}); } else { $("OfferBloc"+Cle).setStyle({borderColor:'#C9D1D3'}); $("OfferBloc"+Cle).setStyle({backgroundColor:'#dee1e2'}); } if(Object.isElement($('contaneuf'+Cle))) PermuteSrc('contaneuf'+Cle,'capo'+S1P,'capo'+S2P); if(Object.isElement($('details'+Cle))) PermuteSrc('details'+Cle,'detail'+S1P,'detail'+S2P); if(Object.isElement($('ajselect'+Cle))) PermuteSrc('ajselect'+Cle,'selection'+S1P,'selection'+S2P); if(Object.isElement($('contact'+Cle))) PermuteSrc('contact'+Cle,'contact'+S1P,'contact'+S2P); if(Object.isElement($('capi'+Cle))) PermuteSrc('capi'+Cle,'capi'+S1P,'capi'+S2P); if(Object.isElement($('ami'+Cle))) PermuteSrc('ami'+Cle,'ami'+S1P,'ami'+S2P); } }, /* Fonction CleanParam() * * Mise en surbrillance d'une annonce */ CleanParam:function() { // Récupération et Purge des paramètres var TabResult = {}; var TabCriteres = Array(); var PMM = $("IdFormMiniMoteur").serialize(); var TabPMM = PMM.split("&"); for(i=0;i1) { if(trim(TabKV[1])!="") TabCriteres.push(TabKV[0]+"="+TabKV[1]); } } // Tableau des critères pour le hash TabResult.Hash = TabCriteres.join("&"); // Paramètre supplémentaire hors du moteur (Haut de page liste) for(i=0;i