/* Title: Palm Photo Gallery JavaScript Description: The file contains the gallery JavaScript object within the defined name-space of 'palm'. All method, properties and variables are to be contained within this name-space to prevent conflicts and promote consistency. Created: 22nd Oct 2008 Last Modified: 22nd Oct 2008 Author: Jamie Newman Contact: jnewman@digitas.com Requirements: * MooTools 1.2 * Palm Global Javascript (palm.js) */ palm.tools.gallery = { /* Function: Gallery Javascript * Version: 0.1 * * Description: * Gallery with 6 thumbnail images and one large image. */ showTime: 300, init: function(){ window.addEvent('domready', function() { palm.tools.gallery.setup(); }); }, setup: function(){ if (!$("autorun")) return false; this.myImg = $("autorun"); this.elementsL = $("left_content").getElements("DIV"); this.elementsLA = $("left_content").getElements("A"); this.elementsR = $("right_top").getElements("LI"); this.elementsB = $("bottom_content").getElements("DIV"); this.myImg.set('tween', {duration: palm.tools.gallery.showTime, link: 'chain'}); this.sel_pic_sel = "sel_pic_sel"; this.sel_pic = "sel_pic"; this.send_to = "send_to"; this.send_to_sel = "sel_send_to"; this.path_big_pic = "images/standard/big_pic_"; this.path_big_pic_images = "images/"; this.path_big_pic_big = "/big_pic_"; this.timer = {}; this.elementsR.each(function(el){ /* * Add mouse behaviours - over/out/click */ if(el.className==palm.tools.gallery.sel_pic || el.className==palm.tools.gallery.sel_pic_sel){ el.addEvent("mouseover",function(){ el.className = palm.tools.gallery.sel_pic_sel; }); el.addEvent("mouseout",function(){ el.className = palm.tools.gallery.sel_pic; palm.tools.gallery.selSmallPic(); }); el.getFirst().addEvent("click",function(){ $clear(palm.tools.gallery.timer); var imgele = el.getElements("IMG"); imgele.each(function(ele){ var s = ele.src.substring(ele.src.indexOf("sel_pic_")+8); s = s.substring(0, s.indexOf(".")); palm.tools.gallery.showImg(ele,s); }); return false; }); } }); this.galleryTitle = this.myImg.get("title"); palm.tools.gallery.autoRun(); palm.tools.gallery.rightPortClick(); palm.tools.gallery.conBotClick(); palm.tools.gallery.selSmallPic(); palm.tools.gallery.loadPic(); palm.tools.gallery.reattachLightbox(this.myImg.src.substr(this.myImg.src.indexOf("big_pic_")+8,1)); }, reattachLightbox: function(currentImage){ var activeLB = palm.tools.gallery.myImg.getParent(); if(activeLB.get("id") == "lbActivator"){ $$("a.dynamicLightbox").destroy(); activeLB.set("href",palm.tools.gallery.myImg.src.replace("big_pic_","light_")); var i = 1; $$("div#right_top img").each(function(el) { if(i != currentImage){ var newA = new Element("A", { "title": activeLB.title, "href": el.src.replace("sel_pic_","light_"), "class": "dynamicLightbox", "rel": "lightbox[heroImage]" }); if(i < currentImage) { $("main_pic_id").grab(newA,'top'); }else{ $("main_pic_id").grab(newA,'bottom'); } } i++; }); Slimbox.scanPage(); } }, showImg: function(thumbnailLink, imageIndex) { var bigImgSrc = thumbnailLink.src.substring(thumbnailLink.src.indexOf("images/")+7, thumbnailLink.src.lastIndexOf("/")); var altText = thumbnailLink.alt; var randNum = $random(0,999999); var newImg = new Element("img").setStyle("display","none").set('tween',{duration: 0}).tween('opacity',0); newImg.injectAfter(this.myImg); $(newImg).addEvent("load", function() { function fadeIn(){ /* * Old method using 2 image elements to replace each other palm.tools.gallery.myImg.destroy(); palm.tools.gallery.myImg = $(newImg); */ palm.tools.gallery.myImg.set('src',newImg.src); palm.tools.gallery.myImg.setStyle('display','block'); palm.tools.gallery.myImg.set('id','autorun'); palm.tools.gallery.myImg.set('tween',{duration: palm.tools.gallery.showTime, link: 'chain'}); palm.tools.gallery.myImg.set('alt', altText); palm.tools.gallery.myImg.tween('opacity',[0.1,1]); palm.tools.gallery.displayNone(); $(newImg).destroy(); palm.tools.gallery.reattachLightbox(newImg.src.substr(newImg.src.indexOf("big_pic_")+8,1)); if($("main_text_"+imageIndex)){ $("main_text_"+imageIndex).setStyle("display",""); } palm.tools.gallery.clearBorder(); $("sel_pic_"+imageIndex).className = palm.tools.gallery.sel_pic_sel; }; palm.tools.gallery.myImg.tween('opacity',[1,0.1]); fadeIn.delay(palm.tools.gallery.showTime); }); newImg.src = palm.asset_prefix+this.path_big_pic_images+bigImgSrc+this.path_big_pic_big+imageIndex+".jpg?"+randNum; }, autoRun: function (i){ if($("autorun")){ var startingId = (this.elementsR.filter(".sel_pic_sel").get("id")); startingId = startingId.toString().replace("sel_pic_",""); var i = parseInt(startingId) + 1; changeImg = function(){ if(i == 7){ i = 1; var z = i++; } else { var z = i++; } var ele = $("sel_pic_"+(i-1)).getElement("img"); palm.tools.gallery.showImg(ele,z); } this.timer = changeImg.periodical(5000); } }, rightPortClick: function (){ this.elementsR.each(function(el){ if(el.get("class").indexOf("right_list_stand")!=-1){ el.addEvent("click",function(){ document.location.href = el.getElement("A").href; }); } }); }, conBotClick: function conBotClick(){ this.elementsB.each(function(el){ if(el.id=="bot_left"){ el.addEvent("click",function(){ document.location.href = el.getElement("A").href; }); } if(el.id=="bot_right"){ el.addEvent("click",function(){ document.location.href = el.getElement("A").href; }); } }); }, loadPic: function(){ var j = 0; var loadPics = new Array(); this.elementsR.each(function(el){ if(el.className==palm.tools.gallery.sel_pic || el.className==palm.tools.gallery.sel_pic_sel){ j++; loadPics[j-1] = el.getElement("IMG").src.replace("sel_pic_","big_pic_"); } }); new Asset.images(loadPics); }, selSmallPic: function(){ this.elementsR.each(function(el){ if(el.className==palm.tools.gallery.sel_pic){ var s = palm.tools.gallery.myImg.src.substring(palm.tools.gallery.myImg.src.indexOf("big_pic_")+8); s = s.substring(0,s.indexOf(".")); $("sel_pic_"+s).className = palm.tools.gallery.sel_pic_sel; } }); }, clearBorder: function(){ this.elementsR.each(function(el){ if(el.className==palm.tools.gallery.sel_pic_sel){ el.className = palm.tools.gallery.sel_pic; } }); }, displayNone: function(){ this.elementsR.each(function(el){ if(el.id.indexOf("main_text_")!=-1){ el.setStyle("display","none"); } }); }, setTextHeight: function(){ var a = $("right_content").getStyle("height"); var b = $("main_pic_id").getStyle("height"); var c = parseInt(a) - parseInt(b); this.elementsL.each(function(el){ if(el.className=="main_text") el.setStyle("height",c+"px"); }); } }; palm.tools.gallery.init();