/*
	Título..: xpopup - mr.xkr's JavaScript Carrusel
	Licencia: GPL (http://www.gnu.org/licenses/gpl.txt)
	Autor...: Pablo Rodríguez Rey (mr -en- xkr -punto- es)
	          http://mr.xkr.es/
	Requiere: common.js
	Usa libremente esta librería bajo los términos de la licencia GPL, pero por favor,
	deja la autoría intacta, es lo único que te pido, sólo son unos pocos bytes de carga ;-)
*/

var xcarruseles={};

function xcarrusel(id,imagenes) {
	
	xcarruseles[id]=this;
	
	// siguiente imágen
	this.next_image=function(a) {
		return (this.actual_image+1==this.imagenes.length?0:this.actual_image+1);
	}
	
	// temporizador
	this.transition_timer=function() {
		var base=this;
		base.actual_transition=0;
		setTimeout(function(){ base.next(base); },base.time);
	}
	
	// siguiente
	this.next=function(base) {
		base.transition(base);
	}

	// transición
	this.transition=function(base){
		
		var isie=function() { return (navigator.userAgent.indexOf("MSIE")!=-1); }
		
		var finished=false;
		var io=gid(base.imgid+base.actual_image);
		var id=gid(base.imgid+base.next_image(base.actual_image));
		
		base.actual_transition+=2;
		if (base.actual_transition>=100) {
			base.actual_transition=100;
			finished=true;
		}
		
		io.style.opacity=(1-base.actual_transition/100);
		id.style.opacity=(base.actual_transition/100);
		if (isie()) {
			io.style.filter="alpha(opacity="+(100-base.actual_transition)+");";
			id.style.filter="alpha(opacity="+(base.actual_transition)+");";
		}
		
		if (io.style.display!="block") io.style.display="block";
		if (id.style.display!="block") id.style.display="block";
		if (!finished) setTimeout(function() { base.transition(base); },30);
		else {
			io.style.display="none";
			base.actual_image=base.next_image(base.actual_image);
			base.transition_timer();
		}
		
	};

	// parámetros
	this.imagenes=imagenes;
	this.id=id;
	this.imgid="carrusel_"+id+"_";
	this.image_cache=[];
	this.time=3000;
	this.actual_image=0;
	this.actual_transition=0;
	this.ids={};

	// inicialización
	var h="";
	for (var i in imagenes) {
		h+="<div id='"+this.imgid+i+"'"
			+" style=\""
				+"position:absolute;width:100%;height:100%;background:url('"+imagenes[i].img+"') center center no-repeat;"
				+"display:"+(parseInt(i)?"none":"block")+";"
				+(imagenes[i].onclick || imagenes[i].href?"cursor:pointer;":"")
				+"\""
			+" title='"+(imagenes[i].title?imagenes[i].title:"")+"'"
			+"></div>";
		this.image_cache[i]=new Image(); 
		this.image_cache[i].src=imagenes[i].img; 
	}
	gidset(id,h);
	
	// enlaces
	for (var i in imagenes) {
		if (imagenes[i].onclick)
			gid(this.imgid+i).onclick=imagenes[i].onclick;
		if (imagenes[i].href) {
			var href=imagenes[i].href;
			this.ids[this.imgid+i]=i;
			gid(this.imgid+i).onclick=function(){
				location.href=xcarruseles[id].imagenes[xcarruseles[id].ids[this.id]].href;
			};
		}
	}
	
	// iniciar temporizador
	this.transition_timer();
	
}

