### Eclipse Workspace Patch 1.0
#P moodle19
Index: theme/oceanblue/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/oceanblue/footer.html,v
retrieving revision 1.24
diff -u -r1.24 footer.html
--- theme/oceanblue/footer.html	24 Aug 2007 12:45:21 -0000	1.24
+++ theme/oceanblue/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,41 +1,40 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
-<div id="footer">
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php if ($navigation and false) { ?>
+
+    if ($navigation and false) { ?>
     <div class="navbar clearfix">
         <div class="breadcrumb"><?php print_navigation($navigation); ?></div>
         <div class="menu"><?php echo $menu; ?></div>
     </div>
-<?php } ?>
+<?php }
 
-<hr />
+    echo '<hr />';
+    echo $loggedinas;
+    echo $homelink;
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
 
-<?php if (!empty($performanceinfo)) {
-          echo $performanceinfo;
-} ?>
-
-<?php if (debugging()) {
-?>
+    if (debugging()) { ?>
         <div class="validators"><ul>
           <li><a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a></li>
         </ul></div>
-<?php } ?>
+<?php }
 
+    print_container_end();
+?>
 
 </div>
-</div>
 </body>
 </html>
Index: theme/oceanblue/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/oceanblue/header.html,v
retrieving revision 1.19
diff -u -r1.19 header.html
--- theme/oceanblue/header.html	24 Aug 2007 12:45:21 -0000	1.19
+++ theme/oceanblue/header.html	23 Nov 2007 16:19:39 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: blog/header.php
===================================================================
RCS file: /cvsroot/moodle/moodle/blog/header.php,v
retrieving revision 1.41.2.1
diff -u -r1.41.2.1 header.php
--- blog/header.php	11 Oct 2007 08:12:46 -0000	1.41.2.1
+++ blog/header.php	23 Nov 2007 16:19:26 -0000
@@ -8,10 +8,6 @@
 require_once($CFG->libdir .'/blocklib.php');
 require_once($CFG->dirroot .'/course/lib.php');
 
-if (!empty($THEME->customcorners)) {
-    require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-}
-
 $blockaction = optional_param('blockaction','', PARAM_ALPHA);
 $instanceid  = optional_param('instanceid', 0, PARAM_INT);
 $blockid     = optional_param('blockid',    0, PARAM_INT);
@@ -263,9 +259,9 @@
 if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) {
     print '<td style="vertical-align: top; width: '. $preferred_width_left .'px;" id="left-column">' . "\n";
     print '<!-- Begin left side blocks -->' . "\n";
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     print '<!-- End left side blocks -->' . "\n";
     print '</td>' . "\n";
 }
@@ -273,7 +269,7 @@
 /// Start main column
 print '<!-- Begin page content -->' . "\n";
 print '<td>';
-if (!empty($THEME->customcorners)) print_custom_corners_start();
+print_container_start();
 ?>
 <table width="100%">
 <tr>
Index: blog/footer.php
===================================================================
RCS file: /cvsroot/moodle/moodle/blog/footer.php,v
retrieving revision 1.6
diff -u -r1.6 footer.php
--- blog/footer.php	9 May 2007 14:47:03 -0000	1.6
+++ blog/footer.php	23 Nov 2007 16:19:26 -0000
@@ -1,7 +1,7 @@
                 </td>
             </tr>
         </table>
-    <?php if (!empty($THEME->customcorners)) print_custom_corners_end(); ?>
+    <?php print_container_end(); ?>
     </td>
 <?php
 print '<!-- End page content -->'."\n";
@@ -10,10 +10,10 @@
 if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) {
     echo '<td style="vertical-align: top; width: '. $preferred_width_right .'px;" id="right-column">';
     echo '<!-- Begin right side blocks -->'."\n";
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
     print_spacer(1, 120, true);
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '<!-- End right side blocks -->'."\n";
     echo '</td>';
 }
Index: theme/orangewhite/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/orangewhite/footer.html,v
retrieving revision 1.9
diff -u -r1.9 footer.html
--- theme/orangewhite/footer.html	23 Apr 2006 19:02:39 -0000	1.9
+++ theme/orangewhite/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,18 +1,18 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<div id="footer">
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: theme/orangewhite/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/orangewhite/header.html,v
retrieving revision 1.12
diff -u -r1.12 header.html
--- theme/orangewhite/header.html	24 Aug 2007 12:45:21 -0000	1.12
+++ theme/orangewhite/header.html	23 Nov 2007 16:19:39 -0000
@@ -19,19 +19,19 @@
 
 <?php if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
     <div class="navbar">
     </div>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
         <!-- <div class="headermenu"><div id="new-menu"><?php echo $navmenulist ?></div></div> -->
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php if ($navigation) { // This is the navigation table with breadcrumbs
 ?>
@@ -41,4 +41,4 @@
     </div>
 <?php } ?>
     <!-- END OF HEADER -->
-<div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/standardgreen/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardgreen/header.html,v
retrieving revision 1.23
diff -u -r1.23 header.html
--- theme/standardgreen/header.html	24 Aug 2007 12:45:23 -0000	1.23
+++ theme/standardgreen/header.html	23 Nov 2007 16:19:40 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/standardgreen/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardgreen/footer.html,v
retrieving revision 1.12
diff -u -r1.12 footer.html
--- theme/standardgreen/footer.html	4 Jan 2007 04:44:54 -0000	1.12
+++ theme/standardgreen/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,19 +1,19 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
+    print_container_start(false, '', 'footer');
+    echo '<hr />';
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: course/format/weeks/format.php
===================================================================
RCS file: /cvsroot/moodle/moodle/course/format/weeks/format.php,v
retrieving revision 1.74.2.1
diff -u -r1.74.2.1 format.php
--- course/format/weeks/format.php	22 Oct 2007 06:54:40 -0000	1.74.2.1
+++ course/format/weeks/format.php	23 Nov 2007 16:19:26 -0000
@@ -3,10 +3,6 @@
       // Included from "view.php"
 
     require_once($CFG->libdir.'/ajax/ajaxlib.php');
-    
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
 
     $week = optional_param('week', -1, PARAM_INT);
 
@@ -67,9 +63,9 @@
     if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) {
         echo '<td style="width:'.$preferred_width_left.'px" id="left-column">';
 
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
 
         echo '</td>';
     }
@@ -78,7 +74,7 @@
 /// Start main column
     echo '<td id="middle-column">';
 
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
         
     echo skip_main_destination();
 
@@ -266,7 +262,7 @@
         echo '</div>';
     }
 
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
 
     echo '</td>';
 
@@ -276,9 +272,9 @@
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) {
         echo '<td style="width: '.$preferred_width_right.'px;" id="right-column">';
 
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
 
         echo '</td>';
     }
Index: course/format/social/format.php
===================================================================
RCS file: /cvsroot/moodle/moodle/course/format/social/format.php,v
retrieving revision 1.41.2.1
diff -u -r1.41.2.1 format.php
--- course/format/social/format.php	22 Oct 2007 06:54:41 -0000	1.41.2.1
+++ course/format/social/format.php	23 Nov 2007 16:19:26 -0000
@@ -1,10 +1,6 @@
 <?php // $Id: format.php,v 1.41.2.1 2007/10/22 06:54:41 nfreear Exp $
       // format.php - course format featuring social forum
       //              included from view.php
