
/***********************************************
* 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
***********************************************/

/********************************************************
	Create a div with transparent place holder in your html
	<div id="Book" style="position:relative">
		<img src="placeholder.gif" width="144" height="227">
	</div>  
	width = 2*book image width +4 height = book image height+2

	Insert onload in body tag
		<body onload="ImageBook()">	
*********************************************************/

/* 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 ""

	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","http://www.codingforums.com" // NOTE No comma after last line
		);
*/

	var sliderpointyObj;
	var sliderpointyimgObj;
	var sliderpointyContainerObj;
	var scrollstopObj;
	var scrollstartObj;
	var sliderpointymousedown=0;
	var sliderpointymousepos=new Array(0,0);
	
	function getObj(name){
	  if (document.getElementById)  {
	  	this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
	  } else if (document.all)  {
		this.obj = document.all[name];
		this.style = document.all[name].style;
	  }  else if (document.layers)  {
		this.obj = getObjNN4(document,name);
		this.style = this.obj;
	  }
	}

	function getObjNN4(obj,name){
		var x = obj.layers;
		var thereturn;
		for (var i=0;i<x.length;i++)	{
		if (x[i].id == name)
		 	thereturn = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i],name);
			if (tmp) thereturn = tmp;
		}
		return thereturn;
	}
	
function getMousePos(e) {
        //get the position of the mouse
 	var mouseX, mouseY;

	if (!e){
		var e = window.event||window.Event;
	}
	if('undefined'!=typeof e.pageX){
		mouseX = e.pageX;
		mouseY = e.pageY;
	}else if( !e || ( typeof( e.pageX ) != 'number' && typeof( e.clientX ) != 'number' ) ) {
		mouseX=0;
		mouseY=0;
	}else if( typeof( e.pageX ) == 'number' ) { 
		mouseX = e.pageX;
		mouseY = e.pageY; 
	} else {
        mouseX = e.clientX;
        mouseY = e.clientY;
        if( !( ( window.navigator.userAgent.indexOf( 'Opera' ) + 1 ) || ( window.ScriptEngine && ScriptEngine().indexOf( 'InScript' ) + 1 ) || window.navigator.vendor == 'KDE' ) ) {
            if( document.documentElement && ( document.documentElement.scrollTop || document.documentElement.scrollLeft ) ) {
                mouseX += document.documentElement.scrollLeft;
                mouseY += document.documentElement.scrollTop;
            } else if( document.body && ( document.body.scrollTop || document.body.scrollLeft ) ) {
                mouseX += document.body.scrollLeft;
                mouseY += document.body.scrollTop; 
            } 
        } 
    }
			
        
  return [mouseX,mouseY];
}
function defined(o) {
		return typeof(o)!="undefined";
	}
	function is_array(o) {
// If these conditions aren't met, it certainly isn't an Array
		if (o==null || typeof(o)!="object" || typeof(o.length)!="number") {
			return false;
		}
// Check to see if the object is an instance of the window's Array object
		if (defined(Array) && defined(o.constructor) && o.constructor==Array) {
			return true;
		}
// It might be an array defined from another window object - check to seeif it has an Array's methods
		if (typeof(o.join)=="function" && typeof(o.sort)=="function" && typeof(o.reverse)=="function") {
			return true;
		}
// As a last resort, let's see if index [0] is defined
		return (o.length==0 || defined(o[0]));
	}
	

	function B_stopstart(e){
		if(B_Stppd){
			scrollstartObj.style.visibility="hidden";
			scrollstopObj.style.visibility="visible";
			
			B_Stppd=false;
		} else {
			scrollstopObj.style.visibility="hidden";
			scrollstartObj.style.visibility="visible";
			B_Stppd=true;
		}
	}
		
	function Getscrollgoing(withmouseovers, flipfirsttwoafterstart){
		scrollstopObj=new getObj("scrollstop");
		ImageBook(withmouseovers, flipfirsttwoafterstart);
		sliderpointyObj=new getObj("sliderpointy");
		sliderpointyimgObj=new getObj("sliderpointyimg");
			sliderpointyContainerObj=new getObj("slidyslidycontainer");
		scrollstopObj=new getObj("scrollstop");
		scrollstartObj=new getObj("scrollrestart");
		if (document.addEventListener){
			document.addEventListener('mouseup',sliderpointyMouseUp,true);
			sliderpointyObj.obj.addEventListener('mousedown',sliderpointyMouseDown,true);
			sliderpointyimgObj.obj.addEventListener('mousedown',sliderpointyimgMouseDown,true);
			sliderpointyObj.obj.addEventListener('mouseout',sliderpointyMouseOut,true);
			sliderpointyObj.obj.addEventListener('mousemove',sliderpointyMouseMove,true);
			scrollstopObj.obj.addEventListener('click',B_stopstart,true);
			scrollstartObj.obj.addEventListener('click',B_stopstart,true);
		} else {
			if(document.attachEvent){
				document.attachEvent('onmouseup',sliderpointyMouseUp);
				sliderpointyObj.obj.attachEvent('onmousedown',sliderpointyMouseDown);
				sliderpointyimgObj.obj.attachEvent('onmousedown',sliderpointyimgMouseDown);
					sliderpointyObj.obj.attachEvent('onmouseout',sliderpointyMouseOut);
				sliderpointyObj.obj.attachEvent('onmousemove',sliderpointyMouseMove);
				scrollstopObj.obj.attachEvent('onclick',B_stopstart);
				scrollstartObj.obj.attachEvent('onclick',B_stopstart);
				}
		}
		
	}
	
	function sliderpointyMouseUp(e){
		sliderpointymousedown=0;
		
	}
	function sliderpointyMouseOut(e){
		
		
	}
	
	function sliderpointyMouseDown(e){
	
		sliderpointymousedown=1;
		sliderpointymousepos=getMousePos(e);
	}
	
	function sliderpointyimgMouseDown(e){
		if(!e){e=window.event;}
		if (e.preventDefault) {
			e.preventDefault();
		}	
	}
	
	function sliderpointyMouseMove(e){
		var newPos;
		if(sliderpointymousedown){
			if(!e){e=window.event;}
			var thismousepos=getMousePos(e);
			if(thismousepos[0]>sliderpointymousepos[0]){
				var moveby=thismousepos[0]-sliderpointymousepos[0];
				if((numericvalue(sliderpointyObj.style.left)+numericvalue(sliderpointyObj.style.width)+moveby)<(numericvalue(sliderpointyContainerObj.style.width)+3)){
					
					newPos=numericvalue(sliderpointyObj.style.left)+moveby;
					
				}
			} else if(thismousepos[0]<sliderpointymousepos[0]){
				var moveby=sliderpointymousepos[0]-thismousepos[0];
				if((numericvalue(sliderpointyObj.style.left)-moveby)>0){	
					newPos=numericvalue(sliderpointyObj.style.left)-moveby;

				}
						
				
			}
			if(newPos){
				if(newPos>200){
					var nPos=200;
				} else if(newPos<0){
					var nPos=0;
				} else {
					var nPos=newPos;	
				}
				Book_NextPage_Delay=parseInt(((200-nPos)*14)+50);   // should give 0=2800 200=50 and gradated inbetween
				Book_Speed=(nPos/100*15);
				sliderpointyObj.style.left=newPos+"px";
				sliderpointymousepos[0]=thismousepos[0];
	//			scrollstopObj.obj.innerHTML=newPos;  // for diagnostic purposes
			}
		}
		
	}
	
	function numericvalue(ivalue){
		var i=ivalue.indexOf("px");
		if(i>0){
			return eval(ivalue.substr(0,i));
		} else {
			return eval(ivalue);
		}
		
	}
		
