// gCarsl
// BETA caroussel jscript by Ganesha
//

// constructor:
//
// @param 	gCarslContainer:string 				Identificador del elemento html que contiene los items
// @param 	gCarslClassName:string 				Clase CSS que identifica los items
// @param	gCarslItemCSSClassName:string		Clase CSS que se aplicará (si existe) a la capa padre de las pestañas
//
// @method	switchItem(item:number)				Activa el item con el índice especificado (0...)
// @method  nextItem()							Activa el siguiente item
// @method  premItem()							Activa el item anterior
//
// @attrib	items:array							Referencias a los items de contenido
// @attrib	currentItem:number					Índice del item activo
//

function gCarsl (gCarslContainer, gCarslClassName, gCarslItemCSSClassName) {
	var self = this;
	this.isPlaying = false;
	this.items = new Array ();
	this.nextItem = function () {
		var target = this.currentItem == this.items.length - 1 ? 0 : this.currentItem + 1;
		this.switchItem (target);
	}
	this.prevItem = function () {
		var target = this.currentItem == 0 ? this.items.length - 1 : this.currentItem - 1;
		this.switchItem (target);
	}
	this.switchItem = function (item) {
		if (isNaN(item)) {
			for (var a in this.items) {
				if (this.items[a] == item) var itemIndex = a;
			}
		} else {
			var itemIndex = item;
		}
		if (itemIndex != this.currentItem && !this.isPlaying) {
			if (isNaN(this.currentItem)) {
				for (var a in this.items) {
					this.items[a].style.opacity = 0;
					this.items[a].style.display = 'none';
				}
				this.items[itemIndex].style.opacity = 1;
				this.items[itemIndex].style.display = 'block';
				this.currentItem = itemIndex;
			} else {
				transition (itemIndex,self);
			}
		}
		this.items[itemIndex].blur();
	}
	for (var a in document.getElementById(gCarslContainer).getElementsByTagName('div')) {
		if (!isNaN(a) && document.getElementById(gCarslContainer).getElementsByTagName('div')[a].className == gCarslClassName) {
			this.items.push(document.getElementById(gCarslContainer).getElementsByTagName('div')[a]);
			this.items[a].style.position = 'absolute';
			this.items[a].style.left = '0';
			this.items[a].style.top = '0';
		}
	}
	this.switchItem(0);
}

function transition (newItem,items) {
	items.isPlaying = true;
	items.items[newItem].style.display = 'block';
	if (items.items[newItem].style.opacity >= 1) {
		items.items[newItem].style.opacity = 1;
		items.items[items.currentItem].style.opacity = 0;
		items.items[items.currentItem].style.display = 'none';
		items.currentItem = newItem;
		items.isPlaying = false;
	} else {
		items.items[newItem].style.opacity = Number(items.items[newItem].style.opacity) + 1;
		items.items[items.currentItem].style.opacity = Number(items.items[items.currentItem].style.opacity) - 1;
		setTimeout (function () {transition(newItem,items)},10);
	}
}