var rtlCarouselViaSource = new Class({
	Implements: Options,
	options: {
		type: 'horizontal',
		main_container: '',
		pager_container_class: 'content-container',
		num_content_page: 3,
		num_curr_page: 1,
		num_curr_filter: 1,
		path_images: 'style/images/',
		filters: false,
		video_per_page: 6,
		video_width: 150,
		video_margin: 30,
		objAdd: null,
		on_anim: false,
		login_status: 0
	},

	initialize: function(options) {
		this.setOptions(options);
		if(this.options.login_status == 1) this.options.objAdd = new rtlAddVideo();
		
		switch(this.options.type) {
			case 'horizontal' : this.options.content_cont_width = (this.options.video_per_page * this.options.video_width) + this.options.video_margin; break;
			case 'vertical' : this.options.content_cont_width = this.options.video_width + this.options.video_margin; break;
			default : this.options.content_cont_width = (this.options.video_per_page * this.options.video_width) + this.options.video_margin; break;
		}
		this._getContentInfo();
		this._addEvents();
	},	

	_getContentInfo: function() {
		var elements = $(this.options.main_container).getElements('.video-add');

		elements.each(function(item,index){
			if(this.options.login_status == 1) {
				var tmp = item.id.split('-');
				this.options.objAdd.setVideoState(tmp[0],tmp[1],item.getChildren());
				item.addEvent('click',function(){ this.options.objAdd.addVideo2Fav(tmp[0],1,item.getChildren()); return false; }.bind(this));
			}
			else item.addEvent('click',function(){ alert(g_language['msg-login-required']); });
		}.bind(this));
	},

	_addEvents: function() {
		$(this.options.main_container).getElement('.series-carousel-left').addEvent('click',function(){ this._prev(); }.bind(this));
		$(this.options.main_container).getElement('.series-carousel-right').addEvent('click',function(){ this._next(); }.bind(this));

		if($(this.options.main_container).getElement('.series-stage .dot-1')) $(this.options.main_container).getElement('.series-stage .dot-1').addEvent('click',function(){ this._setPage(1); }.bind(this));
		if($(this.options.main_container).getElement('.series-stage .dot-2')) $(this.options.main_container).getElement('.series-stage .dot-2').addEvent('click',function(){ this._setPage(2); }.bind(this));
		if($(this.options.main_container).getElement('.series-stage .dot-3')) $(this.options.main_container).getElement('.series-stage .dot-3').addEvent('click',function(){ this._setPage(3); }.bind(this));

		if(this.options.filters) {
			$(this.options.main_container).getElement('ul li.li-f1').addEvent('click',function(){ this._setFilter(1); }.bind(this));
			$(this.options.main_container).getElement('ul li.li-f2').addEvent('click',function(){ this._setFilter(2); }.bind(this));
			$(this.options.main_container).getElement('ul li.li-f3').addEvent('click',function(){ this._setFilter(3); }.bind(this));
		}
	},

	_showContent: function(o,p) {
		var d1 = $(this.options.main_container).getElements('.'+this.options.pager_container_class);
		var leftFrom = parseInt(d1.getStyle('left'));
		var that = this;

		if(p == 0) {
			switch(o) {
				case 0 : var left = this.options.content_cont_width; break;
				case 1 : var left = -this.options.content_cont_width; break;
			}

			var leftTo = leftFrom+left;
		}
		else var leftTo = -this.options.content_cont_width * (p-1);

		var fx = new Fx.Elements(d1,{wait:false
		,duration: 1000
		,transition: Fx.Transitions.Sine.easeInOut
		,onComplete: function(){ that.options.on_anim = false; }
		});

		var n = {};
		d1.each(function(item,index){
			n[index] = {left:[leftFrom,leftTo]};
		});
		fx.start(n);
	},

	_setPage: function(p) {
		if(this.options.num_curr_page == p || this.options.on_anim) return;
		this.options.on_anim = true;

		$$('#'+this.options.main_container+' .dot-'+(this.options.num_curr_page)).set('src',this.options.path_images+'series_dot_circle.png');
		
		var pp = this.options.num_curr_page;
		this.options.num_curr_page = p;
		this._showContent(0,p);
		$$('#'+this.options.main_container+' .dot-'+(this.options.num_curr_page)).set('src',this.options.path_images+'series_dot_full.png');
	},

	_next: function() {
		if(this.options.num_curr_page == this.options.num_content_page || this.options.on_anim) return;
		this.options.on_anim = true;

		this.options.num_curr_page++;

		$(this.options.main_container).getElement('.dot-'+(this.options.num_curr_page-1)).set('src',this.options.path_images+'series_dot_circle.png');
		$(this.options.main_container).getElement('.dot-'+(this.options.num_curr_page)).set('src',this.options.path_images+'series_dot_full.png');

		this._showContent(1,0);
	},

	_prev: function() {
		if(this.options.num_curr_page == 1 || this.options.on_anim) return;
		this.options.on_anim = true;

		this.options.num_curr_page--;
		$(this.options.main_container).getElement('.dot-'+(this.options.num_curr_page+1)).set('src',this.options.path_images+'series_dot_circle.png');
		$(this.options.main_container).getElement('.dot-'+(this.options.num_curr_page)).set('src',this.options.path_images+'series_dot_full.png');

		this._showContent(0,0);
	},

	_setFilter: function(idx) {
		if(!this.options.filters) return;
		
		var prev_idx = this.options.num_curr_filter;
		this.options.num_curr_filter = idx;

		$each($$('#'+this.options.main_container+' ul li'),function(item,index){
			if(item.hasClass('li-f'+idx)) item.addClass('active');
			else item.removeClass('active');		
		});

		var d1 = $(this.options.main_container).getElements('.'+this.options.pager_container_class);

		d1.each(function(item,index){
			if(prev_idx == idx) return;

			if(item.id == 'c'+prev_idx) item.style.display = 'none';
			else if(item.id == 'c'+idx) item.style.display = 'block';
			else  item.style.display = 'none';
		});
		//this._setPage(1);
	}

});