/***************** DO NOT EDIT BELOW **********************************/
	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);
	
	function ImageBook(withmouseovers, flipfirsttwoafterstart){
		var checkaltborders=is_array(altbordercolour);
		if(checkaltborders){
			checkaltborders=altbordercolour.length;
		}

		if(document.getElementById){
			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];
				B_Pre_Img[i].style.borderColor=Book_Border_Color; 
				if(checkaltborders){
					for(i1=0; i1<altbordercolour.length;i1++){
						if(B_Pre_Img[i].src.indexOf(altbordercolour[i1])>0){
							
							B_Pre_Img[i].style.borderColor=altbordercolour[i1+1];
							break;
						}
					}
				}
			}
			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.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.style.borderColor=B_Pre_Img[0].style.borderColor;
			B_LI.lnk=Book_Image_Sources[1];
	
			B_MI.src=B_Pre_Img[2].src;
			B_MI.style.borderColor=B_Pre_Img[2].style.borderColor;
			B_MI.lnk=Book_Image_Sources[3];
			B_RI.src=B_Pre_Img[4].src;
			B_RI.style.borderColor=B_Pre_Img[4].style.borderColor;
			B_RI.lnk=Book_Image_Sources[5];
			B_LI.onclick=B_MI.onclick=B_RI.onclick=B_LdLnk;
			if(withmouseovers){
				B_LI.onmouseover=B_MI.onmouseover=B_RI.onmouseover=B_Stp;
				B_LI.onmouseout=B_MI.onmouseout=B_RI.onmouseout=B_Rstrt;
			}
			if(flipfirsttwoafterstart){
				var strT=B_Pre_Img[0].src;
				var ibc=B_Pre_Img[0].style.borderColor;
				B_Pre_Img[0].src=B_Pre_Img[2].src;
				B_Pre_Img[0].style.borderColor=B_Pre_Img[2].style.borderColor;
				B_Pre_Img[2].src=strT;
				B_Pre_Img[2].style.borderColor=ibc;
			}
			setTimeout("BookImages()",Book_NextPage_Delay)}}

	function BookImages(){
		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;
				B_MI.style.borderColor=B_Pre_Img[B_CrImg].style.borderColor;
				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.style.borderColor=B_RI.style.borderColor;
				B_MI.lnk=B_RI.lnk;

				setTimeout("Book_Next_Delay()",Book_NextPage_Delay)}
			else setTimeout("BookImages()",50)}
		else setTimeout("BookImages()",50)}

	function Book_Next_Delay(){
			if(B_CrImg==Book_Image_Sources.length)B_CrImg=0;
			B_RI.src=B_Pre_Img[B_CrImg].src;
			B_RI.style.borderColor=B_Pre_Img[B_CrImg].style.borderColor;
		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("BookImages()",50)}

	function B_LdLnk(){if(this.lnk)window.location.href=this.lnk}
	function B_Stp(){B_Stppd=true;this.style.cursor=this.lnk?"pointer":"default" }
	function B_Rstrt(){B_Stppd=false}


/*
	<div id="Book" style="position:relative">
		<img src="placeholder.gif" width="144" height="227">  // placeholder width= book image width+2, and placeholder height= 2*book imageheight+4.
	</div>

<p><font face="Arial" size="-2">Free DHTML scripts provided by<br><a href="http://www.dynamicdrive.com">Dynamic Drive</a></font></p></script>
*/