var GB_CURRENT = null;
var GB_ROOT_DIR = "Resources/Scripts/greybox/";
GB_hide = function(a){
    GB_CURRENT.hide(a)
};
GreyBox = new AJS.Class({
    init: function(c){
        this.use_fx = AJS.fx;
        this.type = "page";
        this.overlay_click_close = false;
        this.salt = 0;
        this.root_dir = GB_ROOT_DIR;
        this.callback_fns = [];
        this.reload_on_close = false;
        this.src_loader = this.root_dir + "loader_frame.html";
        var b = window.location.hostname.indexOf("www");
        var a = this.src_loader.indexOf("www");
        if (b != -1 && a == -1) {
            this.src_loader = this.src_loader.replace("://", "://www.")
        }
        if (b == -1 && a != -1) {
            this.src_loader = this.src_loader.replace("://www.", "://")
        }
        this.show_loading = true;
        AJS.update(this, c)
    },
    addCallback: function(a){
        if (a) {
            this.callback_fns.push(a)
        }
    },
    show: function(a){
        GB_CURRENT = this;
        this.url = a;
        var b = [AJS.$bytc("object"), AJS.$bytc("select")];
        AJS.map(AJS.flattenList(b), function(c){
            c.style.visibility = "hidden"
        });
        this.createElements();
        return false
    },
    hide: function(a){
        var b = this;
        setTimeout(function(){
            var d = b.callback_fns;
            if (d != []) {
                AJS.map(d, function(f){
                    f()
                })
            }
            b.onHide();
            if (b.use_fx) {
                var e = b.overlay;
                AJS.fx.fadeOut(b.overlay, {
                    onComplete: function(){
                        AJS.removeElement(e);
                        e = null
                    },
                    duration: 300
                });
                AJS.removeElement(b.g_window)
            }
            else {
                AJS.removeElement(b.g_window, b.overlay)
            }
            b.removeFrame();
            AJS.REV(window, "scroll", _GB_setOverlayDimension);
            AJS.REV(window, "resize", _GB_update);
            var c = [AJS.$bytc("object"), AJS.$bytc("select")];
            AJS.map(AJS.flattenList(c), function(f){
                f.style.visibility = "visible"
            });
            GB_CURRENT = null;
            if (b.reload_on_close) {
                window.location.reload()
            }
            if (AJS.isFunction(a)) {
                a()
            }
        }, 10)
    },
    update: function(){
        this.setOverlayDimension();
        this.setFrameSize();
        this.setWindowPosition()
    },
    createElements: function(){
        this.initOverlay();
        this.g_window = AJS.DIV({
            id: "GB_window"
        });
        AJS.hideElement(this.g_window);
        AJS.getBody().insertBefore(this.g_window, this.overlay.nextSibling);
        this.initFrame();
        this.initHook();
        this.update();
        var a = this;
        if (this.use_fx) {
            AJS.fx.fadeIn(this.overlay, {
                duration: 300,
                to: 0.7,
                onComplete: function(){
                    a.onShow();
                    AJS.showElement(a.g_window);
                    a.startLoading()
                }
            })
        }
        else {
            AJS.setOpacity(this.overlay, 0.7);
            AJS.showElement(this.g_window);
            this.onShow();
            this.startLoading()
        }
        AJS.AEV(window, "scroll", _GB_setOverlayDimension);
        AJS.AEV(window, "resize", _GB_update)
    },
    removeFrame: function(){
        try {
            AJS.removeElement(this.iframe)
        } 
        catch (a) {
        }
        this.iframe = null
    },
    startLoading: function(){
        this.iframe.src = this.src_loader + "?s=" + this.salt++;
        AJS.showElement(this.iframe)
    },
    setOverlayDimension: function(){
        var b = AJS.getWindowSize();
        if (AJS.isMozilla() || AJS.isOpera()) {
            AJS.setWidth(this.overlay, "100%")
        }
        else {
            AJS.setWidth(this.overlay, b.w)
        }
        var a = Math.max(AJS.getScrollTop() + b.h, AJS.getScrollTop() + this.height);
        if (a < AJS.getScrollTop()) {
            AJS.setHeight(this.overlay, a)
        }
        else {
            AJS.setHeight(this.overlay, AJS.getScrollTop() + b.h)
        }
    },
    initOverlay: function(){
        this.overlay = AJS.DIV({
            id: "GB_overlay"
        });
        if (this.overlay_click_close) {
            AJS.AEV(this.overlay, "click", GB_hide)
        }
        AJS.setOpacity(this.overlay, 0);
        AJS.getBody().insertBefore(this.overlay, AJS.getBody().firstChild)
    },
    initFrame: function(){
        if (!this.iframe) {
            var a = {
                name: "GB_frame",
                "class": "GB_frame",
                frameBorder: 0
            };
            if (AJS.isIe()) {
                a.src = 'javascript:false;document.write("");'
            }
            this.iframe = AJS.IFRAME(a);
            this.middle_cnt = AJS.DIV({
                "class": "content"
            }, this.iframe);
            this.top_cnt = AJS.DIV();
            this.bottom_cnt = AJS.DIV();
            AJS.ACN(this.g_window, this.top_cnt, this.middle_cnt, this.bottom_cnt)
        }
    },
    onHide: function(){
    },
    onShow: function(){
    },
    setFrameSize: function(){
    },
    setWindowPosition: function(){
    },
    initHook: function(){
    }
});
_GB_update = function(){
    if (GB_CURRENT) {
        GB_CURRENT.update()
    }
};
_GB_setOverlayDimension = function(){
    if (GB_CURRENT) {
        GB_CURRENT.setOverlayDimension()
    }
};
AJS.preloadImages(GB_ROOT_DIR + "indicator.gif");
script_loaded = true;
var GB_SETS = {};
function decoGreyboxLinks(){
    var a = AJS.$bytc("a");
    AJS.map(a, function(c){
        if (c.getAttribute("href") && c.getAttribute("rel")) {
            var b = c.getAttribute("rel");
            if (b.indexOf("gb_") == 0) {
                var f = b.match(/\w+/)[0];
                var e = b.match(/\[(.*)\]/)[1];
                var d = 0;
                var g = {
                    caption: c.title || "",
                    url: c.href
                };
                if (f == "gb_pageset" || f == "gb_imageset") {
                    if (!GB_SETS[e]) {
                        GB_SETS[e] = []
                    }
                    GB_SETS[e].push(g);
                    d = GB_SETS[e].length
                }
                if (f == "gb_pageset") {
                    c.onclick = function(){
                        GB_showFullScreenSet(GB_SETS[e], d);
                        return false
                    }
                }
                if (f == "gb_imageset") {
                    c.onclick = function(){
                        GB_showImageSet(GB_SETS[e], d);
                        return false
                    }
                }
                if (f == "gb_image") {
                    c.onclick = function(){
                        GB_showImage(g.caption, g.url);
                        return false
                    }
                }
                if (f == "gb_page") {
                    c.onclick = function(){
                        var h = e.split(/, ?/);
                        GB_show(g.caption, g.url, parseInt(h[1]), parseInt(h[0]));
                        return false
                    }
                }
                if (f == "gb_page_fs") {
                    c.onclick = function(){
                        GB_showFullScreen(g.caption, g.url);
                        return false
                    }
                }
                if (f == "gb_page_center") {
                    c.onclick = function(){
                        var h = e.split(/, ?/);
                        GB_showCenter(g.caption, g.url, parseInt(h[1]), parseInt(h[0]));
                        return false
                    }
                }
            }
        }
    })
}

