var TINY = {};

function T$(i) { return document.getElementById(i) }
function T$$(e, p) { return p.getElementsByTagName(e) }

TINY.slider = function () {
    function slide(n, p) { this.n = n; this.init(p) }
    slide.prototype.init = function (p) {
        var s = this.x = T$(p.id), u = this.u = T$$('ul', s)[0], c = this.m = T$$('li', u), l = c.length, i = this.l = this.c = 0; this.b = 1;
        if (p.navid && p.activeclass) { this.g = T$$('li', T$(p.navid)); this.s = p.activeclass }
        this.a = p.auto || 0; this.p = p.resume || 0; this.r = p.rewind || 0; this.e = p.elastic || false; this.v = p.vertical || 0; s.style.overflow = 'hidden';
        for (i; i < l; i++) { if (c[i].parentNode == u) { this.l++ } }
        if (this.v) {
            ;
            u.style.top = 0; this.h = p.height || c[0].offsetHeight; u.style.height = (this.l * this.h) + 'px'
        } else {
            u.style.left = 0; this.w = p.width || c[0].offsetWidth; u.style.width = (this.l * this.w) + 'px'
        }
        this.nav(p.position || 0);
        if (p.position) { this.pos(p.position || 0, this.a ? 1 : 0, 1) } else if (this.a) { this.auto() }
        if (p.left) { this.sel(p.left) }
        if (p.right) { this.sel(p.right) }
    },
	slide.prototype.auto = function () {
	    this.x.ai = setInterval(new Function(this.n + '.move(1,1,1)'), this.a * 1500)
	},
	slide.prototype.move = function (d, a) {
	    var n = this.c + d;
	    if (this.r) { n = d == 1 ? n == this.l ? 0 : n : n < 0 ? this.l - 1 : n }
	    this.pos(n, a, 1)
	},
	slide.prototype.pos = function (p, a, m) {
	    var v = p; clearInterval(this.x.ai); clearInterval(this.x.si);
	    if (!this.r) {
	        if (m) {
	            if (p == -1 || (p != 0 && Math.abs(p) % this.l == 0)) {
	                this.b++;
	                for (var i = 0; i < this.l; i++) { this.u.appendChild(this.m[i].cloneNode(1)) }
	                this.v ? this.u.style.height = (this.l * this.h * this.b) + 'px' : this.u.style.width = (this.l * this.w * this.b) + 'px';
	            }
	            if (p == -1 || (p < 0 && Math.abs(p) % this.l == 0)) {
	                this.v ? this.u.style.top = (this.l * this.h * -1) + 'px' : this.u.style.left = (this.l * this.w * -1) + 'px'; v = this.l - 1
	            }
	        } else if (this.c > this.l && this.b > 1) {
	            v = (this.l * (this.b - 1)) + p; p = v
	        }
	    }
	    var t = this.v ? v * this.h * -1 : v * this.w * -1, d = p < this.c ? -1 : 1; this.c = v; var n = this.c % this.l; this.nav(n);
	    if (this.e) { t = t - (8 * d) }
	    this.x.si = setInterval(new Function(this.n + '.slide(' + t + ',' + d + ',1,' + a + ')'), 40)
	},
	slide.prototype.nav = function (n) {
	    if (this.g) { for (var i = 0; i < this.l; i++) { this.g[i].className = i == n ? this.s : '' } }
	},
	slide.prototype.slide = function (t, d, i, a) {
	    var o = this.v ? parseInt(this.u.style.top) : parseInt(this.u.style.left);
	    if (o == t) {
	        clearInterval(this.x.si);
	        if (this.e && i < 3) {
	            this.x.si = setInterval(new Function(this.n + '.slide(' + (i == 1 ? t + (12 * d) : t + (4 * d)) + ',' + (i == 1 ? (-1 * d) : (-1 * d)) + ',' + (i == 1 ? 2 : 3) + ',' + a + ')'), 10)
	        } else {
	            if (a || (this.a && this.p)) { this.auto() }
	            if (this.b > 1 && this.c % this.l == 0) { this.clear() }
	        }
	    } else {
	        var v = o - Math.ceil(Math.abs(t - o) * .1) * d + 'px';
	        this.v ? this.u.style.top = v : this.u.style.left = v
	    }
	},
	slide.prototype.clear = function () {
	    var c = T$$('li', this.u), t = i = c.length; this.v ? this.u.style.top = 0 : this.u.style.left = 0; this.b = 1; this.c = 0;
	    for (i; i > 0; i--) {
	        var e = c[i - 1];
	        if (t > this.l && e.parentNode == this.u) { this.u.removeChild(e); t-- }
	    }
	},
	slide.prototype.sel = function (i) {
	    var e = T$(i); e.onselectstart = e.onmousedown = function () { return false }
	}
    return { slide: slide }
} ();
