I played around with this script a bit more and discovered that the original script and my above modification have a number of problems. As a result, I've written a simplified version with only one exposed global. It no longer requires the place holder or any HTML code, just place it in the body of your page where you want the Book Flip to appear:
Code:
<script type="text/javascript">
/***********************************************
* Book Flip slideshow script- © Ger Versluis 2003
* Permission granted to DynamicDrive.com to feature script
* This notice must stay intact for use
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
function flipit(){
// 7 variables to control behavior
var Book_Image_Width=140;
var Book_Image_Height=225;
var Book_Border=true;
var Book_Border_Color="gray";
var Book_Speed=15;
var Book_NextPage_Delay=1500; //1 second=1000
var Book_Vertical_Turn=0;
// array to specify images and optional links. At least 4
// If Link is not needed keep it ""
var Book_Image_Sources=new Array(
"photo1.jpg","http://www.dynamicdrive.com",
"photo2.jpg","http://www.javascriptkit.com",
"photo3.jpg","", //this slide isn't linked
"photo4.jpg","", //this slide isn't linked
"photo5.jpg","", //this slide isn't linked
"photo6.jpg","", //this slide isn't linked
"photo7.jpg","", //this slide isn't linked
"photo8.jpg","", //this slide isn't linked
"photo9.jpg","http://www.codingforums.com" // NOTE No comma after last line
);
/***************** DO NOT EDIT BELOW **********************************/
var BI_W=Book_Vertical_Turn? Book_Image_Width+2 : Book_Image_Width*2+4;
var BI_H=Book_Vertical_Turn? Book_Image_Height*2+4 : Book_Image_Height+2;
document.write('<div id="Book" style="position:relative;width:'+BI_W+'px;height:'+BI_H+'px;">'+
' <table style="width:'+BI_W+'px;height:'+BI_H+'px;border-collapse:collapse;table-layout:fixed;"><tr>'+
' <td style="width:'+BI_W+'px;height:'+BI_H+'px;text-align:center;vertical-align:middle;margin:0;padding:0;">Loading . . .'+
' <\/td><\/tr><\/table><\/div>');
var B_LI,B_MI,B_RI,B_TI,B_Angle=0,B_CrImg=6,B_MaxW,B_Direction=1;
var B_MSz,B_Stppd=false;B_Pre_Img=new Array(Book_Image_Sources.length);
flipit.ImageBook=function(loading){
var i;
if(!loading)
for(i=0;i<Book_Image_Sources.length;i+=2){
B_Pre_Img[i]=new Image();B_Pre_Img[i].src=Book_Image_Sources[i]}
for(i=0;i<7;i+=2)
if(typeof B_Pre_Img[i].complete=='boolean' && !B_Pre_Img[i].complete){
setTimeout('flipit.ImageBook(1)', 300);
return;
}
var Book_Div=document.getElementById("Book");
B_LI=document.createElement("img");Book_Div.appendChild(B_LI);
B_RI=document.createElement("img");Book_Div.appendChild(B_RI);
B_MI=document.createElement("img");Book_Div.appendChild(B_MI);
B_LI.alt="Loading . . .";
B_RI.alt="Loading . . .";
B_MI.alt="Loading . . .";
B_LI.title="";
B_RI.title="";
B_MI.title="";
B_LI.style.position=B_MI.style.position=B_RI.style.position="absolute";
B_LI.style.zIndex=B_RI.style.zIndex=0;B_MI.style.zIndex=1;
B_LI.style.top=(Book_Vertical_Turn?Book_Image_Height+1:0)+"px";
B_LI.style.left=0+"px";
B_MI.style.top=0+"px";
B_MI.style.left=(Book_Vertical_Turn?0:Book_Image_Width+1)+"px";
B_RI.style.top=0+"px";
B_RI.style.left=(Book_Vertical_Turn?0:Book_Image_Width+1)+"px";
B_LI.style.height=Book_Image_Height+"px";
B_MI.style.height=Book_Image_Height+"px";
B_RI.style.height=Book_Image_Height+"px";
B_LI.style.width=Book_Image_Width+"px";
B_MI.style.width=Book_Image_Width+"px";
B_RI.style.width=Book_Image_Width+"px";
if(Book_Border){
B_LI.style.borderStyle=B_MI.style.borderStyle=B_RI.style.borderStyle="solid";
B_LI.style.borderWidth=1+"px";
B_MI.style.borderWidth=1+"px";
B_RI.style.borderWidth=1+"px";
B_LI.style.borderColor=B_MI.style.borderColor=B_RI.style.borderColor=Book_Border_Color}
B_LI.src=B_Pre_Img[0].src;
B_LI.lnk=Book_Image_Sources[1];
B_MI.src=B_Pre_Img[2].src;
B_MI.lnk=Book_Image_Sources[3];
B_RI.src=B_Pre_Img[4].src;
B_RI.lnk=Book_Image_Sources[5];
B_LI.onclick=B_MI.onclick=B_RI.onclick=flipit.B_LdLnk;
B_LI.onmouseover=B_MI.onmouseover=B_RI.onmouseover=flipit.B_Stp;
B_LI.onmouseout=B_MI.onmouseout=B_RI.onmouseout=flipit.B_Rstrt;
flipit.BookImages()}
flipit.BookImages=function(){
if(B_CrImg>6&&B_Pre_Img[B_CrImg]&&typeof B_Pre_Img[B_CrImg].complete=='boolean'&&!B_Pre_Img[B_CrImg].complete){
setTimeout('flipit.BookImages()', 300);
return;
}
if(!B_Stppd){
if(Book_Vertical_Turn){
B_MSz=Math.abs(Math.round(Math.cos(B_Angle)*Book_Image_Height));
MidOffset=!B_Direction?Book_Image_Height+1:Book_Image_Height-B_MSz;
B_MI.style.top=MidOffset+"px";
B_MI.style.height=B_MSz+"px"}
else{ B_MSz=Math.abs(Math.round(Math.cos(B_Angle)*Book_Image_Width));
MidOffset=B_Direction?Book_Image_Width+1:Book_Image_Width-B_MSz;
B_MI.style.left=MidOffset+"px";
B_MI.style.width=B_MSz+"px"}
B_Angle+=Book_Speed/720*Math.PI;
if(B_Angle>=Math.PI/2&&B_Direction){
B_Direction=0;
if(B_CrImg==Book_Image_Sources.length)B_CrImg=0;
B_MI.src=B_Pre_Img[B_CrImg].src; //inc
B_MI.lnk=Book_Image_Sources[B_CrImg+1];
B_CrImg+=2}
if(B_Angle>=Math.PI){
B_Direction=1;
B_TI=B_LI;
B_LI=B_MI;
B_MI=B_TI;
if(Book_Vertical_Turn)B_MI.style.top=0+"px";
else B_MI.style.left=Book_Image_Width+1+"px";
B_MI.src=B_RI.src;
B_MI.lnk=B_RI.lnk;
setTimeout("flipit.Book_Next_Delay()",Book_NextPage_Delay)}
else setTimeout("flipit.BookImages()",50)}
else setTimeout("flipit.BookImages()",50)}
flipit.Book_Next_Delay=function(){
if(B_CrImg>6&&B_Pre_Img[B_CrImg]&&typeof B_Pre_Img[B_CrImg].complete=='boolean'&&!B_Pre_Img[B_CrImg].complete){
setTimeout('flipit.Book_Next_Delay()', 300);
return;
}
if(B_CrImg==Book_Image_Sources.length)B_CrImg=0;
B_RI.src=B_Pre_Img[B_CrImg].src; //inc
B_RI.lnk=Book_Image_Sources[B_CrImg+1];
B_MI.style.zIndex=2;
B_LI.style.zIndex=1;
B_Angle=0;
B_CrImg+=2;
setTimeout("flipit.BookImages()",50)}
flipit.B_LdLnk=function(){if(this.lnk)window.location.href=this.lnk}
flipit.B_Stp=function(){B_Stppd=true;this.style.cursor=this.lnk?"pointer":"default"}
flipit.B_Rstrt=function(){B_Stppd=false}
flipit.ImageBook();
};
if(document.getElementById&&document.images)
flipit();
</script>
Bookmarks