function FlippingBook() {
this.pages = [];
this.contents = [];
this.stageWidth = "100%";
this.stageHeight = "100%";

this.settings = {

bookWidth: 640,
bookHeight: 480,
pagesSet: this.pages,
scaleContent: true,
preserveProportions: false,
centerContent: true,
hardcover: false,
hardcoverThickness: 1,
hardcoverEdgeColor: 0xFFFFFF,
highlightHardcover: true,
frameWidth: 1,
frameColor: 0x878785,
frameAlpha: 100,
firstPageNumber: 1,
autoFlipSize: 50,
navigationFlipOffset: 30,
flipOnClick: true,
handOverCorner: true,
handOverPage: true,
alwaysOpened: false,
staticShadowsType: "Asymmetric", 

// Asymmetric, Symmetric, Default staticShadowsDepth: 1,

staticShadowsLightColor: 0xFFFFFF, 

// works for "Symmetric" shadows only

staticShadowsDarkColor: 0x000000,
dynamicShadowsDepth: 1,
dynamicShadowsLightColor: 0xFFFFFF, 

// works for "dark" pages only

dynamicShadowsDarkColor: 0x000000,
moveSpeed: 2,
closeSpeed: 3,
gotoSpeed: 3,
rigidPageSpeed: 5,
flipSound: "",
hardcoverSound: "",
preloaderType: "Thin", 

// "Progress Bar", "Round", "Thin", "Dots", "Gradient Wheel", "Gear Wheel", "Line", "Animated Book", "None"

pageBackgroundColor: 0xFFFFFF,
loadOnDemand: true,
allowPagesUnload: true,
showUnderlyingPages: false,
playOnDemand: true,
freezeOnFlip: false,
darkPages: false,
smoothPages: false,
rigidPages: false,
flipCornerStyle: "manually",

// "first page only", "each page", "manually"

flipCornerPosition: "bottom-right",

// "bottom-right","top-right","bottom-left","top-left"

flipCornerAmount: 50,
flipCornerAngle: 20,
flipCornerRelease: true,
flipCornerVibrate: true,
flipCornerPlaySound: false,
zoomEnabled: true,
zoomPath: "pages/zoom/",
zoomImageWidth: 900,
zoomImageHeight: 1165,
zoomOnClick: false,
zoomUIColor: 0x8f9ea6,
zoomHint: "Double click for zooming.",
centerBook: true,	
useCustomCursors: true,
dropShadowEnabled: true,
dropShadowHideWhenFlipping: true,
backgroundColor: 0xFFFFFF,
backgroundImage: "img/bookBackground.jpg",
backgroundImagePlacement: "fit", 

//  "top left", "center", "fit"

printEnabled: true,
printTitle: "Print Pages",
downloadURL: "",
downloadTitle: "Download PDF",
downloadSize: "Size: 4.7 Mb",
downloadComplete: "Complete",
extXML: ""	};

this.containerId = "fbContainer";
this.forwardButtonId = "fbForwardButton";
this.backButtonId = "fbBackButton";
this.zoomButtonId = "fbZoomButton";
this.printButtonId = "fbPrintButton";
this.downloadButtonId = "fbDownloadButton";
this.currentPagesId = "fbCurrentPages";
this.totalPagesId = "fbTotalPages";
this.contentsMenuId = "fbContentsMenu";

};


FlippingBook.prototype.create = function(){
this.settings.pagesSet = this.pages;
this.addLoadEvent( this.onWindowLoad );
swfobject.embedSWF("FlippingBook.swf", this.containerId, this.stageWidth, this.stageHeight, "8.0.0", "js/expressInstall.swf", this.settings, {allowScriptAccess: "always", bgcolor:  "#" + this.settings.backgroundColor.toString( 16 ) });

}

FlippingBook.prototype.getFlippingBookReference = function() {
return this.getObjectReference( this.containerId );
}

FlippingBook.prototype.getObjectReference = function( id ) {
return document.getElementById( id );
}

FlippingBook.prototype.flipForward = function() {
flippingBook.getFlippingBookReference().flipForward();
}

FlippingBook.prototype.flipBack = function() {
flippingBook.getFlippingBookReference().flipBack();
}

FlippingBook.prototype.zoomButtonClick = function() {
if( flippingBook.getFlippingBookReference().isZoomedIn() )
flippingBook.zoomOut();
else
flippingBook.zoomIn();
}

FlippingBook.prototype.zoomIn = function() {
this.getFlippingBookReference().zoomIn();
}

FlippingBook.prototype.zoomOut = function() {
this.getFlippingBookReference().zoomOut();
}

FlippingBook.prototype.print = function() {
flippingBook.getFlippingBookReference().print();
}

FlippingBook.prototype.downloadFile = function() {
if( flippingBook.settings.downloadURL )
flippingBook.getFlippingBookReference().downloadFile();
}

