﻿////////////////////
//SlideShow
//Created By : Yozo Chen
////////////////////
	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/SlideShow/' + 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/SlideShow/' + 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';
		
	}





var SlideShow = new Class({
	options: {
        dataSource:[],
        containerId:'SlideShowContainer'
	},

	initialize: function(options) {
		this.setOptions(options);
		var eContainer = $(this.options.containerId);
        var eSlideShow = new Element('div', {'id':'slideshow'}).injectInside(eContainer);
        var ePreviewPane = new Element('div', {'id':'previewPane'}).injectInside(eSlideShow);
        if(this.options.dataSource.length>0){
            var eImg = new Element('img', {'src':this.options.dataSource[0].bigImgUrl}).injectInside(ePreviewPane);
            var eWaitMessage = new Element('span', {'id':'waitMessage'})
                .setHTML('加载图片中.... 请稍等')
                .injectAfter(eImg);
            var eLargeImageCaption = new Element('div', {'id':'largeImageCaption'})
            .setHTML(this.options.dataSource[0].title)
            .injectAfter(eWaitMessage);
        }

        
        var eGalleryContainer = new Element('div', {'id':'galleryContainer'}).injectInside(eSlideShow);
        var eArrow_left = new Element('div', {'id':'arrow_left'})
            .setHTML('<img src="/Images/SlideShow/arrow_left.gif">')
            .setStyle('display','none')
            .injectInside(eGalleryContainer);
        var eArrow_right = new Element('div', {'id':'arrow_right'})
            .setHTML('<img src="/Images/SlideShow/arrow_right.gif">')
            .setStyle('display','none')
            .injectAfter(eArrow_left);
        var eTheImages = new Element('div', {'id':'theImages'})
            .injectAfter(eArrow_right);
        for(var i = 0; i < this.options.dataSource.length; i++){
            var eA = new Element('a', {'href':'#','onmouseover':'showPreview(\''+this.options.dataSource[i].bigImgUrl +'\',\''+(i+1).toString()+'\');'})
                .setHTML('<img src="'+this.options.dataSource[i].smallImgUrl+'" />')
                .injectInside(eTheImages);
            eA.addEvent('mouseover',function(){
                eval(this.onmouseover);
            });

        }
        for(var i = 0; i < this.options.dataSource.length; i++){
            var eImageCaption = new Element('div', {'class':'imageCaption'})
                .setHTML(this.options.dataSource[i].title)
                .injectInside(eTheImages);
        }
        var eSlideEnd = new Element('div', {'id':'slideEnd'})
            .injectInside(eTheImages);
        initSlideShow();
	}
	
});
SlideShow.implement(new Events);
SlideShow.implement(new Options);






//使用范例：
//json数据源样例
//var ds = [
//    {bigImgUrl:'images/image1_big.jpg',smallImgUrl:'images/image1.jpg',title:'图片1'},
//    {bigImgUrl:'images/image2_big.jpg',smallImgUrl:'images/image2.jpg',title:'图片2'},
//    {bigImgUrl:'images/image3_big.jpg',smallImgUrl:'images/image3.jpg',title:'图片3'},
//    {bigImgUrl:'images/image4_big.jpg',smallImgUrl:'images/image4.jpg',title:'图片4'},
//    {bigImgUrl:'images/image5_big.jpg',smallImgUrl:'images/image5.jpg',title:'图片5'},
//    {bigImgUrl:'images/image6_big.jpg',smallImgUrl:'images/image6.jpg',title:'图片6'}
//];

//var ss = new SlideShow({
//    dataSource:ds,     //json数据源
//    containerId:'SlideShowContainer'
//});


