/*

Prototype event handling stuff...

Event.observe(window, 'load', function() {
	Event.observe('nosto', 'click', function(event) {
		alert('clicked!');
	});
});

*/

var MyEffect;
var MyStringHandler;
var MyAjax;
var MyNosto;
var MySlider;
var myLightbox;
var MyNewsList;
var MyJulkaisuTopTenList;
var MyStorage;
var mouseY;
var mouseX;
var MyTimer;
var frames_per_sec = 35;
var ajax_flag;
var selected;

document.observe('dom:loaded', function() {
	
	if($('backgroundBanner'))
	{
		$('backgroundBanner').observe('click', function(event) {
			if(event.target.id == 'backgroundBanner') {
				pageTracker._trackPageview($('hidden_url').title);
				snoobi.trackPageView($('hidden_url').title);
				Event.stop(event);
				window.open($('hidden_url').href, '_blank');
			}
		});
	}
	
	
	$$('#nosto li').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyNosto.clickedNosto(this);
	});
	
	$$('#news_left ul li a').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		var el = this;
		
		this.up('ul').select('li').each(function(e) { e.className = ''; });
		this.up('li').className = 'selected';
		return MyAjax.runAjax(el); // for some reason 'this' is preferred instead of 'element' in the examples at least
	});
	$$('#news_left ul li a').invoke('observe', 'mouseover', function(event) { 
		Event.stop(event);
		var el = this;
		MyStorage.setValue(el.className);
		if(el.className != '')
			el.className += '_over';
		else
			el.className = 'over';
	});
	$$('#news_left ul li a').invoke('observe', 'mouseout', function(event) { 
		Event.stop(event);
		var val = MyStorage.getValue();
		this.className = val;
	});
	
	$$('#news_prev').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyNewsList.prev('news_list_inner');
	});
	
	$$('#news_next').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyNewsList.next('news_list_inner');
	});
	
	$$('#gameranking_header').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyJulkaisuTopTenList.show('top_ten');
	});
	$$('#gameranking_header').invoke('observe', 'mouseover', function(event) { 
		Event.stop(event);
		this.setOpacity(0.99);
	});
	$$('#gameranking_header').invoke('observe', 'mouseout', function(event) { 
		Event.stop(event);
		if(MyJulkaisuTopTenList.position != 'top_ten')
			this.setOpacity(0.5);
	});
	
	$$('#tulevat_julkaisut_header').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyJulkaisuTopTenList.show('julkaisut');
	});
	$$('#tulevat_julkaisut_header').invoke('observe', 'mouseover', function(event) { 
		Event.stop(event);
		this.setOpacity(0.99);
	});
	$$('#tulevat_julkaisut_header').invoke('observe', 'mouseout', function(event) { 
		Event.stop(event);
		if(MyJulkaisuTopTenList.position != 'julkaisut')
			this.setOpacity(0.5);
	});
	
	$$('#uusimmat_artikkelit_header').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		MyJulkaisuTopTenList.show('jutut');
	});
	$$('#uusimmat_artikkelit_header').invoke('observe', 'mouseover', function(event) { 
		Event.stop(event);
		this.setOpacity(0.99);
	});
	$$('#uusimmat_artikkelit_header').invoke('observe', 'mouseout', function(event) { 
		Event.stop(event);
		if(MyJulkaisuTopTenList.position != 'jutut')
			this.setOpacity(0.5);
	});
	
	$$('.dynamic').invoke('observe', 'mouseover', function(event) {
		Event.stop(event);
		el = Event.element(event);
		$$('.dynamic').each(function(e) { e.down('ul').hide(); } );
		if(this.down('ul'))
			this.down('ul').show();
	});
	
	if($('upper_container')) {
		$('upper_container').observe('mouseover', function(event) {
			Event.stop(event);
			$$('.dynamic').each(function(e) { e.down('ul').hide(); } );
			
		});
	}
	
	if($('header')) {
		$('header').observe('mouseover', function(event) {
			Event.stop(event);
			$$('.dynamic').each(function(e) { e.down('ul').hide(); } );
		});
	}
	
	$$('.search_input').invoke('observe', 'click', function(event) { 
		Event.stop(event);
		if(this.value == 'Etsi...')
			this.value = '';
	});
	
	$$('.tooltip').invoke('observe', 'mouseover', function(event) { 
		Event.stop(event);
		if(MyEffect)
			MyEffect.cancel();
		$('tooltip').hide();
		var _this = this;
		MyTimer = setTimeout(function() {
			var id_s = MyStringHandler.extractId(_this.href);
			var article_type = MyStringHandler.extractArticleType(_this.href);
			var site = MyStringHandler.extractSite(_this.href);
			var pars = 'id=' + id_s + '&site=' + site + '&article_type=' + article_type;
			var url = '/ajax_loaders/tooltip_loader.php';
			// alert(pars);
			ajax_flag = true;
			var protoAjax = new Ajax.Request(
			url,
			{
				method: 'get',
				parameters: pars,
				onComplete: function(response)
				{
					el = $('tooltip');
					el.innerHTML = response.responseText;
					
					if(MyEffect)
						MyEffect.cancel();
					if(ajax_flag = true)
						MyEffect = new Effect.Appear(el, { afterFinish: function(e) { ajax_flag = false; }, fps: frames_per_sec, duration: 0.2, queue: { scope: 'tooltip', position: 'end' }, to: 0.85} );
				}
			});
		}, 500);
	});
	$$('.tooltip').invoke('observe', 'mouseout', function(e) {
		if(MyEffect)
			MyEffect.cancel();
		Event.stop(e);
		ajax_flag = false;
		if(MyTimer)
			clearTimeout(MyTimer);
		el = $('tooltip');
		
		
		$('tooltip').hide();
		// MyEffect = new Effect.Fade(el, { fps: frames_per_sec, duration: 0.2, queue: { scope: 'tooltip', position: 'end' }, to: 0 } );
	});
	$$('.tooltip').invoke('observe', 'click', function(e) { 
		el = $('tooltip');
		el.hide();
	});
	
	$$('.platform_container li').invoke('observe', 'mouseover',
		function(e) {
			Event.stop(e);
			$$('.platform_container li').each(function(e) { el = e.down('img'); if(e.className != 'selected') el.src = el.src.replace('active','idle'); });
			el = this.down('img');
			el.src = el.src.replace('idle','active');
		}
	);
	
	$$('.platform_container li').invoke('observe', 'mouseout',
		function(e) {
			Event.stop(e);
			// $$('.platform_container li').each(function(e) { el = e.down('img'); if(e.className != 'selected') el.src = el.src.replace('active','idle'); });
			el = this.down('img');
			if(this.className != 'selected')
				el.src = el.src.replace('active','idle');
		}
	);
	
	MyNosto = new Nosto();
	MyStringHandler = new StringHandler();
	MyAjax = new AjaxHandler();
	MySlider = new ImageSlider();
	// myLightbox = new Lightbox();
	MyNewsList = new NewsList();
	MyJulkaisuTopTenList = new JulkaisuTopTenList('jutut');
	MyStorage = new Storage();
	
	if($('pelaaja')) {
		feed = new RssFeed();
		feed.getFeed('http://pelaajalehti.com/feed/', $('pelaaja'));
	}
	/*
	if($('psnfeed')) {
		psnFeed = new RssFeed();
		psnFeed.getFeed('http://pelaajalehti.com/feed?cat=53', $('psnfeed'));
	}
	*/
	Event.observe(document, 'mousemove', function(event) {
		mouseY = Event.pointerY(event);
		mouseX = Event.pointerX(event);
		if($('tooltip')) {
			$('tooltip').style.top = mouseY - 30 + 'px';
			$('tooltip').style.left = mouseX + 30 + 'px';
		}
	});
});