var rtlCarousel = new Class({
	Implements: Options,
	options: {
		title: "",
		content: '{}',
		type: 'horizontal',
		type_css: {'horizontal':{'cont' : 12, 'v1' : 'video-img-cont'}
							,'vertical':{'cont' : 6, 'v1' : 'video-img-cont-wide'}},
		filters: false,
		autoLoad: true,
		num_content_page: 3,
		num_curr_page: 1,
		num_curr_filter: 1,
		html: new Array(),
		main_container: '',
		cont_content: null,
		path_images: 'style/images/',
		htmlElements: [],
		objAdd: null
	},

	initialize: function(options) {
		this.setOptions(options);
		this.options.objAdd = new rtlAddVideo();
		this.options.content = JSON.decode(this.options.content);
		if(this.options.autoLoad) this._setBoxHTML();
	},

	_setBoxHTML: function() {
		var d1 = new Element('div', {'class':'series-'+this.options.type_css[this.options.type]['cont']+'-container'});
		var d2 = new Element('div', {'class':'series-header'});
		var d3 = new Element('div', {'class':'series-carousel-nav'});
		var d4 = new Element('div', {'class':'series-stage'});
		var d5 = new Element('div');
		this.options.cont_content = d5;

		var btn_prev = new Element('a', 
		 {'href' : 'javascript:void(0)'
		 ,'class' : 'series-carousel-left'
		 ,'html' : '<span></span>Bal'
		 ,'events' : { 'click' : function(){ this._prev(); }.bind(this) }
		 });

		var btn_next = new Element('a',
		 {'href' : 'javascript:void(0)'
		 ,'class' : 'series-carousel-right'
		 ,'html' : '<span></span>Jobb'
		 ,'events' : { 'click' : function(){ this._next(); }.bind(this) }
		 });

		var dt1 = new Element('a',{'href':'javascript:void(0)'});
		var dt2 = new Element('a',{'href':'javascript:void(0)'});
		var dt3 = new Element('a',{'href':'javascript:void(0)'});

		var dti1 = new Element('img',{'src':this.options.path_images+'series_dot_full.png','events':{'click':function(){ this._setPage(1); }.bind(this)}});
		var dti2 = new Element('img',{'src':this.options.path_images+'series_dot_circle.png','events':{'click':function(){ this._setPage(2); }.bind(this)}});
		var dti3 = new Element('img',{'src':this.options.path_images+'series_dot_circle.png','events':{'click':function(){ this._setPage(3); }.bind(this)}});

		this.options.htmlElements = { 'p1' : dti1, 'p2' : dti2, 'p3' : dti3 };

		var u1 = new Element('ul');
		if(this.options.filters) {
			var li1 = new Element('li',{'class':'active'});
			var li2 = new Element('li');
			var li3 = new Element('li');

			var lia1 = new Element('a',{'href':'javascript:void(0)','html':g_language['box-filter-1'],'events':{'click':function(){ this._setFilter(1); }.bind(this)}});
			var lia2 = new Element('a',{'href':'javascript:void(0)','html':g_language['box-filter-2'],'events':{'click':function(){ this._setFilter(2); }.bind(this)}});
			var lia3 = new Element('a',{'href':'javascript:void(0)','html':g_language['box-filter-3'],'events':{'click':function(){ this._setFilter(3); }.bind(this)}});
			
			li1.grab(lia1);
			li2.grab(lia2);
			li3.grab(lia3);

			u1.adopt(li1,li2,li3);

			var obj = { 'f1' : li1, 'f2' : li2, 'f3' : li3};

			this.options.htmlElements = $merge(this.options.htmlElements,obj);
		}

		var sp1 = new Element('span',{'html':this.options.title,'class':'series-title'});

		d3.adopt([btn_prev,btn_next]);

		dt1.grab(dti1);
		dt2.grab(dti2);
		dt3.grab(dti3);

		d4.adopt([dt1,dt2,dt3]);

		d2.adopt([d3,d4,u1,sp1]);
		
		this._setContentsHTML(d5);

		d1.adopt([d2,d5]);

		$(this.options.main_container).empty();
		$(this.options.main_container).grab(d1);
	},

	_setContentsHTML: function(cont) {
		if(this.options.content.length == 0) return null;

		cont.empty();

		if(this.options.content[this.options.num_curr_filter][this.options.num_curr_page]) {
			this.options.content[this.options.num_curr_filter][this.options.num_curr_page].each(function(item,index){
				
				var a1 = new Element('a',{'href':item.url,'class':'video-img'});
				var img1 = new Element('img',{'src':item.image_url,'alt':item.title,'title':item.title});
				var img2 = new Element('img',{'src':this.options.path_images+'add_video_icon.png','alt':g_language['txt-add-fav'],'title':g_language['txt-add-fav']});
				var a2 = new Element('a',{'href':'javascript:void(0)','class':'video-add','events':{'click':function(){ this.options.objAdd.addVideo2Fav(item.id,1,img2); }.bind(this)}});
				var h1 = new Element('h2');
				var a3 = new Element('a',{'href':item.url,'html':item.title});
				var p1 = new Element('p',{'html':item.desc});

				if(index == 0 || this.options.type == 'vertical') var d1 = new Element('div',{'class':this.options.type_css[this.options.type]['v1']+' cont-first'});
				//else if(((index + 1) > this.options.content[this.options.num_curr_filter][this.options.num_curr_page].length) && this.options.type == 'vertical') var d1 = new Element('div',{'class':this.options.type_css[this.options.type]['v1']+' wide-last cont-first'});
				else var d1 = new Element('div',{'class':this.options.type_css[this.options.type]['v1']});

				a1.grab(img1);
				a2.grab(img2);
				h1.grab(a3);

				if(this.options.type == 'vertical') {
					var d3 = new Element('div',{'class':'img-height-wide'});
					var d4 = new Element('div', {'class':'clear'});
					d1.adopt(a1,a2,d3,h1,p1);
					cont.adopt(d1,d4);
				}
				else {
					d1.adopt(a1,a2,h1,p1);		
					cont.grab(d1);
				}	

				this.options.objAdd.setVideoState(item.id,item.isFav,img2);
			}.bind(this));
		}

		var d2 = new Element('div', {'class':'clear'});
		cont.grab(d2);
	},

	_setPage: function(p) {
		if(this.options.num_curr_page == p) return;

		this.options.htmlElements['p'+this.options.num_curr_page].set('src',this.options.path_images+'series_dot_circle.png');
		
		this.options.num_curr_page = p;
		this._setContentsHTML(this.options.cont_content);
		this.options.htmlElements['p'+this.options.num_curr_page].set('src',this.options.path_images+'series_dot_full.png');
	},

	_next: function() {
		if(this.options.num_curr_page == this.options.num_content_page) return;

		this.options.num_curr_page++;
		this._setContentsHTML(this.options.cont_content);
		this.options.htmlElements['p'+(this.options.num_curr_page-1)].set('src',this.options.path_images+'series_dot_circle.png');
		this.options.htmlElements['p'+this.options.num_curr_page].set('src',this.options.path_images+'series_dot_full.png');
	},

	_prev: function() {
		if(this.options.num_curr_page == 1) return;

		this.options.num_curr_page--;
		this._setContentsHTML(this.options.cont_content);
		this.options.htmlElements['p'+(this.options.num_curr_page+1)].set('src',this.options.path_images+'series_dot_circle.png');
		this.options.htmlElements['p'+this.options.num_curr_page].set('src',this.options.path_images+'series_dot_full.png');
	},

	_setFilter: function(idx) {
		if(!this.options.filters) return;

		this.options.num_curr_filter = idx;

		$each(this.options.htmlElements,function(item,index){
			if(index == 'f'+idx) item.set('class','active');
			else item.set('class','');		
		});

		this._setContentsHTML(this.options.cont_content);
	}

});