|   | 
                            
 index.html 
<? 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> 
<head> 
 
<title>AJAX Slideshow</title> 
 
<link href="ajax-slideshow.css" rel="stylesheet" type="text/css" /> 
<script src="ajax-slideshow.js" type="text/JavaScript" charset="utf-8"></script> 
 
	<script type="text/JavaScript" charset="utf-8"> 
 
	 
	var photoDir = "images/"; // Location of photos for gallery 
	var borderSize = 6;	 // = 2x CSS border size 
	 
	// get current photo id from URL 
	var thisURL = document.location.href; 
	var splitURL = thisURL.split("#"); 
	var photoId = splitURL[1] - 1; 
	 
	// if no id in query string then set to 0 
	photoId = (!photoId)? 0:photoId; 
		 
	// Define each photo's name, height, width, and caption 
	var photoArray = new Array( 
		// Source, Width, Height, Caption 
		 
/* เปลี่ยนรูปที่นี่ครับ */ 
new Array("3.jpg", "500", "280", "Door 3 - Click on the image to view previous or next image"), 
new Array("2.jpg", "425", "319", "Door 2 - Click on the image to view previous or next image"),              
new Array("1.jpg", "700", "260", "Door 1 - Click on the image to view previous or next image") 
); 
	 
	// Number of photos in this gallery 
	var photoNum = photoArray.length; 
	 
	// Create access to 'Detect' object and a place to put instances of 'HTMLobj' 
	API = new Detect(); 
	 
	// CREATE INSTANCES & LOAD 
	loadAPI = function(){ 
		// Instantiate HTMLobj 
		API.Container		= new HTMLobj('Container'); 
		API.Photo			= new HTMLobj('Photo'); 
		API.PhotoContainer	= new HTMLobj('PhotoContainer'); 
		API.LinkContainer	= new HTMLobj('LinkContainer'); 
		API.PrevLink		= new HTMLobj('PrevLink'); 
		API.NextLink		= new HTMLobj('NextLink'); 
		API.CaptionBlock	= new HTMLobj('CaptionBlock'); 
		API.Counter			= new HTMLobj('Counter'); 
		API.Caption			= new HTMLobj('Caption'); 
		API.LoadImg			= new HTMLobj('LoadImg'); 
		 
		// Show initial photo 
		cyclePhoto(photoId); 
	} 
	onload = loadAPI; 
	 
	// Fade in photo when it is loaded from the server 
	initFade = function(){ 
		// Show PhotoContainer again 
		API.PhotoContainer.show(); 
		 
		// Be certain the tween is complete before fading, too 
		var fade_timer = setInterval('startFade()', 1000); 
						 
		// Fade photo in when ready and clear listener 
		startFade = function(){ 
			if(API.Container._tweenRunning == false){ 
				clearInterval(fade_timer); 
				 
				// Be certain fade is done running before allowing next/previous links to work 
				// This avoids rapid fade-in when users click next/previous links in quick succession 
				var adv_timer = setInterval('permitNextPrev()', 500); 
				 
				// Permit next/previous links to function normally when fade is completed 
				permitNextPrev = function(){ 
					if(API.Photo._fadeRunning == false){ 
						clearInterval(adv_timer); 
						 
						// Only show links if there is more than one photo in array 
						if(photoNum > 1){ 
							API.LinkContainer.displayShow(); 
							document.getElementById('NextLink').onclick = nextPhoto; 
							document.getElementById('PrevLink').onclick = prevPhoto; 
						} 
					} else { 
						return; 
					} 
				} 
				// Swap out loading animation to spare CPU cycles when hidden anyway 
				API.LoadImg.setSrc("images/slideshow/start.gif"); 
				 
				// Show caption again 
				API.CaptionBlock.show(); 
				 
				// Fade photo in 
				API.Photo.fadeIn(0,15,33); 
			} else { 
				return; 
			} 
		} 
	} 
	 
	// Prevent next/previous 
	falsify = function(){ 
		return false; 
	} 
	 
	// Go to next photo 
	nextPhoto = function(){ 
		// Go to next photo 
		if(photoId == (photoArray.length - 1)){ 
			photoId = 0; 
		} else { 
			photoId++; 
		} 
		cyclePhoto(photoId); 
	} 
	 
	// Go to previous photo 
	prevPhoto = function(){ 
		// If at start, go back to end 
		if(photoId == 0){ 
			photoId = photoArray.length - 1; 
		} else { 
			photoId--; 
		} 
		cyclePhoto(photoId); 
	} 
	 
	// Alter class of elements 
	changeElementClass = function(objId,setClass) { 
		document.getElementById(objId).className = setClass; 
	} 
	 
	// Function to load subsequent photos in gallery 
	cyclePhoto = function(photoId){ 
				 
		// Swap in loading animation 
		API.LoadImg.setSrc("images/slideshow/loading_ani2.gif"); 
		 
		// Hide link container if it is not already hidden 
		API.LinkContainer.displayHide(); 
		 
		// Hide photo container and caption temporarily 
		API.Photo.hide(); 
		API.Photo.setOpacity(0); 
		API.CaptionBlock.hide(); 
		 
		// Get dimensions of photo 
		var wNew = photoArray[photoId][1]; 
		var hNew = photoArray[photoId][2]; 
		 
		// Start tween on a delay 
		var wCur = API.Container.getWidth() - borderSize; 
		var hCur = API.Container.getHeight() - borderSize; 
		 
		// Begin tweening on a short timer 
		setTimeout('API.Container.tweenTo(easeInQuad, ['+wCur+', '+hCur+'], ['+wNew+','+hNew+'], 7)',500); 
		setTimeout('API.LinkContainer.sizeTo('+wNew+','+hNew+')',500); 
		setTimeout('API.PrevLink.sizeTo('+wNew/2+','+hNew+')',500); 
		setTimeout('API.NextLink.sizeTo('+wNew/2+','+hNew+')',500); 
		setTimeout('API.CaptionBlock.sizeTo('+wNew+',18)',500); 
		 
		// Get new photo source 
		var newPhoto = photoDir + photoArray[photoId][0]; 
		 
		// Set source, width, and height of new photo 
		API.Photo.setSrc(newPhoto);		 
		API.Photo.sizeTo(wNew,hNew); 
		 
		// Set links to new targets based on photoId 
		API.NextLink.setHref("#" + (photoId+1)); 
		API.PrevLink.setHref("#" + (photoId+1)); 
		API.Counter.setInnerHtml((photoId+1)+" of "+photoNum+" |"); 
		API.Caption.setInnerHtml(photoArray[photoId][3]); 
		 
		// Event listeners for onload and onclick events 
		document.getElementById('Photo').onload = initFade; 
		 
		// Block next/previous links until permitNextPrev() has fired 
		document.getElementById('NextLink').onclick = falsify; 
		document.getElementById('PrevLink').onclick = falsify; 
	} 
	// ]]> 
	</script> 
 
