TINY={};

TINY.box = function () {
    var j, m, b, g, v, p = 0;
    return {
        show: function (o) {
            v = { opacity: 70, close: 1, animate: 1, fixed: 1, mask: 1, maskid: '', boxid: '', topsplit: 2, url: 0, post: 0, height: 0, width: 0, html: 0, iframe: 0 };
            for (s in o) { v[s] = o[s] }
            if (!p) {
                j = document.createElement('div'); j.className = 'tbox';
                p = document.createElement('div'); p.className = 'tinner';
                b = document.createElement('div'); b.className = 'tcontent';
                m = document.createElement('div'); m.className = 'tmask';
                g = document.createElement('div'); g.className = 'tclose'; g.v = 0;

                document.body.appendChild(m); document.body.appendChild(j); j.appendChild(p); p.appendChild(b);
                //m.onclick=g.onclick=TINY.box.hide; window.onresize=TINY.box.resize
                // stop the window from closing except when you click the X button
                g.onclick = TINY.box.hide; window.onresize = TINY.box.resize
            } else {
                j.style.display = 'none'; clearTimeout(p.ah); if (g.v) { p.removeChild(g); g.v = 0 }
            }
            p.id = v.boxid; m.id = v.maskid; j.style.position = v.fixed ? 'fixed' : 'absolute';
            if (v.html && !v.animate) {
                p.style.backgroundImage = 'none'; b.innerHTML = v.html; b.style.display = '';
                p.style.width = v.width ? v.width + 'px' : 'auto'; p.style.height = v.height ? v.height + 'px' : 'auto'
            } else {
                b.style.display = 'none';
                if (!v.animate && v.width && v.height) {
                    p.style.width = v.width + 'px'; p.style.height = v.height + 'px'
                } else {
                    p.style.width = p.style.height = '100px'
                }
            }
            if (v.mask) { this.mask(); this.alpha(m, 1, v.opacity) } else { this.alpha(j, 1, 100) }
            if (v.autohide) { p.ah = setTimeout(TINY.box.hide, 1000 * v.autohide) } else { document.onkeyup = TINY.box.esc }
        },
        fill: function (c, u, k, a, w, h) {
            if (u) {
                if (v.image) {
                    var i = new Image(); i.onload = function () { w = w || i.width; h = h || i.height; TINY.box.psh(i, a, w, h) }; i.src = v.image
                } else if (v.iframe) {
                    this.psh('<iframe src="' + v.iframe + '" width="' + v.width + '" frameborder="0" height="' + v.height + '"></iframe>', a, w, h)
                } else {
                    var x = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
                    x.onreadystatechange = function () {
                        if (x.readyState == 4 && x.status == 200) { p.style.backgroundImage = ''; TINY.box.psh(x.responseText, a, w, h) }
                    };
                    if (k) {
                        x.open('POST', c, true); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); x.send(k)
                    } else {
                        x.open('GET', c, true); x.send(null)
                    }
                }
            } else {
                this.psh(c, a, w, h)
            }
        },
        psh: function (c, a, w, h) {
            if (typeof c == 'object') { b.appendChild(c) } else { b.innerHTML = c }
            var x = p.style.width, y = p.style.height;
            if (!w || !h) {
                p.style.width = w ? w + 'px' : ''; p.style.height = h ? h + 'px' : ''; b.style.display = '';
                if (!h) { h = parseInt(b.offsetHeight) }
                if (!w) { w = parseInt(b.offsetWidth) }
                b.style.display = 'none'
            }
            p.style.width = x; p.style.height = y;
            this.size(w, h, a)
        },
        esc: function (e) { e = e || window.event; if (e.keyCode == 27) { TINY.box.hide() } },
        hide: function () { TINY.box.alpha(j, -1, 0, 3); document.onkeypress = null; if (v.closejs) { v.closejs() } },
        resize: function () { TINY.box.pos(); TINY.box.mask() },
        mask: function () { m.style.height = this.total(1) + 'px'; m.style.width = this.total(0) + 'px' },
        pos: function () {
            var t;
            if (typeof v.top != 'undefined') { t = v.top } else { t = (this.height() / v.topsplit) - (j.offsetHeight / 2); t = t < 20 ? 20 : t }
            if (!v.fixed && !v.top) { t += this.top() }
            j.style.top = t + 'px';
            j.style.left = typeof v.left != 'undefined' ? v.left + 'px' : (this.width() / 2) - (j.offsetWidth / 2) + 'px'
        },
        alpha: function (e, d, a) {
            clearInterval(e.ai);
            if (d) { e.style.opacity = 0; e.style.filter = 'alpha(opacity=0)'; e.style.display = 'block'; TINY.box.pos() }
            e.ai = setInterval(function () { TINY.box.ta(e, a, d) }, 20)
        },
        ta: function (e, a, d) {
            var o = Math.round(e.style.opacity * 100);
            if (o == a) {
                clearInterval(e.ai);
                if (d == -1) {
                    e.style.display = 'none';
                    e == j ? TINY.box.alpha(m, -1, 0, 2) : b.innerHTML = p.style.backgroundImage = ''
                } else {
                    if (e == m) {
                        this.alpha(j, 1, 100)
                    } else {
                        j.style.filter = '';
                        TINY.box.fill(v.html || v.url, v.url || v.iframe || v.image, v.post, v.animate, v.width, v.height)
                    }
                }
            } else {
                var n = a - Math.floor(Math.abs(a - o) * .5) * d;
                e.style.opacity = n / 100; e.style.filter = 'alpha(opacity=' + n + ')'
            }
        },
        size: function (w, h, a) {
            if (a) {
                clearInterval(p.si); var wd = parseInt(p.style.width) > w ? -1 : 1, hd = parseInt(p.style.height) > h ? -1 : 1;
                p.si = setInterval(function () { TINY.box.ts(w, wd, h, hd) }, 20)
            } else {
                p.style.backgroundImage = 'none'; if (v.close) { p.appendChild(g); g.v = 1 }
                p.style.width = w + 'px'; p.style.height = h + 'px'; b.style.display = ''; this.pos();
                if (v.openjs) { v.openjs() }
            }
        },
        ts: function (w, wd, h, hd) {
            var cw = parseInt(p.style.width), ch = parseInt(p.style.height);
            if (cw == w && ch == h) {
                clearInterval(p.si); p.style.backgroundImage = 'none'; b.style.display = 'block'; if (v.close) { p.appendChild(g); g.v = 1 }
                if (v.openjs) { v.openjs() }
            } else {
                if (cw != w) { p.style.width = (w - Math.floor(Math.abs(w - cw) * .6) * wd) + 'px' }
                if (ch != h) { p.style.height = (h - Math.floor(Math.abs(h - ch) * .6) * hd) + 'px' }
                this.pos()
            }
        },
        top: function () { return document.documentElement.scrollTop || document.body.scrollTop },
        width: function () { return self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth },
        height: function () { return self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight },
        total: function (d) {
            var b = document.body, e = document.documentElement;
            return d ? Math.max(Math.max(b.scrollHeight, e.scrollHeight), Math.max(b.clientHeight, e.clientHeight)) :
			Math.max(Math.max(b.scrollWidth, e.scrollWidth), Math.max(b.clientWidth, e.clientWidth))
        }
    }
} ();
