begin process at 2012 05 29 03:09:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Application d'un code javascript plusieurs fois


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Application d'un code javascript plusieurs fois

dimanche 7 novembre 2010 à 21:04:17 | Application d'un code javascript plusieurs fois

ngkckwus

Bonjour à tous,

J'ai récupérer un bout de code plutôt sympa qui me permet de positionner une scrollbar n'importe ou (haut bas gauche droite).

Cela marche très bien quand on a un div par contre je n'arrive pas a appliquer ce code sur plusieurs div.

Dans le header j'ai les appels suivant :

Code HTML :
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/ui.core-1.7.2.js"></script>
<script type="text/javascript" src="js/ui.draggable-1.7.2.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="js/plugin.scrollbar.js"></script>

<script type="text/javascript">
$(document).ready(function(){
		$("#textescroll1").scrollbar();
	});
</script>


J'aimerai pouvoir dupliquer cette partie :

Code Javascript :
<script type="text/javascript">
$(document).ready(function(){
		$("#textescroll1").scrollbar();
	});
</script>


De telle sorte a pouvoir avoir quelque chose dans le genre :

Code Javascript :
<script type="text/javascript">
$(document).ready(function(){
		$("#textescroll1").scrollbar();
	});
$(document).ready(function(){
		$("#textescroll2").scrollbar();
	});
</script>


Mais pour l'instant c'est sans succès, seulement "textescroll1" prend le div et non pas "textescroll2".
Une piste serait la bienvenu.

MErci

lundi 8 novembre 2010 à 03:16:41 | Re : Application d'un code javascript plusieurs fois

jdmcreator

Hmm... Je ne connais pas trop JQuery mais mon instant me dirait :
Code HTML :
<script type="text/javascript">
$(document).ready(function(){
		$("#textescroll1").scrollbar();
                $("#textescroll2").scrollbar();
	});
</script>


À tester...


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !

fr.jsinfo.wikia.com
lundi 8 novembre 2010 à 07:18:23 | Re : Application d'un code javascript plusieurs fois

ngkckwus

Merci, jdmcreator mais j'avais deja utilisé cette formulation sans succès.

Je poste tout de même le js de la scrollbar, si ça peut aider :