</head> 
 
<body> 
 
<!-- resizable container --> 
<div id="Container"> 
<div id="LinkContainer"> 
<a href="#" id="PrevLink" onfocus="this.blur();" accesskey="[" title="« Previous Photo" class="plainlink"><span>Previous</span></a><a href="#" id="NextLink" onfocus="this.blur();" accesskey="]" title="Next Photo »" class="plainlink"><span>Next</span></a> 
</div> 
<div id="PhotoContainer"><img id="Photo" src="images/1.gif" alt="" width="300" height="150" /></div> 
<div id="LoadContainer"><img id="LoadImg" src="images/loading_ani2.gif" alt="Loading..." width="48" height="54" /></div> 
</div> 
 
<!-- counter and caption --> 
<p id="CaptionBlock"><span id="Counter"></span> <span id="Caption"></span></p> 
</div> 
 
</body> 
</html> 
 
?>         
ajax-slideshow.js 
// ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
//  
// Coded by Travis Beckham 
// http://www.squidfingers.com | http://www.podlob.com 
// If want to use this code, feel free to do so, but please leave this message intact. 
// If you do remove this, I will hunt you down :) 
// 
// ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 
// --- myapi version date: 03/29/02 ------------------------------------------------------ 
// 
// --------------------------------------------------------------------------------------- 
// Several functions added or modified by Scott Upton, Uptonic.com 
// January 2005 
// --------------------------------------------------------------------------------------- 
 
