Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1871)
+++ branches/2.8.x/CHANGELOG	(revision 1872)
@@ -12,6 +12,8 @@
 ===============================================================================
 
 
+25 Feb-2013 Build 1872 Dietmar Woellbrink (Luisehahne)
+# bugfix preferences timezone, date_format, time_format settings, backend and frontend
 23 Feb-2013 Build 1871 Dietmar Woellbrink (Luisehahne)
 # bugfix Undefined variable: sName in .../framework/functions.php
 # bugfix droplet ShowWysiwyg Undefined variable: module 
Index: branches/2.8.x/wb/admin/interface/time_formats.php
===================================================================
--- branches/2.8.x/wb/admin/interface/time_formats.php	(revision 1871)
+++ branches/2.8.x/wb/admin/interface/time_formats.php	(revision 1872)
@@ -35,8 +35,9 @@
 $TIME_FORMATS = array();
 
 // Get the current time (in the users timezone if required)
-$actual_time = time()+ ((isset($user_time) AND $user_time == true) ? TIMEZONE : DEFAULT_TIMEZONE);
-
+$iTimeZone = TIMEZONE!=0 ? TIMEZONE/3600 : 0;
+$iTimeZone = ( ($iTimeZone >= -12 && $iTimeZone <= 13) ? TIMEZONE : $iTimeZone );
+$actual_time = time()+ ((isset($user_time) AND $user_time == true) ? $iTimeZone : DEFAULT_TIMEZONE);
 // Add values to list
 $TIME_FORMATS['h:i|A'] = gmdate('h:i A', $actual_time);
 $TIME_FORMATS['h:i|a'] = gmdate('h:i a', $actual_time);
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1871)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1872)
@@ -51,5 +51,5 @@
 
 // check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
 if(!defined('VERSION')) define('VERSION', '2.8.3');
-if(!defined('REVISION')) define('REVISION', '1871');
+if(!defined('REVISION')) define('REVISION', '1872');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/admin/interface/date_formats.php
===================================================================
--- branches/2.8.x/wb/admin/interface/date_formats.php	(revision 1871)
+++ branches/2.8.x/wb/admin/interface/date_formats.php	(revision 1872)
@@ -35,7 +35,9 @@
 $DATE_FORMATS = array();
 
 // Get the current time (in the users timezone if required)
-$actual_time = time()+ ((isset($user_time) && $user_time == true) ? TIMEZONE : DEFAULT_TIMEZONE);
+$iTimeZone = TIMEZONE!=0 ? TIMEZONE/3600 : 0;
+$iTimeZone = ( ($iTimeZone >= -12 && $iTimeZone <= 13) ? TIMEZONE : $iTimeZone );
+$actual_time = time()+ ((isset($user_time) && $user_time == true) ? $iTimeZone : DEFAULT_TIMEZONE);
 
 // Add values to list
 $DATE_FORMATS['l,|jS|F,|Y'] = gmdate('l, jS F, Y', $actual_time);
Index: branches/2.8.x/wb/admin/preferences/save.php
===================================================================
--- branches/2.8.x/wb/admin/preferences/save.php	(revision 1871)
+++ branches/2.8.x/wb/admin/preferences/save.php	(revision 1872)
@@ -38,25 +38,27 @@
     	$language         = strtoupper($admin->get_post('language'));
     	$language         = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
 // timezone must be between -12 and +13  or -20 as system_default
-    	$timezone         = $admin->get_post('timezone');
-    	$timezone         = (is_numeric($timezone) ? $timezone : -20);
-    	$timezone         = ( ($timezone >= -12 && $timezone <= 13) ? $timezone : -20 ) * 3600;
+		$timezone         = ($admin->get_post('timezone'));
+		$timezone         = ( (is_numeric($timezone) && ($timezone!=0)) ? $timezone : -20);
+		$timezone         = ( ($timezone >= -12 && $timezone <= 13) ? $timezone : -20 ) * 3600;
 // date_format must be a key from /interface/date_formats
