Index: P:/workspace/Doxygen2/embedded_docs.php
===================================================================
--- P:/workspace/Doxygen2/embedded_docs.php	(revision 0)
+++ P:/workspace/Doxygen2/embedded_docs.php	(revision 0)
@@ -0,0 +1,49 @@
+<?php
+  if( isset($_GET['type']) and $_GET['type'] == 'image')
+  {
+	  try {
+	  	$l_filename = 'doxygen_docs/embedded_html/' . $_GET['file'];
+	  	$l_filedata = file_get_contents($l_filename);
+	  	$l_fileimage = getimagesize($l_filename);
+	  	$l_filetype = $l_fileimage['mime'];
+	  	header('Content-type: ' . $l_filetype);
+	  	echo $l_filedata;
+	  	exit(0);
+	  }
+	  catch( Exception $eError )
+	  {
+	    exit(1);
+	  }
+  }
+  if( isset($_GET['type']) and $_GET['type'] == 'css' )
+  {
+	  header("Content-type: text/css");
+	  echo file_get_contents('doxygen_docs/embedded_html/'.$_GET['file']);
+  	  exit(0);
+  }
+?>
+<HTML>
+ <HEAD>
+  <LINK rel="stylesheet" content-type="text/css" href="embedded_docs.php?type=css&file=doxygen.css" />
+  <LINK rel="stylesheet" content-type="text/css" href="embedded_docs.php?type=css&file=tabs.css" />
+  <TITLE>Doxygen Documentation</TITLE>
+ </HEAD>
+ <BODY>
+  <DIV style="height: 250px; width: 250px; overflow: scroll; position: fixed; float: left; right: 1em; bottom: 1em; border: thin solid #000000; margin: 1em 1em 1em 1em; padding: 1em 1em 1em 1em; background-color: #FFFFFF;">
+  <?php
+	  include("doxygen_docs/embedded_html/tree.html");
+  ?>
+  </DIV>
+  <DIV>
+  <?php
+    if( isset($_GET['type']) and isset($_GET['file']) )
+	{
+		$l_type = $_GET['type'];
+		$l_file = $_GET['file'];
+		$l_filename = 'doxygen_docs/embedded_html/' . $l_file;
+		include($l_filename);
+	}
+  ?>
+  </DIV>
+ </BODY>
+</HTML>
Index: P:/workspace/Doxygen2/src/dot.cpp
===================================================================
--- P:/workspace/Doxygen2/src/dot.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/dot.cpp	(working copy)
@@ -149,6 +149,10 @@
             if ((dest=Doxygen::tagDestinationDict[df->ref()])) 
               result += *dest + "/";
           }
+          else if( Config_getBool("HTML_CMS_EMBEDDING") )
+          {
+        	  result += Config_getString("HTML_CMS_PAGEPREFIX");
+          }
           else if (!relPath.isEmpty())
           {
             result += relPath;
@@ -183,6 +187,10 @@
           {
             if ((dest=Doxygen::tagDestinationDict[ref])) result += *dest + "/";
           }
+          else if( Config_getBool("HTML_CMS_EMBEDDING") )
+          {
+        	  result += Config_getString("HTML_CMS_PAGEPREFIX");
+          }
           else if (!relPath.isEmpty())
           {
             result += relPath;
@@ -1114,7 +1122,12 @@
     }
     // write image and map in a table row
     QCString mapLabel = convertNameToFile(n->m_label);
-    out << "<tr><td><img src=\"" << imgName << "\" border=\"0\" alt=\"\" usemap=\"#" 
+    out << "<tr><td><img src=\"";    
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }    
+    out << imgName << "\" border=\"0\" alt=\"\" usemap=\"#" 
       << mapLabel << "_map\">" << endl;
     out << "<map name=\"" << mapLabel << "_map\">" << endl;
     convertMapFile(out,mapName,"");
@@ -1901,7 +1914,12 @@
   if (format==BITMAP && generateImageMap) // produce HTML to include the image
   {
     QCString mapLabel = convertNameToFile(m_startNode->m_label+"_"+mapName);
-    out << "<p><center><img src=\"" << relPath << baseName << "." 
+    out << "<p><center><img src=\"";
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }
+    out << relPath << baseName << "." 
       << imgExt << "\" border=\"0\" usemap=\"#"
       << mapLabel << "\" alt=\"";
     switch (m_graphType)
@@ -2230,7 +2248,12 @@
 
   if (format==BITMAP && generateImageMap)
   {
-    out << "<p><center><img src=\"" << relPath << baseName << "." 
+    out << "<p><center><img src=\"";
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }
+    out << relPath << baseName << "." 
         << imgExt << "\" border=\"0\" usemap=\"#"
         << mapName << "_map\" alt=\"";
     out << "\">";
@@ -2523,7 +2546,12 @@
 
   if (format==BITMAP && generateImageMap)
   {
-    out << "<p><center><img src=\"" << relPath << baseName << "." 
+    out << "<p><center><img src=\"";
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }    
+    out << relPath << baseName << "." 
         << imgExt << "\" border=\"0\" usemap=\"#"
         << mapName << "_map\" alt=\"";
     out << "\">";
@@ -2664,7 +2692,12 @@
 
   if (format==BITMAP && generateImageMap)
   {
-    out << "<p><center><img src=\"" << relPath << baseName << "." 
+    out << "<p><center><img src=\"";
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }    
+    out << relPath << baseName << "." 
         << imgExt << "\" border=\"0\" usemap=\"#"
         << mapName << "_map\" alt=\"";
     out << m_dir->displayName();
@@ -3154,7 +3187,13 @@
     if (writeImageMap)
     {
       QCString mapLabel = convertNameToFile(baseName);
-      t << "<center><table><tr><td><img src=\"" << relPath << imgName
+      
+      t << "<center><table><tr><td><img src=\"";
+      if( Config_getBool("HTML_CMS_EMBEDDING") )
+      {
+    	  t << Config_getString("HTML_CMS_IMAGEPREFIX");
+      }      
+      t << relPath << imgName
         << "\" border=\"0\" alt=\"\" usemap=\"#" 
         << mapLabel << "_map\">" << endl;
       t << "<map name=\"" << mapLabel << "_map\">" << endl;
Index: P:/workspace/Doxygen2/src/diagram.cpp
===================================================================
--- P:/workspace/Doxygen2/src/diagram.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/diagram.cpp	(working copy)
@@ -173,6 +173,9 @@
     }
     else
     {
+      if( Config_getBool("HTML_CMS_EMBEDDING")) 
+    	  t << Config_getString("HTML_CMS_PAGEPREFIX");
+      
       t << relPath;
     }
     t << cd->getOutputFileBase() << Doxygen::htmlFileExtension << "\" ";
Index: P:/workspace/Doxygen2/src/util.cpp
===================================================================
--- P:/workspace/Doxygen2/src/util.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/util.cpp	(working copy)
@@ -2024,6 +2024,42 @@
   return "";
 }
 
