aboutsummaryrefslogtreecommitdiffstats
path: root/system/doc/top
diff options
context:
space:
mode:
Diffstat (limited to 'system/doc/top')
-rw-r--r--system/doc/top/Makefile242
-rw-r--r--system/doc/top/PR.template.src20
l---------system/doc/top/bin/otp_man_index1
-rw-r--r--system/doc/top/book.xml52
-rw-r--r--system/doc/top/ebin/.gitignore0
-rw-r--r--system/doc/top/highlights.xml238
-rw-r--r--system/doc/top/incompatible.xml383
-rw-r--r--system/doc/top/print.html55
l---------system/doc/top/src/erl_html_tools.erl1
l---------system/doc/top/src/erlresolvelinks.erl1
l---------system/doc/top/src/permuted_index.erl1
-rw-r--r--system/doc/top/templates/applications.html.src34
-rw-r--r--system/doc/top/templates/erlang.gifbin0 -> 2162 bytes
-rw-r--r--system/doc/top/templates/first.html.src104
-rwxr-xr-xsystem/doc/top/templates/flip_closed.gifbin0 -> 82 bytes
-rwxr-xr-xsystem/doc/top/templates/flip_google.gifbin0 -> 257 bytes
-rwxr-xr-xsystem/doc/top/templates/flip_open.gifbin0 -> 86 bytes
-rwxr-xr-xsystem/doc/top/templates/flip_static.gifbin0 -> 109 bytes
-rwxr-xr-xsystem/doc/top/templates/flipmenu.js342
-rw-r--r--system/doc/top/templates/index.html.src180
-rw-r--r--system/doc/top/templates/otp_top.css53
-rw-r--r--system/doc/top/templates/system.html.src281
-rw-r--r--system/doc/top/templates/toc_.html.src105
23 files changed, 2093 insertions, 0 deletions
diff --git a/system/doc/top/Makefile b/system/doc/top/Makefile
new file mode 100644
index 0000000000..08fe265336
--- /dev/null
+++ b/system/doc/top/Makefile
@@ -0,0 +1,242 @@
+#
+# %CopyrightBegin%
+#
+# Copyright Ericsson AB 1999-2009. All Rights Reserved.
+#
+# The contents of this file are subject to the Erlang Public License,
+# Version 1.1, (the "License"); you may not use this file except in
+# compliance with the License. You should have received a copy of the
+# Erlang Public License along with this software. If not, it can be
+# retrieved online at http://www.erlang.org/.
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# %CopyrightEnd%
+#
+#
+include $(ERL_TOP)/make/target.mk
+include $(ERL_TOP)/make/$(TARGET)/otp.mk
+
+# ----------------------------------------------------
+# Application version
+# ----------------------------------------------------
+include $(ERL_TOP)/erts/vsn.mk
+
+APPLICATION=otp-system-documentation
+
+# ----------------------------------------------------
+# Release directory specification
+# ----------------------------------------------------
+RELSYSDIR = $(RELEASE_PATH)/doc
+
+GIF_FILES =
+
+INFO_FILES = ../../README ../../COPYRIGHT PR.template
+
+TOPDOCDIR=.
+
+TOP_HTML_GEN_FILES = \
+ $(HTMLDIR)/incompatible.html \
+ $(HTMLDIR)/highlights.html
+
+TOP_HTML_FILES = \
+ $(TOP_HTML_GEN_FILES)
+
+include ../installation_guide/xmlfiles.mk
+include ../system_principles/xmlfiles.mk
+include ../embedded/xmlfiles.mk
+include ../getting_started/xmlfiles.mk
+include ../reference_manual/xmlfiles.mk
+include ../programming_examples/xmlfiles.mk
+include ../efficiency_guide/xmlfiles.mk
+include ../tutorial/xmlfiles.mk
+include ../design_principles/xmlfiles.mk
+include ../oam/xmlfiles.mk
+
+XML_FILES = \
+ $(INST_GUIDE_CHAPTER_FILES:%=../installation_guide/%) \
+ $(SYSTEM_PRINCIPLES_CHAPTER_FILES:%=../system_principles/%) \
+ $(EMBEDDED_CHAPTER_FILES:%=../embedded/%) \
+ $(GETTING_STARTED_CHAPTER_FILES:%=../getting_started/%) \
+ $(REF_MAN_CHAPTER_FILES:%=../reference_manual/%) \
+ $(PROG_EX_CHAPTER_FILES:%=../programming_examples/%) \
+ $(EFF_GUIDE_CHAPTER_FILES:%=../efficiency_guide/%) \
+ $(TUTORIAL_CHAPTER_FILES:%=../tutorial/%) \
+ $(DESIGN_PRINCIPLES_CHAPTER_FILES:%=../design_principles/%) \
+ $(OAM_CHAPTER_FILES:%=../oam/%) \
+ ../installation_guide/part.xml \
+ ../system_principles/part.xml \
+ ../embedded/part.xml \
+ ../getting_started/part.xml \
+ ../reference_manual/part.xml \
+ ../programming_examples/part.xml \
+ ../efficiency_guide/part.xml \
+ ../tutorial/part.xml \
+ ../design_principles/part.xml \
+ ../oam/part.xml
+
+BOOK_FILES = book.xml
+
+HTMLDIR= ../html
+PDFREFDIR= pdf
+
+TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf
+TOPDOC=true
+
+#--------------------------------------------------------------------------
+# We generate the index page from the installed system. This make
+# it important that this is done last. The file index.html.src
+# is used as a template for the resulting page.
+
+EBIN = ebin
+
+INDEX_SCRIPT = $(EBIN)/erl_html_tools.$(EMULATOR)
+INDEX_SRC = src/erl_html_tools.erl
+INDEX_FILES = \
+ $(HTMLDIR)/index.html \
+ $(HTMLDIR)/applications.html
+
+JAVASCRIPT = $(HTMLDIR)/js/erlresolvelinks.js
+JAVASCRIPT_BUILD_SCRIPT = $(EBIN)/erlresolvelinks.$(EMULATOR)
+JAVASCRIPT_BUILD_SCRIPT_SRC = src/erlresolvelinks.erl
+
+MAN_INDEX_SCRIPT = $(ERL_TOP)/system/doc/top/bin/otp_man_index
+MAN_INDEX = $(HTMLDIR)/man_index.html
+
+GLOSSARY = $(HTMLDIR)/glossary.html
+GLOSSARY_SRC = $(ERL_TOP)/system/internal_tools/doctools/src/glossary.erl
+GLOSSARY_SCRIPT = $(EBIN)/glossary.$(EMULATOR)
+
+#--------------------------------------------------------------------------
+
+$(INDEX_SCRIPT): $(INDEX_SRC)
+ $(ERLC) -o$(EBIN) +warn_unused_vars $<
+
+# We don't list toc_*.html as targets because we don't know
+$(HTMLDIR)/index.html: $(INDEX_SCRIPT)
+ifneq ($(INSTALLROOT),)
+ echo "Generating index $@"
+ $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index $(INSTALLROOT) \
+ $(HTMLDIR) $(SYSTEM_VSN) -s erlang halt
+else
+ @echo "INSTALLROOT unset, no indexes built."
+endif
+
+#--------------------------------------------------------------------------
+
+$(JAVASCRIPT_BUILD_SCRIPT): $(JAVASCRIPT_BUILD_SCRIPT_SRC)
+ $(ERLC) -o$(EBIN) +warn_unused_vars $<
+
+$(JAVASCRIPT): $(JAVASCRIPT_BUILD_SCRIPT)
+ifneq ($(INSTALLROOT),)
+ echo "Generating javascript for resolving HTML links"
+ erl -noshell -pa $(EBIN) -s erlresolvelinks make $(INSTALLROOT) \
+ . -s erlang halt
+ mkdir $(HTMLDIR)/js
+ mv erlresolvelinks.js $(JAVASCRIPT) # not portable !!!
+else
+ @echo "INSTALLROOT unset, no javascript generated."
+endif
+
+#--------------------------------------------------------------------------
+
+$(MAN_INDEX): $(MAN_INDEX_SCRIPT)
+ifneq ($(INSTALLROOT),)
+ echo "Generating index $@"
+ (cd $(INSTALLROOT); perl $< ) > $@
+else
+ @echo "INSTALLROOT unset, no manual index built."
+endif
+#--------------------------------------------------------------------------
+
+$(HTMLDIR)/highlights.html: highlights.xml
+ date=`date +"%B %e %Y"`; \
+ $(XSLTPROC) --output $(@) --stringparam docgen "$(DOCGEN)" --stringparam topdocdir "$(TOPDOCDIR)" \
+ --stringparam pdfdir "$(PDFREFDIR)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" \
+ --stringparam appver "$(VSN)" -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_html_entities \
+ $(DOCGEN)/priv/xsl/db_html.xsl $<
+
+
+$(HTMLDIR)/incompatible.html: incompatible.xml
+ date=`date +"%B %e %Y"`; \
+ $(XSLTPROC) --output $(@) --stringparam docgen "$(DOCGEN)" --stringparam topdocdir "$(TOPDOCDIR)" \
+ --stringparam pdfdir "$(PDFREFDIR)" --stringparam gendate "$$date" --stringparam appname "$(APPLICATION)" \
+ --stringparam appver "$(VSN)" -path $(DOCGEN)/priv/docbuilder_dtd -path $(DOCGEN)/priv/dtd_html_entities \
+ $(DOCGEN)/priv/xsl/db_html.xsl $<
+
+#--------------------------------------------------------------------------
+
+$(GLOSSARY_SCRIPT): $(GLOSSARY_SRC)
+ $(ERLC) -o$(EBIN) $(GLOSSARY_SRC)
+
+$(GLOSSARY): $(GLOSSARY_SCRIPT)
+ $(ERL) -noshell -pa $(EBIN) \
+ -s glossary make ../definitions/term.defs -s erlang halt > \
+ $(GLOSSARY)
+
+#--------------------------------------------------------------------------
+
+PR.template: PR.template.src $(ERL_TOP)/erts/vsn.mk
+ sed -e 's;%VSN%;$(VSN);' \
+ -e 's;%SYSTEM_VSN%;$(SYSTEM_VSN);' \
+ $< > $@
+
+# ----------------------------------------------------
+# FLAGS
+# ----------------------------------------------------
+XML_FLAGS +=
+DVIPS_FLAGS +=
+
+# ----------------------------------------------------
+# Targets
+# ----------------------------------------------------
+
+
+docs: pdf html $(INFO_FILES)
+
+local_docs: PDFREFDIR=../pdf
+
+$(TOP_PDF_FILE): $(XML_FILES)
+
+pdf: $(TOP_PDF_FILE)
+
+html: $(INDEX_FILES) $(TOP_HTML_FILES) \
+ $(MAN_INDEX) $(JAVASCRIPT)
+
+debug opt:
+
+clean:
+ rm -rf ../html/js
+ rm -f PR.template
+ rm -f $(INDEX_FILES) $(TOP_HTML_FILES) $(MAN_INDEX)
+ rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo)
+ rm -f $(INDEX_SCRIPT) $(GLOSSARY_SCRIPT) \
+ $(JAVASCRIPT_BUILD_SCRIPT)
+ rm -f erl_crash.dump errs core *~
+
+# ----------------------------------------------------
+# Release Target
+# ----------------------------------------------------
+include $(ERL_TOP)/make/otp_release_targets.mk
+
+
+release_docs_spec: docs
+ $(INSTALL_DIR) $(RELEASE_PATH)
+ $(INSTALL_DATA) $(INFO_FILES) $(RELEASE_PATH)
+ $(INSTALL_DIR) $(RELSYSDIR)
+ $(INSTALL_DIR) $(RELSYSDIR)/pdf
+ $(INSTALL_DATA) \
+ $(TOP_PDF_FILE) $(RELSYSDIR)/pdf
+#$(TOP_HTML_FILES)
+ifneq ($(INSTALLROOT),)
+ $(INSTALL_DATA) $(INDEX_FILES) $(MAN_INDEX) $(TOP_HTML_FILES) $(RELSYSDIR)
+ $(INSTALL_DIR) $(RELSYSDIR)/js
+ $(INSTALL_DATA) \
+ $(JAVASCRIPT) $(RELSYSDIR)/js
+endif
+
+
+release_spec:
diff --git a/system/doc/top/PR.template.src b/system/doc/top/PR.template.src
new file mode 100644
index 0000000000..fb593053d9
--- /dev/null
+++ b/system/doc/top/PR.template.src
@@ -0,0 +1,20 @@
+>Submitter-Id: <Your id>
+>Originator: <Your name>
+>Organization: <The name of your company>
+>Confidential: <[yes | no ] (one line)>
+>Synopsis: <synopsis of the problem (one line)>
+>Severity: < [non-critical | serious | critical ] (one line)>
+>Priority: < [ low | medium | high ] (one line)>
+>Category: <product, component or concept name>
+>Class: < [ sw-bug | doc-bug | change-request | support ] (one line)>
+>Release: <Release version, e.g. OTP %SYSTEM_VSN%, Erlang %VSN%>
+>Environment:
+ <machine, os, target, libraries (multiple lines)>
+>Description:
+ <precise description of the problem (multiple lines)>
+>How-To-Repeat:
+ <code/input/activities to reproduce the problem (multiple lines)
+>Fix:
+ <How to correct or work around the problem, if known
+ (multiple lines)>
+
diff --git a/system/doc/top/bin/otp_man_index b/system/doc/top/bin/otp_man_index
new file mode 120000
index 0000000000..bb913b25df
--- /dev/null
+++ b/system/doc/top/bin/otp_man_index
@@ -0,0 +1 @@
+../../../../internal_tools/integration/scripts/otp_man_index \ No newline at end of file
diff --git a/system/doc/top/book.xml b/system/doc/top/book.xml
new file mode 100644
index 0000000000..96f39b0b83
--- /dev/null
+++ b/system/doc/top/book.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE book SYSTEM "book.dtd">
+
+<book xmlns:xi="http://www.w3.org/2001/XInclude">
+ <header titlestyle="normal">
+ <copyright>
+ <year>1997</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Erlang/OTP System Documentation</title>
+ <prepared>OTP Team</prepared>
+ <docno></docno>
+ <date>2009-08-21</date>
+ <rev>A</rev>
+ <file>book.xml</file>
+ </header>
+ <insidecover>
+ </insidecover>
+ <pagetext></pagetext>
+ <preamble>
+ <contents level="2"></contents>
+ </preamble>
+ <parts lift="no">
+ <xi:include href="../installation_guide/part.xml"/>
+ <xi:include href="../system_principles/part.xml"/>
+ <xi:include href="../embedded/part.xml"/>
+ <xi:include href="../getting_started/part.xml"/>
+ <xi:include href="../reference_manual/part.xml"/>
+ <xi:include href="../programming_examples/part.xml"/>
+ <xi:include href="../efficiency_guide/part.xml"/>
+ <xi:include href="../tutorial/part.xml"/>
+ <xi:include href="../design_principles/part.xml"/>
+ <xi:include href="../oam/part.xml"/>
+ </parts>
+ <listofterms></listofterms>
+ <index></index>
+</book>
+
diff --git a/system/doc/top/ebin/.gitignore b/system/doc/top/ebin/.gitignore
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/system/doc/top/ebin/.gitignore
diff --git a/system/doc/top/highlights.xml b/system/doc/top/highlights.xml
new file mode 100644
index 0000000000..a30742aed6
--- /dev/null
+++ b/system/doc/top/highlights.xml
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2006</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Highlights</title>
+ <prepared></prepared>
+ <docno></docno>
+ <date></date>
+ <rev>A</rev>
+ <file>highlights.xml</file>
+ </header>
+ <p>This document lists some highlights of Erlang 5.7/OTP R13A
+ (unpatched), compared to the previous version Erlang 5.6/OTP R12B,
+ with focus on things not already released as R12B patches.</p>
+ <p>Note: This document was compiled at the time when R13A was released
+ and does not list any features introduced in R13 patches.</p>
+
+ <section>
+ <title>Erlang Language and Run-time System</title>
+ <section>
+ <title>Multi-core and SMP performance improvements</title>
+ <p>
+ There SMP performance is significantly improved and will
+ allow most applications to scale much better on systems with many
+ cores or processors. Listed below are some of the most important improvements:
+ </p>
+ <list type="bulleted">
+ <item>
+ <p>
+ The runtime system with SMP support now uses <em>multiple,
+ scheduler specific run queues</em>, instead of one globally shared
+ run queue.
+ </p>
+ <p>
+ The lock protecting the shared run queue was heavily
+ contended, and the shared run queue also caused Erlang
+ processes to randomly migrate between schedulers with
+ negative cache effects as a result.
+ </p>
+ <p>
+ With the current scheduler specific run queue solution, lock
+ contention due to run queue protection has been reduced, and
+ Erlang processes are only migrated when needed to balance the
+ load between the schedulers. The reduced amount of migration
+ also reduce lock contention on locks protecting the scheduler
+ specific instances of the erts internal memory allocators.
+ </p>
+ <p>
+ The scheduler specific run queues are also a necessity for a
+ lot of future planned NUMA (Non-Uniform Memory Access)
+ specific optimizations.
+ </p>
+ </item>
+ <item>
+ <p>
+ Message passing has been further optimized for parallell execution.
+ This makes parallell sending to one common receiver much more efficient.
+ </p>
+ </item>
+ <item>
+ <p>
+ Scheduler threads can now be bound to logical processors on newer
+ Linux ans Solaris systems.
+ </p>
+ </item>
+ </list>
+ </section>
+ <section>
+ <title>Unicode support</title>
+ <p>
+ Support for Unicode is implemented as described in EEP10.
+ Formatting and reading of unicode data both from terminals
+ and files is supported by the <c>io</c> and <c>io_lib</c> modules.
+ Files
+ can be opened in modes with automatic translation to and from
+ different unicode formats. The module 'unicode' contains
+ functions for conversion between external and internal
+ unicode formats and the re module has support for unicode
+ data. There is also language syntax for specifying string and
+ character data beyond the ISO-latin-1 range.
+ </p>
+ </section>
+
+ <section>
+ <title>New BIF's</title>
+ <p>
+ The BIFs <c>atom_to_binary/2</c>, <c>binary_to_atom/2</c> and
+ <c>binary_to_existing_atom/2</c> have been added.
+ </p>
+ </section>
+
+ <section>
+ <title>Independent Erlang clusters on the same host</title>
+ <p>
+ Nodes belonging to different independent clusters can now
+ co-exist on the same host with the help of a new
+ environment variable setting <c>ERL_EPMD_PORT</c>.
+ The environment variable is used by Erl_interface and J_interface
+ as well.
+ </p>
+ </section>
+ </section>
+
+ <section>
+ <title>New Applications</title>
+
+ <section>
+ <title>Reltool</title>
+
+ <p>
+ Reltool is a release management tool.
+ It analyses a given Erlang/OTP installation and determines
+ various dependencies between applications.
+ The graphical frontend depicts the dependencies and enables
+ interactive customization of a target system.
+ The backend provides a batch interface for generation of
+ customized target systems.
+ The application is still somewhat limited and should be regarded
+ as experimental in this release. The intention is that this
+ application will be a valuable tool for making both traditional
+ Erlang target systems as well as standalone components in Erlang.
+ </p>
+ </section>
+
+ <section>
+ <title>WxErlang</title>
+ <p>
+ wxErlang is an Erlang binding to the WxWidgets GUI library which
+ provides support for cross platform GUI applications.
+ wxErlang is still in beta status and the intention is that it shall
+ replace GS in a later stage. The Erlang debugger is also shipped in
+ a wxErlang version.
+ </p>
+ </section>
+
+
+ </section>
+
+ <section>
+ <title>New features in Existing Applications</title>
+
+ <section>
+ <title>Common_test</title>
+
+ <p>
+ A support client module for SSH and SFTP, <c>ct_ssh</c>, has
+ been introduced.
+ </p>
+ <p>
+ Test case groups have been introduced. With this feature
+ it's possible to execute groups (possibly nested)
+ of test cases.
+ </p>
+ <p>
+ A group definition contains a name tag, a list of
+ properties and a list of test cases (including possible
+ nested group definitions). The properties make it possible
+ to execute test cases in parallel, in sequence and in
+ shuffled order. It is also possible to repeat test cases
+ according to different criteria.
+ </p>
+ </section>
+
+
+ <section>
+ <title>Dialyzer</title>
+ <p>
+ The analysis now accepts <em>opaque type declarations</em> and
+ detects
+ violations of opaqueness of terms of such types. Starting
+ with R13, many Erlang/OTP standard libraries (array, dict,
+ digraph, ets, gb_sets, gb_trees, queue, and sets) contain
+ opaque type declarations of their main data types. Dialyzer
+ will spit out warnings in code that explicitly depends on the
+ structure of these terms.
+ </p>
+ <p>
+ Added support for handling UTF segments in bitstreams and for
+ detecting obvious type errors in these segments. Warning:
+ This code is not terribly tested though since there are very
+ few Erlang programs which use Unicode-based binaries - not
+ surprising since this is a new language feature of R13.
+ </p>
+ <p>
+ Strengthened the discrepancy identification when testing for
+ equality and matching between terms of different types. This
+ detects more bugs in code.
+ </p>
+ <p>
+ See the Dialyzer documentation and release notes for even more
+ enhancements.
+ </p>
+ </section>
+
+ <section>
+ <title>SSL</title>
+ <p>
+ The "new_ssl" implementation is significantly improved and should be
+ near product status now.
+ The new SSL is implemented in pure Erlang except for
+ the crypto routines that are implemented in the crypto driver which
+ is an interface to libcrypto from OpenSSL.
+ </p>
+ </section>
+
+ <section>
+ <title>STDLIB</title>
+
+ <p>The Erlang scanner has been augmented as to return white-space,
+ comments and exact location of tokens.
+ This means that the scanner can easily be used in tools such as editors,
+ pretty printers, syntax highlighters etc.
+ where it is important to be able recreate the original source document.
+ </p>
+ </section>
+
+ </section>
+</chapter>
+
diff --git a/system/doc/top/incompatible.xml b/system/doc/top/incompatible.xml
new file mode 100644
index 0000000000..ce9522725b
--- /dev/null
+++ b/system/doc/top/incompatible.xml
@@ -0,0 +1,383 @@
+<?xml version="1.0" encoding="latin1" ?>
+<!DOCTYPE chapter SYSTEM "chapter.dtd">
+
+<chapter>
+ <header>
+ <copyright>
+ <year>2006</year><year>2009</year>
+ <holder>Ericsson AB. All Rights Reserved.</holder>
+ </copyright>
+ <legalnotice>
+ The contents of this file are subject to the Erlang Public License,
+ Version 1.1, (the "License"); you may not use this file except in
+ compliance with the License. You should have received a copy of the
+ Erlang Public License along with this software. If not, it can be
+ retrieved online at http://www.erlang.org/.
+
+ Software distributed under the License is distributed on an "AS IS"
+ basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ the License for the specific language governing rights and limitations
+ under the License.
+
+ </legalnotice>
+
+ <title>Potential Incompatibilities</title>
+ <prepared></prepared>
+ <docno></docno>
+ <date></date>
+ <rev></rev>
+ <file>incompatible.xml</file>
+ </header>
+ <p>This document contains a list of potential incompatibilities
+ between Erlang 5.7/OTP R12A and Erl 5.6.5/OTP R12B-5,
+ and is an extract from the release notes for the respective applications.</p>
+
+ <section>
+ <title>compiler</title>
+ <list type="bulleted">
+ <item>
+ <p>
+ The undocumented, unsupported, and deprecated guard BIF
+ <c>is_constant/1</c> has been removed.</p>
+ <p>
+ *** INCOMPATIBILITY with R12B ***</p>
+ <p>
+ Own Id: OTP-7673</p>
+ </item>
+ <item>
+ <p>The short-circuit operators <c>andalso</c> and
+ <c>orelse</c> no longer guarantees that their second
+ argument is either <c>true</c> or <c>false</c>. As a
+ consequence, <c>andalso</c>/<c>orelse</c> are now
+ tail-recursive.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7748</p>
+ </item>
+ <item>
+ <p>The compiler will refuse to a compile file where the
+ module name in the file differs from the output file
+ name.</p>
+ <p>When compiling using <c>erlc</c>, the current working
+ directory will no be included in the code path (unless
+ explicitly added using "-pa .").</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7793</p>
+ </item>
+ <item>
+ <p>If a module contains an exported function with the
+ same name as an auto-imported BIF (such as
+ <c>length/1</c>), any calls to the BIF must have an
+ explicit <c>erlang:</c> prefix, or there will be a
+ compilation error (such calls would only generate a
+ warning in previous releases).</p>
+ <p>(The reason for the change is to avoid breaking code
+ in a future major release, R14 or R15, in which we plan
+ to make calls without a module prefix always call the
+ local function in the same module even if there is an
+ auto-imported BIF with the same name.)</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7873</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Erts</title>
+ <list type="bulleted">
+ <item>
+ <p>Support for Unicode is implemented as described in
+ EEP10. Formatting and reading of unicode data both from
+ terminals and files is supported by the io and io_lib
+ modules. Files can be opened in modes with automatic
+ translation to and from different unicode formats. The
+ module 'unicode' contains functions for conversion
+ between external and internal unicode formats and the re
+ module has support for unicode data. There is also
+ language syntax for specifying string and character data
+ beyond the ISO-latin-1 range.</p>
+ <p>The interactive shell will support input and output of
+ unicode characters when the terminal and operating system
+ supports it.</p>
+ <p>Please see the EEP and the io/io_lib manual pages as
+ well as the stdlib users guide for details.</p>
+ <p><em>I/O-protocol incompatibilities:</em></p>
+ <p>The io_protocol between io_Server and client is
+ updated to handle protocol data in unicode formats. The
+ updated protocol is now documented. The specification
+ resides in the stdlib <em>users manual</em>, which is a
+ new part of the manual.</p>
+ <p><em>io module incompatibilities:</em></p>
+ <p>The io:put_chars, io:get_chars and io:get_line all
+ handle and return unicode data. In the case where
+ binaries can be provided (as to io:put_chars), they shall
+ be encoded in UTF-8. When binaries are returned (as by
+ io:get_line/get_chars when the io_server is set in
+ <em>binary mode</em>) the returned data is also
+ <em>always</em> encoded as UTF-8. The file module however
+ still returns byte-oriented data, why file:read can be
+ used instead of io:get_chars to read binary data in
+ ISO-latin-1.</p>
+ <p><em>io_lib module incompatibilities:</em></p>
+ <p>io_lib:format can, given new format directives (i.e
+ "~ts" and "~tc"), return lists containing integers larger
+ than 255. </p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494
+ OTP-7443 OTP-7181 EEP10 EEP11 </p>
+ </item>
+ <item>
+ <p>
+ The undocumented, unsupported, and deprecated guard BIF
+ <c>is_constant/1</c> has been removed.</p>
+ <p>
+ *** INCOMPATIBILITY with R12B ***</p>
+ <p>
+ Own Id: OTP-7673</p>
+ </item>
+ <item>
+ <p>The short-circuit operators <c>andalso</c> and
+ <c>orelse</c> no longer guarantees that their second
+ argument is either <c>true</c> or <c>false</c>. As a
+ consequence, <c>andalso</c>/<c>orelse</c> are now
+ tail-recursive.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7748</p>
+ </item>
+ <item>
+ <p>The compiler will refuse to a compile file where the
+ module name in the file differs from the output file
+ name.</p>
+ <p>When compiling using <c>erlc</c>, the current working
+ directory will no be included in the code path (unless
+ explicitly added using "-pa .").</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7793</p>
+ </item>
+ <item>
+ <p>The deprecated functions <c>erlang:fault/1</c>,
+ <c>erlang:fault/2</c>, and <c>file:rawopen/2</c> have
+ been removed.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7812</p>
+ </item>
+ <item>
+ <p>The escape sequences <c>\x</c> and <c>\{</c> have been
+ assigned new interpretations (they used to return the
+ ASCII code for <c>x</c> and <c>{</c> respectively). One
+ or more octal characters inside curly brackets after a
+ leading backslash is from now on an alternative to the
+ existing syntax <c>\NNN</c>, but can also be used for
+ codes greater than 255. In a similar fashion, one or more
+ hexadecimal characters can be put inside curly brackets
+ after a leading <c>\x</c>. Furthermore, the escape
+ sequences <c>\xH</c> and <c>\xHH</c>, where N is a
+ hexadecimal character, can be used for codes less than
+ 256.</p>
+ <p>NOTE: These new escape sequences are still considered
+ experimental and may be changed in the R13B release.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7855</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Inets</title>
+ <list type="bulleted">
+ <item>
+ <p>
+ [httpc] - The inets http client will now use persistent
+ connections without pipelining as default and if a
+ pipeline timeout is set it will pipeline the requests on
+ the persistent connections.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7463</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Jinterface</title>
+ <list>
+ <item>
+ <p>
+ A number of fixes and improvements from the ErlIDE group;
+ Vlad Dumitrescu and Jakob Cederlund: JDK 1.5 is now a
+ minimal requirement for building Jinterface. New method:
+ OtpEpmd.lookupNames. OtpErlangList is now iterable.
+ Non-proper lists are now allowed - you have to test if a
+ list is proper or not. Non-proper lists can also be
+ created. New methods: isProper, getHead, getTail and
+ getNthTail. The get tail methods creates a sublist object
+ that re-uses the original list. OtpErlangPid is now
+ Comparable. Empty atoms can now be constructed, a missing
+ feature pointed out by Sebastien Boisgerault on
+ erlang-questions.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7832</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>Kernel</title>
+ <list type="bulleted">
+ <item>
+ <p>The deprecated functions <c>erlang:fault/1</c>,
+ <c>erlang:fault/2</c>, and <c>file:rawopen/2</c> have
+ been removed.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7812</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>SSH</title>
+ <list type="bulleted">
+ <item>
+ <p>
+ Ssh timeouts will now behave as expected i.e. defaults to
+ infinity. Only the user of the ssh application can know of
+ a reasonable timeout value for their application.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7807</p>
+ </item>
+ <item>
+ <p>
+ Added the message {ssh_channel_up, ChannelId,
+ ConnectionManager} that shall be handled by the channel
+ callback handle_msg/2. This makes the function
+ handle_msg/2 a mandatory function for ssh channels
+ implementations which it was not in ssh-1.1.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7828</p>
+ </item>
+ </list>
+ </section>
+
+ <section>
+ <title>STDLIB</title>
+ <list type="bulleted">
+ <item>
+ <p>The functions <c>lists:seq/1,2</c> return the empty
+ list in a few cases when they used to generate an
+ exception, for example <c>lists:seq(1, 0)</c>. See
+ lists(3) for details. (Thanks to Richard O'Keefe.)</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7230</p>
+ </item>
+ <item>
+ <p>Support for Unicode is implemented as described in
+ EEP10. Formatting and reading of unicode data both from
+ terminals and files is supported by the io and io_lib
+ modules. Files can be opened in modes with automatic
+ translation to and from different unicode formats. The
+ module 'unicode' contains functions for conversion
+ between external and internal unicode formats and the re
+ module has support for unicode data. There is also
+ language syntax for specifying string and character data
+ beyond the ISO-latin-1 range.</p>
+ <p>The interactive shell will support input and output of
+ unicode characters when the terminal and operating system
+ supports it.</p>
+ <p>Please see the EEP and the io/io_lib manual pages as
+ well as the stdlib users guide for details.</p>
+ <p><em>I/O-protocol incompatibilities:</em></p>
+ <p>The io_protocol between io_Server and client is
+ updated to handle protocol data in unicode formats. The
+ updated protocol is now documented. The specification
+ resides in the stdlib <em>users manual</em>, which is a
+ new part of the manual.</p>
+ <p><em>io module incompatibilities:</em></p>
+ <p>The io:put_chars, io:get_chars and io:get_line all
+ handle and return unicode data. In the case where
+ binaries can be provided (as to io:put_chars), they shall
+ be encoded in UTF-8. When binaries are returned (as by
+ io:get_line/get_chars when the io_server is set in
+ <em>binary mode</em>) the returned data is also
+ <em>always</em> encoded as UTF-8. The file module however
+ still returns byte-oriented data, why file:read can be
+ used instead of io:get_chars to read binary data in
+ ISO-latin-1.</p>
+ <p><em>io_lib module incompatibilities:</em></p>
+ <p>io_lib:format can, given new format directives (i.e
+ "~ts" and "~tc"), return lists containing integers larger
+ than 255. </p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494
+ OTP-7443 OTP-7181 EEP10 EEP11 </p>
+ </item>
+ <item>
+ <p>
+ <c>filelib:fold_files/5</c> now uses the <c>re</c> module
+ instead of the <c>regexp</c> module for regular
+ expression matching. In practice, this change will not be
+ a problem for most regular expressions used for
+ <c>filelib:fold_files/5</c>. (The major difference in
+ regular expression is that parenthesis and curly brackets
+ is treated as literal characters by <c>regexp</c> but as
+ special characters by <c>re</c>; fortunately, those
+ characters are rarely used in filenames.)</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7819</p>
+ </item>
+ <item>
+ <p>
+ <c>digraph:new(Type)</c> will now cause a <c>badarg</c>
+ exception if <c>Type</c> is not a valid type. Similarly,
+ <c>digraph_utils:subgraph/2,3</c> will now cause a
+ <c>badarg</c> if the arguments are invalid. (Those
+ functions used to return error tuples if something was
+ wrong.)</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7824</p>
+ </item>
+ <item>
+ <p>The argument passed to <c>random:uniform/1</c> must
+ now be an integer (as stated in the documentation). In
+ previous releases, a floating point number was also
+ allowed.</p>
+ <p>
+ *** POTENTIAL INCOMPATIBILITY ***</p>
+ <p>
+ Own Id: OTP-7827</p>
+ </item>
+ </list>
+ </section>
+</chapter>
+
diff --git a/system/doc/top/print.html b/system/doc/top/print.html
new file mode 100644
index 0000000000..b562d0e9bc
--- /dev/null
+++ b/system/doc/top/print.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!-- This document was generated using DocBuilder-0.9.8.1 -->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>Erlang/OTP Documentation for Printing</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+ <style type="text/css">
+<!--
+ body { font-family: Verdana, Arial, Helvetica, sans-serif }
+ span.bold_code { font-family: courier;font-weight: bold}
+ span.code { font-family: courier;font-weight: normal}
+-->
+ </style>
+</head>
+
+<body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+
+<center>
+<a href="http://www.ericsson.com/technology/opensource/erlang">
+ <img alt="Ericsson AB" BORDER=0 SRC="pics/min_head.gif">
+</a>
+<br>
+
+<font size="-1">
+ [<a href="index.html">Up</a> |
+ <a href="http://www.ericsson.com/technology/opensource/erlang">Ericsson AB</a>]
+</font>
+<br/>
+
+<p>
+<font size="+3">Documentation for Printing</font><br/>
+</p>
+</center>
+
+<p>
+
+You can get this documentation preformated for printing in PDF
+format from the
+<a href="http://www.erlang.org/doc.html">
+ Erlang/OTP documentation page
+</a>. Here you can find links to documentation for the latest release as well as for older releases.
+
+<!-- ------------------------- footer ------------------------- -->
+<p>
+<center>
+<hr/>
+<font size="-1">
+ Copyright &copy; 1991-2008
+ <a href="http://www.ericsson.com/technology/opensource/erlang">Ericsson AB</a>
+</font>
+</center>
+</body>
+</html>
diff --git a/system/doc/top/src/erl_html_tools.erl b/system/doc/top/src/erl_html_tools.erl
new file mode 120000
index 0000000000..35a199b08d
--- /dev/null
+++ b/system/doc/top/src/erl_html_tools.erl
@@ -0,0 +1 @@
+../../../../internal_tools/integration/scripts/make_index/erl_html_tools.erl \ No newline at end of file
diff --git a/system/doc/top/src/erlresolvelinks.erl b/system/doc/top/src/erlresolvelinks.erl
new file mode 120000
index 0000000000..8d277ad17a
--- /dev/null
+++ b/system/doc/top/src/erlresolvelinks.erl
@@ -0,0 +1 @@
+../../../../internal_tools/integration/scripts/resolve_links/erlresolvelinks.erl \ No newline at end of file
diff --git a/system/doc/top/src/permuted_index.erl b/system/doc/top/src/permuted_index.erl
new file mode 120000
index 0000000000..e65338a517
--- /dev/null
+++ b/system/doc/top/src/permuted_index.erl
@@ -0,0 +1 @@
+../../../../internal_tools/integration/scripts/make_index/permuted_index.erl \ No newline at end of file
diff --git a/system/doc/top/templates/applications.html.src b/system/doc/top/templates/applications.html.src
new file mode 100644
index 0000000000..0251d39b28
--- /dev/null
+++ b/system/doc/top/templates/applications.html.src
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Erlang/OTP #version#</title>
+ <style type="text/css">
+<!--
+ BODY { background: white }
+
+ BODY { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TH { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TD { font-family: Verdana, Arial, Helvetica, sans-serif }
+ P { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+ .header { background: #222; color: #fff }
+ .app { background: #ccc }
+
+ a.anum:link { color: green; text-decoration: none }
+ a.anum:active { color: green; text-decoration: none }
+ a.anum:visited { color: green; text-decoration: none }
+
+ a:link { text-decoration: none }
+ a:active { text-decoration: none }
+ a:visited { text-decoration: none }
+-->
+ </style>
+</head>
+
+<body bgcolor=white text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+<center>
+#groups#
+</center>
+</body>
+</html>
diff --git a/system/doc/top/templates/erlang.gif b/system/doc/top/templates/erlang.gif
new file mode 100644
index 0000000000..91fd4b9647
--- /dev/null
+++ b/system/doc/top/templates/erlang.gif
Binary files differ
diff --git a/system/doc/top/templates/first.html.src b/system/doc/top/templates/first.html.src
new file mode 100644
index 0000000000..edef1c0e5c
--- /dev/null
+++ b/system/doc/top/templates/first.html.src
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Erlang/OTP #release# Documentation</title>
+ <style type="text/css">
+<!--
+ BODY { background: white }
+
+ BODY { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TH { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TD { font-family: Verdana, Arial, Helvetica, sans-serif }
+ P { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+ .header { background: #222; color: #fff }
+ .app { background: #ccc }
+-->
+ </style>
+</head>
+<body bgcolor=white text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+<center>
+<p>
+<font size="+1">Welcome to Erlang/OTP, a complete<br>
+development environment<br>
+for concurrent programming.</font>
+</p>
+</center>
+<br>
+<br>
+<br>
+<p><b>
+<font size"+1">
+Some hints that may get you started faster
+</font>
+</b></p>
+
+<ul>
+
+<li>In addition the the documentation here Erlang is described in the book
+<a href="http://www.pragprog.com/titles/jaerlang" target="_top">"Programming Erlang"</a>, ISBN 978-1-934356-00-5 which we really recommend as a start.<br/ >
+The complete language is also described in the <a href="reference_manual/part_frame.html" target="_top">Erlang Reference Manual</a>. An Erlang tutorial can be found in <a href="getting_started/part_frame.html" target="_top">Getting Started With Erlang</a>.
+</li>
+<li>Erlang/OTP is divided into a number of OTP <a
+href="applications.html">applications</a>. An application normally contains
+Erlang <a href="man_index.html">modules</a>. Some OTP applications,
+such as the C interface <em>Erl_Interface</em>, are written in other languages and have no Erlang
+modules.
+
+<p>
+Note that functions that are not imported or prefixed with a module
+name belong to the module
+<a href="#kernel#/erlang.html" target="_top">erlang</a>
+(in the <em>Kernel</em> application).
+</p>
+<p>
+<li>On a Unix system you can view the manual pages from the command
+line using
+<pre>
+ % erl -man &lt;module&gt;
+</pre>
+<p>
+
+<li> You can of course use any editor you like to write Erlang
+programs, but if you use Emacs there exists editing support such as
+indentation, syntax highlighting, electric commands, module name
+verification, comment support including paragraph filling, skeletons,
+tags support and more. See the <a href="#tools#/index.html"
+target="_top">Tools</a> application for details.
+<p>
+There is also an
+<a href="http://erlide.sourceforge.net" target="_top">
+Erlang plugin (ErlIde) for Eclipse</a> if you prefer a more graphical
+environment. ErlIde is under development and should at the time
+of writing this be quite stable and useful.
+<li>When developing with Erlang/OTP you usually test your programs
+from the interactive shell (see <a href="getting_started/part_frame.html"
+target="_top">Getting Started With Erlang</a>) where you can call individual
+functions. There is also a number of tools available, such as the graphical <a
+href="#debugger#/index.html" target="_top">Debugger</a>, the process
+manager <a href="#pman#/index.html" target="_top">Pman</a> and table
+viewer <a href="#tv#/index.html" target="_top">TV</a>.
+<p> Also note that there are some shell features like history list
+(control-p and control-n), inline editing (emacs key bindings) and
+module and function name completion (tab) if the module is loaded.
+<p>
+
+<li>OpenSource users can ask questions
+and share experiences on the <a href="http://www.erlang.org/faq.html"
+target="_top">Erlang questions mailing list</a>. <p>
+
+<li>Before asking a question you can browse the <a
+href="http://www.erlang.org/pipermail/erlang-questions/"
+target="_top">mailing list archive</a> and read the <a
+href="http://www.erlang.org/faq/faq.html" target="_top">Frequently
+Asked Questions</a>. <p>
+
+<li>Additional information and links of interest for Erlang programmers can be found on the Erlang Open Source site
+<a href="http://www.erlang.org/" target="_top">http://www.erlang.org</a>.
+<p>
+
+</ul>
+
+</body>
+</html>
diff --git a/system/doc/top/templates/flip_closed.gif b/system/doc/top/templates/flip_closed.gif
new file mode 100755
index 0000000000..9a27c7c25d
--- /dev/null
+++ b/system/doc/top/templates/flip_closed.gif
Binary files differ
diff --git a/system/doc/top/templates/flip_google.gif b/system/doc/top/templates/flip_google.gif
new file mode 100755
index 0000000000..3f0543c2bb
--- /dev/null
+++ b/system/doc/top/templates/flip_google.gif
Binary files differ
diff --git a/system/doc/top/templates/flip_open.gif b/system/doc/top/templates/flip_open.gif
new file mode 100755
index 0000000000..9dda60e73a
--- /dev/null
+++ b/system/doc/top/templates/flip_open.gif
Binary files differ
diff --git a/system/doc/top/templates/flip_static.gif b/system/doc/top/templates/flip_static.gif
new file mode 100755
index 0000000000..2b3ddb5382
--- /dev/null
+++ b/system/doc/top/templates/flip_static.gif
Binary files differ
diff --git a/system/doc/top/templates/flipmenu.js b/system/doc/top/templates/flipmenu.js
new file mode 100755
index 0000000000..92a5a58a06
--- /dev/null
+++ b/system/doc/top/templates/flipmenu.js
@@ -0,0 +1,342 @@
+// ######################################################################
+
+// ## flipMenu 5.0.0 (c) J. Reijers
+// ## Last modifications: 23 March 2007
+
+// ######################################################################
+
+// ## Degree of indentation from the left.
+ flipIndentation = "5px";
+
+// ## Padding inbetween menu items.
+ flipVerticalPadding = "4px";
+
+// ## Margin between the left of the browser and the menu.
+ flipLeftMargin = "16px";
+
+// ## Margin between the top of the browser and the menu.
+ flipTopMargin = "10px";
+
+// ## Allow multiple menus to fold out without closing all the other open ones.
+ flipOpenMultipleMenus = false;
+
+// ## Preserve the current state of the menu (requires cookies).
+ flipSaveMenuState = true;
+
+// ## Use custom images for bullets
+ flipImages = true;
+
+// ## Images to use (specify full path)
+ flipImg_open = "flip_open.gif";
+ flipImg_closed = "flip_closed.gif";
+ flipImg_static = "flip_static.gif";
+
+// ## Initialise all flipMenus onload
+ flipInitOnLoad = true;
+
+// ## Message to display in status bar while loading
+ flipLoadingMessage = "Loading...";
+
+// ######################################################################
+
+function alterSize(someSize, alterAmount) {
+ someSize = String(someSize);
+ var tmpNr = parseFloat(someSize.replace(/\D/g, ""));
+ var tmpChar = someSize.replace(/\d/g, "");
+ return isNaN(tmpNr) ? someSize : ((tmpNr + alterAmount) + tmpChar);
+}
+
+isIE = (String(navigator.appVersion).indexOf("MSIE") > -1);
+if (!isIE) flipIndentation = alterSize(flipIndentation, -16);
+if (!isIE) flipLeftMargin = alterSize(flipLeftMargin, -16);
+
+document.write(
+ "<style type=\"text/css\">" +
+
+ "ul.flipMenu { margin-top: " + flipTopMargin + "; margin-left: " + flipLeftMargin + "; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+ "ul.flipMenu ul, ul.flipMenu li { padding-top: " + flipVerticalPadding + "; margin-left: " + flipIndentation + "; margin-right: 0px; " + (flipImages ? "" : "list-style-type: none;") + " }" +
+
+ "li.flipFolderOpen { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_open + ");" : "") + " }" +
+ "li.flipFolderClosed { cursor: pointer; " + (flipImages ? "list-style-image: url(" + flipImg_closed + ");" : "") + " }" +
+
+ "</style>"
+);
+
+if (flipImages) {
+ aFlipPreloads = [];
+ aFlipPreloads[0] = new Image;
+ aFlipPreloads[0].src = flipImg_open;
+ aFlipPreloads[1] = new Image;
+ aFlipPreloads[1].src = flipImg_closed;
+ aFlipPreloads[2] = new Image;
+ aFlipPreloads[2].src = flipImg_static;
+}
+
+function addEvent(someObj, someEvent, someFunction) {
+ if (someObj.addEventListener) { someObj.addEventListener(someEvent, someFunction, true); return true; } else if (someObj.attachEvent) return someObj.attachEvent("on" + someEvent, someFunction); else return false;
+}
+
+function openCloseFlip(theItem, newSetting, openParents) {
+ if (theItem.flipID) {
+ if (openParents) {
+ var tmpItem = theItem;
+ while (tmpItem.parentElement || tmpItem.parentNode) {
+ tmpItem = (tmpItem.parentElement) ? tmpItem.parentElement : tmpItem.parentNode;
+ openCloseFlip(tmpItem, newSetting);
+ }
+ }
+ if ((theItem.className == "flipFolderOpen" && newSetting == "closed") || (theItem.className == "flipFolderClosed" && newSetting == "open")) {
+ if (!theItem.childrenInitialised) {
+ for (var j = 0; j < theItem.childNodes.length; j++) if (theItem.childNodes[j].nodeName == "UL" && !theItem.childNodes[j].initialised) initFlip(theItem.childNodes[j]);
+ theItem.childrenInitialised = true;
+ }
+ theItem.getElementsByTagName("UL")[0].style.display = (newSetting == "open") ? "" : "none";
+ theItem.className = newSetting == "open" ? "flipFolderOpen" : "flipFolderClosed";
+ }
+ }
+}
+
+function openFlip(theItem, openParents) {
+ openCloseFlip(theItem, "open", openParents);
+}
+
+function closeFlip(theItem, closeParents) {
+ openCloseFlip(theItem, "closed", closeParents);
+}
+
+function toggleFlip(theElement) {
+ if (theElement.flipID) {
+ var theItem = theElement;
+ var isContained = true;
+ } else {
+ if (theElement && theElement.button > 0) return false;
+ var theItem = (isIE) ? event.srcElement : theElement.target;
+
+ var isContained = false;
+ if (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") isContained = true; else while (theItem.parentElement || theItem.parentNode) {
+ if (theItem.className == "flipStatic" || theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed") {
+ isContained = (theItem.className == "flipFolderOpen" || theItem.className == "flipFolderClosed");
+ break;
+ }
+ theItem = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ }
+ }
+
+ var toOpenFlip = (isContained && theItem.className == "flipFolderClosed");
+
+ if (!flipOpenMultipleMenus && (toOpenFlip || theItem.className == "flipStatic")) {
+ if (theItem.parentElement || theItem.parentNode) {
+ var parentUL = (theItem.parentElement) ? theItem.parentElement : theItem.parentNode;
+ for (var i = 0; i < parentUL.childNodes.length; i++) closeFlip(parentUL.childNodes[i]);
+ }
+ }
+
+ if (isContained) {
+ if (toOpenFlip) openFlip(theItem); else closeFlip(theItem);
+ }
+}
+
+function setAllFlips(startElement, newSetting) {
+ if (typeof startElement == "undefined") var startElement = document;
+ if (typeof newSetting == "undefined") var newSetting = "closed";
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var parentFlip = aUL[i].parentElement ? aUL[i].parentElement : aUL[i].parentNode;
+ openCloseFlip(parentFlip, newSetting);
+ }
+}
+
+function openAllFlips(startElement) {
+ setAllFlips(startElement, "open");
+}
+
+function closeAllFlips(startElement) {
+ setAllFlips(startElement, "closed");
+}
+
+function initFlip(startElement) {
+ if (!document.createElement) return false;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ if (flipLoadingMessage != "") window.status = flipLoadingMessage + " " + parseInt((i / (aUL.length - 1)) * 100, 10) + "%";
+ var curUL = aUL[i];
+ if (curUL.className == "flipMenu") {
+ initFlip(curUL);
+
+ // ## Fix text selecting problem in Mozilla
+ curUL.onselectstart = new Function("return false");
+ curUL.onmousedown = new Function("return false");
+ curUL.onclick = new Function("return true");
+ }
+ }
+
+ if (flipSaveMenuState) loadMenuState();
+
+ if (flipLoadingMessage != "") window.status = "";
+ return true;
+ }
+
+ if (startElement.className == "flipMenu") startElement.style.display = "";
+
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ if (typeof flipIDCur == "undefined") flipIDCur = 0;
+ if (!startElement.initialised) {
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) aUL[i].style.display = "none";
+ }
+
+ for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.nodeName == "LI") {
+ flipIDCur++;
+ curNode.flipID = flipIDCur;
+
+ var nodeHasChildren = curNode.getElementsByTagName("UL").length > 0;
+ if (nodeHasChildren) {
+ if (flipImages && curNode.flipClosed) curNode.style.listStyleImage = "url(" + curNode.flipClosed + ")";
+
+ if (curNode.className == null || curNode.className == "") curNode.className = "flipFolderClosed";
+ } else {
+ curNode.className = "flipStatic";
+ if (flipImages && !curNode.style.listStyleImage) {
+ if (!curNode.flipStatic) curNode.flipStatic = flipImg_static;
+ curNode.style.listStyleImage = "url(" + curNode.flipStatic + ")";
+ }
+ }
+
+ if (!curNode.flipOpen) curNode.flipOpen = flipImg_open;
+ if (!curNode.flipClosed) curNode.flipClosed = flipImg_closed;
+
+ if (curNode.flipIsOpen) openFlip(curNode);
+ }
+ }
+
+ startElement.initialised = true;
+}
+
+function rootOfFlip(flipID, startElement) {
+
+ function containsFlip(startElement, flipID) {
+ var flipFound = false;
+ var i = 0;
+ while (i < startElement.childNodes.length && !flipFound) {
+ var curNode = startElement.childNodes[i];
+ flipFound = (curNode.flipID == flipID) ? true : containsFlip(curNode, flipID);
+ i++;
+ }
+ return flipFound;
+ }
+
+ var rootFlip = null;
+
+ if (!startElement || !startElement.nodeName) {
+ var aUL = document.getElementsByTagName("UL");
+ var i = 0;
+ while (rootFlip == null && i < aUL.length) {
+ var curUL = aUL[i];
+ if (curUL.nodeName == "UL" && curUL.className == "flipMenu") rootFlip = rootOfFlip(flipID, curUL);
+ i++;
+ }
+ return rootFlip;
+ }
+
+ if (startElement.childNodes) for (var i = 0; i < startElement.childNodes.length; i++) {
+ var curNode = startElement.childNodes[i];
+ if (curNode.flipID == flipID || containsFlip(curNode, flipID)) rootFlip = curNode;
+ }
+
+ return rootFlip;
+}
+
+function getCookie(cookieName) {
+ var allCookies = document.cookie;
+ var indexStr = allCookies.indexOf(cookieName + "=");
+ if (indexStr == -1) return "";
+ indexStr = allCookies.indexOf("=", indexStr) + 1;
+ var endStr = allCookies.indexOf(";", indexStr);
+ if (endStr == -1) endStr = allCookies.length;
+ return unescape(allCookies.substring(indexStr, endStr));
+}
+
+function inArray(someID, someArray) {
+ for (var i = 0; i < someArray.length; i++) if (someArray[i] == someID) return true;
+ return false;
+}
+
+function getMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return "";
+
+ var openItems = "";
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (curNode.style.display == "" && parentFlip.flipID) openItems += " " + parentFlip.flipID;
+ }
+ return openItems;
+}
+
+function putMenuState(startElement) {
+ if (!startElement.childNodes || startElement.childNodes.length == 0) return false;
+
+ var aUL = startElement.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curNode = aUL[i];
+ var parentFlip = (curNode.parentElement) ? curNode.parentElement : curNode.parentNode;
+ if (inArray(parentFlip.flipID, aOpenItems)) {
+ openFlip(parentFlip);
+ if (typeof prevFlipRoot == "undefined") {
+ var testRoot = rootOfFlip(parentFlip.flipID);
+ if (testRoot.flipID == parentFlip.flipID) prevFlipRoot = testRoot;
+ }
+ }
+ }
+}
+
+function saveMenuState() {
+ if (flipSaveMenuState) {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=" + getMenuState(curUL) + ";";
+ }
+ }
+}
+
+function loadMenuState() {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") {
+ var savedState = String(getCookie(cookiePrefix + curID));
+ if (savedState != "") {
+ aOpenItems = savedState.split(" ");
+ putMenuState(curUL);
+ }
+ }
+ }
+
+ addEvent(window, "unload", saveMenuState);
+}
+
+function clearMenuState(flipMenuID) {
+ if (typeof flipMenuID == "undefined") {
+ var aUL = document.getElementsByTagName("UL");
+ for (var i = 0; i < aUL.length; i++) {
+ var curUL = aUL[i];
+ var curID = curUL.id ? curUL.id : i;
+ if (curUL.className == "flipMenu") document.cookie = cookiePrefix + curID + "=;";
+ }
+ } else document.cookie = cookiePrefix + flipMenuID + "=;";
+}
+
+cookiePrefix = document.location.pathname + "_";
+
+addEvent(document, "click", toggleFlip);
+if (flipInitOnLoad) addEvent(window, "load", initFlip);
diff --git a/system/doc/top/templates/index.html.src b/system/doc/top/templates/index.html.src
new file mode 100644
index 0000000000..935bb11c80
--- /dev/null
+++ b/system/doc/top/templates/index.html.src
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!--
+%CopyrightBegin%
+
+Copyright Ericsson AB 2001-2009. All Rights Reserved.
+
+The contents of this file are subject to the Erlang Public License,
+Version 1.1, (the "License"); you may not use this file except in
+compliance with the License. You should have received a copy of the
+Erlang Public License along with this software. If not, it can be
+retrieved online at http://www.erlang.org/.
+
+Software distributed under the License is distributed on an "AS IS"
+basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+the License for the specific language governing rights and limitations
+under the License.
+
+%CopyrightEnd%
+-->
+
+<html>
+<head>
+ <link rel="stylesheet" href="otp_doc.css" type="text/css"/>
+ <title>Erlang/OTP #release#</title>
+
+<script id="js" type="text/javascript" language="JavaScript" src="js/flipmenu/flipmenu.js">
+
+</script>
+</head>
+
+<body bgcolor=white text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+
+<div id="container">
+<div id="leftnav">
+<div class="innertube">
+<img alt="Erlang logo" src="erlang-logo.png"/ >
+<!-- small><a href="glossary.html">Glossary</a> |-->
+<small><a href="applications.html">Applications</a><br>
+<a href="man_index.html">Modules</a></small>
+<p/>
+<small><a href="highlights.html">Release highlights</a><br>
+<a href="incompatible.html">Potential incompatibilities</a><br>
+</small>
+<br>
+<a href="javascript:openAllFlips()">Expand All</a><br>
+<a href="javascript:closeAllFlips()">Contract All</a>
+<p/>
+
+<ul class="flipMenu">
+<li>Erlang/OTP System Documentation
+<ul>
+<li><a href="installation_guide/users_guide.html">Installation Guide</a></li>
+<li><a href="system_principles/users_guide.html">System Principles</a></li>
+<li><a href="embedded/users_guide.html">Embedded System</a></li>
+<li><a href="getting_started/users_guide.html">Getting Started</a></li>
+<li><a href="reference_manual/users_guide.html">Erlang Reference Manual</a></li>
+<li><a href="programming_examples/users_guide.html">Programming Examples</a></li>
+<li><a href="efficiency_guide/users_guide.html">Efficiency Guide</a></li>
+<li><a href="tutorial/users_guide.html">Interoperability Tutorial</a></li>
+<li><a href="design_principles/users_guide.html">Design Principles</a></li>
+<li><a href="oam/users_guide.html">OAM Principles</a></li>
+</ul>
+</li>
+
+#applinks#
+</ul>
+
+</div>
+</div>
+
+
+<div id="content">
+<div class="innertube">
+<center>
+<font size="+1"><b>Erlang/OTP #release#</b></font><br>
+</center>
+<center>
+<p>
+<font size="+1">Welcome to Erlang/OTP, a complete<br>
+development environment<br>
+for concurrent programming.</font>
+</p>
+</center>
+<br>
+<br>
+<br>
+<p><b>
+<font size="+1">
+Some hints that may get you started faster
+</font>
+</b></p>
+
+<ul>
+
+<li>
+The complete Erlang language is described in the
+<a href="reference_manual/users_guide.html">Erlang Reference Manual</a>.
+An Erlang tutorial can be found in
+<a href="getting_started/users_guide.html">
+Getting Started With Erlang</a>.
+<p>
+In addition to the documentation here Erlang is described in several recent books like:
+</p>
+<ul>
+<li>
+<a href="http://oreilly.com/catalog/9780596518189">"Erlang Programming"</a> from O'Reilly.
+</li>
+<li>
+<a href="http://www.pragprog.com/titles/jaerlang">"Programming Erlang"</a> from Pragmatic.
+</li>
+</ul>
+<p>
+These books are highly recommended as a start for learning Erlang.
+</p>
+</li>
+<li>Erlang/OTP is divided into a number of OTP <a
+href="applications.html">applications</a>. An application normally contains
+Erlang <a href="man_index.html">modules</a>. Some OTP applications,
+such as the C interface <em>erl_interface</em>, are written in other languages and have no Erlang
+modules.
+
+<p>
+<li>On a Unix system you can view the manual pages from the command
+line using
+<pre>
+ % erl -man &lt;module&gt;
+</pre>
+<p>
+
+<li> You can of course use any editor you like to write Erlang
+programs, but if you use Emacs there exists editing support such as
+indentation, syntax highlighting, electric commands, module name
+verification, comment support including paragraph filling, skeletons,
+tags support and more. See the <a href="#tools#/index.html">
+Tools</a> application for details.
+<p>
+There is also an
+<a href="http://erlide.sourceforge.net">
+Erlang plugin (ErlIDE) for Eclipse</a> if you prefer a more graphical
+environment. ErlIDE is under active development with new features in almost every release.
+<li>When developing with Erlang/OTP you usually test your programs
+from the interactive shell (see <a href="getting_started/users_guide.html">
+Getting Started With Erlang</a>) where you can call individual
+functions. There is also a number of tools available, such as the graphical <a
+href="#debugger#/index.html" >Debugger</a>, the process
+manager <a href="#pman#/index.html" >Pman</a> and table
+viewer <a href="#tv#/index.html">TV</a>.
+<p> Also note that there are some shell features like history list
+(control-p and control-n), in line editing (Emacs key bindings) and
+module and function name completion (tab) if the module is loaded.
+<p>
+
+<li>OpenSource users can ask questions
+and share experiences on the <a href="http://www.erlang.org/faq.html">
+Erlang questions mailing list</a>. <p>
+
+<li>Before asking a question you can browse the <a
+href="http://www.erlang.org/pipermail/erlang-questions/">
+mailing list archive</a> and read the <a
+href="http://www.erlang.org/faq/faq.html" >Frequently
+Asked Questions</a>. <p>
+
+<li>Additional information and links of interest for Erlang programmers can be found on the Erlang Open Source site
+<a href="http://www.erlang.org/">http://www.erlang.org</a>.
+<p>
+
+</ul>
+
+<center>
+<small>
+Copyright &copy; 1999-2009
+<a href="http://www.ericsson.com">Ericsson AB</a>
+</small>
+</center>
+</div>
+</div>
+</div>
+</body>
+</html>
diff --git a/system/doc/top/templates/otp_top.css b/system/doc/top/templates/otp_top.css
new file mode 100644
index 0000000000..1c6d27bd8d
--- /dev/null
+++ b/system/doc/top/templates/otp_top.css
@@ -0,0 +1,53 @@
+ BODY { background: white }
+
+ BODY { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TH { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TD { font-family: Verdana, Arial, Helvetica, sans-serif }
+ P { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+ .header { background: #222; color: #fff }
+ .top { background: #efe }
+ .otp { background: #efe }
+ .erlang { background: #ffe }
+ .otp2 { background: #efe }
+ .app { background: #ffe }
+
+ a:link { color: blue; text-decoration: none }
+ a:active { color: blue; text-decoration: none }
+ a:visited { color: blue; text-decoration: none }
+ body {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ overflow: scroll;
+ height: 100%;
+ max-height: 100%
+ }
+ #container {
+ width: 100%;
+ margin: 10px auto;
+ background-color: #fff;
+ }
+ #leftnav {
+ float: left;
+ width: 200px;
+ margin: 0;
+ padding: 1em;
+ }
+ #content {
+ margin-left: 220px; /* set left value to WidthOfFrameDiv */
+ border-left: 1px solid red;
+ }
+
+ .innertube {
+ margin: 15px; /* Magins for inner DIV inside each DIV (to provide padding) */
+ }
+
+ * html body{ /* IE6 hack */
+ padding: 0 0 0 200px; /* Set value to (0 0 0 WidthOfFrameDiv)*/
+ }
+ * html #maincontent{ /* IE6 hack*/
+ height: 100%;
+ width: 100%;
+ }
+
diff --git a/system/doc/top/templates/system.html.src b/system/doc/top/templates/system.html.src
new file mode 100644
index 0000000000..761bc96ed0
--- /dev/null
+++ b/system/doc/top/templates/system.html.src
@@ -0,0 +1,281 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Erlang/OTP #release#</title>
+ <style type="text/css">
+<!--
+ BODY { background: white }
+
+ BODY { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TH { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TD { font-family: Verdana, Arial, Helvetica, sans-serif }
+ P { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+ .header { background: #222; color: #fff }
+ .app { background: #ccc }
+
+ a.anum:link { color: green; text-decoration: none }
+ a.anum:active { color: green; text-decoration: none }
+ a.anum:visited { color: green; text-decoration: none }
+
+ a:link { text-decoration: none }
+ a:active { text-decoration: none }
+ a:visited { text-decoration: none }
+-->
+ </style>
+</head>
+
+<body bgcolor=white text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+<center>
+<table border=0 width="90%" cellspacing=3 cellpadding=5>
+
+ <tr>
+ <td colspan=2 class=header>
+ <font size="+1"><b>General</b></font>
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="system_architecture_intro/part_frame.html" target="_top"
+ name=system_architecture_intro>
+ Introduction
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+About Erlang, OTP, Erlang/OTP and this documentation
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="installation_guide/part_frame.html" target="_top"
+ name=installation_guide>
+ Installation Guide
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+The Erlang/OTP Installation Guide
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="system_principles/part_frame.html" target="_top"
+ name=system_principles>
+ System Principles
+ </a>
+ </td>
+ <td align=right valign=top width=20>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Starting, stopping and configuring the Erlang runtime system
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="embedded/part_frame.html" target="_top" name=embedded>
+ Embedded System
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Erlang in an Embedded System
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan=2><font size=1>&nbsp;</font></td>
+ </tr>
+
+<!-- ====================================================================== -->
+
+ <tr>
+ <td colspan=2 class=header>
+ <font size="+1"><b>Programming in Erlang</b></font>
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="reference_manual/part_frame.html" target="_top" name=reference_manual>
+ Erlang Reference Manual
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Description of data types, language constructs and more
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="getting_started/part_frame.html" target="_top" name=getting_started>
+ Getting Started
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Getting started with Erlang
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="programming_examples/part_frame.html" target="_top" name=programming_examples>
+ Programming Examples
+ </a>
+ </td>
+ <td align=right valign=top width=50>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Examples of using records, funs, list comprehensions and the bit syntax
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="efficiency_guide/part_frame.html" target="_top" name=efficiency_guide>Efficiency Guide</a>
+ </td>
+ <td align=right valign=top width=20>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Learn how to write efficient programs in Erlang
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="tutorial/part_frame.html" target="_top" name=tutorial>Interoperability Tutorial</a>
+ </td>
+ <td align=right valign=top width=20>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+About interoperating with programs written in other programming languages
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan=2><font size=1>&nbsp;</font></td>
+ </tr>
+
+<!-- ====================================================================== -->
+
+ <tr>
+ <td colspan=2 class=header>
+ <font size="+1"><b>Working with OTP</b></font>
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="design_principles/part_frame.html" target="_top"
+ name=design_principles>
+ Design Principles
+ </a>
+ </td>
+ <td align=right valign=top width=20>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+Structure your programs with applications, supervisors and generic behaviors (gen_server, gen_event and gen_fsm).
+Also use the built in error logger.
+ </td>
+ </tr>
+
+ <tr class=app>
+ <td align=left valign=top>
+ <table border=0 width="100%" cellspacing=0 cellpadding=0>
+ <tr class=app>
+ <td align=left valign=top>
+ <a href="oam/part_frame.html" target="_top" name=oam>OAM Principles</a>
+ </td>
+ <td align=right valign=top width=20>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td align=left valign=top>
+OTP Operation and Management Principles
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan=2><font size=1>&nbsp;</font></td>
+ </tr>
+
+</table>
+
+</center>
+</body>
+</html>
+
+
diff --git a/system/doc/top/templates/toc_.html.src b/system/doc/top/templates/toc_.html.src
new file mode 100644
index 0000000000..5e79bc0ac8
--- /dev/null
+++ b/system/doc/top/templates/toc_.html.src
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title>Erlang/OTP #release#</title>
+ <style type="text/css">
+<!--
+ BODY { background: white }
+
+ BODY { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TH { font-family: Verdana, Arial, Helvetica, sans-serif }
+ TD { font-family: Verdana, Arial, Helvetica, sans-serif }
+ P { font-family: Verdana, Arial, Helvetica, sans-serif }
+
+ .header { background: #222; color: #fff }
+ .top { background: #efe }
+ .otp { background: #efe }
+ .erlang { background: #ffe }
+ .otp2 { background: #efe }
+ .app { background: #ffe }
+
+ a:link { color: blue; text-decoration: none }
+ a:active { color: blue; text-decoration: none }
+ a:visited { color: blue; text-decoration: none }
+-->
+ </style>
+</head>
+
+<body bgcolor=white text="#000000" link="#0000ff" vlink="#ff00ff"
+ alink="#ff0000">
+<center>
+<font size="+1"><b>Erlang/OTP #release#</b></font><br>
+</center>
+
+<div class=top>
+<small><a href="glossary.html" target=body>Glossary</a> |
+<a href="man_index.html" target=body>Modules</a> |
+<a href="permuted_index/pidxa.html" target=body>Index</a></small>
+<p>
+<small><a href="highlights.html" target=body>Release highlights</a><br>
+<a href="incompatible.html" target=body>Potential incompatibilities</a>
+</small>
+</div>
+
+<p>
+<div class=otp>
+Erlang/OTP
+<br>
+&middot;<small><a href="installation_guide/part_frame.html" target="_top"
+ name=installation_guide>Installation Guide</a></small>
+
+<br>
+&middot;<small><a href="system_principles/part_frame.html" target="_top"
+ name=system_principles>System Principles</a></small>
+
+<br>
+&middot;<small><a href="embedded/part_frame.html" target="_top" name=embedded>Embedded System</a></small>
+
+</div>
+
+<p>
+<div class=erlang>
+Erlang Programming
+<br>
+&middot;<small><a href="getting_started/part_frame.html" target="_top" name=getting_started>Getting
+Started</a></small>
+
+<br>
+&middot;<small><a href="reference_manual/part_frame.html" target="_top" name=reference_manual>Erlang
+Reference Manual</a></small>
+
+<br>
+&middot;<small><a href="programming_examples/part_frame.html" target="_top" name=programming_examples>Programming
+Examples</a></small>
+
+<br>
+&middot;<small><a href="efficiency_guide/part_frame.html" target="_top" name=efficiency_guide>Efficiency Guide</a></small>
+
+<br>
+&middot;<small><a href="tutorial/part_frame.html" target="_top" name=tutorial>Interoperability Tutorial</a></small>
+</div>
+
+<p>
+<div class=otp2>
+Working with OTP
+<br>
+&middot;<small><a href="design_principles/part_frame.html" target="_top"
+ name=design_principles>Design Principles</a>
+</small>
+
+<br>
+&middot;<small><a href="oam/part_frame.html" target="_top" name=oam>OAM Principles</a></small>
+
+</div>
+
+<p>
+<div class=app>
+Applications
+<small>#applinks#</small>
+</div>
+
+<p>
+<a href="http://www.erlang.se/" target=body>http://www.erlang.se</a>
+
+</body>
+</html>