-    	$date_format      = $admin->get_post('date_format');
-    	$date_format_key  = str_replace(' ', '|', $date_format);
-    	$user_time = true;
-    	include( ADMIN_PATH.'/interface/date_formats.php' );
-    	$date_format = (array_key_exists($date_format_key, $DATE_FORMATS) ? $date_format : 'system_default');
-    	$date_format = ($date_format == 'system_default' ? '' : $date_format);
-    	unset($DATE_FORMATS);
+		$date_format      = $admin->get_post('date_format');
+		$date_format = (($date_format==DEFAULT_DATE_FORMAT) ? '' : $date_format);
+		$date_format_key  = str_replace(' ', '|', $date_format);
+		$user_time = true;
+		include( ADMIN_PATH.'/interface/date_formats.php' );
+		$date_format = (array_key_exists($date_format_key, $DATE_FORMATS) ? $date_format : 'system_default');
+		$date_format = ($date_format == 'system_default' ? '' : $date_format);
+		unset($DATE_FORMATS);
 // time_format must be a key from /interface/time_formats
-    	$time_format      = $admin->get_post('time_format');
-    	$time_format_key  = str_replace(' ', '|', $time_format);
-    	$user_time = true;
-    	include( ADMIN_PATH.'/interface/time_formats.php' );
-    	$time_format = (array_key_exists($time_format_key, $TIME_FORMATS) ? $time_format : 'system_default');
-    	$time_format = ($time_format == 'system_default' ? '' : $time_format);
-    	unset($TIME_FORMATS);
+		$time_format = $admin->get_post('time_format');
+		$time_format = (($time_format==DEFAULT_TIME_FORMAT) ? '' : $time_format);
+		$time_format_key  = str_replace(' ', '|', $time_format);
+		$user_time = true;
+		include( ADMIN_PATH.'/interface/time_formats.php' );
+		$time_format = (array_key_exists($time_format_key, $TIME_FORMATS) ? $time_format : 'system_default');
+		$time_format = ($time_format == 'system_default' ? '' : $time_format);
+		unset($TIME_FORMATS);
 // email should be validatet by core
 
 //    	$email = trim( $admin->get_post('email') == null ? '' : $admin->get_post('email') );
@@ -83,89 +85,90 @@
     	}
 
 // receive password vars and calculate needed action
-        $sCurrentPassword = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('current_password'),true));
-        $sNewPassword = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('new_password_1'),true));
-        $sNewPasswordRetyped = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('new_password_2'),true));
+	    $sCurrentPassword = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('current_password'),true));
+	    $sNewPassword = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('new_password_1'),true));
+	    $sNewPasswordRetyped = $admin->add_slashes($admin->StripCodeFromText($admin->get_post('new_password_2'),true));
 
