function FlippingBook()
{
	this.pages = [];
	this.contents = [];

	this.stageWidth = '100%';
	this.stageHeight = '100%';
	
	this.settings =
	{
		scaleContent:			true,
		loadOnDemand:			true,
		playOnDemand:			true,
		allowPagesUnload:		true,  // betere cache controle aan/uit
		freezeOnFlip:			false, // swf content pauseren tijdens flip
		useCustomCursors:		false, // lelijke cursors gebruiken
		showUnderlyingPages:	false, // onderliggende pagina's tonen (bij transparente pagina's)
		
		flipOnClick:	true, // wanneer true, komt de fliphoek naar de muis toe wanneer ingedrukt
		handOverCorner:	true, // handje laten zien bij mousover op fliphoek
		handOverPage:	true, // handje laten zien bij mouseover op pagina
		
		darkPages:		false,
		smoothPages:	false,
		rigidPages:		false,
		
		autoFlipSize:			50,
		navigationFlipOffset:	30,
		moveSpeed:				3,
		gotoSpeed:				3,
		closeSpeed:				3,
		rigidPageSpeed:			2,
		
		dropShadowEnabled:			true,
		dropShadowHideWhenFlipping:	false,
		dynamicShadowsDepth:		1,
		dynamicShadowsLightColor:	0xFFFFFF, // works for 'dark' pages only
		dynamicShadowsDarkColor:	0x000000,
		staticShadowsType:			'Asymmetric', // Asymmetric, Symmetric, Default
		staticShadowsDepth:			1,
		staticShadowsLightColor:	0xFFFFFF, // works for 'Symmetric' shadows only
		staticShadowsDarkColor:		0x000000,
		
		flipCornerStyle:		'manually',// 'first page only', 'each page', 'manually'
		flipCornerPosition:		'bottom-right',// 'bottom-right','top-right','bottom-left','top-left'
		flipCornerAmount:		20,
		flipCornerAngle:		30,
		flipCornerRelease:		false,
		flipCornerVibrate:		false,
		flipCornerPlaySound:	false,
		
		highlightHardcover:	true,
		hardcoverSound:		'',
		flipSound:			'',
		
		//-------
		
		alwaysOpened:	false,
		
		firstPageNumber: 1,
		
		// download opties
		downloadURL: '',
		
		//-------
		
		pagesSet: this.pages,
		extXML: ''
	};
	
	
	this.contentsMenuId		= 'fbContentsMenu';
	this.currentPagesId		= 'fbCurrentPages';
	this.totalPagesId		= 'fbTotalPages';
	
	this.forwardButtonId	= 'fbForwardButton';
	this.backButtonId		= 'fbBackButton';
	this.zoomButtonId		= 'fbZoomButton';
	this.printButtonId		= 'fbPrintButton';
	this.downloadButtonId	= 'fbDownloadButton';
};

FlippingBook.prototype.create = function(containerId, flippingBook, exprInstall)
{
	this.containerId = containerId
	this.settings.pagesSet = this.pages;
	this.addLoadEvent(this.onWindowLoad);
	
	swfobject.embedSWF(flippingBook, containerId, '100%', '100%', '8.0.0', exprInstall, this.settings,
	{
		allowScriptAccess:	'always',
		wmode:				'transparent',
		menu:				false
	});
}

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)
	{
		window.open(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;