+/*! generates a set of key value pairs representing the list of
+ *  search parameters used for HTML CMS EMBEDDING
+ */
+QMap<QCString,QCString> getSearchParameters()
+{
+  QMap<QCString,QCString> l_retval;
+  
+  // first look for filter pattern list
+  QStrList& l_searchParams = Config_getList("HTML_CMS_SEARCHPARAMS");
+
+  // If no parameters are specified return empty map
+  if (l_searchParams.isEmpty() || !Config_getBool("SEARCHENGINE")) 
+  {
+    return l_retval;
+  }
+
+  // compare the file name to the filter pattern list
+  QStrListIterator sli(l_searchParams);
+  char* filterStr;
+  for (sli.toFirst(); (filterStr = sli.current()); ++sli)
+  {
+    QCString fs = filterStr;
+    int i_equals=fs.find('=');
+
+    if (i_equals!=-1)
+    {
+      QCString l_key = fs.left(i_equals);
+      QCString l_value = fs.mid(i_equals+1);
+      l_retval.insert(l_key, l_value);
+    }
+  }
+
+  // no match
+  return l_retval;
+}
+
 QCString recodeString(const QCString &str,const char *fromEncoding,const char *toEncoding)
 {
   QCString inputEncoding  = fromEncoding;
@@ -4751,7 +4787,7 @@
 QCString relativePathToRoot(const char *name)
 {
   QCString result;
-  if (Config_getBool("CREATE_SUBDIRS"))
+  if (Config_getBool("CREATE_SUBDIRS") && !Config_getBool("HTML_CMS_EMBEDDING"))
   {
     if (name==0)
     {
Index: P:/workspace/Doxygen2/src/dirdef.cpp
===================================================================
--- P:/workspace/Doxygen2/src/dirdef.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/dirdef.cpp	(working copy)
@@ -755,7 +755,14 @@
       path+=dir->getOutputFileBase();
       path+="_dep.dot";
       out << "<h4>" << dir->displayName() << "</h4>" << endl;
-      out << "<img src=\"" << dir->getOutputFileBase() << "_dep.gif\">" << endl;
+      out << "<img src=\"";
+      
+      if( Config_getBool("HTML_CMS_EMBEDDING") )
+      {
+    	  out << Config_getString("HTML_CMS_IMAGEPREFIX");
+      }
+      
+      out << dir->getOutputFileBase() << "_dep.gif\">" << endl;
       QFile f(path);
       if (f.open(IO_WriteOnly))
       {
Index: P:/workspace/Doxygen2/src/ftvhelp.h
===================================================================
--- P:/workspace/Doxygen2/src/ftvhelp.h	(revision 629)
+++ P:/workspace/Doxygen2/src/ftvhelp.h	(working copy)
@@ -27,6 +27,7 @@
 #include "qtbc.h"
 #include <qtextstream.h>
 #include <qlist.h>
+#include <qcstring.h>
 #include "index.h"
 
 class QFile;
@@ -57,11 +58,13 @@
 #define FTVIMG_vertline    11
 
 #define FTV_S(name) #name
-#define FTV_ICON_FILE(name) "ftv2" FTV_S(name) ".png"
+#define FTV_ICON_FILE(name) QCString((Config_getBool("HTML_CMS_EMBEDDING")? \
+				Config_getString("HTML_CMS_IMAGEPREFIX"):QCString("")) + \
+				QCString("ftv2" FTV_S(name) ".png"))
 #define FTVIMG_INDEX(name) FTVIMG_ ## name
 #define FTV_INFO(name) ( image_info[FTVIMG_INDEX(name)] )
 #define FTV_IMGATTRIBS(name) \
-    "src=\"" FTV_ICON_FILE(name) "\" " \
+    "src=\"" << FTV_ICON_FILE(name) << "\" " \
     "alt=\"" << FTV_INFO(name).alt << "\" " \
     "width=" << FTV_INFO(name).width << " " \
     "height=" << FTV_INFO(name).height << " "
Index: P:/workspace/Doxygen2/src/filedef.cpp
===================================================================
--- P:/workspace/Doxygen2/src/filedef.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/filedef.cpp	(working copy)
@@ -605,7 +605,7 @@
 void FileDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
 {
   static bool createSubDirs=Config_getBool("CREATE_SUBDIRS");
-
+  
   ol.writeString("      <div class=\"navtab\">\n");
   ol.writeString("        <table>\n");
 
Index: P:/workspace/Doxygen2/src/config.l
===================================================================
--- P:/workspace/Doxygen2/src/config.l	(revision 629)
+++ P:/workspace/Doxygen2/src/config.l	(working copy)
@@ -3165,6 +3165,88 @@
                     "used. If set to NO the values of all tags below this one will be ignored. \n",
                     FALSE
                  );
+                 
+  //-----------------------------------------------------------------------------------------------
+  addInfo(  "CMS_EMBEDDING","Configuration::additions related to the cms embedding features   ");
+  //-----------------------------------------------------------------------------------------------
+  cb = addBool(
+                    "HTML_CMS_EMBEDDING",
+                    "The HTML_CMS_EMBEDDING option performs some processing on \n"
+                    "the doxygen generated html documentation making it easier. \n"
+                    "to embed doxygen into a CMS. This processing includes adding. \n"
+                    "custom preficies to image and page references and removal of \n"
+                    "the header and footer of the generated output. \n",
+                    FALSE
+                 );
+                 
+  cs = addString(   "HTML_CMS_PAGEPREFIX",
+                    "The value of HTML_CMS_PAGEPREFIX is added to each link in \n"
+		    "the documentation which references other documented members. \n"
+		    "The resulting string will contain the text of this variable followed \n"
+		    "by the filename which the link refers to. This can be used to \n"
+		    "create nonstandard methods for accessing pages from the documentation \n"
+		    "through the HTTP GET request method. \n"
+		    "Consider a HTML_CMS_PAGEPREFIX of: index.php?page= \n"
+		    "This will cause the generated documentation to generate all links to \n"
+		    "the main page as: index.php?page=index.html"
+                 );
+  cs->setDefaultValue("");
+  cs->addDependency("HTML_CMS_EMBEDDING");
+  
+  cs = addString(   "HTML_CMS_IMAGEPREFIX",
+                    "The value of HTML_CMS_IMAGEPREFIX is added to each link in \n"
+		    "the documentation which references images local to the documentation. \n"
+		    "The resulting string will contain the text of this variable followed \n"
+		    "by the filename of the image being referenced. This can be used to \n"
+		    "create nonstandard methods for accessing pages from the documentation \n"
+		    "through the HTTP GET request method. \n"
+		    "Consider a HTML_CMS_PAGEPREFIX of: index.php?image= \n"
+		    "This will cause the generated documentation to generate all links to \n"
+		    "the doxygen logo as: index.php?image=doxygen.png"
+                 );
+  cs->setDefaultValue("");
+  cs->addDependency("HTML_CMS_EMBEDDING");
+  
+  cl = addList( "HTML_CMS_SEARCHPARAMS",
+  				"A list of key value pairs in the form 'key=value'. Each key\n"
+  				"will be included as a hidden field in the search engine form\n"
+  				"with the associated value. This configuration option will only\n"
+  				"be used if the SEARCHENGINE configuration is set to YES."
+  			  );
+  cl->addDependency("SEARCHENGINE");
+  cl->addDependency("HTML_CMS_EMBEDDING");
+  
+  cs = addString( "HTML_CMS_SEARCHPAGE",
+                  "The page to be used for processing search results. This will\n"
+                  "only be used if both the SEARCHENGINE and HTML_CMS_EMBEDDING\n"
+                  "configuration options are set to YES."
+                );
+  cs->addDependency("SEARCHENGINE");
+  cs->addDependency("HTML_CMS_EMBEDDING");
+  
+  ce = addEnum(
+        "HTML_CMS_SEARCHMETHOD",
+        "This option controls the html request method used when performing \n"
+		"a search query. This option will only be used if both the SEARCHENGINE\n"
+        "and HTML_CMS_EMBEDDING configuration options are set to YES. The \n"
+        "available options are post and get. 'get' is used by default.",
+        "get"
+       );
+  ce->addValue("get");
+  ce->addValue("post");
+  ce->addDependency("SEARCHENGINE");
+  ce->addDependency("HTML_CMS_EMBEDDING");
+                 
+  cs = addString( "HTML_CMS_SEARCHFIELD",
+                  "The form field name to use for the text of the search query.\n"
+                  "This option will only be used if both the SEARCHENGINE and \n"
+                  "HTML_CMS_EMBEDDING configuration options are set to YES.\n"
+                  "By default the field will be named 'query'."
+                );
+  cs->setDefaultValue("query");
+  cs->addDependency("SEARCHENGINE");
+  cs->addDependency("HTML_CMS_EMBEDDING");
+  
   addObsolete("CGI_NAME");
   addObsolete("CGI_URL");
   addObsolete("DOC_URL");
Index: P:/workspace/Doxygen2/src/util.h
===================================================================
--- P:/workspace/Doxygen2/src/util.h	(revision 629)
+++ P:/workspace/Doxygen2/src/util.h	(working copy)
@@ -25,6 +25,7 @@
 #include "qtbc.h"
 #include <qlist.h>
 #include <qtextstream.h>
+#include <qmap.h>
 #include <ctype.h>
 #include "sortdict.h"
 
@@ -130,6 +131,7 @@
                    );
 
 QCString getFileFilter(const char* name);
+QMap<QCString,QCString> getSearchParameters();
 
 bool resolveRef(/* in */  const char *scName,
                 /* in */  const char *name,
Index: P:/workspace/Doxygen2/src/ftvhelp.cpp
===================================================================
--- P:/workspace/Doxygen2/src/ftvhelp.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/ftvhelp.cpp	(working copy)
@@ -493,6 +493,10 @@
     {
       if ((dest=Doxygen::tagDestinationDict[n->ref])) t << *dest << "/";
     }
+    else if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+    	t << Config_getString("HTML_CMS_PAGEPREFIX");
+    }
     t << n->file << Doxygen::htmlFileExtension;
     if (!n->anchor.isEmpty()) t << "#" << n->anchor;
     if (m_topLevelIndex)
@@ -651,10 +655,10 @@
   t << "      var folder = document.getElementById(id);\n";
   t << "      var l = imageNode.src.length;\n";
   /* If the user clicks on the book icon, we move left one image so 
-   * the code (below) will also adjust the '+' icon. 
+   * the code (below) will also adjust the '+' icon.
    */
-  t << "      if (imageNode.src.substring(l-20,l)==\"" FTV_ICON_FILE(folderclosed) "\" || \n";
-  t << "          imageNode.src.substring(l-18,l)==\"" FTV_ICON_FILE(folderopen)  "\")\n";
+  t << "      if (imageNode.src.substring(l-20,l)==\"" << FTV_ICON_FILE(folderclosed) << "\" || \n";
+  t << "          imageNode.src.substring(l-18,l)==\"" << FTV_ICON_FILE(folderopen) << "\")\n";
   t << "      {\n";
   t << "        imageNode = imageNode.previousSibling;\n";
   t << "        l = imageNode.src.length;\n";
@@ -667,14 +671,14 @@
   t << "      {\n";
   t << "        if (imageNode != null) \n";
   t << "        {\n";
-  t << "          imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderclosed) "\";\n";
-  t << "          if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(mnode) "\")\n";
+  t << "          imageNode.nextSibling.src = \"" << FTV_ICON_FILE(folderclosed) << "\";\n";
+  t << "          if (imageNode.src.substring(l-13,l) == \"" << FTV_ICON_FILE(mnode) << "\")\n";
   t << "          {\n";
-  t << "            imageNode.src = \"" FTV_ICON_FILE(pnode) "\";\n";
+  t << "            imageNode.src = \"" << FTV_ICON_FILE(pnode) << "\";\n";
   t << "          }\n";
-  t << "          else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(mlastnode) "\")\n";
+  t << "          else if (imageNode.src.substring(l-17,l) == \"" << FTV_ICON_FILE(mlastnode) << "\")\n";
   t << "          {\n";
-  t << "            imageNode.src = \"" FTV_ICON_FILE(plastnode) "\";\n";
+  t << "            imageNode.src = \"" << FTV_ICON_FILE(plastnode) << "\";\n";
   t << "          }\n";
   t << "        }\n";
   t << "        folder.style.display = \"none\";\n";
@@ -683,14 +687,14 @@
   t << "      {\n";
   t << "        if (imageNode != null) \n";
   t << "        {\n";
-  t << "          imageNode.nextSibling.src = \"" FTV_ICON_FILE(folderopen) "\";\n";
-  t << "          if (imageNode.src.substring(l-13,l) == \"" FTV_ICON_FILE(pnode) "\")\n";
+  t << "          imageNode.nextSibling.src = \"" << FTV_ICON_FILE(folderopen) << "\";\n";
+  t << "          if (imageNode.src.substring(l-13,l) == \"" << FTV_ICON_FILE(pnode) << "\")\n";
   t << "          {\n";
-  t << "            imageNode.src = \"" FTV_ICON_FILE(mnode) "\";\n";
+  t << "            imageNode.src = \"" << FTV_ICON_FILE(mnode) << "\";\n";
   t << "          }\n";
-  t << "          else if (imageNode.src.substring(l-17,l) == \"" FTV_ICON_FILE(plastnode) "\")\n";
+  t << "          else if (imageNode.src.substring(l-17,l) == \"" << FTV_ICON_FILE(plastnode) << "\")\n";
   t << "          {\n";
-  t << "            imageNode.src = \"" FTV_ICON_FILE(mlastnode) "\";\n";
+  t << "            imageNode.src = \"" << FTV_ICON_FILE(mlastnode) << "\";\n";
   t << "          }\n";
   t << "        }\n";
   t << "        folder.style.display = \"block\";\n";
Index: P:/workspace/Doxygen2/src/classdef.cpp
===================================================================
--- P:/workspace/Doxygen2/src/classdef.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/classdef.cpp	(working copy)
@@ -1588,7 +1588,7 @@
 void ClassDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
 {
   static bool createSubDirs=Config_getBool("CREATE_SUBDIRS");
-
+  
   ol.writeString("      <div class=\"navtab\">\n");
   ol.writeString("        <table>\n");
 
Index: P:/workspace/Doxygen2/src/searchindex.cpp
===================================================================
--- P:/workspace/Doxygen2/src/searchindex.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/searchindex.cpp	(working copy)
@@ -72,7 +72,12 @@
 {
   if (name==0 || baseName==0) return;
   //printf("SearchIndex::setCurrentDoc(%s,%s,%s)\n",name,baseName,anchor);
+
   QCString url=baseName+Config_getString("HTML_FILE_EXTENSION");
+  
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  url = Config_getString("HTML_CMS_PAGEPREFIX") + url;
+  
   if (anchor) url+=(QCString)"#"+anchor;  
   m_urlIndex++;
   m_urls.insert(m_urlIndex,new URL(name,url));
Index: P:/workspace/Doxygen2/src/htmlgen.cpp
===================================================================
--- P:/workspace/Doxygen2/src/htmlgen.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/htmlgen.cpp	(working copy)
@@ -347,110 +347,6 @@
 static unsigned int tab_r_gif_len = 2585;
 
 
-static const char tabs_css[] = 
-"/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */\n"
-"\n"
-"DIV.tabs\n"
-"{\n"
-"   float            : left;\n"
-"   width            : 100%;\n"
-"   background       : url(\"tab_b.gif\") repeat-x bottom;\n"
-"   margin-bottom    : 4px;\n"
-"}\n"
-"\n"
-"DIV.tabs UL\n"
-"{\n"
-"   margin           : 0px;\n"
-"   padding-left     : 10px;\n"
-"   list-style       : none;\n"
-"}\n"
-"\n"
-"DIV.tabs LI, DIV.tabs FORM\n"
-"{\n"
-"   display          : inline;\n"
-"   margin           : 0px;\n"
-"   padding          : 0px;\n"
-"}\n"
-"\n"
-"DIV.tabs FORM\n"
-"{\n"
-"   float            : right;\n"
-"}\n"
-"\n"
-"DIV.tabs A\n"
-"{\n"
-"   float            : left;\n"
-"   background       : url(\"tab_r.gif\") no-repeat right top;\n"
-"   border-bottom    : 1px solid #84B0C7;\n"
-"   font-size        : x-small;\n"
-"   font-weight      : bold;\n"
-"   text-decoration  : none;\n"
-"}\n"
-"\n"
-"DIV.tabs A:hover\n"
-"{\n"
-"   background-position: 100% -150px;\n"
-"}\n"
-"\n"
-"DIV.tabs A:link, DIV.tabs A:visited,\n"
-"DIV.tabs A:active, DIV.tabs A:hover\n"
-"{\n"
-"       color: #1A419D;\n"
-"}\n"
-"\n"
-"DIV.tabs SPAN\n"
-"{\n"
-"   float            : left;\n"
-"   display          : block;\n"
-"   background       : url(\"tab_l.gif\") no-repeat left top;\n"
-"   padding          : 5px 9px;\n"
-"   white-space      : nowrap;\n"
-"}\n"
-"\n"
-"DIV.tabs INPUT\n"
-"{\n"
-"   float            : right;\n"
-"   display          : inline;\n"
-"   font-size        : 1em;\n"
-"}\n"
-"\n"
-"DIV.tabs TD\n"
-"{\n"
-"   font-size        : x-small;\n"
-"   font-weight      : bold;\n"
-"   text-decoration  : none;\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n"
-"DIV.tabs SPAN {float : none;}\n"
-"/* End IE5-Mac hack */\n"
-"\n"
-"DIV.tabs A:hover SPAN\n"
-"{\n"
-"   background-position: 0% -150px;\n"
-"}\n"
-"\n"
-"DIV.tabs LI.current A\n"
-"{\n"
-"   background-position: 100% -150px;\n"
-"   border-width     : 0px;\n"
-"}\n"
-"\n"
-"DIV.tabs LI.current SPAN\n"
-"{\n"
-"   background-position: 0% -150px;\n"
-"   padding-bottom   : 6px;\n"
-"}\n"
-"\n"
-"DIV.navpath\n"
-"{\n"
-"   background       : none;\n"
-"   border           : none;\n"
-"   border-bottom    : 1px solid #84B0C7;\n"
-"}\n"
-;
 
 struct tab_data_item
 {
@@ -464,7 +360,6 @@
   { "tab_b.gif", tab_b_gif, tab_b_gif_len },
   { "tab_l.gif", tab_l_gif, tab_l_gif_len },
   { "tab_r.gif", tab_r_gif, tab_r_gif_len },
-  { "tabs.css",  (unsigned char *)tabs_css, 0 }, 
   { 0, 0, 0 }
 };
 
@@ -487,6 +382,144 @@
     }
     data++;
   }
+  
+  // write tabs.css file manually so we can replace some image names
+  // where applicable
+  QCString fileName;
+  fileName = (QCString)dir + "/tabs.css";
+  QFile f(fileName);
+  if( f.open(IO_WriteOnly))
+  {
+	  QTextStream s(&f);
+	  
+	  s << "/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */\n";
+	  s << "\n";
+	  s << "DIV.tabs\n";
+	  s << "{\n";
+	  s << "   float            : left;\n";
+	  s << "   width            : 100%;\n";
+	  s << "   background       : url(\"";
+	  
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+		  s << Config_getString("HTML_CMS_IMAGEPREFIX");
+	  }
+	  
+	  s << "tab_b.gif\") repeat-x bottom;\n";
+	  s << "   margin-bottom    : 4px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs UL\n";
+	  s << "{\n";
+	  s << "   margin           : 0px;\n";
+	  s << "   padding-left     : 10px;\n";
+	  s << "   list-style       : none;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs LI, DIV.tabs FORM\n";
+	  s << "{\n";
+	  s << "   display          : inline;\n";
+	  s << "   margin           : 0px;\n";
+	  s << "   padding          : 0px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs FORM\n";
+	  s << "{\n";
+	  s << "   float            : right;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs A\n";
+	  s << "{\n";
+	  s << "   float            : left;\n";
+	  s << "   background       : url(\"";
+
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+		  s << Config_getString("HTML_CMS_IMAGEPREFIX");
+	  }
+	  
+	  s << "tab_r.gif\") no-repeat right top;\n";
+	  s << "   border-bottom    : 1px solid #84B0C7;\n";
+	  s << "   font-size        : x-small;\n";
+	  s << "   font-weight      : bold;\n";
+	  s << "   text-decoration  : none;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs A:hover\n";
+	  s << "{\n";
+	  s << "   background-position: 100% -150px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs A:link, DIV.tabs A:visited,\n";
+	  s << "DIV.tabs A:active, DIV.tabs A:hover\n";
+	  s << "{\n";
+	  s << "       color: #1A419D;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs SPAN\n";
+	  s << "{\n";
+	  s << "   float            : left;\n";
+	  s << "   display          : block;\n";
+	  s << "   background       : url(\"";
+
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+		  s << Config_getString("HTML_CMS_IMAGEPREFIX");
+	  }
+	  
+	  s << "tab_l.gif\") no-repeat left top;\n";
+	  s << "   padding          : 5px 9px;\n";
+	  s << "   white-space      : nowrap;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs INPUT\n";
+	  s << "{\n";
+	  s << "   float            : right;\n";
+	  s << "   display          : inline;\n";
+	  s << "   font-size        : 1em;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs TD\n";
+	  s << "{\n";
+	  s << "   font-size        : x-small;\n";
+	  s << "   font-weight      : bold;\n";
+	  s << "   text-decoration  : none;\n";
+	  s <<  "}\n";
+	  s << "\n";
+	  s << "\n";
+	  s << "\n";
+	  s << "/* Commented Backslash Hack hides rule from IE5-Mac \\*/\n";
+	  s << "DIV.tabs SPAN {float : none;}\n";
+	  s << "/* End IE5-Mac hack */\n";
+	  s << "\n";
+	  s << "DIV.tabs A:hover SPAN\n";
+	  s << "{\n";
+	  s << "   background-position: 0% -150px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs LI.current A\n";
+	  s << "{\n";
+	  s << "   background-position: 100% -150px;\n";
+	  s << "   border-width     : 0px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.tabs LI.current SPAN\n";
+	  s << "{\n";
+	  s << "   background-position: 0% -150px;\n";
+	  s << "   padding-bottom   : 6px;\n";
+	  s << "}\n";
+	  s << "\n";
+	  s << "DIV.navpath\n";
+	  s << "{\n";
+	  s << "   background       : none;\n";
+	  s << "   border           : none;\n";
+	  s << "   border-bottom    : 1px solid #84B0C7;\n";
+	  s << "}\n";
+  }
+  else
+  {
+      fprintf(stderr,"Warning: Cannot open file tabs.css for writing\n");	  
+  }
 }
 
 //------------------------------------------------------------------------
