Your IP : 216.73.217.53


Current Path : /home/bonneesp/www/administrator/components/com_tabulizer/views/rule/
Upload File :
Current File : /home/bonneesp/www/administrator/components/com_tabulizer/views/rule/view.html.php

<?php
/**
 * @version		6.5.0 tabulizer $
 * @package		tabulizer
 * @copyright	Copyright © 2011 - All rights reserved.
 * @license		GNU/GPL
 * @author		Dimitrios Mourloukos
 * @author mail	info@alterora.gr
 * @website		www.tabulizer.com
 * 
 */


// no direct access
defined('_JEXEC') or die('Restricted access');

jimport( 'joomla.application.component.view' );

class tabulizerViewRule extends JViewLegacy
{
	function __construct(){
		// add tabulizer CSS to override form styling
		$doc=JFactory::getDocument();
		$cssfile = TabulizerPath::getURLPath('tabulizer.css', 'admin_css');		
		//$doc->addStyleSheet($cssfile);
        TabulizerEnqueue::css_file($cssfile);
		
		parent::__construct();		
	}

	function display($tpl = null){				
		parent::display($tpl);
	}	
	
	function displayNew($tpl = null) {
		global $option, $mainframe;

        $return_urls = array();
		
		$model = $this->getModel();
		$ruleset = $model->getRuleset();				
		$model->getReturnURLs($return_urls);				
		
		$rule = array(
			'edit'=> false,			
			'rule_id' => count($ruleset['rules']),
			'ruleset_name' => $ruleset['name'],  
			'filename' => $ruleset['filename']						
		);
		$lists = $this->getEditRuleLists($rule);																
		
		$this->lists =  $lists;			
		$this->return_urls =  $return_urls;			
		
		parent::display($tpl);	
	}

	function displayEdit($tpl = null){		
		global $option, $mainframe;

        $return_urls = array();
		
		$model = $this->getModel();
		$rule = $model->getRule();		
		$model->getReturnURLs($return_urls);				
		
		$rule['edit'] = true;
		$lists = $this->getEditRuleLists($rule);
		
		$this->lists =  $lists;			
		$this->return_urls =  $return_urls;			
		
		parent::display($tpl);
	}	
	
