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
            } 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))
        }
    }
}();