Detect = function(){ 
	var agent = navigator.userAgent.toLowerCase();  
	this._mac = agent.indexOf('mac') != -1; 
	this._win = !this._mac; 
	this._w3c = document.getElementById; 
	this._iex = document.all; 
	this._ns4 = document.layers; 
} 
Detect.prototype.getObj = function(name){ 
	if(this._w3c){ 
		return document.getElementById(name); 
	}else if(this._iex){ 
		return document.all[name]; 
	}else if(this._ns4){ 
		return this.getObjNS4(document,name); 
	} 
} 
Detect.prototype.getObjNS4 = function(obj, name){ 
	var d = obj.layers; 
	var result,temp; 
	for(var i=0; i<d.length; i++){ 
		if(d[i].id == name){ 
		 	result = d[i]; 
		}else if(d[i].layers.length){ 
			var temp = this.getObjNS4(d[i],name); 
		} 
		if(temp){ 
			result = temp; 
		} 
	} 
	return result; 
} 
Detect.prototype.getStyle = function(obj){ 
	return (this._ns4) ? obj : obj.style; 
} 
Detect.prototype.getWindowWidth = function(){ // width of the window 
	return this._iex ? document.body.clientWidth : window.innerWidth; 
} 
Detect.prototype.getWindowHeight = function(){ // height of the window 
	return this._iex ? document.body.clientHeight : window.innerHeight; 
} 
Detect.prototype.getScrollTop = function(){ // top scroll position of the window 
	return this._iex ? document.body.scrollTop : window.pageYOffset; 
} 
Detect.prototype.getScrollLeft = function(){ // left scroll position of the window 
	return this._iex ? document.body.scrollLeft : window.pageXOffset; 
} 
Detect.prototype.setScrollTop = function(n){ // set the vertical scroll position of the window 
	window.scrollTo(this.getScrollLeft(),n); 
} 
Detect.prototype.setScrollLeft = function(n){ // set the horizontal scroll position of the window 
	window.scrollTo(n,this.getScrollTop()); 
} 
Detect.prototype.setScroll = function(x,y){ // set the x,y scroll position of the window 
	window.scrollTo(x,y); 
} 
 
// ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
 
// HTMLobj Constructor 
 
HTMLobj = function(name){ 
	if(name){ 
		this._inherit = Detect; this._inherit(name); 
		this._id  = name; 
		this._el  = this.getObj(this._id); 
		this._css = this.getStyle(this._el); 
		this._obj = name+'Object'; eval(this._obj+'=this');	 
		this._timer = null; 
		this._glideRunning = false; 
		this._tweenRunning = false; 
		this._fadeRunning = false;	// Added by SU, Couloir 
		this._randNum = null;		// Added by SU, Couloir 
		this._startFade = false;	// Added by SU, Couloir 
		return this; 
	} 
} 
HTMLobj.prototype = new Detect(); 
 
