﻿
function ObjetoListaInteractiva(){
	this.list = new Array();
	this.elementosVisibles = 3;
	this.posicion=0;
	this.modoOn='';
	this.modoOff='';
	this.slice=true;

	this.anadir=anadir;
	this.setSlice=setSlice;
	this.getSlice=getSlice;
	this.setModoOn=setModoOn;
	this.getModoOn=getModoOn;
	this.setModoOff=setModoOff;
	this.getModoOff=getModoOff;
	this.mostrarAnterior=mostrarAnterior;
	this.mostrarSiguiente=mostrarSiguiente;
	this.borrarTodos=borrarTodos;
	this.setElementosVisibles=setElementosVisibles;
	this.getElementosVisibles=getElementosVisibles;
	this.mostrarPaginaAnterior=mostrarPaginaAnterior;
	this.mostrarPaginaSiguiente=mostrarPaginaSiguiente;
	this.ocultarTodos=ocultarTodos;
	this.init=init;	
	this.hacerInvisible=hacerInvisible;
	this.hacerVisible=hacerVisible;
	this.getPosicion=getPosicion;
	this.pasas=pasas;	
	this.getIdentificador=getIdentificador;
	this.mostrarAnteriorWithSlide=mostrarAnteriorWithSlide;
	this.mostrarSiguienteWithSlide=mostrarSiguienteWithSlide;
	this.doSliceToLeft=doSliceToLeft;
	this.doSliceToRight=doSliceToRight;
	this.hacerInvisibleWithSlide=hacerInvisibleWithSlide;
	this.hacerVisibleWithSlide=hacerVisibleWithSlide;
	this.isLastPosition=isLastPosition;
	this.getTotalElements=getTotalElements;
}

//Devuelve el objeto por ID

	function getObject(id) {
		if( window.mmIsOpera ) return(document.getElementById(id));
		if (document.all) return(document.all[id]);
		if (document.getElementById) return(document.getElementById(id));
		return(false);
	}

//devuelve la posición en la que se encuentra el objeto
//Esta función se utiliza para mostrar el número de foto que se está mostrando en un album
function getPosicion(){
	//sumamos uno a la posición, porque empieza en 0.
	return this.posicion+1;
}

//devuelve el número total de items
function getTotalElements(){
	return this.list.length;
}

//devuelve el número total de items
function isLastPosition(){
	return this.getPosicion() == this.getTotalElements();
}	
	
//devuelve el id del objeto en función de la posición que ocupa
function getIdentificador(posicion){
	//restamos 1 a la posicion, porque empieza en 0 y pediremos del 1 al n
	//actualizamos la posicion que estamos mostramos
	this.posicion=posicion-1;
	return this.list[posicion-1];
}


function anadir(id){
	this.list.push(id);
}

	
function setSlice(val){
	this.slice=val;
}

function getSlice(){
	return this.slice;
}

function setModoOn(clase){
	this.modoOn=clase;
}

function getModoOn(){
	return this.modoOn;
}

function setModoOff(clase){
	return this.modoOff=clase;
}

function getModoOff(){
	return this.modoOff;
}


function ocultarTodos(){
		for (var i = 0; i < this.list.length; i++) {
			this.hacerInvisible(this.list[i]);
		}
}



function mostrarPaginaAnterior(){
	for (var i = 0; i < this.getElementosVisibles(); i++) {
		this.mostrarAnterior();
	}
}

function mostrarPaginaSiguiente(){
	for (var i = 0; i < this.getElementosVisibles(); i++) {
		this.mostrarSiguiente();
	}
}

function mostrarAnterior(){
	if (this.list.length==1)	{
		return;
	}
	if (this.list[this.posicion-1]!=null){
		this.hacerVisible(this.list[this.posicion-1]);
		this.hacerInvisible(this.list[this.posicion+(this.getElementosVisibles()-1)]);
		this.posicion=this.posicion-1;
	} else{
		//Si el salto es de uno, mostramos el ultimo 
		if (this.getElementosVisibles()==1){
			this.hacerVisible(this.list[this.list.length-1]);
			this.hacerInvisible(this.list[this.posicion]);
			this.posicion=this.list.length-1;
		}
	}
			
}