	function getEditRuleLists($rule){		
		$lists = array();					
		
		$select_selected = 'selected="selected"';
		$checkbox_selected = 'checked="checked"';
				
		$row_selected = $column_selected = $cell_selected = '';
		$element_value = $element_section = $range_value = $style_value = $graph_value = $prepend_value = $append_value = '';
		$split_value = $filter_value = $column_filter_value = $sort_value = $pagination_value = $scroll_value = $theme_value = $responsive_value = $format_value = $calculation_value = $modification_value = $add_files = null;
		$data_type = DATA_TYPE_UNDEFINED; 
		$data_type_params = '';
		$autospan_selected = false;
        $th_tag_selected = false;
        $remove_selected = false;
		$range_key = 0;
        $priority = 0;
		
		# element
		$selected_value = (empty($rule['element']))?'row':$rule['element'];
		$options = array('none'=>JText::_('COM_TABULIZER_ELEMENT_TYPE_SELECT'), 'row'=>JText::_('COM_TABULIZER_ROW'), 'column'=>JText::_('COM_TABULIZER_COLUMN'), 'cell'=>JText::_('COM_TABULIZER_CELL'), 'table'=>JText::_('COM_TABULIZER_TABLE'));
		$attributes = array('onchange'=>'updateElementType(this)');
		$lists['element'] = TabulizerForm::getSelectCtrl('element', $selected_value, $options,$attributes);				
		$lists['element_type_value'] = $selected_value;
				
		# element section
		if (!empty($rule['element_section'])) {				
			$element_section = $rule['element_section'];												
		}
		$lists['element_section'] = TabulizerForm::getTextCtrl('element_section', $element_section);
				
		# range		
		if (!empty($rule['range'])) {				
			$range_value = $rule['range'];												
		}
		$lists['range'] = TabulizerForm::getTextCtrl('range', $range_value);
		
		# range key
		if (!empty($rule['range_key'])) {
			$range_key = $rule['range_key'];												
		}
		$lists['range_key'] = TabulizerForm::getTextCtrl('range_key', $range_key);

        # priority
        if (!empty($rule['priority'])) {
            $priority = $rule['priority'];
        }
        $lists['priority'] = TabulizerForm::getTextCtrl('priority', $priority);
		
		# style		
		if (!empty($rule['style'])) {
			$style_value = $rule['style'];		
		}		
		$lists['style'] = TabulizerForm::getTextCtrl('style', $style_value);

        # attribute
        if (!empty($rule['attribute'])) {
            list($attribute_name,$attribute_value) = explode(ATTRIBUTE_SEPARATOR,$rule['attribute'],2);
        } else {
            $attribute_name = $attribute_value = '';
        }
        $lists['attribute'] = '<div class="data_format_params"><table><tbody><tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ELEMENT_ATTRIBUTE_NAME').':</td><td>'.TabulizerForm::getTextCtrl('attribute_name', $attribute_name).'</td></tr><tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ELEMENT_ATTRIBUTE_VALUE').':</td><td>'.TabulizerForm::getTextCtrl('attribute_value', $attribute_value).'</td></tr></tbody></table></div>';
		
		# autospan
		if (!empty($rule['autospan'])) {
			$autospan_selected = true;	
		}					
		$lists['autospan'] = TabulizerForm::getCheckboxCtrl('autospan', '1', $autospan_selected) . JText::_('COM_TABULIZER_AUTOSPAN_SELECTED');

        # th tag
        if (!empty($rule['th_tag'])) {
            $th_tag_selected = true;
        }
        $lists['th_tag'] = TabulizerForm::getCheckboxCtrl('th_tag', '1', $th_tag_selected) . JText::_('COM_TABULIZER_TH_TAG_SELECTED');

        # remove
        if (!empty($rule['remove'])) {
            $remove_selected = true;
        }
        $lists['remove'] = TabulizerForm::getCheckboxCtrl('remove', '1', $remove_selected) . JText::_('COM_TABULIZER_REMOVE_SELECTED');

		# format
		$format_vars = array('text_format','numeric_decimals', 'numeric_dec_point', 'numeric_thousands_sep', 'currency_decimals', 'currency_dec_point', 'currency_thousands_sep', 'currency_symbol', 'currency_symbol_order','date_format');
		foreach ($format_vars as $format_var) {
			$$format_var = null;
		}
		
		if (!empty($rule['format'])) {
			$format_value = $rule['format'];
			list($data_type,$data_type_params) = explode(DATA_TYPE_SEPARATOR,$format_value);
			$data_type_params = html_entity_decode($data_type_params,ENT_QUOTES,'UTF-8');
			
			switch ($data_type) {
				case DATA_TYPE_TEXT: 					
					$text_format = $data_type_params;
					break;
				case DATA_TYPE_NUMERIC: 
					list($numeric_decimals, $numeric_dec_point, $numeric_thousands_sep) = explode(FORMAT_NUMERIC_SEPARATOR, $data_type_params);
					break;
				case DATA_TYPE_CURRENCY: 
					list($currency_decimals, $currency_dec_point, $currency_thousands_sep, $currency_symbol, $currency_symbol_order) = explode(FORMAT_CURRENCY_SEPARATOR, $data_type_params);
					break;
				case DATA_TYPE_DATE: 
					$date_format = $data_type_params;
					break;
			}
		}						
					
		$lists['format'] = '';	
			
		$options = array(DATA_TYPE_UNDEFINED => JText::_('COM_TABULIZER_DATA_TYPE_UNDEFINED'), 
						DATA_TYPE_TEXT => JText::_('COM_TABULIZER_DATA_TYPE_TEXT'), 
						DATA_TYPE_NUMERIC => JText::_('COM_TABULIZER_DATA_TYPE_NUMERIC'), 
						DATA_TYPE_CURRENCY => JText::_('COM_TABULIZER_DATA_TYPE_CURRENCY'), 
						DATA_TYPE_DATE => JText::_('COM_TABULIZER_DATA_TYPE_DATE'));	
		$selected_value = empty($data_type)?DATA_TYPE_UNDEFINED:$data_type;
		$attributes = array('onChange'=>'updateDataType(this)');
		$lists['format'] .= TabulizerForm::getSelectCtrl('format_data_type',$selected_value,$options,$attributes);				
		
		$format_text_params_div_class = $format_numeric_params_div_class = $format_currency_params_div_class = $format_date_params_div_class = 'hidden_span';
		switch ($data_type) {
			case DATA_TYPE_TEXT: $format_text_params_div_class = ''; break;
			case DATA_TYPE_NUMERIC: $format_numeric_params_div_class = ''; break;
			case DATA_TYPE_CURRENCY: $format_currency_params_div_class = ''; break;
			case DATA_TYPE_DATE: $format_date_params_div_class = ''; break; 			
		}		
			
		$options = array(FORMAT_TEXT_UPPERCASE => JText::_('COM_TABULIZER_FORMAT_TEXT_UPPERCASE'),
						FORMAT_TEXT_LOWERCASE => JText::_('COM_TABULIZER_FORMAT_TEXT_LOWERCASE'),
						FORMAT_TEXT_UCFIRST => JText::_('COM_TABULIZER_FORMAT_TEXT_UCFIRST'),
						FORMAT_TEXT_UCWORDS => JText::_('COM_TABULIZER_FORMAT_TEXT_UCWORDS'));	
		$selected_value = empty($text_format)?FORMAT_TEXT_UPPERCASE:$text_format;
		$format_text_params_options = $this->getSelectOptions($options, $selected_value);					
		
		$numeric_decimals_options = '';
		$currency_decimals_options = '';
		for ($i=0;$i<10;$i++) {
			if ($i==$numeric_decimals) {
				$numeric_decimals_options .= '<option value="'.$i.'" '.$select_selected.'>'.$i.'</option>';
			} else {
				$numeric_decimals_options .= '<option value="'.$i.'">'.$i.'</option>';
			}	
			if ($i==$currency_decimals) {
				$currency_decimals_options .= '<option value="'.$i.'" '.$select_selected.'>'.$i.'</option>';
			} else {
				$currency_decimals_options .= '<option value="'.$i.'">'.$i.'</option>';
			}	
		}				
					
		$options = array(FORMAT_NUMERIC_DEC_POINT_COMMA => JText::_('COM_TABULIZER_FORMAT_NUMERIC_DEC_POINT_COMMA'), FORMAT_NUMERIC_DEC_POINT_PERIOD => JText::_('COM_TABULIZER_FORMAT_NUMERIC_DEC_POINT_PERIOD'));
		
		$selected_value = empty($numeric_dec_point)?FORMAT_NUMERIC_DEC_POINT_PERIOD:$numeric_dec_point;
		$numeric_dec_point_options = $this->getSelectOptions($options, $selected_value);				
		
		$selected_value = empty($numeric_thousands_sep)?FORMAT_NUMERIC_DEC_POINT_COMMA:$numeric_thousands_sep;
		$numeric_thousands_sep_options = $this->getSelectOptions($options, $selected_value);	
		
		$selected_value = empty($currency_dec_point)?FORMAT_NUMERIC_DEC_POINT_PERIOD:$currency_dec_point;
		$currency_dec_point_options = $this->getSelectOptions($options, $selected_value);		
		
		$selected_value = empty($currency_thousands_sep)?FORMAT_NUMERIC_DEC_POINT_COMMA:$currency_thousands_sep;
		$currency_thousands_sep_options = $this->getSelectOptions($options, $selected_value);
		
		$currency_symbol = empty($currency_symbol)?'&euro;':$currency_symbol;
			
		$options = array(FORMAT_CURRENCY_SYMBOL_ORDER_NONE => JText::_('COM_TABULIZER_FORMAT_CURRENCY_SYMBOL_ORDER_NONE'), FORMAT_CURRENCY_SYMBOL_ORDER_BEFORE => JText::_('COM_TABULIZER_FORMAT_CURRENCY_SYMBOL_ORDER_BEFORE'), FORMAT_CURRENCY_SYMBOL_ORDER_AFTER => 	JText::_('COM_TABULIZER_FORMAT_CURRENCY_SYMBOL_ORDER_AFTER'));
		$selected_value = empty($currency_symbol_order)?FORMAT_CURRENCY_SYMBOL_ORDER_NONE:$currency_symbol_order;
		$currency_symbol_order_options = $this->getSelectOptions($options, $selected_value);			
		
		$options = array(FORMAT_DATE_DDMMYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYY_1'),
						FORMAT_DATE_DDMMYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYY_2'),
                        FORMAT_DATE_DDMMYY_3 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYY_3'),
						FORMAT_DATE_MMDDYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_MMDDYY_1'),
						FORMAT_DATE_MMDDYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_MMDDYY_2'),									
						FORMAT_DATE_DDMMYYYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYYYY_1'),
						FORMAT_DATE_DDMMYYYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYYYY_2'),
                        FORMAT_DATE_DDMMYYYY_4 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYYYY_4'),
						FORMAT_DATE_DDMMYYYY_3 => JText::_('COM_TABULIZER_FORMAT_DATE_DDMMYYYY_3'),
						FORMAT_DATE_MMDDYYYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_MMDDYYYY_1'),									
						FORMAT_DATE_MMDDYYYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_MMDDYYYY_2'),
						FORMAT_DATE_MMDDYYYY_3 => JText::_('COM_TABULIZER_FORMAT_DATE_MMDDYYYY_3'),
						FORMAT_DATE_dDDMMYYYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DDDMMYYYY_1'),
						FORMAT_DATE_dDDMMYYYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_DDDMMYYYY_2'),									
						FORMAT_DATE_dMMDDYYYY_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DMMDDYYYY_1'),
						FORMAT_DATE_dMMDDYYYY_2 => JText::_('COM_TABULIZER_FORMAT_DATE_DMMDDYYYY_2'),
						FORMAT_DATE_dDDm_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DDDM_1'),
						FORMAT_DATE_dmDD_1 => JText::_('COM_TABULIZER_FORMAT_DATE_DMDD_1'));
		$selected_value = empty($date_format)?FORMAT_DATE_DDMMYY_1:$date_format;				
		$format_date_params_options = $this->getSelectOptions($options, $selected_value);				
						
		$lists['format'] .= '<br/>
		<div id="format_params_div" style="display: block; margin-top: 10px;">
		
		<span id="format_text_params_div" class="'.$format_text_params_div_class.'">
		<div class="data_type_params"><table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_TEXT').':</td><td><select name="format_text_params" id="format_text_params">'.$format_text_params_options.'</select></td></tr>' .		
		'</table></div>
		</span>

		<span id="format_numeric_params_div" class="'.$format_numeric_params_div_class.'">
		<div class="data_type_params"><table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_NUMERIC_DECIMALS').':</td><td><select name="format_numeric_decimals" id="format_numeric_decimals">'.$numeric_decimals_options.'</select></td></tr>' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_NUMERIC_DEC_POINT'). ':</td><td><select name="format_numeric_dec_point" id="format_numeric_dec_point">'.$numeric_dec_point_options.'</select></td></tr>' . 
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_NUMERIC_THOUSANDS_SEP'). ':</td><td><select name="format_numeric_thousands_sep" id="format_numeric_thousands_sep">'.$numeric_thousands_sep_options.'</select></td></tr>' .
			'</table></div>
		</span>
		
		<span id="format_currency_params_div" class="'.$format_currency_params_div_class.'">
		<div class="data_type_params"><table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_CURRENCY_DECIMALS').':</td><td><select name="format_currency_decimals" id="format_currency_decimals">'.$currency_decimals_options.'</select></td></tr>' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_CURRENCY_DEC_POINT'). ':</td><td><select name="format_currency_dec_point" id="format_currency_dec_point">'.$currency_dec_point_options.'</select></td></tr>' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_CURRENCY_THOUSANDS_SEP'). ':</td><td><select name="format_currency_thousands_sep" id="format_currency_thousands_sep">'.$currency_thousands_sep_options.'</select></td></tr>' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_CURRENCY_SYMBOL').':</td><td><input type="text" name="format_currency_symbol" id="format_currency_symbol" length="6" maxlength="24" value="'.htmlspecialchars($currency_symbol,ENT_COMPAT,'UTF-8').'"></td></tr>' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_CURRENCY_SYMBOL_ORDER').':</td><td><select name="format_currency_symbol_order" id="format_currency_symbol_order">'.$currency_symbol_order_options.'</select></td></tr>' .
			'</table></div>
		</span>				
		
		<span id="format_date_params_div" class="'.$format_date_params_div_class.'">
		<div class="data_type_params"><table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FORMAT_DATE').':</td><td><select name="format_date_params" id="format_date_params">'.$format_date_params_options.'</select></td></tr>' .		
		'</table></div>
		</span>
		
		</div>';
		
		$lists['format'] .= '<input type="hidden" name="format_data_type_params" id="format_data_type_params" value="'.$data_type_params.'">';							
				
		# replacement
		$replace_cs = 'checked="checked"';
		$replace_from = $replace_to = '';
		if (!empty($rule['replacement'])) {
			list($case_sensitive, $replace_from, $replace_to) = explode(REPLACEMENT_SEPARATOR, $rule['replacement'], 3);
			if ($case_sensitive) $replace_cs = 'checked="checked"'; else $replace_cs = '';
			if (!empty($replace_from)) $replace_from = htmlspecialchars($replace_from,ENT_QUOTES,'UTF-8'); 
			if (!empty($replace_to)) $replace_to = htmlspecialchars($replace_to,ENT_QUOTES,'UTF-8'); 
		}	
										
		$lists['replacement'] = '<div class="data_format_params"><table><tr class="tr_hi"><td class="fieldlabel2">'. JText::_('COM_TABULIZER_REPLACEMENT_FROM'). ':</td><td><input type="text" name="replace_from" id="replace_from" value="'.$replace_from.'" > <span class="tip">'.JText::_('COM_TABULIZER_ELEMENT_REPLACEMENT_BASE64_ENCODE_TIP').$this->getEncodingMenu('replace_from').'</span></td></tr>' .
								'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_REPLACEMENT_TO'). ':</td><td><input type="text" name="replace_to" id="replace_to" value="'.$replace_to.'" > <span class="tip">'.JText::_('COM_TABULIZER_ELEMENT_REPLACEMENT_BASE64_ENCODE_TIP').$this->getEncodingMenu('replace_to').'</span></td></tr>' .
								'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_REPLACEMENT_CS'). ':</td><td><input type="checkbox" name="replace_cs" id="replace_cs" value="1" '.$replace_cs.' > '.JText::_('COM_TABULIZER_YES').'</td></tr></table></div>';

        # table modification
        if (!empty($rule['modification'])) {
            $modification_value = $rule['modification'];
        }
        $lists['modification'] = $this->getModificationHTML($modification_value);

		# calculation
		if (!empty($rule['calculation'])) {
			$calculation_value = $rule['calculation'];
		}		
		$lists['calculation'] = $this->getCalculationHTML($calculation_value);
		
		# prepend table
		if (!empty($rule['prepend'])) {
			$prepend_value = $rule['prepend'];
		}
		$lists['prepend'] = TabulizerForm::getTextareaCtrl('table_prepend',$prepend_value,array('class'=>'textarea_param'));

		# append table
		if (!empty($rule['append'])) {
			$append_value = $rule['append'];
		}
		$lists['append'] = TabulizerForm::getTextareaCtrl('table_append',$append_value,array('class'=>'textarea_param'));

        # add files
        if (!empty($rule['add_files'])) {
            $add_files_value = $rule['add_files'];
        } else {
            $add_files_value = '';
        }
        $lists['add_files'] = $this->getAddFilesHTML($add_files_value);
		
		TabulizerPath::requireLib('ruleset','common');
        $ruleset = new RulesetLoader();
				
		# split table
		if (!empty($rule['split'])) {
			if (!$ruleset->parseSplitValue($rule['split'], $split_value)) $split_value = null;
		}
		$lists['split'] = $this->getSplitHTML('table_split',$split_value);
		
		# sort
		if (!empty($rule['sort'])) {
			if (!$ruleset->parseSortValue($rule['sort'],$sort_value)) $sort_value = null;
		}
		$lists['sort'] = $this->getSortHTML('table_sort',$sort_value);
		
		# pagination
		if (!empty($rule['pagination'])) {
			if (!$ruleset->parsePaginationValue($rule['pagination'],$pagination_value)) $pagination_value = null;
		}
		$lists['pagination'] = $this->getPaginationHTML('table_pagination',$pagination_value);
		
		# scroll
		if (!empty($rule['scroll'])) {
			if (!$ruleset->parseScrollValue($rule['scroll'],$scroll_value)) $scroll_value = null;
		}
		$lists['scroll'] = $this->getScrollHTML('table_scroll',$scroll_value);
				
		# filter
		if (!empty($rule['filter'])) {
			if (!$ruleset->parseFilterValue($rule['filter'],$filter_value)) $filter_value = null;
		}
        if (!empty($rule['column_filter'])) {
            if (!$ruleset->parseColumnFilterValue($rule['column_filter'],$column_filter_value)) $column_filter_value = null;
        }
		$lists['filter'] = $this->getFilterHTML('table_filter',$filter_value,'table_column_filter',$column_filter_value);

        if (!empty($rule['theme'])) {
            if (!$ruleset->parseThemeValue($rule['theme'],$theme_value)) $theme_value = null;
        }
        $lists['theme'] = $this->getThemeHTML('table_theme',$theme_value);
		
		# responsive
		if (!empty($rule['responsive'])) {
			if (!$ruleset->parseResponsiveValue($rule['responsive'],$responsive_value)) $responsive_value = null;
		}
		$lists['responsive'] = $this->getResponsiveHTML('table_responsive',$responsive_value);
		
		# export table data
        $export_table_value = null;
		if (!empty($rule['export_table'])) {
			if (!$ruleset->parseExportTableValue($rule['export_table'],$export_table_value)) $export_table_value = null;
		}
		$lists['export_table'] = $this->getExportTableHTML('table_export_table',$export_table_value);				
		
		# convert table to graph
		if (!empty($rule['graph'])) {
			$graph_value = $rule['graph'];		
		}		
		$lists['graph'] = '<input type="text" name="table_graph" id="table_graph" value="'.$graph_value.'" />';				
		
		$lists['base64_tools'] = $this->getBase64Tools();
		
		# edit flag
		$lists['edit'] = $rule['edit'];																	
		
		$lists['rule_id'] = '<input type="hidden" name="rule_id" value="'.$rule['rule_id'].'" />';
		$lists['ruleset_name'] = '<input type="hidden" name="ruleset_name" value="'.htmlspecialchars($rule['ruleset_name'],ENT_COMPAT,'UTF-8').'" />';
		$lists['filename'] = '<input type="hidden" name="archive_filename" value="'.htmlspecialchars($rule['filename'],ENT_COMPAT,'UTF-8').'" />';
		
		$lists['rule_id_value'] = $rule['rule_id'];
		$lists['ruleset_name_value'] = $rule['ruleset_name']; // $ruleset['name'];
		$lists['filename_value'] = $rule['filename'];
		
		return $lists;
	}	
	
	function getCalculationHTML($calculation_value) {

		$function_name = null;				
		$arg_range = null;	
		$custom_arg = null;
											
		if (!empty($calculation_value)) {			

			// backward compatibility
			if (is_numeric($calculation_value)) {	
				switch ($calculation_value) {
					case CALCULATION_ADD_ABOVE: $function_name = 'add'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_ADD_BELOW: $function_name = 'add'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_ADD_LEFT: $function_name = 'add'; $element = 'column'; $arg_range = '[SAME],[1-P1]'; $custom_arg = 'left';  break;
					case CALCULATION_ADD_RIGHT: $function_name = 'add'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					case CALCULATION_MUL_ABOVE: $function_name = 'mul'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_MUL_BELOW: $function_name = 'mul'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_MUL_LEFT: $function_name = 'mul'; $element = 'column'; $arg_range = '[SAME],[1-P1'; $custom_arg = 'left';  break;
					case CALCULATION_MUL_RIGHT: $function_name = 'mul'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					case CALCULATION_AVG_ABOVE: $function_name = 'avg'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_AVG_BELOW: $function_name = 'avg'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_AVG_LEFT: $function_name = 'avg'; $element = 'column'; $arg_range = '[SAME],[1-P1'; $custom_arg = 'left';  break;
					case CALCULATION_AVG_RIGHT: $function_name = 'avg'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					case CALCULATION_MED_ABOVE: $function_name = 'med'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_MED_BELOW: $function_name = 'med'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_MED_LEFT: $function_name = 'med'; $element = 'column'; $arg_range = '[SAME],[1-P1'; $custom_arg = 'left';  break;
					case CALCULATION_MED_RIGHT: $function_name = 'med'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					case CALCULATION_MIN_ABOVE: $function_name = 'min'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_MIN_BELOW: $function_name = 'min'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_MIN_LEFT: $function_name = 'min'; $element = 'column'; $arg_range = '[SAME],[1-P1'; $custom_arg = 'left';  break;
					case CALCULATION_MIN_RIGHT: $function_name = 'min'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					case CALCULATION_MAX_ABOVE: $function_name = 'max'; $element = 'row'; $arg_range = '[1-P1],[SAME]'; $custom_arg = 'above';  break;
					case CALCULATION_MAX_BELOW: $function_name = 'max'; $element = 'row'; $arg_range = '[N1-L1],[SAME]'; $custom_arg = 'below';  break;
					case CALCULATION_MAX_LEFT: $function_name = 'max'; $element = 'column'; $arg_range = '[SAME],[1-P1'; $custom_arg = 'left';  break;
					case CALCULATION_MAX_RIGHT: $function_name = 'max'; $element = 'column'; $arg_range = '[SAME],[N1-L1]'; $custom_arg = 'right';  break;
					default: return null;
				}
				
				$calculation_value = $function_name.CALCULATION_SEP.CALCULATION_SEP.$arg_range.CALCULATION_SEP.$custom_arg;
			}			
		
			$parts = explode(CALCULATION_SEP,$calculation_value);
			if (count($parts)==3) {
				$function_name = $parts[0];
				$arg_range = $parts[1];								
				$custom_arg = $parts[2];
			}	
		}			
						
		$html = '<div class="data_format_params"><table>' . 
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_CALCULATION_FUNCTION').':</td><td><input type="input" name="calc_function_name" id="calc_function_name" value="'.$function_name.'" ></td></tr>' . "\n" .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_CALCULATION_ARG_RANGE').':</td><td><input type="input" name="calc_arg_range" id="calc_arg_range" value="'.$arg_range.'" ></td></tr>' . "\n" .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_CALCULATION_CUSTOM_ARG').':</td><td><input type="input" name="calc_custom_arg" id="calc_custom_arg" value="'.$custom_arg.'" ></td></tr>' . "\n" .
			'</table></div>' . 
			TabulizerForm::getHiddenCtrl('calculation','');
		
		return $html;		
		
	}

    # table modification
    function getModificationHTML($modification_value) {
        $function_name = '';
        $function_args = '';

        $parts = explode(MODIFICATION_SEP,$modification_value);
        if (count($parts)==2) {
            $function_name = $parts[0];
            $function_args = $parts[1];
        }

        $html = '<div class="data_format_params"><table>' .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_MODIFICATION_FUNCTION_NAME').':</td><td><input type="input" name="modification_function_name" id="modification_function_name" value="'.$function_name.'" ></td></tr>' . "\n" .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_MODIFICATION_FUNCTION_ARGS').':</td><td><input type="input" name="modification_function_args" id="modification_function_args" value="'.TabulizerString::makeHTMLSafe($function_args).'" ></td></tr>' . "\n" .
            '</table></div>' .
            TabulizerForm::getHiddenCtrl('modification','');

        return $html;
    }

    # add files
    function getAddFilesHTML($add_files_value) {

        $add_files_css =  $add_files_js = '';
        $add_jquery_support = 0;
        $add_jqueryui_support = 0;
        $add_scroll_support = 0;

        $file_types = array('js','css','jquery','jquery-ui','scroll-support');
        foreach ($file_types as $file_type) {
            if (preg_match('/'.$file_type.'\[([^\]]+)\]/i',$add_files_value,$matches)) {
                if ($file_type == 'css') $add_files_css = $matches[1];
                else if ($file_type == 'js') $add_files_js = $matches[1];
                else if ($file_type == 'jquery') $add_jquery_support = 1;
                else if ($file_type == 'jquery-ui') $add_jqueryui_support = 1;
                else if ($file_type == 'scroll-support') $add_scroll_support = 1;
            }
        }

        $html = '<div class="data_format_params"><table>' .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ADD_FILES_CSS').':</td><td>'.TabulizerForm::getTextCtrl('add_files_css',$add_files_css).'</td></tr>' . "\n" .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ADD_FILES_JS').':</td><td>'.TabulizerForm::getTextCtrl('add_files_js',$add_files_js).'</td></tr>' . "\n" .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ADD_FILES_JQUERY_SUPPORT').':</td><td>'.TabulizerForm::getCheckboxCtrl('add_jquery_support',1,$add_jquery_support).'</td></tr>' . "\n" .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ADD_FILES_JQUERYUI_SUPPORT').':</td><td>'.TabulizerForm::getCheckboxCtrl('add_jqueryui_support',1,$add_jqueryui_support).'</td></tr>' . "\n" .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_ADD_FILES_SCROLL_SUPPORT').':</td><td>'.TabulizerForm::getCheckboxCtrl('add_scroll_support',1,$add_scroll_support).'</td></tr>' . "\n" .
            '</table></div>'.
            TabulizerForm::getHiddenCtrl('add_files','');

        return $html;
    }
	
	# split	
	function getSplitHTML($name,$value) {
		$html = '';
		
		$split_type = 0;
		$split_rows = 0;
        $split_groupby = 0;
		$split_top_header = 0;		
		$split_bottom_header = 0;				
		$split_index = 0;
		$split_caption = '';						
		
		if (!empty($value)) {			
			$split_type = $value['type'];
			$split_rows = $value['rows'];
            $split_groupby = $value['groupby'];
			if (!empty($value['top_header'])) $split_top_header = $value['top_header']; 
			if (!empty($value['bottom_header'])) $split_bottom_header = $value['bottom_header']; 
			if (!empty($value['index'])) $split_index = $value['index']; 
			if (!empty($value['caption'])) $split_caption = $value['caption']; 
		}										
		
		$options = array(0=>JText::_('COM_TABULIZER_NONE'),SPLIT_MULTIPART=>JText::_('COM_TABULIZER_SPLIT_MULTIPART'),SPLIT_MULTIPAGE=>JText::_('COM_TABULIZER_SPLIT_MULTIPAGE'),SPLIT_HIDE=>JText::_('COM_TABULIZER_SPLIT_HIDE'));
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_TYPE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_type',$split_type,$options,array('onchange'=>'updateSplitType(this)')).'</td></tr>'."\n";
		
		$options = array(0=>JText::_('COM_TABULIZER_NONE'));
		for ($i=1;$i<=SPLIT_MAX_ROWS_SELECTION;) {
			$options[$i] = $i;			
			if ($i<10) $i=$i+1;
			else if ($i<30) $i=$i+5;
			else $i = $i + 10;
		}
        $options2 = array(0=>JText::_('COM_TABULIZER_NONE'));
        for ($i=1;$i<=SPLIT_MAX_GROUPBY_SELECTION;$i++) {
            $options2[$i] = $i;
        }

		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.
            JText::_('COM_TABULIZER_SPLIT_ROWS_TYPE').':</td><td>'.
            '<table class="fieldtable1">
            <tr><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_ROWS_HEADER').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_rows',$split_rows,$options,array('onchange'=>'updateSplitBy(\'rows\')')).'</td></tr>
            <tr><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_GROUPBY_HEADER').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_groupby',$split_groupby,$options2,array('onchange'=>'updateSplitBy(\'groupby\')')).'</td></tr>
            </table>'.
            '</td></tr>'."\n";

        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_TOP_HEADER').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_top_header',$split_top_header,$options).'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_BOTTOM_HEADER').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_bottom_header',$split_bottom_header,$options).'</td></tr>'."\n";

        $tr_split_index_class = ($split_type == SPLIT_MULTIPAGE)?'hidden_tr':'tr_hi';
		$html .= '<tr class="'.$tr_split_index_class.'" id="tr_split_index"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_INDEX').':</td><td>'.TabulizerForm::getCheckboxCtrl($name.'_index', '1', $split_index).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SPLIT_CAPTION').':</td><td>'.TabulizerForm::getTextCtrl($name.'_caption', $split_caption).' <span class="tip">'.JText::_('COM_TABULIZER_SPLIT_CAPTION_BASE64_ENCODE_TIP').$this->getEncodingMenu($name.'_caption').'</span></td></tr>'."\n";
		
		$html = '<div class="data_format_params"><table>' . $html . '</table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($name, '');
		
		return $html;
	}
	
	# sort	
	function getSortHTML($name,$value) {
		$html = '';

        $enabled = 0;
		$orderby_id = 0;
		$orderby_direction = 'asc';
        $header_size = 1;
        $footer_size = 0;
        $header_top = 'auto';
        $exclude = '';
        $datatypes = '';
		if (!empty($value)) {
            if (!empty($value['enabled'])) $enabled = 1;
            $orderby_id = $value['orderby']['id'];
			$orderby_direction = $value['orderby']['direction'];
            if (!empty($value['header_size'])) $header_size = $value['header_size'];
            if (!empty($value['header_top'])) $header_top = $value['header_top'];
            if (!empty($value['footer_size'])) $footer_size = $value['footer_size'];
            if (!empty($value['exclude_str'])) $exclude = str_replace(' ','',$value['exclude_str']);
            if (!empty($value['datatypes_str'])) $datatypes = str_replace(' ','',$value['datatypes_str']);
		}

        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_enabled','1',$enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";

		$options = array();
        $options[-1] = JText::_('COM_TABULIZER_SORT_NO_INITIAL_ORDER');
		for ($i=1;$i<=SORT_MAX_ORDERBYID_SELECTION;$i++) $options[$i] = $i;
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_ORDERBYID').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_id',$orderby_id,$options).'</td></tr>'."\n";
		
		$options = array('asc'=>JText::_('COM_TABULIZER_SORT_ASC'),'desc'=>JText::_('COM_TABULIZER_SORT_DESC'));		
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_ORDERBYDIRECTION').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_direction',$orderby_direction,$options).'</td></tr>'."\n";

        $options = array();
        for ($i=1;$i<=SORT_MAX_DATATABLES_HEADERS;$i++) $options[$i] = $i;
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_HEADER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_header_size',$header_size,$options).'</td></tr>'."\n";

        $options = array('auto'=>JText::_('COM_TABULIZER_SORT_HEADER_TOP_AUTO'),'true'=>JText::_('COM_TABULIZER_SORT_HEADER_TOP_TRUE'),'false'=>JText::_('COM_TABULIZER_SORT_HEADER_TOP_FALSE'));
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_HEADER_TOP').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_header_top',$header_top,$options).'</td></tr>'."\n";

        $options = array();
        for ($i=0;$i<=SORT_MAX_DATATABLES_HEADERS;$i++) $options[$i] = $i;
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_FOOTER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_footer_size',$footer_size,$options).'</td></tr>'."\n";

        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_EXCLUDE_COLUMNS').':</td><td>'.TabulizerForm::getTextCtrl($name.'_exclude', $exclude).'</td></tr>'."\n";

        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SORT_DATATYPES_COLUMNS').':</td><td>'.TabulizerForm::getTextCtrl($name.'_datatypes', $datatypes).'</td></tr>'."\n";
		
		$html = '<div class="data_format_params"><table>' . $html . '</table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($name, '');
		
		return $html;
	}
	
	# pagination
	function getPaginationHTML($name,$value) {
		$html = '';				
		
		$enabled = 0;
		$type = 0;
        $position_vertical = 'bottom';
        $position_horizontal = 'right';
        $header_size = 0;
        $footer_size = 0;
		$limit = 10;
        $limitchange = array('vertical'=>'top','horizontal'=>'left');
        $info = array('vertical'=>'bottom','horizontal'=>'left');
				
		if (!empty($value)) {
			$enabled = $value['enabled'];
			if ($enabled) {
				if (!empty($value['limit'])) $limit = $value['limit'];
                if (empty($value['limitchange'])) $limitchange = 0;
                if (empty($value['info'])) $info = 0;
				if (!empty($value['type'])) $type = $value['type'];
				if (!empty($value['position'])) {
					if (!empty($value['position']['vertical'])) $position_vertical = $value['position']['vertical'];
					if (!empty($value['position']['horizontal'])) $position_horizontal = $value['position']['horizontal'];
				}
                if (!empty($value['header_size'])) $header_size = $value['header_size'];
                if (!empty($value['footer_size'])) $footer_size = $value['footer_size'];
			} else {
				$type = 0;
			}	
		}				

        // type
		$options = array(0=>JText::_('COM_TABULIZER_NONE'),'basic'=>JText::_('COM_TABULIZER_PAGINATION_TYPE_BASIC'),'full'=>JText::_('COM_TABULIZER_PAGINATION_TYPE_FULL'));
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_TYPE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_type',$type,$options).'</td></tr>'."\n";

        // position
		$position_value = $position_vertical.'-'.$position_horizontal;
		$options = array('top-left'=>JText::_('COM_TABULIZER_POSITION_TOP_LEFT'),'top-right'=>JText::_('COM_TABULIZER_POSITION_TOP_RIGHT'),
								  'bottom-left'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_LEFT'),'bottom-right'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_RIGHT'));
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_POSITION').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_position',$position_value,$options).'</td></tr>'."\n";

        // limit (rows/table)
        $user_preferences = TabulizerInfo::getUserPreferences($error_msg);
        if ($user_preferences) {
            $menu_length_values = explode(',',$user_preferences['pagination_length_menu']);
        } else {
            $menu_length_values = explode(',',PAGINATION_LENGTH_MENU);
        }
        $options = array(0=>JText::_('COM_TABULIZER_DEFAULT'));
        foreach ($menu_length_values as $i) {
            $options[$i] = $i;
        }
        $options[-1] = JText::_('COM_TABULIZER_ALL');
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_LIMIT').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_limit',$limit,$options).'</td></tr>'."\n";

        // change limit
        $position_value = empty($limitchange)?0:$limitchange['vertical'].'-'.$limitchange['horizontal'];
        $options = array(0=>JText::_('COM_TABULIZER_NONE'),'top-left'=>JText::_('COM_TABULIZER_POSITION_TOP_LEFT'),'top-right'=>JText::_('COM_TABULIZER_POSITION_TOP_RIGHT'),
            'bottom-left'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_LEFT'),'bottom-right'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_RIGHT'));
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_LIMITCHANGE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_limitchange',$position_value,$options).'</td></tr>'."\n";

        // info (page # or total)
        $position_value = empty($info)?0:$info['vertical'].'-'.$info['horizontal'];
        $options = array(0=>JText::_('COM_TABULIZER_NONE'),'top-left'=>JText::_('COM_TABULIZER_POSITION_TOP_LEFT'),'top-right'=>JText::_('COM_TABULIZER_POSITION_TOP_RIGHT'),
            'bottom-left'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_LEFT'),'bottom-right'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_RIGHT'));
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_INFO').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_info',$position_value,$options).'</td></tr>'."\n";

        // header size
        $options = array();
        for ($i=0;$i<=PAGINATION_MAX_DATATABLES_HEADERS;$i++) $options[$i] = $i;
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_HEADER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_header_size',$header_size,$options).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_PAGINATION_FOOTER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_footer_size',$footer_size,$options).'</td></tr>'."\n";

        // combine all together
		$html = '<div class="data_format_params"><table>' . $html . '</table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($name, '');
		
		return $html;
	}
	
	# scroll
	function getScrollHTML($name,$value) {

		$xaxis_scroll = $yaxis_scroll = '';
        $xaxis_enabled = $yaxis_enabled = false;
		
		if (!empty($value)) {
			if (!empty($value['xaxis'])) { $xaxis_scroll = $value['xaxis']; $xaxis_enabled = true; }
			if (!empty($value['yaxis'])) { $yaxis_scroll = $value['yaxis']; $yaxis_enabled = true; }
		}

        $html = '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_yaxis_enabled','1',$yaxis_enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SCROLL_SIZE').':</td><td>'.TabulizerForm::getTextCtrl($name.'_yaxis',$yaxis_scroll).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td colspan="2"><span class="tip2">'.JText::_('COM_TABULIZER_SCROLL_YAXIS_TIP').'</span></td></tr>';
        $vertical_scroll_html = '<table class="fieldtable1">' . $html. '</table>';

        $html = '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_xaxis_enabled','1',$xaxis_enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_SCROLL_SIZE').':</td><td>'.TabulizerForm::getTextCtrl($name.'_xaxis',$xaxis_scroll).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td colspan="2"><span class="tip2">'.sprintf(JText::_('COM_TABULIZER_SCROLL_XAXIS_TIP'),JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_1')).'</span></td></tr>';
        $horizontal_scroll_html = '<table class="fieldtable1">' . $html. '</table>';

        $html = '<div class="data_format_params"><table><tr class="tr_hi"><td class="fieldlabel3">' . JText::_('COM_TABULIZER_SCROLL_YAXIS') . '</td><td class="fieldlabel3">' . JText::_('COM_TABULIZER_SCROLL_XAXIS') . '</td></tr><tr><td>' . $vertical_scroll_html . '</td><td>' . $horizontal_scroll_html . '</td></tr></table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($name, '');
		
		return $html;
	}
			
	# filter
	function getFilterHTML($filter_name,$filter_value,$column_filter_name,$column_filter_value) {

        $options_0 = array();
        $options_1 = array();
        for ($i=0;$i<=FILTER_MAX_DATATABLES_HEADERS;$i++) {
            $options_0[$i] = $i;
            if ($i>0) $options_1[$i] = $i;
        }

        // table wide filtering (all columns)
        $html = '';

        $name = $filter_name;
		$value = $filter_value;

		$enabled = 0;
        $header_size = 1;
        $footer_size = 0;
		$position_vertical = 'top';
		$position_horizontal = 'right';
        $highlight = 0;
		if (!empty($value)) {
			$enabled = $value['enabled'];
            if (!empty($value['header_size'])) $header_size = $value['header_size'];
            if (!empty($value['footer_size'])) $footer_size = $value['footer_size'];
			if (!empty($value['position'])) {
				if (!empty($value['position']['vertical'])) $position_vertical = $value['position']['vertical'];
				if (!empty($value['position']['horizontal'])) $position_horizontal = $value['position']['horizontal'];
			}
            if (!empty($value['highlight'])) $highlight = $value['highlight'];
		}
		$position_value = $position_vertical.'-'.$position_horizontal;
		$position_options = array('top-left'=>JText::_('COM_TABULIZER_POSITION_TOP_LEFT'),'top-right'=>JText::_('COM_TABULIZER_POSITION_TOP_RIGHT'),
								  'bottom-left'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_LEFT'),'bottom-right'=>JText::_('COM_TABULIZER_POSITION_BOTTOM_RIGHT'));
		
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_enabled','1',$enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_POSITION').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_position',$position_value,$position_options).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_HIGHLIGHT').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_highlight','1',$highlight).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_HEADER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_header_size',$header_size,$options_0).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_FOOTER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_footer_size',$footer_size,$options_0).'</td></tr>'."\n";

        $filter_html = '<table class="fieldtable1">' . $html. '</table>';

        // specific column filtering
        $html = '';
        $name = $column_filter_name;
        $value = $column_filter_value;

        $enabled = 0;
        $headerrow = 1;
        $header_size = 1;
        $footer_size = 0;
        $columns = '';
        if (!empty($value)) {
            $enabled = $value['enabled'];
            if (!empty($value['headerrow'])) $headerrow = $value['headerrow'];
            if (!empty($value['header_size'])) $header_size = $value['header_size'];
            if (!empty($value['footer_size'])) $footer_size = $value['footer_size'];
            if (!empty($value['columns'])) {
                $columns = $value['columns_str'];
            }
        }

        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_enabled','1',$enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_HEADER_ROW').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_headerrow',$headerrow,$options_1).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_COLUMN_LIST').':</td><td>'.TabulizerForm::getTextCtrl($name.'_columns',$columns).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_HEADER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_header_size',$header_size,$options_1).'</td></tr>'."\n";
        $html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_FILTER_FOOTER_SIZE').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_footer_size',$footer_size,$options_0).'</td></tr>'."\n";
        $column_filter_html = '<table class="fieldtable1">' . $html. '</table>';
		
		$html = '<div class="data_format_params"><table><tr class="tr_hi"><td class="fieldlabel3">' . JText::_('COM_TABULIZER_FILTER_ALL_TABLE') . '</td><td class="fieldlabel3">' . JText::_('COM_TABULIZER_FILTER_SPECIFIC_COLUMNS') . '</td></tr><tr><td>' . $filter_html . '</td><td>' . $column_filter_html . '</td></tr></table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($filter_name, '');
        $html .= TabulizerForm::getHiddenCtrl($column_filter_name, '');
		
		return $html;
	}

    # theme
    function getThemeHTML($name,$value) {
        $options = array(0=>JText::_('COM_TABULIZER_NONE'));
        $dir = TabulizerPath::getDirPath('themes');
        if (is_dir($dir)) {
            if ($dh = opendir($dir)) {
                while (($file = readdir($dh)) !== false) {
                    if (is_file($dir . $file)) {
                        if (preg_match('/css$/i',$file)) {
                            $parts = pathinfo($file);
                            $options[$file] = ucwords(preg_replace('/a-z/i',' ',$parts['filename']));
                        }
                    }
                }
                closedir($dh);
            }
        }
        $options['themeroller'] = 'Themeroller - jQuery UI';

        $html = TabulizerForm::getSelectCtrl($name,$value,$options);

        return $html;
    }
	
	# responsive
	function getResponsiveHTML($name,$value) {
		$html = '';				
		
		$pattern_id = 0;
        $pattern_params = null;
		$params = array(RESPONSIVE_PATTERN_1 => array('width'=>'','height'=>'','nicescroll'=>0,'zoom'=>0,'touch'=>0,'cursor'=>array('display'=>1,'width'=>0,'color'=>'')),
                        RESPONSIVE_PATTERN_3 => array('priorities'=>array(1=>'essential',2=>'essential',3=>'optional',4=>'optional',5=>'optional')),
						RESPONSIVE_PATTERN_4 => array('expand'=>1, 'hides'=>array(2=>'phone',3=>'phone',4=>'tablet',5=>'tablet'))
						);
		
		if (!empty($value)) {		
			$pattern_id = $value['pattern'];			
			if (!empty($value['params'])) $pattern_params = $value['params'];
		}

        $pattern_1_div_class = $pattern_3_div_class = $pattern_4_div_class = 'hidden_span';
		switch ($pattern_id) {
            case RESPONSIVE_PATTERN_1: $pattern_1_div_class = ''; $params[$pattern_id] = $pattern_params; break;
			case RESPONSIVE_PATTERN_3: $pattern_3_div_class = ''; $params[$pattern_id] = $pattern_params; break;
			case RESPONSIVE_PATTERN_4: $pattern_4_div_class = ''; $params[$pattern_id] = $pattern_params; break;
		}

        // pattern #1 params
        $pattern_scrollbars_params = '';
        $pattern_scrollbars_params .= '<tr class="tr_hi"><td class="fieldlabel3">'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_WIDTH').':</td><td>'.TabulizerForm::getTextCtrl($name.'_width',$params[RESPONSIVE_PATTERN_1]['width'],array('class'=>'short_param')).' <span class="tip">'.JText::_('COM_TABULIZER_OPTIONAL_INPUT_FIELD').'</span></td></tr>';
        $pattern_scrollbars_params .= '<tr class="tr_hi"><td class="fieldlabel3">'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_HEIGHT').':</td><td>'.TabulizerForm::getTextCtrl($name.'_height',$params[RESPONSIVE_PATTERN_1]['height'],array('class'=>'short_param')).' <span class="tip">'.JText::_('COM_TABULIZER_OPTIONAL_INPUT_FIELD').'</span></td></tr>';

        $nicescroll_enabled = empty($params[RESPONSIVE_PATTERN_1]['nicescroll'])?0:1;
        if ($nicescroll_enabled) {
            $nicescroll_tr_class = 'tr_hi';
        } else {
            $nicescroll_tr_class = 'hidden';
        }

        $cursor_width_options = array(0=>JText::_('COM_TABULIZER_DEFAULT'));
        for ($i=1;$i<15;$i++) $cursor_width_options[$i] = "{$i}px";
        $cursor_options = '<table class="fieldtable1">'.
            '<tr><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_CURSOR_DISPLAY').':</td><td>'.TabulizerForm::getCheckboxCtrl($name.'_cursor_display','1',$params[RESPONSIVE_PATTERN_1]['cursor']['display']).' '.JText::_('COM_TABULIZER_YES').'</td></tr>' .
            '<tr><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_CURSOR_WIDTH').':</td><td>'. TabulizerForm::getSelectCtrl($name.'_cursor_width',$params[RESPONSIVE_PATTERN_1]['cursor']['width'],$cursor_width_options).'</td></tr>' .
            '<tr><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_CURSOR_COLOR').':</td><td>'.TabulizerForm::getTextCtrl($name.'_cursor_color',$params[RESPONSIVE_PATTERN_1]['cursor']['color'],array('class'=>'short_param')).' <span class="tip">'.JText::_('COM_TABULIZER_OPTIONAL_INPUT_FIELD').'</span></td></tr>' .
            '</table>';

        $nicescroll_params = '
        <table id="responsive_1_nicescroll_tbl">
            <tr id="ncflg" class="tr_hi"><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_NICESCROLL_ENABLED').'</td><td>'.TabulizerForm::getCheckboxCtrl($name.'_nicescroll','1',$params[RESPONSIVE_PATTERN_1]['nicescroll'],array('onclick'=>'showHideNicescrollParams(this)')).' '.JText::_('COM_TABULIZER_YES').'</td></tr>
            <tr id="ncp_1" class="'.$nicescroll_tr_class.'"><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_ZOOM').':</td><td>'.TabulizerForm::getCheckboxCtrl($name.'_zoom','1',$params[RESPONSIVE_PATTERN_1]['zoom']).' '.JText::_('COM_TABULIZER_YES').'</td></tr>
            <tr id="ncp_2" class="'.$nicescroll_tr_class.'"><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_TOUCH').':</td><td>'.TabulizerForm::getCheckboxCtrl($name.'_touch','1',$params[RESPONSIVE_PATTERN_1]['touch']).' '.JText::_('COM_TABULIZER_YES').'</td></tr>
            <tr id="ncp_3" class="'.$nicescroll_tr_class.'"><td>'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_CURSOR').':</td><td>'.$cursor_options.'</td></tr>
        </table>';

        $pattern_scrollbars_params .= '<tr class="tr_hi"><td class="fieldlabel3">'.JText::_('COM_TABULIZER_RESPONSIVE_SCROLLBAR_NICESCROLL').':</td><td>'.$nicescroll_params.'</td></tr>';

        $pattern_scrollbars_params = '<table width="100%">'.$pattern_scrollbars_params.'</table>';

        $pattern_scrollbars_params_html = '<span id="responsive_'.RESPONSIVE_PATTERN_1.'_params_div" class="'.$pattern_1_div_class.'">
		<table width="100%">' .
            '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_RESPONSIVE_PARAMS_1').':</td><td>'.$pattern_scrollbars_params.'</td></tr>' .
            '</table>
            </span>';

        // pattern #3 params
		$options = array(0=>JText::_('COM_TABULIZER_NONE'), 'persist'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_PERSIST'), 'essential'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_ESSENTIAL'), 'optional'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_OPTIONAL'),'invisible_column'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_INVISIBLE'));
		$top_row = $bottom_row = '';
		for ($i=1;$i<=RESPONSIVE_PATTERN_PARAMS_MAX_COLUMNS;$i++) {
			$column_value = (isset($params[RESPONSIVE_PATTERN_3]['priorities'][$i]))?$params[RESPONSIVE_PATTERN_3]['priorities'][$i]:0;
			$column_selection = TabulizerForm::getSelectCtrl($name.'_header_selection_params_'.$i,$column_value,$options);			
			$top_row .= '<td>'.sprintf(JText::_('COM_TABULIZER_RESPONSIVE_COLUMN_PRIORITY'),$i).'</td>';
			$bottom_row .= '<td>'.$column_selection.'</td>';
		}
		$pattern_header_selection_params = '<table><tr>'.$top_row.'</tr><tr>'.$bottom_row.'</tr></table>';
		
		$pattern_header_selection_params_html = '<span id="responsive_'.RESPONSIVE_PATTERN_3.'_params_div" class="'.$pattern_3_div_class.'">
		<table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_RESPONSIVE_PARAMS_3').':</td><td>'.$pattern_header_selection_params.'</td></tr>' .		
		'</table>
		</span>';		

		// pattern #4 params
		$options = array(0=>JText::_('COM_TABULIZER_NONE'), 'expand'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_EXPAND'), 'phone'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_PHONE'), 'tablet'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_TABLET'),'all'=>JText::_('COM_TABULIZER_RESPONSIVE_PRIORITY_ALL'));
		$top_row = $bottom_row = '';
		for ($i=1;$i<=RESPONSIVE_PATTERN_PARAMS_MAX_COLUMNS;$i++) {
			if (!empty($params[RESPONSIVE_PATTERN_4]['expand'])&&($params[RESPONSIVE_PATTERN_4]['expand'] == $i)) $column_value = 'expand'; 
			else $column_value = (isset($params[RESPONSIVE_PATTERN_4]['hides'][$i]))?$params[RESPONSIVE_PATTERN_4]['hides'][$i]:0;			
			$column_selection = TabulizerForm::getSelectCtrl($name.'_expand_params_'.$i,$column_value,$options);			
			$top_row .= '<td>'.sprintf(JText::_('COM_TABULIZER_RESPONSIVE_COLUMN_PRIORITY'),$i).'</td>';
			$bottom_row .= '<td>'.$column_selection.'</td>';
		}
		$pattern_expand_params = '<table><tr>'.$top_row.'</tr><tr>'.$bottom_row.'</tr></table>';
		
		$pattern_expand_params_html = '<span id="responsive_'.RESPONSIVE_PATTERN_4.'_params_div" class="'.$pattern_4_div_class.'">
		<table width="100%">' .
			'<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_RESPONSIVE_PARAMS_4').':</td><td>'.$pattern_expand_params.'</td></tr>' .
		'</table>
		</span>';
					
		$options = array(0=>JText::_('COM_TABULIZER_NONE'),
						RESPONSIVE_PATTERN_1 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_1'),
						RESPONSIVE_PATTERN_2 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_2'),
						RESPONSIVE_PATTERN_3 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_3'),
						RESPONSIVE_PATTERN_4 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_4'),
						RESPONSIVE_PATTERN_5 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_5'),
						RESPONSIVE_PATTERN_6 => JText::_('COM_TABULIZER_RESPONSIVE_PATTERN_6'));
		$attributes = array('onchange'=>'updateResponsivePattern(this)');				
		$html .= '<div class="data_type_params">'.TabulizerForm::getSelectCtrl($name.'_patternid',$pattern_id,$options,$attributes) . '<br/><br style="line-height:15px" />' .
				$pattern_scrollbars_params_html .
				$pattern_header_selection_params_html . 
				$pattern_expand_params_html . '</div>';
				
		$html .= TabulizerForm::getHiddenCtrl($name, '');

        $responsive_wrapper_tip_class = empty($pattern_id)?'hidden_span':'';
        $responsive_wrapper_tip_html = '<span class="'.$responsive_wrapper_tip_class.'" id="responsive_wrapper_tip"><span style="display:inline-block;padding-top:5px">'.JText::_('COM_TABULIZER_RESPONSIVE_WRAPPER_TIP').'<br/><a href="javascript:addResponsiveWrapper()">'.JText::_('COM_TABULIZER_RESPONSIVE_WRAPPER_ADD').'</a></span></span>';
        $html .= $responsive_wrapper_tip_html;
		
		return $html;
	}
	
	function getExportTableHTML($name,$value) {
		$html = '';
				
		$enabled = 0;
		$view_value = 0;
		$download_value = 1;
		$email_value = 1;
		$strip_tags_value = 'all';
		if (!empty($value)) {
			$enabled = $value['enabled'];
			$view_value = $value['view'];
			$download_value = $value['download'];
			$email_value = $value['email'];
			$strip_tags_value = $value['strip_tags'];			
		}

		$strip_tags_options = array( 'none' => JText::_('COM_TABULIZER_EXPORT_TABLE_STRIP_TAGS_NONE'), 'all' => JText::_('COM_TABULIZER_EXPORT_TABLE_STRIP_TAGS_ALL')); 
		
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_EXPORT_TABLE_ENABLED').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_enabled','1',$enabled).' '.JText::_('COM_TABULIZER_YES').'</td></tr>'."\n";
		//$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_EXPORT_TABLE_VIEW').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_view','1',$view_value).'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_EXPORT_TABLE_DOWNLOAD').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_download','1',$download_value).'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_EXPORT_TABLE_EMAIL').':</td><td>'.TabulizerForm::getCheckboxCtrl($name .'_email','1',$email_value).'</td></tr>'."\n";
		$html .= '<tr class="tr_hi"><td class="fieldlabel2">'.JText::_('COM_TABULIZER_EXPORT_TABLE_STRIP_TAGS').':</td><td>'.TabulizerForm::getSelectCtrl($name.'_strip_tags',$strip_tags_value,$strip_tags_options).'</td></tr>'."\n";
		
		$html = '<div class="data_format_params"><table>' . $html . '</table></div>';
		
		$html .= TabulizerForm::getHiddenCtrl($name, '');		
		
		return $html;		
	}		
	
	function getSelectOptions($options, $selected_value) {
		$options_html = '';
		foreach ($options as $value => $label) {
			if ($value == $selected_value) {
				$options_html .= '<option value="'.$value.'" selected="selected">'.$label.'</option>';
			} else {
				$options_html .= '<option value="'.$value.'">'.$label.'</option>';
			}
		}
		return $options_html;
	}

    function getEncodingMenu($name) {
        $html = '<span class="base64_tools_menu">[<a href="javascript:encode_base64_value(\''.$name.'\');">'.JText::_('COM_TABULIZER_BASE64_TOOLS_ENCODE_BTN').'</a>|<a href="javascript:decode_base64_value(\''.$name.'\');">'.JText::_('COM_TABULIZER_BASE64_TOOLS_DECODE_BTN').'</a>]</span>';
        return $html;
    }
	
	function getBase64Tools() {
		$document = JFactory::getDocument();
		$js_url = TabulizerPath::getURLPath('base64_tools.js','admin_js'); // JURI::base() . '/components/com_tabulizer/assets/js/base64_tools.js';
		//$document->addScript($js_url);
        TabulizerEnqueue::js_file($js_url);
		$html = '<table><tr><td><a href="javascript:encode_base64();">'.JText::_('COM_TABULIZER_BASE64_TOOLS_ENCODE_BTN').'</a></td><td><input type="text" name="encode_from" id="encode_from" value="" ></td><td> --&gt; </td><td><input type="text" name="encode_to" id="encode_to" value="" ></td></tr>'.
				'<tr><td><a href="javascript:decode_base64();">'.JText::_('COM_TABULIZER_BASE64_TOOLS_DECODE_BTN').'</a></td><td><input type="text" name="decode_from" id="decode_from" value="" ></td><td> --&gt; </td><td><input type="text" name="decode_to" id="decode_to" value="" ></td></tr></table>';
				
		return $html;				
	}
}
?>