var READ_TIME_PER_CHAR = 50;
var SLIDE_DURATION = 800;
var UPDATE_DELAY = 30000;

window.addEvent('domready', function() {
	/*$$('#enter .enter').each(function(blinking) {
	var fx = new Fx.Tween(blinking, {property: 'opacity', duration: 1500, fps: 12});
	(function() { fx.start(0.6).chain(function() { this.start(1); }, arguments.callee); })();
	});*/
	
	$$('#enter .enter a').each(function(link) {
		link.addEvent('click', function() {
			$$('#enter .enter').tween('left', -283);
			$$('#enter .welcome').tween('left', 0);
			window.setTimeout(function() { window.location = link.getProperty('href'); }, 1000);
			return false;
		});
	});
});

window.addEvent('domready', function() {
	$$('#footer').each(function(footer) {
		var maxHeight = 0;
		var newsContainers = [];
		var newsArchives = footer.getElements('.news');
		newsArchives.each(function(newsArchive, archiveId) {
			// moving news into container
			var newsContainer = new Element('div');
			newsContainer.inject(newsArchive);
			newsArchive.getElements('.layout_home').each(function(news) {
				maxHeight = Math.max(maxHeight, news.getScrollSize().y + news.getStyle('margin-top').toInt() + news.getStyle('margin-bottom').toInt());
				news.inject(newsContainer);
			});
			newsContainers.push(newsContainer);
			
			// declaring slideshow function
			newsContainer._slideshow = function() {
				if (newsContainer._hover || newsContainer.getChildren().length <= 1) {
					newsContainer._slideshowTimeout = window.setTimeout(newsContainer._slideshow, 1000);
				} else {
					if (newsContainer._updateHeight) {
						for (var c = newsContainers.length - 1; c >= 0; c--) {
							newsContainers[c].tween('height', maxHeight);
						}
						newsContainer._updateHeight = false;
					}
					newsContainer.getFirst().get('tween').addEvent('complete', function(news) {
						news.removeClass('unread').addClass('read');
						if (newsContainer._deleteNewsOut) {
							newsContainer._deleteNewsOut.destroy();
							newsContainer._deleteNewsOut = false;
						}
						news.get('tween').removeEvents('complete');
					});
					newsContainer.getFirst().tween('top', -maxHeight).inject(newsContainer);
					newsContainer.getFirst().tween('top', maxHeight, 0);
					newsContainer._slideshowTimeout = window.setTimeout(newsContainer._slideshow, newsContainer.getFirst().get('text').length * READ_TIME_PER_CHAR + SLIDE_DURATION);
				}
			};
		
			// auto-refreshing
			var module = newsArchive.getElement('.module');
			if (module) {
				var moduleId = module.getProperty('id').substring('module'.length);
				if (moduleId) {
					window.setTimeout(function() { // delay first refresh of each archive
						window.setInterval(function() { // refresh at UPDATE_DELAY interval
							new Request.HTML({url: 'ajax.php'}).addEvent('success', function(newsBlock) {
								var first = newsContainer.getFirst();
								var second = first? first.getNext(): false;
								var idsToKeep = [];
								var newsToDelete = [];
								$$(newsBlock).filter('.news')[0].getElements('.layout_home').each(function(news) {
									idsToKeep.push(news.getProperty('id'));
									var existing = newsContainer.getElementById(news.getProperty('id'));
									if (!existing || existing.get('text') != news.get('text')) {
										// inserting news at the right place, deleting old one the right way
										if (existing) {
											existing.setProperty('id', '');
											if (existing == first) { newsContainer._deleteNewsOut = existing; }
											else { newsToDelete.push(existing); }
										}
										if (!first || !second) { news.inject(newsContainer); }
										else { news.inject(second, 'before'); }
										
										// evaluating height
										maxHeight = Math.max(maxHeight, news.getScrollSize().y + news.getStyle('margin-top').toInt() + news.getStyle('margin-bottom').toInt());
										newsContainer._updateHeight = true;

										// setting properties
										news
											.addClass('unread')
											.setStyles({position: 'absolute', top: -maxHeight})
											.set('tween', {duration: SLIDE_DURATION, transition: 'cubic:out'})
											.addEvent('mouseover', function() { newsContainer._hover = true; })
											.addEvent('mouseout', function() { newsContainer._hover = false; });
									}
								});
								// deleting old, replaced or deleted news
								newsContainer.getElements('.layout_home').each(function(news) {
									var id = news.getProperty('id');
									for (var i = idsToKeep.length - 1; i >= 0; i--) {
										if (id == idsToKeep[i]) return;
									}
									if (news == first) { newsContainer._deleteNewsOut = news; }
									else { newsToDelete.push(news); }
								});
								for (var n = newsToDelete.length - 1; n >= 0; n--) {
									newsToDelete[n].destroy();
								}

								// TODO: resets height for every newsContainer!
								// TODO: use dynamic module ID
								// TODO: use dynamic JS?
							}).get({action: 'fmd', id: moduleId, g: 1});
						}, UPDATE_DELAY);
					}, UPDATE_DELAY * archiveId / newsArchives.length);
				}
			}
		});
		newsContainers.each(function(newsContainer) {
			newsContainer
				.setStyles({height: maxHeight, overflow: 'hidden', position: 'relative', width: '100%'})
				.set('tween', {duration: SLIDE_DURATION, transition: 'cubic:out'});
			newsContainer.getChildren().each(function(news, i) {
				news.setStyles({position: 'absolute', top: i == 0? 0: -maxHeight})
					.set('tween', {duration: SLIDE_DURATION, transition: 'cubic:out'})
					.addEvent('mouseover', function() { newsContainer._hover = true; })
					.addEvent('mouseout', function() { newsContainer._hover = false; });
			});
			newsContainer._slideshowTimeout = window.setTimeout(newsContainer._slideshow, newsContainer.getFirst().get('text').length  * READ_TIME_PER_CHAR);
		});
	
		window.setTimeout(function() { footer.setStyle('display', 'block'); }, 100);
	});
});