function mostrarAnteriorWithSlide(){
	if (this.list.length==1)	{
		return;
	}
	if (this.list[this.posicion-1]!=null){
		this.hacerVisibleWithSlide(this.list[this.posicion-1]);
		//this.hacerInvisible(this.list[this.posicion+(this.getElementosVisibles()-1)]);
		this.posicion=this.posicion-1;
	} else{
		//Si el salto es de uno, mostramos el ultimo 
		if (this.getElementosVisibles()==1){
			this.hacerVisible(this.list[this.list.length-1]);
			this.hacerInvisible(this.list[this.posicion]);
			this.posicion=this.list.length-1;
		}
	}
			
}

function mostrarSiguiente(){
	if (this.list.length==1)	{
		return;
	}
	if (this.list[this.posicion+this.getElementosVisibles()]!=null){
		this.hacerVisible(this.list[this.posicion+this.getElementosVisibles()]);
		this.hacerInvisible(this.list[this.posicion]);
		this.posicion=this.posicion+1;
	} else{
		//Si el salto es de uno, empezamos de nuevo
		if (this.getElementosVisibles()==1){
			this.hacerVisible(this.list[0]);
			this.hacerInvisible(this.list[this.posicion]);
			this.posicion=0;
		}
	}
}

function mostrarSiguienteWithSlide(){
	if (this.list.length==1)	{
		return;
	}
	if (this.list[this.posicion+this.getElementosVisibles()]!=null){
		this.hacerVisible(this.list[this.posicion+this.getElementosVisibles()]);
		this.hacerInvisibleWithSlide(this.list[this.posicion]);
		this.posicion=this.posicion+1;
	} else{
		//Si el salto es de uno, empezamos de nuevo
		if (this.getElementosVisibles()==1){
			this.hacerVisible(this.list[0]);
			this.hacerInvisible(this.list[this.posicion]);
			this.posicion=0;
		}
	}
}

function pasas(direccion, url){

	if (direccion=="1"){
		if (this.slice)
			this.mostrarSiguienteWithSlide();
		else
			this.mostrarSiguiente();
	}else {
		if (this.slice)
			this.mostrarAnteriorWithSlide();
		else
			this.mostrarAnterior();
	}
}


function borrarTodos(){
	for (var i = 0; i <= this.list.length; i++) {
		this.list.pop();
	}
}


function setElementosVisibles(numero){
	this.elementosVisibles=numero;
}

function getElementosVisibles(){
	return this.elementosVisibles;
}


function init(){
	//hacemos visible el numero de elementos visibles configurados
	for (var i = 0; i < this.getElementosVisibles(); i++) {
		this.hacerVisible(this.list[i]);
	}

}

function hacerInvisible(id){
	document.getElementById(id).className=this.getModoOff();
}


function hacerInvisibleWithSlide(id){
		this.doSliceToLeft(id);
}


var l = 0;
var t;

function doSliceToLeft(id){
	if(t) clearTimeout(t);
	if (document.getElementById(id)) {
		l = l - 5;
		if (l>-275) {
			document.getElementById(id).style.marginLeft=l+'px';
			t = setInterval("this.doSliceToLeft('"+id+"')",10);
		} else {
			document.getElementById(id).className='no';
			document.getElementById(id).style.marginLeft='0px';
			l = 0;
		}
	} 
}

function hacerVisible(id){
		capa = document.getElementById(id);
		if (capa) {
			capa.className=this.getModoOn();
		}
}


var r = -275;
var t2;

function doSliceToRight(id){
	if(t2) clearTimeout(t2);
	if (document.getElementById(id)) {
		document.getElementById(id).className='post';
		r = r + 5;
		if (r<0) {
			document.getElementById(id).style.marginLeft=r+'px';
			t2 = setInterval("this.doSliceToRight('"+id+"')",10);
		} else {
			r = -275;
			document.getElementById(id).style.marginLeft='0px';
		}
	} 
}

function hacerVisibleWithSlide(id){
		capa = document.getElementById(id);
		if (capa) {
			doSliceToRight(id);
		}
}

