// ====================================================
// script: Gerard Ferrandez - Ge-1-doot - JANUARY 2005
// http://www.dhteumeuleu.com/
// crossbrowser DOM
// ====================================================
/* chico a grande
document.onselectstart = new Function("return false");
O    = new Array();
box  = 0;
img  = 0;
txt  = 0;
tit  = 0;
W    = 0;
H    = 0;
nI   = 0;
sel  = 0;
si   = 0;
ZOOM = .5;
rImg = 0;
//////////////////
speed = .06; // animation speed
delay = .5; // 1 = no delay
//////////////////

function dText(){
	txt.style.textAlign = tit.style.textAlign = (sel<nI/2)?"left":"right";
	txt.innerHTML = O[sel].tx;
	tit.innerHTML = O[sel].ti;
}

function CObj(n, s, x, tx, ti){
	this.n    = n;
	this.dim  = s;
	this.tx   = tx;
	this.ti   = ti;
	this.is   = img[n];
	this.vz   = 0;
	this.sx   = 0;
	this.x0   = x;
	this.x1   = 0;
	this.zo   = 0;
	this.over = function() {
		with(this){
			if(n!=sel){
				O[sel].dim = 100;
				O[n].dim = ZOOM * 100;
				sel = n;
				l = 0;
				for(k=0; k<nI; k++){
					O[k].x0 = l;
					l += O[k].dim;
				}
				txt.innerHTML = tit.innerHTML = "";
				setTimeout("dText()", 32);
			}
		}
	}
	this.anim = function () {
		with(this){
			vz  = speed*(vz+(x1-sx)*delay);
			x1 -= vz;
			sx  = (n==0)?0:O[n-1].x0+O[n-1].dim;
			zo -= (zo-dim)*speed;
			l   = (x1*si)+6*(n+1);
			w   = zo*si;
			is.style.left   = Math.round(l)+'px';
			is.style.top    = Math.round((H-w*rImg)*.5)+'px';
			is.style.width  = Math.round(w)+'px';
			is.style.height = Math.round(w*rImg)+'px';
			if(sel == n){
				if(sel<nI*.5) {
					tit.style.left = txt.style.left = Math.round(l+w+6)+'px';
				} else {
					tit.style.left = txt.style.left = Math.round(l-(nx*.25)-6)+'px';
				}
				txt.style.top = Math.round(-(w*rImg)*.25)+'px';
				tit.style.top = Math.round((w*rImg)*.33)+'px';
			}
		}
	}
}

function run(){
	for(j in O)O[j].anim();
	setTimeout("run()", 16);
}

function doResize(){
	tit.style.width = Math.round(nx*.5)+'px';
	txt.style.width = Math.round(nx*.25)+'px';
	//tit.style.fontSize =  (nx/30)+'px';
	//txt.style.fontSize = (nx/70)+'px';
	tit.style.fontSize = '12px';
	txt.style.fontSize = '18px';
	with(box.style){
		width  = Math.round(W)+'px';
		height = Math.round(H)+'px';
		left   = Math.round(nx/2-W/2)+'px';
		top    = Math.round(ny/2-H/2)+'px';
	}
}

function resize(){
	nx = scr.offsetWidth;
	ny = scr.offsetHeight;
	W  =  nx*90/100;
	si = (W-((nI+1)*6))/((ZOOM*100)+((nI-1)*100));
	H  = (100*si*rImg)+14;
	doResize();
}
onresize = resize;

onload = function(){
	scr = document.getElementById("screen");
	box = document.getElementById("box");
	tit = document.getElementById("tit");
	txt = document.getElementById("txt");
	img = box.getElementsByTagName("img");
	Lnk = document.getElementById("lnk").getElementsByTagName("a");
	nI  = img.length;
	ZOOM = nI;
	rImg = img[0].height/img[0].width;
	resize();
	s = ZOOM * 100;
	x = 0;
	tit.innerHTML = img[0].title;
	txt.innerHTML = img[0].alt;
	for(i=0; i<nI; i++) {
		var t = img[i].alt;
		if(Lnk[i].href!="") t+='<br><a href="'+Lnk[i].href+'">'+Lnk[i].innerHTML+'</a>';
		O[i] = new CObj(i, s, x, t, img[i].title);
		img[i].alt = "";
		img[i].title = "";
		img[i].onmousedown = new Function("return false;");
		img[i].onmouseover = new Function('O['+i+'].over();');
		if(Lnk[i].href!=""){
			// ==== hyperlink ==== *
			img[i].onclick = new Function('window.open("'+Lnk[i].href+'","_blank");');
		}
		x += s;
		s = 100;
	}
	box.style.visibility = "visible";
	run();
}


*/




//************************************* desliz

