<?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 		= "Callisto Blogs";
	$pageKeywords	= "callisto 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>Callisto Tags</h1>
        <p>
        
			<script type="text/javascript" src="http://del.icio.us/feeds/js/ianskerrett/callisto-blogs?tags;extended;title=Callisto%20Related%20Blogs;icon"></script>
			<noscript><a href="http://del.icio.us/ianskerrett/callisto-blogs">Callisto Related Blogs</a></noscript>
        </p>
        
        <p>
			<script type="text/javascript" src="http://del.icio.us/feeds/js/ianskerrett/callisto?tags;extended;count=30;title=Callisto%20News%20Items;icon"></script>
			<noscript><a href="http://del.icio.us/ianskerrett/callisto">Callisto 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);
?>
