function RSSBox1(url, idElement) {
  //URL du flux RSS 
  this.url = url;
  // Elément affichant le résultat 
		this.nom_element=idElement; 
  this.element = $(idElement);
  // Requête pour le flux RSS 
  this.requete = null;
  // URL de la page sur le serveur jouant le rôle   de proxy 
  this.proxyUrl = "open-url.php?url=";	
		
		this.prem1=null;
	 this.prem2=null;		
	
	
	// définit la requête
	this.load = function() {
  // Annuler la requete si elle est en cours
  if (this.requete) {
   this.requete.abort();
  };
  this.requete = new XMLHttpRequest();
  var rssUrl = this.proxyUrl + encodeURIComponent(this.url);
  this.requete.open("GET", rssUrl, true);
  var current = this;
		
  this.requete.onreadystatechange = function() {
    if (current.requete.readyState == 4) {
      if (current.requete.status == 200) {
        current.display();
      }
						else {	
		     current.element.innerHTML = "erreur adresse (1)" ;
		    };
    };
	 }
	
  this.element.innerHTML = "En chargement ...";
  this.requete.send("");	
 }
	
	
 //Afficher les items du  flux RSS 
 this.display= function() {	
	 if (this.requete.responseXML != null && this.requete.responseXML.documentElement!=null){
		  // test pour FF et pour IE (pour IE	requete.responseXML est un object donc n'est jamais null)		
				//alert(this.requete.responseXML.documentElement);	
		  this.element.innerHTML = "";
				var doc=this.requete.responseXML.documentElement;	
				
				// test flux rss 1.0 (item lu dans doc) ou rss 2.0 (item lu dans channel)		ou atom ?
			 	
				if (lire_elements(doc,"item").length>0){
				 var items = lire_elements(doc, "item"); 
				}
				else {
				 if(lire_elements(doc, "channel").length>0){
				  var channel = lire_elements(doc, "channel")[0];
				  var items = lire_elements(channel, "item");
					} else {	// atom ?
					 return;
					};
				};	
				
				
				
		  var total = items.length;	
				//alert(total);
				
				// Creer les items
		  for (var i=0 ; i < total ; i++) {	
				 // créer un div par item		contenant un div image et un div lien et descriptif	
					// chaque div_item a un nom spécifique qui sera utilisé dans la fonction affiche
			  var div_item=document.createElement("div");	
			  div_item.className="item";	
					var nom_item=this.nom_element+"_item"+(i+1);
					div_item.setAttribute("id", nom_item);
			
			   //Créer div_lien qui contiendra lien et descriptif	et qui flottera à droite dans div_item	si il existe une image
						var div_lien=document.createElement("div");	
				  div_lien.className="item1";
							
		     // Creer un lien qui sera inclus dans div_lien	(si le lien existe !)		
							if (lire_elements(items[i], "link").length>0){
			     var link = document.createElement("a");
			     var lien = lire_elements(items[i], "link")[0];
			     link.setAttribute("href", texte(lien));
								link.setAttribute("target", "_blank");
			     var titre = lire_elements(items[i], "title")[0];
			     link.innerHTML = texte(titre);
								div_lien.appendChild(link);	
							} else {	// créer un paragraphe ordinaire
							 var par1 = document.createElement("p");
								var titre = lire_elements(items[i], "title")[0];
								par1.innerHTML = texte(titre);
								div_lien.appendChild(par1);	
							}
							;
						
							// ajouter un saut de ligne	
				  	var retour_ligne1 = document.createElement("br");
					  div_lien.appendChild(retour_ligne1);	
						
						 // Dans item cherche le descriptif. Ce descriptif sera inclus dans div_lien	
						 var descriptif = document.createElement("span");
						 descriptif.innerHTML = texte_description(items[i]);
						 div_lien.appendChild(descriptif);	
														
							// Dans item, cherche adr_image	d'abord dans enclosure si non dans description
							var adr_image=image_enclosure(items[i]);
							if (adr_image==""){	
								adr_image=image_description(items[i])
							}; 
						
						//Div_lien flotte à droite s'il y a une image.
						if(adr_image!=""){
						   div_lien.className="item2";
						};
						
						div_item.appendChild(div_lien);		
				
						// créer une image  si elle existe	dans un div	lui même placé dans div_item
					 if( adr_image!=""){
							 var div_image=document.createElement("div");	
								div_image.className="image";
								var image = document.createElement("img");	
								image.className="img1";
								
														// chargement de l'image	: on crée une copie de l'image pour définir ses dimensions		
														function charge_image(image,adr_image){
															var copie_image = new Image();						
															copie_image.onload=function(){
															 //alert(copie_image.width);
															 var coef=80/copie_image.width;	
															 var largeur=Math.round(copie_image.width*coef);		
															 var hauteur=Math.round(copie_image.height*coef);	
																image.src=adr_image;
																image.width=largeur;
															 image.height=hauteur;
																image.setAttribute("title",largeur+" x "+hauteur);		
																return false;
														 };	
														copie_image.src=adr_image;	
													}	
							
							charge_image(image,adr_image);
						 // ajout image et div_image
							div_image.appendChild(image);		
							div_item.appendChild(div_image);	
					 };
																
						// ajouter un saut de ligne	dans div_item qui "vide" les flottants		(FF)
						var retour_ligne2 = document.createElement("div");
						retour_ligne2.className="separation";
						div_item.appendChild(retour_ligne2);	
							
			
			 this.element.appendChild(div_item);	
			}; //Fin de créer les items
			
			//afficher les fléches précédent et suivant
				var avant = document.createElement("a");
				avant.setAttribute("href", "#");
				var nom_avant=this.nom_element+"_avant";
				avant.setAttribute("id",nom_avant);
				var current = this;
				avant.onclick=function(){current.affiche(current.prem1,total);};
				avant.innerHTML = "<img src='prev.gif' border='0' width='16' height='16' alt='précédent' align='left'>";	
				this.element.appendChild(avant);	
				
				var apres = document.createElement("a");
				apres.setAttribute("href", "#");
				var nom_apres=this.nom_element+"_apres";
				apres.setAttribute("id", nom_apres);
				apres.onclick=function(){current.affiche(current.prem2,total);};
				apres.innerHTML = "<img src='next.gif' border='0' width='16' height='16' alt='suivant' align='right'>";
				this.element.appendChild(apres);	
				
				// ajouter un saut de ligne	dans this.elememt qui "vide" les flottants (flèches gauche et droite)		(FF)
				var retour_ligne3 = document.createElement("br");
				retour_ligne3.className="separation";
				this.element.appendChild(retour_ligne3);	
								
			// afficher le premier bloc de 5items
			this.affiche(1,total);	
		}
		else {	
			 this.element.innerHTML = "erreur adresse (2)";
		};
	}		
			
	// afficher par bloc de 3 items	
	this.affiche=function (prem,total){	
	 //alert(prem);	
		var max=3;// nombre maxi d'items affichés
	 var der;
	 if (prem+max-1<=total)  {der=prem+max-1;} else {der=total;};
		for(var i=1; i<=total; i++){
		 var nom_item=this.nom_element+"_item"+i;
		 var item=$(nom_item);	
		 if (i>=prem && i<=der) {item.style.display="block";} else {item.style.display="none";};
		};
		
		var nom_avant=this.nom_element+"_avant";
		if (prem>1){
		 $(nom_avant).style.display="";
			this.prem1=prem-max;
		}
		else {	
		 $(nom_avant).style.display="none";
		};
		
		var nom_apres=this.nom_element+"_apres";
		if (prem+max<=total){
		 $(nom_apres).style.display="";
			this.prem2=prem+max;
		}
		else {
		 $(nom_apres).style.display="none";
		};	
				
	}// fin fonction display	
		
	// lance la requête		et affiche le résultat 
	this.load();
}
		