AJS.AEV(window, "load", decoGreyboxLinks);
GB_showImage = function(a, c, e){
    var b = {
        width: 300,
        height: 300,
        type: "image",
        fullscreen: false,
        center_win: true,
        caption: a,
        callback_fn: e
    };
    var d = new GB_Gallery(b);
    return d.show(c)
};
GB_showPage = function(a, c, e){
    var b = {
        type: "page",
        caption: a,
        callback_fn: e,
        fullscreen: true,
        center_win: false
    };
    var d = new GB_Gallery(b);
    return d.show(c)
};
GB_Gallery = GreyBox.extend({
    init: function(a){
        this.parent({});
        this.img_close = this.root_dir + "g_close.gif";
        AJS.update(this, a);
        this.addCallback(this.callback_fn)
    },
    initHook: function(){
        AJS.addClass(this.g_window, "GB_Gallery");
        var c = AJS.DIV({
            "class": "inner"
        });
        this.header = AJS.DIV({
            "class": "GB_header"
        }, c);
        AJS.setOpacity(this.header, 0);
        AJS.getBody().insertBefore(this.header, this.overlay.nextSibling);
        var e = AJS.TD({
            id: "GB_caption",
            "class": "caption",
            width: "40%"
        }, this.caption);
        var b = AJS.TD({
            id: "GB_middle",
            "class": "middle",
            width: "20%"
        });
        var f = AJS.IMG({
            src: this.img_close
        });
        AJS.AEV(f, "click", GB_hide);
        var a = AJS.TD({
            "class": "close",
            width: "40%"
        }, f);
        var d = AJS.TBODY(AJS.TR(e, b, a));
        var g = AJS.TABLE({
            cellspacing: "0",
            cellpadding: 0,
            border: 0
        }, d);
        AJS.ACN(c, g);
        if (this.fullscreen) {
            AJS.AEV(window, "scroll", AJS.$b(this.setWindowPosition, this))
        }
        else {
            AJS.AEV(window, "scroll", AJS.$b(this._setHeaderPos, this))
        }
    },
    setFrameSize: function(){
        var b = this.overlay.offsetWidth;
        var a = AJS.getWindowSize();
        if (this.fullscreen) {
            this.width = b - 40;
            this.height = a.h - 80
        }
        AJS.setWidth(this.iframe, this.width);
        AJS.setHeight(this.iframe, this.height);
        AJS.setWidth(this.header, b)
    },
    _setHeaderPos: function(){
        AJS.setTop(this.header, AJS.getScrollTop() + 10)
    },
    setWindowPosition: function(){
        var c = this.overlay.offsetWidth;
        var a = AJS.getWindowSize();
        AJS.setLeft(this.g_window, ((c - 50 - this.width) / 2));
        var d = AJS.getScrollTop() + 55;
        if (!this.center_win) {
            AJS.setTop(this.g_window, d)
        }
        else {
            var b = ((a.h - this.height) / 2) + 20 + AJS.getScrollTop();
            if (b < 0) {
                b = 0
            }
            if (d > b) {
                b = d
            }
            AJS.setTop(this.g_window, b)
        }
        this._setHeaderPos()
    },
    onHide: function(){
        AJS.removeElement(this.header);
        AJS.removeClass(this.g_window, "GB_Gallery")
    },
    onShow: function(){
        if (this.use_fx) {
            AJS.fx.fadeIn(this.header, {
                to: 1
            })
        }
        else {
            AJS.setOpacity(this.header, 1)
        }
    }
});
AJS.preloadImages(GB_ROOT_DIR + "g_close.gif");
GB_showFullScreenSet = function(e, a, d){
    var b = {
        type: "page",
        fullscreen: true,
        center_win: false
    };
    var c = new GB_Sets(b, e);
    c.addCallback(d);
    c.showSet(a - 1);
    return false
};
GB_showImageSet = function(e, a, d){
    var b = {
        type: "image",
        fullscreen: false,
        center_win: true,
        width: 300,
        height: 300
    };
    var c = new GB_Sets(b, e);
    c.addCallback(d);
    c.showSet(a - 1);
    return false
};
GB_Sets = GB_Gallery.extend({
    init: function(a, b){
        this.parent(a);
        if (!this.img_next) {
            this.img_next = this.root_dir + "next.gif"
        }
        if (!this.img_prev) {
            this.img_prev = this.root_dir + "prev.gif"
        }
        this.current_set = b
    },
    showSet: function(a){
        this.current_index = a;
        var b = this.current_set[this.current_index];
        this.show(b.url);
        this._setCaption(b.caption);
        this.btn_prev = AJS.IMG({
            "class": "left",
            src: this.img_prev
        });
        this.btn_next = AJS.IMG({
            "class": "right",
            src: this.img_next
        });
        AJS.AEV(this.btn_prev, "click", AJS.$b(this.switchPrev, this));
        AJS.AEV(this.btn_next, "click", AJS.$b(this.switchNext, this));
        GB_STATUS = AJS.SPAN({
            "class": "GB_navStatus"
        });
        AJS.ACN(AJS.$("GB_middle"), this.btn_prev, GB_STATUS, this.btn_next);
        this.updateStatus()
    },
    updateStatus: function(){
        AJS.setHTML(GB_STATUS, (this.current_index + 1) + " / " + this.current_set.length);
        if (this.current_index == 0) {
            AJS.addClass(this.btn_prev, "disabled")
        }
        else {
            AJS.removeClass(this.btn_prev, "disabled")
        }
        if (this.current_index == this.current_set.length - 1) {
            AJS.addClass(this.btn_next, "disabled")
        }
        else {
            AJS.removeClass(this.btn_next, "disabled")
        }
    },
    _setCaption: function(a){
        AJS.setHTML(AJS.$("GB_caption"), a)
    },
    updateFrame: function(){
        var a = this.current_set[this.current_index];
        this._setCaption(a.caption);
        this.url = a.url;
        this.startLoading()
    },
    switchPrev: function(){
        if (this.current_index != 0) {
            this.current_index--;
            this.updateFrame();
            this.updateStatus()
        }
    },
    switchNext: function(){
        if (this.current_index != this.current_set.length - 1) {
            this.current_index++;
            this.updateFrame();
            this.updateStatus()
        }
    }
});
AJS.AEV(window, "load", function(){
    AJS.preloadImages(GB_ROOT_DIR + "next.gif", GB_ROOT_DIR + "prev.gif")
});
GB_show = function(b, d, a, e, g){
    var c = {
        caption: b,
        height: a || 500,
        width: e || 500,
        fullscreen: false,
        callback_fn: g
    };
    var f = new GB_Window(c);
    return f.show(d)
};
GB_showCenter = function(b, d, a, e, g){
    var c = {
        caption: b,
        center_win: true,
        height: a || 500,
        width: e || 500,
        fullscreen: false,
        callback_fn: g
    };
    var f = new GB_Window(c);
    return f.show(d)
};
GB_showFullScreen = function(a, c, e){
    var b = {
        caption: a,
        fullscreen: true,
        callback_fn: e
    };
    var d = new GB_Window(b);
    return d.show(c)
};
GB_Window = GreyBox.extend({
    init: function(a){
        this.parent({});
        this.img_header = this.root_dir + "header_bg.gif";
        this.img_close = this.root_dir + "w_close.gif";
        this.show_close_img = true;
        AJS.update(this, a);
        this.addCallback(this.callback_fn)
    },
    initHook: function(){
        AJS.addClass(this.g_window, "GB_Window");
        this.header = AJS.TABLE({
            "class": "header"
        });
        this.header.style.backgroundImage = "url(" + this.img_header + ")";
        var b = AJS.TD({
            "class": "caption"
        }, this.caption);
        var a = AJS.TD({
            "class": "close"
        });
        if (this.show_close_img) {
            var e = AJS.IMG({
                src: this.img_close
            });
            var d = AJS.SPAN("");
            var c = AJS.DIV(e, d);
            AJS.AEV([e, d], "mouseover", function(){
                AJS.addClass(d, "on")
            });
            AJS.AEV([e, d], "mouseout", function(){
                AJS.removeClass(d, "on")
            });
            AJS.AEV([e, d], "mousedown", function(){
                AJS.addClass(d, "click")
            });
            AJS.AEV([e, d], "mouseup", function(){
                AJS.removeClass(d, "click")
            });
            AJS.AEV([e, d], "click", GB_hide);
            AJS.ACN(a, c)
        }
        tbody_header = AJS.TBODY();
        AJS.ACN(tbody_header, AJS.TR(b, a));
        AJS.ACN(this.header, tbody_header);
        AJS.ACN(this.top_cnt, this.header);
        if (this.fullscreen) {
            AJS.AEV(window, "scroll", AJS.$b(this.setWindowPosition, this))
        }
    },
    setFrameSize: function(){
        if (this.fullscreen) {
            var a = AJS.getWindowSize();
            overlay_h = a.h;
            this.width = Math.round(this.overlay.offsetWidth - (this.overlay.offsetWidth / 100) * 10);
            this.height = Math.round(overlay_h - (overlay_h / 100) * 10)
        }
        AJS.setWidth(this.header, this.width + 6);
        AJS.setWidth(this.iframe, this.width);
        AJS.setHeight(this.iframe, this.height)
    },
    setWindowPosition: function(){
        var a = AJS.getWindowSize();
        AJS.setLeft(this.g_window, ((a.w - this.width) / 2) - 13);
        if (!this.center_win) {
            AJS.setTop(this.g_window, AJS.getScrollTop())
        }
        else {
            var b = ((a.h - this.height) / 2) - 20 + AJS.getScrollTop();
            if (b < 0) {
                b = 0
            }
            AJS.setTop(this.g_window, b)
        }
    }
});
AJS.preloadImages(GB_ROOT_DIR + "w_close.gif", GB_ROOT_DIR + "header_bg.gif");
script_loaded = true;
