	var	patSidebar			=	false;
	var	patSidebarBtn		=	false;
	var	patSideBarVisible	=	true;

	var	sideBarHTML;
	
	//	hide the sidebar
	function	patHideSideBar()
	{
		if( !patCheckSidebar() )
		{
			alert( "Sorry, this works only in Browsers that have Javascript DOM support." );
		}
		else
		{
			sideBarHTML				=	patSidebar.innerHTML;
			patSidebar.innerHTML	=	patSidebarBtn.innerHTML;
			patSideBarVisible		=	false;
			document.cookie			=	"patSideBar=hidden";
		}
	}

	//	show the sidebar
	function	patShowSideBar()
	{
		if( !patCheckSidebar() )
		{
			alert( "Sorry, this works only in Browsers that have Javascript DOM support." );
		}
		else
		{
			patSidebar.innerHTML		=	sideBarHTML;
			patSideBarVisible			=	true;
			document.cookie				=	"patSideBar=visible";
		}	
	}

	//	do some sidebar init routines
	function	patCheckSidebar()
	{
		if( !document.getElementById )
			return	false;
		
		if( !patSidebar )
			patSidebar			=	document.getElementById( "patSidebar" );
		if( !patSidebar )
			return	false;

		if( !patSidebarBtn )
		{
			patSidebarBtn		=	document.getElementById( "patSidebarBtn" );
			patSidebarBtn.parentNode.removeChild( patSidebarBtn );
		}
		if( !patSidebarBtn )
			return	false;
	
		return	true;
	}

	function	initSidebar()
	{
		var	cookies	=	document.cookie.split( ";" );
		var	cookie	=	new Array();
		
		for( var i = 0; i < cookies.length; i++ )
		{
			cookie	=	cookies[i].split( "=" );
			if( cookie[0] == "patSideBar" )
			{
				switch( cookie[1] )
				{
					case	"hidden":
						patHideSideBar();
						break;
					
					case	"visible":
					default:
						break;
				}
			}
		}
	}
	
	
	//	META navigation in the sidebar
	function	sidebarNav()
	{
		this.simpleTypes	=	new	Array( 
											new	metaLink( 'contents', 'Table of Contents' ),
											new	metaLink( 'start', 'First page' ),
											new	metaLink( 'previous', 'Previous page' ),
											new	metaLink( 'next', 'Next page' ),
											new	metaLink( 'end', 'Last Page' ),
											new	metaLink( 'up', 'One level up' ),
											new	metaLink( 'index', 'Index' ),
											new	metaLink( 'glossary', 'Glossary' ),
											new	metaLink( 'help', 'Help' ),
											new	metaLink( 'copyright', 'About' )
										 );
	
		this.contents		=	false;
		this.copyright		=	false;
		this.start			=	false;
		this.next			=	false;
		this.prev			=	false;
		this.index			=	false;
		this.glossary		=	false;
		this.help			=	false;

		this.chapter		=	new	Array();
		this.section		=	new	Array();
		this.subsection		=	new	Array();

		this.printHTML		=	psnPrintHTML;
		this.aE				=	psnAddEntry;
	}

	function	metaLink( name, title )
	{
		this.name	=	name;
		this.title	=	title;
	}

	function	psnAddEntry( type, title, url, target )
	{
		type	=	type.toLowerCase();
		switch( type )
		{
			case	"chapter":
			case	"section":
			case	"subsection":
				this[type][this[type].length]	=		new	psnEntry( title, url, target );
				break;

			case	"next":
			case	"previous":
			case	"start":
			case	"end":
			case	"up":
			case	"index":
			case	"glossary":
			case	"help":
			case	"contents":
			case	"copyright":
				this[type]						=		new	psnEntry( title, url, target );
				break;
		}
	}
	
	function	psnPrintHTML()
	{
		if( this.subsection.length <= 0 )
			return;

		writeSeparator( "Internal" );
		writeHeader( "Subsections", 1 );
		document.writeln( '<table background="skins/blue/img/sb/px.gif" cellpadding="0" cellspacing="0" border="0">' );
		for( var i = 0; i < this.subsection.length; i++ )
		{
			if( i == this.subsection.length-1 )
				writeSBLine( this.subsection[i].url, this.subsection[i].title, 1, true );
			else
				writeSBLine( this.subsection[i].url, this.subsection[i].title, 1, false );
		}
		document.writeln( '</table><img src="skins/blue/img/px.gif" width="1" height="9" alt="" border="0"><br>' );
	}
	
	function writeSBLine( url, title, stylenr, endpiece )
	{
		document.write( '<tr valign="top">' );
		
		if( endpiece )
			document.write( '	<td><img src="skins/blue/img/sb/line_'+stylenr+'_end.gif" width="27" height="14" alt="" border="0"></td>' );
		else
			document.write( '	<td background="skins/blue/img/sb/line_'+stylenr+'_bg.gif"><img src="skins/blue/img/sb/line_'+stylenr+'_middle.gif" width="27" height="14" alt="" border="0"></td>' );
		
		document.write( '	<td><img src="skins/blue/img/sb/bul_1.gif" width="13" height="14" alt="" border="0"></td>' );
		document.write( '	<td><a href="'+url+'" class="lt">'+title+'</a></td>' );
		document.write( '</tr>' );
	}
	
	function writeSeparator( title )
	{
			document.write( '<table width="100%" background="skins/blue/img/sb/px_bg.gif" cellpadding="0" cellspacing="0" border="0">' );
			document.write( '	<tr>' );
			document.write( '		<td><img src="skins/blue/img/px.gif" width="9" height="17" alt="" border="0"></td>' );
			document.write( '		<td class="nminv" width="100%"><b>'+title+':</b></td>' );
			document.write( '	</tr>' );
			document.write( '</table><img src="skins/blue/img/px.gif" width="1" height="9" alt="" border="0"><br>' );
	}

	function writeHeader( title, stylenr )
	{
		document.write( '<table background="skins/blue/img/px.gif" cellpadding="0" cellspacing="0" border="0">' );
		document.write( '	<tr>' );
		document.write( '		<td><img src="skins/blue/img/sb/ic_'+stylenr+'.gif" width="35" height="24" alt="" border="0"></td>' );
		document.write( '		<td class="nm"><b>'+title+'</b><br><img src="skins/blue/img/px.gif" width="1" height="3" alt="" border="0"></td>' );
		document.write( '	</tr>' );
		document.write( '</table>' );
	}

	function	psnEntry( title, url, target )
	{
		this.title		=	title;
		this.url		=	url;
		this.target		=	target;

		if( title.length > 18 )
			this.abb	=	title.substring( 0, 15 ) + "...";
		else
			this.abb	=	title;
		
	}
	
	var ps		=	new	sidebarNav();