Code Javascript :
(function($){	
	$.fn.scrollbar = function(params) {
		// Fusionner les paramètres par défaut et ceux de l'utilisateur
		params = $.extend( {
			taille_englobe: '320',			//Taille de l'espace visible - /!\ Doit être un nombre ou 'auto'
			taille_scrollbar: "auto",		//Taille de la scrollbar - /!\ Doit être un nombre ou 'auto'
			taille_bouton: 50,				//Taille du bouton - /!\ Doit être un nombre
			pas:75,							//Pas du scroll molette - /!\ Doit être un nombre ou 'auto'
			molette: true,					//Détection du scroll molette - /!\ true ou false
			drag: true,						//Bouton de la scrollbar déplacable à la souris - /!\ true ou false
			debug: false,					//Afficher la console de debug - /!\ true ou false
			style: 'basic',					//Choix des styles - /!\ Par défault, il n'y a que le style 'basic'
			position:'gauche',				//Position de la scrollBar - /!\ 'gauche' ou 'droite'
			alignement_scrollbar:'haut',	//Alignement de la scrollBar. Utilisé uniquement si elle à une taille inférieur à celle de taille_englobe
			orientation: 'vertical',		//Orientation du contenu, 'vertical' ou 'horizontal'
			marge_scroll_contenu: 25,		//Marge entre la scrollBar et le contenu - /!\ Doit être un nombre
			largeur_scrollbar:3,
			largeur_cacheScrollbar:2,
			largeur_btnScrollbar:5
		}, params);
				
		return this.each(function() {
			var $$ = $(this);
			var taille_englobe_init = params.taille_englobe;
			var taille_scrollbar_init = params.taille_scrollbar;
			
			//Fonction de calcul de position top maximum du contenu
			function calcul_contenu_top_max(){
				return  params.taille_englobe - taille_contenu ;
			}
			
			//Fonction de calcul de position top maximum du bouton
			function calcul_bouton_top_max(){
				return params.taille_scrollbar - params.taille_bouton
			}
			
			//Fonction de calcul du déplacement du bouton
			function deplacement_bouton(info_top_contenu){
				//On calcul la nouvelle position du bouton
				var depl_bouton = (info_top_contenu/calcul_contenu_top_max())*(calcul_bouton_top_max());
				//On vérifie que ca déborde pas en haut
				if(depl_bouton < 0){depl_bouton = 0;}
				//On vérifie que ca déborde pas en bas
				if(depl_bouton > calcul_bouton_top_max()){depl_bouton = calcul_bouton_top_max();}
				$('#bouton').css({'top':depl_bouton+"px"});
			}
			
			function deplacement_contenu(info_top_bouton){
				//On calcul la nouvelle position du contenu
				var depl_contenu = (info_top_bouton/calcul_bouton_top_max())*(calcul_contenu_top_max());
				//On vérifie que ca déborde pas en haut
				if (depl_contenu > 0){depl_contenu = 0}
				//On vérifie que ca déborde pas en bas
				if (depl_contenu < calcul_contenu_top_max()){depl_contenu = calcul_contenu_top_max()}
				$('#englobe').css({'top':depl_contenu+"px"});
			}
			
			function styler_scrollbar(position,orientation){
				var type_marge_position;
				var marge_position;
				var marge_orientation;
				switch (position){
					case 'droite':
						$('#englobe').after('<div id="scrollbar"><div id="cache"><div id="bouton">&nbsp;</div></div></div>');
						$('#scrollbar').css({'margin-left':params.marge_scroll_contenu+'px'});
						$('#cache').css({'margin-left':params.marge_scroll_contenu+'px'});
					break;
					case 'gauche':
						$('#englobe').before('<div id="scrollbar"><div id="cache"><div id="bouton">&nbsp;</div></div></div>');
						$('#scrollbar').css({'margin-right':params.marge_scroll_contenu+'px'});
						$('#cache').css({'margin-right':params.marge_scroll_contenu+'px'});
					break;
				}
				switch (orientation){
					case 'haut':
						$('#scrollbar').css({'margin-top':'0px'});
						$('#cache').css({'margin-top':'0px'});
					break;
					case 'centre':
						var marge = (params.taille_englobe -params.taille_scrollbar)/2;
						$('#scrollbar').css({'margin-top':marge+'px'});
						$('#cache').css({'margin-top':marge+'px'});
					break;
					case 'bas':
						var marge = params.taille_englobe -params.taille_scrollbar;
						$('#scrollbar').css({'margin-top':marge+'px'});
						$('#cache').css({'margin-top':marge+'px'});
					break;
				}
			}
			var padTop=0;
			var padBot=0;
			//Hauteur du contenu
            var taille_contenu = $$.height()+320;
			
			function calcul_hauteur_auto(){
				if(params.taille_englobe == "auto"){
					padTop = $('#contenu').css('padding-top');
					padTop = padTop.substring(0,padTop.length-2);
					
					padBot = $('#contenu').css('padding-bottom');
					padBot = padBot.substring(0,padBot.length-2);
					
					params.taille_englobe = $(window).height()-320-padBot-padTop;
					
				}else{return false}
			}
			calcul_hauteur_auto();
			//La hauteur de l'espace visible est la hauteur de la fenetre du navigateur si taille_englobe="auto"
			
			
			function controle_donnee(){
				calcul_hauteur_auto();
				//La taille du contenu doit être supérieur à celle de l'espace visible (taille_englobe)
				if(taille_contenu > params.taille_englobe){
					//La hauteur de la scroll bar est égale à la hauteur de "englobe" si hauteur_srollbar="auto"
					if(params.taille_scrollbar == "auto"){params.taille_scrollbar = params.taille_englobe;}
					//La taille de la scrollbar doit être inférieur ou égale à la taille de taille_englobe
					if(params.taille_scrollbar > params.taille_englobe){						
						params.taille_scrollbar = params.taille_englobe;	
					}
					return true;
				}else{return false;}		
			}
			
			//Si la hauteur du contenu est supérieur à la hauteur de l'espace visible
			if(controle_donnee()){
				//Au redimensionnement de la fenetre
				//N'est concerné par cette fonction que les éléments en 'auto'
				window.onresize = function() {
					if(taille_englobe_init == "auto"){
						params.taille_englobe = $(window).height()-320-padBot-padTop;
						$$.css({'height':params.taille_englobe+'px'});
						if(taille_scrollbar_init == "auto"){
							params.taille_scrollbar = params.taille_englobe;
							$('#scrollbar').css({'height':params.taille_scrollbar+'px'});
							$('#cache').css({'height':params.taille_scrollbar+'px'});
							deplacement_bouton($("#englobe").css('top').substring(0,$("#englobe").css('top').length-2));
						}
					}	
				};
				
				//calcul des largeurs
				var temp = $$.width();
				$$.css({'width':params.marge_scroll_contenu+params.largeur_scrollbar+temp+'px'});
				//On construit une div autour du contenu, mais à l'intérieur de la div
				$$.wrapInner('<div id="englobe"></div>');
				$$.css({'height':params.taille_englobe+'px','overflow':'hidden','position':'relative'});
				$("#englobe").css({'top':0+'px','float':'left','position':'relative','width':temp+'px'});	
				
				//On construit la scrollBar
				styler_scrollbar(params.position,params.alignement_scrollbar);
				
				$$.append('<div class="clear"></div>');
				$(".clear").css({'clear':'both'});
				
				
				switch (params.style) {
					case 'basic':
						//Style de la scrollBar
						$('#scrollbar').css({'width':params.largeur_scrollbar+'px',
											'float':'left',
											'height':params.taille_scrollbar+'px',
											'background':'#000',
											});
						
						//Style du cache de la scrollBar
						$('#cache').css({'width':params.largeur_cacheScrollbar+'px',
											'float':'left',
											'height':params.taille_scrollbar+'px',
											'background':'#fff',
											});
				
						//Style du bouton de la scrollBar
						$("#bouton").css({'width':params.largeur_btnScrollbar+'px',
										'height':params.taille_bouton+'px',
										'background':'#9c9d9f',
										'top':0+'px',
										'cursor':'pointer',
										});
					break;
				}

				
				
				//Si le drag du bouton est activé(true)
				if(params.drag){
					$("#bouton").draggable({ 
						containment: 'parent',
						axis: 'y',
						start:function(){},
						drag: function(event, ui) {
							//ui.position.top est la valeur renvoyé par le plugin JQuery UI
							deplacement_contenu(ui.position.top);
						},
						stop: function(){}
					});
				}
				
				if(params.molette){
					$$.mousewheel(function(event, delta) {
						//On récupère la position du contenu
						var top_contenu = $('#englobe').css('top');
						
						//On enlève le 'px' et on le convertit en entier pour pouvoir le manipuler
						top_contenu = parseInt( top_contenu.substring(0,(top_contenu.length-2)) );
						
						//On récupère la position du bouton
						var top_bouton = $('#bouton').css('top');
						//On enlève le 'px' et on le convertit en entier pour pouvoir le manipuler
						top_bouton = parseInt( top_bouton.substring(0,(top_bouton.length-2)) );
						
						//Si le delta est positif, c'est à dire que l'on "pousse" la molette
						if (delta > 0) {							
							top_contenu = top_contenu + params.pas;
							//On vérifie que l'on n'a pas atteint le haut du contenu
							if(top_contenu > 0){top_contenu = 0}
							$('#englobe').css({'top':top_contenu+"px"});
						//Si le delta est négatif, c'est à dire que l'on "ramène" la molette
						}else if (delta < 0){							
							top_contenu = top_contenu - params.pas;
							//On vérifie que l'on n'a pas atteint le bas du contenu
							if(top_contenu < calcul_contenu_top_max()){top_contenu = calcul_contenu_top_max()}
							$('#englobe').css({'top':top_contenu+"px"});							
						}
						
						//calcul de déplacement du bouton					
						deplacement_bouton(top_contenu);	
					});
				}
				
				//Affiche la console de debug
			}else{
				alert('Pas de scrollbar');
			}
        });
	}
})(jQuery);
lundi 8 novembre 2010 à 07:43:26 | Re : Application d'un code javascript plusieurs fois

