// JavaScript Document
var Slider = Class.create({
	initialize: function(elementId){
		this._id = elementId;
		this._element = $(this._id);
		this._active = 0;
		this._target = 0;
		this._moveLength = 0;
		this._duration = 1;
		this._firstElement = null;
		this._setElements();
	},
	
	getId: function(){
		return this._id;
	},
	
	_setElements: function(){
		this._elements = this._element.childElements();
		if(this._elements.length > 0){
			this._firstElement = this._elements[0];
			this._moveLength = this._firstElement.getWidth();
			elementHeight = this._firstElement.getHeight();

			for(i=0; i<this._elements.length; i++) {
				this._elements[i].style.left = (i * this._moveLength) + "px";
				this._elements[i].style.top = -(i * elementHeight) + "px";
			}
		}
	},
	
	slide: function(direction){
		if(this._elements.length < 2) {
		return;
		}
		else if(direction == 'left') this._slideLeft();
		else if(direction == 'right') this._slideRight(); 
	},
	
	_slideLeft: function(){
		if(this._firstElement == null) return;
		if(this._firstElement.positionedOffset()['left'] != this._target) return;
		if(this._active == 0) return;
		this._target = this._firstElement.positionedOffset()['left'] + this._moveLength;	
		for(i=0; i<this._elements.length; i++)
		{
			this._response = new Effect.Move(this._elements[i], {x: this._moveLength, y: 0, duration:1});
		}
		this._active--;
	},
	
	_slideRight: function(){
		if(this._firstElement == null) return;
		if(this._firstElement.positionedOffset()['left'] != this._target) return;
		if(this._active == this._elements.length - 1) return;
		this._target = this._firstElement.positionedOffset()['left'] - this._moveLength;	
		for(i=0; i<this._elements.length; i++)
		{
			this._response = new Effect.Move(this._elements[i], {x: -this._moveLength, y: 0, duration:1});
		}
		this._active++;
	}
});

var Carousels = Class.create({
	initialize: function(){
		this._sliders = new Array();
	},
	
	addSlider: function(elementId){
		this._sliders[this._sliders.length] = new Slider(elementId);
	},
	
	previous: function(elementId){
		if(this._sliders.length == 0) return;
		for(i=0; i<this._sliders.length; i++) {
			if(this._sliders[i].getId() == elementId) {
				this._sliders[i].slide('left');
				return;
			}
		}
	},
	
	next: function(elementId){
		if(this._sliders.length == 0) return;
		for(i=0; i<this._sliders.length; i++) {
			if(this._sliders[i].getId() == elementId) {
				this._sliders[i].slide('right');
				return;
			}
		}
	}
});

var VertNavDecorator = Class.create({
		
	initialize: function(container, nVisEl) {
		this._containerElement = $(container);
		this._nrElements = nVisEl;
		this._decorate();
	},
	
	_decorate: function() {
		var elements = this._containerElement.childElements();
		for (i=0; i<elements.length; i++)
		{
			var ul = elements[i].childElements()[1];
			if(ul)
			{
				var childs = ul.childElements();
				if(elements.length <= this._nrElements) return;
				if(childs.length > this._nrElements)
				{
					childs[this._nrElements-1].addClassName('last');
					for(j=this._nrElements; j<childs.length; j++)
						childs[j].setStyle({
						  display: 'none'
						});
					var seeMore = document.createElement('div');
					//alert(ul.identify());
					seeMore.setAttribute('class','more-categories');
					seeMore.innerHTML = '<a onclick="toggleVertMenu(\''+ul.identify()+'\')">Vezi toate categoriile</a>';
					ul.appendChild(seeMore);
				}
			}
		}
	},
	
	toggle: function(elId) {
		var ul = $(elId);
		
		var childs = ul.childElements();
			if(childs.length>this._nrElements)
			{
				for(j=this._nrElements;j<childs.length;j++)
					if(childs[j].match('div') && !childs[j].hasClassName('active')) childs[j].addClassName('active');
					else if(childs[j].match('div') && childs[j].hasClassName('active')) childs[j].removeClassName('active');
					else if(childs[j].getStyle('display') == 'none') {
						childs[this._nrElements-1].removeClassName('last');
						childs[j].setStyle({
						  display: 'block'
						});
					}
					else {
						childs[this._nrElements-1].addClassName('last');
						childs[j].setStyle({
						  display: 'none'
						});
					}
			}
	}
});

var carousels = new Carousels();
