1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
// background image ratio (width/height)
// use to resize background to get best view
var backgroundRatio = 1.9;
function preload_bg_images() {
new Ajax.Updater('slide-images', 'get_images.php?what=bg', {
asynchronous: true,
onComplete: init_slideshow
});
}
function init_slideshow() {
resize_background();
var lis = $('slide-images').getElementsByTagName('li');
for( i=0; i < lis.length; i++){
lis[i].style.display = 'none';
}
end_frame = lis.length -1;
if (lis.length == 1) {
// just appear the image
Effect.Appear(lis[0], { duration: 1.0, from: 0, to: 1 });
} else {
// start rotate background images
start_slideshow(0, end_frame, 0);
}
}
function start_slideshow(start_frame, end_frame, delay) {
setTimeout(fadeInOut(start_frame, start_frame, end_frame, 3000), 0);
}
function fadeInOut(frame, start_frame, end_frame, delay) {
return (function() {
lis = $('slide-images').getElementsByTagName('li');
Effect.Fade(lis[frame]);
if (frame == end_frame) { frame = start_frame; } else { frame++; }
lisAppear = lis[frame];
setTimeout("Effect.Appear(lisAppear);", 0);
setTimeout(fadeInOut(frame, start_frame, end_frame, delay), delay + 3000);
})
}
function resize_background() {
var width = $('slide-images').getWidth();
var height = $('slide-images').getHeight();
var ratio = (width * 1.0) / height;
var top = 0;
var left = 0;
if (ratio > backgroundRatio) {
height = width / backgroundRatio;
top = -(ratio - backgroundRatio) * height / 2;
} else {
width = height * backgroundRatio;
left = -(backgroundRatio - ratio) * width / 2;
}
var lis = $('slide-images').getElementsByTagName('li');
for( i=0; i < lis.length; i++){
// resize image
lis[i].style.top = 70 + top + "px";
lis[i].style.left = left + "px";
lis[i].style.width = width + "px";
lis[i].style.height = height + "px";
}
}
// fetch images after page is loaded, then start background image rotation
Event.observe(window, 'load', preload_bg_images);
Event.observe(window, 'resize', resize_background); |
Partager