<?php
class clsViewMenu
{
	var $FilterFields;
	var $CurrentFilter;
	var $CurrentSortField;
	var $CurrentSortOrder;
	var $SortFields;
	var $FilterVar;  //Config name for the current filter value
	var $SortVar; //config sort name
	var $OrderVar; //sort order var name
	var $FilterMax;
	var $DefaultSortField;
	
	var $PerPageVar;
	var $PerPageValue;
	
	var $CheckboxName;
	
	function clsViewMenu()
	{
		$this->FilterFields = array();
		$this->SortFields = array();
		$this->CurrentFilter =0;
		$this->FilterMax = 0;
		$this->CurrentSortOrder = "";
		$this->CurrentSortField = "";
	}

	function AddFilterField($Label,$BitPlace)
	{
	  $this->FilterFields[$Label]=$BitPlace;	
	}
	
	function AddSortField($Field,$Label,$IsDefault=FALSE)
	{
		$this->SortFields[$Field] = $Label;
		if($IsDefault)
		  $this->DefaultSortField = $Field;
	}
			
	function GetViewMenuJS($imagesURL)
	{
		$FilterVal = (int)$this->CurrentFilter;
		$FilterVar = $this->FilterVar;
		$fMax = $this->FilterMax;
		$sOrder = $this->CurrentSortOrder;
		$sOrderVar = $this->OrderVar;
		$sField = $this->CurrentSortField;
		$sDefault = $this->DefaultSortField;
		if(!strlen($sField))
		  $sField = $sDefault;
		if(!strlen($sOrder))
		  $sOrder = "asc";
		  
		$AllValue = $this->FilterMax;		
		$PerPageVal = $this->PerPageValue;
		$PerPageVar = $this->PerPageVar; 
		$SortVar = $this->SortVar;
		$CheckboxName = $this->CheckboxName;
				
		ob_start();
	 	print <<<END

var FilterView=$FilterVal;
var PerPage = $PerPageVal;

function fwLoadMenus() 
{	
	var SortOrder='$sOrder';
	var SortField='$sField';
	var SortDefault='$sDefault';
	
END;
if(count($this->FilterFields)>0)
{	
echo "
	window.menu_filter = new Menu(lang_View);
	menu_filter.imagePath = '$imagesURL'+'/';
    menu_filter.addMenuItem(lang_All,\"config_val('$FilterVar',$AllValue);\",FilterView==$AllValue);
    menu_filter.addMenuSeparator();
    
";
		foreach($this->FilterFields as $Label=>$Bit)
		{
			if($Label =="-")
			{
				print "     menu_filter.addMenuSeparator();\n";
			}
			else
				print "     menu_filter.addMenuItem('$Label',\"FlipBit('$FilterVar',FilterView,$Bit);\",BitStatus(FilterView,$Bit));\n";
		}
}		
else 
  echo "var menu_filter = false;\n";
		print <<<END
	window.menu_sorting = new Menu(lang_Sort);
    menu_sorting.imagePath = "$imagesURL"+'/';
    menu_sorting.addMenuItem(lang_Asc,"config_val('$sOrderVar','asc');",RadioIsSelected(SortOrder,'asc'));
    menu_sorting.addMenuItem(lang_Desc,"config_val('$sOrderVar','desc');",RadioIsSelected(SortOrder,'desc'));
    menu_sorting.addMenuSeparator();	
    menu_sorting.addMenuItem(lang_Default,"config_val('$SortVar','$sDefault');","");
    
END;
		foreach($this->SortFields as $field=>$label)
		{    		  
    		print "    menu_sorting.addMenuItem('$label',\"config_val('$SortVar','$field');\",RadioIsSelected(SortField,'$field'));\n";
		}
		print <<<END

	window.menu_results = new Menu('Items '+lang_PerPage);
    menu_results.imagePath = "$imagesURL"+'/';
	menu_results.addMenuItem("10","config_val('$PerPageVar', '10');",RadioIsSelected(PerPage,10));
	menu_results.addMenuItem("20","config_val('$PerPageVar', '20');",RadioIsSelected(PerPage,20));
	menu_results.addMenuItem("50","config_val('$PerPageVar', '50');",RadioIsSelected(PerPage,50));
	menu_results.addMenuItem("100","config_val('$PerPageVar', '100');",RadioIsSelected(PerPage,100));
	menu_results.addMenuItem("500","config_val('$PerPageVar', '500');",RadioIsSelected(PerPage,500));

	window.menu_select = new Menu(lang_Select);
	menu_select.addMenuItem(lang_All,"$CheckboxName.selectAll(true);","");
	menu_select.addMenuItem(lang_Unselect,"$CheckboxName.selectAll(false);","");
	menu_select.addMenuItem(lang_Invert,"$CheckboxName.invertItems();","");

	window.view_menu = new Menu("root");
    view_menu.imagePath = "$imagesURL"+'/';
    if(menu_filter)
		window.view_menu.addMenuItem(menu_filter);
    window.view_menu.addMenuItem(menu_sorting);
	window.view_menu.addMenuItem(menu_results);
	window.view_menu.addMenuItem(menu_select);

	window.triedToWriteMenus = false;
    window.view_menu.writeMenus();
} // fwLoadMenus()
END;
		$o = ob_get_contents();
		ob_end_clean();
		return $o;
	}
}