-        if($bMailHasChanged == true)
-        {
-            $bPassRequest = $bMailHasChanged;
-        } else {
-            $bPassRequest = ( ( $sCurrentPassword != '') || ($sNewPassword != '') || ($sNewPasswordRetyped != '') ) ? true : false;
-        }
-        // Check existing password
-    	$sql  = 'SELECT `password` ';
-    	$sql .= 'FROM `'.TABLE_PREFIX.'users` ';
-    	$sql .= 'WHERE `user_id` = '.$admin->get_user_id();
-    	if ( $bPassRequest && md5($sCurrentPassword) != $database->get_one($sql) ) {
-    // access denied
-    		$err_msg[] = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'];
-    	} else {
-    // validate new password
-    		$sPwHashNew = false;
-    		if( ($sNewPassword != '') || ($sNewPasswordRetyped != '') ) {
-    			if(strlen($sNewPassword) < $iMinPassLength) {
-    				$err_msg[] = $MESSAGE['USERS_PASSWORD_TOO_SHORT'];
-    			} else {
-    				if($sNewPassword != $sNewPasswordRetyped) {
-    					$err_msg[] =  $MESSAGE['USERS_PASSWORD_MISMATCH'];
-    				} else {
-    					$pattern = '/[^'.$admin->password_chars.']/';
-    					if (preg_match($pattern, $sNewPassword)) {
-    						$err_msg[] = $MESSAGE['PREFERENCES_INVALID_CHARS'];
-    					} else {
-    						$sPwHashNew = md5($sNewPassword);
-    					}
-    				}
-    			}
-    		}
+	    if($bMailHasChanged == true)
+	    {
+	        $bPassRequest = $bMailHasChanged;
+	    } else {
+	        $bPassRequest = ( ( $sCurrentPassword != '') || ($sNewPassword != '') || ($sNewPasswordRetyped != '') ) ? true : false;
+	    }
+	    // Check existing password
+		$sql  = 'SELECT `password` ';
+		$sql .= 'FROM `'.TABLE_PREFIX.'users` ';
+		$sql .= 'WHERE `user_id` = '.$admin->get_user_id();
+		if ( $bPassRequest && md5($sCurrentPassword) != $database->get_one($sql) ) {
+	// access denied
+			$err_msg[] = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'];
+	} else {
+	// validate new password
+			$sPwHashNew = false;
+			if( ($sNewPassword != '') || ($sNewPasswordRetyped != '') ) {
+				if(strlen($sNewPassword) < $iMinPassLength) {
+					$err_msg[] = $MESSAGE['USERS_PASSWORD_TOO_SHORT'];
+				} else {
+					if($sNewPassword != $sNewPasswordRetyped) {
+						$err_msg[] =  $MESSAGE['USERS_PASSWORD_MISMATCH'];
+					} else {
+						$pattern = '/[^'.$admin->password_chars.']/';
+						if (preg_match($pattern, $sNewPassword)) {
+							$err_msg[] = $MESSAGE['PREFERENCES_INVALID_CHARS'];
+						} else {
+							$sPwHashNew = md5($sNewPassword);
+						}
+					}
+				}
+			}
 
-    // if no validation errors, try to update the database, otherwise return errormessages
-    		if(sizeof($err_msg) == 0)
-    		{
-    			$sql  = 'UPDATE `'.TABLE_PREFIX.'users` ';
-    			$sql .= 'SET `display_name`=\''.$display_name.'\', ';
-    			if($sPwHashNew) {
-    				$sql .=     '`password`=\''.$sPwHashNew.'\', ';
-    			}
-    			if($email != '') {
-    				$sql .=     '`email`=\''.$email.'\', ';
-    			}
-    			$sql .=     '`language`=\''.$language.'\', ';
-    			$sql .=     '`timezone`=\''.$timezone.'\', ';
-    			$sql .=     '`date_format`=\''.$date_format.'\', ';
-    			$sql .=     '`time_format`=\''.$time_format.'\' ';
-    			$sql .= 'WHERE `user_id`='.(int)$admin->get_user_id();
-    			if( $database->query($sql) )
-    			{
-    				// update successfull, takeover values into the session
-    				$_SESSION['DISPLAY_NAME'] = $display_name;
-    				$_SESSION['LANGUAGE'] = $language;
-    				$_SESSION['TIMEZONE'] = $timezone;
-    				$_SESSION['EMAIL'] = $email;
-    				// Update date format
-    				if($date_format != '') {
-    					$_SESSION['DATE_FORMAT'] = $date_format;
-    					if(isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) { unset($_SESSION['USE_DEFAULT_DATE_FORMAT']); }
-    				} else {
-    					$_SESSION['USE_DEFAULT_DATE_FORMAT'] = true;
-    					if(isset($_SESSION['DATE_FORMAT'])) { unset($_SESSION['DATE_FORMAT']); }
-    				}
-    				// Update time format
-    				if($time_format != '') {
-    					$_SESSION['TIME_FORMAT'] = $time_format;
-    					if(isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) { unset($_SESSION['USE_DEFAULT_TIME_FORMAT']); }
-    				} else {
-    					$_SESSION['USE_DEFAULT_TIME_FORMAT'] = true;
-    					if(isset($_SESSION['TIME_FORMAT'])) { unset($_SESSION['TIME_FORMAT']); }
-    				}
-    			} else {
-    				$err_msg[] = 'invalid database UPDATE call in '.__FILE__.'::'.__FUNCTION__.'before line '.__LINE__;
-    			}
-    		}
-    	}
+	// if no validation errors, try to update the database, otherwise return errormessages
+			if(sizeof($err_msg) == 0)
+			{
+				$sql  = 'UPDATE `'.TABLE_PREFIX.'users` ';
+				$sql .= 'SET `display_name`=\''.$display_name.'\', ';
+				if($sPwHashNew) {
+					$sql .=     '`password`=\''.$sPwHashNew.'\', ';
+				}
+				if($email != '') {
+					$sql .=     '`email`=\''.$email.'\', ';
+				}
+				$sql .=     '`language`=\''.$language.'\', ';
+				$sql .=     '`timezone`=\''.$timezone.'\', ';
+				$sql .=     '`date_format`=\''.$date_format.'\', ';
+				$sql .=     '`time_format`=\''.$time_format.'\' ';
+				$sql .= 'WHERE `user_id`='.(int)$admin->get_user_id();
+				if( $database->query($sql) )
+				{
+					// update successfull, takeover values into the session
+					$_SESSION['DISPLAY_NAME'] = $display_name;
+					$_SESSION['LANGUAGE'] = $language;
+					$_SESSION['EMAIL'] = $email;
+					$_SESSION['TIMEZONE'] = $timezone;
+					if(isset($_SESSION['USE_DEFAULT_TIMEZONE'])) { unset($_SESSION['USE_DEFAULT_TIMEZONE']); }
+					// Update date format
+					if($date_format != '') {
+						$_SESSION['DATE_FORMAT'] = $date_format;
+						if(isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) { unset($_SESSION['USE_DEFAULT_DATE_FORMAT']); }
+					} else {
+						$_SESSION['USE_DEFAULT_DATE_FORMAT'] = true;
+						if(isset($_SESSION['DATE_FORMAT'])) { unset($_SESSION['DATE_FORMAT']); }
+					}
+					// Update time format
+					if($time_format != '') {
+						$_SESSION['TIME_FORMAT'] = $time_format;
+						if(isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) { unset($_SESSION['USE_DEFAULT_TIME_FORMAT']); }
+					} else {
+						$_SESSION['USE_DEFAULT_TIME_FORMAT'] = true;
+						if(isset($_SESSION['TIME_FORMAT'])) { unset($_SESSION['TIME_FORMAT']); }
+					}
+				} else {
+					$err_msg[] = 'invalid database UPDATE call in '.__FILE__.'::'.__FUNCTION__.'before line '.__LINE__;
+				}
+			}
+		}
 
