var RSSTicker = Class.create({
	initialize: function(elt, feedUrl) {
		this.container = elt;
		this.items = [];

		new Ajax.Request(feedUrl, {method: 'get', onSuccess: this.loadRSS.bindAsEventListener(this)});
	},
	loadRSS: function(transport) {
		var items = transport.responseXML.getElementsByTagName('item');
		if(items.length > 0) {
			this.HTMLList = '';
			for (var i=0; i < items.length; i++){
				var item = items[i];
				var title = item.getElementsByTagName('title')[0].firstChild.nodeValue;
				var desc = item.getElementsByTagName('description')[0].firstChild.nodeValue;
				var img = /img [^\>]*src\=\"[^\"]+\"/.exec(desc);
				if(img != null)
					img = '<' + img + ' class="icon" />';
				else
					img = '';
				this.HTMLList += '<div class="tab">' + img + '<h2 class="title">' + title + '</h2>' + desc + '</div>';
			};

			this.idx = 0;
			this.container.update(this.HTMLList);
			var news = $('news');
			if(news) {
				news.update(this.HTMLList);
				new Fabtabs(news);
			}
			
			this.items = this.container.immediateDescendants();
			if(this.items.length > 1) {
				for (var i=1; i < this.items.length; i++) {
					this.items[i].hide()
				};
				setInterval(this.nextTitle.bind(this), 7000);
			}
		}
	},
	nextTitle: function() {
		this.items[this.idx].toggle();
		this.idx++;
		this.idx %= this.items.length;
		this.items[this.idx].toggle();
	}
});

var Diaporama = Class.create({
	initialize: function(elt) {
		if(elt != null) {
			this.idx = 0;
			this.imgs = $A(elt.getElementsByTagName('img'));
			if(this.imgs.length > 0) {
				var dia = new Element('div', {'class': 'dia'}).update('<img class="diaImg"/><div align="center"><img src="../img/previous.gif" class="diaPrev"/><img src="../img/next.gif" class="diaNext"/><br/><span class="diaLib"> </span></div>')
				var root = elt.up();
				root.insert({top: dia});
				this.imgElt = root.down('img.diaImg');
				this.libElt = root.down('span.diaLib');
				this.prevElt = root.down('img.diaPrev');
				this.nextElt = root.down('img.diaNext');
				this.update();
				if(this.imgs.length == 1) {
					this.prevElt.hide();
					this.nextElt.hide();
				} else
					this.startSlideShow();
				if(elt.hasClassName('gallery'))
					Event.observe(elt, 'click', this.chgImg.bindAsEventListener(this), false);
				if(this.prevElt != null) {
					Event.observe(this.prevElt, 'click', this.stopSlideShow.bind(this), false);
					Event.observe(this.prevElt, 'click', this.prevImg.bind(this), false);
				}
				if(this.nextElt != null) {
					Event.observe(this.nextElt, 'click', this.stopSlideShow.bind(this), false);
					Event.observe(this.nextElt, 'click', this.nextImg.bind(this), false);
				}
			}
		}
	},
	chgImg: function(e) {
		var elt = Event.element(e);
		if(elt.tagName == "IMG") {
			this.stopSlideShow();
			this.update(elt);
		}
	},
	update: function(img) {
		if(img == null)
			img = this.imgs[this.idx];
			
		if(this.imgElt != null)
			this.imgElt.src = img.src;
		
		if(this.libElt != null)
			this.libElt.update(img.alt);
	},
	prevImg: function() {
		if(this.idx == 0)
			this.idx = this.imgs.length;
		this.idx--;
		this.update();
	},
	nextImg: function() {
		this.idx++;
		this.idx %= this.imgs.length;
		this.update();
	},
	startSlideShow: function() {
		this.slideId = setInterval(this.nextImg.bind(this), 3000);
	},
	stopSlideShow: function() {
		clearInterval(this.slideId);
	}
});

var Fabtabs = Class.create({
	initialize: function(element) {
		if(element != null) {
			this.element = $(element);
			this.tabs = this.element.getElementsByClassName('tab');
			if(this.tabs.length > 0) {
				this.selectedTab = 0;
				this.menuItems = [];
				this.submenu = $$('div.submenu > ul').first();

				for (var i=0; i < this.tabs.length; i++) {
					var tab = this.tabs[i];
					tab.hide();
					var menuItem = new Element('li', {'tab': i}).update(tab.down('.title').firstChild.nodeValue);
					this.menuItems[i] = menuItem;
					if(this.submenu != null)
						this.submenu.appendChild(menuItem);
					Event.observe(this.menuItems[i], 'click', this.selectTab.bindAsEventListener(this), false);
				}
				this.show(this.selectedTab);
			}
		}
	},
	selectTab:	function(ev) {
		var menuItem = Event.element(ev).readAttribute('tab');
		Event.stop(ev);
		if(this.selectedTab != menuItem)
			this.show(menuItem);
	},
	show: function(menuItem) {
		this.menuItems[this.selectedTab].removeClassName('activeTab');
		this.tabs[this.selectedTab].hide();
		this.selectedTab = menuItem;
		this.menuItems[this.selectedTab].addClassName('activeTab');
		this.tabs[this.selectedTab].show();
	}
});

Event.observe(window, 'load', function() {
	new Diaporama($$('.diaporama').first());
	new Fabtabs($$('div.fabtabs').first());
	var ticker = new RSSTicker($('lastminute'), 'rss.xml');
});