FlippingBook.prototype.onWindowLoad = function(){
var forwardButton = flippingBook.getObjectReference( flippingBook.forwardButtonId );
if( forwardButton ){
forwardButton.style.cursor = "pointer";
forwardButton.onclick = flippingBook.flipForward;
}


var backButton = flippingBook.getObjectReference( flippingBook.backButtonId );
if( backButton ){
backButton.style.cursor = "pointer";
backButton.onclick = flippingBook.flipBack;
}


var zoomButton = flippingBook.getObjectReference( flippingBook.zoomButtonId );
if( zoomButton ){
zoomButton.style.cursor = "pointer";
zoomButton.onclick = flippingBook.zoomButtonClick;
}

var printButton = flippingBook.getObjectReference( flippingBook.printButtonId );
if( printButton ){
printButton.style.cursor = "pointer";
printButton.onclick = flippingBook.print;
}

var downloadButton = flippingBook.getObjectReference( flippingBook.downloadButtonId );
if( downloadButton ){
downloadButton.style.cursor = "pointer";
downloadButton.onclick = flippingBook.downloadFile;
}

flippingBook.buildContentsMenu();
}

FlippingBook.prototype.onPutPage = function( leftPageNumber, rightPageNumber ){
this.updatePagination( leftPageNumber, rightPageNumber );
this.updateContentsMenu( leftPageNumber, rightPageNumber );
}

FlippingBook.prototype.updatePagination = function( leftPageNumber, rightPageNumber ){
var leftPageExists = ( leftPageNumber != undefined );
var rightPageExists = ( rightPageNumber != undefined );

var pageNumberString = leftPageNumber + "-" + rightPageNumber;
if( !leftPageExists )
pageNumberString = rightPageNumber;
if( !rightPageExists )
pageNumberString = leftPageNumber;

this.getObjectReference( this.currentPagesId ).innerHTML = pageNumberString;
this.getObjectReference( this.totalPagesId ).innerHTML = " / " + this.getFlippingBookReference().totalPages();
}

FlippingBook.prototype.buildContentsMenu = function(){
var contentsSelect = this.getObjectReference( this.contentsMenuId );

if( contentsSelect ){
for( var i = 0; i < this.contents.length; i++ )
contentsSelect.options[i] = new Option(this.contents[i][0], this.contents[i][1]);

contentsSelect.onchange = this.onContentsChange;
}
}

FlippingBook.prototype.onContentsChange = function(){
var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );
var pageNumber = contentsSelect.options[contentsSelect.selectedIndex].value;

if( pageNumber )
flippingBook.getFlippingBookReference().flipGotoPage( pageNumber );
}

FlippingBook.prototype.updateContentsMenu = function( leftPageNumber, rightPageNumber ){
var contentsSelect = flippingBook.getObjectReference( flippingBook.contentsMenuId );

if( contentsSelect ){
for( var i = 0; i < this.contents.length - 1; i++ ){
var minPage = contentsSelect.options[i].value;
var maxPage = contentsSelect.options[i+1].value;
var leftOK = false;
var rightOK = false;

if( leftPageNumber )
leftOK = ( Number( leftPageNumber ) >=  minPage && Number( leftPageNumber ) <= maxPage );
else
leftOK = true;

if( rightPageNumber )
rightOK = ( Number( rightPageNumber ) >=  minPage && Number( rightPageNumber ) <= maxPage );
else
rightOK = true;

if( leftOK && rightOK )	
break;
}

contentsSelect.selectedIndex = i;
}
}

FlippingBook.prototype.getWindowHeight = function() {
var windowHeight = 0;

if (typeof(window.innerHeight) == 'number' ) {
windowHeight=window.innerHeight;
}
else {
if (document.documentElement &&	document.documentElement.clientHeight) {
windowHeight = document.documentElement.clientHeight;
}
else {
if (document.body&&document.body.clientHeight) {
windowHeight=document.body.clientHeight;
}
}
}

return windowHeight;
}

FlippingBook.prototype.addLoadEvent = function ( fn ) {
if (typeof window.addEventListener != "undefined") {
window.addEventListener("load", fn, false);
}
else if (typeof document.addEventListener != "undefined") {
document.addEventListener("load", fn, false);
}
else if (typeof window.attachEvent != "undefined") {
window.attachEvent("onload", fn);
}
else if (typeof window.onload == "function") {
var fnOld = window.onload;
window.onload = function() {
fnOld();
fn();
};
}
else {
window.onload = fn;
}
}

FlippingBook.prototype.handleWheel = function ( delta ){
this.getFlippingBookReference().onWheelScroll( delta );
}

flippingBook = new FlippingBook();
function wheel(event){
var delta = 0;
if (!event) event = window.event;
if (event.wheelDelta) {
delta = event.wheelDelta/120; 
if (window.opera) delta = -delta;
} else if (event.detail) {
delta = -event.detail/3;
}
if (delta)
flippingBook.handleWheel(delta);
if (event.preventDefault)
event.preventDefault();
event.returnValue = false;
}

if (window.addEventListener)
window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
