function FeedReader(options) {

	this.xmlhttp = new Ajax();
	this.url = options.url || null;
	this.box = new Box(options.col || 1, options.id || null);
	this.xml = null;
	this.nb = options.param || 3;
	this.type = 'F';
	this.id = options.id || null;

	this.favicon = function(url) {
		domain = url.match( /:\/\/(([a-zA-Z0-9_-]*)\.)?([^\/:]+)/ );
		return 'http://www.'+(domain[3]?domain[3]:'')+'/favicon.ico';
	}

 	this.getFeed = function() {
		this.box.loading();
		var self = this;
		this.xmlhttp.onsuccess = function() {
			self.xml = new Feed(self.xmlhttp.responseXML);
			self.showRSSData();
		}
		this.box.setIcon('/images/icons/feed.gif');
		this.loader = new Image();
		this.loader.onload = function() { self.box.setIcon(self.loader.src); }
		this.loader.src = this.favicon(this.url);
		this.xmlhttp.request("/getXML.php?url=" + this.url.replace(/&/,'%26'), {method: 'GET'});
	}

	this.showRSSData = function () {
		var ul = document.createElement('ul');
		ul.className = 'rss';
		this.box.setTitle('<a href="'+this.xml.link+'">'+this.xml.title+'</a> <span>('+((this.nb<this.xml.items.length)?this.nb:this.xml.items.length)+')</span>');
		for(i = 0; i < this.nb && i < this.xml.items.length; i++) {
			var li = document.createElement('li');
			li.innerHTML = '<a target="_blank" href="'+this.xml.items[i].link+'">'+this.xml.items[i].title+'</a>';
			ul.appendChild(li);
		}
		this.box.setContent(ul);
	}	

	this.getSelect = function(nb) {
		var c='';
		for (var z=1; z<=20; z++) {
			if (z==nb) {
				c+='<option value="'+z+'" selected>'+z+'</option>';
			} else {
				c+='<option value="'+z+'">'+z+'</option>';
			}
		}
		return c;
	}

	this.setConfig = function () {
		var self = this;
		var form = document.createElement("form");
		var content = '<table>'+
					'<tr>'+
					'<td class="opt">Flux :</td>'+
					'<td><input type="text" class="config" value="" style="width:170px"/></td>'+
					'<td><input type="submit" class="config" value="Modifier"/></td>'+
					'</tr><tr>'+
					'<td class="opt">Nombre :</td>'+
					'<td rowspan="2"><select class="config" name="change">'+this.getSelect(self.nb)+'</select></td>'+
					'</tr>'+
				'</table>';
		form.innerHTML = content;

		this.box.setConfig(form);

		var flux = form.firstChild.firstChild.firstChild.childNodes[1].firstChild;
		var nbs = form.firstChild.firstChild.childNodes[1].childNodes[1].firstChild;

		flux.value = this.url;

		form.onsubmit = function () { 
			if(self.url != flux.value) {
				self.url = flux.value;
				self.getFeed();
				self.box.saveParam('url='+self.url);
			}	
			self.box.hideConfig();
			return false;
		};

		nbs.onchange = function() {
			self.nb = nbs.options[nbs.selectedIndex].value;
			self.box.saveParam('param='+self.nb);
			self.showRSSData();
		}
		
	}

	this.onLoad = function() {
		this.getFeed();
		this.setConfig();
		boxObjArray[boxObjArray.length] = this;

		if(!this.id) {
			var self = this;
			this.ajaxid = new Ajax();
			this.ajaxid.onsuccess = function() {
				self.id = self.ajaxid.responseText;
				self.box.id = self.ajaxid.responseText;
			}
			this.ajaxid.request("/save.php?action=new&type=F&url=" + escape(this.url), {method: 'GET'});
		} else {
			this.box.id = this.id;
		}

	}

	this.onLoad();
}

function Feed(_xml) {
	this.root = _xml.documentElement;
	try {
		// Récupération du Title
		this.title = this.root.getElementsByTagName("title").item(0).firstChild.nodeValue;
		// Récupération du Link
		if(this.root.getElementsByTagName("link").item(0).firstChild) {
			// FLUX RSS
			this.link = this.root.getElementsByTagName("link").item(0).firstChild.nodeValue;
			
			var items = this.root.getElementsByTagName("item");
			this.items = new Array();

			for(i = 0; i < items.length; i++) {
				this.items[i] = {}
				this.items[i].title = items[i].getElementsByTagName("title").item(0).firstChild.nodeValue;
				this.items[i].link = items[i].getElementsByTagName("link").item(0).firstChild?items[i].getElementsByTagName("link").item(0).firstChild.nodeValue:'/';
			}
		} else {
			// FLUX ATOM

			this.alllinks = this.root.getElementsByTagName("link");
			for(this.x = 0; this.x < this.alllinks.length; this.x++) if(this.alllinks.item(this.x).getAttribute('rel')=='alternate') break;
			if(this.x < this.alllinks.length) this.link = this.alllinks.item(this.x).getAttribute('href');
			else this.link = this.alllinks.item(0).getAttribute('href');
			var items = this.root.getElementsByTagName("entry");
			this.items = new Array();

			for(i = 0; i < items.length; i++) {
				this.items[i] = {}
				this.items[i].title = items[i].getElementsByTagName("title").item(0).firstChild.nodeValue;
				this.alllinks = items[i].getElementsByTagName("link");
				for(this.x = 0; this.x < this.alllinks.length; this.x++) if(this.alllinks.item(this.x).getAttribute('rel')=='alternate') break;
				if(this.x < this.alllinks.length) this.items[i].link = this.alllinks.item(this.x).getAttribute('href');
				else this.items[i].link = this.alllinks.item(0).getAttribute('href');
				if(!this.items[i].link) this.items[i].link = '/';
			}
		}


	} catch (e) {
		this.title = 'Erreur dans le RSS';
		this.items = new Array();
	}

}