HTMLobj.prototype.getLeft = function(){ // left position of the element 
	return parseInt(this._css.left || 0); 
} 
HTMLobj.prototype.getTop = function(){ // top position of the element 
	return parseInt(this._css.top || 0); 
}		 
HTMLobj.prototype.getWidth = function(){ // width of the element 
	if(this._ns4){ 
		 return this._el.document.width; 
	}else{ 
		return this._el.offsetWidth; 
	} 
} 
HTMLobj.prototype.getHeight = function(){ // height of the element 
	if(this._ns4){ 
		 return this._el.document.height; 
	}else{ 
		return this._el.offsetHeight; 
	} 
} 
HTMLobj.prototype.getClipWidth = function(){ // clip width of the element 
	if(this._ns4){ 
		 return this._el.clip.width; 
	}else{ 
		return this._el.offsetWidth; 
	} 
} 
HTMLobj.prototype.getClipHeight = function(){ // clip height of the element 
	if(this._ns4){ 
		 return this._el.clip.height; 
	}else{ 
		return this._el.offsetHeight; 
	} 
} 
HTMLobj.prototype.setStyle = function(prop, val){ // change the value of any css property 
	if(!this._ns4){ 
		this._el.style[prop] = val; 
		if(this._iex && this._mac){ 
			this._el.innerHTML = this._el.innerHTML; 
		} 
	} 
} 
HTMLobj.prototype.show = function(){ // show the visibility of the element 
	this._css.visibility = 'visible'; 
} 
HTMLobj.prototype.hide = function(){ // hide the visibility of the element 
	this._css.visibility = 'hidden'; 
} 
HTMLobj.prototype.showhide = function(){ // toggle the visibility of the element 
	if(this._css.visibility == 'hidden' || this._css.visibility == 'hide'){ 
		this._css.visibility = 'visible'; 
	}else{ 
		this._css.visibility = 'hidden'; 
	} 
} 
HTMLobj.prototype.setInner = function(html){ // change the contents of the element 
	if(this._ns4){ 
		this._el.document.open(); 
		this._el.document.write(html); 
		this._el.document.close(); 
	}else{ 
		this._el.innerHTML = html; 
	} 
} 
HTMLobj.prototype.moveTo = function(x,y){ // move the element to a new position 
	if(this._ns4){ 
		this._el.moveTo(x,y); 
	}else{ 
		this._css.left = x; 
		this._css.top  = y; 
	} 
} 
HTMLobj.prototype.moveBy = function(x,y){ // move the element to a new position relative to it's current position 
	if(this._ns4) { 
		this._el.moveBy(x,y); 
	}else{ 
		this._css.left = this.getLeft()+x; 
		this._css.top  = this.getTop()+y; 
	} 
} 
HTMLobj.prototype.sizeTo = function(w,h){ // set the size of the element 
	if(!this._ns4){ 
		this._css.width = w+'px'; 
		this._css.height = h+'px'; 
	} 
} 
HTMLobj.prototype.sizeBy = function(w,h){ // set the size of the element relative to it's current size 
	if(!this._ns4){ 
		this._css.width = this.getWidth()+w+'px'; 
		this._css.height = this.getHeight()+h+'px'; 
	} 
} 
HTMLobj.prototype.glideTo = function(x,y,callback){ // ease-out animation, callback function optional 
	if(this._glideRunning){ 
		var left = this.getLeft(); 
		var top  = this.getTop(); 
		if(Math.abs(left-x)<=1 && Math.abs(top-y)<=1){ 
			this.moveTo(x,y); 
			this.cancelGlide(); 
			if(callback){ 
				eval(this._obj+'.'+callback+'()'); 
			} 
		}else{ 
			this.moveTo(left+(x-left)/2, top+(y-top)/2); 
		} 
	}else{ 
		var c = (callback) ? ',\"'+callback+'\"' : '' ; 
		this._timer  = setInterval(this._obj+'.glideTo('+x+','+y+c+')',100); 
		this._glideRunning = true; 
	} 
} 
HTMLobj.prototype.cancelGlide = function(){ // cancel the glideTo method 
	clearInterval(this._timer); 
	this._timer = null; 
	this._glideRunning = false; 
} 
HTMLobj.prototype.swapDepth = function(obj){ // swap the z-index of 2 elements 
	var temp = this._css.zIndex; 
	this._css.zIndex = obj._css.zIndex; 
	obj._css.zIndex = temp; 
} 
// ------------------------------------------- 
// Modified by SU, Uptonic.com 
// ------------------------------------------- 
HTMLobj.prototype.tweenTo = function(method, start, end, time){ // time-based animation, with multiple easing methods 
// method: a function that takes 4 arguments: time, start, change, and duration 
// start: array of starting width, height dimensions [w, h] 
// end: array of ending width, height dimensions [w, h] 
// time: number of 'frames' it takes to get to the end position 
	if(!this._tweenRunning){ 
		this._tweenTime = 0; 
		var s = '['+start.toString()+']'; 
		var e = '['+end.toString()+']'; 
		this._timer = setInterval(this._obj+'.tweenTo('+method+','+s+','+e+','+time+')', 33); 
		this._tweenRunning = true; 
	} 
	if(++this._tweenTime > time){ 
		this.cancelTween(); 
	}else{ 
		var w = method(this._tweenTime, start[0], end[0]-start[0], time); 
		var h = method(this._tweenTime, start[1], end[1]-start[1], time); 
		this.sizeTo(w,h); 
	} 
} 
HTMLobj.prototype.cancelTween = function(){ // cancel the tweenTo method 
	clearInterval(this._timer); 
	this._timer = null; 
	this._tweenRunning = false; 
	this._startFade = true; 
} 
 
