cPresentationData =
{
	sPresentationName			: '',
	nPresentationPages			: 0,
	nCurrentPresentationPage	: 0,
	aPresentationPages			: null,
	hLastUpdate					: null,
	sWorkingDirectory			: '.',
	hPresentationXml 			: null,
	onLoad 						: null,
	init						: function()
	{
		this.aPresentationPages = new Array()
		this.hPresentationXml = XmlDocument.create()
		this.hPresentationXml.async = false
		this.hPresentationXml.onreadystatechange = function()
		{
			if( cPresentationData.hPresentationXml.readyState == 4 )
			{
			
				hError = cPresentationData.hPresentationXml.parseError

				if ( !cPresentationData.hPresentationXml.documentElement || cPresentationData.hPresentationXml.documentElement.tagName == "parsererror")
				{
					hError.errorCode = 1
					hError.reason = "Error"
				}

				if( hError && hError.errorCode != 0 )
				{
					alert( hError.reason )
				}
				else
				{
					cPresentationData.onAfterLoadEvent()
				}
				
			}
		}
	},
	setWorkingDirectory : function( sDir )
	{
		this.sWorkingDirectory = sDir
	},
	loadFile 	: function( sFileName )
	{
		try
		{
			this.hPresentationXml.load( this.sWorkingDirectory + '/' + sFileName )
		}
		catch( hEx )
		{
			alert( hEx.description )
		}
	},
	loadUrl		: function( sUrl )
	{
		try
		{
			this.hPresentationXml.load( sFileName )
		}
		catch( hEx )
		{
			alert( hEx.description )
		}
	},
	onBeforeLoadEvent : function()
	{
	},
	onAfterLoadEvent	: function()
	{
		this.processXML()
		if( this.onLoad != null )
		{
			this.onLoad()
		}
	},
	processXML	: function()
	{
		var hNode = this.hPresentationXml.documentElement

		var hInfo = getSubNodeByName( hNode, 'info' )
		this.sPresentationName = this.getNodeText( getSubNodeByName( hInfo, 'name' ) )

		var hPages = getSubNodeByName( hNode, 'pages' )
		
		var sLink = ""
		var sTitle = ""
		var sItems = ""
		
		for ( var i = 0; i < hPages.childNodes.length; i++ ) 
		{
			hItem = hPages.childNodes.item(i)
			if( hItem.nodeType == 3 )
			{
				continue
			}

			sTitle = this.getNodeText( getSubNodeByName( hItem, 'title' ) )
			sLink = this.getNodeText( getSubNodeByName( hItem, 'link' ) )
			this.aPresentationPages[ this.aPresentationPages.length ] = { 'title':sTitle, 'link':sLink }
			this.nPresentationPages++
		}
	},
	getNodeText		: function( hNode )
	{
		if( hNode.hasChildNodes() )
		{
			sRes = hNode.childNodes.item(0).nodeValue
		}
		else
		{
			sRes = hNode.text
		}
		return sRes
	}
}

cPresentationData.onLoad = function()
{
	this.nCurrentPresentationPage = 0
	displayCurrentDocumentPage()
	updateNavigationControls()

	var sTitle = cPresentationData.sPresentationName
	sTitle = '<span class="shadow">' + sTitle + '</span>' + sTitle
	document.getElementById('presentationTitle').innerHTML = sTitle
}

function displayCurrentDocumentPage()
{
	var sTitle = cPresentationData.aPresentationPages[ cPresentationData.nCurrentPresentationPage ]['title']
	sTitle = sTitle + '<span class="shadow">' + sTitle + '</span>'
	document.getElementById('pageTitle').innerHTML = sTitle
	document.getElementById('currentPage').innerHTML = cPresentationData.nCurrentPresentationPage + 1
	try
	{
		document.getElementById('contentFrame').src = cPresentationData.sWorkingDirectory + '/' + cPresentationData.aPresentationPages[ cPresentationData.nCurrentPresentationPage ]['link']
	}
	catch( hEx )
	{
	}
}

function updateNavigationControls()
{
	var hNextLink = document.getElementById( 'nextPage' )
	var hPreviousLink = document.getElementById( 'previousPage' )
	if( cPresentationData.nCurrentPresentationPage == cPresentationData.nPresentationPages - 1 )
	{
		hNextLink.className = 'navigationDisabled'
	}
	else
	{
		hNextLink.className = ''
	}
	if( cPresentationData.nCurrentPresentationPage == 0 )
	{
		hPreviousLink.className = 'navigationDisabled'
	}
	else
	{
		hPreviousLink.className = ''
	}
}

function gotoNextPage()
{
	if( cPresentationData.nCurrentPresentationPage == cPresentationData.nPresentationPages - 1 )
	{
		return
	}
	cPresentationData.nCurrentPresentationPage++
	displayCurrentDocumentPage()
	updateNavigationControls()
}

function gotoPreviousPage()
{
	if( cPresentationData.nCurrentPresentationPage == 0 )
	{
		return
	}
	cPresentationData.nCurrentPresentationPage--
	displayCurrentDocumentPage()
	updateNavigationControls()
}

function onDocumentKeyDown( hEvent )
{
	cDomEvent.init( hEvent )
	switch( cDomEvent.key )
	{
		case 32	:
		case 38	:
				gotoNextPage()
				break
		case 8	:
		case 40	:
				gotoPreviousPage()
				break
					
	}
}

function onResizeFix()
{
	var hTopHead = document.getElementById( 'topHeader' )
	var hContentFrame = document.getElementById( 'contentFrame' )
	hContentFrame.style.height = document.body.clientHeight - hTopHead.clientHeight - 30
}

cDomEvent.addEvent( window, 'load', onPageLoad )
cDomEvent.addEvent( window, 'resize', onResizeFix )
cDomEvent.addEvent( document, 'keydown', onDocumentKeyDown )

function onPageLoad()
{
	cPresentationData.init()
	cPresentationData.setWorkingDirectory( 'presentation' )
	cPresentationData.loadFile( 'info.xml' )
	var hPreviousLink = document.getElementById( 'previousPage' )
	var hNextLink = document.getElementById( 'nextPage' )
	
	cDomEvent.addEvent( hPreviousLink, 'click', gotoPreviousPage )
	cDomEvent.addEvent( hNextLink, 'click', gotoNextPage )
	onResizeFix()
}