@@ -539,11 +572,22 @@
     g_header=fileToString(Config_getString("HTML_HEADER"));
     //printf("g_header='%s'\n",g_header.data());
   }
+  else  
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  g_header = "<!-- BEGIN CMS EMBEDDED DOCUMENTATION, GENERATED BY DOXYGEN -->\n";
+  }
+  
   if (!Config_getString("HTML_FOOTER").isEmpty()) 
   {
     g_footer=fileToString(Config_getString("HTML_FOOTER"));
     //printf("g_footer='%s'\n",g_footer.data());
   }
+  else  
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  g_footer = "<!-- END CMS EMBEDDED DOCUMENTATION, GENERATED BY DOXYGEN -->\n";
+  }
   createSubDirs(d);
 
   //if (Config_getBool("HTML_FANCY_TABS"))
@@ -610,8 +654,15 @@
   QTextStream t(&file);
   t << "<hr size=\"1\"><address style=\"text-align: right;\"><small>\n";
   t << theTranslator->trGeneratedAt( "$datetime", "$projectname" );
-  t << "&nbsp;<a href=\"http://www.doxygen.org/index.html\">"
-    << "<img src=\"doxygen.png\" alt=\"doxygen\" " 
+  t << "&nbsp;<a href=\"http://www.doxygen.org/index.html\">";
+  t << "<img src=\"";  
+  // Places a custom prefix in front of doxygen logo
+  // for using addressing methods of a CMS
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  t << Config_getString("HTML_CMS_IMAGEPREFIX");
+  }  
+  t << "doxygen.png\" alt=\"doxygen\" " 
     << "align=\"middle\" border=\"0\">"
     << "</a> $doxygenversion";
   t << "</small></address>\n"