// -> Easing Equations by Robert Penner - robertpenner.com - 
linearTween = function(t, b, c, d){ 
	return c*t/d + b; 
} 
easeInQuad = function(t, b, c, d){ 
	t /= d; 
	return c*t*t + b; 
} 
easeOutQuad = function(t, b, c, d){ 
	t /= d; 
	return -c * t*(t-2) + b; 
} 
easeInOutQuad = function(t, b, c, d){ 
	t /= d/2; 
	if (t < 1) return c/2*t*t + b; 
	t--; 
	return -c/2 * (t*(t-2) - 1) + b; 
} 
easeInExpo = function(t, b, c, d){ 
	return c * Math.pow( 2, 10 * (t/d - 1) ) + b; 
} 
easeOutExpo = function(t, b, c, d){ 
	return c * ( -Math.pow( 2, -10 * t/d ) + 1 ) + b; 
} 
// ------------------------------------------- 
// Added by SU, Uptonic.com 
// December 2004 - January 2005 
// ------------------------------------------- 
HTMLobj.prototype.getRandom = function(start,end){ // generate new random number 
    this._randNum= Math.round(start + ((end-start) * Math.random())); 
    return this._randNum; 
} 
HTMLobj.prototype.setOpacity = function(opacity){ // set opacity of the element 
	// Fix for math error in some browsers 
	opacity = (opacity == 100)?99.999:opacity; 
	// IE/Windows 
	this._css.filter = "alpha(opacity:"+opacity+")"; 
	// Safari < 1.2, Konqueror 
	this._css.KHTMLOpacity = opacity/100;	 
	// Older Mozilla and Firefox 
	this._css.MozOpacity = opacity/100; 
	// Safari 1.2, newer Firefox and Mozilla, CSS3 
	this._css.opacity = opacity/100; 
} 
HTMLobj.prototype.fadeOut = function(opacity, change, speed){ // gradually decrease the opacity of the element 
// opacity: starting opacity of element 
// change: the size of the increments between steps 
// speed: the rate of the animation 
	if (opacity >= 0){ 
	  this._fadeRunning = true; 
	  this.setOpacity(opacity); 
	  opacity -= change; 
	  setTimeout(this._obj+'.fadeOut('+opacity+','+change+','+speed+')', speed); 
	} else { 
		this._fadeRunning = false; 
		this.hide(); 
	} 
} 
HTMLobj.prototype.fadeIn = function(opacity, change, speed){ // gradually increase the opacity of the element 
// opacity: starting opacity of element 
// change: the size of the increments between steps 
// speed: the rate of the animation	 
	if (opacity <= 100){ 
	  this.show(); 
	  this._fadeRunning = true; 
	  this.setOpacity(opacity); 
	  opacity += change; 
	  setTimeout(this._obj+'.fadeIn('+opacity+','+change+','+speed+')', speed); 
	} else { 
		this._fadeRunning = false; 
		this.setOpacity(100); 
	} 
} 
HTMLobj.prototype.displayShow = function(){ // display the element as 'block' 
	this._css.display = 'block'; 
} 
HTMLobj.prototype.displayHide = function(){ // do not display the element 
	this._css.display = 'none'; 
} 
HTMLobj.prototype.setSrc = function(target){ // set the element's source to target 
	this._el.src = target; 
} 
HTMLobj.prototype.setHref = function(target){ // set the element's link to target 
	this._el.href = target; 
} 
HTMLobj.prototype.setInnerHtml = function(content){ // set the element's inner HTML to content 
	this._el.innerHTML = content; 
}  
 
 
ajax-slideshow.css 
*{ 
margin:0; 
padding:0} 
 
