'index.php', 
		'title' => ADLAN_28, 
		'diz'	=>'index.php'
	); 
// Now let any plugins add to the options - must append to the $front_page array as above
	//v2.x specification
	$new = e107::getAddonConfig('e_frontpage');
	foreach($new as $k=>$v)
	{
		$front_page[$k] = $v;
	}
	// v1.x specification
	if(!empty($frontPref['e_frontpage_list']))
	{
		foreach($frontPref['e_frontpage_list'] as $val)
		{
			if(is_readable(e_PLUGIN.$val.'/e_frontpage.php'))
			{
				require_once (e_PLUGIN.$val.'/e_frontpage.php');
			}
		}
	}
// Make sure links relative to SITEURL
foreach($front_page as &$front_value)
{
	if(is_array($front_value['page']))
	{ // Its a URL with multiple options
		foreach($front_value['page'] as &$multipage)
		{
			$multipage = str_replace(e_HTTP, '', $multipage);
			//if (substr($multipage, 0, 1) != '/') $multipage = '/'.$multipage;
		}
	}
	else
	{
		$front_value = str_replace(e_HTTP, '', $front_value);
		//if (substr($front_value, 0, 1) != '/') $front_value = '/'.$front_value;
	}
}
// print_a($front_page);
// Now sort out list of rules for display (based on $pref data to start with)
$gotpub = FALSE;
if(is_array($frontPref['frontpage']))
{
	$i = 1;
	foreach($frontPref['frontpage'] as $class => $val)
	{
		if($class == 'all' || $class === 0)
		{
			$class = e_UC_PUBLIC;
			$gotpub = true;
		}
		if($val)
		{ // Only add non-null pages
			$fp_settings[$i] = array('order' => $i, 'class' => $class, 'page' => $val, 'force' => varset($frontPref['frontpage_force'][$class], ''));
			$i ++;
		}
	}
}
else
{ // Legacy stuff to convert
	$fp_settings = array();
	$fp_settings[] = array('order' => 0, 'class' => e_UC_PUBLIC, 'page' => varset($frontPref['frontpage'], 'news.php'), 'force' => '');
}
if(!$gotpub)
{ // Need a 'default' setting - usually 'all'
	$fp_settings[] = array('order' => $i, 'class' => e_UC_PUBLIC, 'page' => (isset($frontPref['frontpage']['all']) ? $frontPref['frontpage']['all'] : 'news.php'), 'force' => '');
}
$fp_update_prefs = FALSE;
/*
Following code replaced - values not passed on image clicks with Firefox
if(isset($_POST['fp_inc']))
{
	$mv = intval($_POST['fp_inc']);
	echo "Increment: {$mv}
";
	if(($mv > 1) && ($mv <= count($fp_settings)))
	{
		$temp = $fp_settings[$mv - 1];
		$fp_settings[$mv - 1] = $fp_settings[$mv];
		$fp_settings[$mv] = $temp;
		$fp_update_prefs = TRUE;
		frontpage_adminlog('01', 'Inc '.$mv);
	}
}
elseif(isset($_POST['fp_dec']))
{
	$mv = intval($_POST['fp_dec']);
	echo "Decrement: {$mv}
";
	if(($mv > 0) && ($mv < count($fp_settings)))
	{
		$temp = $fp_settings[$mv + 1];
		$fp_settings[$mv + 1] = $fp_settings[$mv];
		$fp_settings[$mv] = $temp;
		$fp_update_prefs = TRUE;
		frontpage_adminlog('01', 'Dec '.$mv);
	}
}
*/
if (!empty($_POST))
{
	// avoid endless loop.
	if(varset($_POST['frontpage']) == 'other' && (trim($_POST['frontpage_other']) == 'index.php' || trim($_POST['frontpage_other']) == '{e_BASE}index.php'))
	{
		$_POST['frontpage'] = 'wmessage';
		$_POST['frontpage_other'] = '';
	}
	foreach ($_POST as $k => $v)
	{
		$incDec = substr($k, 0, 6);
		$idNum = substr($k, 6);
		if ($incDec == 'fp_inc')
		{
			$mv = intval($idNum);
			if(($mv > 1) && ($mv <= count($fp_settings)))
			{
				$temp = $fp_settings[$mv - 1];
				$fp_settings[$mv - 1] = $fp_settings[$mv];
				$fp_settings[$mv] = $temp;
				$fp_update_prefs = TRUE;
				frontpage_adminlog('01', 'Inc '.$mv);
			}
			break;
		}
		elseif ($incDec == 'fp_dec')
		{
			$mv = intval($idNum);
			if(($mv > 0) && ($mv < count($fp_settings)))
			{
				$temp = $fp_settings[$mv + 1];
				$fp_settings[$mv + 1] = $fp_settings[$mv];
				$fp_settings[$mv] = $temp;
				$fp_update_prefs = TRUE;
				frontpage_adminlog('01', 'Dec '.$mv);
			}
			break;
		}
	}
}
// Edit an existing rule
if(isset($_POST['fp_edit_rule']))
{
	$_POST['type'] = (isset($_POST['edit']['all'])) ? 'all_users' : 'user_class';
	$_POST['class'] = key($_POST['edit']);
}
// Cancel Edit
if(isset($_POST['fp_save_new']))
{ // Add or edit an existing rule here.
	// fp_order - zero for a new rule, non-zero if editing an existing rule
	// class - user class for rule
	// frontpage - radio button option indicating type of page (for home page)
	// frontpage_multipage[] - the other information for custom pages and similar - array index matches value of 'frontpage' when selected
	// frontpage_other - URL for 'other' home page
	// fp_force_page - radio button option indicating type of page (for post-login page)
	// fp_force_page_multipage[] - the other information for custom pages and similar - array index matches value of 'frontpage' when selected
	// fp_force_page_other - URL for forced post-login 'other' page
	if($_POST['frontpage'] == 'other')
	{
		$_POST['frontpage_other'] = trim($tp->toForm($_POST['frontpage_other']));
		$frontpage_value = $_POST['frontpage_other'] ? $_POST['frontpage_other'] : 'news.php';
	}
	else
	{
		if(is_array($front_page[$_POST['frontpage']]['page']))
		{
			$frontpage_value = $front_page[$_POST['frontpage']]['page'][$_POST['frontpage_multipage'][$_POST['frontpage']]]['page'];
		}
		else
		{
			$frontpage_value = $front_page[$_POST['frontpage']]['page'];
		}
	}
	if($_POST['fp_force_page'] == 'other')
	{
		$_POST['fp_force_page_other'] = trim($tp->toForm($_POST['fp_force_page_other']));
		$forcepage_value = $_POST['fp_force_page_other']; // A null value is allowable here
	}
	else
	{
		if(is_array($front_page[$_POST['fp_force_page']]['page']))
		{
			$forcepage_value = $front_page[$_POST['fp_force_page']]['page'][$_POST['fp_force_page_multipage'][$_POST['fp_force_page']]]['page'];
		}
		else
		{
			$forcepage_value = $front_page[$_POST['fp_force_page']]['page'];
		}
	}
	$temp = array('order' => intval($_POST['fp_order']), 'class' => $_POST['class'], 'page' => $frontpage_value, 'force' => trim($forcepage_value));
	if($temp['order'] == 0) // New index to add
	{
		$ind = 0;
		for($i = 1, $iMax = count($fp_settings); $i <= $iMax; $i ++)
		{
			if($fp_settings[$i]['class'] == $temp['class'])
				$ind = $i;
		}
		if($ind)
		{
			$mes->addDebug(print_a($fp_settings,true));
			$mes->addError(FRTLAN_56." ".$ind);
			unset($fp_settings[$ind]); // Knock out duplicate definition for class
		}
		array_unshift($fp_settings, $temp); // Deliberately add twice
		array_unshift($fp_settings, $temp); // ....because re-indexed from zero
		unset($fp_settings[0]); // Then knock out index zero
		$fp_update_prefs = TRUE;
		frontpage_adminlog('02', "class => {$_POST['class']},[!br!]page => {$frontpage_value},[!br!]force => {$forcepage_value}");
	}
	elseif(array_key_exists($temp['order'], $fp_settings))
	{
		$fp_settings[$temp['order']] = $temp;
		$fp_update_prefs = TRUE;
		frontpage_adminlog('03', "posn => {$temp},[!br!]class => {$_POST['class']},[!br!]page => {$frontpage_value},[!br!]force => {$forcepage_value}");
	}
	else
	{ // Someone playing games
		$mes->addError(FRTLAN_57);
	}
}
if(isset($_POST['fp_delete_rule']))
{
	if(isset($fp_settings[key($_POST['fp_delete_rule'])]))
	{
		$rule_no = key($_POST['fp_delete_rule']);
		$array_size = count($fp_settings);
		frontpage_adminlog('04', "Rule {$rule_no},[!br!]class => {$fp_settings[$rule_no]['class']},[!br!]page => {$fp_settings[$rule_no]['page']},[!br!]force => {$fp_settings[$rule_no]['force']}");
		unset($fp_settings[$rule_no]);
		while($rule_no < $array_size)
		{ // Move up and renumber any entries after the deleted rule
			$fp_settings[$rule_no] = $fp_settings[$rule_no + 1];
			$rule_no ++;
			unset($fp_settings[$rule_no]);
		}
		$fp_update_prefs = TRUE;
	}
}
if($fp_update_prefs)
{ // Save the two arrays
	$fp_list = array();
	$fp_force = array();
	for($i = 1, $iMax = count($fp_settings); $i <= $iMax; $i ++)
	{
		$fp_list[$fp_settings[$i]['class']] = $fp_settings[$i]['page'];
		$fp_force[$fp_settings[$i]['class']] = $fp_settings[$i]['force'];
	}
	$corePrefs = e107::getConfig('core');				// Core Prefs Object.
	$corePrefs->set('frontpage', $fp_list);
	$corePrefs->set('frontpage_force', $fp_force);
	$result = $corePrefs->save(FALSE, TRUE);
	$mes->addDebug("