﻿document.write("<script type=\"text/javascript\">\r\n\r\n/* ==== slider nameSpace ==== */\r\n\r\nvar slider = function() {\r\n\r\n	/* ==== private methods ==== */\r\n\r\n	function getElementsByClass(object, tag, className) {\r\n\r\n		var o = object.getElementsByTagName(tag);\r\n\r\n		for ( var i = 0, n = o.length, ret = []; i < n; i++) {\r\n\r\n			if (o[i].className == className) ret.push(o[i]);\r\n\r\n		}\r\n\r\n		if (ret.length == 1) ret = ret[0];\r\n\r\n		return ret;\r\n\r\n	}\r\n\r\n	function setOpacity (obj,o) {\r\n\r\n		if (obj.filters) obj.filters.alpha.opacity = Math.round(o);\r\n\r\n		else obj.style.opacity = o / 100;\r\n\r\n	}\r\n\r\n	/* ==== Slider Constructor ==== */\r\n\r\n	function Slider(oCont, speed, iW, iH, oP) {\r\n\r\n		this.slides = [];\r\n\r\n		this.over   = false;\r\n\r\n		this.S      = this.S0 = speed;\r\n\r\n		this.iW     = iW;\r\n\r\n		this.iH     = iH;\r\n\r\n		this.oP     = oP;\r\n\r\n		this.oc     = document.getElementById(oCont);\r\n\r\n		this.frm    = getElementsByClass(this.oc, \'div\', \'slide\');\r\n\r\n		this.NF     = this.frm.length;\r\n\r\n		this.resize();\r\n\r\n		for (var i = 0; i < this.NF; i++) {\r\n\r\n			this.slides[i] = new Slide(this, i);\r\n\r\n		}\r\n\r\n		this.oc.parent = this;\r\n\r\n		this.view      = this.slides[0];\r\n\r\n		this.Z         = this.mx;\r\n\r\n		/* ==== on mouse out event ==== */\r\n\r\n		this.oc.onmouseout = function () {\r\n\r\n			this.parent.mouseout();\r\n\r\n			return false;\r\n\r\n		}\r\n\r\n	}\r\n\r\n	Slider.prototype = {\r\n\r\n		/* ==== animation loop ==== */\r\n\r\n		run : function () {\r\n\r\n			this.Z += this.over ? (this.mn - this.Z) * .5 : (this.mx - this.Z) * .5;\r\n\r\n			this.view.calc();\r\n\r\n			var i = this.NF;\r\n\r\n			while (i--) this.slides[i].move();\r\n\r\n		},\r\n\r\n		/* ==== resize  ==== */\r\n\r\n		resize : function () {\r\n\r\n			this.wh = this.oc.clientWidth;\r\n\r\n			this.ht = this.oc.clientHeight;\r\n\r\n			this.wr = this.wh * this.iW;\r\n\r\n			this.r  = this.ht / this.wr;\r\n\r\n			this.mx = this.wh / this.NF;\r\n\r\n			this.mn = (this.wh * (1 - this.iW)) / (this.NF - 1);\r\n\r\n		},\r\n\r\n		/* ==== rest  ==== */\r\n\r\n		mouseout : function () {\r\n\r\n			this.over      = false;\r\n\r\n			setOpacity(this.view.img, this.oP);\r\n\r\n		}\r\n\r\n	}\r\n\r\n	/* ==== Slide Constructor ==== */\r\n\r\n	Slide = function (parent, N) {\r\n\r\n		this.parent = parent;\r\n\r\n		this.N      = N;\r\n\r\n		this.x0     = this.x1 = N * parent.mx;\r\n\r\n		this.v      = 0;\r\n\r\n		this.loaded = false;\r\n\r\n		this.cpt    = 0;\r\n\r\n		this.start  = new Date();\r\n\r\n		this.obj    = parent.frm[N];\r\n\r\n		this.txt    = getElementsByClass(this.obj, \'div\', \'text\');\r\n\r\n		this.img    = getElementsByClass(this.obj, \'img\', \'diapo\');\r\n\r\n		this.bkg    = document.createElement(\'div\');\r\n\r\n		this.bkg.className = \'backgroundText\';\r\n\r\n		this.obj.insertBefore(this.bkg, this.txt);\r\n\r\n		if (N == 0) this.obj.style.borderLeft = \'none\';\r\n\r\n		this.obj.style.left = Math.floor(this.x0) + \'px\';\r\n\r\n		setOpacity(this.img, parent.oP);\r\n\r\n		/* ==== mouse events ==== */\r\n\r\n		this.obj.parent = this;\r\n\r\n		this.obj.onmouseover = function() {\r\n\r\n			this.parent.over();\r\n\r\n			return false;\r\n\r\n		}\r\n\r\n	}\r\n\r\n	Slide.prototype = {\r\n\r\n		/* ==== target positions ==== */\r\n\r\n		calc : function() {\r\n\r\n			var that = this.parent;\r\n\r\n			// left slides\r\n\r\n			for (var i = 0; i <= this.N; i++) {\r\n\r\n				that.slides[i].x1 = i * that.Z;\r\n\r\n			}\r\n\r\n			// right slides\r\n\r\n			for (var i = this.N + 1; i < that.NF; i++) {\r\n\r\n				that.slides[i].x1 = that.wh - (that.NF - i) * that.Z;\r\n\r\n			}\r\n\r\n		},\r\n\r\n		/* ==== HTML animation : move slides ==== */\r\n\r\n		move : function() {\r\n\r\n			var that = this.parent;\r\n\r\n			var s = (this.x1 - this.x0) / that.S;\r\n\r\n			/* ==== lateral slide ==== */\r\n\r\n			if (this.N && Math.abs(s) > .5) {\r\n\r\n				this.obj.style.left = Math.floor(this.x0 += s) + \'px\';\r\n\r\n			}\r\n\r\n			/* ==== vertical text ==== */\r\n\r\n			var v = (this.N < that.NF - 1) ? that.slides[this.N + 1].x0 - this.x0 : that.wh - this.x0;\r\n\r\n			if (Math.abs(v - this.v) > .5) {\r\n\r\n				this.bkg.style.top = this.txt.style.top = Math.floor(2 + that.ht - (v - that.Z) * that.iH * that.r) + \'px\';\r\n\r\n				this.v = v;\r\n\r\n				this.cpt++;\r\n\r\n			} else {\r\n\r\n				if (!this.pro) {\r\n\r\n					/* ==== adjust speed ==== */\r\n\r\n					this.pro = true;\r\n\r\n					var tps = new Date() - this.start;\r\n\r\n					if(this.cpt > 1) {\r\n\r\n						that.S = Math.max(2, (28 / (tps / this.cpt)) * that.S0);\r\n\r\n					}\r\n\r\n				}\r\n\r\n			}\r\n\r\n			if (!this.loaded) {\r\n\r\n				if (this.img.complete) {\r\n\r\n					this.img.style.visibility = \'visible\';\r\n\r\n					this.loaded = true;\r\n\r\n				}\r\n\r\n			}\r\n\r\n		},\r\n\r\n		/* ==== light ==== */\r\n\r\n		over : function () {\r\n\r\n			this.parent.resize();\r\n\r\n			this.parent.over = true;\r\n\r\n			setOpacity(this.parent.view.img, this.parent.oP);\r\n\r\n			this.parent.view = this;\r\n\r\n			this.start = new Date();\r\n\r\n			this.cpt = 0;\r\n\r\n			this.pro = false;\r\n\r\n			this.calc();\r\n\r\n			setOpacity(this.img, 100);\r\n\r\n		}\r\n\r\n	}\r\n\r\n	/* ==== public method - script initialization ==== */\r\n\r\n	return {\r\n\r\n		init : function() {\r\n\r\n			// create instances of sliders here\r\n\r\n			// parameters : HTMLcontainer name, speed (2 fast - 20 slow), Horizontal ratio, vertical text ratio, opacity\r\n\r\n			this.s1 = new Slider(\"slider\", 12, 1.84/3, 1/3.2, 70);\r\n\r\n			setInterval(\"slider.s1.run();\", 16);\r\n\r\n		}\r\n\r\n	}\r\n\r\n}();\r\n</script>")