@@ -632,10 +683,14 @@
       "  var sectionDiv=document.getElementById('dynsection'+num);\n"
       "  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){\n"
       "    sectionDiv.style.display='block';\n"
-      "    button.src='" << relPath << "open.gif';\n"
+      "    button.src='" <<
+      (Config_getBool("HTML_CMS_EMBEDDING")?Config_getString("HTML_CMS_IMAGEPREFIX"):"") <<
+      relPath << "open.gif';\n"
       "  }else{\n"
       "    sectionDiv.style.display='none';\n"
-      "    button.src='" << relPath << "closed.gif';\n"
+      "    button.src='" <<
+      (Config_getBool("HTML_CMS_EMBEDDING")?Config_getString("HTML_CMS_IMAGEPREFIX"):"") <<
+      relPath << "closed.gif';\n"
       "  }\n"
       "}\n"
       "function initDynSections(){\n"
@@ -654,7 +709,9 @@
       "      header.style.cursor='pointer';\n"
       "      header.onclick=changeDisplayState;\n"
       "      header.id='dynheader'+sectionCounter;\n"
-      "      button.src='" << relPath << "closed.gif';\n"
+      "      button.src='" <<
+      (Config_getBool("HTML_CMS_EMBEDDING")?Config_getString("HTML_CMS_IMAGEPREFIX"):"") <<
+      relPath << "closed.gif';\n"
       "      section.id='dynsection'+sectionCounter;\n"
       "      section.style.display='none';\n"
       "      section.style.marginLeft='14px';\n"
@@ -720,7 +777,14 @@
         Config_getString("PROJECT_NAME")
         );
     t << "&nbsp;" << endl << "<a href=\"http://www.doxygen.org/index.html\">";
-    t << endl << "<img src=\"" << relPath << "doxygen.png\" alt=\"doxygen\" " 
+    t << endl << "<img src=\"";
+    // Places a custom prefix in front of doxygen logo
+    // for using addressing methods of a CMS
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  t << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }    
+    t << relPath << "doxygen.png\" alt=\"doxygen\" " 
       << "align=\"middle\" border=\"0\">" << "</a> " << versionString << " ";
     t << "</small></address>";
     if (Debug::isFlagSet(Debug::Validate))
@@ -841,6 +905,7 @@
 {
   //printf("HtmlGenerator::startIndexItem(%s,%s)\n",ref,f);
   QCString *dest;
+  
   t << "<li>";
   if (ref || f)
   {
@@ -862,6 +927,14 @@
     }
     else
     {
+	  // Places a custom prefix in front of whatever we are
+	  // linking to so we adhere to get request convetions of
+      // a CMS
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+		  t << Config_getString("HTML_CMS_PAGEPREFIX");
+	  }
+	  
       t << relPath;
     }
     if (f) t << f << Doxygen::htmlFileExtension << "\">";
@@ -890,7 +963,18 @@
 {
   t << "<li>";
   if (path) docify(path);
-  t << "<a class=\"el\" href=\"" << f << Doxygen::htmlFileExtension << "\">";
+  
+  t << "<a class=\"el\" href=\"";
+
+  // Places a custom prefix in front of whatever we
+  // are linking to to adhere to the get request
+  // conventions of a CMS
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  t << Config_getString("HTML_CMS_PAGEPREFIX");
+  }
+  
+  t << f << Doxygen::htmlFileExtension << "\">";
   docify(name);
   t << "</a> ";
 }
