<?php

$sections = array();

class clsSection 
{
  var $m_sections;
  var $m_name;
  var $m_title;
  var $m_path;
  var $m_file;
  var $m_icon;
  var $m_icon_small;
  var $m_icon_list;
  var $m_child;
  var $m_parent;
  var $m_left;
  var $m_right;
  var $m_notree = 0;	
  var $m_notabs=0; 
  var $m_nonavbar=0;
  var $m_notitle=0;    
  var $m_toolbar=0;
  var $m_description = NULL;
  var $m_onclick=NULL;
  var $m_key;
  var $m_bar_title;
  var $m_bar_title_plain_text = "";

  function clsSection()
  {
      /* constructor */
  }

  function Get($name)
  {
      $var = "m_" . $name;
      return isset($this->$var) ? $this->$var : '';
  }

  function Set($name, $value)
  {	
      if (is_array($name))
      {
          for ($i=0; $i<sizeof($name); $i++)
          {	
              $var = "m_" . $name[$i];
              $this->$var = $value[$i];              
          }
      }
      else
      {
        $var = "m_" . $name;
        $this->$var = $value;
      }
  } 

  function IsJavaScriptLink()
  {
    $file = $this->Get('file');
    if(!$file) return false;
    
    return (substr($file, 0, 10) == 'javascript' || $file == '#') ? true : false;
  }

  function IconURL($large=1)
  {    
    global $rootURL;

    if($large==1)
    {    
      $url = $rootURL.$this->Get("icon");      
    }
	elseif($large==2)
	{	
		$url = $rootURL.$this->Get("icon_list");      
	}
    else
        $url = $rootURL.$this->Get("icon_small");      
    return $url;
  }

  function URL()
  {
    global $rootURL;
   
    $env = BuildEnv();

    if(!$this->IsJavaScriptLink()) 
    {    
      $url = $rootURL.$this->Get("path").$this->Get("file");
      if(strstr($url,"?"))
      {
        $url .= "&env=".$env;    
      }
      else
        $url .= "?env=".$env;
    }
    else
        $url = $this->Get("file");
    return $url;
  }

  /* functions to display navigation elements */
  function tab($envar)
  {
    global $imagesURL;
	
    $link = $this->URL();
    if(!$this->IsJavaScriptLink())
    {    
      if(!strstr($link,"env="))
          $link .= "?". $envar;     
    }
    $onclick = $this->Get("onclick");
    $caption = language($this->Get("name"));
    if(strlen($this->Get("name")))
    {    
      $o ="<!-- Tab: $caption -->
         <td><table bgcolor=\"#009FF0\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" onclick=\"\">
         <tr onclick=\"$onclick\">
         <td bgcolor=\"#009FF0\"><img alt=\"\" src=\"$imagesURL/tab_left.gif\" width=\"15\" height=\"23\"></td>
         <td nowrap bgcolor=\"#009FF0\" background=\"$imagesURL/tab_back.gif\" align=\"center\">
         <a href=\"$link\" class=\"tab2\" onClick=\"$onclick\">$caption</a><br>
         </td>
         <td bgcolor=\"#009FF0\"><img alt=\"\" src=\"$imagesURL/tab_right.gif\" width=\"15\" height=\"23\"></td>
         </tr>
         </table></td>";
    }
    return $o;
  }//Individual Tab

  function active_tab()
  {
	global $imagesURL, $envar;

    $link = $this->URL();
    $onclick = $this->Get("onclick");
    if(!$this->IsJavaScriptLink())
    {    
      if(!strstr($link,"env="))
          $link .= "?". $envar;      
    }
        
    $caption = language($this->Get("name"));

	if (strlen($caption)<=8)
		$backgr = "$imagesURL/tab_active_back3.jpg";
	else if (strlen($caption)<=20)
		$backgr = "$imagesURL/tab_active_back2.jpg";
	else
		$backgr = "$imagesURL/tab_active_back.jpg";

    $o = "<!-- Tab: $caption -->
          <td><table bgcolor=\"#FFFB32\" background=\"$backgr\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr>
          <td><img alt=\"\" src=\"$imagesURL/tab_active_left.gif\" width=\"15\" height=\"23\"></td>
          <td nowrap align=\"center\" background=\"$imagesURL/tab_active_back.gif\">
          <a href=\"$link\" class=\"tab\" onClick=\"$onclick\">$caption</a><br>
          </td>
          <td><img alt=\"\" src=\"$imagesURL/tab_active_right.gif\" width=\"15\" height=\"23\"></td></tr>
          </table></td>";
    return $o;    
  }//Active Tab
} /*clsSection*/

