﻿var Ticker = new Class({
	Implements: Options,
	options : {
			json: '',
			speed: 1500,
			delay: 5000,
			check: 30000,
			direction: 'vertical',
			onComplete: Class.empty,
			onStart: Class.empty
	},
	initialize: function(el,options){
		this.setOptions(options);
		this.el = document.id(el);
		this.request(0,'init');
	},
	pause: function() {
	    $clear(mytimer);
	    mytimer = null;
	},
	resume: function() {
	    if (mytimer == null) {
	    this.next();
	    }
	},
	next: function(init) {
		if(typeof(init)=='undefined')this.current++;
		if (this.current >= this.options.count){
			this.request();
		}else{
			if(this.items[this.current]){
				var pos = this.items[this.current];
				var post = new Element('li',{
					html: pos.post_content
				});
				post.inject(this.el,'top').hide();
				post.reveal();
				if(this.el.getElements('li').length > this.options.count){
					this.el.getElements('li')[this.el.getElements('li').length-1].destroy();
				}
			}
			mytimer = this.next.bind(this).delay(this.options.delay+this.options.speed);
		}
	},
	request: function(count,init){
		var self = this;
		if(typeof(count)!=='undefined'){
			self.requestCount = count;
		}else{
			self.requestCount = 0;	
		}
		new Request({
			url: self.options.json, 
			method: 'get',
			link: 'cancel',
			onSuccess: function(response) {
				var response = JSON.decode(response,true);
				if(response == null){
					self.requestCount++;
					if(self.requestCount < 5) {
						self.request(self.requestCount);
					}else{
						mytimer = self.request.bind(self).delay(self.options.check);
					}
				}else if(response.length !== 0){
					self.requestCount = 0;
					self.items = response;
					self.current = 0;
					if(typeof(init)=='string'){
						var title = new Element('h2',{
							html: self.items[0].headline
						});
						title.inject(self.el,'before');	
					}
					document.id('NewsTicker').reveal();
					self.next(1);
				}else{
					self.requestCount = 0;
					self.el.empty();
					document.id('NewsTicker').dissolve();
					mytimer = self.request.bind(self).delay(self.options.check);
				}
			},
			onFailure: function() {},
			onComplete: function() {}
		}).send();
		
	}
});

var mytimer = null;

window.addEvent('domready', function() {
									 
   	var hor = new Ticker('TickerVertical', {json: '/sport/rugby/sixnations/json/tracker_top5.js', speed : 50, delay : 10000, direction : 'vertical', count: 3 });
   
    document.id('stop_scroll').addEvent('click', function() {
		document.id('play_scroll_cont').style.display='block';
		document.id('stop_scroll_cont').style.display='none';
		hor.pause();
	});
	
    document.id('play_scroll').addEvent('click', function() {
		document.id('stop_scroll_cont').style.display='block';
		document.id('play_scroll_cont').style.display='none';
		hor.resume();
	});
	
});


