if (!ov) {
    var ov = {

        highlight: null,
        crosshair: null,
        screenshot: null,

        $id: function(id) {
            return document.getElementById(id);
        },
        $tag: function(tag) {
            return document.getElementsByTagName(tag);
        },

        initialize: function() {
            this.highlight = this.$id("highlight");
            this.crosshair = this.$id("crosshair");

            var divs = this.$tag("div");
            for (var i = 0; i < divs.length; i++) {
                var div = divs[i];
                if (div.className == "imageNav") {
                    var spans = div.getElementsByTagName("span");
                    for (var j = 0; j < spans.length; j++) {
                        var span = spans[j];
                        if (span.id.indexOf("imageCount") >= 0) {
                            if (parseInt(labs.getText(span)) == 1) {
                                div.style.display = "none";
                            }
                            break;
                        }
                    }
                }
            }
        },
        labInitialize: function() {
            this.highlight = this.$id("highlight");
            this.crosshair = this.$id("crosshair");
        },

        element_OnClick: function() {
            var client = labs.getControl(this.screenshot.parentNode.childNodes, "clientHidden");
            var project = labs.getControl(this.screenshot.parentNode.childNodes, "projectHidden");

            var detailsImg = labs.getControl(this.$tag("img"), "detailsImg");
            detailsImg.src = this.screenshot.getAttribute("largeSrc");

            var detailsTitle = labs.getControl(this.$tag("h4"), "detailsTitle");
            labs.setText(detailsTitle, client.value);

            var detailsContent = labs.getControl(this.$tag("div"), "detailsContent");
            labs.setText(detailsContent, project.value);

            var anchor = labs.getControl(this.$tag("a"), "detailsButton");
            labs.fireClickEvent(anchor);
        },
        labElement_OnClick: function() {
            var anchor = this.screenshot.parentNode;
            window.open(anchor.href, anchor.target);
        },

        element_OnMouseOver: function(event) {
            this.screenshot = labs.getSourceElement(event);

            var left = labs.getLeft(this.screenshot);
            var top = labs.getTop(this.screenshot);
            var height = labs.getHeight(this.screenshot);
            var width = labs.getWidth(this.screenshot);

            this.highlight.style.top = top + "px";
            this.highlight.style.left = left + "px";
            this.highlight.style.height = height + "px";
            this.highlight.style.width = width + "px";
            this.highlight.style.display = "inline";

            if (document.all) {
                this.crosshair.style.top = top + (height / 2) - (labs.parseValue(this.crosshair.currentStyle.height) / 2) + "px";
                this.crosshair.style.left = left + (width / 2) - (labs.parseValue(this.crosshair.currentStyle.width) / 2) + "px";
            } else {
                this.crosshair.style.top = top + (height / 2) - (labs.parseValue(this.crosshair.height) / 2) + "px";
                this.crosshair.style.left = left + (width / 2) - (labs.parseValue(this.crosshair.width) / 2) + "px";
            }
            this.crosshair.style.display = "inline";
        },

        element_OnMouseOut: function() {
            this.screenshot.style.cursor = "default";
            this.highlight.style.display = "none";
            this.crosshair.style.display = "none";
        },

        next: function(anchor) {
            var span = null;

            span = labs.getControl(anchor.parentNode.childNodes, "currentImage");
            var currentIndex = parseInt(labs.getText(span));
            span = labs.getControl(anchor.parentNode.childNodes, "imageCount");
            var maxIndex = parseInt(labs.getText(span));

            if (currentIndex == maxIndex) {
                currentIndex = 0;
            }

            currentIndex++;
            span = labs.getControl(anchor.parentNode.childNodes, "currentImage");
            labs.setText(span, currentIndex);

            var hiddens = anchor.parentNode.getElementsByTagName("input");
            var hidden = hiddens[currentIndex - 1];
            var img = labs.getControl(anchor.parentNode.parentNode.parentNode.childNodes, "screenshot");
            img.src = hidden.value.split(':')[0];
            img.setAttribute("largeSrc", hidden.value.split(':')[1]);
        },

        previous: function(anchor) {
            var span = null;

            span = labs.getControl(anchor.parentNode.childNodes, "currentImage");
            var currentIndex = parseInt(labs.getText(span));
            span = labs.getControl(anchor.parentNode.childNodes, "imageCount");
            var maxIndex = parseInt(labs.getText(span));

            if (currentIndex == 1) {
                currentIndex = maxIndex;
            } else {
                currentIndex--;
            }

            span = labs.getControl(anchor.parentNode.childNodes, "currentImage");
            labs.setText(span, currentIndex);

            var hidden = anchor.parentNode.getElementsByTagName("input")[currentIndex - 1];
            var img = labs.getControl(anchor.parentNode.parentNode.parentNode.childNodes, "screenshot");
            img.src = hidden.value.split(':')[0];
            img.setAttribute("largeSrc", hidden.value.split(':')[1]);
        },

        closeDetailsPanel: function(anchor) {
            var closeLink = null;

            closeLink = labs.getControl(anchor.parentNode.childNodes, "closeButton");
            labs.fireClickEvent(closeLink);
        }
    };
}
