// JavaScript Document //ReahNorman.com //Javascript Photo Gallery //Created by: Tiina Vuorenmaa //versatii.com //Updated: 9/25/2009 ///set up variables //alert ("checking"); var mainImage; var mainImageDiv; var captionDiv; var mainImageWidth = 400; var mainImageHeight = 300; var newWidth = 0; var newHeight = 0; var caption1; var caption2; var caption3; var caption1Text; var caption2Text; var caption3Text; var caption1TextNode; var caption2TextNode; var caption3TextNode; var thumbnails; var currentBrowser; var imagePath; //alert ("checking"); addLoadEvent(checkBrowser); //alert ("checking"); /****************************************************************/ //http://simonwillison.net/2004/May/26/addLoadEvent/ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); } } } /****************************************************************/ function checkBrowser() { //alert ("checking"); //check to make sure javacript works if (!document.getElementsByTagName) return false; if (!document.getElementById) return false; if (!document.getElementById("thumbnails"))return false; if (!document.getElementById("mainImageBkg"))return false; //alert ("all good"); currentBrowser = detectBrowser(); setUpMainArea(); } /****************************************************************/ function detectBrowser() { var browser=navigator.appName; var b_version=navigator.appVersion; var version=parseFloat(b_version); var thisBrowser=""; if ((browser=="Microsoft Internet Explorer") && (version>=4)) { // alert("ie"); thisBrowser="IE"; return thisBrowser; } else { thisBrowser="notIE"; return thisBrowser; } } /****************************************************************/ function setUpMainArea() { //create the main image mainImage = document.createElement("img"); mainImage.id = "mainImage"; mainImage.width = mainImageWidth; mainImage.height = mainImageHeight; //mainImage.setAttribute("id","mainImage"); mainImage.setAttribute("alt","Photo Styling by Reah Norman"); mainImage.setAttribute("src","../images/fashion/victoria_samurai_2.jpg"); //alert(mainImage.width); if (currentBrowser == "IE") { mainImage.filters.alpha.opacity = 100; } else { mainImage.style.MozOpacity = 1; } //put the image in the div mainImageDiv = document.getElementById("mainImageBkg"); mainImageDiv.appendChild(mainImage); mainImageDiv.style.width = mainImageWidth + "px"; mainImageDiv.style.height = mainImageHeight + "px"; alert(mainImageDiv.style.height); //creates the paragraph tag captionDiv = document.getElementById("captionDiv"); //alert(captionDiv); //creates the text to put in the paragraph tag caption1Text = "Click on a thumbnail to the right to view an image above."; caption2Text = " "; caption3Text = " "; caption1TextNode = document.createTextNode(caption1Text); caption2TextNode = document.createTextNode(caption2Text); caption3TextNode = document.createTextNode(caption3Text); caption1 = document.createElement("p"); caption1.className = "caption"; caption1.appendChild(caption1TextNode); caption2 = document.createElement("p"); caption2.className = "caption"; caption2.appendChild(caption2TextNode); caption3 = document.createElement("p"); caption3.className = "caption"; caption3.appendChild(caption3TextNode); captionDiv.appendChild(caption1); captionDiv.appendChild(caption2); captionDiv.appendChild(caption3); imageGallery(); } /****************************************************************/ function imageGallery() { //get the thumbnails section thumbnails = document.getElementById("thumbnails"); //grab the a links from this section var thumblinks = thumbnails.getElementsByTagName("a"); //alert (thumblinks); //go thru the links and do the related function for each link for(var i=0; i < thumblinks.length; i++) { thumblinks[i].onclick = function(){ //alert("showpic"); showPic(this); //i'm inside the a tag - this tag! return false; //don't do the usual href link } } } /****************************************************************/ function showPic(thisLink) { // 1. get the img src from the href tag imagePath = thisLink.getAttribute("href"); //alert(imagePath); //get the title description caption1Text = thisLink.getAttribute("title"); //alert(caption1Text); // 2. get captions from the span tags within the href tag //alert(thisLink.lastChild.previousSibling); if(thisLink.lastChild.previousSibling) { caption2Text = thisLink.lastChild.previousSibling.firstChild.nodeValue; } else { caption2Text = ""; } //alert(caption2Text); //alert(thisLink.lastChild.previousSibling.previousSibling.previousSibling); if(thisLink.lastChild.previousSibling.previousSibling.previousSibling) { caption3Text = thisLink.lastChild.previousSibling.previousSibling.previousSibling.firstChild.nodeValue; } else { caption3Text = ""; } //alert(caption3Text); // 3. preload image and get height and width properties var nextImage = new Image(); nextImage.src = imagePath; //alert(nextImage); //alert(nextImage.src); newHeight = nextImage.height; newWidth = nextImage.width; alert(newHeight); alert(newWidth); // 4. fade out image using css //alert(currentBrowser); fadeOutImage(); // 5. check when the image is completely faded // 6. add the new src to the image tag //mainImageResize(); // 7. animate the change of width of the div // 8. animate the change of lenght of the div // 9. check when the length is done animating // 10. fade in the image using css //fadeInImage(); // 11. change the nodes of the two caption divs } /****************************************************************/ function mainImageResize() { //alert("mainImage = " + mainImage.width); //alert(newHeight); //alert(newWidth); if ((mainImage.width == newWidth) && (mainImage.height == newHeight)) { clearTimeout(resizing); mainImage.setAttribute("src", imagePath); mainImage.alt = caption1Text; fadeInImage(); return true; } if (mainImage.width < newWidth) { mainImage.width ++; } else if (mainImage.width > newWidth) { mainImage.width --; } if (mainImage.height < newHeight) { mainImage.height ++; } else if(mainImage.height > newHeight){ mainImage.height --; } mainImageDiv.style.width = mainImage.width + "px"; mainImageDiv.style.height = mainImage.height + "px"; var resizing = setTimeout("mainImageResize()",1); } /****************************************************************/ function fadeOutImage() { if((currentBrowser == "IE" && mainImage.filters.alpha.opacity<=0) || (mainImage.style.MozOpacity <= 0)) { clearTimeout(fadingOut); mainImageResize(); return true; } if(currentBrowser == "IE") { mainImage.filters.alpha.opacity -= 5; } else { mainImage.style.MozOpacity = Math.min(parseFloat(mainImage.style.MozOpacity)-0.05, 1); } var fadingOut = setTimeout("fadeOutImage()",100); } /****************************************************************/ function fadeInImage() { if((currentBrowser == "IE" && mainImage.filters.alpha.opacity>=100) || (mainImage.style.MozOpacity >= 1)) { clearTimeout(fadingIn); caption1.firstChild.nodeValue = caption1Text; caption2.firstChild.nodeValue = caption2Text; caption3.firstChild.nodeValue = caption3Text; return true; } if(currentBrowser == "IE") { mainImage.filters.alpha.opacity += 5; } else { mainImage.style.MozOpacity = Math.min(parseFloat(mainImage.style.MozOpacity)+0.05, 1); } var fadingIn = setTimeout("fadeInImage()",100); }