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[1];
		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, 60);
			this.s1.over = true;
			setOpacity($("pics2"), 100);
			setInterval("slider.s1.run();", 16);
		}
	}
}();



/*left*/
function attachXMenu(objid){

	var tds=objid.getElementsByTagName('td');

	for(var i=0;i<tds.length;i++){

		with(tds[i]){

			onmouseover=function(){

				with(this){

					filters[0].apply();

					style.background='#66CCFF';

					//style.border='1px solid #ffffff'; 

					filters[0].play();

				}

			}

			onmouseout=function(){

				with(this){

					filters[0].apply();

					style.background='';

					//style.border='1px solid #336699';

					filters[0].play();
				}
			}
		}
	}
}


<!-- 
//left2
var Class = { 
    create: function() { 
        return function() { 
            this.initialize.apply(this, arguments); 
        } 
    } 
} 

Object.extend = function(destination, source) { 
    for (property in source) destination[property] = source[property]; 
    return destination; 
} 

Function.prototype.bind = function(object) { 
    var __method = this; 
    return function() { 
        return __method.apply(object, arguments); 
    } 
} 

Function.prototype.bindAsEventListener = function(object) { 
var __method = this; 
    return function(event) { 
        __method.call(object, event || window.event); 
    } 
} 

function $() { 
    if (arguments.length == 1) return get$(arguments[0]); 
    var elements = []; 
    $c(arguments).each(function(el){ 
        elements.push(get$(el)); 
    }); 
    return elements; 

    function get$(el){ 
        if (typeof el == 'string') el = document.getElementById(el); 
        return el; 
    } 
} 

if (!window.Element) var Element = new Object(); 

Object.extend(Element, { 
    remove: function(element) { 
        element = $(element); 
        element.parentNode.removeChild(element); 
    }, 

    hasClassName: function(element, className) { 
        element = $(element); 
        if (!element) return; 
        var hasClass = false; 
        element.className.split(' ').each(function(cn){ 
            if (cn == className) hasClass = true; 
        }); 
        return hasClass; 
    }, 

    addClassName: function(element, className) { 
        element = $(element); 
        Element.removeClassName(element, className); 
        element.className += ' ' + className; 
    }, 
   
    removeClassName: function(element, className) { 
        element = $(element); 
        if (!element) return; 
        var newClassName = ''; 
        element.className.split(' ').each(function(cn, i){ 
            if (cn != className){ 
                if (i > 0) newClassName += ' '; 
                newClassName += cn; 
            } 
        }); 
        element.className = newClassName; 
    }, 

    cleanWhitespace: function(element) { 
        element = $(element); 
        $c(element.childNodes).each(function(node){ 
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node); 
        }); 
    }, 

    find: function(element, what) { 
        element = $(element)[what]; 
        while (element.nodeType != 1) element = element[what]; 
        return element; 
    } 
}); 

var Position = { 
    cumulativeOffset: function(element) { 
        var valueT = 0, valueL = 0; 
        do { 
            valueT += element.offsetTop  || 0; 
            valueL += element.offsetLeft || 0; 
            element = element.offsetParent; 
        } while (element); 
        return [valueL, valueT]; 
    } 
}; 

document.getElementsByClassName = function(className) { 
    var children = document.getElementsByTagName('*') || document.all; 
    var elements = []; 
    $c(children).each(function(child){ 
        if (Element.hasClassName(child, className)) elements.push(child); 
    });   
    return elements; 
} 

//useful array functions 
Array.prototype.iterate = function(func){ 
    for(var i=0;i<this.length;i++) func(this[i], i); 
} 
if (!Array.prototype.each) Array.prototype.each = Array.prototype.iterate; 

function $c(array){ 
    var nArray = []; 
    for (var i=0;i<array.length;i++) nArray.push(array[i]); 
    return nArray; 
} 


//moo.fx.js 
var fx = new Object(); 
//base 
fx.Base = function(){}; 
fx.Base.prototype = { 
    setOptions: function(options) { 
    this.options = { 
        duration: 500, 
        onComplete: '', 
        transition: fx.sinoidal 
    } 
    Object.extend(this.options, options || {}); 
    }, 

    step: function() { 
        var time  = (new Date).getTime(); 
        if (time >= this.options.duration+this.startTime) { 
            this.now = this.to; 
            clearInterval (this.timer); 
            this.timer = null; 
            if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10); 
        } 
        else { 
            var Tpos = (time - this.startTime) / (this.options.duration); 
            this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from; 
        } 
        this.increase(); 
    }, 

    custom: function(from, to) { 
        if (this.timer != null) return; 
        this.from = from; 
        this.to = to; 
        this.startTime = (new Date).getTime(); 
        this.timer = setInterval (this.step.bind(this), 13); 
    }, 

    hide: function() { 
        this.now = 0; 
        this.increase(); 
    }, 

    clearTimer: function() { 
        clearInterval(this.timer); 
        this.timer = null; 
    } 
} 

//stretchers 
fx.Layout = Class.create(); 
fx.Layout.prototype = Object.extend(new fx.Base(), { 
    initialize: function(el, options) { 
        this.el = $(el); 
        this.el.style.overflow = "hidden"; 
        this.iniWidth = this.el.offsetWidth; 
        this.iniHeight = this.el.offsetHeight; 
        this.setOptions(options); 
    } 
}); 

fx.Height = Class.create(); 
Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), {     
    increase: function() { 
        this.el.style.height = this.now + "px"; 
    }, 

    toggle: function() { 
        if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0); 
        else this.custom(0, this.el.scrollHeight); 
    } 
}); 

fx.Width = Class.create(); 
Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), {     
    increase: function() { 
        this.el.style.width = this.now + "px"; 
    }, 

    toggle: function(){ 
        if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0); 
        else this.custom(0, this.iniWidth); 
    } 
}); 

