/**
 * átállítja az aktiv tab-ot a lapozón
 * 
 * @author sarkiroka
 */
function setActiveTab(tabToActivate,idx) {
	var sectionHref='#section'+(tabToActivate+1);
	var ak = $$('#mpContainer div.controls a');
	for ( var i = 0, i_max = ak.length; i < i_max; i++) {
		var a = ak[i];
		a.removeClassName('active');
		if(idx){
			if (i == tabToActivate){
				a.addClassName('active');
			}
		}else{
			if (sectionHref == a.getAttribute('href')){
				a.addClassName('active');
			}
		}
	}
}
GliderExtra = Class.create();
Object.extend(Object.extend(GliderExtra.prototype, Abstract.prototype),{
					initialize : function(wrapper, options) {
						this.scrolling = false;
						this.wrapper = $(wrapper);
						this.scroller = this.wrapper.down('div.scroller');
						this.sections = this.wrapper
								.getElementsBySelector('div.section');
						this.options = Object.extend({
							duration : 1.0,
							frequency : 3
						}, options || {});

						this.sections.each(function(section, index) {
							section._index = index;
						});

						this.events = {
							click : this.click.bind(this)
						};

						this.addObservers();
						if (this.options.initialSection)
							this.moveTo(this.options.initialSection,
									this.scroller, {
										duration : this.options.duration
									}); // initialSection should be the id of
										// the section you want to show up on
										// load
						if (this.options.autoGlide)
							this.start();
					},

					addObservers : function() {
						var controls = this.wrapper
								.getElementsBySelector('div.controls a');
						controls.invoke('observe', 'click', this.events.click);
					},

					click : function(event) {
						this.stop();
						var element = Event.findElement(event, 'a');
						if (this.scrolling)
							this.scrolling.cancel();
						setActiveTab(parseInt(element.href.split("#")[1]
								.substring(7)) - 1,false);
						this.moveTo(element.href.split("#")[1], this.scroller,
								{
									duration : this.options.duration
								});
						Event.stop(event);
					},

					moveTo : function(element, container, options) {
						this.current = $(element);

						Position.prepare();
						var containerOffset = Position
								.cumulativeOffset(container), elementOffset = Position
								.cumulativeOffset($(element));

						this.scrolling = new Effect.SmoothScroll(container, {
							duration : options.duration,
							x : (elementOffset[0] - containerOffset[0]),
							y : (elementOffset[1] - containerOffset[1])
						});
						return false;
					},

					next : function() {
						if (this.current) {
							var currentIndex = this.current._index;
							var nextIndex = (this.sections.length - 1 == currentIndex) ? 0
									: currentIndex + 1;
						} else
							var nextIndex = 1;
						setActiveTab(nextIndex,true);
						this.moveTo(this.sections[nextIndex], this.scroller, {
							duration : this.options.duration
						});
					},

					previous : function() {
						if (this.current) {
							var currentIndex = this.current._index;
							var prevIndex = (currentIndex == 0) ? this.sections.length - 1
									: currentIndex - 1;
						} else
							var prevIndex = this.sections.length - 1;
						setActiveTab(prevIndex,true);
						this.moveTo(this.sections[prevIndex], this.scroller, {
							duration : this.options.duration
						});
					},

					stop : function() {
						clearTimeout(this.timer);
					},

					start : function() {
						this.periodicallyUpdate();
					},

					periodicallyUpdate : function() {
						if (this.timer != null) {
							clearTimeout(this.timer);
							this.next();
						}
						this.timer = setTimeout(this.periodicallyUpdate
								.bind(this), this.options.frequency * 1000);
					}

				});

Effect.SmoothScroll = Class.create();
Object.extend(Object.extend(Effect.SmoothScroll.prototype, Effect.Base.prototype),
		{
			initialize : function(element) {
				this.element = $(element);
				var options = Object.extend({
					x : 0,
					y : 0,
					mode : 'absolute'
				}, arguments[1] || {});
				this.start(options);
			},
			setup : function() {
				if (this.options.continuous && !this.element._ext) {
					this.element.cleanWhitespace();
					this.element._ext = true;
					this.element.appendChild(this.element.firstChild);
				}

				this.originalLeft = this.element.scrollLeft;
				this.originalTop = this.element.scrollTop;

				if (this.options.mode == 'absolute') {
					this.options.x -= this.originalLeft;
					this.options.y -= this.originalTop;
				}
				var nextElement = Math.round(this.originalLeft / 765) + 1;
				if (nextElement == 4)
					nextElement = 0;
				nextElement++;
				var currentElement = nextElement - 1;
				if (currentElement < 1)
					currentElement = 4;
				for ( var i = 1; i < 5; i++) {
					if (i == currentElement)
						continue;
					var el=document.getElementById('section' + i);
					if(!el)continue;
					var fadeOut = new Spry.Effect.Fade('section' + i, {
						duration : 1,
						to : 20
					});
					fadeOut.start();
				}
				setTimeout(function() {
					for ( var i = 1; i < 5; i++) {
						var el=document.getElementById('section' + i);
						if(!el)continue;
						var fadeIn = new Spry.Effect.Fade('section' + i, {
							duration : 500,
							to : 100
						});
						fadeIn.start();
					}
				}, Math.round(this.options.duration * 1000-100));
			},
			update : function(position) {
				this.element.scrollLeft = this.options.x * position
						+ this.originalLeft;
				this.element.scrollTop = this.options.y * position
						+ this.originalTop;
			}
		});
