// Version of lightbox to work with AJAX calls returning HTML, as opposed to just images
// (added by CAW)
//
DGN.Lightbox = Class.create(Lightbox, {
    sendAjaxRequest: function(ps_url, po_options) {
        var ho_options = {
            method: 'get'
            };
        for (prop in po_options) {
            ho_options[prop] = po_options[prop];
        }
        var ho_this = this;
        ho_options.onSuccess = function(transport) {
            ho_this.beforeLoad(transport);
            ho_this.loadAjaxData(transport);
            };
        new Ajax.Request(ps_url, ho_options);
    },

    beforeLoad: function(transport) { },

    loadAjaxData: function(transport) {
        this.lightboxImage.innerHTML = transport.responseText;

        // Pre-load images, then resize image container:
        //
        var ha_images = this.lightboxImage.select('img');
        if (ha_images.length == 0) {
            this.resizeLightbox(true);
        } else {
            var thisobj = this;
            var i       = 0;
            ha_images.each(function(elem) {
                var img    = new Image();
                img.onload = function() { if (++i == ha_images.length) { thisobj.resizeLightbox(true); } };
                img.src    = elem.src;
            });
        }
    }, // end function loadAjaxData

    afterLoad: function() {
        $$('div#lightboxImage .box').each(function(element) { ApplyCorner(element,SB.r09); });

        this.outerImageContainer.setStyle({ height: 'auto'});
    },

    changeImage: function(imageNum) {
        this.activeImage = imageNum; // update global var

        // hide elements during transition
        if (LightboxOptions.animate) this.loading.show();
        this.lightboxImage.hide();
        this.hoverNav.hide();
        this.prevLink.hide();
        this.nextLink.hide();

        this.sendAjaxRequest(this.imageArray[this.activeImage][0]);
    },

    updateDetails: function($super) {
        this.afterLoad();
        $super();
    },

    keyboardAction: function(event) {
        // Do nothing
    },

    preloadNeighborImages: function() {
        // Do nothing
    }
});

