<?php
 
//////////////////////////////////////////////////////////////////////////////
 
// Class: htRoundedMenus
 
//
 
// Make sure you get the GIFs for the corners and the 1x1 transparent pixel.
 
// Otherwise, the menus won't look right.
 
// The GIFs, this file, and example usage are available at:
 
//    http://www.harrytravis.com/htRoundedMenus/htRoundedMenus.zip
 
//
 
// Add menus with rounded corners to your web page.
 
// See rounded.php for example usage.
 
// This is fairly procedural instead of OO, but some things should be...
 
//
 
// This is absolutely free.
 
// Use it at your own risk.
 
// Do whatever you want with it.
 
//
 
// I'd be interested to hear if you find it useful.
 
//
 
// Author: Harry Travis, [email protected]
 
//////////////////////////////////////////////////////////////////////////////
 
class htRoundedMenus
 
{
 
   ///////////////////////////////////////////////////////////////////////////
 
   // Instantiate one htRoundedMenus object per page.
 
   function htRoundedMenus()
 
   {
 
      // overwrite these values to customize your menus
 
      $this->background_color = "99CCCC";
 
      $this->foreground_color = "FFFF99";
 
      $this->title_font_style = "color:ffff99; text-decoration:none; font-weight:bold; font-size:12pt; font-family:trebuchet,trebuchet MS,arial,sans-serif;";
 
      $this->option_font_style = "color:99cccc; text-decoration:none; font-size:12pt; font-family:trebuchet,trebuchet MS,arial,sans-serif;";
 
 
      // width of the menu (pixels)
 
      $this->menu_width = 150;
 
 
      // space between menus
 
      $this->menu_padding = 3;
 
 
      // URLs for left and right rounded corners
 
      $this->left_corner = "left_corner.gif";
 
      $this->right_corner = "right_corner.gif";
 
      $this->one_by_one = "1x1.gif";
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   // For each menu on your page, call this method.
 
   // URL is optional.
 
   function NewMenu($title_text,$title_url="")
 
   {
 
      $this->title_text = $title_text;
 
      $this->title_url = $title_url;
 
      $this->options = array();
 
      $this->inner_html = "";
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   // For each option on a menu, call this method.
 
   // URL is optional.
 
   // Do not add two options with same title to a menu.
 
   function AddOption($text,$url="")
 
   {
 
      $this->options[$text] = $url;
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   // Setting inner HTML replaces all options.
 
   // Options and inner HTML are mutually exclusive.
 
   function SetInnerHTML($html)
 
   {
 
      $this->inner_html = $html;
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   function OpenMenu()
 
   {
 
      if ( $this->title_url )
 
      {
 
         $title = "<a style='".$this->title_font_style."' ".
 
                  "href='".$this->title_url."'>".$this->title_text."</a>";
 
      }
 
      else
 
      {
 
         $title = "<font style='".$this->title_font_style."'>".
 
                  $this->title_text."</font>";
 
      }
 
      ?>
 
      <table border=0 cellpadding=0 cellspacing=0 bgcolor="<?=$this->background_color?>">
 
         <tr>
 
            <?php // each corner is 4 pixels wide, so subtract 8 from menu width for title cell ?>
 
            <td><img src="<?=$this->left_corner?>" width=4 height=25 border=0></td>
 
            <td width="<?=$this->menu_width-8?>" style="<?=$this->title_font_style?>" valign="middle">
 
               <?=$title?>
 
            </td>
 
            <td><img src="<?=$this->right_corner?>" width=4 height=25 border=0></td>
 
         </tr>
 
      <?php
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   function CloseMenu()
 
   {
 
      // the height of this img sets the spacing between menus
 
      ?>
 
         <tr><td colspan=3><img src="<?=$this->one_by_one?>" width="<?=$this->menu_width?>" height="<?=$this->menu_padding?>" border=0></td></tr>
 
      </table>
 
      <?php
 
   }
 
   
 
   ///////////////////////////////////////////////////////////////////////////
 
   function WriteMenuBody()
 
   {
 
      // do nothing if no options and no HTML
 
      if ( !$this->inner_html && count($this->options) == 0 )
 
      {
 
         return;
 
      }
 
 
      // open menu body
 
      ?>
 
      <tr>
 
         <td colspan=3>
 
            <table bordercolor="<?=$this->background_color?>" bgcolor="<?=$this->foreground_color?>" border=1 borderstyle="solid" cellpadding=3 cellspacing=0 width="100%">
 
               <tr><td>
 
      <?php
 
 
      // write inner HTML
 
      if ( $this->inner_html ) 
 
      {
 
         echo "<font style='".$this->option_font_style."'>";
 
         echo $this->inner_html;
 
         echo "</font>\n";
 
      }
 
      // write options
 
      else if ( count($this->options) > 0 )
 
      {
 
         foreach ($this->options as $text => $url )
 
         {
 
            if ( $url )
 
            {
 
               $op = "<a style='".$this->option_font_style."' href='$url'>$text</a>\n";
 
            }
 
            else
 
            {
 
               $op  = "<font style='".$this->option_font_style."'>$text</font>";
 
            }
 
            echo " $op<br>";
 
         }
 
      }
 
 
      // close menu body
 
      ?>
 
               </td></tr>
 
            </table>
 
         </td>
 
      </tr>
 
      <?php
 
   }
 
 
   ///////////////////////////////////////////////////////////////////////////
 
   // After all options have been added to a menu, call this method.
 
   // It prints out the HTML for the menu.
 
   function WriteMenu()
 
   {
 
      $this->OpenMenu();
 
      $this->WriteMenuBody();
 
      $this->CloseMenu();
 
      return;
 
   }   
 
}
 
?>
 
 |