@@ -899,6 +983,7 @@
                                     const char *anchor, const char *name)
 {
   QCString *dest;
+ 
   if (ref) 
   {
     t << "<a class=\"elRef\" ";
@@ -917,6 +1002,13 @@
   }
   else
   {
+    // Places a custom prefix in front of whatever we
+    // are linking to to adhere to the html get request
+    // conventions of a CMS
+	if( Config_getBool("HTML_CMS_EMBEDDING") )
+	{
+	  t << Config_getString("HTML_CMS_PAGEPREFIX");
+	}
     t << relPath;
   }
   if (f) t << f << Doxygen::htmlFileExtension;
@@ -932,6 +1024,7 @@
 {
   QCString *dest;
   //printf("writeCodeLink(ref=%s,f=%s,anchor=%s,name=%s,tooltip=%s)\n",ref,f,anchor,name,tooltip);
+  
   if (ref) 
   {
     t << "<a class=\"codeRef\" ";
@@ -950,6 +1043,13 @@
   }
   else
   {
+    // Places a custom prefix in front of whatever we
+    // are linking to to adhere to the html get request
+    // conventions of a CMS
+	if( Config_getBool("HTML_CMS_EMBEDDING") )
+	{
+	  t << Config_getString("HTML_CMS_PAGEPREFIX");
+	}
     t << relPath;
   }
   if (f) t << f << Doxygen::htmlFileExtension;
@@ -963,9 +1063,19 @@
 }
 
 void HtmlGenerator::startTextLink(const char *f,const char *anchor)
-{
+{  
   t << "<a href=\"";
-  if (f)   t << relPath << f << Doxygen::htmlFileExtension;
+  if (f)   
+  {
+      // Places a custom prefix in front of whatever we
+      // are linking to to adhere to the html get request
+      // conventions of a CMS
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+	    t << Config_getString("HTML_CMS_PAGEPREFIX");
+	  }
+	  t << relPath << f << Doxygen::htmlFileExtension;
+  }
   if (anchor) t << "#" << anchor;
   t << "\">"; 
 }
@@ -1124,8 +1234,12 @@
 {
   t << "</div>" << endl;
   t << "<div class=\"dynsection\">" << endl;
-  t << "\n<p><center><img src=\""
-    << relPath << fileName << ".png\" usemap=\"#" << name << "_map\""
+  t << "\n<p><center><img src=\"";
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  t << Config_getString("HTML_CMS_IMAGEPREFIX");
+  }
+  t << relPath << fileName << ".png\" usemap=\"#" << name << "_map\""
     << " border=\"0\" alt=\"\"></center>" << endl
     << "<map name=\"" << name << "_map\">" << endl;
 
@@ -1499,7 +1613,9 @@
   if (Config_getBool("GENERATE_LEGEND"))
   {
     t << "<center><font size=\"2\">[";
-    startHtmlLink(relPath+"graph_legend"+Doxygen::htmlFileExtension);
+    startHtmlLink((Config_getBool("HTML_CMS_EMBEDDING")?
+    	Config_getString("HTML_CMS_PAGEPREFIX"):"")+
+    	relPath+"graph_legend"+Doxygen::htmlFileExtension);
     t << theTranslator->trLegend();
     endHtmlLink();
     t << "]</font></center>";
@@ -1712,10 +1828,20 @@
 static void startQuickIndexItem(QTextStream &t,const char *l,
                                 bool hl,bool /*compact*/,
                                 const QCString &relPath)
-{
+{	  
   t << "      <li"; if (hl) t << " class=\"current\"";
   t << "><a ";
-  t << "href=\"" << relPath << l << "\">";
+  t << "href=\"";
+
+  // Places a custom prefix in front of whatever we
+  // are linking to to adhere to the html get request
+  // conventions of a CMS
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+    t << Config_getString("HTML_CMS_PAGEPREFIX");
+  }
+  
+  t << relPath << l << "\">";
   t << "<span>";
 }
 
@@ -1997,21 +2123,61 @@
 
   if (Config_getBool("SEARCHENGINE"))
   {
-    QCString searchFor = fixSpaces(theTranslator->trSearchForIndex());
-    if (searchFor.at(0)=='S') searchFor="<u>S</u>"+searchFor.mid(1);
-    t << "    <li>\n";
-    t << "      <form action=\"" << relPath << "search.php\" method=\"get\">\n";
-    t << "        <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
-    t << "          <tr>\n";
-    t << "            <td><label>&nbsp;" << searchFor << "&nbsp;</label></td>\n";
-    if (hli!=HLI_Search)
-    {
-      t << "            <td><input type=\"text\" name=\"query\" value=\"\" size=\"20\" accesskey=\"s\"/></td>\n";
-      t << "          </tr>\n";
-      t << "        </table>\n";
-      t << "      </form>\n";
-      t << "    </li>\n";
-    }
+	  if( Config_getBool("HTML_CMS_EMBEDDING") )
+	  {
+	      QCString searchFor = fixSpaces(theTranslator->trSearchForIndex());
+	      if (searchFor.at(0)=='S') searchFor="<u>S</u>"+searchFor.mid(1);
+	      t << "    <li>\n";
+	      t << "      <form action=\"";
+	      t << Config_getString("HTML_CMS_SEARCHPAGE") << "\" method=\"";
+	      t << Config_getEnum("HTML_CMS_SEARCHMETHOD");
+	      t << "\">\n";
+	      t << "        <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
+	      t << "          <tr>\n";
+	      t << "            <td><label>&nbsp;" << searchFor << "&nbsp;</label></td>\n";
+
+		  QMap<QCString,QCString> l_params = getSearchParameters();
+		  QMap<QCString,QCString>::Iterator l_iterator;
+    	  for( l_iterator = l_params.begin() ; 
+    	    l_iterator != l_params.end() ;
+    	    l_iterator++ )
+    	  {
+    	    t << "            <input type=\"hidden\"";
+    	    t << "name=\"" << l_iterator.key() << "\" ";
+    	    t << "value=\"" << l_iterator.data() << "\" ";
+    	    t << "/>\n";
+    	  }
+	    	
+	      if (hli!=HLI_Search)
+	      {
+	        t << "            <td><input type=\"text\"";
+	        t << "name=\"" << Config_getString("HTML_CMS_SEARCHFIELD") << "\" ";
+	        t << "value=\"\" size=\"20\" accesskey=\"s\"/></td>\n";
+	        t << "          </tr>\n";
+	        t << "        </table>\n";
+	        t << "      </form>\n";
+	        t << "    </li>\n";
+	      }
+	  }
+	  else
+	  {
+	     QCString searchFor = fixSpaces(theTranslator->trSearchForIndex());
+	     if (searchFor.at(0)=='S') searchFor="<u>S</u>"+searchFor.mid(1);
+	     t << "    <li>\n";
+	     t << "      <form action=\"";
+	     t << relPath << "search.php\" method=\"get\">\n";
+	     t << "        <table cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n";
+	     t << "          <tr>\n";
+	     t << "            <td><label>&nbsp;" << searchFor << "&nbsp;</label></td>\n";
+	     if (hli!=HLI_Search)
+	     {
+	       t << "            <td><input type=\"text\" name=\"query\" value=\"\" size=\"20\" accesskey=\"s\"/></td>\n";
+	       t << "          </tr>\n";
+	       t << "        </table>\n";
+	       t << "      </form>\n";
+	       t << "    </li>\n";
+	     }
+	  }
   } 
   if (hli!=HLI_Search) // on the search page the page will be ended by the
                        // page itself
@@ -2106,8 +2272,30 @@
       else
       {
         t << "&nbsp;\n<div class=\"qindex\">\n";
-        t << "  <form class=\"search\" action=\"search.php\" "
-          << "method=\"get\">\n";
+        if( Config_getBool("HTML_CMS_EMBEDDING") )
+        {
+        	// TODO: This has not actually been tested
+        	t << " <form class=\"search\" action=\"" << Config_getString("HTML_CMS_SEARCHPAGE") 
+        	  << "\" method=\"" << Config_getEnum("HTML_CMS_SEARCHMETHOD") << "\">\n";
+        	
+        	// Write Hidden Parameters Of Search Query
+        	QMap<QCString,QCString> l_params = getSearchParameters();
+		    QMap<QCString,QCString>::Iterator l_iterator;
+		    for( l_iterator = l_params.begin() ; 
+		      l_iterator != l_params.end() ;
+		      l_iterator++ )
+		    {
+		      t << "            <input type=\"hidden\"";
+		      t << "name=\"" << l_iterator.key() << "\" ";
+		      t << "value=\"" << l_iterator.data() << "\" ";
+		      t << "/>\n";
+		    }	    	
+        }
+        else
+        {
+        	t << "  <form class=\"search\" action=\"search.php\" "
+        	  << "method=\"get\">\n";
+        }
       }
 
       t << "\n<?php\n\n";
@@ -2139,7 +2327,9 @@
       t << "function end_form($value)\n";
       t << "{\n";
       t << "  echo \"" 
-        << "            <td><input type=\\\"text\\\" name=\\\"query\\\" value=\\\"$value\\\" size=\\\"20\\\" accesskey=\\\"s\\\"/></td>\\n"
+        << "            <td><input type=\\\"text\\\" name=\\\""
+        << (Config_getBool("HTML_CMS_EMBEDDING")?Config_getString("HTML_CMS_SEARCHFIELD"):"query")
+        << "\\\" value=\\\"$value\\\" size=\\\"20\\\" accesskey=\\\"s\\\"/></td>\\n"
         << "          </tr>\\n"
         << "        </table>\\n"
         << "      </form>\\n"
Index: P:/workspace/Doxygen2/src/htmldocvisitor.cpp
===================================================================
--- P:/workspace/Doxygen2/src/htmldocvisitor.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/htmldocvisitor.cpp	(working copy)
@@ -133,6 +133,10 @@
   if (m_hide) return;
   m_t << "<a href=\"";
   if (u->isEmail()) m_t << "mailto:";
+  
+  // TODO: Should the page prefix be added here, 
+  // these links are probably guaraunteed absolute
+  // addresses
   m_t << u->url() << "\">";
   filter(u->url());
   m_t << "</a>";
@@ -379,7 +383,12 @@
   m_t << "\"";
   /// @todo cache image dimensions on formula generation and give height/width
   /// for faster preloading and better rendering of the page
-  m_t << " src=\"" << f->relPath() << f->name() << ".png\">";
+  m_t << " src=\"";
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  m_t << Config_getString("HTML_CMS_IMAGEPREFIX");
+  }
+  m_t << f->relPath() << f->name() << ".png\">";
   if (bDisplay)
     m_t << endl << "<p>" << endl;
 }