-    }
+	}
 
 	return ( (sizeof($err_msg) > 0) ? implode('<br />', $err_msg) : '' );
 }
Index: branches/2.8.x/wb/admin/preferences/index.php
===================================================================
--- branches/2.8.x/wb/admin/preferences/index.php	(revision 1871)
+++ branches/2.8.x/wb/admin/preferences/index.php	(revision 1872)
@@ -60,6 +60,7 @@
 		}
 	}
 // Insert default timezone values
+	$user_time = true;
 	include_once( ADMIN_PATH.'/interface/timezones.php' );
 	$template->set_block('main_block', 'timezone_list_block', 'timezone_list');
 	foreach( $TIMEZONES AS $hour_offset => $title )
@@ -73,12 +74,13 @@
 	$user_time = true;
 	include_once( ADMIN_PATH.'/interface/date_formats.php' );
 	$template->set_block('main_block', 'date_format_list_block', 'date_format_list');
+
 	foreach( $DATE_FORMATS AS $format => $title )
 	{
 		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
 		$template->set_var( 'VALUE', ($format != 'system_default' ? $format : 'system_default') );
 		$template->set_var( 'NAME',  $title );
-		if( (DATE_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
+		if( ($admin->get_session('DATE_FORMAT') == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
 			('system_default' == $format && isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) )
 		{
 			$template->set_var('SELECTED', ' selected="selected"');
@@ -88,6 +90,7 @@
 		$template->parse('date_format_list', 'date_format_list_block', true);
 	}
 // Insert time format list
+	$user_time = true;
 	include_once( ADMIN_PATH.'/interface/time_formats.php' );
 	$template->set_block('main_block', 'time_format_list_block', 'time_format_list');
 	foreach( $TIME_FORMATS AS $format => $title )
@@ -95,7 +98,7 @@
 		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
 		$template->set_var('VALUE', $format != 'system_default' ? $format : 'system_default' );
 		$template->set_var('NAME',  $title);
-		if( (TIME_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
+		if( ($admin->get_session('TIME_FORMAT') == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
 		    ('system_default' == $format && isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) )
 		{
 			$template->set_var('SELECTED', ' selected="selected"');
Index: branches/2.8.x/wb/account/htt/preferences.htt
===================================================================
--- branches/2.8.x/wb/account/htt/preferences.htt	(revision 1871)
+++ branches/2.8.x/wb/account/htt/preferences.htt	(revision 1872)
@@ -34,7 +34,6 @@
                 <td>{TEXT_TIMEZONE}:</td>
                 <td class="input">
                     <select name="timezone" style="width: 98%;">
-                    <option value="0">{MOD_PREFERENCE_PLEASE_SELECT}</option>
                 <!-- BEGIN timezone_list_block -->
                     <option value="{VALUE}" {SELECTED}>{NAME}</option>
                 <!-- END timezone_list_block -->
@@ -45,7 +44,6 @@
                 <td>{TEXT_DATE_FORMAT}:</td>
                 <td class="input">
                     <select name="date_format" style="width: 98%;">
-                    <option value="">{MOD_PREFERENCE_PLEASE_SELECT}</option>
                 <!-- BEGIN date_format_list_block -->
                     <option value="{VALUE}" {SELECTED}>{NAME}</option>
                 <!-- END date_format_list_block -->
@@ -56,7 +54,6 @@
                 <td>{TEXT_TIME_FORMAT}:</td>
                 <td class="input">
                     <select name="time_format" style="width: 98%;">
-                    <option value="">{MOD_PREFERENCE_PLEASE_SELECT}</option>
                 <!-- BEGIN time_format_list_block -->
                     <option value="{VALUE}" {SELECTED}>{NAME}</option>
                 <!-- END time_format_list_block -->
Index: branches/2.8.x/wb/account/preferences_form.php
===================================================================
--- branches/2.8.x/wb/account/preferences_form.php	(revision 1871)
+++ branches/2.8.x/wb/account/preferences_form.php	(revision 1872)
@@ -60,10 +60,6 @@
 	$sIncludeHeadLinkCss .= ' rel="stylesheet" type="text/css" media="screen" />'."\n";
 }
 
-$user_time = true;
-require(ADMIN_PATH.'/interface/timezones.php');
-require(ADMIN_PATH.'/interface/date_formats.php');
-require(ADMIN_PATH.'/interface/time_formats.php');
 $error = array();
 $success = array();
 
@@ -172,70 +168,70 @@
 $template->set_block('main_block', 'language_list_block', 'language_list');
 foreach( $aLangUsed as $sDirectory => $sName  )
 {
-    $langIcons = ( empty($sDirectory) ? 'none' : strtolower($sDirectory));
+	$langIcons = ( empty($sDirectory) ? 'none' : strtolower($sDirectory));
 
-    $template->set_var('CODE',        $sDirectory);
-    $template->set_var('NAME',        $sName);
-    $template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
-    $template->set_var('SELECTED',    ( $_SESSION['LANGUAGE'] == $sDirectory ? ' selected="selected"' : '') );
+	$template->set_var('CODE',        $sDirectory);
+	$template->set_var('NAME',        $sName);
+	$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+	$template->set_var('SELECTED',    ( $_SESSION['LANGUAGE'] == $sDirectory ? ' selected="selected"' : '') );
 
-    $template->parse('language_list', 'language_list_block', true);
+	$template->parse('language_list', 'language_list_block', true);
 }
 
 // Insert default timezone values
+$user_time = true;
+require(ADMIN_PATH.'/interface/timezones.php');
 $template->set_block('main_block', 'timezone_list_block', 'timezone_list');
 foreach($TIMEZONES AS $hour_offset => $title) {
-    $template->set_var('VALUE', $hour_offset);
-    $template->set_var('NAME', $title);
-    if($wb->get_timezone() == $hour_offset*3600) {
-        $template->set_var('SELECTED', 'selected="selected"');
-    } else {
-        $template->set_var('SELECTED', '');
-    }
-    $template->parse('timezone_list', 'timezone_list_block', true);
+	$template->set_var('VALUE',    $hour_offset);
+	$template->set_var('NAME',     $title);
+	$template->set_var('SELECTED', ($wb->get_timezone() == ($hour_offset * 3600) ? ' selected="selected"' : '') );
+	$template->parse('timezone_list', 'timezone_list_block', true);
 }
-
 // Insert date format list
+$user_time = true;
+require(ADMIN_PATH.'/interface/date_formats.php');
 $template->set_block('main_block', 'date_format_list_block', 'date_format_list');
 foreach($DATE_FORMATS AS $format => $title)
 {
-    $format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
-    if($format != 'system_default') {
-        $template->set_var('VALUE', $format);
-    } else {
-        $template->set_var('VALUE', '');
-    }
-    $template->set_var('NAME', $title);
-    if($wb->get_session('DATE_FORMAT') == $format AND !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
-        $template->set_var('SELECTED', 'selected="selected"');
-    } elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
-        $template->set_var('SELECTED', 'selected="selected"');
-    } else {
-        $template->set_var('SELECTED', '');
-    }
-    $template->parse('date_format_list', 'date_format_list_block', true);
+	$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+	if($format != 'system_default') {
+	    $template->set_var('VALUE', $format);
+	} else {
+	    $template->set_var('VALUE', '');
+	}
+	$template->set_var('NAME', $title);
+	if($wb->get_session('DATE_FORMAT') == $format AND !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
+	    $template->set_var('SELECTED', 'selected="selected"');
+	} elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) {
+	    $template->set_var('SELECTED', 'selected="selected"');
+	} else {
+	    $template->set_var('SELECTED', '');
+	}
+	$template->parse('date_format_list', 'date_format_list_block', true);
 }
 
+// Insert time format list
 $user_time = true;
-// Insert time format list
+require(ADMIN_PATH.'/interface/time_formats.php');
 $template->set_block('main_block', 'time_format_list_block', 'time_format_list');
 foreach($TIME_FORMATS AS $format => $title)
 {
-    $format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
-    if($format != 'system_default') {
-        $template->set_var('VALUE', $format);
-    } else {
-        $template->set_var('VALUE', '');
-    }
-    $template->set_var('NAME', $title);
-    if($wb->get_session('TIME_FORMAT') == $format AND !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
-        $template->set_var('SELECTED', 'selected="selected"');
-    } elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
-        $template->set_var('SELECTED', 'selected="selected"');
-    } else {
-    $template->set_var('SELECTED', '');
-    }
-    $template->parse('time_format_list', 'time_format_list_block', true);
+	$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+	if($format != 'system_default') {
+	    $template->set_var('VALUE', $format);
+	} else {
+	    $template->set_var('VALUE', '');
+	}
+	$template->set_var('NAME', $title);
+	if($wb->get_session('TIME_FORMAT') == $format AND !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
+	    $template->set_var('SELECTED', 'selected="selected"');
+	} elseif($format == 'system_default' AND isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) {
+	    $template->set_var('SELECTED', 'selected="selected"');
+	} else {
+	$template->set_var('SELECTED',  '');
+	}
+	$template->parse('time_format_list', 'time_format_list_block', true);
 }
 // Insert language headings
 $template->set_var(array(
Index: branches/2.8.x/wb/account/details.php
===================================================================
--- branches/2.8.x/wb/account/details.php	(revision 1871)
+++ branches/2.8.x/wb/account/details.php	(revision 1872)
@@ -26,10 +26,31 @@
 
 // Get entered values
 	$display_name = strip_tags($wb->StripCodeFromText($wb->get_post('display_name')));
+// language must be 2 upercase letters only
 	$sUserLanguage = strip_tags($wb->StripCodeFromText($wb->get_post('language')));
-	$timezone = intval($wb->StripCodeFromText($wb->get_post('timezone')))*60*60;
+	$sUserLanguage = (preg_match('/^[A-Z]{2}$/', $sUserLanguage) ? $sUserLanguage : DEFAULT_LANGUAGE);
+// timezone must be between -12 and +13  or -20 as system_default
+	$timezone = ($wb->StripCodeFromText($wb->get_post('timezone')));
+	$timezone = ( (is_numeric($timezone) && ($timezone!=0)) ? $timezone : -20);
+	$timezone = ( ($timezone >= -12 && $timezone <= 13) ? $timezone : -20 ) * 3600;
+// date_format must be a key from /interface/date_formats
 	$date_format = strip_tags($wb->StripCodeFromText($wb->get_post('date_format')));
+	$date_format = (($date_format==DEFAULT_DATE_FORMAT) ? '' : $date_format);
+	$date_format_key  = str_replace(' ', '|', $date_format);
+	$user_time = true;
+	include( ADMIN_PATH.'/interface/date_formats.php' );
+	$date_format = (array_key_exists($date_format_key, $DATE_FORMATS) ? $date_format : 'system_default');
+	$date_format = ($date_format == 'system_default' ? '' : $date_format);
+	unset($DATE_FORMATS);
+// time_format must be a key from /interface/time_formats
 	$time_format = strip_tags($wb->StripCodeFromText($wb->get_post('time_format')));
+	$time_format = (($time_format==DEFAULT_TIME_FORMAT) ? '' : $time_format);
+	$time_format_key  = str_replace(' ', '|', $time_format);
+	$user_time = true;
+	include( ADMIN_PATH.'/interface/time_formats.php' );
+	$time_format = (array_key_exists($time_format_key, $TIME_FORMATS) ? $time_format : 'system_default');
+	$time_format = ($time_format == 'system_default' ? '' : $time_format);
+	unset($TIME_FORMATS);
 
 //  Update the database
 	$sql  = "UPDATE `".TABLE_PREFIX."users` SET ";
@@ -44,9 +65,8 @@
 		$success[] = $MOD_PREFERENCE['DETAILS_SAVED'];
 		$_SESSION['DISPLAY_NAME'] = $display_name;
 		$_SESSION['LANGUAGE'] = $sUserLanguage;
-		$_SESSION['TIME_FORMAT'] = $time_format;
-		$_SESSION['DATE_FORMAT'] = $date_format;
 		$_SESSION['TIMEZONE'] = $timezone;
+		if(isset($_SESSION['USE_DEFAULT_TIMEZONE'])) { unset($_SESSION['USE_DEFAULT_TIMEZONE']); }
 // Update date format
 		if($date_format != '') {
 			$_SESSION['DATE_FORMAT'] = $date_format;
Index: branches/2.8.x/wb/framework/initialize.php
===================================================================
--- branches/2.8.x/wb/framework/initialize.php	(revision 1871)
+++ branches/2.8.x/wb/framework/initialize.php	(revision 1872)
@@ -203,6 +203,19 @@
 			}
 		}
 	}else { throw new AppException($database->get_error()); }
+// set error-reporting from loaded settings ---
+	if(intval(ER_LEVEL) > 0 ) {
+		error_reporting(ER_LEVEL);
+		if( intval(ini_get ( 'display_errors' )) == 0 ) {
+			ini_set('display_errors', 1);
+		}
+	}
+// Start a session ---
+	if(!defined('SESSION_STARTED')) {
+		session_name(APP_NAME.'_session_id');
+		@session_start();
+		define('SESSION_STARTED', true);
+	}
 // get/set users timezone ---
 	define('TIMEZONE',    (isset($_SESSION['TIMEZONE'])    ? $_SESSION['TIMEZONE']    : DEFAULT_TIMEZONE));
 	define('DATE_FORMAT', (isset($_SESSION['DATE_FORMAT']) ? $_SESSION['DATE_FORMAT'] : DEFAULT_DATE_FORMAT));
@@ -218,19 +231,6 @@
 	$sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
 	$sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
 	require_once($sSecMod);
-// set error-reporting from loaded settings ---
-	if(intval(ER_LEVEL) > 0 ) {
-		error_reporting(ER_LEVEL);
-		if( intval(ini_get ( 'display_errors' )) == 0 ) {
-			ini_set('display_errors', 1);
-		}
-	}
-// Start a session ---
-	if(!defined('SESSION_STARTED')) {
-		session_name(APP_NAME.'_session_id');
-		@session_start();
-		define('SESSION_STARTED', true);
-	}
 // *** begin deprecated part *************************************************************
 // load settings for use in Captch and ASP module
 	if (!defined("WB_INSTALL_PROCESS")) {
Index: branches/2.8.x/wb/framework/class.wb.php
===================================================================
--- branches/2.8.x/wb/framework/class.wb.php	(revision 1871)
+++ branches/2.8.x/wb/framework/class.wb.php	(revision 1872)
@@ -305,7 +305,8 @@
 
 	// Get the current users timezone
 	function get_timezone() {
-		return (isset($_SESSION['USE_DEFAULT_TIMEZONE']) ? '-72000' : $_SESSION['TIMEZONE']);
+		
+		return (isset($_SESSION['USE_DEFAULT_TIMEZONE']) ? '-72000' : $this->get_session('TIMEZONE'));
 	}
 
 	// Validate supplied email address
Index: branches/2.8.x/wb/framework/class.frontend.php
===================================================================
--- branches/2.8.x/wb/framework/class.frontend.php	(revision 1871)
+++ branches/2.8.x/wb/framework/class.frontend.php	(revision 1872)
@@ -170,7 +170,13 @@
 
 	public function get_page_details() {
 		global $database;
-	    if($this->page_id != 0) {
+
+		$bCanRedirect = false;
+// set defaults 
+		$aLanguagesDetailsInUsed = $this->GetLanguagesDetailsInUsed();
+		$_SESSION['HTTP_REFERER'] = WB_URL;
+		$_SESSION['PAGE_ID'] = $this->page_id;
+		if($this->page_id != 0) {
 			// Query page details
 			$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.(int)$this->page_id;
 			$get_page = $database->query($sql);
@@ -244,14 +250,13 @@
 			$this->page_keywords=$this->page['keywords'];
 			// Page link
 
-            $bCanRedirect = ($this->visibility == 'registered' || $this->visibility == 'privat');
+			$bCanRedirect = ($this->visibility == 'registered' || $this->visibility == 'privat');
 
 			$this->link=$this->page_link($this->page['link']);
 
 			$_SESSION['PAGE_ID'] = $this->page_id;
-
 			$_SESSION['HTTP_REFERER'] = $bCanRedirect != true ? $this->link : WB_URL;
-            $_SESSION['HTTP_REFERER'] = !$this->is_authenticated() ? $this->link : $_SESSION['HTTP_REFERER'];
+			$_SESSION['HTTP_REFERER'] = !$this->is_authenticated() ? $this->link : $_SESSION['HTTP_REFERER'];
 
 		// End code to set details as either variables of constants
 		}
