function NumberButton(buttonOnImageSrc, buttonOffImageSrc) { this.buttonOnImage = new Image(); this.buttonOnImage.src = buttonOnImageSrc; this.buttonOffImage = new Image(); this.buttonOffImage.src = buttonOffImageSrc; } function PopupSlider(id, interval, autoStart, numberButtons) { this.id = id; this.interval = interval==null?5000:interval; this.autoStart = autoStart==null?false:autoStart; this.numberButtons = numberButtons; this.startSlideNumber = 0; this.playSlideNumber = 0; this.endSlideNumber = 0; this.slidePlaying = false; this.timer = null; } PopupSlider.prototype.initNumberButtons = function() { if(this.numberButtons != null) return; this.numberButtons = new Array(); for(var i = 1 ; i <= 6 ; i++) { this.numberButtons[this.numberButtons.length] = new NumberButton("/images/main/tab_notice_0" + i + "1.gif","/images/main/tab_notice_0" + i + "2.gif"); } } PopupSlider.prototype.initSlider = function() { this.initNumberButtons(); var slidePanel = $(this.id); if(!slidePanel) return; var slides = slidePanel.getElementsByTagName("dl"); this.endSlideNumber = slides.length-1; for(i = 0 ; i < slides.length ; i++ ){ var imgs = slides[i].getElementsByTagName("img"); if(imgs && imgs.length > 1) { imgs[0].id = this.id + "-number" + (i + 1); imgs[0].onclick = this.numberClick(this, i); imgs[1].id = this.id + "-slideImage" + (i + 1); } var dds = slides[i].getElementsByTagName("dd"); if(dds && dds.length > 0) { dds[0].id = this.id + "-slide" + (i + 1); } } if(this.autoStart) { this.startSlider(); } } PopupSlider.prototype.numberClick = function(slider, num) { return ( function() { if(slider.playSlideNumber == num) return false; if(slider.slidePlaying) return false; slider.slidePlaying = true; if(slider.timer) clearTimeout(slider.timer); var fromSlideNumber = slider.playSlideNumber; slider.playSlideNumber = num; slider.transition(slider, fromSlideNumber, num); } ); } PopupSlider.prototype.startSlider = function() { this.timer = setTimeout(this.fadeInOut(this), this.interval); } PopupSlider.prototype.fadeInOut = function (slider) { return (function() { if(slider.slidePlaying) return; slider.slidePlaying = true; var fromSlideNumber = slider.playSlideNumber; if(fromSlideNumber == slider.endSlideNumber) { slider.playSlideNumber = slider.startSlideNumber; } else { slider.playSlideNumber++; } toSlideNumber = slider.playSlideNumber; slider.transition(slider, fromSlideNumber, toSlideNumber); if(slider.timer) clearTimeout(slider.timer); slider.timer = setTimeout(slider.fadeInOut(slider), slider.interval + 850); }); } PopupSlider.prototype.transition = function(slider, fromSlideNumber, toSlideNumber) { new Effect.Parallel( [ Effect.Fade( slider.id + "-slide" + (fromSlideNumber + 1), 0.5 ) , Effect.Appear( slider.id + "-slide" + (toSlideNumber + 1), 0.5 ) ] , { beforeStart:function(){ $( slider.id + "-number" + (fromSlideNumber + 1) ).src = slider.numberButtons[fromSlideNumber].buttonOffImage.src; $( slider.id + "-number" + (toSlideNumber + 1) ).src = slider.numberButtons[toSlideNumber].buttonOnImage.src; }, afterFinish:function(){ slider.slidePlaying = false; } }); }