@@ -755,6 +764,9 @@
 void HtmlDocVisitor::visitPre(DocHRef *href)
 {
   if (m_hide) return;
+  
+  // NOTE: DocHRef refers only to <A> tags placed by the
+  // user in the html documentation.
   m_t << "<a href=\"" << href->url()  << "\""
       << htmlAttribsToString(href->attribs()) << ">";
 }
@@ -790,7 +802,12 @@
       baseName=baseName.right(baseName.length()-i-1);
     }
     m_t << "<div align=\"center\">" << endl;
-    m_t << "<img src=\"" << img->relPath() << img->name() << "\" alt=\"" 
+    m_t << "<img src=\"";
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+  	  m_t << Config_getString("HTML_CMS_IMAGEPREFIX");
+    }
+    m_t << img->relPath() << img->name() << "\" alt=\"" 
       << baseName << "\"" << ">" << endl;
     if (img->hasCaption())
     {
@@ -880,8 +897,18 @@
   {
     refName+=Doxygen::htmlFileExtension;
   }
-  m_t << "<li><a href=\"" << refName << "#" << ref->anchor() << "\">";
+  
+  m_t << "<li><a href=\"";
 
+  // Places a custom prefix in front of whatever we
+  // are linking to to adhere to the html get request
+  // conventions of a CMS
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+    m_t << Config_getString("HTML_CMS_PAGEPREFIX");
+  }
+  
+  m_t << refName << "#" << ref->anchor() << "\">";
 }
 
 void HtmlDocVisitor::visitPost(DocSecRefItem *) 
@@ -1008,9 +1035,17 @@
   if (m_hide) return;
   bool anonymousEnum = x->file()=="@";
   if (!anonymousEnum)
-  {
-    m_t << "<dl compact><dt><b><a class=\"el\" href=\"" 
-        << x->relPath() << x->file() << Doxygen::htmlFileExtension 
+  {	  
+    m_t << "<dl compact><dt><b><a class=\"el\" href=\"";
+
+    // Places a custom prefix in front of whatever we
+    // are linking to to adhere to the html get request
+    // conventions of a CMS
+    if( Config_getBool("HTML_CMS_EMBEDDING") )
+    {
+      m_t << Config_getString("HTML_CMS_PAGEPREFIX");
+    }
+    m_t << x->relPath() << x->file() << Doxygen::htmlFileExtension 
         << "#" << x->anchor() << "\">";
   }
   else 
@@ -1126,7 +1161,7 @@
     m_t << "\" ";
   }
   else // local link
-  {
+  {	  
     m_t << "<a class=\"el\" ";
   }
   m_t << "href=\"";
@@ -1136,6 +1171,13 @@
   }
   else
   {
+	// Places a custom prefix in front of whatever we
+	// are linking to to adhere to the html get request
+	// conventions of a CMS
+	if( Config_getBool("HTML_CMS_EMBEDDING") )
+	{
+	  m_t << Config_getString("HTML_CMS_PAGEPREFIX");
+	}
     m_t << relPath;
   }
   if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension;
@@ -1176,7 +1218,12 @@
   writeDotGraphFromFile(fileName,outDir,baseName,BITMAP);
   QString mapName = baseName+".map";
   QString mapFile = fileName+".map";
-  m_t << "<img src=\"" << relPath << baseName << "." 
+  m_t << "<img src=\"";
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  m_t << Config_getString("HTML_CMS_IMAGEPREFIX");
+  }
+  m_t << relPath << baseName << "." 
     << Config_getEnum("DOT_IMAGE_FORMAT") << "\" alt=\""
     << baseName << "\" border=\"0\" usemap=\"#" << mapName << "\">" << endl;
   QString imap = getDotImageMapFromFile(fileName,outDir,relPath.data(),context);
@@ -1196,7 +1243,12 @@
   writeMscGraphFromFile(fileName,outDir,baseName,MSC_BITMAP);
   QString mapName = baseName+".map";
   QString mapFile = fileName+".map";
-  m_t << "<img src=\"" << relPath << baseName << ".png\" alt=\""
+  m_t << "<img src=\"";
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  m_t << Config_getString("HTML_CMS_IMAGEPREFIX");
+  }
+  m_t << relPath << baseName << ".png\" alt=\""
     << baseName << "\" border=\"0\" usemap=\"#" << mapName << "\">" << endl;
   QString imap = getMscImageMapFromFile(fileName,outDir,relPath.data(),context);
   m_t << "<map name=\"" << mapName << "\">" << imap << "</map>" << endl;
Index: P:/workspace/Doxygen2/src/search.php
===================================================================
--- P:/workspace/Doxygen2/src/search.php	(revision 629)
+++ P:/workspace/Doxygen2/src/search.php	(working copy)
@@ -271,11 +271,12 @@
 
 function main()
 {
+  $l_dir = dirname(__FILE__);
   if(strcmp('4.1.0', phpversion()) > 0) 
   {
     die("Error: PHP version 4.1.0 or above required!");
   }
-  if (!($file=fopen("search.idx","rb"))) 
+  if (!($file=fopen("$l_dir/search.idx","rb"))) 
   {
     die("Error: Search index file could NOT be opened!");
   }
Index: P:/workspace/Doxygen2/src/msc.cpp
===================================================================
--- P:/workspace/Doxygen2/src/msc.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/msc.cpp	(working copy)
@@ -72,6 +72,12 @@
         {
           if ((dest=Doxygen::tagDestinationDict[df->ref()])) t << *dest << "/";
         }
+        else
+        if( Config_getBool("HTML_CMS_EMBEDDING") )
+        {
+        	t << Config_getString("HTML_CMS_PAGEPREFIX");
+        }
+        
         if (!df->file().isEmpty()) t << relPath << df->file() << Doxygen::htmlFileExtension;
         if (!df->anchor().isEmpty()) t << "#" << df->anchor();
       }
Index: P:/workspace/Doxygen2/src/index.cpp
===================================================================
--- P:/workspace/Doxygen2/src/index.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/index.cpp	(working copy)
@@ -231,7 +231,11 @@
       ol.writeString("<a class=\"qindex\" ");
     }
   }
-  ol.writeString("href=\""); 
+  ol.writeString("href=\"");     
+  if( Config_getBool("HTML_CMS_EMBEDDING") )
+  {
+	  ol.writeString(Config_getString("HTML_CMS_PAGEPREFIX"));
+  }
   ol.writeString(l);
   ol.writeString("\">");
   if (fancyTabs)
