var VideoBlock = new Class({
	Implements: [Options],

	options: {
		'callback': "/modules/tv2region/scripts/fetchVideos.php",
		'container': null,
		'navigator': null,
		'current_page': 1,
		'total_pages': null,
		'next': null,
		'prev': null,
		'blockid': null
	},

	container: null,

	initialize: function(options) {
		this.setOptions(options);
		this.container = $(this.options.container);

		if($(this.options.next) != null) {
			$(this.options.next).addEvent("click", function(e) {
				this.goToPage(this.options.current_page + 1);
				return false;
			}.bind(this));
		}

		if($(this.options.prev) != null) {
			$(this.options.prev).addEvent("click", function(e) {
				this.goToPage(this.options.current_page - 1);
			}.bind(this));
		}
	},

	goToPage: function(page_num) {
		var params = new Hash();
		params.set("page_num", page_num);
		params.set("blockid", this.options.container);

		new Request.JSON({
			url: this.options.callback,
			onComplete: function(jsonObj) {
				this.container.empty();

				var videolist = new Element("table", {});
				var videolist_table_body = new Element("tbody", {});
				var row = null;
				jsonObj.each(function(item, key) {
					var td = new Element("td", {});
					var div_v_thumb = new Element("div", {'class': 'video_thumb'});
					var thumb_img = new Element("img", {'src' : item.image_url});
					var thumb = new Element("a", {'html' : '', 'href' : '/video/'+item.xfile_id});
					thumb.adopt(thumb_img);
					var div_v_title = new Element("div", {'class': 'video_title'});
					var a_xfile = new Element("a", {'html': item.title, 'href' : '/video/'+item.xfile_id});
					div_v_thumb.adopt(thumb);
					div_v_title.adopt(a_xfile);
					td.adopt(div_v_thumb);
					td.adopt(div_v_title);
					if(key % 3 == 0) {
						row = new Element("tr", {});
						row.adopt(td);
						videolist_table_body.adopt(row);
					}
					row.adopt(td);
				}.bind(this));
				videolist.adopt(videolist_table_body);
				this.container.adopt(videolist);
			}.bind(this)
		}).post(params);
		this.options.current_page = page_num;
		var navigator = new VideoListNavigation({
			'navigator': this.options.navigator,
			'current_page': this.options.current_page,
			'total_pages': this.options.total_pages
		});
		var cookie = Cookie.write("tv2fyn_"+this.options.container, this.options.current_page, {duration: false});
		navigator.refresh(this.options.prev, this.options.next);
	}

});

var VideoListNavigation = new Class({
	Implements: [Options],

	options: {
		'navigator': null,
		'current_page': 1,
		'total_pages': 1
		},

	initialize: function(options) {
		this.setOptions(options);
	},

	refresh: function(prev, next) {
		var elm = $(this.options.navigator);

		if(elm.getElements(':.active_page')) {
			elm.getElements(':.active_page').setProperty("class", "page_select");
		}
		if(elm.getElements('span:[html='+this.options.current_page+']')) {
			elm.getElements('span:[html='+this.options.current_page+']').setProperty("class", "active_page");
		}
		if(this.options.current_page > 1) {
			$(prev).setStyle("display", "");
		} else {
			$(prev).setStyle("display", "none");
		}
		if(this.options.current_page < this.options.total_pages) {
			$(next).setStyle("display", "");
		} else {
			$(next).setStyle("display", "none");
		}
	},

	selectPage: function(page_num) {
		console.log(page_num);
	}
});
