// -------------------------------------------------------------------
// Image Thumbnail Viewer II- By Dynamic Drive, available at: http://www.dynamicdrive.com
// Last updated: Feb 5th, 2007
// -------------------------------------------------------------------

//var ViewLinkBefore = "<a target=\"_blank\" href=\"/MeasureM2/REST/ContentStream.ashx?entryId=";
//var ViewLinkAfter = "\">View</a>";
var Space = "&nbsp;&nbsp;&nbsp;&nbsp;";
var DownloadLinkBefore = "<a target=\"_blank\" href=\"/MeasureM2/REST/ContentStream.ashx?entryId="
var DownloadLinkAfter = "&mode=Download\">Download</a>";

var thumbnailviewer2 = {
    enableTitle: true, //Should "title" attribute of link be used as description?
    enableTransition: true, //Enable fading transition in IE?
    hideimgmouseout: false, //Hide enlarged image when mouse moves out of anchor link? (if enlarged image is hyperlinked, always set to false!)

    /////////////No need to edit beyond here/////////////////////////

    iefilterstring: 'progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=0.5 Duration=0.1)', //IE specific multimedia filter string
    iefiltercapable: document.compatMode && window.createPopup ? true : false, //Detect browser support for IE filters
    preloadedimages: [], //array to preload enlarged images (ones set to display "onmouseover"
    targetlinks: [], //array to hold participating links (those with rel="enlargeimage:initType")
    alreadyrunflag: false, //flag to indicate whether init() function has been run already come window.onload

    loadimage: function(linkobj) {
        var imagepath = linkobj.getAttribute("href") //Get URL to enlarged image
        var showcontainer = document.getElementById(linkobj.getAttribute("rev").split("::")[0]) //Reference container on page to show enlarged image in
        var dest = linkobj.getAttribute("rev").split("::")[1] //Get URL enlarged image should be linked to, if any
        var description = (thumbnailviewer2.enableTitle && linkobj.getAttribute("title")) ? linkobj.getAttribute("title") : "" //Get title attr
        var id = (thumbnailviewer2.enableTitle && linkobj.getAttribute("id")) ? linkobj.getAttribute("id") : "" //Get id attr
        var imageHTML = '<img src="' + imagepath + '" style="border-width: 0" />' //Construct HTML for enlarged image
        if (typeof dest != "undefined") //Hyperlink the enlarged image?
            imageHTML = '<a href="' + dest + '">' + imageHTML + '</a>'
        if (description != "") //Use title attr of the link as description?
        {
            imageHTML += '<br /><br/><br/>' + description + Space
                        //+ ViewLinkBefore + id + ViewLinkAfter + Space
                        + DownloadLinkBefore + id + DownloadLinkAfter;
        }
        if (this.iefiltercapable) { //Is this an IE browser that supports filters?
            showcontainer.style.filter = this.iefilterstring
            showcontainer.filters[0].Apply()
        }
        showcontainer.innerHTML = imageHTML
        this.featureImage = showcontainer.getElementsByTagName("img")[0] //Reference enlarged image itself
        this.featureImage.onload = function() { //When enlarged image has completely loaded
            if (thumbnailviewer2.iefiltercapable) //Is this an IE browser that supports filters?
                showcontainer.filters[0].Play()
        }
        this.featureImage.onerror = function() { //If an error has occurred while loading the image to show
            if (thumbnailviewer2.iefiltercapable) //Is this an IE browser that supports filters?
                showcontainer.filters[0].Stop()
        }
    },

    hideimage: function(linkobj) {
        var showcontainer = document.getElementById(linkobj.getAttribute("rev").split("::")[0]) //Reference container on page to show enlarged image in
        showcontainer.innerHTML = ""
    },

    cleanup: function() { //Clean up routine on page unload
        if (this.featureImage) { this.featureImage.onload = null; this.featureImage.onerror = null; this.featureImage = null }
        this.showcontainer = null
        for (var i = 0; i < this.targetlinks.length; i++) {
            this.targetlinks[i].onclick = null
            this.targetlinks[i].onmouseover = null
            this.targetlinks[i].onmouseout = null
        }
    },

    addEvent: function(target, functionref, tasktype) { //assign a function to execute to an event handler (ie: onunload)
        var tasktype = (window.addEventListener) ? tasktype : "on" + tasktype
        if (target.addEventListener)
            target.addEventListener(tasktype, functionref, false)
        else if (target.attachEvent)
            target.attachEvent(tasktype, functionref)
    },

    init: function() { //Initialize thumbnail viewer script
        this.iefiltercapable = (this.iefiltercapable && this.enableTransition) //True or false: IE filters supported and is enabled by user
        var pagelinks = document.getElementsByTagName("a")
        var firstThumnailLinkIndex = null;
        for (var i = 0; i < pagelinks.length; i++) { //BEGIN FOR LOOP
            if (pagelinks[i].getAttribute("rel") && /enlargeimage:/i.test(pagelinks[i].getAttribute("rel"))) { //Begin if statement: Test for rel="enlargeimage"
                if (firstThumnailLinkIndex == null) { //get the first thumnail image index
                    firstThumnailLinkIndex = i;
                }
                var initType = pagelinks[i].getAttribute("rel").split("::")[1] //Get display type of enlarged image ("click" or "mouseover")
                if (initType == "mouseover") { //If type is "mouseover", preload the enlarged image for quicker display
                    this.preloadedimages[this.preloadedimages.length] = new Image()
                    this.preloadedimages[this.preloadedimages.length - 1].src = pagelinks[i].href
                    pagelinks[i]["onclick"] = function() { //Cancel default click action
                        return false
                    }
                }
                pagelinks[i]["on" + initType] = function() { //Load enlarged image based on the specified display type (event)
                    thumbnailviewer2.loadimage(this) //Load image
                    return false
                }
                if (this.hideimgmouseout)
                    pagelinks[i]["onmouseout"] = function() {
                        thumbnailviewer2.hideimage(this)
                    }
                this.targetlinks[this.targetlinks.length] = pagelinks[i] //store reference to target link
            } //end if statement
        } //END FOR LOOP
        thumbnailviewer2.loadimage(pagelinks[firstThumnailLinkIndex]); //load the first thumnail image to large area

    } //END init() function

}


if (document.addEventListener) //Take advantage of "DOMContentLoaded" event in select Mozilla/ Opera browsers for faster init
    thumbnailviewer2.addEvent(document, function() { thumbnailviewer2.alreadyrunflag = 1; thumbnailviewer2.init() }, "DOMContentLoaded") //Initialize script on page load
else if (document.all && document.getElementsByTagName("a").length > 0) { //Take advantage of "defer" attr inside SCRIPT tag in IE for instant init
    thumbnailviewer2.alreadyrunflag = 1
    thumbnailviewer2.init()
}
thumbnailviewer2.addEvent(window, function() { if (!thumbnailviewer2.alreadyrunflag) thumbnailviewer2.init() }, "load") //Default init method: window.onload
thumbnailviewer2.addEvent(window, function() { thumbnailviewer2.cleanup() }, "unload")