Index: P:/workspace/Doxygen2/src/groupdef.cpp
===================================================================
--- P:/workspace/Doxygen2/src/groupdef.cpp	(revision 629)
+++ P:/workspace/Doxygen2/src/groupdef.cpp	(working copy)
@@ -844,7 +844,7 @@
 void GroupDef::writeQuickMemberLinks(OutputList &ol,MemberDef *currentMd) const
 {
   static bool createSubDirs=Config_getBool("CREATE_SUBDIRS");
-
+  
   ol.writeString("      <div class=\"navtab\">\n");
   ol.writeString("        <table>\n");
 
Index: P:/workspace/Doxygen2/src/search_php.h
===================================================================
--- P:/workspace/Doxygen2/src/search_php.h	(revision 629)
+++ P:/workspace/Doxygen2/src/search_php.h	(working copy)
@@ -271,11 +271,12 @@
 "\n"
 "function main()\n"
 "{\n"
+"  $l_dir = dirname(__FILE__);\n"
 "  if(strcmp('4.1.0', phpversion()) > 0) \n"
 "  {\n"
 "    die(\"Error: PHP version 4.1.0 or above required!\");\n"
 "  }\n"
-"  if (!($file=fopen(\"search.idx\",\"rb\"))) \n"
+"  if (!($file=fopen(\"$l_dir/search.idx\",\"rb\"))) \n"
 "  {\n"
 "    die(\"Error: Search index file could NOT be opened!\");\n"
 "  }\n"
Index: P:/workspace/Doxygen2/Doxyfile_Embedded
===================================================================
--- P:/workspace/Doxygen2/Doxyfile_Embedded	(revision 0)
+++ P:/workspace/Doxygen2/Doxyfile_Embedded	(revision 0)
@@ -0,0 +1,15 @@
+# Doxyfile 1.5.4
+#
+@INCLUDE = Doxyfile
+HTML_OUTPUT            = embedded_html
+GENERATE_LATEX         = NO
+#---------------------------------------------------------------------------
+# CMS EMBEDDING OPTIONS
+#---------------------------------------------------------------------------
+HTML_CMS_EMBEDDING=YES
+HTML_CMS_PAGEPREFIX=embedded_docs.php?type=page&file=
+HTML_CMS_IMAGEPREFIX=embedded_docs.php?type=image&file=
+HTML_CMS_SEARCHPARAMS = type=search \
+			file=search.php
+HTML_CMS_SEARCHPAGE = embedded_docs.php
+HTML_CMS_SEARCHMETHOD = get
Index: P:/workspace/Doxygen2/doc/Doxyfile
===================================================================
--- P:/workspace/Doxygen2/doc/Doxyfile	(revision 629)
+++ P:/workspace/Doxygen2/doc/Doxyfile	(working copy)
@@ -36,7 +36,7 @@
                     autolink.doc output.doc custcmd.doc external.doc faq.doc trouble.doc history.doc features.doc \
 		    doxygen_usage.doc doxytag_usage.doc \
                     doxywizard_usage.doc installdox_usage.doc \
-		    config.doc commands.doc htmlcmds.doc xmlcmds.doc language.doc \
+		    config.doc commands.doc htmlcmds.doc xmlcmds.doc language.doc embedded_html.doc\
                     perlmod.doc perlmod_tree.doc arch.doc 
 FILE_PATTERNS     = *.cpp *.h *.doc
 EXAMPLE_PATH      = ../examples
Index: P:/workspace/Doxygen2/doc/embedded_html.doc
===================================================================
--- P:/workspace/Doxygen2/doc/embedded_html.doc	(revision 0)
+++ P:/workspace/Doxygen2/doc/embedded_html.doc	(revision 0)
@@ -0,0 +1,257 @@
+/******************************************************************************
+ *
+ * 
+ *
+ * Copyright (C) 1997-2008 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby 
+ * granted. No representations are made about the suitability of this software 
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ */
+/*! \page embedding_html HTML Embedding 
+
+\ref embedded_html_config_one HTML_CMS_EMBEDDING
+
+\ref embedded_html_config_two HTML_CMS_PAGEPREFIX
+
+\ref embedded_html_config_three HTML_CMS_IMAGEPREFIX
+
+\ref embedded_html_config_four HTML_CMS_SEARCHPARAMS
+
+\ref embedded_html_config_five HTML_CMS_SEARCHPAGE
+
+\ref embedded_html_config_six HTML_CMS_SEARCHMETHOD
+
+\ref embedded_html_config_seven HTML_CMS_SEARCHFIELD
+
+\ref embedded_html_stylesheets Notes On Stylesheets
+
+Doxygen has the ability to adapt to many of the different linking
+formats which might be used by content management systems(CMS),
+dynamic, or template based web pages. With the 
+\c HTML_CMS_EMBEDDING configuration option it is possible to
+adapt the doxygen generated html output to a format which
+can be leveraged by a CMS.
+
+The process of integrating doxygen with an existing content
+management system is beyond the scope of this manual. 
+However given a working knowledge of php and html
+it should be possible to take the concepts presented here
+and apply them to integrating doxygen into a dynamic
+web page.
+
+Doxygen has a set of configuration options which have been
+designed specifically for generating html documentation
+suitable for use in a CMS. There is a sample doxygen 
+configuration file labeled \c Doxyfile_Embedded in the
+project's root folder. A copy of the relevant section
+has been included below to illustrate the concepts
+behind embedding doxygen into your webpage.
+
+\code
+#--------------------------------------------------
+# CMS Embedding Options
+#--------------------------------------------------
+HTML_CMS_EMBEDDING    = YES                                 # (1)
+HTML_CMS_PAGEPREFIX   = embedded_docs.php?type=page&file=   # (2)
+HTML_CMS_IMAGEPREFIX  = embedded_docs.php?type=image&file=  # (3)
+HTML_CMS_SEARCHPARAMS = type=search file=search.php         # (4)
+HTML_CMS_SEARCHPAGE   = embedded_docs.php                   # (5)
+HTML_CMS_SEARCHMETHOD = get                                 # (6)
+HTML_CMS_SEARCHFIELD  = query                               # (7)
+\endcode
+
+Let's now look at each relevant line in the configuration file
+and see exactly what these options specify.
+
+\section embedded_html_config_one Line (1) - HTML_CMS_EMBEDDING
+
+ This is the most important setting in embedding doxygen generated
+documentation into your CMS. It instructs doxygen to refer to all
+files with respect to a fixed root filesystem. When the feature
+is enabled all paths are considered to be relative to a root folder
+which does not change as the user navigates the documentation. 
+
+Enabling this option also instructs doxygen to remove the html header
+and footers that are typically generated. The html files which are
+generated will consist only of the html elements which would normally
+be found inside the \c body tag of the original html elements.
+
+The configuration options \c HTML_HEADER and \c HTML_FOOTER can still
+be used if you wish to apply a header or footer to the html documention.
+The default header and footer have been removed because a CMS
+will typically generate the \c html, \c head, and \c body tags of the
+pages it provides, thus making those generated by doxygen redundant.
+
+\section embedded_html_config_two Line (2) - HTML_CMS_PAGEPREFIX
+
+ The \c HTML_CMS_PAGEPREFIX configuration option specifies a string
+which should be prefixed to all links generated by doxygen to other
+doxygen generated pages. The string provided in our example
+<tt>embedded_docs.php?type=page&file=</tt> specifies a link to the file 
+\c embedded_docs.php with parameters \c type and \c file. 
+
+You will find in the project root a file called \c embedded_docs.php
+which is a simple example written in php of embedding doxygen documentation
+into a dynamic web page. 
+
+Each of the links in the documentation generated using the settings
+above will have the contents of \c HTML_CMS_PAGEPREFIX in front
+of it:
+
+\verbatim
+<a href="classes.html">Classes</a>
+\endverbatim 
+
+will be changed to
+
+\verbatim
+<a href="embedded_docs.php?type=page&file=classes.html">Classes</a>
+\endverbatim
+
+The affect is that the file \c embedded_docs.php has control of 
+how to retrieve \c classes.html and where to place it in a
+potentially more complex weblayout.
+
+\section embedded_html_config_three Line (3) - HTML_CMS_IMAGEPREFIX
+
+ The \c HTML_CMS_IMAGEPREFIX option works much like \c HTML_CMS_PAGEPREFIX,
+however it applies to the images referenced in the doxygen documentation
+as opposed to pages. Each image will be translated to be a path relative
+to some root location, and with the file and parameters specified
+in the \c HTML_CMS_IMAGEPREFIX option, thus:
+
+\verbatim
+<img src="doxygen.png" />
+\endverbatim
+
+will become
+
+\verbatim
+<img src="embedded_docs.php?type=image&file=doxygen.png" />
+\endverbatim
+
+\section embedded_html_config_four Line (4) - HTML_CMS_SEARCHPARAMS
+
+ The \c HTML_CMS_SEARCHPARAMS option applies only to webpages which
+want to employ search facilities using doxygen's \c SEARCHENGINE 
+option. The search engine feature of doxygen embeds a form on
+each generated page containing a text box with which a user can
+perform a query on the documentation. The \c HTML_CMS_SEARCHPARAMS
+option makes it possible to add hidden fields to the search form,
+and thus it can be used to simplify identifying the search request
+sent by a web browser when being passed to a CMS.
+
+ In the example you can see that two key value pairs have been specified
+\c type=search and <tt>file=search.php</tt>. These two key value pairs are
+included in the resulting form as hidden form fields.
+
+\verbatim
+<input type="hidden" name="type" value="search" />
+<input type="hidden" name="file" value="search.php" />
+\endverbatim
+
+ Any number of key/value pairs may be specified, and just like all other
+lists in the doxygen configuration file, they are separated by whitespace.
+If you need to include spaces you may surround any of the key value pairs
+with quotes.
+
+\section embedded_html_config_five Line (5) - HTML_CMS_SEARCHPAGE
+
+ The \c HTML_CMS_SEARCHPAGE option indicates to the search engine
+which page to submit the search query to. This option controls
+the value of the \c action attribute of the SEARCH_ENGINE form.
+
+\section embedded_html_config_six Line (6) - HTML_CMS_SEARCHMETHOD
+
+ The \c HTML_CMS_SEARCHMETHOD option controls how the search engine
+form is submitted to the web server. This option controls the value
+of the \c method attribute of the form tag generated for the search
+engine. Legal values includes \c get and \c post which directly
+correspond with the meanings described in the HTML specification.
+
+\section embedded_html_config_seven Line (7) - HTML_CMS_SEARCHFIELD
+ The \c HTML_CMS_SEARCHFIELD option controls the name of the
+form field which contains the search query submitted by the user.
+
+The output resulting from all of the search engine parameters 
+in our example configuration should generate a search form
+that looks similar to:
+
+\verbatim
+<form action="embedded_docs.php" method="get">
+  <input type="hidden" name="type" value="search" />
+  <input type="hidden" name="file" value="search.php" />
+  <input type="text" name="query" value ="what to search for" />
+</form>
+\endverbatim
+
+None of the search related configuration options have any affect 
+unless the \c SEARCHENGINE option is also turned on. In many cases
+it may be necesarry to reimplement the functionality which
+is contained in the \c search.php file generated by doxygen
+to achieve the best results within your own CMS.
+
+\section embedded_html_stylesheets Notes On Stylesheets
+
+When generating your documentation doxygen by default will also
+generate two stylesheets \c doxygen.css and \c tabs.css. Each of
+these style sheets is then typically linked to by the generated
+html pages to properly format the doxygen documentation. 
+A CMS designed for use with doxygen may or may-not want to reuse
+these pregenerated stylesheets, and by enabling \c HTML_CMS_EMBEDDING
+the generated documentation no longer directly refers to them. 
+Doxygen however will still generate the stylesheets and will
+generate links to any images referenced using the same format
+as is done elsewhere in the documentation. Using these stylesheets
+A CMS has two options when servicing a request.
+
+The first option is to directly link to the stylesheets, and this implies
+that some relative address is used when linking to them. This will
+typically generate a link similar to:
+
+\verbatim
+<link rel="stylesheet" type="text/css" href="documentation/html/doxygen.css" />
+\endverbatim
+
+Using this method of linking stylesheets has a subtle issue when the
+\c HTML_CMS_IMAGEPREFIX option does not contain a fully
+qualified path. When a web browser interprets the above link and 
+retrieves the \c css file the working directory from which relative 
+paths are evaluated is the path of the location of the stylesheet. This 
+will cause links, similar to those generated by the example configuration,
+to incorrectly attempt to retrieve the file
+\c documentation/html/embedded_docs.php when processing the
+images which referenced in the CSS file.  A simple solution to 
+this is to use a fully qualified address for the 
+\c HTML_CMS_IMAGEPREFIX option. 
+
+If this isn't the right solution, it is also possible to link to the stylesheets
+through an intermediate page which is responsible for evaluating 
+the relative path to the documentation. Using this intermediate
+page, the CMS could link to the stylesheet using a link:
+
+\verbatim
+<link rel="stylesheet" type="text/css" href="getcss.php?file=doxygen.css" />
+\endverbatim
+
+where the \c getcss.php file is responsible for looking up the
+desired css file and sending it to a web client. A simple example
+might look as follows:
+
+\verbatim
+<?php
+  echo file_get_contents('documentation/html/' . $_GET['file']);
+?>
+\endverbatim
+
+The \c embedded_docs.php file contains another \c php example of 
+retrieving the css file in this way. 
+
+*/
Index: P:/workspace/Doxygen2/doc/config.doc
===================================================================
--- P:/workspace/Doxygen2/doc/config.doc	(revision 629)
+++ P:/workspace/Doxygen2/doc/config.doc	(working copy)
@@ -143,6 +143,13 @@
 \refitem cfg_hide_undoc_members HIDE_UNDOC_MEMBERS
 \refitem cfg_hide_undoc_relations HIDE_UNDOC_RELATIONS
 \refitem cfg_html_align_members HTML_ALIGN_MEMBERS
+\refitem cfg_embedded_html HTML_CMS_EMBEDDING
+\refitem cfg_embedded_html_imageprefix HTML_CMS_IMAGEPREFIX
+\refitem cfg_embedded_html_pageprefix HTML_CMS_PAGEPREFIX
+\refitem cfg_embedded_html_searchfield HTML_CMS_SEARCHFIELD
+\refitem cfg_embedded_html_searchmethod HTML_CMS_SEARCHMETHOD
+\refitem cfg_embedded_html_searchpage HTML_CMS_SEARCHPAGE
+\refitem cfg_embedded_html_searchparams HTML_CMS_SEARCHPARAMS
 \refitem cfg_html_dynamic_sections HTML_DYNAMIC_SECTIONS
 \refitem cfg_html_footer HTML_FOOTER
 \refitem cfg_html_header HTML_HEADER
@@ -2053,6 +2060,81 @@
  instructions).
 
 </dl>
