From b59ab2490b1bb82dc1d0b58d89584182b405d0a0 Mon Sep 17 00:00:00 2001
From: xue <>
Date: Mon, 19 Jun 2006 02:31:27 +0000
Subject: build script update. Fixed #82 and #165.

---
 .../Converters/HTML/frames/HTMLframesConverter.inc | 1747 ++++++++++++++++++++
 .../HTML/frames/templates/default/options.ini      |  577 +++++++
 .../templates/default/templates/basicindex.tpl     |   47 +
 .../frames/templates/default/templates/blank.tpl   |   13 +
 .../frames/templates/default/templates/class.tpl   |  402 +++++
 .../templates/default/templates/classtrees.tpl     |   11 +
 .../frames/templates/default/templates/const.tpl   |   18 +
 .../frames/templates/default/templates/define.tpl  |   24 +
 .../templates/default/templates/docblock.tpl       |   14 +
 .../templates/default/templates/elementindex.tpl   |   12 +
 .../frames/templates/default/templates/errors.tpl  |   21 +
 .../templates/default/templates/examplesource.tpl  |    6 +
 .../templates/default/templates/filesource.tpl     |    8 +
 .../frames/templates/default/templates/footer.tpl  |    8 +
 .../templates/default/templates/function.tpl       |   44 +
 .../frames/templates/default/templates/global.tpl  |   26 +
 .../frames/templates/default/templates/header.tpl  |   12 +
 .../frames/templates/default/templates/include.tpl |   16 +
 .../frames/templates/default/templates/index.tpl   |   24 +
 .../templates/default/templates/left_frame.tpl     |  149 ++
 .../templates/default/templates/media/banner.css   |   32 +
 .../default/templates/media/stylesheet.css         |  144 ++
 .../frames/templates/default/templates/method.tpl  |   61 +
 .../frames/templates/default/templates/page.tpl    |  211 +++
 .../default/templates/pkgelementindex.tpl          |   17 +
 .../frames/templates/default/templates/ric.tpl     |    6 +
 .../templates/default/templates/todolist.tpl       |   14 +
 .../templates/default/templates/top_frame.tpl      |   43 +
 .../templates/default/templates/tutorial.tpl       |   13 +
 .../templates/default/templates/tutorial_nav.tpl   |   41 +
 .../templates/default/templates/tutorial_toc.tpl   |   39 +
 .../templates/default/templates/tutorial_tree.tpl  |    6 +
 .../frames/templates/default/templates/var.tpl     |   44 +
 33 files changed, 3850 insertions(+)
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl
 create mode 100644 buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl

(limited to 'buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames')

diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
new file mode 100644
index 00000000..d1b8751c
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/HTMLframesConverter.inc
@@ -0,0 +1,1747 @@
+<?php
+//
+// +------------------------------------------------------------------------+
+// | phpDocumentor                                                          |
+// +------------------------------------------------------------------------+
+// | Copyright (c) 2000-2003 Joshua Eichorn, Gregory Beaver                 |
+// | Email         jeichorn@phpdoc.org, cellog@phpdoc.org                   |
+// | Web           http://www.phpdoc.org                                    |
+// | Mirror        http://phpdocu.sourceforge.net/                          |
+// | PEAR          http://pear.php.net/package-info.php?pacid=137           |
+// +------------------------------------------------------------------------+
+// | This source file is subject to version 3.00 of the PHP License,        |
+// | that is available at http://www.php.net/license/3_0.txt.               |
+// | If you did not receive a copy of the PHP license and are unable to     |
+// | obtain it through the world-wide-web, please send a note to            |
+// | license@php.net so we can mail you a copy immediately.                 |
+// +------------------------------------------------------------------------+
+//
+/**
+ * HTML original framed output converter, modified to use Smarty Template.
+ * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
+ *
+ * @package Converters
+ * @subpackage HTMLframes
+ * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
+ * @author Greg Beaver <cellog@users.sourceforge.net>
+ * @since 1.0rc1
+ * @version $Id: HTMLframesConverter.inc,v 1.1 2005/10/17 18:37:03 jeichorn Exp $
+ */
+/**
+ * HTML output converter.
+ * This Converter takes output from the {@link Parser} and converts it to HTML-ready output for use with {@link Smarty}.
+ *
+ * @package Converters
+ * @subpackage HTMLframes
+ * @see parserDocBlock, parserInclude, parserPage, parserClass, parserDefine, parserFunction, parserMethod, parserVar
+ * @author Greg Beaver <cellog@users.sourceforge.net>
+ * @since 1.2
+ * @version $Id: HTMLframesConverter.inc,v 1.1 2005/10/17 18:37:03 jeichorn Exp $
+ */
+class HTMLframesConverter extends Converter
+{
+    /**
+     * Smarty Converter wants elements sorted by type as well as alphabetically
+     * @see Converter::$sort_page_contents_by_type
+     * @var boolean
+     */
+    var $sort_page_contents_by_type = true;
+    /** @var string */
+    var $outputformat = 'HTML';
+    /** @var string */
+    var $name = 'frames';
+    /**
+     * indexes of elements by package that need to be generated
+     * @var array
+     */
+    var $leftindex = array('classes' => true, 'pages' => true, 'functions' => true, 'defines' => false, 'globals' => false);
+    
+    /**
+     * output directory for the current procedural page being processed
+     * @var string
+     */
+    var $page_dir;
+    
+    /**
+     * target directory passed on the command-line.
+     * {@link $targetDir} is malleable, always adding package/ and package/subpackage/ subdirectories onto it.
+     * @var string
+     */
+    var $base_dir;
+    
+    /**
+     * output directory for the current class being processed
+     * @var string
+     */
+    var $class_dir;
+    
+    /**
+     * array of converted package page names.
+     * Used to link to the package page in the left index
+     * @var array Format: array(package => 1)
+     */
+    var $package_pages = array();
+    
+    /**
+     * controls formatting of parser informative output
+     * 
+     * Converter prints:
+     * "Converting /path/to/file.php... Procedural Page Elements... Classes..."
+     * Since HTMLdefaultConverter outputs files while converting, it needs to send a \n to start a new line.  However, if there
+     * is more than one class, output is messy, with multiple \n's just between class file output.  This variable prevents that
+     * and is purely cosmetic
+     * @var boolean
+     */
+    var $juststarted = false;
+    
+    /**
+     * contains all of the template procedural page element loop data needed for the current template
+     * @var array
+     */
+    var $current;
+    
+    /**
+     * contains all of the template class element loop data needed for the current template
+     * @var array
+     */
+    var $currentclass;
+    var $wrote = false;
+    var $ric_set = array();
+    
+    /**
+     * sets {@link $base_dir} to $targetDir
+     * @see Converter()
+     */
+    function HTMLframesConverter(&$allp, &$packp, &$classes, &$procpages, $po, $pp, $qm, $targetDir, $templateDir, $title)
+    {
+        Converter::Converter($allp, $packp, $classes, $procpages,$po, $pp, $qm, $targetDir, $templateDir, $title);
+        $this->base_dir = $targetDir;
+    }
+    
+    /**
+     * @deprecated in favor of PHP 4.3.0+ tokenizer-based source highlighting
+     */
+    function unmangle($sourcecode)
+    {
+        $sourcecode = str_replace('<code>','<pre>',$sourcecode);
+        $sourcecode = str_replace('</code>','</pre>',$sourcecode);
+        $sourcecode = str_replace('<br />',"\n",$sourcecode);
+        $sourcecode = str_replace('&nbsp;',' ',$sourcecode);
+        $sourcecode = str_replace('&lt;','<',$sourcecode);
+        $sourcecode = str_replace('&gt;','>',$sourcecode);
+        $sourcecode = str_replace('&amp;','&',$sourcecode);
+        return $sourcecode;
+    }
+
+    /**
+     * @param string full path to the source file
+     * @param string fully highlighted source code
+     */
+    function writeSource($path, $value)
+    {
+        $templ = &$this->newSmarty();
+        $pathinfo = $this->proceduralpages->getPathInfo($path, $this);
+        $templ->assign('source',$value);
+        $templ->assign('package',$pathinfo['package']);
+        $templ->assign('subpackage',$pathinfo['subpackage']);
+        $templ->assign('name',$pathinfo['name']);
+        $templ->assign('source_loc',$pathinfo['source_loc']);
+        $templ->assign('docs',$pathinfo['docs']);
+        $templ->assign("subdir",'../');
+        $templ->register_outputfilter('HTMLframes_outputfilter');
+        $this->setTargetDir($this->getFileSourcePath($this->base_dir));
+        phpDocumentor_out("\n");
+        $this->setSourcePaths($path);
+        $this->writefile($this->getFileSourceName($path).'.html',$templ->fetch('filesource.tpl'));
+    }
+    
+    function writeExample($title, $path, $source)
+    {
+        $templ = &$this->newSmarty();
+        $templ->assign('source',$source);
+        if (empty($title))
+        {
+            $title = 'example';
+            addWarning(PDERROR_EMPTY_EXAMPLE_TITLE, $path, $title);
+        }
+        $templ->assign('title',$title);
+        $templ->assign('file',$path);
+        $templ->assign("subdir",'../');
+        $templ->register_outputfilter('HTMLframes_outputfilter');
+        $this->setTargetDir($this->base_dir . PATH_DELIMITER . '__examplesource');
+        phpDocumentor_out("\n");
+        $this->writefile('exsource_'.$path.'.html',$templ->fetch('examplesource.tpl'));
+    }
+    
+    function getExampleLink($path, $title)
+    {
+        return $this->returnLink('{$subdir}__examplesource' . PATH_DELIMITER . 'exsource_'.$path.'.html',$title);
+    }
+    
+    function getSourceLink($path)
+    {
+        return $this->returnLink($this->getFileSourcePath('{$subdir}') .
+        PATH_DELIMITER . $this->getFileSourceName($path).'.html','Source Code for this file');
+    }
+
+    /**
+     * Return a line of highlighted source code with formatted line number
+     *
+     * If the $path is a full path, then an anchor to the line number will be
+     * added as well
+     * @param integer line number
+     * @param string highlighted source code line
+     * @param false|string full path to @filesource file this line is a part of,
+     *        if this is a single line from a complete file.
+     * @return string formatted source code line with line number
+     */
+    function sourceLine($linenumber, $line, $path = false)
+    {
+        $extra = '';
+        if (strlen(str_replace("\n", '', $line)) == 0) {
+            $extra = '&nbsp;';
+        }
+        if ($path)
+        {
+            return '<li>' . $this->getSourceAnchor($path, $linenumber) .
+                   str_replace("\n",'',$line) . $extra .
+                   "</li>\n";
+        } else
+        {
+            return '<li>' . str_replace("\n",'',$line) . "$extra</li>\n";
+        }
+    }
+    
+    /**
+     * Used to convert the <<code>> tag in a docblock
+     * @param string
+     * @param boolean
+     * @return string
+     */
+    function ProgramExample($example, $tutorial = false, $inlinesourceparse = null/*false*/,
+                            $class = null/*false*/, $linenum = null/*false*/, $filesourcepath = null/*false*/)
+    {
+        return '<pre><ol>' . parent::ProgramExample($example, $tutorial, $inlinesourceparse, $class, $linenum, $filesourcepath)
+               .'</ol></pre>';
+    }
+    
+    /**
+     * @param string
+     */
+    function TutorialExample($example)
+    {
+        $trans = $this->template_options['desctranslate'];
+        $this->template_options['desctranslate'] = array();
+        $example = '<ol>' . parent::TutorialExample($example)
+               .'</ol>';
+        $this->template_options['desctranslate'] = $trans;
+        if (!isset($this->template_options['desctranslate'])) return $example;
+        if (!isset($this->template_options['desctranslate']['code'])) return $example;
+        $example = $this->template_options['desctranslate']['code'] . $example;
+        if (!isset($this->template_options['desctranslate']['/code'])) return $example;
+        return $example . $this->template_options['desctranslate']['/code'];
+    }
+    
+    /**
+     * Retrieve a Converter-specific anchor to a segment of a source code file
+     * parsed via a {@tutorial tags.filesource.pkg} tag.
+     * @param string full path to source file
+     * @param string name of anchor
+     * @param string link text, if this is a link
+     * @param boolean returns either a link or a destination based on this
+     *                parameter
+     * @return string link to an anchor, or the anchor
+     */
+    function getSourceAnchor($sourcefile,$anchor,$text = '',$link = false)
+    {
+        if ($link)
+        return $this->returnLink($this->getFileSourcePath('{$subdir}') .
+        PATH_DELIMITER . $this->getFileSourceName($sourcefile).'.html#a'.$anchor, $text);
+        else
+        return '<a name="a'.$anchor.'"></a>';
+    }
+    
+    function getCurrentPageLink()
+    {
+        return $this->curname . '.html';
+    }
+
+    /**
+     * Uses htmlspecialchars() on the input
+     */
+    function postProcess($text)
+    {
+        return htmlspecialchars($text);
+    }
+    
+    /**
+     * Use the template tutorial_toc.tpl to generate a table of contents for HTML
+     * @return string table of contents formatted for use in the current output format
+     * @param array format: array(array('tagname' => section, 'link' => returnsee link, 'id' => anchor name, 'title' => from title tag),...)
+     */
+    function formatTutorialTOC($toc)
+    {
+        $template = &$this->newSmarty();
+        $template->assign('toc',$toc);
+        return $template->fetch('tutorial_toc.tpl');
+    }
+    
+    function &SmartyInit(&$templ)
+    {
+        if (!isset($this->package_index))
+        foreach($this->all_packages as $key => $val)
+        {
+            if (isset($this->pkg_elements[$key]))
+            {
+                if (!isset($start)) $start = $key;
+                $this->package_index[] = array('link' => "li_$key.html", 'title' => $key);
+            }
+        }
+        $templ->assign("packageindex",$this->package_index);
+        $templ->assign("subdir",'');
+        return $templ;
+    }
+    
+    /**
+     * Writes out the template file of {@link $class_data} and unsets the template to save memory
+     * @see registerCurrentClass()
+     * @see parent::endClass()
+     */
+    function endClass()
+    {
+        $a = '../';
+        if (!empty($this->subpackage)) $a .= '../';
+        if ($this->juststarted)
+        {
+            $this->juststarted = false;
+            phpDocumentor_out("\n");
+            flush();
+        }
+        $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->class_dir);
+        $this->class_data->assign("subdir",$a);
+        $this->class_data->register_outputfilter('HTMLframes_outputfilter');
+        $this->writefile($this->class . '.html',$this->class_data->fetch('class.tpl'));
+        unset($this->class_data);
+    }
+    
+    /**
+     * Writes out the template file of {@link $page_data} and unsets the template to save memory
+     * @see registerCurrent()
+     * @see parent::endPage()
+     */
+    function endPage()
+    {
+        $this->package = $this->curpage->package;
+        $this->subpackage = $this->curpage->subpackage;
+        $a = '../';
+        if (!empty($this->subpackage)) $a .= '../';
+        $this->setTargetDir($this->base_dir . PATH_DELIMITER . $this->page_dir);
+        $this->page_data->assign("package",$this->package);
+        $this->page_data->assign("subdir",$a);
+        $this->page_data->register_outputfilter('HTMLframes_outputfilter');
+        $this->writefile($this->page . '.html',$this->page_data->fetch('page.tpl'));
+        unset($this->page_data);
+    }
+    
+    /**
+     * @param string
+     * @param string
+     * @return string &lt;a href="'.$link.'">'.$text.'</a&gt;
+     */
+    function returnLink($link,$text)
+    {
+        return '<a href="'.$link.'">'.$text.'</a>';
+    }
+    
+    function makeLeft()
+    {
+        foreach($this->page_elements as $package => $o1)
+        {
+            foreach($o1 as $subpackage => $links)
+            {
+                for($i=0;$i<count($links);$i++)
+                {
+                    $left[$package][$subpackage]['files'][] =
+                        array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
+                }
+            }
+        }
+        foreach($this->class_elements as $package => $o1)
+        {
+            foreach($o1 as $subpackage => $links)
+            {
+                for($i=0;$i<count($links);$i++)
+                {
+										$class = $this->classes->getClassByPackage($links[$i]->name, $links[$i]->package);
+										if ($class && isset($class->docblock) && $class->docblock->hasaccess)
+												$left[$package][$subpackage]['classes'][] =
+												array("link" => $this->getId($links[$i]), 
+															"title" => $links[$i]->name,
+															"access" => $class->docblock->tags['access'][0]->value,
+															"abstract" => isset ($class->docblock->tags['abstract'][0]));
+										else
+												$left[$package][$subpackage]['classes'][] =
+												array("link" => $this->getId($links[$i]), 
+															"title" => $links[$i]->name,
+															"access" => 'public',
+															"abstract" => isset ($class->docblock->tags['abstract'][0]));
+                }
+            }
+        }
+        foreach($this->function_elements as $package => $o1)
+        {
+            foreach($o1 as $subpackage => $links)
+            {
+                for($i=0;$i<count($links);$i++)
+                {
+                    $left[$package][$subpackage]['functions'][] =
+                        array("link" => $this->getId($links[$i]), "title" => $links[$i]->name);
+                }
+            }
+        }
+        $ret = array();
+        foreach($left as $package => $r)
+        {
+            $pd = 'blank';
+            if (isset($this->package_pages[$package])) $pd = $package.'/package_'.$package.'.html';
+            if (!isset($r['']))
+            {
+                $pt = false;
+                $ptnoa = false;
+                $ptt = $package;
+                if ($t = $this->hasTutorial('pkg',$package,$package,''))
+                {
+                    $pt = $t->getLink($this);
+                    $ptnoa = $this->getId($t->getLink($this,true));
+                    $ptt = $t->getTitle($this);
+                }
+                $tutes = array();
+                foreach($this->tutorial_tree as $root => $tr)
+                {
+                    if ($tr['tutorial']->package == $package && $tr['tutorial']->subpackage == $subpackage)
+                    $tutes[$tr['tutorial']->tutorial_type][] = $this->getTutorialTree($tr['tutorial']);
+                }
+                if (isset($this->childless_tutorials[$package][$subpackage]))
+                {
+                    foreach($this->childless_tutorials[$package][$subpackage] as $ext => $other)
+                    {
+                        foreach($other as $tutorial)
+                        {
+                            $tutes[$tutorial->tutorial_type][] = $this->getTutorialTree($tutorial);
+                        }
+                    }
+                }
+                $ret[$package][] =
+                    array(
+                        'package' => $package,
+                        'subpackage' => '',
+                        'packagedoc' => $pd,
+                        'packagetutorial' => $pt,
+                        'packagetutorialnoa' => $ptnoa,
+                        'packagetutorialtitle' => $ptt,
+                        'files' => array(),
+                        'functions' => array(),
+                        'classes' => array(),
+                        'tutorials' => $tutes,
+                        );
+            }
+            foreach($r as $subpackage => $info)
+            {
+                $my = array();
+                $my['package'] = $package;
+                if (isset($this->package_pages[$package]))
+                $my['packagedoc'] = $pd;
+                else
+                $my['packagedoc'] = 'blank';
+                $my['subpackage'] = $subpackage;
+                if (empty($subpackage))
+                {
+                    if ($t = $this->hasTutorial('pkg',$package,$package,$subpackage))
+                    {
+                        $my['packagetutorial'] = $t->getLink($this);
+                        $my['packagetutorialnoa'] = $this->getId($t->getLink($this,true));
+                        $my['packagetutorialtitle'] = $t->getTitle($this);
+                    } else
+                    {
+                        $my['packagetutorial'] = '<a href="blank.html">No Package-Level Tutorial</a>';
+                        $my['packagetutorialnoa'] = 'blank.html';
+                        $my['packagetutorialtitle'] = $package;
+                    }
+                } else
+                {
+                    if ($t = $this->hasTutorial('pkg',$subpackage,$package,$subpackage))
+                    {
+                        $my['subpackagetutorial'] = $this->returnSee($this->getTutorialLink($t));
+                        $my['subpackagetutorialnoa'] = $this->getId($t->getLink($this,true));
+                        $my['subpackagetutorialtitle'] = $t->getTitle($this);
+                    } else
+                    {
+                        $my['subpackagetutorial'] = false;
+                        $my['subpackagetutorialnoa'] = false;
+                        $my['subpackagetutorialtitle'] = $subpackage;
+                    }
+                }
+                $tutes = array();
+                foreach($this->tutorial_tree as $root => $tr)
+                {
+                    if ($tr['tutorial']->package == $package && $tr['tutorial']->subpackage == $subpackage)
+                    {
+                        $tutes[$tr['tutorial']->tutorial_type][] = $this->getTutorialTree($tr['tutorial']);
+                    }
+                }
+                $my['tutorials'] = $tutes;
+                $my['files'] = $my['classes'] = $my['functions'] = array();
+                if (isset($info['files']))
+                $my['files'] = $info['files'];
+                if (isset($info['classes']))
+                $my['classes'] = $info['classes'];
+                if (isset($info['functions']))
+                $my['functions'] = $info['functions'];
+                $ret[$package][] = $my;
+            }
+        }
+        return $ret;
+    }
+    
+    function getTutorialTree($tutorial,$k = false)
+    {
+        $ret = '';
+        if (is_object($tutorial)) $tree = parent::getTutorialTree($tutorial); else $tree = $tutorial;
+//        debug($this->vardump_tree($tree));exit;
+        if (!$tree)
+        {
+            $template = &$this->newSmarty();
+            $template->assign('subtree',false);
+            $template->assign('name',str_replace('.','',$tutorial->name));
+            $template->assign('parent',false);
+            $template->assign('haskids',false);
+            $template->assign('kids','');
+            $link = new tutorialLink;
+            $t = $tutorial;
+            $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
+            $main = array('link' => $this->getId($link), 'title' => $link->title);
+            $template->assign('main',$main);
+            return $template->fetch('tutorial_tree.tpl');
+        }
+        if (isset($tree['kids']))
+        {
+            foreach($tree['kids'] as $subtree)
+            {
+                $ret .= $this->getTutorialTree($subtree, true);
+            }
+        }
+        $template = &$this->newSmarty();
+        $template->assign('subtree',$k);
+        $template->assign('name',str_replace('.','',$tree['tutorial']->name));
+        $template->assign('parent',($k ? str_replace('.','',$tree['tutorial']->parent->name) : false));
+        $template->assign('haskids',strlen($ret));
+        $template->assign('kids',$ret);
+        $link = new tutorialLink;
+        $t = $tree['tutorial'];
+        $link->addLink('',$t->path,$t->name,$t->package,$t->subpackage,$t->getTitle($this));
+        $main = array('link' => $this->getId($link), 'title' => $link->title);
+        $template->assign('main',$main);
+        $ret = $template->fetch('tutorial_tree.tpl');
+				return $ret;
+    }
+    
+    /**
+     * HTMLdefaultConverter chooses to format both package indexes and the complete index here
+     *
+     * This function formats output for the elementindex.html and pkgelementindex.html template files.  It then
+     * writes them to the target directory
+     * @see generateElementIndex(), generatePkgElementIndex()
+     */
+    function formatPkgIndex()
+    {
+        list($package_indexes,$packages,$mletters) = $this->generatePkgElementIndexes();
+        for($i=0;$i<count($package_indexes);$i++)
+        {
+            $template = &$this->newSmarty();
+            $this->package = $package_indexes[$i]['package'];
+            $this->subpackage = '';
+            $template->assign("index",$package_indexes[$i]['pindex']);
+            $template->assign("package",$package_indexes[$i]['package']);
+            $template->assign("letters",$mletters[$package_indexes[$i]['package']]);
+            $template->register_outputfilter('HTMLframes_outputfilter');
+            $this->setTargetDir($this->base_dir);
+            $this->writefile('elementindex_'.$package_indexes[$i]['package'].'.html',$template->fetch('pkgelementindex.tpl'));
+        }
+        phpDocumentor_out("\n");
+        flush();
+        }
+    
+    /**
+     * HTMLdefaultConverter uses this function to format template index.html and packages.html
+     *
+     * This function generates the package list from {@link $all_packages}, eliminating any
+     * packages that don't have any entries in their package index (no files at all, due to @ignore
+     * or other factors).  Then it uses the default package name as the first package index to display.
+     * It sets the right pane to be either a blank file with instructions on making package-level docs,
+     * or the package-level docs for the default package.
+     * @global string Used to set the starting package to display
+     */
+    function formatIndex()
+    {
+        global $phpDocumentor_DefaultPackageName;
+        list($elindex,$mletters) = $this->generateElementIndex();
+        $template = &$this->newSmarty();
+        $template->assign("index",$elindex);
+        $template->assign("letters",$mletters);
+        $template->register_outputfilter('HTMLframes_outputfilter');
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir);
+        $this->writefile('elementindex.html',$template->fetch('elementindex.tpl'));
+        usort($this->package_index,"HTMLframes_pindexcmp");
+        $index = &$this->newSmarty();
+        foreach($this->all_packages as $key => $val)
+        {
+            if (isset($this->pkg_elements[$key]))
+            {
+                if (!isset($start)) $start = $key;
+                if (!isset($this->package_pages[$key])) $this->writeNewPPage($key);
+            }
+        }
+        // Created index.html
+        if (isset($this->pkg_elements[$phpDocumentor_DefaultPackageName])) $start = $phpDocumentor_DefaultPackageName;
+        $this->package = $start;
+        $this->subpackage = '';
+        $index->assign("package_count",count($this->pkg_elements));
+        if (count($this->ric_set))
+        $index->assign("package_count",2);
+        $index->assign("date",date("r",time()));
+        $index->assign("title",$this->title);
+        $index->assign("start","li_$start.html");
+        $index->register_outputfilter('HTMLframes_outputfilter');
+        if (isset($this->tutorials[$start]['']['pkg'][$start . '.pkg']))
+        {
+            $index->assign("blank",$start.'/tutorial_'.$start.'.pkg');
+        } elseif (isset($this->package_pages[$start]))
+        {
+            $index->assign("blank",$start.'/package_'.$start);
+        }
+        else
+        {
+            $index->assign("blank","blank");
+            $blank = &$this->newSmarty();
+            $blank->assign('package',$phpDocumentor_DefaultPackageName);
+            $this->setTargetDir($this->base_dir);
+            $this->writefile("blank.html",$blank->fetch('blank.tpl'));
+        }
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir);
+        $this->writefile("index.html",$index->fetch('index.tpl'));
+
+        // Create package index
+        $package = &$this->newSmarty();
+        $package->assign('ric',array());
+        if (isset($this->ric_set))
+        {
+            foreach($this->ric_set as $name => $u)
+            {
+                $package->append('ric',array('file' => 'ric_'.$name.'.html','name' => $name));
+            }
+        }
+        $package->assign("packages",$this->package_index);
+        $package->register_outputfilter('HTMLframes_outputfilter');
+        $this->writefile("packages.html",$package->fetch('top_frame.tpl'));
+        unset($index);
+    }
+    
+    function writeNewPPage($key)
+    {
+        return;
+        $template = &$this->newSmarty();
+        $this->package = $key;
+        $this->subpackage = '';
+        $template->assign("date",date("r",time()));
+        $template->assign("title",$this->title);
+        $template->assign("package",$key);
+        $template->register_outputfilter('HTMLframes_outputfilter');
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir);
+    
+        $this->writefile("li_$key.html",$template->fetch('index.tpl'));
+        unset($template);
+    }
+    
+    /**
+     * Generate indexes for li_package.html and classtree output files
+     *
+     * This function generates the li_package.html files from the template file left.html.  It does this by
+     * iterating through each of the $page_elements, $class_elements and  $function_elements arrays to retrieve
+     * the pre-sorted {@link abstractLink} descendants needed for index generation.  Conversion of these links to
+     * text is done by {@link returnSee()}.  The {@link $local} parameter is set to false to ensure that paths are correct.
+     * 
+     * Then it uses {@link generateFormattedClassTrees()} to create class trees from the template file classtrees.html.  Output
+     * filename is classtrees_packagename.html.  This function also unsets {@link $elements} and {@link $pkg_elements} to free
+     * up the considerable memory these two class vars use
+     * @see $page_elements, $class_elements, $function_elements
+     */
+    function formatLeftIndex()
+    {
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir);
+        if (0)//!isset($this->left))
+        {
+            debug("Nothing parsed, check the command-line");
+            die();
+        }
+        $x = $this->makeLeft();
+        foreach($this->all_packages as $package => $rest)
+        {
+            if (!isset($this->pkg_elements[$package])) continue;
+            $template = &$this->newSmarty();
+            $template->assign("info",$x[$package]);
+            $template->assign('package',$package);
+            $template->assign("hastutorials",isset($this->tutorials[$package]));
+            $template->assign('hastodos',count($this->todoList));
+            $template->assign('todolink','todolist.html');
+            $template->assign("classtreepage","classtrees_$package");
+            $template->assign("elementindex","elementindex_$package");
+            $template->register_outputfilter('HTMLframes_outputfilter');
+            if (isset($this->package_pages[$package]))
+            {
+                $template->assign("packagedoc",$package.'/package_' . $package . '.html');
+            } else
+            {
+                $template->assign("packagedoc",false);
+            }
+            $this->writefile("li_$package.html",$template->fetch('left_frame.tpl'));
+            
+            // Create class tree page
+            $template = &$this->newSmarty();
+            $template->assign("classtrees",$this->generateFormattedClassTrees($package));
+            $template->assign("package",$package);
+            $template->register_outputfilter('HTMLframes_outputfilter');
+            $this->writefile("classtrees_$package.html",$template->fetch('classtrees.tpl'));
+            phpDocumentor_out("\n");
+            flush();
+        }
+        // free up considerable memory
+        unset($this->elements);
+        unset($this->pkg_elements);
+    }
+    
+    /**
+     * This function takes an {@link abstractLink} descendant and returns an html link
+     *
+     * @param abstractLink a descendant of abstractlink should be passed, and never text
+     * @param string text to display in the link
+     * @param boolean this parameter is not used, and is deprecated
+     * @param boolean determines whether the returned text is enclosed in an <a> tag
+     */
+    function returnSee(&$element, $eltext = false, $with_a = true)
+    {
+        if (!is_object($element) || !$element) return false;
+        if (!$with_a) return $this->getId($element, false);
+        if (!$eltext)
+        {
+            $eltext = '';
+            switch($element->type)
+            {
+                case 'tutorial' :
+                $eltext = strip_tags($element->title);
+                break;
+                case 'method' :
+                case 'var' :
+                case 'const' :
+                $eltext .= $element->class.'::';
+                case 'page' :
+                case 'define' :
+                case 'class' :
+                case 'function' :
+                case 'global' :
+                default :
+                $eltext .= $element->name;
+                if ($element->type == 'function' || $element->type == 'method') $eltext .= '()';
+                break;
+            }
+        }
+        return '<a href="'.$this->getId($element).'">'.$eltext.'</a>';
+    }
+    
+    function getId($element, $fullpath = true)
+    {
+        if (phpDocumentor_get_class($element) == 'parserdata')
+        {
+            $element = $this->addLink($element->parent);
+            $elp = $element->parent;
+        } elseif (is_a($element, 'parserbase'))
+        {
+            $elp = $element;
+            $element = $this->addLink($element);
+        }
+        $c = '';
+        if (!empty($element->subpackage))
+        {
+            $c = '/'.$element->subpackage;
+        }
+        $b = '{$subdir}';
+        switch ($element->type)
+        {
+            case 'page' :
+            if ($fullpath)
+            return $b.$element->package.$c.'/'.$element->fileAlias.'.html';
+            return 'top';
+            break;
+            case 'define' :
+            case 'global' :
+            case 'function' :
+            if ($fullpath)
+            return $b.$element->package.$c.'/'.$element->fileAlias.'.html#'.$element->type.$element->name;
+            return $element->type.$element->name;
+            break;
+            case 'class' :
+            if ($fullpath)
+            return $b.$element->package.$c.'/'.$element->name.'.html';
+            return 'top';
+            break;
+            case 'method' :
+            case 'var' :
+            case 'const' :
+            if ($fullpath)
+            return $b.$element->package.$c.'/'.$element->class.'.html#'.$element->type.$element->name;
+            return $element->type.$element->name;
+            break;
+            case 'tutorial' :
+            $d = '';
+            if ($element->section)
+            {
+                $d = '#'.$element->section;
+            }
+            return $b.$element->package.$c.'/tutorial_'.$element->name.'.html'.$d;
+        }
+    }
+    
+    /**
+     * Convert README/INSTALL/CHANGELOG file contents to output format
+     * @param README|INSTALL|CHANGELOG
+     * @param string contents of the file
+     */
+    function Convert_RIC($name, $contents)
+    {
+        $template = &$this->newSmarty();
+        $template->assign('contents',$contents);
+        $template->assign('name',$name);
+        $this->setTargetDir($this->base_dir);
+        $this->writefile('ric_'.$name . '.html',$template->fetch('ric.tpl'));
+        $this->ric_set[$name] = true;
+    }
+    
+    function ConvertTodoList()
+    {
+        $todolist = array();
+        foreach($this->todoList as $package => $alltodos)
+        {
+            foreach($alltodos as $todos)
+            {
+                $converted = array();
+                $converted['link'] = $this->returnSee($todos[0]);
+                if (!is_array($todos[1]))
+                {
+                    $converted['todos'][] = $todos[1]->Convert($this);
+                } else
+                {
+                    foreach($todos[1] as $todo)
+                    {
+                        $converted['todos'][] = $todo->Convert($this);
+                    }
+                }
+                $todolist[$package][] = $converted;
+            }
+        }
+        $templ = &$this->newSmarty();
+        $templ->assign('todos',$todolist);
+        $templ->register_outputfilter('HTMLframes_outputfilter');
+        $this->setTargetDir($this->base_dir);
+        $this->writefile('todolist.html',$templ->fetch('todolist.tpl'));
+    }
+    
+    /**
+     * Create errors.html template file output
+     *
+     * This method takes all parsing errors and warnings and spits them out ordered by file and line number.
+     * @global ErrorTracker We'll be using it's output facility
+     */
+    function ConvertErrorLog()
+    {
+        global $phpDocumentor_errors;
+        $allfiles = array();
+        $files = array();
+        $warnings = $phpDocumentor_errors->returnWarnings();
+        $errors = $phpDocumentor_errors->returnErrors();
+        $template = &$this->newSmarty();
+        foreach($warnings as $warning)
+        {
+            $file = '##none';
+            $linenum = 'Warning';
+            if ($warning->file)
+            {
+                $file = $warning->file;
+                $allfiles[$file] = 1;
+                $linenum .= ' on line '.$warning->linenum;
+            }
+            $files[$file]['warnings'][] = array('name' => $linenum, 'listing' => $warning->data);
+        }
+        foreach($errors as $error)
+        {
+            $file = '##none';
+            $linenum = 'Error';
+            if ($error->file)
+            {
+                $file = $error->file;
+                $allfiles[$file] = 1;
+                $linenum .= ' on line '.$error->linenum;
+            }
+            $files[$file]['errors'][] = array('name' => $linenum, 'listing' => $error->data);
+        }
+        $i=1;
+        $af = array();
+        foreach($allfiles as $file => $num)
+        {
+            $af[$i++] = $file;
+        }
+        $allfiles = $af;
+        usort($allfiles,'strnatcasecmp');
+        $allfiles[0] = "Post-parsing";
+        foreach($allfiles as $i => $a)
+        {
+            $allfiles[$i] = array('file' => $a);
+        }
+        $out = array();
+        foreach($files as $file => $data)
+        {
+            if ($file == '##none') $file = 'Post-parsing';
+            $out[$file] = $data;
+        }
+        $template->assign("files",$allfiles);
+        $template->assign("all",$out);
+        $template->assign("title","phpDocumentor Parser Errors and Warnings");
+        $this->setTargetDir($this->base_dir);
+        $this->writefile("errors.html",$template->fetch('errors.tpl'));
+        unset($template);
+        phpDocumentor_out("\n\nTo view errors and warnings, look at ".$this->base_dir. PATH_DELIMITER . "errors.html\n");
+        flush();
+    }
+    
+    function getTutorialId($package,$subpackage,$tutorial,$id)
+    {
+        return $id;
+    }
+    
+    function getCData($value)
+    {
+        return '<pre>'.htmlentities($value).'</pre>';
+    }
+    
+    /**
+     * Converts package page and sets its package as used in {@link $package_pages}
+     * @param parserPackagePage
+     */
+    function convertPackagepage(&$element)
+    {
+        phpDocumentor_out("\n");
+        flush();
+        $this->package = $element->package;
+        $this->subpackage = '';
+        $contents = $element->Convert($this);
+        $this->package_pages[$element->package] = str_replace('{$subdir}','../',$contents);
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package);
+        $this->writeFile('package_'.$element->package.'.html',str_replace('{$subdir}','../',$contents));
+    }
+    
+    /**
+     * @param parserTutorial
+     */
+    function convertTutorial(&$element)
+    {
+        phpDocumentor_out("\n");
+        flush();
+        $template = &parent::convertTutorial($element);
+        $a = '../';
+        if ($element->subpackage) $a .= '../';
+        $template->assign('subdir',$a);
+        $template->register_outputfilter('HTMLframes_outputfilter');
+        $contents = $template->fetch('tutorial.tpl');
+        $a = '';
+        if ($element->subpackage) $a = PATH_DELIMITER . $element->subpackage;
+        phpDocumentor_out("\n");
+        flush();
+        $this->setTargetDir($this->base_dir . PATH_DELIMITER . $element->package . $a);
+        $this->writeFile('tutorial_'.$element->name.'.html',$contents);
+    }
+    
+    /**
+     * Converts class for template output
+     * @see prepareDocBlock(), generateChildClassList(), generateFormattedClassTree(), getFormattedConflicts()
+     * @see getFormattedInheritedMethods(), getFormattedInheritedVars()
+     * @param parserClass
+     */
+    function convertClass(&$element)
+    {
+        parent::convertClass($element);
+        $this->class_dir = $element->docblock->package;
+        if (!empty($element->docblock->subpackage)) $this->class_dir .= PATH_DELIMITER . $element->docblock->subpackage;
+        $a = '../';
+        if ($element->docblock->subpackage != '') $a = "../$a";
+        
+        $this->class_data->assign('subdir',$a);
+        $this->class_data->assign("title","Docs For Class " . $element->getName());
+        $this->class_data->assign("page",$element->getName() . '.html');
+    }
+
+    /**
+     * Converts class variables for template output
+     * @see prepareDocBlock(), getFormattedConflicts()
+     * @param parserDefine
+     */
+    function convertVar(&$element)
+    {
+        parent::convertVar($element, array('var_dest' => $this->getId($element,false)));
+    }
+
+    /**
+     * Converts class variables for template output
+     * @see prepareDocBlock(), getFormattedConflicts()
+     * @param parserDefine
+     */
+    function convertConst(&$element)
+    {
+        parent::convertConst($element, array('const_dest' => $this->getId($element,false)));
+    }
+
+    /**
+     * Converts class methods for template output
+     * @see prepareDocBlock(), getFormattedConflicts()
+     * @param parserDefine
+     */
+    function convertMethod(&$element)
+    {
+        parent::convertMethod($element, array('method_dest' => $this->getId($element,false)));
+    }
+    
+    /**
+     * Converts function for template output
+     * @see prepareDocBlock(), parserFunction::getFunctionCall(), getFormattedConflicts()
+     * @param parserFunction
+     */
+    function convertFunction(&$element)
+    {
+        $funcloc = $this->getId($this->addLink($element));
+        parent::convertFunction($element,array('function_dest' => $this->getId($element,false)));
+    }
+    
+    /**
+     * Converts include elements for template output
+     * @see prepareDocBlock()
+     * @param parserInclude
+     */
+    function convertInclude(&$element)
+    {
+        parent::convertInclude($element, array('include_file'    => '_'.strtr($element->getValue(),array('"' => '', "'" => '','.' => '_'))));
+    }
+    
+    /**
+     * Converts defines for template output
+     * @see prepareDocBlock(), getFormattedConflicts()
+     * @param parserDefine
+     */
+    function convertDefine(&$element)
+    {
+        parent::convertDefine($element, array('define_link' => $this->getId($element,false)));
+    }
+    
+    /**
+     * Converts global variables for template output
+     * @param parserGlobal
+     */
+    function convertGlobal(&$element)
+    {
+        parent::convertGlobal($element, array('global_link' => $this->getId($element,false)));
+    }
+    
+    /**
+     * converts procedural pages for template output
+     * @see prepareDocBlock(), getClassesOnPage()
+     * @param parserData
+     */
+    function convertPage(&$element)
+    {
+        parent::convertPage($element);
+        $this->juststarted = true;
+        $this->page_dir = $element->parent->package;
+        if (!empty($element->parent->subpackage)) $this->page_dir .= PATH_DELIMITER . $element->parent->subpackage;
+        // registering stuff on the template
+        $this->page_data->assign("page",$this->getPageName($element) . '.html');
+        $this->page_data->assign("title","Docs for page ".$element->parent->getFile());
+    }
+    
+    function getPageName(&$element)
+    {
+        if (phpDocumentor_get_class($element) == 'parserpage') return '_'.$element->getName();
+        return '_'.$element->parent->getName();
+    }
+
+    /**
+     * returns an array containing the class inheritance tree from the root object to the class
+     *
+     * @param parserClass    class variable
+     * @return array Format: array(root,child,child,child,...,$class)
+     * @uses parserClass::getParentClassTree()
+     */
+    
+    function generateFormattedClassTree($class)
+    {
+        $tree = $class->getParentClassTree($this);
+        $out = '';
+        if (count($tree) - 1)
+        {
+            $result = array($class->getName());
+            $parent = $tree[$class->getName()];
+            $distance[] = '';
+            while ($parent)
+            {
+                $x = $parent;
+                if (is_object($parent))
+                {
+                    $subpackage = $parent->docblock->subpackage;
+                    $package = $parent->docblock->package;
+                    $x = $parent;
+                    $x = $parent->getLink($this);
+                    if (!$x) $x = $parent->getName();
+                }
+                $result[] = 
+                    $x;
+                $distance[] =
+                    "\n%s|\n" .
+                    "%s--";
+                if (is_object($parent))
+                $parent = $tree[$parent->getName()];
+                elseif (isset($tree[$parent]))
+                $parent = $tree[$parent];
+            }
+            $nbsp = '   ';
+            for($i=count($result) - 1;$i>=0;$i--)
+            {
+                $my_nbsp = '';
+                for($j=0;$j<count($result) - $i;$j++) $my_nbsp .= $nbsp;
+                $distance[$i] = sprintf($distance[$i],$my_nbsp,$my_nbsp);
+            }
+            return array('classes'=>array_reverse($result),'distance'=>array_reverse($distance));
+        } else
+        {
+            return array('classes'=>$class->getName(),'distance'=>array(''));
+        }
+    }
+    
+    /** @access private */
+    function sortVar($a, $b)
+    {
+        return strnatcasecmp($a->getName(),$b->getName());
+    }
+    
+    /** @access private */
+    function sortMethod($a, $b)
+    {
+        if ($a->isConstructor) return -1;
+        if ($b->isConstructor) return 1;
+        return strnatcasecmp($a->getName(),$b->getName());
+    }
+
+    /**
+     * returns a template-enabled array of class trees
+     * 
+     * @param    string    $package    package to generate a class tree for
+     * @see $roots, HTMLConverter::getRootTree()
+     */
+    function generateFormattedClassTrees($package)
+    {
+        if (!isset($this->roots[$package])) return array();
+        $roots = $trees = array();
+        $roots = $this->roots[$package];
+        for($i=0;$i<count($roots);$i++)
+        {
+            $trees[] = array('class' => $roots[$i],'class_tree' => "<ul>\n".$this->getRootTree($this->getSortedClassTreeFromClass($roots[$i],$package,''),$package)."</ul>\n");
+        }
+        return $trees;
+    }
+    
+    /**
+     * return formatted class tree for the Class Trees page
+     *
+     * @param array $tree output from {@link getSortedClassTreeFromClass()}
+     * @see Classes::$definitechild, generateFormattedClassTrees()
+     * @return string
+     */
+    function getRootTree($tree,$package)
+    {
+        if (!$tree) return '';
+        $my_tree = '';
+        $cur = '#root';
+        $lastcur = array(false);
+        $kids = array();
+        $dopar = false;
+        if ($tree[$cur]['parent'])
+        {
+            $dopar = true;
+            if (!is_object($tree[$cur]['parent']))
+            {
+//                debug("parent ".$tree[$cur]['parent']." not found");
+                $my_tree .= '<li>' . $tree[$cur]['parent'] .'<ul>';
+            }
+            else
+            {
+//                        debug("parent ".$this->returnSee($tree[$cur]['parent'])." in other package");
+                $my_tree .= '<li>' . $this->returnSee($tree[$cur]['parent']);
+                if ($tree[$cur]['parent']->package != $package) $my_tree .= ' <b>(Different package)</b><ul>';
+            }
+        }
+        do
+        {
+//            fancy_debug($cur,$lastcur,$kids);
+            if (count($tree[$cur]['children']))
+            {
+//                debug("$cur has children");
+                if (!isset($kids[$cur]))
+                {
+//                    debug("set $cur kids");
+                    $kids[$cur] = 1;
+                    $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
+                    $my_tree .= '<ul>'."\n";
+                }
+                array_push($lastcur,$cur);
+                list(,$cur) = each($tree[$cur]['children']);
+//                var_dump('listed',$cur);
+                if ($cur)
+                {
+                    $cur = $cur['package'] . '#' . $cur['class'];
+//                    debug("set cur to child $cur");
+//                    $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link']);
+                    continue;
+                } else
+                {
+//                    debug("end of children for $cur");
+                    $cur = array_pop($lastcur);
+                    $cur = array_pop($lastcur);
+                    $my_tree .= '</ul></li>'."\n";
+                    if ($dopar && ($cur == '#root' || !$cur)) $my_tree .= '</ul></li>';
+                }
+            } else 
+            {
+//                debug("$cur has no children");
+                $my_tree .= '<li>'.$this->returnSee($tree[$cur]['link'])."</li>";
+                if ($dopar && $cur == '#root') $my_tree .= '</ul></li>';
+                $cur = array_pop($lastcur);
+            }
+        } while ($cur);
+        return $my_tree;
+    }
+        /**
+         * Generate indexing information for given element
+         * 
+         * @param parserElement descendant of parserElement
+         * @see generateElementIndex()
+         * @return array
+         */
+        function getIndexInformation($elt)
+        {
+            $Result['type'] = $elt->type;
+            $Result['file_name'] = $elt->file;
+            $Result['path'] = $elt->getPath();
+            
+            if (isset($elt->docblock))
+						{
+							$Result['description'] = $elt->docblock->getSDesc($this);
+							
+							if ($elt->docblock->hasaccess)
+								$Result['access'] = $elt->docblock->tags['access'][0]->value;
+							else
+								$Result['access'] = 'public';
+
+							$Result['abstract'] = isset ($elt->docblock->tags['abstract'][0]);
+						}
+            else
+                $Result['description'] = '';
+            
+            $aa = $Result['description'];
+            if (!empty($aa)) $aa = "<br>&nbsp;&nbsp;&nbsp;&nbsp;$aa";
+
+            switch($elt->type)
+            {
+                    case 'class':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Class';
+                            $Result['link'] = $this->getClassLink($elt->getName(),
+                                                                  $elt->docblock->package,
+                                                                  $elt->getPath(),
+                                                                  $elt->getName());
+                            $Result['listing'] = 'in file '.$elt->file.', class '.$Result['link']."$aa";
+                    break;
+                    case 'define':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Constant';
+                            $Result['link'] = $this->getDefineLink($elt->getName(),
+                                                                   $elt->docblock->package,
+                                                                   $elt->getPath(),
+                                                                   $elt->getName());
+                            $Result['listing'] = 'in file '.$elt->file.', constant '.$Result['link']."$aa";
+                    break;
+                    case 'global':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Global';
+                            $Result['link'] = $this->getGlobalLink($elt->getName(),
+                                                                   $elt->docblock->package,
+                                                                   $elt->getPath(),
+                                                                   $elt->getName());
+                            $Result['listing'] = 'in file '.$elt->file.', global variable '.$Result['link']."$aa";
+                    break;
+                    case 'function':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Function';
+                            $Result['link'] = $this->getFunctionLink($elt->getName(),
+                                                                     $elt->docblock->package,
+                                                                     $elt->getPath(),
+                                                                     $elt->getName().'()');
+                            $Result['listing'] = 'in file '.$elt->file.', function '.$Result['link']."$aa";
+                    break;
+                    case 'method':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Method';
+                            $Result['link'] = $this->getMethodLink($elt->getName(),
+                                                                   $elt->class,
+                                                                   $elt->docblock->package,
+                                                                   $elt->getPath(),
+                                                                   $elt->class.'::'.$elt->getName().'()'
+                                                                             );
+														if ($elt->isConstructor) $Result['constructor'] = 1;
+                            $Result['listing'] = 'in file '.$elt->file.', method '.$Result['link']."$aa";
+                    break;
+                    case 'var':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Variable';
+                            $Result['link'] = $this->getVarLink($elt->getName(),
+                                                                $elt->class,
+                                                                $elt->docblock->package,
+                                                                $elt->getPath(),
+                                                                $elt->class.'::'.$elt->getName());
+                            $Result['listing'] = 'in file '.$elt->file.', variable '.$Result['link']."$aa";
+                    break;
+                    case 'const':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Class Constant';
+                            $Result['link'] = $this->getConstLink($elt->getName(),
+                                                                $elt->class,
+                                                                $elt->docblock->package,
+                                                                $elt->getPath(),
+                                                                $elt->class.'::'.$elt->getName());
+                            $Result['listing'] = 'in file '.$elt->file.', class constant '.$Result['link']."$aa";
+                    break;
+                    case 'page':
+                            $Result['name'] = $elt->getFile();
+                            $Result['title'] = 'Page';
+                            $Result['link'] = $this->getPageLink($elt->getFile(),
+                                                                 $elt->package,
+                                                                 $elt->getPath(),
+                                                                 $elt->getFile());
+                            $Result['listing'] = 'procedural page '.$Result['link'];
+                    break;
+                    case 'include':
+                            $Result['name'] = $elt->getName();
+                            $Result['title'] = 'Include';
+                            $Result['link'] = $elt->getValue();
+                            $Result['listing'] = 'include '.$Result['name'];
+                    break;
+            }
+
+            return $Result;
+        }
+    /**
+     * Generate alphabetical index of all elements
+     *
+     * @see $elements, walk()
+     */
+    function generateElementIndex()
+    {
+        $elementindex = array();
+        $letters = array();
+        $used = array();
+        foreach($this->elements as $letter => $nutoh)
+        {
+            foreach($this->elements[$letter] as $i => $yuh)
+            {
+                if ($this->elements[$letter][$i]->type != 'include')
+                {
+                    if (!isset($used[$letter]))
+                    {
+                        $letters[]['letter'] = $letter;
+                        $elindex['letter'] = $letter;
+                        $used[$letter] = 1;
+                    }
+
+                    $elindex['index'][] = $this->getIndexInformation($this->elements[$letter][$i]);
+                }
+            }
+            if (isset($elindex['index']))
+            {
+                $elementindex[] = $elindex;
+            } else
+            {
+                unset($letters[count($letters) - 1]);
+            }
+            $elindex = array();
+        }
+        return array($elementindex,$letters);
+    }
+    
+    function copyMediaRecursively($media,$targetdir,$subdir = '')
+    {
+        if (!is_array($media)) {
+            return;
+        }
+        foreach($media as $dir => $files)
+        {
+            if ($dir === '/')
+            {
+                $this->copyMediaRecursively($files,$targetdir);
+            } else
+            {
+                if (!is_numeric($dir))
+                {
+                    // create the subdir
+                    phpDocumentor_out("creating $targetdir/$dir\n");
+                    Converter::setTargetDir($targetdir . PATH_DELIMITER . $dir);
+                    if (!empty($subdir)) $subdir .= PATH_DELIMITER;
+                    $this->copyMediaRecursively($files,"$targetdir/$dir",$subdir . $dir);
+                } else
+                {
+                    // copy the file
+                    phpDocumentor_out("copying $targetdir/".$files['file']."\n");
+                    $this->copyFile($files['file'],$subdir);
+                }
+            }
+        }
+    }
+    
+    /**
+     * calls the converter setTargetDir, and then copies any template images and the stylesheet if they haven't been copied
+     * @see Converter::setTargetDir()
+     */
+    function setTargetDir($dir)
+    {
+        Converter::setTargetDir($dir);
+        if ($this->wrote) return;
+        $this->wrote = true;
+        $template_images = array();
+        $stylesheets = array();
+        $tdir = $dir;
+        $dir = $this->templateDir;
+        $this->templateDir = $this->templateDir.'templates/';
+        $info = new Io;
+        $this->copyMediaRecursively($info->getDirTree($this->templateDir.'media',$this->templateDir),$tdir);
+    }
+    
+    /**
+     * Generate alphabetical index of all elements by package and subpackage
+     *
+     * @param string $package name of a package
+     * @see $pkg_elements, walk(), generatePkgElementIndexes()
+     */
+    function generatePkgElementIndex($package)
+    {
+//        var_dump($this->pkg_elements[$package]);
+        $elementindex = array();
+        $letters = array();
+        $letterind = array();
+        $used = array();
+        $subp = '';
+        foreach($this->pkg_elements[$package] as $subpackage => $els)
+        {
+            if (empty($els)) continue;
+            if (!empty($subpackage)) $subp = " (<b>subpackage:</b> $subpackage)"; else $subp = '';
+            foreach($els as $letter => $yuh)
+            {
+                foreach($els[$letter] as $i => $yuh)
+                {
+                    if ($els[$letter][$i]->type != 'include')
+                    {
+                        if (!isset($used[$letter]))
+                        {
+                            $letters[]['letter'] = $letter;
+                            $letterind[$letter] = count($letters) - 1;
+                            $used[$letter] = 1;
+                        }
+                        $elindex[$letter]['letter'] = $letter;
+
+                        $elindex[$letter]['index'][] = $this->getIndexInformation($els[$letter][$i]);
+                    }
+                }
+            }
+        }
+        ksort($elindex);
+        usort($letters,'HTMLframes_lettersort');
+        if (isset($elindex))
+        {
+            while(list($letter,$tempel) = each($elindex))
+            {
+                if (!isset($tempel))
+                {
+                    unset($letters[$letterind[$tempel['letter']]]);
+                } else
+                $elementindex[] = $tempel;
+            }
+        } else $letters = array();
+        return array($elementindex,$letters);
+    }
+    
+    /**
+     *
+     * @see generatePkgElementIndex()
+     */
+    function generatePkgElementIndexes()
+    {
+        $packages = array();
+        $package_names = array();
+        $pkg = array();
+        $letters = array();
+        foreach($this->pkg_elements as $package => $trash)
+        {
+            $pkgs['package'] = $package;
+            $pkg['package'] = $package;
+            list($pkg['pindex'],$letters[$package]) = $this->generatePkgElementIndex($package);
+            if (count($pkg['pindex']))
+            {
+                $packages[] = $pkg;
+                $package_names[] = $pkgs;
+            }
+            unset($pkgs);
+            unset($pkg);
+        }
+        foreach($packages as $i => $package)
+        {
+            $pnames = array();
+            for($j=0;$j<count($package_names);$j++)
+            {
+                if ($package_names[$j]['package'] != $package['package']) $pnames[] = $package_names[$j];
+            }
+            $packages[$i]['packageindexes'] = $pnames;
+        }
+        return array($packages,$package_names,$letters);
+    }
+    
+    /**
+     * @param string name of class
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the class's documentation
+     * @see parent::getClassLink()
+     */
+    function getClassLink($expr,$package, $file = false,$text = false, $with_a = true)
+    {
+        $a = Converter::getClassLink($expr,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text, $with_a);
+    }
+
+    /**
+     * @param string name of function
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the function's documentation
+     * @see parent::getFunctionLink()
+     */
+    function getFunctionLink($expr,$package, $file = false,$text = false)
+    {
+        $a = Converter::getFunctionLink($expr,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of define
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the define's documentation
+     * @see parent::getDefineLink()
+     */
+    function getDefineLink($expr,$package, $file = false,$text = false)
+    {
+        $a = Converter::getDefineLink($expr,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of global variable
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the global variable's documentation
+     * @see parent::getGlobalLink()
+     */
+    function getGlobalLink($expr,$package, $file = false,$text = false)
+    {
+        $a = Converter::getGlobalLink($expr,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of procedural page
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the procedural page's documentation
+     * @see parent::getPageLink()
+     */
+    function getPageLink($expr,$package, $path = false,$text = false)
+    {
+        $a = Converter::getPageLink($expr,$package,$path);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of method
+     * @param string class containing method
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the method's documentation
+     * @see parent::getMethodLink()
+     */
+    function getMethodLink($expr,$class,$package, $file = false,$text = false)
+    {
+        $a = Converter::getMethodLink($expr,$class,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of var
+     * @param string class containing var
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the var's documentation
+     * @see parent::getVarLink()
+     */
+    function getVarLink($expr,$class,$package, $file = false,$text = false)
+    {
+        $a = Converter::getVarLink($expr,$class,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+
+    /**
+     * @param string name of class constant
+     * @param string class containing class constant
+     * @param string package name
+     * @param string full path to look in (used in index generation)
+     * @param boolean deprecated
+     * @param boolean return just the URL, or enclose it in an html a tag
+     * @return mixed false if not found, or an html a link to the var's documentation
+     * @see parent::getVarLink()
+     */
+    function getConstLink($expr,$class,$package, $file = false,$text = false)
+    {
+        $a = Converter::getConstLink($expr,$class,$package,$file);
+        if (!$a) return false;
+        return $this->returnSee($a, $text);
+    }
+    
+    /**
+     * does a nat case sort on the specified second level value of the array
+     *
+     * @param    mixed    $a
+     * @param    mixed    $b
+     * @return    int
+     */
+    function rcNatCmp ($a, $b)
+    {
+        $aa = strtoupper($a[$this->rcnatcmpkey]);
+        $bb = strtoupper($b[$this->rcnatcmpkey]);
+        
+        return strnatcasecmp($aa, $bb);
+    }
+    
+    /**
+     * does a nat case sort on the specified second level value of the array.
+     * this one puts constructors first
+     *
+     * @param    mixed    $a
+     * @param    mixed    $b
+     * @return    int
+     */
+    function rcNatCmp1 ($a, $b)
+    {
+        $aa = strtoupper($a[$this->rcnatcmpkey]);
+        $bb = strtoupper($b[$this->rcnatcmpkey]);
+        
+        if (strpos($aa,'CONSTRUCTOR') === 0)
+        {
+            return -1;
+        }
+        if (strpos($bb,'CONSTRUCTOR') === 0)
+        {
+            return 1;
+        }
+        if (strpos($aa,strtoupper($this->class)) === 0)
+        {
+            return -1;
+        }
+        if (strpos($bb,strtoupper($this->class)) === 0)
+        {
+            return -1;
+        }
+        return strnatcasecmp($aa, $bb);
+    }
+    
+    /**
+     * This function is not used by HTMLdefaultConverter, but is required by Converter
+     */
+    function Output()
+    {
+    }
+}
+
+/**
+ * @access private
+ * @global string name of the package to set as the first package
+ */
+function HTMLframes_pindexcmp($a, $b)
+{
+    global $phpDocumentor_DefaultPackageName;
+    if ($a['title'] == $phpDocumentor_DefaultPackageName) return -1;
+    if ($b['title'] == $phpDocumentor_DefaultPackageName) return 1;
+    return strnatcasecmp($a['title'],$b['title']);
+}
+
+/** @access private */
+function HTMLframes_lettersort($a, $b)
+{
+    return strnatcasecmp($a['letter'],$b['letter']);
+}
+
+/** @access private */
+function HTMLframes_outputfilter($src, &$smarty)
+{
+    return str_replace('{$subdir}',$smarty->_tpl_vars['subdir'],$src);
+}
+?>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini
new file mode 100644
index 00000000..73164a39
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/options.ini
@@ -0,0 +1,577 @@
+preservedocbooktags = false
+
+;; used to highlight the {@source} inline tag, @filesource tag, and @example tag
+[highlightSourceTokens]
+;; format:
+;; T_CONSTANTNAME = open
+;; /T_CONSTANTNAME = close
+
+T_INCLUDE = <span class="src-inc">
+/T_INCLUDE = </span>
+T_INCLUDE_ONCE = <span class="src-inc">
+/T_INCLUDE_ONCE = </span>
+T_REQUIRE_ONCE = <span class="src-inc">
+/T_REQUIRE_ONCE = </span>
+T_REQUIRE_ONCE = <span class="src-inc">
+/T_REQUIRE_ONCE = </span>
+
+T_CONSTANT_ENCAPSED_STRING = <span class="src-str">
+/T_CONSTANT_ENCAPSED_STRING = </span>
+T_STRING_VARNAME = <span class="src-str">
+/T_STRING_VARNAME = </span>
+
+T_STRING = <span class="src-id">
+/T_STRING = </span>
+
+T_DNUMBER = <span class="src-num">
+/T_DNUMBER = </span>
+T_LNUMBER = <span class="src-num">
+/T_LNUMBER = </span>
+
+T_VARIABLE = <span class="src-var">
+/T_VARIABLE = </span>
+
+T_COMMENT = <span class="src-comm">
+/T_COMMENT = </span>
+T_ML_COMMENT = <span class="src-comm">
+/T_ML_COMMENT = </span>
+
+T_OBJECT_OPERATOR = <span class="src-sym">
+/T_OBJECT_OPERATOR = </span>
+
+T_ABSTRACT = <span class="src-key">
+/T_ABSTRACT = </span>
+T_CLONE = <span class="src-key">
+/T_CLONE = </span>
+T_HALT_COMPILER = <span class="src-key">
+/T_HALT_COMPILER = </span>
+T_ARRAY = <span class="src-key">
+/T_ARRAY = </span>
+T_AS = <span class="src-key">
+/T_AS = </span>
+T_BREAK = <span class="src-key">
+/T_BREAK = </span>
+T_CLASS = <span class="src-key">
+/T_CLASS = </span>
+T_CASE = <span class="src-key">
+/T_CASE = </span>
+T_CONST = <span class="src-key">
+/T_CONST = </span>
+T_CONTINUE = <span class="src-key">
+/T_CONTINUE = </span>
+T_DECLARE = <span class="src-key">
+/T_DECLARE = </span>
+T_DEFAULT = <span class="src-key">
+/T_DEFAULT = </span>
+T_ELSE = <span class="src-key">
+/T_ELSE = </span>
+T_ELSEIF = <span class="src-key">
+/T_ELSEIF = </span>
+T_EMPTY = <span class="src-key">
+/T_EMPTY = </span>
+T_ENDDECLARE = <span class="src-key">
+/T_ENDDECLARE = </span>
+T_ENDFOR = <span class="src-key">
+/T_ENDFOR = </span>
+T_ENDSWITCH = <span class="src-key">
+/T_ENDSWITCH = </span>
+T_ENDFOREACH = <span class="src-key">
+/T_ENDFOREACH = </span>
+T_ENDIF = <span class="src-key">
+/T_ENDIF = </span>
+T_ENDWHILE = <span class="src-key">
+/T_ENDWHILE = </span>
+T_EXIT = <span class="src-key">
+/T_EXIT = </span>
+T_EXTENDS = <span class="src-key">
+/T_EXTENDS = </span>
+T_FINAL = <span class="src-key">
+/T_FINAL = </span>
+T_FOR = <span class="src-key">
+/T_FOR = </span>
+T_FOREACH = <span class="src-key">
+/T_FOREACH = </span>
+T_FUNCTION = <span class="src-key">
+/T_FUNCTION = </span>
+T_GLOBAL = <span class="src-key">
+/T_GLOBAL = </span>
+T_IF = <span class="src-key">
+/T_IF = </span>
+T_IMPLEMENTS = <span class="src-key">
+/T_IMPLEMENTS = </span>
+T_INTERFACE = <span class="src-key">
+/T_INTERFACE = </span>
+T_LOGICAL_AND = <span class="src-key">
+/T_LOGICAL_AND = </span>
+T_LOGICAL_OR = <span class="src-key">
+/T_LOGICAL_OR = </span>
+T_LOGICAL_XOR = <span class="src-key">
+/T_LOGICAL_XOR = </span>
+T_NEW = <span class="src-key">
+/T_NEW = </span>
+T_PRIVATE = <span class="src-key">
+/T_PRIVATE = </span>
+T_PROTECTED = <span class="src-key">
+/T_PROTECTED = </span>
+T_PUBLIC = <span class="src-key">
+/T_PUBLIC = </span>
+T_RETURN = <span class="src-key">
+/T_RETURN = </span>
+T_STATIC = <span class="src-key">
+/T_STATIC = </span>
+T_SWITCH = <span class="src-key">
+/T_SWITCH = </span>
+T_VAR = <span class="src-key">
+/T_VAR = </span>
+T_WHILE = <span class="src-key">
+/T_WHILE = </span>
+
+T_DOUBLE_COLON = <span class="src-sym">
+/T_DOUBLE_COLON = </span>
+
+T_OPEN_TAG = <span class="src-php">
+/T_OPEN_TAG = </span>
+T_OPEN_TAG_WITH_ECHO = <span class="src-php">
+/T_OPEN_TAG_WITH_ECHO = </span>
+T_CLOSE_TAG = <span class="src-php">
+/T_CLOSE_TAG = </span>
+
+
+[highlightSource]
+;; this is for highlighting things that aren't tokens like "&"
+;; format:
+;; word = open
+;; /word = close
+@ = <span class="src-sym">
+/@ = </span>
+& = <span class="src-sym">
+/& = </span>
+[ = <span class="src-sym">
+/[ = </span>
+] = <span class="src-sym">
+/] = </span>
+! = <span class="src-sym">
+/! = </span>
+";" = <span class="src-sym">
+/; = </span>
+( = <span class="src-sym">
+/( = </span>
+) = <span class="src-sym">
+/) = </span>
+, = <span class="src-sym">
+/, = </span>
+{ = <span class="src-sym">
+/{ = </span>
+} = <span class="src-sym">
+/} = </span>
+""" = <span class="src-str">
+/" = </span>
+
+[highlightDocBlockSourceTokens]
+;; this is for docblock tokens, using by phpDocumentor_HighlightParser
+;; tagphptype is for "string" in @param string description, for example
+docblock = <span class="src-doc">
+/docblock = </span>
+tagphptype = <span class="src-doc-type">
+/tagphptype = </span>
+tagvarname = <span class="src-doc-var">
+/tagvarname = </span>
+coretag = <span class="src-doc-coretag">
+/coretag = </span>
+tag = <span class="src-doc-tag">
+/tag = </span>
+inlinetag = <span class="src-doc-inlinetag">
+/inlinetag = </span>
+internal = <span class="src-doc-internal">
+/internal = </span>
+closetemplate = <span class="src-doc-close-template">
+/closetemplate = </span>
+docblocktemplate = <span class="src-doc-template">
+/docblocktemplate = </span>
+
+[highlightTutorialSourceTokens]
+;; this is for XML DocBook-based tutorials, highlighted by phpDocumentor_TutorialHighlightParser
+;; <tag>
+opentag = <span class="tute-tag">
+/opentag = </span>
+;; </tag>
+closetag = <span class="tute-tag">
+/closetag = </span>
+;; <tag attribute="value">
+attribute = <span class="tute-attribute-name">
+/attribute = </span>
+;; <tag attribute="value">
+attributevalue = <span class="tute-attribute-value">
+/attributevalue = </span>
+;; &entity;
+entity = <span class="tute-entity">
+/entity = </span>
+;; <!-- comment -->
+comment = <span class="tute-comment">
+/comment = </span>
+;; {@inline tag}
+itag = <span class="tute-inline-tag">
+/itag = </span>
+
+;; used for translation of html in DocBlocks
+[desctranslate]
+ul = <ul>
+/ul = </ul>
+ol = <ol>
+/ol = </ol>
+li = <li>
+/li = </li>
+code = <code><pre>
+/code = </pre></code>
+var = <var>
+/var = </var>
+samp = <samp>
+/samp = </samp>
+kbd = <kbd>
+/kbd = </kbd>
+pre = <pre>
+/pre = </pre>
+p = <p>
+/p = </p>
+b = <strong>
+/b = </strong>
+i = <em>
+/i = </em>
+br = <br />
+
+[ppage]
+;; this is the DocBook package page translation section.  All DocBook tags
+;; that have a corresponding html tag must be listed here.  Entities should
+;; also be listed here
+;;
+;; examples:
+;; 1)
+;; tagname = newtagname
+;;
+;; This is the simplest case, where all attributes will be added into the
+;; starting tag and the ending tag will be html/xml style </tranlatedtagname>
+;; <tagname></tagname> becomes <newtagname></newtagname> and
+;; <tagname attr="value"></tagname> becomes
+;; <newtagname attr="value"></newtagname>
+;;
+;; 2)
+;; tagname = newtagname
+;; tagname->attr = newattrname
+;;
+;; in this case, everything will be like the first case, except tags like:
+;; <tagname attr="value"></tagname> will become
+;; <newtagname newattrname="value"></newtagname>
+;;
+;; 3)
+;; tagname = newtagname
+;; tagname->attr = newattrname
+;; tagname->attr+value = newvalue
+;;
+;; in this case, the value is also translated to another.  This can be useful
+;; for instances such as focus="middle" changing to align="center" or something
+;; of that nature.
+;; <tagname attr="value"></tagname> will become
+;; <newtagname newattrname="newvalue"></newtagname>
+;;
+;; 4)
+;; tagname = newtagname
+;; tagname->attr1 = newattrname
+;; tagname->attr2 = newattrname
+;; tagname->attr1+value|attr2+value = newvalue
+;;
+;; in this case, two attributes combine to make one new attribute, and the combined
+;; value is translated into a new value
+;; <tagname attr1="value1" attr2="value2"></tagname> will become
+;; <newtagname newattrname="newvalue"></newtagname>
+;;
+;; 5)
+;; tagname = newtagname
+;; tagname!attr = dummy
+;;
+;; here, the attribute will be ignored.  dummy is not used and may be any value
+;; <tagname attr="value"></tagname> will become
+;; <newtagname></newtagname>
+;;
+;; 6)
+;; tagname = newtagname
+;; tagname! = dummy
+;;
+;; here, all attributes will be ignored.  dummy is not used and may be any value
+;; <tagname attr1="value" attr2="foo"></tagname> will become
+;; <newtagname></newtagname>
+;;
+;; 7)
+;; tagname = newtagname
+;; tagname/ = 1
+;;
+;; here, the tag will be translated as a single tag with no closing tag, and all
+;; attributes
+;; <tagname attr="val">{text text}</tagname> will become
+;; <newtagname attr="val" />
+;;
+;; 8)
+;; tagname = <starttaginfo />
+;; /tagname = closetagtext
+;;
+;; in this case, the text <starttaginfo> will be inserted exactly as entered for
+;; <tagname> and closetagtext for </tagname>
+;; <tagname attr="val"></tagname> will become
+;; <starttaginfo />closetagtext
+;;
+;; 9)
+;; $attr$my_attribute = newattrname
+;;
+;; tagname = newtagname
+;;
+;; in this case, all occurences of my_attribute in any tag will be changed to
+;; newattrname.  This is useful for changing things like role="php" to
+;; class="php," for example.  Note that the text "$attr$" MUST be on the line
+;; start for phpDocumentor to recognize it.
+;;
+;; 10)
+;; &entity; = translation text
+;; &quot; = &quot;
+;; &quot; = """
+;; &lt; = <
+;;
+;; Use this to control translation of entities to their appropriate values
+
+&nbsp; = &nbsp;
+&quot; = &quot;
+&rdquo; = &rdquo;
+&ldquo; = &ldquo;
+&amp; = &amp;
+&lt; = &lt;
+&gt; = &gt;
+&copy; = &copy;
+
+
+$attr$role = class
+
+abbrev = abbr
+
+blockquote = blockquote
+
+arg = span
+arg->choice = class
+
+author = <span class="author">
+/author = </span>
+author! = 0
+
+authorblurb = <div class="author-blurb">
+/authorblurb = </div>
+
+authorgroup = <div class="authors"><h2 class="title">Authors</h2>
+/authorgroup = </div>
+authorgroup! = 0
+
+caution = <span class="warning">
+/caution = </span>
+caution! = 0
+
+cmdsynopsis = <div class="cmd-synopsis">
+/cmdsynopsis = </div>
+
+command = <span class="cmd-title">
+/command = </span>
+
+copyright = <div class="notes">
+/copyright = </div>
+
+emphasis = em
+
+example = <pre class="example">
+/example = </pre>
+example! = 0
+
+function =
+/function = ()
+
+formalpara = p
+
+graphic = img
+graphic->fileref = src
+graphic/ =
+
+important = strong
+
+informalequation = blockquote
+
+informalexample = div
+
+inlineequation = em
+
+itemizedlist = ul
+
+listitem = li
+
+literal = code
+
+literallayout = span
+
+option = " "
+/option = 
+
+orderedlist = ol
+
+para = p
+
+programlisting = <pre class="listing">
+/programlisting = </pre>
+programlisting! = 0
+
+refentry = div
+
+refnamediv = <div class="ref-title-box">
+/refnamediv = </div>
+refnamediv! = 0
+
+refname = <h1 class="ref-title">
+/refname = </h1>
+
+refpurpose = <h2 class="ref-purpose">
+/refpurpose = </h2>
+
+refsynopsisdiv = <div class="ref-synopsis">
+/refsynopsisdiv = </div>
+refsynopsisdiv! = 0
+
+refsect1 = span
+
+refsect2 = span
+
+refsect3 = 
+/refsect3 = <br />
+
+releaseinfo = <div class="release-info">(
+/releaseinfo = )</div>
+
+simpara = 
+/simpara = <br />
+simpara! = 0
+
+subscript = sub
+
+superscript = super
+
+table = table
+
+table->colsep = rules
+table->rowsep = rules
+table->colsep+1|rowsep+1 =all
+table->colsep+1|rowsep+0 =cols
+table->colsep+0|rowsep+1 =rows
+
+table->frame =frame
+table->frame+all =border
+table->frame+none =void
+table->frame+sides =vsides
+table->frame+top =above
+table->frame+topbot =hsides
+
+thead = thead
+
+tfoot = tfoot
+
+tbody = tbody
+
+colspec = col
+
+tgroup = colgroup
+tgroup/ = 1
+tgroup->cols = span
+
+row = tr
+
+entry = td
+entry->morerows = colspan
+entry->morerows+1 =2
+entry->morerows+2 =3
+entry->morerows+3 =4
+entry->morerows+4 =5
+entry->morerows+5 =6
+entry->morerows+6 =7
+entry->morerows+7 =8
+entry->morerows+8 =9
+entry->morerows+9 =10
+entry->morerows+10 =11
+;; add more if you need more colspans
+
+warning = <span class="warning">
+/warning = </span>
+warning! = 0
+
+;; now begins the attributes that should be tags in cdata
+[$attr$id]
+open = a
+;close = /a
+cdata! = true
+quotevalues = true
+separator = "="
+;separateall = true
+$id = name
+
+;; now begins the sections that deal with <title>
+[refsynopsisdiv_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <h1 class="title">
+close = </h1>
+
+[refsect1_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <h2 class="title">
+close = </h2>
+
+[refsect2_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <h3 class="title">
+close = </h3>
+
+[refsect3_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <h4 class="title">
+close = </h4>
+
+[para_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <div class="title">
+close = </div>
+
+[formalpara_title]
+;tag_attr = true
+;attr_name = title
+cdata_start = true
+;cdata_end = true
+open = <div class="title">
+close = </div>
+
+[example_title]
+;tag_attr = true
+;attr_name = title
+;cdata_start = true
+cdata_end = true
+open = </td></tr><tr><td><strong>
+close = </strong>
+
+[table_title]
+;tag_attr = true
+;attr_name = true
+cdata_start = true
+open = <caption>
+close = </caption>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl
new file mode 100644
index 00000000..711e1d2e
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/basicindex.tpl
@@ -0,0 +1,47 @@
+<div class="index-letter-menu">
+{section name=letter loop=$letters}
+	<a class="index-letter" href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
+{/section}
+</div>
+
+{section name=index loop=$index}
+	<a name="{$index[index].letter}"></a>
+	<div class="index-letter-section">
+		<div style="float: left" class="index-letter-title">{$index[index].letter}</div>
+		<div style="float: right"><a href="#top">top</a></div>
+		<div style="clear: both"></div>
+	</div>
+	<dl>
+	{section name=contents loop=$index[index].index}
+		<dt class="field">
+			{if ($index[index].index[contents].title == "Variable")}
+			<span class="var-title">{$index[index].index[contents].name}</span>
+			{elseif ($index[index].index[contents].title == "Global")}
+			<span class="var-title">{$index[index].index[contents].name}</span>
+			{elseif ($index[index].index[contents].title == "Method")}
+			<span class="method-title">{$index[index].index[contents].name}</span>
+			{elseif ($index[index].index[contents].title == "Function")}
+			<span class="method-title">{$index[index].index[contents].name}</span>
+			{elseif ($index[index].index[contents].title == "Constant")}
+			<span class="const-title">{$index[index].index[contents].name}</span>
+			{elseif ($index[index].index[contents].title == "Page") || ($index[index].index[contents].title == "Include")}
+			<span class="include-title">{$index[index].index[contents].name}</span>
+			{else}
+			{$index[index].index[contents].name}
+			{/if}
+		</dt>
+		<dd class="index-item-body">
+			<div class="index-item-details">{$index[index].index[contents].link} in {$index[index].index[contents].file_name}</div>
+			{if $index[index].index[contents].description}
+				<div class="index-item-description">{$index[index].index[contents].description}</div>
+			{/if}
+		</dd>
+	{/section}
+	</dl>
+{/section}
+
+<div class="index-letter-menu">
+{section name=letter loop=$letters}
+	<a class="index-letter" href="{$indexname}.html#{$letters[letter].letter}">{$letters[letter].letter}</a>
+{/section}
+</div>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl
new file mode 100644
index 00000000..1fbaca2f
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/blank.tpl
@@ -0,0 +1,13 @@
+<html>
+<head>
+	<title>{$maintitle}</title>
+			<link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+</head>
+<body>
+<div align="center"><h1>{$maintitle}</h1></div>
+<b>Welcome to {$package}!</b><br />
+<br />
+This documentation was generated by <a href="{$phpdocwebsite}">phpDocumentor v{$phpdocversion}</a><br />
+</body>
+</html>
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
new file mode 100644
index 00000000..cc1c080b
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/class.tpl
@@ -0,0 +1,402 @@
+{include file="header.tpl" top3=true}
+
+<h2 class="class-name">{if $is_interface}Interface{else}Class{/if} {$class_name}</h2>
+
+<a name="sec-description"></a>
+<div class="info-box">
+	<div class="info-box-title">Description</div>
+	<div class="nav-bar">
+		{if $children || $vars || $ivars || $methods || $imethods || $consts || $iconsts }
+			<span class="disabled">Description</span> |
+		{/if}
+		{if $children}
+			<a href="#sec-descendents">Descendents</a>
+			{if $vars || $ivars || $methods || $imethods || $consts || $iconsts}|{/if}
+		{/if}
+		{if $vars || $ivars}
+			{if $vars}
+				<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+			{else}
+				<a href="#sec-vars">Vars</a>
+			{/if}
+			{if $methods || $imethods}|{/if}
+		{/if}
+		{if $methods || $imethods}
+			{if $methods}
+				<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+			{else}
+				<a href="#sec-methods">Methods</a>
+			{/if}			
+		{/if}
+		{if $consts || $iconsts}
+			{if $consts}
+				<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+			{else}
+				<a href="#sec-consts">Constants</a>
+			{/if}			
+		{/if}
+	</div>
+	<div class="info-box-body">
+        {if $implements}
+        <p class="implements">
+            Implements interfaces:
+            <ul>
+                {foreach item="int" from=$implements}<li>{$int}</li>{/foreach}
+            </ul>
+        </p>
+        {/if}
+		{include file="docblock.tpl" type="class" sdesc=$sdesc desc=$desc}
+		<p class="notes">
+			Located in <a class="field" href="{$page_link}">{$source_location}</a> (line <span class="field">{if $class_slink}{$class_slink}{else}{$line_number}{/if}</span>)
+		</p>
+		
+		{if $tutorial}
+			<hr class="separator" />
+			<div class="notes">Tutorial: <span class="tutorial">{$tutorial}</span></div>
+		{/if}
+		
+		<pre>{section name=tree loop=$class_tree.classes}{$class_tree.classes[tree]}{$class_tree.distance[tree]}{/section}</pre>
+	
+		{if $conflicts.conflict_type}
+			<hr class="separator" />
+			<div><span class="warning">Conflicts with classes:</span><br /> 
+			{section name=me loop=$conflicts.conflicts}
+				{$conflicts.conflicts[me]}<br />
+			{/section}
+			</div>
+		{/if}
+	</div>
+</div>
+
+{if $children}
+	<a name="sec-descendents"></a>
+	<div class="info-box">
+		<div class="info-box-title">Direct descendents</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			<span class="disabled">Descendents</span>
+			{if $vars || $ivars || $methods || $imethods}|{/if}
+			{if $vars || $ivars}
+				{if $vars}
+					<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+				{else}
+					<a href="#sec-vars">Vars</a>
+				{/if}
+				{if $methods || $imethods}|{/if}
+			{/if}
+			{if $methods || $imethods}
+				{if $methods}
+					<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+				{else}
+					<a href="#sec-methods">Methods</a>
+				{/if}			
+			{/if}
+			{if $consts || $iconsts}
+				{if $consts}
+					<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+				{else}
+					<a href="#sec-consts">Constants</a>
+				{/if}			
+			{/if}
+		</div>
+		<div class="info-box-body">
+			<table cellpadding="2" cellspacing="0" class="class-table">
+				<tr>
+					<th class="class-table-header">Class</th>
+					<th class="class-table-header">Description</th>
+				</tr>
+				{section name=kids loop=$children}
+				<tr>
+					<td style="padding-right: 2em">{$children[kids].link}</td>
+					<td>
+					{if $children[kids].sdesc}
+						{$children[kids].sdesc}
+					{else}
+						{$children[kids].desc}
+					{/if}
+					</td>
+				</tr>
+				{/section}
+			</table>
+		</div>
+	</div>
+{/if}
+
+{if $consts}
+	<a name="sec-const-summary"></a>
+	<div class="info-box">
+		<div class="info-box-title">Class Constant Summary</span></div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendants</a> |
+			{/if}
+			<span class="disabled">Constants</span> (<a href="#sec-consts">details</a>)
+			{if $vars || $ivars}
+				{if $vars}
+					<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+				{else}
+					<a href="#sec-vars">Vars</a>
+				{/if} 
+				|
+			{/if}
+			{if $methods || $imethods}
+				| 
+				{if $methods}
+					<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+				{else}
+					<a href="#sec-methods">Methods</a>
+				{/if}			
+			{/if}
+		</div>
+		<div class="info-box-body">
+			<div class="const-summary">
+				{section name=consts loop=$consts}
+				<div class="const-title">
+					<img src="{$subdir}media/images/Constant.png" alt=" " />
+					<a href="#{$consts[consts].const_name}" title="details" class="const-name">{$consts[consts].const_name}</a> = 					<span class="var-type">{$consts[consts].const_value}</span>
+
+				</div>
+				{/section}
+			</div>
+		</div>
+	</div>
+{/if}
+
+{if $vars}
+	<a name="sec-var-summary"></a>
+	<div class="info-box">
+		<div class="info-box-title">Variable Summary</span></div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendents</a> |
+			{/if}
+			<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
+			{if $methods || $imethods}
+				| 
+				{if $methods}
+					<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+				{else}
+					<a href="#sec-methods">Methods</a>
+				{/if}			
+			{/if}
+			{if $consts || $iconsts}
+				{if $consts}
+					<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+				{else}
+					<a href="#sec-consts">Constants</a>
+				{/if}			
+			{/if}
+		</div>
+		<div class="info-box-body">
+			<div class="var-summary">
+				{section name=vars loop=$vars}
+				<div class="var-title">
+					<span class="var-type">{$vars[vars].var_type}</span>
+					<a href="#{$vars[vars].var_name}" title="details" class="var-name">{$vars[vars].var_name}</a>
+				</div>
+				{/section}
+			</div>
+		</div>
+	</div>
+{/if}
+
+{if $methods}
+	<a name="sec-method-summary"></a>
+	<div class="info-box">
+		<div class="info-box-title">Method Summary</span></div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendents</a> |
+			{/if}
+			{if $consts || $iconsts}
+				{if $consts}
+					<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+				{else}
+					<a href="#sec-consts">Constants</a>
+				{/if}			
+			{/if}
+			{if $vars || $ivars}
+				{if $vars}
+					<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+				{else}
+					<a href="#sec-vars">Vars</a>
+				{/if} 
+				|
+			{/if}
+			<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
+		</div>
+		<div class="info-box-body">			
+			<div class="method-summary">
+				{section name=methods loop=$methods}				
+				<div class="method-definition">
+					{if $methods[methods].function_return}
+						<span class="method-result">{$methods[methods].function_return}</span>
+					{/if}
+					<a href="#{$methods[methods].function_name}" title="details" class="method-name">{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}</a>
+					{if count($methods[methods].ifunction_call.params)}
+						({section name=params loop=$methods[methods].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $methods[methods].ifunction_call.params[params].default}[{/if}<span class="var-type">{$methods[methods].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$methods[methods].ifunction_call.params[params].name}</span>{if $methods[methods].ifunction_call.params[params].default} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
+					{else}
+					()
+					{/if}
+				</div>
+				{/section}
+			</div>
+		</div>
+	</div>		
+{/if}
+
+{if $vars || $ivars}
+	<a name="sec-vars"></a>
+	<div class="info-box">
+		<div class="info-box-title">Variables</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendents</a> |
+			{/if}
+			{if $methods}
+				<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
+			{else}
+				<span class="disabled">Vars</span>
+			{/if}			
+			
+			{if $consts || $iconsts}
+				{if $consts}
+					<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+				{else}
+					<a href="#sec-consts">Constants</a>
+				{/if}			
+			{/if}
+			{if $methods || $imethods}
+				| 
+				{if $methods}
+					<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+				{else}
+					<a href="#sec-methods">Methods</a>
+				{/if}			
+			{/if}
+		</div>
+		<div class="info-box-body">
+			{include file="var.tpl"}
+			{if $ivars}
+				<h4>Inherited Variables</h4>
+				<A NAME='inherited_vars'><!-- --></A>
+				{section name=ivars loop=$ivars}
+					<p>Inherited from <span class="classname">{$ivars[ivars].parent_class}</span></p>
+					<blockquote>
+						{section name=ivars2 loop=$ivars[ivars].ivars}
+							<span class="var-title">
+								<span class="var-name">{$ivars[ivars].ivars[ivars2].link}</span>{if $ivars[ivars].ivars[ivars2].ivar_sdesc}: {$ivars[ivars].ivars[ivars2].ivar_sdesc}{/if}<br>
+							</span>
+						{/section}
+					</blockquote> 
+				{/section}
+			{/if}			
+		</div>
+	</div>
+{/if}
+	
+{if $methods || $imethods}
+	<a name="sec-methods"></a>
+	<div class="info-box">
+		<div class="info-box-title">Methods</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendents</a> |
+			{/if}
+			{if $vars || $ivars}
+				{if $vars}
+					<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+				{else}
+					<a href="#sec-vars">Vars</a>
+				{/if}
+			{/if}
+			{if $consts || $iconsts}
+				{if $consts}
+					<a href="#sec-const-summary">Constants</a> (<a href="#sec-consts">details</a>)
+				{else}
+					<a href="#sec-consts">Constants</a>
+				{/if}			
+			{/if}
+			{if $methods}
+				<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
+			{else}
+				<span class="disabled">Methods</span>
+			{/if}			
+		</div>
+		<div class="info-box-body">
+			{include file="method.tpl"}
+			{if $imethods}
+				<h4>Inherited Methods</h4>
+				<a name='inherited_methods'><!-- --></a>	
+				{section name=imethods loop=$imethods}
+					<!-- =========== Summary =========== -->
+					<p>Inherited From <span class="classname">{$imethods[imethods].parent_class}</span></p>
+					<blockquote>
+						{section name=im2 loop=$imethods[imethods].imethods}
+							<span class="method-name">{$imethods[imethods].imethods[im2].link}</span>{if $imethods[imethods].imethods[im2].ifunction_sdesc}: {$imethods[imethods].imethods[im2].ifunction_sdesc}{/if}<br>
+						{/section}
+					</blockquote>
+				{/section}
+			{/if}			
+		</div>
+	</div>
+{/if}
+
+{if $consts || $iconsts}
+	<a name="sec-consts"></a>
+	<div class="info-box">
+		<div class="info-box-title">Class Constants</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $children}
+				<a href="#sec-descendents">Descendants</a> |
+			{/if}
+			{if $methods}
+				<a href="#sec-var-summary">Constants</a> (<span class="disabled">details</span>)
+			{else}
+				<span class="disabled">Constants</span>
+			{/if}			
+			
+			{if $vars || $ivars}
+				{if $vars}
+					<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
+				{else}
+					<a href="#sec-vars">Vars</a>
+				{/if}
+			{/if}
+			{if $methods || $imethods}
+				| 
+				{if $methods}
+					<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
+				{else}
+					<a href="#sec-methods">Methods</a>
+				{/if}			
+			{/if}
+		</div>
+		<div class="info-box-body">
+			{include file="const.tpl"}
+			{if $iconsts}
+				<h4>Inherited Constants</h4>
+				<A NAME='inherited_vars'><!-- --></A>
+				{section name=iconsts loop=$iconsts}
+					<p>Inherited from <span class="classname">{$iconsts[iconsts].parent_class}</span></p>
+					<blockquote>
+						{section name=iconsts2 loop=$iconsts[iconsts].iconsts}
+							<img src="{$subdir}media/images/{if $iconsts[iconsts].iconsts[iconsts2].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
+							<span class="const-title">
+								<span class="const-name">{$iconsts[iconsts].iconsts[iconsts2].link}</span>{if $iconsts[iconsts].iconsts[iconsts2].iconst_sdesc}: {$iconsts[iconsts].iconsts[iconsts2].iconst_sdesc}{/if}<br>
+							</span>
+						{/section}
+					</blockquote> 
+				{/section}
+			{/if}			
+		</div>
+	</div>
+{/if}
+
+{include file="footer.tpl" top3=true}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
new file mode 100644
index 00000000..5188e8cf
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/classtrees.tpl
@@ -0,0 +1,11 @@
+{include file="header.tpl" top1=true}
+
+<!-- Start of Class Data -->
+<H2>
+	{$smarty.capture.title}
+</H2>
+{section name=classtrees loop=$classtrees}
+<h2>Root class {$classtrees[classtrees].class}</h2>
+{$classtrees[classtrees].class_tree}
+{/section}
+{include file="footer.tpl"}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl
new file mode 100644
index 00000000..4157488f
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/const.tpl
@@ -0,0 +1,18 @@
+{section name=consts loop=$consts}
+<a name="const{$consts[consts].const_name}" id="{$consts[consts].const_name}"><!-- --></A>
+<div class="{cycle values="evenrow,oddrow"}">
+
+	<div class="const-header">
+		<img src="{$subdir}media/images/{if $consts[consts].access == 'private'}PrivateVariable{else}Variable{/if}.png" />
+		<span class="const-title">
+			<span class="const-name">{$consts[consts].const_name}</span>
+			 = <span class="const-default">{$consts[consts].const_value|replace:"\n":"<br />"}</span>
+			(line <span class="line-number">{if $consts[consts].slink}{$consts[consts].slink}{else}{$consts[consts].line_number}{/if}</span>)
+		</span>
+	</div>
+
+	{include file="docblock.tpl" sdesc=$consts[consts].sdesc desc=$consts[consts].desc tags=$consts[consts].tags}	
+	
+</div>
+{/section}
+
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl
new file mode 100644
index 00000000..ab76faa2
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/define.tpl
@@ -0,0 +1,24 @@
+{section name=def loop=$defines}
+<a name="{$defines[def].define_link}"><!-- --></a>
+<div class="{cycle values="evenrow,oddrow"}">
+	
+	<div>
+		<span class="const-title">
+			<span class="const-name">{$defines[def].define_name}</span> = {$defines[def].define_value|replace:"\n":"<br />"}
+			(line <span class="line-number">{if $defines[def].slink}{$defines[def].slink}{else}{$defines[def].line_number}{/if}</span>)
+		</span>
+	</div>
+	
+	{include file="docblock.tpl" sdesc=$defines[def].sdesc desc=$defines[def].desc tags=$defines[def].tags}
+	
+	{if $globals[glob].global_conflicts.conflict_type}
+		<hr class="separator" />
+		<div><span class="warning">Conflicts with constants:</span><br /> 
+			{section name=me loop=$defines[def].define_conflicts.conflicts}
+				{$defines[def].define_conflicts.conflicts[me]}<br />
+			{/section}
+		</div>
+	{/if}
+	
+</div>
+{/section}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl
new file mode 100644
index 00000000..8a87c9b7
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/docblock.tpl
@@ -0,0 +1,14 @@
+<!-- ========== Info from phpDoc block ========= -->
+{if $sdesc}
+<p class="short-description">{$sdesc}</p>
+{/if}
+{if $desc}
+<p class="description">{$desc}</p>
+{/if}
+{if $tags}
+	<ul class="tags">
+		{section name=tags loop=$tags}
+		<li><span class="field">{$tags[tags].keyword}:</span> {$tags[tags].data}</li>
+		{/section}
+	</ul>
+{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl
new file mode 100644
index 00000000..6e651db1
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/elementindex.tpl
@@ -0,0 +1,12 @@
+{include file="header.tpl" noleftindex=true}
+<a name="top"></a>
+<h2>Full index</h2>
+<h3>Package indexes</h3>
+<ul>
+{section name=p loop=$packageindex}
+	<li><a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a></li>
+{/section}
+</ul>
+<br />
+{include file="basicindex.tpl" indexname="elementindex"}
+{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl
new file mode 100644
index 00000000..1576a822
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/errors.tpl
@@ -0,0 +1,21 @@
+{include file="header.tpl" noleftindex=true}
+{section name=files loop=$files}
+<a href="#{$files[files].file}">{$files[files].file}</a><br>
+{/section}
+{foreach key=file item=issues from=$all}
+<a name="{$file}"></a>
+<h1>{$file}</h1>
+{if count($issues.warnings)}
+<h2>Warnings:</h2><br>
+{section name=warnings loop=$issues.warnings}
+<b>{$issues.warnings[warnings].name}</b> - {$issues.warnings[warnings].listing}<br>
+{/section}
+{/if}
+{if count($issues.errors)}
+<h2>Errors:</h2><br>
+{section name=errors loop=$issues.errors}
+<b>{$issues.errors[errors].name}</b> - {$issues.errors[errors].listing}<br>
+{/section}
+{/if}
+{/foreach}
+{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl
new file mode 100644
index 00000000..c813280b
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/examplesource.tpl
@@ -0,0 +1,6 @@
+{include file="header.tpl" title=$title}
+<h1>{$title}</h1>
+<div class="listing">
+{$source}
+</div>
+{include file="footer.tpl"}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl
new file mode 100644
index 00000000..4fd821a2
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/filesource.tpl
@@ -0,0 +1,8 @@
+{capture name="tutle"}File Source for {$name}{/capture}
+{include file="header.tpl" title=$smarty.capture.tutle}
+<h1>Source for file {$name}</h1>
+<p>Documentation is available at {$docs}</p>
+<div class="src-code">
+{$source}
+</div>
+{include file="footer.tpl"}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl
new file mode 100644
index 00000000..424ebbe2
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/footer.tpl
@@ -0,0 +1,8 @@
+{if !$index}
+	<p class="notes" id="credit">
+		Documentation generated on {$date} by <a href="{$phpdocwebsite}" target="_blank">phpDocumentor {$phpdocversion}</a>
+	</p>
+{/if}
+	{if $top3}</div>{/if}
+</body>
+</html>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl
new file mode 100644
index 00000000..2750a97e
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/function.tpl
@@ -0,0 +1,44 @@
+{section name=func loop=$functions}
+<a name="{$functions[func].function_dest}" id="{$functions[func].function_dest}"><!-- --></a>
+<div class="{cycle values="evenrow,oddrow"}">
+	
+	<div>
+		<span class="method-title">{$functions[func].function_name}</span> (line <span class="line-number">{if $functions[func].slink}{$functions[func].slink}{else}{$functions[func].line_number}{/if}</span>)
+	</div> 
+
+	{include file="docblock.tpl" sdesc=$functions[func].sdesc desc=$functions[func].desc tags=$functions[func].tags params=$functions[func].params function=false}
+	
+	<div class="method-signature">
+		<span class="method-result">{$functions[func].function_return}</span>
+		<span class="method-name">
+			{if $functions[func].ifunction_call.returnsref}&amp;{/if}{$functions[func].function_name}
+		</span>
+		{if count($functions[func].ifunction_call.params)}
+			({section name=params loop=$functions[func].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $functions[func].ifunction_call.params[params].hasdefault}[{/if}<span class="var-type">{$functions[func].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$functions[func].ifunction_call.params[params].name}</span>{if $functions[func].ifunction_call.params[params].hasdefault} = <span class="var-default">{$functions[func].ifunction_call.params[params].default|escape:"html"}</span>]{/if}{/section})
+		{else}
+		()
+		{/if}
+	</div>
+
+	{if $functions[func].params}
+		<ul class="parameters">
+		{section name=params loop=$functions[func].params}
+			<li>
+				<span class="var-type">{$functions[func].params[params].datatype}</span>
+				<span class="var-name">{$functions[func].params[params].var}</span>{if $functions[func].params[params].data}<span class="var-description">: {$functions[func].params[params].data}</span>{/if}
+			</li>
+		{/section}
+		</ul>
+	{/if}
+	
+	{if $functions[func].function_conflicts.conflict_type}
+		<hr class="separator" />
+		<div><span class="warning">Conflicts with functions:</span><br /> 
+			{section name=me loop=$functions[func].function_conflicts.conflicts}
+				{$functions[func].function_conflicts.conflicts[me]}<br />
+			{/section}
+		</div>
+	{/if}
+
+</div>
+{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl
new file mode 100644
index 00000000..3c89ddfc
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/global.tpl
@@ -0,0 +1,26 @@
+{section name=glob loop=$globals}
+<a name="{$globals[glob].global_link}" id="{$globals[glob].global_link}"><!-- --></a>
+<div class="{cycle values="evenrow,oddrow"}">
+	
+	<div>
+		<span class="var-title">
+			<span class="var-type">{$globals[glob].global_type}</span>
+			<span class="var-name">{$globals[glob].global_name}</span>
+			{if $vars[vars].var_default} = <span class="var-default">{$globals[glob].global_value|replace:"\n":"<br />"}</span>{/if}
+			(line <span class="line-number">{if $globals[glob].slink}{$globals[glob].slink}{else}{$globals[glob].line_number}{/if}</span>)
+		</span>
+	</div>
+
+	{include file="docblock.tpl" sdesc=$globals[glob].sdesc desc=$globals[glob].desc tags=$globals[glob].tags}
+	
+	{if $globals[glob].global_conflicts.conflict_type}
+		<hr class="separator" />
+		<div><span class="warning">Conflicts with global variables:</span><br /> 
+			{section name=me loop=$globals[glob].global_conflicts.conflicts}
+				{$globals[glob].global_conflicts.conflicts[me]}<br />
+			{/section}
+		</div>
+	{/if}
+	
+</div>
+{/section}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl
new file mode 100644
index 00000000..d5e26dfa
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/header.tpl
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title>{$title}</title>
+			<link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+			{if $top3}<div class="page-body">{/if}
+			
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl
new file mode 100644
index 00000000..bd408aff
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/include.tpl
@@ -0,0 +1,16 @@
+{section name=includes loop=$includes}
+<a name="{$includes[includes].include_file}"><!-- --></a>
+<div class="{cycle values="evenrow,oddrow"}">
+	
+	<div>
+		<span class="include-title">
+			<span class="include-type">{$includes[includes].include_name}</span>
+			(<span class="include-name">{$includes[includes].include_value}</span>)
+			(line <span class="line-number">{if $includes[includes].slink}{$includes[includes].slink}{else}{$includes[includes].line_number}{/if}</span>)
+		</span>
+	</div>
+
+	{include file="docblock.tpl" sdesc=$includes[includes].sdesc desc=$includes[includes].desc tags=$includes[includes].tags}
+	
+</div>
+{/section}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl
new file mode 100644
index 00000000..477d2b17
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/index.tpl
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html 
+     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR"
+     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
+   <html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+	<!-- Generated by phpDocumentor on {$date}  -->
+  <title>{$title}</title>
+  <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+</head>
+
+<FRAMESET rows='120,*'>
+	<FRAME src='packages.html' name='left_top' frameborder="1" bordercolor="#999999">
+	<FRAMESET cols='25%,*'>
+		<FRAME src='{$start}' name='left_bottom' frameborder="1" bordercolor="#999999">
+		<FRAME src='{$blank}.html' name='right' frameborder="1" bordercolor="#999999">
+	</FRAMESET>
+	<NOFRAMES>
+		<H2>Frame Alert</H2>
+		<P>This document is designed to be viewed using the frames feature.
+		If you see this message, you are using a non-frame-capable web client.</P>
+	</NOFRAMES>
+</FRAMESET>
+</HTML>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
new file mode 100644
index 00000000..4232d845
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/left_frame.tpl
@@ -0,0 +1,149 @@
+{include file="header.tpl" top2=true}
+<div class="package-title">{$package}</div>
+<div class="package-details">
+
+	<dl class="tree">
+		
+		<dt class="folder-title">Description</dt>
+		<dd>
+			<a href='{$classtreepage}.html' target='right'>Class trees</a><br />
+			<a href='{$elementindex}.html' target='right'>Index of elements</a><br />
+			{if $hastodos}
+				<a href="{$todolink}" target="right">Todo List</a><br />
+			{/if}
+		</dd>
+	
+		{section name=p loop=$info}
+					
+			{if $info[p].subpackage == ""}
+				
+				{if $info[p].tutorials}
+					<dt class="folder-title">Tutorials/Manuals</dt>
+					<dd>
+					{if $info[p].tutorials.pkg}
+						<dl class="tree">
+						<dt class="folder-title">Package-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.pkg}
+							{$info[p].tutorials.pkg[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					
+					{if $info[p].tutorials.cls}
+						<dl class="tree">
+						<dt class="folder-title">Class-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.cls}
+							{$info[p].tutorials.cls[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					
+					{if $info[p].tutorials.proc}
+						<dl class="tree">
+						<dt class="folder-title">Function-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.proc}
+							{$info[p].tutorials.proc[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					</dd>
+				{/if}
+				{if $info[p].classes}
+					<dt class="folder-title">Classes</dt>
+					{section name=class loop=$info[p].classes}
+						<dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
+					{/section}
+				{/if}
+				{if $info[p].functions}
+					<dt class="folder-title">Functions</dt>
+					{section name=f loop=$info[p].functions}
+						<dd><a href='{$info[p].functions[f].link}' target='right'>{$info[p].functions[f].title}</a></dd>
+					{/section}
+				{/if}
+				{if $info[p].files}
+					<dt class="folder-title">Files</dt>
+					{section name=nonclass loop=$info[p].files}
+						<dd><a href='{$info[p].files[nonclass].link}' target='right'>{$info[p].files[nonclass].title}</a></dd>
+					{/section}
+				{/if}
+								
+			{else}
+				{if $info[p].tutorials}			
+					<dt class="folder-title">Tutorials/Manuals</dt>
+					<dd>
+					{if $info[p].tutorials.pkg}
+						<dl class="tree">
+						<dt class="folder-title">Package-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.pkg}
+							{$info[p].tutorials.pkg[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					
+					{if $info[p].tutorials.cls}
+						<dl class="tree">
+						<dt class="folder-title">Class-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.cls}
+							{$info[p].tutorials.cls[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					
+					{if $info[p].tutorials.proc}
+						<dl class="tree">
+						<dt class="folder-title">Function-level</dt>
+						<dd>
+						{section name=ext loop=$info[p].tutorials.proc}
+							{$info[p].tutorials.proc[ext]}
+						{/section}
+						</dd>
+						</dl>
+					{/if}
+					</dd>
+				{/if}
+				
+				<dt class="sub-package">{$info[p].subpackage}</dt>
+				<dd>
+					<dl class="tree">
+						{if $info[p].subpackagetutorial}
+							<div><a href="{$info.0.subpackagetutorialnoa}" target="right">{$info.0.subpackagetutorialtitle}</a></div>
+						{/if}
+						{if $info[p].classes}
+							<dt class="folder-title">Classes</dt>
+							{section name=class loop=$info[p].classes}
+								<dd><a href='{$info[p].classes[class].link}' target='right'>{$info[p].classes[class].title}</a></dd>
+							{/section}
+						{/if}
+						{if $info[p].functions}
+							<dt class="folder-title">Functions</dt>
+							{section name=f loop=$info[p].functions}
+								<dd><a href='{$info[p].functions[f].link}' target='right'>{$info[p].functions[f].title}</a></dd>
+							{/section}
+						{/if}
+						{if $info[p].files}
+							<dt class="folder-title">Files</dt>
+							{section name=nonclass loop=$info[p].files}
+								<dd><a href='{$info[p].files[nonclass].link}' target='right'>{$info[p].files[nonclass].title}</a></dd>
+							{/section}
+						{/if}
+					</dl>
+				</dd>
+								
+			{/if}
+			
+		{/section}
+	</dl>
+</div>
+<p class="notes"><a href="{$phpdocwebsite}" target="_blank">phpDocumentor v <span class="field">{$phpdocversion}</span></a></p>
+</BODY>
+</HTML>
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css
new file mode 100644
index 00000000..e67227b7
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/banner.css
@@ -0,0 +1,32 @@
+body 
+{ 
+	background-color: #CCCCFF; 
+	margin: 0px; 
+	padding: 0px;
+}
+
+/* Banner (top bar) classes */
+
+.banner {  }
+
+.banner-menu 
+{ 
+	clear: both;
+	padding: .5em;
+	border-top: 2px solid #6666AA;	
+}
+
+.banner-title 
+{ 
+	text-align: right; 
+	font-size: 20pt; 
+	font-weight: bold; 
+	margin: .2em;
+}
+
+.package-selector 
+{ 
+	background-color: #AAAADD; 
+	border: 1px solid black; 
+	color: yellow;
+}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css
new file mode 100644
index 00000000..88f471f2
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/media/stylesheet.css
@@ -0,0 +1,144 @@
+a { color: #336699; text-decoration: none; }
+a:hover { color: #6699CC; text-decoration: underline; }
+a:active { color: #6699CC; text-decoration: underline; }
+
+body { background : #FFFFFF; }
+body, table { font-family: Georgia, Times New Roman, Times, serif; font-size: 10pt }
+p, li { line-height: 140% }
+a img { border: 0px; }
+dd { margin-left: 0px; padding-left: 1em; }
+
+/* Page layout/boxes */
+
+.info-box {}
+.info-box-title { margin: 1em 0em 0em 0em; padding: .25em; font-weight: normal; font-size: 14pt; border: 2px solid #999999; background-color: #CCCCFF }
+.info-box-body { border: 1px solid #999999; padding: .5em; }
+.nav-bar { font-size: 8pt; white-space: nowrap; text-align: right; padding: .2em; margin: 0em 0em 1em 0em; }
+
+.oddrow { background-color: #F8F8F8; border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
+.evenrow { border: 1px solid #AAAAAA; padding: .5em; margin-bottom: 1em}
+
+.page-body { max-width: 800px; margin: auto; }
+.tree dl { margin: 0px }
+
+/* Index formatting classes */
+
+.index-item-body { margin-top: .5em; margin-bottom: .5em}
+.index-item-description { margin-top: .25em }
+.index-item-details { font-weight: normal; font-style: italic; font-size: 8pt }
+.index-letter-section { background-color: #EEEEEE; border: 1px dotted #999999; padding: .5em; margin-bottom: 1em}
+.index-letter-title { font-size: 12pt; font-weight: bold }
+.index-letter-menu { text-align: center; margin: 1em }
+.index-letter { font-size: 12pt }
+
+/* Docbook classes */
+
+.description {}
+.short-description { font-weight: bold; color: #666666; }
+.tags {	padding-left: 0em; margin-left: 3em; color: #666666; list-style-type: square; }
+.parameters {	padding-left: 0em; margin-left: 3em; font-style: italic; list-style-type: square; }
+.redefinitions { font-size: 8pt; padding-left: 0em; margin-left: 2em; }
+.package {  }
+.package-title { font-weight: bold; font-size: 14pt; border-bottom: 1px solid black }
+.package-details { font-size: 85%; }
+.sub-package { font-weight: bold; font-size: 120% }
+.tutorial { border-width: thin; border-color: #0066ff }
+.tutorial-nav-box { width: 100%; border: 1px solid #999999; background-color: #F8F8F8; }
+.nav-button-disabled { color: #999999; }
+.nav-button:active, 
+.nav-button:focus, 
+.nav-button:hover { background-color: #DDDDDD; outline: 1px solid #999999; text-decoration: none }
+.folder-title { font-style: italic }
+
+/* Generic formatting */
+
+.field { font-weight: bold; }
+.detail { font-size: 8pt; }
+.notes { font-style: italic; font-size: 8pt; }
+.separator { background-color: #999999; height: 2px; }
+.warning {  color: #FF6600; }
+.disabled { font-style: italic; color: #999999; }
+
+/* Code elements */
+
+.line-number {  }
+
+.class-table { width: 100%; }
+.class-table-header { border-bottom: 1px dotted #666666; text-align: left}
+.class-name { color: #000000; font-weight: bold; }
+
+.method-summary { padding-left: 1em; font-size: 8pt }
+.method-header { }
+.method-definition { margin-bottom: .3em }
+.method-title { font-weight: bold; }
+.method-name { font-weight: bold; }
+.method-signature { font-size: 85%; color: #666666; margin: .5em 0em }
+.method-result { font-style: italic; }
+
+.var-summary { padding-left: 1em; font-size: 8pt; }
+.var-header { }
+.var-title { margin-bottom: .3em }
+.var-type { font-style: italic; }
+.var-name { font-weight: bold; }
+.var-default {}
+.var-description { font-weight: normal; color: #000000; }
+
+.include-title {  }
+.include-type { font-style: italic; }
+.include-name { font-weight: bold; }
+
+.const-title {  }
+.const-name { font-weight: bold; }
+
+/* Syntax highlighting */
+
+.src-code {  border: 1px solid #336699; padding: 1em; background-color: #EEEEEE; }
+*[class="src-code"] {	line-height : 0.5em }
+
+.src-comm { color: green; }
+.src-id {  }
+.src-inc { color: #0000FF; }
+.src-key { color: #0000FF; }
+.src-num { color: #CC0000; }
+.src-str { color: #66cccc; }
+.src-sym { font-weight: bold; }
+.src-var { }
+
+.src-php { font-weight: bold; }
+
+.src-doc { color: #009999 }
+.src-doc-close-template { color: #0000FF }
+.src-doc-coretag { color: #0099FF; font-weight: bold }
+.src-doc-inlinetag { color: #0099FF }
+.src-doc-internal { color: #6699cc }
+.src-doc-tag { color: #0080CC }
+.src-doc-template { color: #0000FF }
+.src-doc-type { font-style: italic }
+.src-doc-var { font-style: italic }
+
+.tute-tag { color: #009999 }
+.tute-attribute-name { color: #0000FF }
+.tute-attribute-value { color: #0099FF }
+.tute-entity { font-weight: bold; }
+.tute-comment { font-style: italic }
+.tute-inline-tag { color: #636311; font-weight: bold }
+
+/* tutorial */
+
+.authors {  }
+.author { font-style: italic; font-weight: bold }
+.author-blurb { margin: .5em 0em .5em 2em; font-size: 85%; font-weight: normal; font-style: normal }
+.example { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; }
+*[class="example"] { line-height : 0.5em }
+.listing { border: 1px dashed #999999; background-color: #EEEEEE; padding: .5em; white-space: nowrap; }
+*[class="listing"] { line-height : 0.5em }
+.release-info { font-size: 85%; font-style: italic; margin: 1em 0em }
+.ref-title-box {  }
+.ref-title {  }
+.ref-purpose { font-style: italic; color: #666666 }
+.ref-synopsis {  }
+.title { font-weight: bold; margin: 1em 0em 0em 0em; padding: .25em; border: 2px solid #999999; background-color: #CCCCFF  }
+.cmd-synopsis { margin: 1em 0em }
+.cmd-title { font-weight: bold }
+.toc { margin-left: 2em; padding-left: 0em }
+
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
new file mode 100644
index 00000000..3138a925
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/method.tpl
@@ -0,0 +1,61 @@
+<A NAME='method_detail'></A>
+{section name=methods loop=$methods}
+<a name="method{$methods[methods].function_name}" id="{$methods[methods].function_name}"><!-- --></a>
+<div class="{cycle values="evenrow,oddrow"}">
+	
+	<div class="method-header">
+		<span class="method-title">{if $methods[methods].ifunction_call.constructor}Constructor {elseif $methods[methods].ifunction_call.destructor}Destructor {/if}{$methods[methods].function_name}</span> (line <span class="line-number">{if $methods[methods].slink}{$methods[methods].slink}{else}{$methods[methods].line_number}{/if}</span>)
+	</div> 
+	
+	{include file="docblock.tpl" sdesc=$methods[methods].sdesc desc=$methods[methods].desc tags=$methods[methods].tags params=$methods[methods].params function=false}
+	
+	<div class="method-signature">
+		<span class="method-result">{$methods[methods].function_return}</span>
+		<span class="method-name">
+			{if $methods[methods].ifunction_call.returnsref}&amp;{/if}{$methods[methods].function_name}
+		</span>
+		{if count($methods[methods].ifunction_call.params)}
+			({section name=params loop=$methods[methods].ifunction_call.params}{if $smarty.section.params.iteration != 1}, {/if}{if $methods[methods].ifunction_call.params[params].default}[{/if}<span class="var-type">{$methods[methods].ifunction_call.params[params].type}</span>&nbsp;<span class="var-name">{$methods[methods].ifunction_call.params[params].name}</span>{if $methods[methods].ifunction_call.params[params].default} = <span class="var-default">{$methods[methods].ifunction_call.params[params].default}</span>]{/if}{/section})
+		{else}
+		()
+		{/if}
+	</div>
+	
+	{if $methods[methods].params}
+		<ul class="parameters">
+		{section name=params loop=$methods[methods].params}
+			<li>
+				<span class="var-type">{$methods[methods].params[params].datatype}</span>
+				<span class="var-name">{$methods[methods].params[params].var}</span>{if $methods[methods].params[params].data}<span class="var-description">: {$methods[methods].params[params].data}</span>{/if}
+			</li>
+		{/section}
+		</ul>
+	{/if}
+	
+	{if $methods[methods].method_overrides}
+		<hr class="separator" />
+		<div class="notes">Redefinition of:</div>
+		<dl>
+			<dt>{$methods[methods].method_overrides.link}</dt>
+			{if $methods[methods].method_overrides.sdesc}
+			<dd>{$methods[methods].method_overrides.sdesc}</dd>
+			{/if}
+		</dl>
+	{/if}
+	
+	{if $methods[methods].descmethod}
+		<hr class="separator" />
+		<div class="notes">Redefined in descendants as:</div>
+		<ul class="redefinitions">
+		{section name=dm loop=$methods[methods].descmethod}
+			<li>
+				{$methods[methods].descmethod[dm].link}
+				{if $methods[methods].descmethod[dm].sdesc}
+				: {$methods[methods].descmethod[dm].sdesc}
+				{/if}
+			</li>
+		{/section}
+		</ul>
+	{/if}
+</div>
+{/section}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl
new file mode 100644
index 00000000..e5e1913c
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/page.tpl
@@ -0,0 +1,211 @@
+{include file="header.tpl" top3=true}
+
+<h2 class="file-name">{$source_location}</h2>
+
+<a name="sec-description"></a>
+<div class="info-box">
+	<div class="info-box-title">Description</div>
+	<div class="nav-bar">
+		{if $classes || $includes || $defines || $globals || $functions}
+			<span class="disabled">Description</span> |
+		{/if}
+		{if $classes}
+			<a href="#sec-classes">Classes</a>
+			{if $includes || $defines || $globals || $functions}|{/if}
+		{/if}
+		{if $includes}
+			<a href="#sec-includes">Includes</a>
+			{if $defines || $globals || $functions}|{/if}
+		{/if}
+		{if $defines}
+			<a href="#sec-constants">Constants</a>
+			{if $globals || $functions}|{/if}
+		{/if}
+		{if $globals}
+			<a href="#sec-variables">Variables</a>
+			{if $functions}|{/if}
+		{/if}
+		{if $functions}
+			<a href="#sec-functions">Functions</a>
+		{/if}
+	</div>
+	<div class="info-box-body">	
+		{include file="docblock.tpl" desc=$desc sdesc=$sdesc tags=$tags}
+		
+		{if $tutorial}
+			<hr class="separator" />
+			<div class="notes">Tutorial: <span class="tutorial">{$tutorial}</div>
+		{/if}
+	</div>
+</div>
+		
+{if $classes}
+	<a name="sec-classes"></a>	
+	<div class="info-box">
+		<div class="info-box-title">Classes</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			<span class="disabled">Classes</span>
+			{if $includes || $defines || $globals || $functions}|{/if}
+			{if $includes}
+				<a href="#sec-includes">Includes</a>
+				{if $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $defines}
+				<a href="#sec-constants">Constants</a>
+				{if $globals || $functions}|{/if}
+			{/if}
+			{if $globals}
+				<a href="#sec-variables">Variables</a>
+				{if $functions}|{/if}
+			{/if}
+			{if $functions}
+				<a href="#sec-functions">Functions</a>
+			{/if}
+		</div>
+		<div class="info-box-body">	
+			<table cellpadding="2" cellspacing="0" class="class-table">
+				<tr>
+					<th class="class-table-header">Class</th>
+					<th class="class-table-header">Description</th>
+				</tr>
+				{section name=classes loop=$classes}
+				<tr>
+					<td style="padding-right: 2em; vertical-align: top">
+						{$classes[classes].link}
+					</td>
+					<td>
+					{if $classes[classes].sdesc}
+						{$classes[classes].sdesc}
+					{else}
+						{$classes[classes].desc}
+					{/if}
+					</td>
+				</tr>
+				{/section}
+			</table>
+		</div>
+	</div>
+{/if}
+
+{if $includes}
+	<a name="sec-includes"></a>	
+	<div class="info-box">
+		<div class="info-box-title">Includes</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $classes}
+				<a href="#sec-classes">Classes</a>
+				{if $includes || $defines || $globals || $functions}|{/if}
+			{/if}
+			<span class="disabled">Includes</span>
+			{if $defines || $globals || $functions}|{/if}
+			{if $defines}
+				<a href="#sec-constants">Constants</a>
+				{if $globals || $functions}|{/if}
+			{/if}
+			{if $globals}
+				<a href="#sec-variables">Variables</a>
+				{if $functions}|{/if}
+			{/if}
+			{if $functions}
+				<a href="#sec-functions">Functions</a>
+			{/if}
+		</div>
+		<div class="info-box-body">	
+			{include file="include.tpl"}
+		</div>
+	</div>
+{/if}
+	
+{if $defines}
+	<a name="sec-constants"></a>	
+	<div class="info-box">
+		<div class="info-box-title">Constants</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $classes}
+				<a href="#sec-classes">Classes</a>
+				{if $includes || $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $includes}
+				<a href="#sec-includes">Includes</a>
+				{if $defines || $globals || $functions}|{/if}
+			{/if}
+			<span class="disabled">Constants</span>
+			{if $globals || $functions}|{/if}
+			{if $globals}
+				<a href="#sec-variables">Variables</a>
+				{if $functions}|{/if}
+			{/if}
+			{if $functions}
+				<a href="#sec-functions">Functions</a>
+			{/if}
+		</div>
+		<div class="info-box-body">	
+			{include file="define.tpl"}
+		</div>
+	</div>
+{/if}
+	
+{if $globals}
+	<a name="sec-variables"></a>	
+	<div class="info-box">
+		<div class="info-box-title">Variables</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $classes}
+				<a href="#sec-classes">Classes</a>
+				{if $includes || $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $includes}
+				<a href="#sec-includes">Includes</a>
+				{if $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $defines}
+				<a href="#sec-constants">Constants</a>
+				{if $globals || $functions}|{/if}
+			{/if}
+			<span class="disabled">Variables</span>
+			{if $functions}|{/if}
+			{if $globals}
+				<a href="#sec-functions">Functions</a>
+			{/if}
+		</div>
+		<div class="info-box-body">	
+			{include file="global.tpl"}
+		</div>
+	</div>
+{/if}
+	
+{if $functions}
+	<a name="sec-functions"></a>	
+	<div class="info-box">
+		<div class="info-box-title">Functions</div>
+		<div class="nav-bar">
+			<a href="#sec-description">Description</a> |
+			{if $classes}
+				<a href="#sec-classes">Classes</a>
+				{if $includes || $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $includes}
+				<a href="#sec-includes">Includes</a>
+				{if $defines || $globals || $functions}|{/if}
+			{/if}
+			{if $defines}
+				<a href="#sec-constants">Constants</a>
+				{if $globals || $functions}|{/if}
+			{/if}
+			{if $globals}
+				<a href="#sec-variables">Variables</a>
+				{if $functions}|{/if}
+			{/if}
+			<span class="disabled">Functions</span>
+		</div>
+		<div class="info-box-body">	
+			{include file="function.tpl"}
+		</div>
+	</div>
+{/if}
+	
+{include file="footer.tpl" top3=true}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl
new file mode 100644
index 00000000..542af8ed
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/pkgelementindex.tpl
@@ -0,0 +1,17 @@
+{include file="header.tpl"}
+<a name="top"></a>
+<h2>[{$package}] element index</h2>
+{if count($packageindex) > 1}
+	<h3>Package indexes</h3>
+	<ul>
+	{section name=p loop=$packageindex}
+	{if $packageindex[p].title != $package}
+		<li><a href="elementindex_{$packageindex[p].title}.html">{$packageindex[p].title}</a></li>
+	{/if}
+	{/section}
+	</ul>
+{/if}
+<a href="elementindex.html">All elements</a>
+<br />
+{include file="basicindex.tpl" indexname=elementindex_$package}
+{include file="footer.tpl"}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl
new file mode 100644
index 00000000..c4cb83f9
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/ric.tpl
@@ -0,0 +1,6 @@
+{include file="header.tpl"}
+<h1 align="center">{$name}</h1>
+<pre>
+{$contents|htmlentities}
+</pre>
+{include file="footer.tpl"}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl
new file mode 100644
index 00000000..5ab0bca2
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/todolist.tpl
@@ -0,0 +1,14 @@
+{include file="header.tpl" title="Todo List"}
+<div align="center"><h1>Todo List</h1></div>
+{foreach from=$todos key=todopackage item=todo}
+<h2>{$todopackage}</h2>
+{section name=todo loop=$todo}
+<h3>{$todo[todo].link}</h3>
+<ul>
+{section name=t loop=$todo[todo].todos}
+    <li>{$todo[todo].todos[t]}</li>
+{/section}
+</ul>
+{/section}
+{/foreach}
+{include file="footer.tpl"}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl
new file mode 100644
index 00000000..31f559cb
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/top_frame.tpl
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+  <html xmlns="http://www.w3.org/1999/xhtml">
+		<head>
+			<!-- template designed by Marco Von Ballmoos -->
+			<title>{$title}</title>
+			<link rel="stylesheet" href="{$subdir}media/stylesheet.css" />
+			<link rel="stylesheet" href="{$subdir}media/banner.css" />
+			<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
+		</head>
+		<body>
+			<div class="banner">
+				<div class="banner-title">PRADO API Manual</div>
+				<div class="banner-menu">
+	        <table cellpadding="0" cellspacing="0" style="width: 100%">
+	          <tr>
+              <td>
+								{if count($ric) >= 1}
+									{assign var="last_ric_name" value=""}
+									{section name=ric loop=$ric}
+										{if $last_ric_name != ""} | {/if}
+										<a href="{$ric[ric].file}" target="right">{$ric[ric].name}</a>
+										{assign var="last_ric_name" value=$ric[ric].name}
+									{/section}
+								{/if}
+              </td>
+              <td style="width: 2em">&nbsp;</td>
+              <td style="text-align: right">
+								{if count($packages) > 1}
+									{assign var="last_package_name" value=""}
+									{section name=p loop=$packages}
+										{if $last_package_name != ""} | {/if}
+										<a href="{$packages[p].link}" target="left_bottom">{$packages[p].title}</a>
+										{assign var="last_package_name" value=$packages[p].title}
+									{/section}
+								{/if}
+              </td>
+						</tr>
+          </table>
+				</div>
+			</div>
+		</body>
+	</html>
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl
new file mode 100644
index 00000000..deb1ee04
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial.tpl
@@ -0,0 +1,13 @@
+{include file="header.tpl" title=$title top3=true}
+
+{if $nav}
+	{include file="tutorial_nav.tpl" prev=$prev next=$next up=$up prevtitle=$prevtitle nexttitle=$nexttitle uptitle=$uptitle}
+{/if}
+
+{$contents}
+
+{if $nav}
+	{include file="tutorial_nav.tpl" prev=$prev next=$next up=$up prevtitle=$prevtitle nexttitle=$nexttitle uptitle=$uptitle}
+{/if}
+
+{include file="footer.tpl" top3=true}
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl
new file mode 100644
index 00000000..9b42fec8
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_nav.tpl
@@ -0,0 +1,41 @@
+<table class="tutorial-nav-box">
+	<tr>
+		<td style="width: 30%">
+			{if $prev}
+				<a href="{$prev}" class="nav-button">Previous</a>
+			{else}
+				<span class="nav-button-disabled">Previous</span>
+			{/if}
+		</td>
+		<td style="text-align: center">
+			{if $up}
+				<a href="{$up}" class="nav-button">Up</a>
+			{/if}
+		</td>
+		<td style="text-align: right; width: 30%">
+			{if $next}
+				<a href="{$next}" class="nav-button">Next</a>
+			{else}
+				<span class="nav-button-disabled">Next</span>
+			{/if}
+		</td>
+	</tr>
+	<tr>
+		<td style="width: 30%">
+			{if $prevtitle}
+				<span class="detail">{$prevtitle}</span>
+			{/if}
+		</td>
+		<td style="text-align: center">
+			{if $uptitle}
+				<span class="detail">{$uptitle}</span>
+			{/if}
+		</td>
+		<td style="text-align: right; width: 30%">
+			{if $nexttitle}
+				<span class="detail">{$nexttitle}</span>
+			{/if}
+		</td>
+	</tr>
+</table>
+	
\ No newline at end of file
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
new file mode 100644
index 00000000..314ebd81
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_toc.tpl
@@ -0,0 +1,39 @@
+{if count($toc)}
+<h1 class="title">Table of Contents</h1>
+<ul class="toc">
+	{assign var="lastcontext" value='refsect1'}
+	{section name=toc loop=$toc}
+		
+		{if $toc[toc].tagname != $lastcontext}
+		  {if $lastcontext == 'refsect1'}
+				<ul class="toc">
+					<li>{$toc[toc].link}</li>
+			{else}
+				{if $lastcontext == 'refsect2'}
+					{if $toc[toc].tagname == 'refsect1'}
+						</ul>
+						<li>{$toc[toc].link}</li>
+					{/if}
+					{if $toc[toc].tagname == 'refsect3'}
+						<ul class="toc">
+							<li>{$toc[toc].link}</li>
+					{/if}
+				{else}
+					</ul>
+					<li>{$toc[toc].link}</li>
+				{/if}
+			{/if}
+			{assign var="lastcontext" value=$toc[toc].tagname}
+		{else}
+			<li>{$toc[toc].link}</li>
+		{/if}
+	{/section}
+	{if $lastcontext == 'refsect2'}
+		</ul>
+	{/if}
+	{if $lastcontext == 'refsect3'}
+			</ul>
+		</ul>
+	{/if}
+</ul>
+{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl
new file mode 100644
index 00000000..d5a18355
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/tutorial_tree.tpl
@@ -0,0 +1,6 @@
+<div><a href="{$main.link}" target="right">{$main.title|strip_tags}</a></div>
+{if $haskids}
+<div style="margin-left: 1em">
+	{$kids}
+</div>
+{/if}
diff --git a/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl
new file mode 100644
index 00000000..59c4d8cd
--- /dev/null
+++ b/buildscripts/PhpDocumentor/phpDocumentor/Converters/HTML/frames/templates/default/templates/var.tpl
@@ -0,0 +1,44 @@
+{section name=vars loop=$vars}
+<a name="var{$vars[vars].var_name}" id="{$vars[vars].var_name}"><!-- --></A>
+<div class="{cycle values="evenrow,oddrow"}">
+
+	<div class="var-header">
+		<span class="var-title">
+			<span class="var-type">{$vars[vars].var_type}</span>
+			<span class="var-name">{$vars[vars].var_name}</span>
+			{if $vars[vars].var_default} = <span class="var-default">{$vars[vars].var_default|replace:"\n":"<br />"}</span>{/if}
+			(line <span class="line-number">{if $vars[vars].slink}{$vars[vars].slink}{else}{$vars[vars].line_number}{/if}</span>)
+		</span>
+	</div>
+
+	{include file="docblock.tpl" sdesc=$vars[vars].sdesc desc=$vars[vars].desc tags=$vars[vars].tags}	
+	
+	{if $vars[vars].var_overrides}
+		<hr class="separator" />
+		<div class="notes">Redefinition of:</div>
+		<dl>
+			<dt>{$vars[vars].var_overrides.link}</dt>
+			{if $vars[vars].var_overrides.sdesc}
+			<dd>{$vars[vars].var_overrides.sdesc}</dd>
+			{/if}
+		</dl>
+	{/if}
+	
+	{if $vars[vars].descvar}
+		<hr class="separator" />
+		<div class="notes">Redefined in descendants as:</div>
+		<ul class="redefinitions">
+		{section name=vm loop=$vars[vars].descvar}
+			<li>
+				{$vars[vars].descvar[vm].link}
+				{if $vars[vars].descvar[vm].sdesc}
+				: {$vars[vars].descvar[vm].sdesc}
+				{/if}
+			</li>
+		{/section}
+		</ul>
+	{/if}	
+
+</div>
+{/section}
+
-- 
cgit v1.2.3