var slider = function() {
	// ==== private methods ==== *
	function getElementsByClass(object, tag, className) {
		var o = object.getElementsByTagName(tag);
		for ( var i = 0, n = o.length, ret = []; i < n; i++) {
			if (o[i].className == className) ret.push(o[i]);
		}
		if (ret.length == 1) ret = ret[0];
		return ret;
	}
	function setOpacity (obj,o) {
		if (obj.filters) obj.filters.alpha.opacity = Math.round(o);
		else obj.style.opacity = o / 100;
	}
	// ==== Slider Constructor ==== *
	function Slider(oCont, speed, iW, iH, oP) {
		this.slides = [];
		this.over   = false;
		this.S      = this.S0 = speed;
		this.iW     = iW;
		this.iH     = iH;
		this.oP     = oP;
		this.oc     = document.getElementById(oCont);
		this.frm    = getElementsByClass(this.oc, 'div', 'slide');
		this.NF     = this.frm.length;
		this.resize();
		for (var i = 0; i < this.NF; i++) {
			this.slides[i] = new Slide(this, i);
		}
		this.oc.parent = this;
		this.view      = this.slides[0];
		this.Z         = this.mx;
		// ==== on mouse out event ==== *
		this.oc.onmouseout = function () {
			this.parent.mouseout();
			return false;
		}
	}
	Slider.prototype = {
		// ==== animation loop ==== *
		run : function () {
			this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;
			this.view.calc();
			var i = this.NF;
			while (i--) this.slides[i].move();
		},
		// ==== resize  ==== *
		resize : function () {
			this.wh = this.oc.clientWidth;
			this.ht = this.oc.clientHeight;
			this.wr = this.wh * this.iW;
			this.r  = this.ht / this.wr;
			this.mx = this.wh / this.NF;
			this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);
		},
		// ==== rest  ==== *
		mouseout : function () {
			this.over      = false;
			setOpacity(this.view.img, this.oP);
		}
	}
	// ==== Slide Constructor ==== *
	Slide = function (parent, N) {
		this.parent = parent;
		this.N      = N;
		this.x0     = this.x1 = N * parent.mx;
		this.v      = 0;
		this.loaded = false;
		this.cpt    = 0;
		this.start  = new Date();
		this.obj    = parent.frm[N];
		this.txt    = getElementsByClass(this.obj, 'div', 'text');
		this.img    = getElementsByClass(this.obj, 'img', 'diapo');
		this.bkg    = document.createElement('div');
		this.bkg.className = 'backgroundText';
		this.obj.insertBefore(this.bkg, this.txt);
		if (N == 0) this.obj.style.borderLeft = 'none';
		this.obj.style.left = Math.floor(this.x0) + 'px';
		setOpacity(this.img, parent.oP);
		// ==== mouse events ==== /
		this.obj.parent = this;
		this.obj.onmouseover = function() {
			this.parent.over();
			return false;
		}
	}
	Slide.prototype = {
		// ==== target positions ==== /
		calc : function() {
			var that = this.parent;
			// left slides
			for (var i = 0; i <= this.N; i++) {
				that.slides[i].x1 = i * that.Z;
			}
			// right slides
			for (var i = this.N + 1; i < that.NF; i++) {
				that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;
			}
		},
		// ==== HTML animation : move slides ==== *
		move : function() {
			var that = this.parent;
			var s = (this.x1 - this.x0) / that.S;
			// ==== lateral slide ==== *
			if (this.N && Math.abs(s) > .5) {
				this.obj.style.left = Math.floor(this.x0 += s) + 'px';
			}
			// ==== vertical text ==== *
			var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;
			if (Math.abs(v - this.v) > .5) {
				this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + 'px';
				this.v = v;
				this.cpt++;
			} else {
				if (!this.pro) {
					// ==== adjust speed ==== *
					this.pro = true;
					var tps = new Date() - this.start;
					if(this.cpt > 1) {
						that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);
					}
				}
			}
			if (!this.loaded) {
				if (this.img.complete) {
					this.img.style.visibility = 'visible';
					this.loaded = true;
				}
			}
		},
		// ==== light ==== *
		over : function () {
			this.parent.resize();
			this.parent.over = true;
			setOpacity(this.parent.view.img, this.parent.oP);
			this.parent.view = this;
			this.start = new Date();
			this.cpt = 0;
			this.pro = false;
			this.calc();
			setOpacity(this.img, 100);
		}
	}
	// ==== public method - script initialization ==== *
	return {
		init : function() {
			// create instances of sliders here
			// parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity
			this.s1 = new Slider("slider", 12, 1.84/3, 1/3.2, 70);
			setInterval("slider.s1.run();", 16);
		}
	}
}();