-
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
     
     // Bounds for block widths
     // more flexible for theme designers taken from theme config.php
@@ -32,14 +28,14 @@
 
     if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) {
         echo '<td style="width:'.$preferred_width_left.'px" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
 
     echo '<td id="middle-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     echo skip_main_destination();
     if ($forum = forum_get_course_forum($course->id, 'social')) {
         print_heading_block(get_string('socialheadline'));
@@ -52,15 +48,15 @@
     } else {
         notify('Could not find or create a social forum here');
     }
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td>';
 
     // The right column
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) {
         echo '<td style="width:'.$preferred_width_right.'px" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
 
Index: theme/metal/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/metal/header.html,v
retrieving revision 1.12
diff -u -r1.12 header.html
--- theme/metal/header.html	24 Aug 2007 12:45:20 -0000	1.12
+++ theme/metal/header.html	23 Nov 2007 16:19:39 -0000
@@ -19,16 +19,16 @@
 
 <?php if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
     <div class="clearer">&nbsp;</div>
 <?php if ($navigation) { // This is the navigation table with breadcrumbs  ?>
@@ -42,4 +42,4 @@
 <?php } ?>
     <div class="clearer">&nbsp;</div>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/metal/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/metal/footer.html,v
retrieving revision 1.8
diff -u -r1.8 footer.html
--- theme/metal/footer.html	5 Jan 2007 19:48:58 -0000	1.8
+++ theme/metal/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,29 +1,33 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
-<hr />
+    print_container_start(false, '', 'footer');
+
+    echo '<hr />';
+    echo $loggedinas;
+    echo $homelink;
+    echo '<hr />';
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php if (debugging()) { 
-          echo $performanceinfo;
-?>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
+
+    if (debugging()) { ?>
         <div class="validators"><ul>
           <li><a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a></li>
         </ul></div>
-<?php } ?>
+<?php }
+
+    print_container_end();
+?>
 
-</div>
 </div>
 </body>
 </html>
Index: mod/resource/type/ims/resource.class.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/resource/type/ims/resource.class.php,v
retrieving revision 1.47.2.2
diff -u -r1.47.2.2 resource.class.php
--- mod/resource/type/ims/resource.class.php	20 Nov 2007 23:43:15 -0000	1.47.2.2
+++ mod/resource/type/ims/resource.class.php	23 Nov 2007 16:19:38 -0000
@@ -482,10 +482,9 @@
         /// Now, let's print the footer. It's harcoded here to save some space
         /// because it's impossible to use print_footer() to print NOTHING
         /// Added programatic support to customcorners themes.
-            if (!empty($THEME->customcorners)) {
-                print_custom_corners_end(false, 'content');
-            }
-            echo '</div></div></body></html>'; /// Close everything.
+            // this is hack!
+            print_container_end(); // container "content" started in header
+            echo '</div></body></html>'; // close page div started in header
 
         /// log it.
             add_to_log($course->id, "resource", "view", "view.php?id={$cm->id}", $resource->id, $cm->id);
Index: mod/scorm/player.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/scorm/player.php,v
retrieving revision 1.34
diff -u -r1.34 player.php
--- mod/scorm/player.php	5 Jul 2007 04:55:34 -0000	1.34
+++ mod/scorm/player.php	23 Nov 2007 16:19:39 -0000
@@ -287,8 +287,7 @@
         </div> <!-- SCORM box  -->
     </div> <!-- SCORM content -->
     <?php if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-        print_custom_corners_end();
+        print_container_end();
     } ?>
     <div class="clearer">&nbsp;</div>
 <?php print_footer(); ?>
Index: theme/standardwhite/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardwhite/footer.html,v
retrieving revision 1.20
diff -u -r1.20 footer.html
--- theme/standardwhite/footer.html	30 Jan 2007 09:33:11 -0000	1.20
+++ theme/standardwhite/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,21 +1,18 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
+    print_container_start(false, '', 'footer');
+    echo "<hr />";
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
-
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
 
+    echo $loggedinas;
+    echo $homelink;
 
-<?php
-    if (has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM)) and !empty($performanceinfo)) { 
+    if (!empty($performanceinfo) and has_capability('moodle/site:config', get_context_instance(CONTEXT_SYSTEM))) { 
         echo $performanceinfo;
     }
 
@@ -26,10 +23,10 @@
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a></li>
         </ul></div>
-<?php } ?>
-
+<?php } 
+    print_container_end();
+?>
 
 </div>
-</div>
 </body>
 </html>
Index: theme/standardwhite/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardwhite/header.html,v
retrieving revision 1.16
diff -u -r1.16 header.html
--- theme/standardwhite/header.html	24 Aug 2007 12:45:25 -0000	1.16
+++ theme/standardwhite/header.html	23 Nov 2007 16:19:40 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -40,7 +40,7 @@
 <?php } else if ($heading) { // If no navigation, but a heading, then print a line
 ?>
         <hr />
-<?php } ?>
-    <div class="clearer">&nbsp;</div>
+<?php }
+    print_container_end(); ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(true, '', 'content'); ?>
Index: theme/orangewhitepda/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/orangewhitepda/header.html,v
retrieving revision 1.12
diff -u -r1.12 header.html
--- theme/orangewhitepda/header.html	24 Aug 2007 12:45:22 -0000	1.12
+++ theme/orangewhitepda/header.html	23 Nov 2007 16:19:40 -0000
@@ -19,19 +19,19 @@
 
 <?php if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
     <div class="navbar">
     </div>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
         <!-- <div class="headermenu"><div id="new-menu"><?php echo $navmenulist ?></div></div> -->
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php if ($navigation) { // This is the navigation table with breadcrumbs
 ?>
@@ -41,4 +41,4 @@
     </div>
 <?php } ?>
     <!-- END OF HEADER -->
-<div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/orangewhitepda/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/orangewhitepda/footer.html,v
retrieving revision 1.6
diff -u -r1.6 footer.html
--- theme/orangewhitepda/footer.html	23 Apr 2006 19:02:17 -0000	1.6
+++ theme/orangewhitepda/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,18 +1,18 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<div id="footer">
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: mod/quiz/view.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/quiz/view.php,v
retrieving revision 1.124.2.6
diff -u -r1.124.2.6 view.php
--- mod/quiz/view.php	2 Nov 2007 16:20:04 -0000	1.124.2.6
+++ mod/quiz/view.php	23 Nov 2007 16:19:38 -0000
@@ -8,10 +8,6 @@
     require_once($CFG->dirroot.'/mod/quiz/locallib.php');
     require_once($CFG->dirroot.'/mod/quiz/pagelib.php');
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     $id   = optional_param('id', 0, PARAM_INT); // Course Module ID, or
     $q    = optional_param('q',  0, PARAM_INT);  // quiz ID
     $edit = optional_param('edit', -1, PARAM_BOOL);