a:link,a:visited{ 
color:#333; 
text-decoration:none 
} 
 
a:hover,a:visited:hover{ 
color:#000; 
text-decoration:underline 
} 
 
a.inactive:link,a.inactive:visited{ 
color:#CECEB5 
} 
 
#Container{ 
margin:0 auto; 
padding: 0; 
position:relative; 
width:100%; 
height:310px; 
background-color:#fff; 
border:3px solid #CECEB5; 
overflow:hidden 
} 
 
#LoadContainer{ 
height:25%; 
width:50%; 
position:absolute; 
top:40%; 
left:25%; 
text-align:center; 
z-index:1 
} 
 
#PhotoContainer{ 
visibility:hidden 
} 
 
#CaptionBlock{ 
height:18px; 
width:582px; 
text-align:left; 
margin:0 auto 
} 
#Caption{ 
color:#333 
} 
 
#License{ 
margin:0 auto; 
padding-top:10px; 
font-size:10px; 
color:#666; 
border-top:1px solid #CECEB5; 
width:740px; 
text-align:left; 
line-height:1.4em; 
} 
 
#LinkContainer{ 
display:none; 
position:absolute; 
top:0;left:0; 
height:200px; 
width:200px; 
z-index:100; 
background:url(images/slideshow/start.gif) 50% 50% no-repeat 
} 
 
#PrevLink{ 
z-index:100; 
position:absolute; 
top:0%; 
left:0%; 
height:200px; 
width:50%; 
display:block 
} 
 
#NextLink{ 
z-index:100; 
position:absolute; 
top:0%; 
left:50%; 
height:200px; 
width:50%; 
display:block 
} 
 
#PrevLink:hover,#NextLink:hover{ 
text-decoration:none 
} 
 
#PrevLink:hover{ 
background:transparent url(images/slideshow/prev_rounded_sidebar2.gif) left 50% no-repeat 
} 
 
#NextLink:hover{ 
background:transparent url(images/slideshow/next_rounded_sidebar2.gif) right 50% no-repeat 
} 
 
#PrevLink span,#NextLink span{ 
display:none 
} 
 
img{ 
border:none 
} 
 
p{ 
font-size:11px; 
padding:1em 0 
} 
 
#Wrapper{ 
margin:0 auto; 
height:500px; 
width:100%; 
overflow:hidden; 
position:relative 
} 
 
#Wrapper[id]{ 
display:table; 
position:static 
} 
 
#InnerWrapper{ 
position:absolute; 
top:50%; 
left:0; 
} 
 
#InnerWrapper[id]{ 
display:table-cell; 
vertical-align:middle; 
position:static 
} 
 
#OuterContainer{ 
position:relative; 
top:-50% 
}        
 
ปล.ผมพยายามอับโหลดไฟล์ zip แล้วนะครับแต่ยังไม่ได้  เดี๋ยวยังไงจะเอาลิงค์มาให้โหลดนะครับ  
                 
    
                            
  
              			 
 
 
 |