class clsSectionList
{
    var $sections;
//    var $section;
    var $current;

    function clsSectionList()
    {
        $this->sections = array();
        $this->current = "default";
    }

    function GetSection($section)
    {        
    	if(is_array($this->sections) && strlen($section))
    	{ 
    	  if(array_key_exists($section,$this->sections))
    	  {
           return $this->sections[$section];
    	  } 
    	  else
    	    return NULL;
    	}
		else
			return NULL;
    }

    function SetCurrentSection($section)
    {
        $this->current = $section;
    }

    function GetCurrentSection()
    {
        $ret = $this->GetSection($this->current);
        if(!is_object($ret))
            $ret = $this->GetSection("default");
        return $ret;
    }
   
    function AddSection($section,$name,$title,$path,$file,$icon,$icon_small, $child,$parent,$left,$right,
                    $notree=0,$onClick = "",$notabs=0,$nonavbar=0,$notitle=0,$toolbar=0,$icon_list="", $bar_title = "", $bar_title_plain_text = "")
    {     
      if($file == "subitems.php")
        $file .= "?section=$section";
    
      $s = new clsSection();

      $s->Set("name", $name);
      $s->Set("title",$title);
      $s->Set("path",  $path);
      $s->Set("file", $file);
      $s->Set("icon", $icon);
	  $s->Set("icon_list", $icon_list);
      $s->Set("icon_small", $icon_small);
      $s->Set("child", $child);
      $s->Set("parent", $parent);
      $s->Set("left", $left);
      $s->Set("right", $right);
      $s->Set("notree", $notree);	
      $s->Set("notabs", $notabs); 
      $s->Set("nonavbar", $nonavbar);
      $s->Set("notitle", $notitle);
      $s->Set("toolbar", $toolbar);
      $s->Set("description", NULL);
      $s->Set("onclick", $onClick);
      $s->Set("key",$section);
      $s->Set("bar_title",$bar_title);
      $s->Set("bar_title_plain_text", $bar_title_plain_text);

      if($parent != NULL)
      {    
        $p = $this->GetSection($parent);
        if(is_object($p))
        {        
          if(!strlen($p->Get("child")))
          {
            //echo "Setting child of $parent to $section<br>\n";
            $p->Set("child", $section); //set the parent if none set!
            $this->sections[$parent]=$p;
          }
        }
        if(!strlen($left) && !strlen($right))
        {        
          /* find first child w/ a null right value */
          foreach($this->sections as $secname => $subsection)
          {
            if($subsection->Get("parent") == $parent)
            {
              if(!strlen($subsection->Get("right")))
              {
                  $this->sections[$secname]->Set("right", $section);
                  $s->Set("left", $secname);
                  break;
              }
            }
          } 
        }       
      }
      $this->sections[$section]=$s;
    }

    function AddDescription($section,$desc)
    {      
      $sec = $this->GetSection($section);
      if(is_object($sec))
      {      
        $sec->Set("description",$desc);
        $this->sections[$section] = $sec;        
      }
    }

    function sectionURL($section)
    {
        return $this->sections[$section]->URL();
    }

    function SectionIconURL($section,$large=1)
    {
        return $this->sections[$section]->IconURL($large);
    }
           
    function BuildTree($element, $parent)
    {	
      global $pathtoroot,$envar;
      global $rootURL;

	  $org = $element;
      $element = strtolower($element);
      $j_el=str_replace("-","_",$element);
	  $j_el=str_replace(":","_",$j_el);
	  $j_par=str_replace("-","_",$parent);
	  $j_par=str_replace(":","_",$j_par);
	  $sec = $this->sections[$element];
	  if(is_object($sec))
	  {
	      $caption = $this->sections[$element]->Get("name");
      	  if(strlen($caption)==0)
          	$caption = $this->sections[$element]->Get("title");
      	  $caption = language($caption);
      	  $child =$this->sections[$element]->Get("child"); 
      	  $notree = "";
	  	  if( isset($this->sections[$child]) && is_object($this->sections[$child]) )
	    	$notree = $this->sections[$child]->Get("notree");
      	  if (($child == NULL) or ($notree==-1))
      	  {
          	print "var item = insDoc($j_par, gLnk(0, \"".$caption."\", \"".$this->SectionURL($element)."\"));\n";
          	print "item.iconSrc = '".$this->SectionIconURL($element,0)."';\n";
          	if($this->sections[$element]->Get("right")!=NULL)
              $this->BuildTree($this->sections[$element]->Get("right"), $parent);

          	return;
      	  }	  
      	  if ($child != NULL && $notree !=-1)
      	  {	//print "$j_el = insFld($j_par, gFld(\"".$sections[$element]['name']."\"));\n";

          	print "var $j_el = insFld($j_par, gFld(\"".$caption."\",\"".$this->SectionURL($element)."\"));\n";
          	print $j_el . ".iconSrc='".$this->SectionIconURL($element,0)."';\n";
          	if($this->sections[$element]->Get("right")!=NULL)
              $this->BuildTree($this->sections[$element]->Get("right"), $parent);

          	$parent = $element;
          	$this->BuildTree($this->sections[$element]->Get("child"), $parent);

      	  }
	  }	
    }

    function page_title()
    {
	  global $imagesURL,$adminURL, $objConfig;

      $o = "";
      $sec = $this->GetCurrentSection();     
      if($sec->Get("notitle")!="1")
      {      
        $caption = $sec->Get("title");

	   if(strlen($caption)==0)
       {
          if(strlen($sec->Get("parent")))
          {
              $p = $this->GetSection($sec->Get("parent"));
              if(is_object($p))
              {
                $caption = $p->Get("title");
                $icon = $p->IconURL(1);
              }
          }
        }
        else
         $icon = $sec->IconURL(1);
        $logout_link = $adminURL."/index.php";
        if(strlen($caption))
        {
            if($sec->Get("key")=="in-portal:root")
            {
                $caption=$objConfig->Get("Site_Name");
            }
            else
            {            
                $caption = admin_language($caption);
            }
		$bg_image = 'logo_bg.gif';
		$replace_modules = Array('in-link','in-news','in-bulletin');
		foreach($replace_modules as $r_module)
			if( $this->IsModule($r_module) )
			{
				$bg_image = 'logo_bg_'.$r_module.'.gif';
				break;
			}
         
          $o = "<DIV style='position:relative; z-Index: 1; background-color: #ffffff; padding-top:1px;'>
                <div style='position:absolute; width:100%;top:0px;' align='right'>
                <img src='".$imagesURL.'/'.$bg_image."'></div><img src='".$imagesURL."/spacer.gif' width=1 height=7>
                <br><div style='z-Index:1; position:relative'>"; 
          $o .= "<!-- ADMIN TITLE --><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">
              <tr><td valign=\"top\" class=\"admintitle\" align=\"left\">
              <img alt=\"\" width=\"46\" height=\"46\" src=\"$icon\" align=\"absmiddle\">&nbsp;$caption<br>
              <img src='".$imagesURL."/spacer.gif' width=1 height=4><br>
              </td></tr></table>";
        }
      }
      return $o;
    }
	
	function IsModule($module_name)
	{
		// checks if there is requested module used in right frame
		
		// module folder match
		$url_split = explode('/', $_SERVER['PHP_SELF']);
		if( in_array($module_name, $url_split) ) return 1;
		
		// module section match
		if( isset($_REQUEST['section']) )
		{
			$section = explode(':', $_GET['section']);
			if( $section[0] == $module_name ) return true;
		}
		return false;
	}
	
    function page_tabs($envar)
    {    
      $showtabs=0;
      $o = '';
      $sec = $this->GetCurrentSection();
      if ($sec->Get("notabs")!=1)
	  { 
        //get starting node
        $node = $sec;
        while (strlen($node->Get("left")))
		{            
			$node = $this->GetSection($node->Get("left"));
        }
        if($node)
        {
        
		  $o = "<!-- TABS --><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\"><tr>
                <td align=\"right\" width=\"100%\"><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" height=\"23\">
                <tr>";		
          $showtabs=1;
        }
		//traverse and print tabs
		while ( isset($node) && is_object($node) )
		{	            
			if ($node->Get("key") == $this->current)
				$o .= $node->active_tab();
			else
				$o .= $node->tab($envar);

            $right = $node->Get("right");
            unset($node);
            if(strlen($right))
			  $node = $this->GetSection($right);
		}
        if($showtabs)
        {
		  $o .= "</tr></table></td></tr></table>";
        }
      }
      return $o;
	}

    function section_header($envar,$navbar=NULL,$extra_title=NULL, $no_help = false)
    {
	  global $pathtoroot;
	  global $pathtolocal;
	  global $imagesURL;
	  global $adminURL;                            
      global $objConfig;

		$output = '';
      $HelpIcon = $imagesURL."/blue_bar_help.gif";
      $node = $this->GetCurrentSection();
      if(is_object($node))
      {
        $helpURL = $adminURL.'/help/help.php?'.( substr($envar,0,3) == 'env' ? '' : 'env=').$envar.'&destform=popup';
        $node_key = $node->Get('key');
        $o = "<!-- SECTION NAVIGATOR -->";
        //background="'.$imagesURL.'/tabnav_left.jpg"
        if($no_help == false) $o .= '<form name="help_form" id="help_form" action="'.$helpURL.'" method="post"><input type="hidden" id="section" name="section" value=""></form>';
        $o .= '<table border="0" cellpadding="2" cellspacing="0" class="tableborder_full" width="100%" height="30">';
        $o .= '<tr><TD class="header_left_bg" width="100%">';
        
		//get path up to the parent node
		while ( isset($node) && is_object($node) )
		{
              if(!strlen($extra_title))
              { 
              	$bar_title = $node->Get("bar_title"); 
              	$bar_title_plain_text = $node->Get("bar_title_plain_text"); 

                if(strlen($bar_title) && !is_null($bar_title))
                	$caption = language($bar_title);
                elseif (is_null($bar_title))
                	$caption = "";
                else
              		$caption = language($node->Get("name"));
              		
              	if (strlen($bar_title_plain_text))	
              		$caption.= $bar_title_plain_text;
              }
              else              
                $caption = $extra_title;
            
            $output		= "<span class=\"tablenav_link\">$caption</span>";
            unset($node);
       }
       
	   $o  .= $output;
        if(strlen($navbar))
           $o .= "::<b>".$navbar."</b>";

        $o .= "</td><td align=\"right\" class=\"tablenav\" background=\"$imagesURL/tabnav_back.jpg\" width=\"10\">";
	    if($no_help == false) $o .= "<a class=\"link\" onclick=\"ShowHelp('".$node_key."');\"><img src=\"$HelpIcon\" border=\"0\"></A>";
        $o .= "</td></tr></table><!-- END SECTION NAVIGATOR -->";
      }
      return $o;
    }

} /* clsSectionList */

$objSections = new clsSectionList();
$objSections->AddSection("in-portal:root", $objConfig->Get("Site_Name"), $objConfig->Get("Site_Name"), $admin."/","subitems.php",
                         $admin."/icons/icon46_site.gif", $admin."/icons/icon24_site.gif",
                         "in-portal:site", NULL, NULL,"in-portal:users",0,"",1, NULL,NULL,NULL, "", "la_section_overview");

$objSections->AddSection("in-portal:site", "la_tab_Site_Structure","la_title_Site_Structure", $admin."/","subitems.php",
                         $admin."/icons/icon46_struct.gif", $admin."/icons/icon24_struct.gif",
                         "in-portal:browse", "in-portal:root", NULL,"in-portal:users",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_struct.gif","la_selecting_categories");

$objSections->AddSection("in-portal:users","la_tab_Community","la_title_Community",$admin."/","subitems.php",
                         $admin."/icons/icon46_community.gif",$admin."/icons/icon24_community.gif",                         NULL,"in-portal:root","in-portal:site","in-portal:modules",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_community.gif","la_section_overview");

$objSections->AddSection("in-portal:modules","la_tab_ModulesSettings","la_title_Settings",$admin."/","subitems.php",
                         $admin."/icons/icon46_modules.gif",$admin."/icons/icon24_modules.gif",NULL,                         "in-portal:root","in-portal:users","in-portal:reports",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_modules.gif","la_section_overview");

$objSections->AddSection("in-portal:mod_status","la_tab_Modules","la_title_Module_Status",$admin."/modules/","mod_status.php",
                         $admin."/icons/icon46_modules.gif",$admin."/icons/icon24_modules.gif",NULL, NULL,NULL,NULL,0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_modules.gif");

$objSections->AddSection("in-portal:addmodule","la_tab_Modules","la_title_Add_Module",$admin."/modules/","addmodule.php",
                         $admin."/icons/icon46_modules.gif",$admin."/icons/icon24_modules.gif",NULL, NULL,NULL,NULL,0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_modules.gif");

$objSections->AddSection("in-portal:reports","la_tab_Reports","la_title_Reports",$admin."/","subitems.php",
                         $admin."/icons/icon46_summary_logs.gif",$admin."/icons/icon24_summary_logs.gif",NULL,                    "in-portal:root","in-portal:modules","in-portal:system",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_summary_logs.gif","la_section_overview");

$objSections->AddSection("in-portal:log_summary","la_tab_Summary","la_tab_Summary",$admin."/logs/","summary.php",
                         $admin."/icons/icon46_summary.gif",$admin."/icons/icon24_summary.gif",NULL,
                         "in-portal:reports",NULL,"in-portal:searchlog",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_summary.gif");

$objSections->AddSection("in-portal:searchlog","la_tab_SearchLog","la_tab_SearchLog",$admin."/logs/","searchlog.php",
                         $admin."/icons/icon46_search_log.gif",$admin."/icons/icon24_search_log.gif",
                         NULL,"in-portal:reports","in-portal:log_summary","in-portal:sessionlog",0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_search_log.gif");

$objSections->AddSection("in-portal:sessionlog","la_tab_SessionLog","la_tab_SessionLog",$admin."/logs/","session_list.php",
                         $admin."/icons/icon46_sessions_log.gif",$admin."/icons/icon24_sessions_log.gif",
                         NULL,"in-portal:reports","in-portal:sessionlog",NULL,0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_sessions_log.gif");

/* Help */
$objSections->AddSection("in-portal:help","la_tab_Help","la_title_Help",$admin."/help/","help.php",
                         $admin."/icons/icon46_help.gif",$admin."/icons/icon24_help.gif",
                         NULL,"in-portal:root","in-portal:system",NULL,0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_help.gif");

$objSections->AddSection("in-portal:help_overview","la_tab_Overview","la_title_Help",$admin."/help/","help.php",
                         $admin."/icons/icon46_help.gif",$admin."/icons/icon24_help.gif",
                         NULL,"in-portal:help",NULL,"in-portal:help_ch1",NULL,NULL,NULL,NULL,NULL,NULL,$admin."/icons/icon46_list_help.gif");
$objSections->AddSection("in-portal:help_ch1","Chapter 1","Chapter 1",$admin."/help/","help.php",
                         $admin."/icons/icon46_help.gif",$admin."/icons/icon24_help.gif",
                         NULL,"inportal:help","in-portal:help_overview","in-portal:help_ch2");
$objSections->AddSection("in-portal:help_ch2","Chapter 2","Chapter 2",$admin."/help/","help.php",
                         $admin."/icons/icon46_help.gif",$admin."/icons/icon24_help.gif",
                         NULL,"inportal:help","in-portal:help_ch1",NULL);

/* Help ends */
$objSections->AddSection("in-portal:item_select","la_title_Select_Item","Select Item",$admin."/","item_select.php","","",
                         NULL,NULL,NULL,0,"",1,1);

$objSections->AddSection("in-portal:rel_select","la_title_Select_Target_Item","Select Item",$admin."/","rel_select.php","","",
                         NULL,NULL,NULL,0,"",1,0,1,1);

$NewButtons = array();
/* each module will add to the array declared below, which contains the info for the
   'new' button for the module's Browse data.  The array is an array of arrays,
   and the subarray should contain the following indexes:

   ImagePath = URL to the directory containing the image
   Action = Action attribute of the image (this is also the "base name" of the image
   Alt = Image ALT value
   Tab = If set, button will only be displayed when this div is active

*/

$m = GetModuleArray("admin");
if(is_array($m))
{ 
 foreach($m as $key=>$value) 
  {
    $mod = $pathtoroot . $value . "admin/include/navmenu.php";
    include_once($mod);
  }
}
$objSections->AddSection("default","","",$admin."/","#",NULL,NULL,NULL,NULL,NULL,NULL);

?>