var WebtvUI;

WebtvUI = function ()
{
	this.init = function ()
	{
		try{
			this.categories_scroll();
			this.subcategories_scroll();
			try{$('channels').select('li.category').each(function(e){Event.observe(e, 'click', function(){ usersettings.subcat_idx = 0; webtv.storage.update(); });});}catch(e){}
		}catch(e){Wlog('webtv.ui:: could not init categories scroll');}
		Wlog('webtv.ui:: init');
	};
	
	this.categories_scroll = function ()
	{
		var cats = [], i, cat_idx;
		cat_idx = usersettings.hasOwnProperty('cat_idx') ? usersettings.cat_idx:0;
		cat_idx = cat_idx < 0 ? 0:cat_idx;
		try{cats = $('channels').select('li.category');}catch(e){}
		//Event.stopObserving('channelUp', 'click');
		//Event.stopObserving('channelDown', 'click');
		if(cats.length > settings.cat_max){
			if(cat_idx+settings.cat_max >= cats.length) cat_idx = cats.length-settings.cat_max;
			for(i=cats.length;i--;){
				if(i < cat_idx || i >= cat_idx+settings.cat_max) $(cats[i]).hide();
				else $(cats[i]).show();
			}
			$('channelUp').show();
			$('channelDown').show();
			Event.observe('channelUp', 'click', function(){ usersettings.cat_idx-=settings.cat_max; this.categories_scroll(); }.bind(this));
			Event.observe('channelDown', 'click', function(){ usersettings.cat_idx+=settings.cat_max; this.categories_scroll(); }.bind(this));
		} else {
			cat_idx = 0;
			$('channelUp').hide();
			$('channelDown').hide();
		}
		usersettings.cat_idx = cat_idx;
		webtv.storage.update();
		
		this.post_categories_scroll();
	};
	this.post_categories_scroll = function () {/*plugin ready*/};
	
	this.subcategories_scroll = function ()
	{
		var subcats = [], i, subcat_idx;
		subcat_idx = usersettings.hasOwnProperty('subcat_idx') ? usersettings.subcat_idx:0;
		subcat_idx = subcat_idx < 0 ? 0:subcat_idx;
		try{subcats = $('channelTabs').select('li.subcategory');}catch(e){}
		Event.stopObserving('channelTabs-scroll-left', 'click');
		Event.stopObserving('channelTabs-scroll-right', 'click');
		if(subcats.length > settings.subcat_max){
			if(subcat_idx+settings.subcat_max >= subcats.length) subcat_idx = subcats.length-settings.subcat_max;
			for(i=subcats.length;i--;){
				if(i < subcat_idx || i >= subcat_idx+settings.subcat_max) $(subcats[i]).hide();
				else $(subcats[i]).show();
			}
			$('channelTabs-scroll-left').show();
			$('channelTabs-scroll-right').show();
			Event.observe('channelTabs-scroll-left', 'click', function(){ usersettings.subcat_idx-=settings.subcat_max; this.subcategories_scroll(); }.bind(this));
			Event.observe('channelTabs-scroll-right', 'click', function(){ usersettings.subcat_idx+=settings.subcat_max; this.subcategories_scroll(); }.bind(this));
		} else {
			subcat_idx = 0;
			$('channelTabs-scroll-left').hide();
			$('channelTabs-scroll-right').hide();
		}
		usersettings.subcat_idx = subcat_idx;
		webtv.storage.update();
		
		this.post_subcategories_scroll();
	};
	this.post_subcategories_scroll = function () {/*plugin ready*/};
};

try{
	Webtv.prototype.ui = new WebtvUI();
	Webtv_reg.push('ui');
	Wlog('webtv.ui:: bound');
}
catch(e){
	Wlog('webtv.ui:: could not bind myself');
}