+
+\section config_embedded_html Embedded HTML 
+\anchor cfg_embedded_html
+<dl>
+
+<dt>\c HTML_CMS_EMBEDDING <dd>
+ \addindex HTML_CMS_EMBEDDING
+ The \c HTML_CMS_EMBEDDING option can be used to enable features which simplify
+ embedding the doxygen generated HTML documentation into a content management
+ system or other website that makes use of a template engine. Legal values are
+ \c YES and \c NO. If set to \c YES then the most immediate change is the removal
+ of the standard header and footer. All elements which would typically be found
+ outside of the body tag in the html output will be removed. It is still possible
+ to use the \c HTML_HEADER and \c HTML_FOOTER options to add a custom header
+ or footer however. The use of relative paths \c (CREATE_SUBDIRS) is also 
+ immediately affected, and all paths will be generated relative to the root
+ folder of the documentation. \c '../../index.html' becomes \c 'index.html'.
+
+\anchor cfg_embedded_html_pageprefix
+<dt>\c HTML_CMS_PAGEPREFIX <dd>
+ \addindex HTML_CMS_PAGEPREFIX
+ The \c HTML_CMS_PAGEPREFIX option specifies a string to be placed in front of
+ all inter-documentation links in the generated HTML output. For the most reliable
+ results it is reccomended to use a fully qualified address (starting with http://)
+ however as described in the embedded html section of the manual this is not
+ strictly necesarry. This option has no affect on the generated documentation if
+ \c HTML_CMS_EMBEDDING is given the value \c NO.
+
+\anchor cfg_embedded_html_imageprefix
+<dt>\c HTML_CMS_IMAGEPREFIX <dd>
+ \addindex HTML_CMS_IMAGEPREFIX
+ The \c HTML_CMS_IMAGEPREFIX option specifies a string to be placed in front of
+ all images referenced by the documentation including logos, buttons and
+ diagrams. As with the \c HTML_CMS_PAGEPREFIX option it is reccomended that
+ a fully qualified web address (starting with http://) is used, however you may
+ wish to see the embedded html section of the manual for an alternative. This
+ option has no affect on the generated documentation if \c HTML_CMS_EMBEDDING is
+ given the value \c NO.
+
+\anchor cfg_embedded_html_searchparams
+<dt>\c HTML_CMS_SEARCHPARAMS <dd>
+ \addindex HTML_CMS_SEARCHPARAMS
+ The \c HTML_CMS_SEARCHPARAMS option is a list of key value pairs specified in the
+ format \c 'key=value'. Each key / value pair represents a hidden field to be included
+ in the form that is generated via the \c SEARCHENGINE option. If either the \c SEARCHENGINE
+ or \c HTML_CMS_EMBEDDING options is set to \c NO then this option will have no affect on
+ the resulting documentation. 
+
+\anchor cfg_embedded_html_searchpage
+<dt>\c HTML_CMS_SEARCHPAGE <dd>
+ \addindex HTML_CMS_SEARCHPAGE
+ The \c HTML_CMS_SEARCHPAGE option specifies the target of the form generated via
+ the \c SEARCHENGINE option. If either the \c SEARCHENGINE or \c HTML_CMS_EMBEDDING
+ options is set to \c NO then this option will have no affect on the resulting
+ documentation.
+
+\anchor cfg_embedded_html_searchmethod
+<dt>\c HTML_CMS_SEARCHMETHOD <dd>
+ \addindex HTML_CMS_SEARCHMETHOD
+ The \c HTML_CMS_SEARCHMETHOD option controls the method in which the form generated
+ via the \c SEARCHENGINE option is sent to the webserver. By default the \c get
+ method is used. Legal values are \c get and \c post. If either the \c SEARCHENGINE
+ or \c HTML_CMS_EMBEDDING options is set to \c NO then this option will have no 
+ affect on the resulting documentation.
+
+\anchor cfg_embedded_html_searchfield
+<dt>\c HTML_CMS_SEARCHFIELD <dd>
+ \addindex HTML_CMS_SEARCHFIELD
+ The \c HTML_CMS_SEARCHFIELD option controls the name of the form field which will
+ contain a search query. By default this value is \c query however any string legal
+ in the context of an html name attribute may be specified. If either the \c SEARCHENGINE
+ or \c HTML_CMS_EMBEDDING options is set to \c NO then this option will have no 
+ affect on the resulting documentation.
+</dl>
+
 <h2>Examples</h2>
 
 Suppose you have a simple project consisting of two files: a source file 
Index: P:/workspace/Doxygen2/doc/index.doc
===================================================================
--- P:/workspace/Doxygen2/doc/index.doc	(revision 629)
+++ P:/workspace/Doxygen2/doc/index.doc	(working copy)
@@ -79,6 +79,7 @@
 <li>Section \ref external explains how to let doxygen create links to externally generated documentation.
 <li>Section \ref faq gives answers to frequently asked questions. 
 <li>Section \ref trouble tells you what to do when you have problems.
+<li>Section \ref embedding_html a description of using doxygen's CMS embedding capabilities
 </ul>
 
 The second part forms a reference manual:
