<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

	#*****************************************************************************
	#
	# template.php
	#
	# Author: 		Denis Roy
	# Date:			2005-06-16
	#
	# Description: Type your page comments here - these are not sent to the browser
	#
	#
	#****************************************************************************
	
	#
	# Begin: page-specific settings.  Change these. 
	$pageTitle 		= "Europa Blogs";
	$pageKeywords	= "Europa marketing ";
	$pageAuthor		= "Nathan Gervais";
	
	# Add page-specific Nav bars here
	# Format is Link text, link URL (can be http://www.someothersite.com/), target (_self, _blank), level (1, 2 or 3)
	# $Nav->addNavSeparator("My Page Links", 	"downloads.php");
	# $Nav->addCustomNav("My Link", "mypage.php", "_self", 1);
	# $Nav->addCustomNav("Google", "http://www.google.com/", "_blank", 1);

	# End: page-specific settings
	#
	// This file is linked to from lots of different places.
	// Use absolute paths to make sure that we can actually test
	// that the file renders properly (i.e. testing using) "/index.php",
	// and "/home/index.php" both work.

		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML
<link rel="stylesheet" type="text/css" href="callisto.css" media="screen" />
<div class="callistoRealEstate">
	<div class="maincontent">
        <h1>Europa Tags</h1>
        <p>
        
			<script type="text/javascript" src="http://del.icio.us/feeds/js/ianskerrett/europa-blogs?tags;extended;title=Europa%20Related%20Blogs;icon"></script>
			<noscript><a href="http://del.icio.us/ianskerrett/europa-blogs">Europa Related Blogs</a></noscript>
        </p>
        
        <p>
			<script type="text/javascript" src="http://del.icio.us/feeds/js/ianskerrett/europa?tags;extended;count=30;title=Europa%20News%20Items;icon"></script>
			<noscript><a href="http://del.icio.us/ianskerrett/callisto">Europa News Coverage</a></noscript>        
        </p>
       
        <h3>Add yourself to this page!</h2>
        <p>
  Send a link to <strong>for:ianskerrett</strong> using del.icio.us <strong>for:</strong> tag.</a>
        </p>
        
        

	</div>

</div>




EOHTML;

	# Generate the web page
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