//fader 
fx.Opacity = Class.create(); 
fx.Opacity.prototype = Object.extend(new fx.Base(), { 
    initialize: function(el, options) { 
        this.el = $(el); 
        this.now = 1; 
        this.increase(); 
        this.setOptions(options); 
    }, 

    increase: function() { 
        if (this.now == 1 && (/Firefox/.test(navigator.userAgent))) this.now = 0.9999; 
        this.setOpacity(this.now); 
    }, 
     
    setOpacity: function(opacity) { 
        if (opacity == 0 && this.el.style.visibility != "hidden") this.el.style.visibility = "hidden"; 
        else if (this.el.style.visibility != "visible") this.el.style.visibility = "visible"; 
        if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + opacity*100 + ")"; 
        this.el.style.opacity = opacity; 
    }, 

    toggle: function() { 
        if (this.now > 0) this.custom(1, 0); 
        else this.custom(0, 1); 
    } 
}); 

//transitions 
fx.sinoidal = function(pos){ 
    return ((-Math.cos(pos*Math.PI)/2) + 0.5); 
    //this transition is from script.aculo.us 
} 
fx.linear = function(pos){ 
    return pos; 
} 
fx.cubic = function(pos){ 
    return Math.pow(pos, 3); 
} 
fx.circ = function(pos){ 
    return Math.sqrt(pos); 
} 

 

//moo.fx.pack.js 
fx.Scroll = Class.create(); 
fx.Scroll.prototype = Object.extend(new fx.Base(), { 
    initialize: function(options) { 
        this.setOptions(options); 
    }, 

    scrollTo: function(el){ 
        var dest = Position.cumulativeOffset($(el))[1]; 
        var client = window.innerHeight || document.documentElement.clientHeight; 
        var full = document.documentElement.scrollHeight; 
        var top = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop; 
        if (dest+client > full) this.custom(top, dest - client + (full-dest)); 
        else this.custom(top, dest); 
    }, 

    increase: function(){ 
        window.scrollTo(0, this.now); 
    } 
}); 

//text size modify, now works with pixels too. 
fx.Text = Class.create(); 
fx.Text.prototype = Object.extend(new fx.Base(), { 
    initialize: function(el, options) { 
        this.el = $(el); 
        this.setOptions(options); 
        if (!this.options.unit) this.options.unit = "em"; 
    }, 

    increase: function() { 
        this.el.style.fontSize = this.now + this.options.unit; 
    } 
}); 

//composition effect: widht/height/opacity 
fx.Combo = Class.create(); 
fx.Combo.prototype = { 
    setOptions: function(options) { 
        this.options = { 
            opacity: true, 
            height: true, 
            width: false 
        } 
        Object.extend(this.options, options || {}); 
    }, 

    initialize: function(el, options) { 
        this.el = $(el); 
        this.setOptions(options); 
        if (this.options.opacity) { 
            this.o = new fx.Opacity(el, options); 
            options.onComplete = null; 
        } 
        if (this.options.height) { 
            this.h = new fx.Height(el, options); 
            options.onComplete = null; 
        } 
        if (this.options.width) this.w = new fx.Width(el, options); 
    }, 
     
    toggle: function() { this.checkExec('toggle'); }, 

    hide: function(){ this.checkExec('hide'); }, 
     
    clearTimer: function(){ this.checkExec('clearTimer'); }, 
     
    checkExec: function(func){ 
        if (this.o) this.o[func](); 
        if (this.h) this.h[func](); 
        if (this.w) this.w[func](); 
    }, 
     
    //only if width+height 
    resizeTo: function(hto, wto) { 
        if (this.h && this.w) { 
            this.h.custom(this.el.offsetHeight, this.el.offsetHeight + hto); 
            this.w.custom(this.el.offsetWidth, this.el.offsetWidth + wto); 
        } 
    }, 

    customSize: function(hto, wto) { 
        if (this.h && this.w) { 
            this.h.custom(this.el.offsetHeight, hto); 
            this.w.custom(this.el.offsetWidth, wto); 
        } 
    } 
} 

fx.Accordion = Class.create(); 
fx.Accordion.prototype = { 
    setOptions: function(options) { 
        this.options = { 
            delay: 100, 
            opacity: false 
        } 
        Object.extend(this.options, options || {}); 
    }, 

    initialize: function(togglers, elements, options) { 
        this.elements = elements; 
        this.setOptions(options); 
        var options = options || ''; 
        this.fxa = []; 
        if (options && options.onComplete) options.onFinish = options.onComplete; 
        elements.each(function(el, i){ 
            options.onComplete = function(){ 
                if (el.offsetHeight > 0) el.style.height = '1%'; 
                if (options.onFinish) options.onFinish(el); 
            } 
            this.fxa[i] = new fx.Combo(el, options); 
            this.fxa[i].hide(); 
        }.bind(this)); 

        togglers.each(function(tog, i){ 
            if (typeof tog.onclick == 'function') var exClick = tog.onclick; 
            tog.onclick = function(){ 
                if (exClick) exClick(); 
                this.showThisHideOpen(elements[i]);
            }.bind(this); 
        }.bind(this)); 
    }, 

    showThisHideOpen: function(toShow){ 
        this.elements.each(function(el, j){ 
            if (el.offsetHeight > 0 && el != toShow) this.clearAndToggle(el, j); 
            if (el == toShow && toShow.offsetHeight == 0) setTimeout(function(){this.clearAndToggle(toShow, j);}.bind(this), this.options.delay); 
        }.bind(this)); 
    }, 

    clearAndToggle: function(el, i){ 
        this.fxa[i].clearTimer(); 
        this.fxa[i].toggle(); 
    } 
} 


--> 
