// --- /* JaS is developed by Robert Nyman, http://www.robertnyman.com For more information, please see http://www.robertnyman.com/jas */ var JaS = { // Customization parameters imagePath : "pictures/", images : [ ["1.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."], ["2.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."], ["3.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."], ["4.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."], ["5.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."], ["6.jpg", "

Picture One

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In placerat mi in turpis. Donec in urna tristique metus lobortis posuere. In hac habitasse platea dictumst. Ut ac enim vitae ligula malesuada laoreet. Nunc malesuada tristique odio. Proin ornare aliquet nulla."] ], fadeContainerId : "jas-container", imageContainerId : "jas-image", imageTextContainerId : "jas-image-text", previousLinkId : "previous-image", nextLinkId : "next-image", imageCounterId : "image-counter", startSlideShowId : "start-slideshow", stopSlideShowId : "stop-slideshow", dimBackgroundOverlayId : "jas-dim-overlay", dimBackgroundId : "dim-background", noDimBackgroundId : "no-dim-background", thumbnailContainerId: "jas-thumbnails", tagsContainerId: "jas-tags", tagsSelectAllId: "jas-select-all-tags", useImageText : true, useThumbnails : true, allowDimmedBackground : true, automaticallyDimBackgroundWhenSlideShow : true, useTags : true, useKeyboardShortcuts : true, useFadingIn : true, useFadingOut : true, useFadeWhenNotSlideshow : false, useFadeForSlideshow : true, useFadeAtInitialLoad : false, fadeIncrement : 0.1, fadeInterval : 100, // Milliseconds timeForSlideInSlideshow : 1500, // Milliseconds // JaS function parameters allImages : null, currentImages : null, fadeContainer : null, imageContainer : null, imageTextContainer : null, previousLink : null, nextLink : null, dimBackgroundOverlay : null, dimBackgroundLink : null, noDimBackgroundLink : null, dimmingActivated : false, imageCounter : null, startSlideShowLink : null, stopSlideShowLink : null, thumbnailContainer : null, thumbnailCollection : [], currentThumbnailSelected : null, tagsContainer : null, tagsSelectAll : null, tagsList : null, tags : [], tagsCheckboxes : [], selectAllTags : true, imageText : null, imageText : "", imageSource : "", imageIndex : 0, fadingIn : true, fadeLevel : 0, fadeEndLevel : 1, fadeTimer : null, hasOpacitySupport : false, useMSFilter : false, useMSCurrentStyle : false, slideshowIsSupported : false, slideshowIsPlaying : false, functionAfterFade : null, isInitialLoad : false, init : function (){ if($){ this.fadeContainer = $(this.fadeContainerId); this.imageContainer = $(this.imageContainerId); this.slideshowIsSupported = this.fadeContainer && this.imageContainer; if(this.slideshowIsSupported){ this.allImages = this.images; this.currentImages = this.images; if(this.useImageText){ this.imageTextContainer = $(this.imageTextContainerId); if(!this.imageTextContainer){ this.useImageText = false; } } this.hasOpacitySupport = typeof this.fadeContainer.style.filter != "undefined" || typeof this.fadeContainer.style.opacity != "undefined"; this.useMSFilter = typeof this.fadeContainer.style.filter != "undefined"; this.useMSCurrentStyle = typeof this.fadeContainer.currentStyle != "undefined"; this.previousLink = $(this.previousLinkId); this.previousLink.onclick = JaS.previousLinkClick; this.nextLink = $(this.nextLinkId); this.nextLink.onclick = JaS.nextLinkClick; this.imageCounter = $(this.imageCounterId); this.startSlideShowLink = $(this.startSlideShowId); if(this.startSlideShowLink){ this.startSlideShowLink.style.display = "inline"; } this.startSlideShowLink.onclick = JaS.startSlideShowClick; this.stopSlideShowLink = $(this.stopSlideShowId); if(this.stopSlideShowLink){ this.stopSlideShowLink.style.display = "none"; } this.stopSlideShowLink.onclick = JaS.stopSlideshowClick; if(this.allowDimmedBackground){ this.dimBackgroundOverlay = $(this.dimBackgroundOverlayId); this.dimBackgroundLink = $(this.dimBackgroundId); this.noDimBackgroundLink = $(this.noDimBackgroundId); if(this.dimBackgroundOverlay && this.dimBackgroundLink && this.noDimBackgroundLink){ this.dimBackgroundLink.onclick = JaS.dimBackgroundClick; this.noDimBackgroundLink.onclick = JaS.noDimackgroundClick; this.noDimBackgroundLink.style.display = "none"; this.dimmingActivated = true; } } if(this.useKeyboardShortcuts){ document.onkeydown = JaS.documentKeyDown; } this.thumbnailContainer = $(this.thumbnailContainerId); if(this.useThumbnails && this.thumbnailContainer){ this.createThumbnails(); } this.tagsContainer = $(this.tagsContainerId); if(this.useTags && this.tagsContainer){ this.tagsSelectAll = $(this.tagsSelectAllId); if(this.tagsSelectAll){ this.tagsSelectAll.onclick = JaS.tagsSelectAllClick; this.createTagList(); } } this.isInitialLoad = true; this.setImage(); this.isInitialLoad = false; } } }, previousLinkClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.previousImage(); }, nextLinkClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.nextImage(); }, startSlideShowClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.startSlideshow(); }, stopSlideshowClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.stopSlideshow(); }, dimBackgroundClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.dimBackground(); }, documentKeyDown : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.applyKeyboardNavigation(oEvent); }, tagsSelectAllClick : function (oEvent){ JaS.tagsSelectAll = this.checked; JaS.markAllTags(); }, noDimackgroundClick : function(oEvent){ var oEvent = (typeof oEvent != "undefined")? oEvent : event; JaS.preventDefaultEventBehavior(oEvent); JaS.noDimBackground(); }, setImage : function (){ if(this.currentImages.length > 0){ this.imageContainer.style.visibility = "visible"; this.imageSource = this.currentImages[this.imageIndex][0]; this.imageText = this.currentImages[this.imageIndex][1]; if(this.useFadingOut && (this.slideshowIsPlaying && this.useFadeForSlideshow) || (!this.slideshowIsPlaying && this.useFadeWhenNotSlideshow) && (this.useFadeAtInitialLoad && this.isInitialLoad || !this.isInitialLoad)){ this.fadeOut(); } else{ this.displayImageCount(); this.imageContainer.setAttribute("src", (this.imagePath + this.imageSource)); this.setImageText(); this.previousLink.style.visibility = (this.imageIndex > 0)? "visible" : "hidden"; this.nextLink.style.visibility = (this.imageIndex < (this.currentImages.length - 1))? "visible" : "hidden"; if((this.useFadeAtInitialLoad && this.isInitialLoad || !this.isInitialLoad) && ((this.slideshowIsPlaying && this.useFadeForSlideshow) || (!this.slideshowIsPlaying && this.useFadeWhenNotSlideshow))){ this.fadeIn(); } } if(this.useThumbnails){ this.markCurrentThumbnail(); } } else{ this.imageSource = ""; this.imageText = ""; this.displayImageCount(); this.imageContainer.style.visibility = "hidden"; this.setImageText(); } }, displayImageCount : function (){ if(this.imageCounter){ this.imageCounter.innerHTML = (((this.currentImages.length > 0)? this.imageIndex : -1) + 1) + " / " + this.currentImages.length; } }, nextImage : function (){ if(this.imageIndex < (this.currentImages.length - 1)){ ++this.imageIndex; this.setImage(); } else if(this.slideshowIsPlaying){ this.stopSlideshow(); this.imageIndex = 0; this.setImage(); } }, previousImage : function (){ if(this.imageIndex > 0){ --this.imageIndex; this.setImage(); } }, setImageText : function (){ this.imageTextContainer.setAttribute("alt", this.imageText); if(this.useImageText && typeof this.imageText == "string"){ this.imageTextContainer.innerHTML = this.imageText; } }, setDimBackgroundSize : function(){ var oDimBackground = this.dimBackgroundOverlay.style; var intWidth = document.body.offsetWidth; var intXScroll = (typeof window.pageXOffset != "undefined")? window.pageXOffset : document.body.scrollLeft; var intHeight = (typeof window.innerHeight != "undefined")? window.innerHeight : (document.documentElement)? document.documentElement.clientHeight : document.body.clientHeight; var intYScroll = (typeof window.window.pageYOffset != "undefined")? window.window.pageYOffset : (document.documentElement)? document.documentElement.scrollTop : document.documentElement.scrollTop; oDimBackground.width = intWidth + intXScroll + "px"; oDimBackground.height = intHeight + intYScroll + "px"; }, dimBackground : function (){ this.setDimBackgroundSize(); this.dimBackgroundOverlay.style.display = "block"; this.noDimBackgroundLink.style.display = "inline"; }, noDimBackground : function (fromStopSlideshow){ this.dimBackgroundOverlay.style.display = "none"; this.noDimBackgroundLink.style.display = "none"; if(!fromStopSlideshow){ this.stopSlideshow(); } }, startSlideshow : function (){ if(this.currentImages.length > 0){ this.startSlideShowLink.style.display = "none"; this.stopSlideShowLink.style.display = "inline"; this.slideshowIsPlaying = true; this.fadeTimer = setTimeout("JaS.nextImage()", JaS.timeForSlideInSlideshow); if(this.dimmingActivated && this.automaticallyDimBackgroundWhenSlideShow){ this.dimBackground(); } } }, stopSlideshow : function (){ if(this.currentImages.length > 0){ this.startSlideShowLink.style.display = "inline"; this.stopSlideShowLink.style.display = "none"; this.slideshowIsPlaying = false; this.setFadeParams(false, 1, 0); this.setFade(); clearTimeout(this.fadeTimer); if(this.dimmingActivated && this.automaticallyDimBackgroundWhenSlideShow){ this.noDimBackground(true); } } }, fadeIn : function (){ this.setFadeParams(true, 0, 1); this.functionAfterFade = null; this.fade(); if(this.slideshowIsPlaying){ this.functionAfterFade = "this.startSlideshow()"; } }, fadeOut : function (){ this.setFadeParams(false, 1, 0); this.functionAfterFade = "this.fadeOutDone()"; this.fade(); }, fadeOutDone : function (){ this.displayImageCount(); this.imageContainer.setAttribute("src", (this.imagePath + this.imageSource)); this.setImageText(); if(this.useFadingIn){ this.fadeIn(); } else{ this.fadeLevel = 1; this.setFade(); } }, fade : function (){ if((this.fadingIn && this.fadeLevel < this.fadeEndLevel) || !this.fadingIn && this.fadeLevel > this.fadeEndLevel){ this.fadeLevel = (this.fadingIn)? this.fadeLevel + this.fadeIncrement : this.fadeLevel - this.fadeIncrement; // This line is b/c of a floating point bug in JavaScript this.fadeLevel = Math.round(this.fadeLevel * 10) / 10; this.setFade(); this.fadeTimer = setTimeout("JaS.fade()", this.fadeInterval); } else{ clearTimeout(this.fadeTimer); if(this.functionAfterFade){ eval(this.functionAfterFade); } } }, setFade : function (){ if(this.useMSFilter){ this.fadeContainer.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=" + (this.fadeLevel * 100) + ")"; } else{ this.fadeContainer.style.opacity = this.fadeLevel; } }, setFadeParams : function (bFadingIn, intStartLevel, intEndLevel){ this.fadingIn = bFadingIn; this.fadeLevel = intStartLevel; this.fadeEndLevel = intEndLevel; }, createThumbnails : function (){ this.thumbnailContainer.innerHTML = ""; this.thumbnailCollection = []; var oThumbnailsList = document.createElement("ul"); var oListItem; var oThumbnail; var oCurrentImage; for(var i=0; i 0){ this.markCurrentThumbnail(); } if(this.slideshowIsPlaying){ this.stopSlideshow(); } }, thumbnailClick : function (oEvent){ JaS.imageIndex = parseInt(this.getAttribute("id").replace(/\D*(\d+)$/, "$1"), 10); JaS.setImage(); }, markCurrentThumbnail : function (){ if(this.currentThumbnailSelected){ this.currentThumbnailSelected.className = ""; // Sometimes, in IE, the image loses its reference to its parent if(this.currentThumbnailSelected.parentNode){ this.currentThumbnailSelected.parentNode.className = ""; } } this.currentThumbnailSelected = this.thumbnailCollection[this.imageIndex]; this.currentThumbnailSelected.className = "selected"; this.currentThumbnailSelected.parentNode.className = "selected-parent"; }, createTagList : function (){ var strCurrentTag; var arrCurrentTag; var oRegExp; for(var i=0; i