@@ -68,14 +64,14 @@
 
     if(!empty($CFG->showblocksonmodpages) && (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) {
         echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
 
     echo '<td id="middle-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
 
     // Print the main part of the page
 
@@ -457,7 +453,7 @@
 
 function finish_page($course) {
     global $THEME;
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td></tr></table>';
     print_footer($course);
     exit;
Index: my/index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/my/index.php,v
retrieving revision 1.16
diff -u -r1.16 index.php
--- my/index.php	10 Oct 2007 14:31:27 -0000	1.16
+++ my/index.php	23 Nov 2007 16:19:39 -0000
@@ -7,10 +7,6 @@
     require_once($CFG->dirroot.'/course/lib.php');
     require_once('pagelib.php');
     
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     require_login();
 
     $mymoodlestr = get_string('mymoodle','my');
@@ -54,9 +50,9 @@
 
     if(blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing()) {
         echo '<td style="vertical-align: top; width: '.$blocks_preferred_width.'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
     
@@ -64,7 +60,7 @@
             case 'middle':
     
     echo '<td valign="top" id="middle-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start(TRUE);
+    print_container_start(TRUE);
 
 /// The main overview in the middle of the page
     
@@ -96,7 +92,7 @@
         echo '<br />...';  
     }
     
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td>';
     
             break;
@@ -106,9 +102,9 @@
 
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $PAGE->user_is_editing()) {
         echo '<td style="vertical-align: top; width: '.$blocks_preferred_width.'px;" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
             break;
Index: admin/stickyblocks.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/stickyblocks.php,v
retrieving revision 1.18
diff -u -r1.18 stickyblocks.php
--- admin/stickyblocks.php	31 Aug 2007 19:05:26 -0000	1.18
+++ admin/stickyblocks.php	23 Nov 2007 16:19:26 -0000
@@ -5,10 +5,6 @@
     require_once($CFG->dirroot.'/lib/pagelib.php');
     require_once($CFG->dirroot.'/lib/blocklib.php');
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     $pt  = optional_param('pt', null, PARAM_SAFEDIR); //alhanumeric and -
 
     $pagetypes = array(PAGE_MY_MOODLE => array('id' => PAGE_MY_MOODLE,
@@ -58,12 +54,12 @@
         echo '<tr valign="top">';
 
         echo '<td valign="top" style="width: '.$blocks_preferred_width.'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $blocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
         echo '<td valign="top" id="middle-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
 
     } else {
         require_once($CFG->libdir.'/adminlib.php');
@@ -80,12 +76,12 @@
 
 
     if (!empty($pt)) {
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
         echo '<td valign="top" style="width: '.$blocks_preferred_width.'px;" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $blocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
         echo '</tr></table>';
         print_footer();
Index: admin/settings.php
===================================================================
RCS file: /cvsroot/moodle/moodle/admin/settings.php,v
retrieving revision 1.40
diff -u -r1.40 settings.php
--- admin/settings.php	18 Jul 2007 15:54:30 -0000	1.40
+++ admin/settings.php	23 Nov 2007 16:19:26 -0000
@@ -5,10 +5,6 @@
 require_once($CFG->libdir.'/blocklib.php');
 require_once($CFG->dirroot.'/'.$CFG->admin.'/pagelib.php');
 
-if (!empty($THEME->customcorners)) {
-    require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-}
-
 if ($site = get_site()) {
     require_login();
 }
@@ -132,14 +128,14 @@
         switch ($column) {
             case 'left':
     echo '<td style="width: ' . $preferred_width_left . 'px;" id="left-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td>';
             break;
             case 'middle':
     echo '<td id="middle-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     echo '<a name="startofcontent"></a>';
 
     if ($statusmsg != '') {
@@ -162,15 +158,15 @@
     echo '</div>';
     echo '</form>';
 
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td>';
             break;
             case 'right':
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT)) {
         echo '<td style="width: ' . $preferred_width_right . 'px;" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
             break;
Index: theme/formal_white/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/formal_white/footer.html,v
retrieving revision 1.18
diff -u -r1.18 footer.html
--- theme/formal_white/footer.html	24 Aug 2007 12:45:19 -0000	1.18
+++ theme/formal_white/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,39 +1,40 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
-<div id="footer">
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php if ($navigation and false) { ?>
+
+    if ($navigation and false) { ?>
     <div class="navbar clearfix">
         <div class="breadcrumb"><?php print_navigation($navigation); ?></div>
         <div class="menu"><?php echo $menu; ?></div>
     </div>
-<?php } ?>
+<?php }
 
-<hr />
+    echo '<hr />';
+    echo $loggedinas;
+    echo $homelink;
 
-<?php echo $loggedinas ?><br />
-<?php echo $homelink ?>
-<?php if (!empty($performanceinfo)) {
-          echo $performanceinfo;
-} ?>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
 
-<?php if (debugging()) {
-?>
+    if (debugging()) { ?>
         <div class="validators"><ul>
           <li><a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a></li>
         </ul></div>
-<?php } ?>
+<?php }
+
+    print_container_end();
+?>
 
-</div>
 </div>
 </body>
 </html>
Index: theme/formal_white/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/formal_white/header.html,v
retrieving revision 1.18
diff -u -r1.18 header.html
--- theme/formal_white/header.html	24 Aug 2007 12:45:19 -0000	1.18
+++ theme/formal_white/header.html	23 Nov 2007 16:19:39 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: warning: ALT text will need editing if logo changes. 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><img alt='Moodle' src='<?php echo $CFG->httpsthemewww .'/'. current_theme() ?>/logo.jpg' /></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><img alt='Moodle' src='<?php echo $CFG->httpsthemewww .'/'. current_theme() ?>/logo_small.jpg' /></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
        <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: index.php
===================================================================
RCS file: /cvsroot/moodle/moodle/index.php,v
retrieving revision 1.201.2.1
diff -u -r1.201.2.1 index.php
--- index.php	22 Oct 2007 09:25:55 -0000	1.201.2.1
+++ index.php	23 Nov 2007 16:19:26 -0000
@@ -34,10 +34,6 @@
     require_once($CFG->dirroot .'/course/lib.php');
     require_once($CFG->dirroot .'/lib/blocklib.php');
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     if (empty($SITE)) {
         redirect($CFG->wwwroot .'/'. $CFG->admin .'/index.php');
     }
@@ -127,16 +123,16 @@
             case 'left':
     if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) {
         echo '<td style="width: '.$preferred_width_left.'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
             break;
             case 'middle':
     echo '<td id="middle-column">'. skip_main_destination();
 
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
 
 /// Print Section
     if ($SITE->numsections > 0) {
@@ -253,7 +249,7 @@
         echo '<br />';
     }
 
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
 
     echo '</td>';
             break;
@@ -261,13 +257,13 @@
     // The right column
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing || $PAGE->user_allowed_editing()) {
         echo '<td style="width: '.$preferred_width_right.'px;" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         if ($PAGE->user_allowed_editing()) {
             echo '<div style="text-align:center">'.update_course_icon($SITE->id).'</div>';
             echo '<br />';
         }
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
             break;
Index: mod/forum/view.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/forum/view.php,v
retrieving revision 1.106.2.3
diff -u -r1.106.2.3 view.php
--- mod/forum/view.php	16 Nov 2007 12:49:10 -0000	1.106.2.3
+++ mod/forum/view.php	23 Nov 2007 16:19:37 -0000
@@ -220,7 +220,7 @@
 
         case 'eachuser':
             if (!empty($forum->intro)) {
-                print_custom_corners_box(format_text($forum->intro), 'generalbox', 'intro');
+                print_box(format_text($forum->intro), 'generalbox', 'intro');
             }
             echo '<p align="center">';
             if (forum_user_can_post_discussion($forum)) {
@@ -246,7 +246,7 @@
 
         default:
             if (!empty($forum->intro)) {
-                print_custom_corners_box(format_text($forum->intro), 'generalbox', 'intro');
+                print_box(format_text($forum->intro), 'generalbox', 'intro');
             }
             echo '<br />';
             if (!empty($showall)) {
Index: theme/cornflower/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/cornflower/footer.html,v
retrieving revision 1.15
diff -u -r1.15 footer.html
--- theme/cornflower/footer.html	24 Aug 2007 12:45:18 -0000	1.15
+++ theme/cornflower/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,30 +1,31 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
-<div id="footer">
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php if ($navigation and false) { ?>
+
+    if ($navigation and false) { ?>
     <div class="navbar clearfix">
         <div class="breadcrumb"><?php print_navigation($navigation); ?></div>
         <div class="menu"><?php echo $menu; ?></div>
     </div>
-<?php } ?>
+<?php }
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-<?php if (!empty($performanceinfo)) {
-          echo $performanceinfo;
-} ?>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
+
+    print_container_end();
+?>
 
-</div>
-</div>
 </div>
 </body>
 </html>
Index: theme/cornflower/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/cornflower/header.html,v
retrieving revision 1.16
diff -u -r1.16 header.html
--- theme/cornflower/header.html	24 Aug 2007 12:45:18 -0000	1.16
+++ theme/cornflower/header.html	23 Nov 2007 16:19:39 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: warning: ALT text will need editing when logo changes. 'headermain' is now H1.
 
       if ($home) {  // home page ?>
-    <div id="header-home">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><img alt="[ REPLACE ME ]" src="<?php echo $CFG->wwwroot.'/theme/'.current_theme() ?>/images/logo.jpg" width="457" height="64" /></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header-home">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><img alt="[ REPLACE ME ]" src="<?php echo $CFG->wwwroot.'/theme/'.current_theme() ?>/images/logo.jpg" width="457" height="64" /></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
     <div class="clearer"></div>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
@@ -43,4 +43,4 @@
 <?php }  ?>
     <!-- END OF HEADER -->
     <div class="clearer"></div>
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/standard/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standard/footer.html,v
retrieving revision 1.30
diff -u -r1.30 footer.html
--- theme/standard/footer.html	24 Aug 2007 12:45:22 -0000	1.30
+++ theme/standard/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,39 +1,39 @@
+<?php
 
-</div> <!-- end div containerContent -->
-<!-- START OF FOOTER -->
-<div id="footer">
+    print_container_end(); // content container
+
+    print_container_start(false, '', 'footer');
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php if ($navigation and false) { ?>
+
+    if ($navigation and false) { ?>
     <div class="navbar clearfix">
         <div class="breadcrumb"><?php print_navigation($navigation); ?></div>
         <div class="menu"><?php echo $menu; ?></div>
     </div>
-<?php } ?>
+<?php }
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-<?php if (!empty($performanceinfo)) {
-          echo $performanceinfo;
-} ?>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
 
-<?php if (debugging()) {
-?>
+    if (debugging()) { ?>
         <div class="validators"><ul>
           <li><a href="http://validator.w3.org/check?verbose=1&amp;ss=1&amp;uri=<?php echo urlencode(qualified_me()) ?>">Validate HTML</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=-1&amp;url1=<?php echo urlencode(qualified_me()) ?>">Section 508 Check</a></li>
           <li><a href="http://www.contentquality.com/mynewtester/cynthia.exe?rptmode=0&amp;warnp2n3e=1&amp;url1=<?php echo urlencode(qualified_me()) ?>">WCAG 1 (2,3) Check</a></li>
         </ul></div>
-<?php } ?>
+<?php }
 
+    print_container_end();
+?>
 
 </div>
-</div>
 </body>
 </html>
Index: theme/standard/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standard/header.html,v
retrieving revision 1.39
diff -u -r1.39 header.html
--- theme/standard/header.html	24 Aug 2007 12:45:22 -0000	1.39
+++ theme/standard/header.html	23 Nov 2007 16:19:40 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/custom_corners/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/custom_corners/footer.html,v
retrieving revision 1.5.2.3
diff -u -r1.5.2.3 footer.html
--- theme/custom_corners/footer.html	12 Nov 2007 11:36:57 -0000	1.5.2.3
+++ theme/custom_corners/footer.html	23 Nov 2007 16:19:39 -0000
@@ -1,44 +1,37 @@
-<?php print_custom_corners_end(false, 'content'); ?>
-</div> <!-- end div containerContent -->
+<?php print_container_end(); ?><!-- end container Content -->
 <!-- START OF FOOTER -->
 <?php 
-    global $CFG, $COURSE; 
-    if (function_exists('is_in_popup')) {
-        $inpopup = is_in_popup();
-    } else {
-        $inpopup = false;
-    }
+
+global $CFG, $COURSE; 
+if (function_exists('is_in_popup')) {
+    $inpopup = is_in_popup();
+} else {
+    $inpopup = false;
+}
+
+if (!$inpopup) { 
+    print_container_start(false, '', 'footer');
     
-    if (!$inpopup) { 
-?>
-<div id="footer">
-    <?php print_custom_corners_start(); ?>
-<?php
-  if (function_exists('page_doc_link')) {
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-  }
-?>
-<?php echo $loggedinas ?>
-<?php echo $homelink;
-?>
-    <?php print_custom_corners_end(); ?>
-</div>
-<?php 
-     $useridarray = array(2 // MD
+    
+    echo $loggedinas;
+    echo $homelink;
+
+    $useridarray = array(2 // MD
                           );
-     
-     if (!empty($performanceinfo) && isloggedin() && in_array($USER->id, $useridarray)) {
-          echo $performanceinfo;
-     }
+    
+    if (!empty($performanceinfo) && isloggedin() && in_array($USER->id, $useridarray)) {
+        echo $performanceinfo;
+    }
+
+    print_container_end();
+
+} // end if inpopup
 
-     } // end if inpopup
 ?>
 </div> <!-- end page div -->
-<?php 
-    print_custom_corners_end();
-?>
 <script type="text/javascript">
 /* <![CDATA[ */
     $(document).ready(function() {
Index: theme/custom_corners/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/custom_corners/header.html,v
retrieving revision 1.10.2.5
diff -u -r1.10.2.5 header.html
--- theme/custom_corners/header.html	12 Nov 2007 11:36:57 -0000	1.10.2.5
+++ theme/custom_corners/header.html	23 Nov 2007 16:19:39 -0000
@@ -10,8 +10,6 @@
     <?php include("$CFG->javascript"); ?>
     <?php include('js/jquery.php'); ?>
 
-    <?php require_once($CFG->dirroot.'/lib/custom_corners_lib.php'); ?>
-
     <?php
 
         global $PAGE;
@@ -78,32 +76,27 @@
 <?php if (!$inpopup) { 
     if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
-      <?php print_custom_corners_start(); ?>
-          <div class="wraphome clearfix">
-              <h1 class="headermain"><?php echo $heading ?></h1>
-              <div class="headermenu"><?php echo $menu ?></div>
-          </div>
-      <?php print_custom_corners_end(); ?>
-    </div>
+    <?php print_container_start(true, '', 'header-home'); ?>
+        <div class="wraphome clearfix">
+            <h1 class="headermain"><?php echo $heading ?></h1>
+            <div class="headermenu"><?php echo $menu ?></div>
+        </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
-        <?php print_custom_corners_start(); ?>
+    <?php print_container_start(true, '', 'header'); ?>
           <h1 class="headermain"><?php echo $heading ?></h1>
           <div class="headermenu"><?php echo $menu ?></div>
-        <div class="navbar clearfix">
-    <?php if ($navigation) { // This is the navigation table with breadcrumbs
-    ?>
+      <div class="navbar clearfix">
+        <?php if ($navigation) { // This is the navigation table with breadcrumbs
+        ?>
         <div class="breadcrumb"><?php print_navigation($navigation); ?></div>
         <div class="navbutton"><?php echo $button; ?></div>
-    <?php } ?>
-    </div>
-    <?php print_custom_corners_end(); ?>
-    </div>
+        <?php } ?>
+      </div>
+    <?php print_container_end(); ?>
 <?php }
     }
 ?>
     <!-- END OF HEADER -->
-<div id="content">
-    <?php print_custom_corners_start(true, false, 'content'); ?>
+<?php print_container_start(false, '', 'content'); ?>
Index: theme/standardred/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardred/footer.html,v
retrieving revision 1.12
diff -u -r1.12 footer.html
--- theme/standardred/footer.html	4 Jan 2007 04:44:55 -0000	1.12
+++ theme/standardred/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,19 +1,19 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
+    print_container_start(false, '', 'footer');
+    echo '<hr />';
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: theme/standardred/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardred/header.html,v
retrieving revision 1.23
diff -u -r1.23 header.html
--- theme/standardred/header.html	24 Aug 2007 12:45:24 -0000	1.23
+++ theme/standardred/header.html	23 Nov 2007 16:19:40 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: mod/chat/view.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/chat/view.php,v
retrieving revision 1.61
diff -u -r1.61 view.php
--- mod/chat/view.php	10 Oct 2007 14:57:39 -0000	1.61
+++ mod/chat/view.php	23 Nov 2007 16:19:36 -0000
@@ -7,10 +7,6 @@
     require_once($CFG->libdir.'/blocklib.php');
     require_once('pagelib.php');
     
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     $id   = optional_param('id', 0, PARAM_INT);
     $c    = optional_param('c', 0, PARAM_INT);
     $edit = optional_param('edit', -1, PARAM_BOOL);
@@ -79,9 +75,9 @@
 
                 if(!empty($CFG->showblocksonmodpages) && (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) {
                     echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">';
-                    if (!empty($THEME->customcorners)) print_custom_corners_start();
+                    print_container_start();
                     blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-                    if (!empty($THEME->customcorners)) print_custom_corners_end();
+                    print_container_end();
                     echo '</td>';
                 }
                 break;
@@ -89,7 +85,7 @@
             case 'middle':
 
                 echo '<td id="middle-column">';
-                if (!empty($THEME->customcorners)) print_custom_corners_start();
+                print_container_start();
 
                 /// Check to see if groups are being used here
                 $groupmode = groups_get_activity_groupmode($cm);
@@ -193,9 +189,7 @@
                     print_simple_box_end();
                 }
 
-                if (!empty($THEME->customcorners)) {
-                    print_custom_corners_end();
-                }
+                print_container_end();
                 echo '</td>';
 
                 break;
Index: lib/custom_corners_lib.php
===================================================================
RCS file: lib/custom_corners_lib.php
diff -N lib/custom_corners_lib.php
--- lib/custom_corners_lib.php	11 Nov 2007 15:02:54 -0000	1.9.2.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,91 +0,0 @@
-<?php
-/**
- * @author Urs Hunkler
- * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
- *
- * Custom corners and borders
- * Support library
- *
- * 2007-05-07  File created.
- */
-
-/**
- * Starting part of the surrounding divs for custom corners
- *
- * @param boolean $clearfix, add CLASS "clearfix" to the inner div against collapsing
- * @param boolean $return, return as string or just print it
- * @param mixed   $idbase, optionally, define one idbase to be added to all the elements in the corners
- */
-function print_custom_corners_start($clearfix=false, $return=false, $idbase=null) {
-    global $THEME;
-
-/// Analise if we want ids for the custom corner elements
-    $idbt = '';
-    $idi1 = '';
-    $idi2 = '';
-    $idi3 = '';
-
-    if ($idbase) {
-        $idbt = 'id="' . $idbase . '-bt" ';
-        $idi1 = 'id="' . $idbase . '-i1" ';
-        $idi2 = 'id="' . $idbase . '-i2" ';
-        $idi3 = 'id="' . $idbase . '-i3" ';
-    }
-
-/// Output begins
-    $output = '<div class="wrap">'."\n";
-    $output .= '<div '.$idbt.'class="bt"><div>&nbsp;</div></div>';
-    $output .= "\n";
-    $output .= '<div '.$idi1.'class="i1"><div '.$idi2.'class="i2">';
-    $output .= (!empty($clearfix)) ? '<div '.$idi3.'class="i3 clearfix">' : '<div '.$idi3.'class="i3">';
-    
-    if (!isset($THEME->customcornersopen)) {
-        $THEME->customcornersopen = 0;
-    }
-    $THEME->customcornersopen += 1;
-    
-    if ($return) {
-        return $output;
-    } else {
-        echo $output;
-    }
-}
-
-
-/**
- * Ending part of the surrounding divs for custom corners
- *
- * @param boolean $return, return as string or just print it
- * @param mixed   $idbase, optionally, define one idbase to be added to all the elements in the corners
- */
-function print_custom_corners_end($return=false, $idbase=null) {
-    global $THEME;
-
-    if ($THEME->customcornersopen <= 0) {
-    	return '';
-    }
-    
-    $THEME->customcornersopen -= ($THEME->customcornersopen > 0) ? 1 : 0;
-    
-/// Analise if we want ids for the custom corner elements
-    $idbb = '';
-
-    if ($idbase) {
-        $idbb = 'id="' . $idbase . '-bb" ';
-    }
-
-/// Output begins
-    $output = '</div></div></div>';
-    $output .= "\n";
-    $output .= '<div '.$idbb.'class="bb"><div>&nbsp;</div></div>'."\n";
-    $output .= '</div>';
-    
-    
-    if ($return) {
-        return $output;
-    } else {
-        echo $output;
-    }
-}
-
-?>
Index: lib/adminlib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/adminlib.php,v
retrieving revision 1.153.2.6
diff -u -r1.153.2.6 adminlib.php
--- lib/adminlib.php	15 Nov 2007 17:31:08 -0000	1.153.2.6
+++ lib/adminlib.php	23 Nov 2007 16:19:30 -0000
@@ -2950,10 +2950,6 @@
 
     global $CFG, $PAGE, $SITE, $THEME;
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     define('ADMIN_EXT_HEADER_PRINTED', 'true');
 
     if (!empty($SITE->fullname)) {
@@ -2962,6 +2958,10 @@
         $preferred_width_left = bounded_number(BLOCK_L_MIN_WIDTH,
                                                blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]),
                                                BLOCK_L_MAX_WIDTH);
+        $preferred_width_right = bounded_number(BLOCK_R_MIN_WIDTH,
+                                               blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]),
+                                               BLOCK_R_MAX_WIDTH);
+
         $PAGE->print_header();
         echo '<table id="layout-table" summary=""><tr>';
 
@@ -2974,23 +2974,23 @@
             switch ($column) {
                 case 'left':
         echo '<td style="width: ' . $preferred_width_left . 'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
                 break;
 
                 case 'middle':
         echo '<td id="middle-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start(true);
+        print_container_start(true);
                 break;
 
                 case 'right':
         if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT)) {
             echo '<td style="width: ' . $preferred_width_right . 'px;" id="right-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
                 break;
@@ -3005,14 +3005,13 @@
 
     global $CFG, $PAGE, $SITE, $THEME;
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     define('ADMIN_EXT_FOOTER_PRINTED', 'true');
 
     if (!empty($SITE->fullname)) {
         $pageblocks = blocks_setup($PAGE);
+        $preferred_width_left = bounded_number(BLOCK_L_MIN_WIDTH,
+                                               blocks_preferred_width($pageblocks[BLOCK_POS_LEFT]),
+                                               BLOCK_L_MAX_WIDTH);
         $preferred_width_right = bounded_number(BLOCK_R_MIN_WIDTH,
                                                 blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]),
                                                 BLOCK_R_MAX_WIDTH);
@@ -3029,24 +3028,24 @@
             switch ($column) {
                 case 'left':
         echo '<td style="width: ' . $preferred_width_left . 'px;" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
                 break;
 
                 case 'middle':
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
                 break;
 
                 case 'right':
         if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT)) {
             echo '<td style="width: ' . $preferred_width_right . 'px;" id="right-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
 
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
                 break;
Index: lib/weblib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/lib/weblib.php,v
retrieving revision 1.970.2.21
diff -u -r1.970.2.21 weblib.php
--- lib/weblib.php	20 Nov 2007 18:03:14 -0000	1.970.2.21
+++ lib/weblib.php	23 Nov 2007 16:19:35 -0000
@@ -2809,14 +2809,6 @@
         }
     }
 
-/// Close eventually open custom_corner divs
-    if ((!empty($THEME->customcorners)) && ($THEME->customcornersopen > 1)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-        while ($THEME->customcornersopen > 1) {
-            print_custom_corners_end();
-        }
-    }
-
 /// Include the actual footer file
 
     ob_start();
@@ -3825,21 +3817,16 @@
  * @param boolean $return, return as string or just print it
  */
 function print_box_start($classes='generalbox', $ids='', $return=false) {
-    $output = '';
-
-    if ($ids) {
-        $ids = ' id="'.$ids.'"';
-    }
-
-    $output .= '<div'.$ids.' class="box '.$classes.'">';
+    global $THEME;
 
-    if ($return) {
-        return $output;
+    if (!empty($THEME->customcorners)) {
+        $classes .= ' ccbox box';
     } else {
-        echo $output;
+        $classes .= ' box';
     }
-}
 
+    return print_container_start(false, $classes, $ids, $return);
+}
 
 /**
  * Simple function to end a box (see above)
@@ -3848,28 +3835,22 @@
  * @param boolean $return, return as string or just print it
  */
 function print_box_end($return=false) {
-    $output = '</div>';
-    if ($return) {
-        return $output;
-    } else {
-        echo $output;
-    }
+    return print_container_end($return);
 }
 
-
 /**
- * Function adds custom_corners to boxes
+ * Print a message in a standard themed container.
  *
- * @param string $message, the content of the box
+ * @param string $message, the content of the container
  * @param string $classes, space-separated class names.
  * @param string $ids, space-separated id names.
  * @param boolean $return, return as string or just print it
  */
-function print_custom_corners_box($message, $classes='generalbox', $ids='', $return=false) {
+function print_container($message, $clearfix=false, $classes='', $idbase='', $return=false) {
 
-    $output  = print_custom_corners_box_start($classes, $ids, true);
+    $output  = print_container_start($clearfix, $classes, $idbase, true);
     $output .= stripslashes_safe($message);
-    $output .= print_custom_corners_box_end(true);
+    $output .= print_container_end(true);
 
     if ($return) {
         return $output;
@@ -3878,24 +3859,41 @@
     }
 }
 
-
 /**
- * Function adds custom_corners to boxes
- * Calls print_box_start
+ * Starts a container using divs
  *
  * @param string $classes, space-separated class names.
  * @param string $ids, space-separated id names.
  * @param boolean $return, return as string or just print it
  */
-function print_custom_corners_box_start($classes='generalbox', $ids='', $return=false) {
-    global $CFG, $THEME;
+function print_container_start($clearfix=false, $classes='', $idbase='', $return=false) {
+    global $THEME;
+
+    if (!isset($THEME->open_containers)) {
+        $THEME->open_containers = array();
+    }
+    $THEME->open_containers[] = $idbase;
 
-    $output = print_box_start('ccbox '.$classes, $ids, true);
 
     if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-
-        $output .= print_custom_corners_start(true, true);
+        $output = _print_custom_corners_start($clearfix, $classes, $idbase);
+    } else {
+        if ($idbase) {
+            $id = ' id="'.$idbase.'"';
+        } else {
+            $id = '';
+        }
+        if ($clearfix) {
+            $clearfix = ' clearfix';
+        } else {
+            $clearfix = '';
+        }
+        if ($classes or $clearfix) {
+            $class = ' class="'.$classes.$clearfix.'"';
+        } else {
+            $class = '';
+        }
+        $output = '<div'.$id.$class.'>';
     }
 
     if ($return) {
@@ -3905,25 +3903,46 @@
     }
 }
 
-
 /**
- * Function adds custom_corners to boxes
- * Calls print_box_end
- *
+ * Simple function to end a container (see above)
  * @param boolean $return, return as string or just print it
  */
-function print_custom_corners_box_end($return=false) {
-    global $CFG, $THEME;
+function print_container_end($return=false) {
+    global $THEME;
 
-    $output = '';
+    if (empty($THEME->open_containers)) {
+        debugging('Incorrect closing of custom corners - no more open containers');
+        $idbase = '';
+    } else {
+        $idbase = array_pop($THEME->open_containers);
+    }
 
     if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
+        $output = _print_custom_corners_end($idbase);
+    } else {
+        $output = '</div>';
+    }
 
-        $output .= print_custom_corners_end(true);
+    if ($return) {
+        return $output;
+    } else {
+        echo $output;
     }
+}
+
+/**
+ * Force closing of all open containers except the main content one.
+ * @param boolean $return, return as string or just print it
+ */
+function print_container_end_all($return=false) {
+    global $THEME;
 
-    $output .= print_box_end(true);;
+    $output = '';
+    if (!empty($THEME->open_containers)) {
+        while(count($THEME->open_containers) > 1) { // the last one is the 'content' container
+            $output .= print_container_end($return);
+        }
+    }
 
     if ($return) {
         return $output;
@@ -3932,6 +3951,61 @@
     }
 }
 
+/**
+ * Internal function - do not use directly!
+ * Starting part of the surrounding divs for custom corners
+ *
+ * @param boolean $clearfix, add CLASS "clearfix" to the inner div against collapsing
+ * @param mixed   $idbase, optionally, define one idbase to be added to all the elements in the corners
+ */
+function _print_custom_corners_start($clearfix=false, $classes='', $idbase='') {
+/// Analise if we want ids for the custom corner elements
+    $id = '';
+    $idbt = '';
+    $idi1 = '';
+    $idi2 = '';
+    $idi3 = '';
+
+    if ($idbase) {
+        $id   = 'id="'.$idbase.'" ';
+        $idbt = 'id="'.$idbase.'-bt" ';
+        $idi1 = 'id="'.$idbase.'-i1" ';
+        $idi2 = 'id="'.$idbase.'-i2" ';
+        $idi3 = 'id="'.$idbase.'-i3" ';
+    }
+
+/// Output begins
+    $output = '<div '.$id.'class="wrap '.$classes.'">'."\n";
+    $output .= '<div '.$idbt.'class="bt"><div>&nbsp;</div></div>';
+    $output .= "\n";
+    $output .= '<div '.$idi1.'class="i1"><div '.$idi2.'class="i2">';
+    $output .= (!empty($clearfix)) ? '<div '.$idi3.'class="i3 clearfix">' : '<div '.$idi3.'class="i3">';
+
+    return $output;
+}
+
+
+/**
+ * Internal function - do not use directly!
+ * Ending part of the surrounding divs for custom corners
+ */
+function _print_custom_corners_end($idbase) {
+/// Analise if we want ids for the custom corner elements
+    $idbb = '';
+
+    if ($idbase) {
+        $idbb = 'id="' . $idbase . '-bb" ';
+    }
+
+/// Output begins
+    $output = '</div></div></div>';
+    $output .= "\n";
+    $output .= '<div '.$idbb.'class="bb"><div>&nbsp;</div></div>'."\n";
+    $output .= '</div>';
+
+    return $output;
+}
+
 
 /**
  * Print a self contained form with a single submit button.
@@ -5537,6 +5611,8 @@
         //header not yet printed
         @header('HTTP/1.0 404 Not Found');
         print_header(get_string('error'));
+    } else {
+        print_container_end_all();
     }
 
     echo '<br />';
@@ -5791,6 +5867,8 @@
 function notice ($message, $link='', $course=NULL) {
     global $CFG, $SITE;
 
+    print_container_end_all();
+
     $message = clean_text($message);
 
     print_box($message, 'generalbox', 'notice');
@@ -5929,6 +6007,8 @@
         // this type of redirect might not be working in some browsers - such as lynx :-(
         print_header('', '', '', '', $errorprinted ? '' : ('<meta http-equiv="refresh" content="'. $delay .'; url='. $encodedurl .'" />'));
         $delay += 3; // double redirect prevention, it was sometimes breaking upgrades before 1.7
+    } else {
+        print_container_end_all();
     }
     echo '<div style="text-align:center">';
     echo '<div>'. $message .'</div>';
@@ -6232,10 +6312,6 @@
 
     global $CFG, $THEME;
 
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-
     // If there are no special attributes, give a default CSS class
     if (empty($attributes) || !is_array($attributes)) {
         $attributes = array('class' => 'sideblock');
@@ -6293,7 +6369,6 @@
     if (!empty($THEME->customcorners)) {
         echo '<div class="i1"><div class="i2">';
         echo '<div class="i3">';
-        $THEME->customcornersopen += 1;
     }
     echo '<div class="content">';
 
@@ -6309,8 +6384,7 @@
     echo '</div>';
 
     if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-        print_custom_corners_end();
+        echo '</div></div></div><div class="bb"><div>&nbsp;</div></div></div>';
     }
 
     echo '</div>';
Index: theme/wood/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/wood/header.html,v
retrieving revision 1.9
diff -u -r1.9 header.html
--- theme/wood/header.html	24 Aug 2007 12:45:25 -0000	1.9
+++ theme/wood/header.html	23 Nov 2007 16:19:40 -0000
@@ -19,16 +19,16 @@
 
 <?php if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php if ($navigation) { // This is the navigation table with breadcrumbs  ?>
     <div class="navbar clearfix">
@@ -41,4 +41,4 @@
 <?php } ?>
     <div class="clearer">&nbsp;</div>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: theme/wood/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/wood/footer.html,v
retrieving revision 1.9
diff -u -r1.9 footer.html
--- theme/wood/footer.html	30 Oct 2006 16:55:17 -0000	1.9
+++ theme/wood/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,23 +1,24 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
+    print_container_start(false, '', 'footer');
 
-<?php
     echo "<div id=\"footer-bar\">";
     echo '<span class="helplink">';
     echo '&nbsp;'.page_doc_link(get_string('moodledocslink'));
     echo '</span>';
     echo "</div>";
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-<?php if (!empty($performanceinfo)) {
-    echo $performanceinfo;
-} ?>
-</div>
+    if (!empty($performanceinfo)) {
+        echo $performanceinfo;
+    }
+
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: course/format/topics/format.php
===================================================================
RCS file: /cvsroot/moodle/moodle/course/format/topics/format.php,v
retrieving revision 1.83.2.1
diff -u -r1.83.2.1 format.php
--- course/format/topics/format.php	22 Oct 2007 06:54:39 -0000	1.83.2.1
+++ course/format/topics/format.php	23 Nov 2007 16:19:26 -0000
@@ -8,10 +8,6 @@
       
 
     require_once($CFG->libdir.'/ajax/ajaxlib.php');
-    
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
   
     $topic = optional_param('topic', -1, PARAM_INT);
 
@@ -82,9 +78,9 @@
 
     if (blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $editing) {
         echo '<td style="width:'.$preferred_width_left.'px" id="left-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
 
@@ -92,7 +88,7 @@
             case 'middle':
 /// Start main column
     echo '<td id="middle-column">';
-    if (!empty($THEME->customcorners)) print_custom_corners_start();
+    print_container_start();
     echo skip_main_destination();
 
     print_heading_block(get_string('topicoutline'), 'outline');
@@ -276,7 +272,7 @@
         echo '</div>';
     }
 
-    if (!empty($THEME->customcorners)) print_custom_corners_end();
+    print_container_end();
     echo '</td>';
 
             break;
@@ -284,9 +280,9 @@
     // The right column
     if (blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $editing) {
         echo '<td style="width:'.$preferred_width_right.'px" id="right-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
     }
 
Index: theme/standardlogo/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardlogo/footer.html,v
retrieving revision 1.13
diff -u -r1.13 footer.html
--- theme/standardlogo/footer.html	4 Jan 2007 04:44:54 -0000	1.13
+++ theme/standardlogo/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,19 +1,19 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
+    print_container_start(false, '', 'footer');
+    echo '<hr />';
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: theme/standardlogo/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardlogo/header.html,v
retrieving revision 1.26
diff -u -r1.26 header.html
--- theme/standardlogo/header.html	24 Aug 2007 12:45:24 -0000	1.26
+++ theme/standardlogo/header.html	23 Nov 2007 16:19:40 -0000
@@ -40,16 +40,16 @@
 
       //Accessibility: warning: ALT text will need editing if logo changes. 'headermain' is now H1.
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><img alt="Moodle" src="<?php echo $standardlogo ?>" /></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation table with breadcrumbs  ?>
@@ -62,4 +62,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: mod/resource/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/resource/lib.php,v
retrieving revision 1.70.2.2
diff -u -r1.70.2.2 lib.php
--- mod/resource/lib.php	15 Oct 2007 07:31:52 -0000	1.70.2.2
+++ mod/resource/lib.php	23 Nov 2007 16:19:38 -0000
@@ -66,10 +66,6 @@
     }
 }
 
-if (!empty($THEME->customcorners)) {
-    require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-}
-
 /**
 * resource_base is the base class for resource types
 *
@@ -170,14 +166,14 @@
 
         if((blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) {
             echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
 
         echo '<td id="middle-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
         echo '<div id="resource">';
 
     }
@@ -195,14 +191,14 @@
         $blocks_preferred_width = bounded_number(180, blocks_preferred_width($pageblocks[BLOCK_POS_RIGHT]), 210);
 
         echo '</div>';
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';
 
         if((blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $PAGE->user_is_editing())) {
             echo '<td style="width: '.$blocks_preferred_width.'px;" id="right-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
 
Index: theme/standardblue/footer.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardblue/footer.html,v
retrieving revision 1.14
diff -u -r1.14 footer.html
--- theme/standardblue/footer.html	4 Jan 2007 04:44:54 -0000	1.14
+++ theme/standardblue/footer.html	23 Nov 2007 16:19:40 -0000
@@ -1,19 +1,19 @@
+<?php
 
-</div> <!-- end div content -->
+    print_container_end(); // content container
 
-<div id="footer">
-<hr />
+    print_container_start(false, '', 'footer');
+    echo '<hr />';
 
-<?php
     echo '<p class="helplink">';
     echo page_doc_link(get_string('moodledocslink'));
     echo '</p>';
-?>
 
-<?php echo $loggedinas ?>
-<?php echo $homelink ?>
+    echo $loggedinas;
+    echo $homelink;
 
-</div>
+    print_container_end();
+?>
 </div>
 </body>
 </html>
Index: theme/standardblue/header.html
===================================================================
RCS file: /cvsroot/moodle/moodle/theme/standardblue/header.html,v
retrieving revision 1.24
diff -u -r1.24 header.html
--- theme/standardblue/header.html	24 Aug 2007 12:45:23 -0000	1.24
+++ theme/standardblue/header.html	23 Nov 2007 16:19:40 -0000
@@ -20,16 +20,16 @@
 <?php //Accessibility: 'headermain' is now H1, see theme/standard/styles_layout.css: .headermain
       if ($home) {  // This is what gets printed on the home page only
 ?>
-    <div id="header-home" class="clearfix">
+    <?php print_container_start(true, '', 'header-home'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } else if ($heading) {  // This is what gets printed on any other page with a heading
 ?>
-    <div id="header" class="clearfix">
+    <?php print_container_start(true, '', 'header'); ?>
         <h1 class="headermain"><?php echo $heading ?></h1>
         <div class="headermenu"><?php echo $menu ?></div>
-    </div>
+    <?php print_container_end(); ?>
 <?php } ?>
 <?php //Accessibility: breadcrumb trail/navbar now a DIV, not a table.
       if ($navigation) { // This is the navigation bar with breadcrumbs  ?>
@@ -42,4 +42,4 @@
         <hr />
 <?php } ?>
     <!-- END OF HEADER -->
-    <div id="content">
+    <?php print_container_start(false, '', 'content'); ?>
Index: mod/data/view.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/data/view.php,v
retrieving revision 1.70.2.1
diff -u -r1.70.2.1 view.php
--- mod/data/view.php	12 Oct 2007 16:09:45 -0000	1.70.2.1
+++ mod/data/view.php	23 Nov 2007 16:19:37 -0000
@@ -28,12 +28,7 @@
     require_once("$CFG->libdir/rsslib.php");
 
     require_once('pagelib.php');
-    
-    if (!empty($THEME->customcorners)) {
-        require_once($CFG->dirroot.'/lib/custom_corners_lib.php');
-    }
-    
-    
+
 /// One of these is necessary!
     $id    = optional_param('id', 0, PARAM_INT);  // course module id
     $d     = optional_param('d', 0, PARAM_INT);   // database id
@@ -244,13 +239,13 @@
         echo '<table id="layout-table"><tr>';
         if ((blocks_have_content($pageblocks, BLOCK_POS_LEFT) || $PAGE->user_is_editing())) {
             echo '<td style="width: '.$blocks_preferred_width.'px;" id="left-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_LEFT);
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
         echo '<td id="middle-column">';
-        if (!empty($THEME->customcorners)) print_custom_corners_start();
+        print_container_start();
     }
 
 /// Check to see if groups are being used here
@@ -554,13 +549,13 @@
 
 /// If we have blocks, then print the left side here
     if (!empty($CFG->showblocksonmodpages)) {
-        if (!empty($THEME->customcorners)) print_custom_corners_end();
+        print_container_end();
         echo '</td>';   // Middle column
         if ((blocks_have_content($pageblocks, BLOCK_POS_RIGHT) || $PAGE->user_is_editing())) {
             echo '<td style="width: '.$blocks_preferred_width.'px;" id="right-column">';
-            if (!empty($THEME->customcorners)) print_custom_corners_start();
+            print_container_start();
             blocks_print_group($PAGE, $pageblocks, BLOCK_POS_RIGHT);
-            if (!empty($THEME->customcorners)) print_custom_corners_end();
+            print_container_end();
             echo '</td>';
         }
         echo '</tr></table>';
Index: message/user.php
===================================================================
RCS file: /cvsroot/moodle/moodle/message/user.php,v
retrieving revision 1.29
diff -u -r1.29 user.php
--- message/user.php	18 Sep 2007 18:24:52 -0000	1.29
+++ message/user.php	23 Nov 2007 16:19:36 -0000
@@ -87,10 +87,8 @@
 
     echo '</td></tr></table>';
 
-    if (!empty($THEME->customcorners)) {
-        print_custom_corners_end(false, 'content');
-    }
-
-    echo '</div></div></body></html>'; // Close possible theme tables off
+    // this is hack!
+    print_container_end(); // container "content" started in header
+    echo '</div></body></html>'; // close page div started in header
 
 ?>