ngkckwus

JE vous mets aussi la partie html concernée :
Code HTML :
<div id="global">
	<div id="titreN1"><img src="images/titre01-expertise.gif" alt="L'expertise" width="240" height="90" /></div>
  <div id="logo"><a href="index.html"><img src="images/logo-rodolphe-loctin.gif" alt="Rodolphe Loctin" width="253" height="90" border="0" /></a></div>
  <div id="texteN1">
  <H2><a href="#" onclick="MM_showHideLayers('texte-immo','','show','texte-social','','hide','texte-commercial','','hide')">Droit Immobilier</a> <br />
    <a href="#" onclick="MM_showHideLayers('texte-immo','','hide','texte-social','','show','texte-commercial','','hide')">Droit Social</a> <br />
    <a href="#" onclick="MM_showHideLayers('texte-immo','','hide','texte-social','','hide','texte-commercial','','show')">Droit Commercial</a></H2>
  </div>
  <div class="texteN2" id="texte-immo">  
      <div id="textescroll1"><p>TEXTE IMMO Depuis 1997, le cabinet RODOLPHE LOCTIN assiste ses clients professionnels de l&#8217;immobilier (syndics de copropriété ; administrateurs de biens ; propriétaires fonciers ; locateurs d&#8217;ouvrage&#8230;) sur toutes les thématiques traditionnelles concernant l&#8217;immeuble : </p>
      <p>- Construction ; désordres et sinistres ; expertises judiciaires</p>
      <p>- Rédaction de contrats (bail d&#8217;habitation ; bail commercial&#8230;)</p>
      <p>- Recouvrement de charges de copropriété (mise en demeure ; contentieux devant le juge de proximité, le Tribunal d&#8217;Instance ou le Tribunal de Grande Instance ; prise d&#8217;hypothèque légale ; saisie immobilière&#8230;)</p>
      <p>- Recouvrement locatif et expulsion</p>
      <p>- Assistance aux copropriétés (mission d&#8217;assistance du conseil syndical ; contentieux des assemblées générales ; gestion des gardiens d&#8217;immeuble&#8230;)</p>
      <p>- Mise en oeuvre du plan bâtiment Grenelle pour le compte de sociétés foncières, d'investisseurs ou d'utilisateurs (syndicat de copropriétaires ; propriétaires&#8230;), par une connaissance pointue des réglementations spécifiques à l'immobilier « vert » et à ses modes de financement (bilan énergétique de l&#8217;immeuble ; certificats d'économie d'énergie ; contrats ou garanties de performance énergétique ; réglementations thermiques ; « bail vert » ; optimisation fiscale liée aux investissements ou équipements « verts »)</p>
      <p>- Mise en place d&#8217;une éco-copropriété</p>
      <p>- Obtention de la certification ISO 14001</p>
      <p>- Informations sur les nouvelles normes et réglementations applicables au secteur</p>
      <p>Enfin, nous avons mis au point des outils performants destinés aux gestionnaires de copropriété et locatifs qui permettent un suivi rigoureux et en temps réel des dossiers.</p>
      <p>Nous organisons également régulièrement des formations en interne pour nos clients, destinées aux gestionnaires locatifs ou copropriété.</p><br />
      </div>
  </div>
  
  <div class="texteN2" id="texte-social">  
      <div id="textescroll2"><p>TEXTE SOCIAL Depuis 1997, le cabinet RODOLPHE LOCTIN assiste ses clients professionnels de l&#8217;immobilier (syndics de copropriété ; administrateurs de biens ; propriétaires fonciers ; locateurs d&#8217;ouvrage&#8230;) sur toutes les thématiques traditionnelles concernant l&#8217;immeuble : </p>
      <p>- Construction ; désordres et sinistres ; expertises judiciaires</p>
      <p>- Rédaction de contrats (bail d&#8217;habitation ; bail commercial&#8230;)</p>
      <p>- Recouvrement de charges de copropriété (mise en demeure ; contentieux devant le juge de proximité, le Tribunal d&#8217;Instance ou le Tribunal de Grande Instance ; prise d&#8217;hypothèque légale ; saisie immobilière&#8230;)</p>
      <p>- Recouvrement locatif et expulsion</p>
      <p>- Assistance aux copropriétés (mission d&#8217;assistance du conseil syndical ; contentieux des assemblées générales ; gestion des gardiens d&#8217;immeuble&#8230;)</p>
      <p>- Mise en oeuvre du plan bâtiment Grenelle pour le compte de sociétés foncières, d'investisseurs ou d'utilisateurs (syndicat de copropriétaires ; propriétaires&#8230;), par une connaissance pointue des réglementations spécifiques à l'immobilier « vert » et à ses modes de financement (bilan énergétique de l&#8217;immeuble ; certificats d'économie d'énergie ; contrats ou garanties de performance énergétique ; réglementations thermiques ; « bail vert » ; optimisation fiscale liée aux investissements ou équipements « verts »)</p>
      <p>- Mise en place d&#8217;une éco-copropriété</p>
      <p>- Obtention de la certification ISO 14001</p>
      <p>- Informations sur les nouvelles normes et réglementations applicables au secteur</p>
      <p>Enfin, nous avons mis au point des outils performants destinés aux gestionnaires de copropriété et locatifs qui permettent un suivi rigoureux et en temps réel des dossiers.</p>
      <p>Nous organisons également régulièrement des formations en interne pour nos clients, destinées aux gestionnaires locatifs ou copropriété.</p><br />
      </div>  
  </div>
  
  <div class="texteN2" id="texte-commercial">  
      <div id="textescroll3"><p>TEXTE COMMECIAL Depuis 1997, le cabinet RODOLPHE LOCTIN assiste ses clients professionnels de l&#8217;immobilier (syndics de copropriété ; administrateurs de biens ; propriétaires fonciers ; locateurs d&#8217;ouvrage&#8230;) sur toutes les thématiques traditionnelles concernant l&#8217;immeuble : </p>
      <p>- Construction ; désordres et sinistres ; expertises judiciaires</p>
      <p>- Rédaction de contrats (bail d&#8217;habitation ; bail commercial&#8230;)</p>
      <p>- Recouvrement de charges de copropriété (mise en demeure ; contentieux devant le juge de proximité, le Tribunal d&#8217;Instance ou le Tribunal de Grande Instance ; prise d&#8217;hypothèque légale ; saisie immobilière&#8230;)</p>
      <p>- Recouvrement locatif et expulsion</p>
      <p>- Assistance aux copropriétés (mission d&#8217;assistance du conseil syndical ; contentieux des assemblées générales ; gestion des gardiens d&#8217;immeuble&#8230;)</p>
      <p>- Mise en oeuvre du plan bâtiment Grenelle pour le compte de sociétés foncières, d'investisseurs ou d'utilisateurs (syndicat de copropriétaires ; propriétaires&#8230;), par une connaissance pointue des réglementations spécifiques à l'immobilier « vert » et à ses modes de financement (bilan énergétique de l&#8217;immeuble ; certificats d'économie d'énergie ; contrats ou garanties de performance énergétique ; réglementations thermiques ; « bail vert » ; optimisation fiscale liée aux investissements ou équipements « verts »)</p>
      <p>- Mise en place d&#8217;une éco-copropriété</p>
      <p>- Obtention de la certification ISO 14001</p>
      <p>- Informations sur les nouvelles normes et réglementations applicables au secteur</p>
      <p>Enfin, nous avons mis au point des outils performants destinés aux gestionnaires de copropriété et locatifs qui permettent un suivi rigoureux et en temps réel des dossiers.</p>
      <p>Nous organisons également régulièrement des formations en interne pour nos clients, destinées aux gestionnaires locatifs ou copropriété.</p><br />
      </div>  
  </div>
mardi 9 novembre 2010 à 00:51:45 | Re : Application d'un code javascript plusieurs fois

jdmcreator

Est-ce qu'une erreur est retournée ? Via la console ?


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !

fr.jsinfo.wikia.com
mardi 9 novembre 2010 à 09:19:31 | Re : Application d'un code javascript plusieurs fois

ngkckwus

Non aucune..!
mardi 9 novembre 2010 à 18:15:48 | Re : Application d'un code javascript plusieurs fois

PetoleTeam

Membre Club
Bonjour,
au vue du code, il y a peu de chance que cela fonctionne et ce pour plusieurs raison.
- dans le code il est fait référence à des objets bien définis qui n'ont rien à voir avec le paramètre passé
appel fonction
Code Javascript :
$("#textescroll1").scrollbar();// concerne l'élément ayant pour ID textescoll1

excécution du code, par exemple
Code Javascript :
function calcul_hauteur_auto() {
  if (params.taille_englobe == "auto") {
    padTop = $('#contenu').css('padding-top');  // POURQUOI contenu ???
    padTop = padTop.substring(0, padTop.length - 2);
    padBot = $('#contenu').css('padding-bottom');
    padBot = padBot.substring(0, padBot.length - 2);
    params.taille_englobe = $(window).height() - 320 - padBot - padTop;
  } else {
    return false
  }

il en est de même pour les divers éléments crées, il auront à chaque fois la même ID, d'où problème de fonctionnement.

Deux choses
- corriger ce code
- en trouver un autre

Quoiqu'il en soit l'auteur du code n'a pas livré une version aboutie, il serait peut être intéressant de voir avec lui...

;O)
mercredi 10 novembre 2010 à 00:57:26 | Re : Application d'un code javascript plusieurs fois

jdmcreator

Pourquoi ne simplement pas appliqué un CSS ?
Code HTML :
<div style="overflow-y:scroll;height:300px;">




JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !

fr.jsinfo.wikia.com


Cette discussion est classée dans : function, code, document, scrollbar, ready


Répondre à ce message

Sujets en rapport avec ce message

Souci avec la fonction $(document).ready(function () { ... } [ par Edoth ] Bonjour, J'essaye de faire un carrousel 3D javascript avec des images sur un site ASP.NET en c# mon carrousel fonctionne parfaitement en local mais Editeur Wysiwig perso [ par VicTeams ] Bonjour à tous, Voila j'ai un problème avec le js, j'ai conçu un éditeur Wysiwyg pour mon projet, mais je bloque sur un truc. Enfaite d'un coté j'ai Variable retour de function [ par bydouille ] Bonjour, Je désire faire et utiliser une function qui me renvoie le contenu d'une ligne de tableau (3 cellules) avec comme id : cell-1, cell-2, cell- L'élément document et le reste... [ par alexflex25 ] Bonjour, En désespoir de cause je viens vous demander de l'aide une n-ème fois. Soit la class javascript suivante : [code=js] var alerting = Class.cr recupérer le code html d'une selection [ par caviar ] Saluté ! j'ai un petit pb tout bête ...j'aimerai récupérer le code html selectionné lorsqu'un utilisateur fait un surlignage sur ma page ...par exempl Function qui ne functionne pas... [ par Xiarea ] Bonjour, Je suis entrain d'essayer de faire ouvrir un popup lors d'un double clic sur une image. La nouvelle page doit connaitre les coordonées de la document.write() depuis 1 function [ par alonsyl ] bonjour,par l'intermediaire d'une de mes "function" de mon j'actualise le contenu d'un  via la commande suivante : document.monForm.monInput.value = Problème menu [ par chabgyver ] Bonjour,Je suis en train de créer une webradio :L'URL temporaire : http://balistiq.free.fr/test2/ruskof.htmDans le menu de gauche, il y a 3 boutons te Max scrollTop [ par jmtoulon ] Bonjour,J'ai créer une page html qui comporte le code suivante : transfère de donnée d'une pop up à la page [ par spiesalex ] Salutvoici le script que j'utilise    Palette de couleur (en contruction )            func


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales