Results 1 to 2 of 2

Thread: Conflict using gallery slidershow and Thumbnail viewer

  1. #1
    Join Date
    Aug 2008
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Conflict using gallery slidershow and Thumbnail viewer

    Hi i'm new to DD and am currently having a problem using the thumbnail view (http://www.dynamicdrive.com/dynamicindex4/thumbnail.htm) in another JS gallery program image slidershow (http://www.dhtmlgoodies.com/index.ht...mage_slideshow).

    I add the Thumbnail view into the caption section of the gallery so it gives the option of viewing the images full size but instead of loading in the popup it opens in the same window.

    I found looking around that my problem maybe a conflict of JS. So i tried the solution for a similar thing with lightbox, by adding a onload event to the body with initthumbnail, yet this didn't work and stopped the gallery script from working.

    The following is the code being used on my index page and the two JS files for the gallery and thumbnail.

    Index:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Jagger Bramley - Home</title>
    <link href="css/main.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript" src="js/image-slideshow.js">
    /***********************************************************************************************
    Copyright (c) 2005 - Alf Magne Kalleland post@dhtmlgoodies.com
    UPDATE LOG:
    March, 10th, 2006 : Added support for a message while large image is loading
    Get this and other scripts at www.dhtmlgoodies.com
    You can use this script freely as long as this copyright message is kept intact.
    ***********************************************************************************************/
    </script>
    <script src="js/thumbnailviewer.js" type="text/javascript">
    /***********************************************
    * Image Thumbnail Viewer Script- © Dynamic Drive (www.dynamicdrive.com)
    * This notice must stay intact for legal use.
    * Visit http://www.dynamicdrive.com/ for full source code
    ***********************************************/
    </script>
    </head>
    <body>
    <img src="header.jpg" alt="Jagger Bramley logo" width="473" height="149" />
    <hr />
    <jbmenu>Home About Albums Contact</jbmenu>
    <br/><br/>
    <div id="dhtmlgoodies_slideshow">
    <div id="previewPane">
    <img src="images/image1_big.jpg">
    <span id="waitMessage">Loading image. Please wait</span>
    <div id="largeImageCaption">This is the caption of image number 1</div>
    </div>
    <div id="galleryContainer">
    <div id="arrow_left"><img src="images/arrow_left.gif"></div>
    <div id="arrow_right"><img src="images/arrow_right.gif"></div>
    <div id="theImages">
    <!-- Thumbnails -->
    <a href="#" onclick="showPreview('images/image1_big.jpg','1');return false"><img src="images/image1.jpg"></a>
    <a href="#" onclick="showPreview('images/image2_big.jpg','2');return false"><img src="images/image2.jpg"></a>
    <a href="#" onclick="showPreview('images/image3_big.jpg','3');return false"><img src="images/image3.jpg"></a>
    <a href="#" onclick="showPreview('images/image4_big.jpg','4');return false"><img src="images/image4.jpg"></a>
    <a href="#" onclick="showPreview('images/image5_big.jpg','5');return false"><img src="images/image5.jpg"></a>
    <a href="#" onclick="showPreview('images/image6_big.jpg','6');return false"><img src="images/image6.jpg"></a>
    <a href="#" onclick="showPreview('images/image7_big.jpg','7');return false"><img src="images/image7.jpg"></a>
    <a href="#" onclick="showPreview('images/image8_big.jpg','8');return false"><img src="images/image8.jpg"></a>
    <a href="#" onclick="showPreview('images/pano2_1_norm.jpg','9');return false"><img src="images/pano2_1_small.jpg"></a>
    <!-- End thumbnails -->

    <!-- Image captions -->
    <div class="imageCaption">This is the caption of image number 1</div>
    <div class="imageCaption">This is the caption of image number 2</div>
    <div class="imageCaption">This is the caption of image number 3</div>
    <div class="imageCaption">This is the caption of image number 4</div>
    <div class="imageCaption">This is the caption of image number 5</div>
    <div class="imageCaption">This is the caption of image number 6</div>
    <div class="imageCaption">This is the caption of image number 7</div>
    <div class="imageCaption">This is the caption of image number 8</div>
    <div class="imageCaption"><script src="js/thumbnailviewer.js" type="text/javascript"></script><a href="images/pano2_1.jpg"" rel="thumbnail">View full size image</a></div>
    <!-- End image captions -->

    <div id="slideEnd"></div>
    </div>
    </div>
    </div>
    </body>
    </html>

    Gallery:

    /***********************************************************************************************

    Copyright (c) 2005 - Alf Magne Kalleland post@dhtmlgoodies.com

    UPDATE LOG:

    March, 10th, 2006 : Added support for a message while large image is loading

    Get this and other scripts at www.dhtmlgoodies.com

    You can use this script freely as long as this copyright message is kept intact.

    ***********************************************************************************************/

    var displayWaitMessage=true; // Display a please wait message while images are loading?


    var activeImage = false;
    var imageGalleryLeftPos = false;
    var imageGalleryWidth = false;
    var imageGalleryObj = false;
    var maxGalleryXPos = false;
    var slideSpeed = 0;
    var imageGalleryCaptions = new Array();
    function startSlide(e)
    {
    if(document.all)e = event;
    var id = this.id;
    this.getElementsByTagName('IMG')[0].src = 'images/' + this.id + '_over.gif';
    if(this.id=='arrow_right'){
    slideSpeedMultiply = Math.floor((e.clientX - this.offsetLeft) / 5);
    slideSpeed = -1*slideSpeedMultiply;
    slideSpeed = Math.max(-10,slideSpeed);
    }else{
    slideSpeedMultiply = 10 - Math.floor((e.clientX - this.offsetLeft) / 5);
    slideSpeed = 1*slideSpeedMultiply;
    slideSpeed = Math.min(10,slideSpeed);
    if(slideSpeed<0)slideSpeed=10;
    }
    }

    function releaseSlide()
    {
    var id = this.id;
    this.getElementsByTagName('IMG')[0].src = 'images/' + this.id + '.gif';
    slideSpeed=0;
    }

    function gallerySlide()
    {
    if(slideSpeed!=0){
    var leftPos = imageGalleryObj.offsetLeft;
    leftPos = leftPos/1 + slideSpeed;
    if(leftPos>maxGalleryXPos){
    leftPos = maxGalleryXPos;
    slideSpeed = 0;

    }
    if(leftPos<minGalleryXPos){
    leftPos = minGalleryXPos;
    slideSpeed=0;
    }

    imageGalleryObj.style.left = leftPos + 'px';
    }
    setTimeout('gallerySlide()',20);

    }

    function showImage()
    {
    if(activeImage){
    activeImage.style.filter = 'alpha(opacity=50)';
    activeImage.style.opacity = 0.5;
    }
    this.style.filter = 'alpha(opacity=100)';
    this.style.opacity = 1;
    activeImage = this;
    }

    function initSlideShow()
    {
    document.getElementById('arrow_left').onmousemove = startSlide;
    document.getElementById('arrow_left').onmouseout = releaseSlide;
    document.getElementById('arrow_right').onmousemove = startSlide;
    document.getElementById('arrow_right').onmouseout = releaseSlide;

    imageGalleryObj = document.getElementById('theImages');
    imageGalleryLeftPos = imageGalleryObj.offsetLeft;
    imageGalleryWidth = document.getElementById('galleryContainer').offsetWidth - 80;
    maxGalleryXPos = imageGalleryObj.offsetLeft;
    minGalleryXPos = imageGalleryWidth - document.getElementById('slideEnd').offsetLeft;
    var slideshowImages = imageGalleryObj.getElementsByTagName('IMG');
    for(var no=0;no<slideshowImages.length;no++){
    slideshowImages[no].onmouseover = showImage;
    }

    var divs = imageGalleryObj.getElementsByTagName('DIV');
    for(var no=0;no<divs.length;no++){
    if(divs[no].className=='imageCaption')imageGalleryCaptions[imageGalleryCaptions.length] = divs[no].innerHTML;
    }
    gallerySlide();
    }

    function showPreview(imagePath,imageIndex){
    var subImages = document.getElementById('previewPane').getElementsByTagName('IMG');
    if(subImages.length==0){
    var img = document.createElement('IMG');
    document.getElementById('previewPane').appendChild(img);
    }else img = subImages[0];

    if(displayWaitMessage){
    document.getElementById('waitMessage').style.display='inline';
    }
    document.getElementById('largeImageCaption').style.display='none';
    img.onload = function() { hideWaitMessageAndShowCaption(imageIndex-1); };
    img.src = imagePath;

    }
    function hideWaitMessageAndShowCaption(imageIndex)
    {
    document.getElementById('waitMessage').style.display='none';
    document.getElementById('largeImageCaption').innerHTML = imageGalleryCaptions[imageIndex];
    document.getElementById('largeImageCaption').style.display='block';

    }
    window.onload = initSlideShow;

    Thumbnail code in next post.

  2. #2
    Join Date
    Aug 2008
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default

    Thumbnail:

    // -------------------------------------------------------------------
    // Image Thumbnail Viewer Script- By Dynamic Drive, available at: http://www.dynamicdrive.com
    // Last updated: July 7th, 2008- Fixed enlarged image not showing in IE sometimes
    // -------------------------------------------------------------------

    var thumbnailviewer={
    enableTitle: true, //Should "title" attribute of link be used as description?
    enableAnimation: true, //Enable fading animation?
    definefooter: '<div class="footerbar">CLOSE X</div>', //Define HTML for footer interface
    defineLoading: '<img src="loading.gif" /> Loading Image...', //Define HTML for "loading" div

    /////////////No need to edit beyond here/////////////////////////

    scrollbarwidth: 16,
    opacitystring: 'filterrogidXImageTransform.Microsoft.alpha(opacity=10); -moz-opacity: 0.1; opacity: 0.1',
    targetlinks:[], //Array to hold links with rel="thumbnail"

    createthumbBox:function(){
    //write out HTML for Image Thumbnail Viewer plus loading div
    document.write('<div id="thumbBox" onClick="thumbnailviewer.closeit()"><div id="thumbImage"></div>'+this.definefooter+'</div>')
    document.write('<div id="thumbLoading">'+this.defineLoading+'</div>')
    this.thumbBox=document.getElementById("thumbBox")
    this.thumbImage=document.getElementById("thumbImage") //Reference div that holds the shown image
    this.thumbLoading=document.getElementById("thumbLoading") //Reference "loading" div that will be shown while image is fetched
    this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
    },


    centerDiv:function(divobj){ //Centers a div element on the page
    var ie=document.all && !window.opera
    var dom=document.getElementById
    var scroll_top=(ie)? this.standardbody.scrollTop : window.pageYOffset
    var scroll_left=(ie)? this.standardbody.scrollLeft : window.pageXOffset
    var docwidth=(ie)? this.standardbody.clientWidth : window.innerWidth-this.scrollbarwidth
    var docheight=(ie)? this.standardbody.clientHeight: window.innerHeight
    var docheightcomplete=(this.standardbody.offsetHeight>this.standardbody.scrollHeight)? this.standardbody.offsetHeight : this.standardbody.scrollHeight //Full scroll height of document
    var objwidth=divobj.offsetWidth //width of div element
    var objheight=divobj.offsetHeight //height of div element
    var topposition=(docheight>objheight)? scroll_top+docheight/2-objheight/2+"px" : scroll_top+10+"px" //Vertical position of div element: Either centered, or if element height larger than viewpoint height, 10px from top of viewpoint
    divobj.style.left=docwidth/2-objwidth/2+"px" //Center div element horizontally
    divobj.style.top=Math.floor(parseInt(topposition))+"px"
    divobj.style.visibility="visible"
    },

    showthumbBox:function(){ //Show ThumbBox div
    thumbnailviewer.thumbLoading.style.visibility="hidden" //Hide "loading" div
    this.centerDiv(this.thumbBox)
    if (this.enableAnimation){ //If fading animation enabled
    this.currentopacity=0.1 //Starting opacity value
    this.opacitytimer=setInterval("thumbnailviewer.opacityanimation()", 20)
    }
    },


    loadimage:function(link){ //Load image function that gets attached to each link on the page with rel="thumbnail"
    if (this.thumbBox.style.visibility=="visible") //if thumbox is visible on the page already
    this.closeit() //Hide it first (not doing so causes triggers some positioning bug in Firefox
    var imageHTML='<img src="'+link.getAttribute("href")+'" style="'+this.opacitystring+'" />' //Construct HTML for shown image
    if (this.enableTitle && link.getAttribute("title")) //Use title attr of the link as description?
    imageHTML+='<br />'+link.getAttribute("title")
    this.centerDiv(this.thumbLoading) //Center and display "loading" div while we set up the image to be shown
    this.thumbImage.innerHTML=imageHTML //Populate thumbImage div with shown image's HTML (while still hidden)
    this.featureImage=this.thumbImage.getElementsByTagName("img")[0] //Reference shown image itself
    if (this.featureImage.complete)
    thumbnailviewer.showthumbBox()
    else{
    this.featureImage.onload=function(){ //When target image has completely loaded
    thumbnailviewer.showthumbBox() //Display "thumbbox" div to the world!
    }
    }
    if (document.all && !window.createPopup) //Target IE5.0 browsers only. Address IE image cache not firing onload bug: panoramio.com/blog/onload-event/
    this.featureImage.src=link.getAttribute("href")
    this.featureImage.onerror=function(){ //If an error has occurred while loading the image to show
    thumbnailviewer.thumbLoading.style.visibility="hidden" //Hide "loading" div, game over
    }
    },

    setimgopacity:function(value){ //Sets the opacity of "thumbimage" div per the passed in value setting (0 to 1 and in between)
    var targetobject=this.featureImage
    if (targetobject.filters && targetobject.filters[0]){ //IE syntax
    if (typeof targetobject.filters[0].opacity=="number") //IE6
    targetobject.filters[0].opacity=value*100
    else //IE 5.5
    targetobject.style.filter="alpha(opacity="+value*100+")"
    }
    else if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
    targetobject.style.MozOpacity=value
    else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
    targetobject.style.opacity=value
    else //Non of the above, stop opacity animation
    this.stopanimation()
    },

    opacityanimation:function(){ //Gradually increase opacity function
    this.setimgopacity(this.currentopacity)
    this.currentopacity+=0.1
    if (this.currentopacity>1)
    this.stopanimation()
    },

    stopanimation:function(){
    if (typeof this.opacitytimer!="undefined")
    clearInterval(this.opacitytimer)
    },


    closeit:function(){ //Close "thumbbox" div function
    this.stopanimation()
    this.thumbBox.style.visibility="hidden"
    this.thumbImage.innerHTML=""
    this.thumbBox.style.left="-2000px"
    this.thumbBox.style.top="-2000px"
    },

    cleanup:function(){ //Clean up routine on page unload
    this.thumbLoading=null
    if (this.featureImage) this.featureImage.onload=null
    this.featureImage=null
    this.thumbImage=null
    for (var i=0; i<this.targetlinks.length; i++)
    this.targetlinks[i].onclick=null
    this.thumbBox=null
    },

    dotask: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 by scanning page and attaching appropriate function to links with rel="thumbnail"
    if (!this.enableAnimation)
    this.opacitystring=""
    var pagelinks=document.getElementsByTagName("a")
    for (var i=0; i<pagelinks.length; i++){ //BEGIN FOR LOOP
    if (pagelinks[i].getAttribute("rel") && pagelinks[i].getAttribute("rel")=="thumbnail"){ //Begin if statement
    pagelinks[i].onclick=function(){
    thumbnailviewer.stopanimation() //Stop any currently running fade animation on "thumbbox" div before proceeding
    thumbnailviewer.loadimage(this) //Load image
    return false
    }
    this.targetlinks[this.targetlinks.length]=pagelinks[i] //store reference to target link
    } //end if statement
    } //END FOR LOOP
    //Reposition "thumbbox" div when page is resized
    this.dotask(window, function(){if (thumbnailviewer.thumbBox.style.visibility=="visible") thumbnailviewer.centerDiv(thumbnailviewer.thumbBox)}, "resize")


    } //END init() function

    }

    thumbnailviewer.createthumbBox() //Output HTML for the image thumbnail viewer
    thumbnailviewer.dotask(window, function(){thumbnailviewer.init()}, "load") //Initialize script on page load
    thumbnailviewer.dotask(window, function(){thumbnailviewer.cleanup()}, "unload")

    I have tried a few different method to get round it yet none of them worked. I have a weak knowledge of JS, so really my attempts were very much guess work at times.

    I would be very grateful for any assistance on this matter.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •