<?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 title=\"\" 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 title=\"\" src=\"$imagesURL/tab_right.gif\" width=\"15\" height=\"23\"></td>
         </tr>
         </table></td>";
		}
		else
			$o = '';
		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 title=\"\" 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 title=\"\" 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 SimpleSection($module, $section_name, $tab_phrase, $title_phrase, $path, $script, $child,$parent,$left,$right)
	{
		// simplified method to add sections
		global $pathtoroot;
		$sn = explode(':', $section_name);
		$img_path = $module.'/admin/images';
		if( !isset($title_phrase) ) $title_phrase = $tab_phrase;

		$this->AddSection(	$section_name,$tab_phrase, $title_phrase,$path, $script,
		$img_path.'/icon46_'.$sn[1].'.gif', $img_path.'/icon24_'.$sn[1].'.gif',
		$child,$parent,$left,$right,0,'',1,null,null,null,$img_path.'/icon46_list_'.$sn[1].'.gif');
	}

	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=stripslashes($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;
				}

				if( defined('REQUIRE_LAYER_HEADER') )
				{

					$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 title=\"\" width=\"46\" height=\"46\" src=\"$icon\" align=\"absmiddle\">&nbsp;$caption<br>
              <img src='".$imagesURL."/spacer.gif' width=1 height=4><br>
              </td></tr></table>";
				}
				else
				{
					$o = '<!-- ADMIN TITLE -->
                		<!-- <DIV style="position:relative; z-Index: 1; background-color: #ffffff; padding-top:1px;"> -->
						<table cellpadding="0" cellspacing="0" border="0" width="100%">
          					<tr>
          						<td valign="top" class="admintitle" align="left" style="background: url('.$imagesURL.'/'.$bg_image.') top right; background-repeat: no-repeat;">
          							<img title="" 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
		$section = GetVar('section');
		if($section)
		{
			$section = explode(':', $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, $OtherSection = '')
	{
		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>";
			if($OtherSection) $node_key = $OtherSection;
			$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",'in-portal:emaillog',0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_sessions_log.gif");

$objSections->AddSection("in-portal:emaillog","la_tab_EmailLog","la_tab_EmailLog",$admin."/logs/","email_log.php",
$admin."/icons/icon46_email_log.gif",$admin."/icons/icon24_email_log.gif",
NULL,"in-portal:reports","in-portal:emaillog",NULL,0,"",1,NULL,NULL,NULL,$admin."/icons/icon46_list_email_log.gif");

/* Help */
$objSections->AddSection("in-portal:help","la_tab_Help","la_title_Help",$admin."/help/","manual.pdf",
$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","la_tab_Help","la_title_Help",$admin."/help/topics/","download.html",
$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);

?>