public static function STARTSESSION($SetSessionName = NULL)
 {
     ///######## IF THE SESSION STATE IS INACTIVE
     if (self::$sessionState == self::SESSION_NOT_STARTED) {
         ///######## IF A SESSION COOKIE SHOULD BE SET
         if (self::$setsessioncookie === true) {
             ///######## SETTINGS ARRAY
             $SessionSettings = array('session.cookie_lifetime' => self::$limit, 'session.cookie_domain' => self::$domain, 'session.cookie_secure' => self::$secure, 'session.cookie_httponly' => self::$httponly);
             ///########==================================================
             ///######## SET THE SESSION COOKIE PARAMETERS
             ///########==================================================
             ///######## RUN THROUGH ALL SETTINGS
             foreach ($SessionSettings as $Option => $Setting) {
                 ///######## IF THE OPTION IS NOT EMPTY
                 if ($Setting !== NULL) {
                     ///######## SET THE SETTING
                     ini_set($Option, $Setting);
                 }
             }
             ///########==================================================
         }
         ///########==================================================
         ///######## SET THE SESSION NAME
         ///########==================================================
         ///######## IF A SESSION NAME HAS BEEN SET
         if ($SetSessionName !== NULL) {
             ///######## SET A SESSION NAME TO THE CLASS
             self::$SessionName = $SetSessionName;
             ///######## SET THE SESSION NAME
             session_name($SetSessionName);
         } else {
             ///######## SET A DEFAULT SESSION NAME
             session_name(self::$SessionName);
         }
         ///########==================================================
         ///########==================================================
         ///######## SET THE SESSION RUNTIME
         ///########==================================================
         ini_set('session.gc_probability', 0);
         ///######## START THE SESSION
         self::$sessionState = @session_start();
         ///######## OPTIONALLY RESTART AN EXISTING SESSION
         self::RestoreSession();
         ///########==================================================
         ///######## PROTECT THE SESSION AGAINST HIJACKING
         if (self::preventHijacking() === false) {
             ///######## RESET THE SESSION
             $_SESSION = array();
             $_SESSION['SessionIPaddress'] = self::$CurrentIP;
             $_SESSION['SessionuserAgent'] = self::$CurrentBrowser;
             ///####### SET THE SESSION COOKIE
             self::SaveSession();
         } else {
             ///######## LOAD THE SESSION ID
             self::$CurrentSession = session_id();
         }
     }
     ///######## IF THE SESSION ID HAS NOT YET BEEN DEFINED
     if (defined('SESSION_ID') === false) {
         ///######## DEFINE THE SESSION ID
         define('SESSION_ID', self::$CurrentSession);
     }
     ///########==================================================
     ///######## GET THE SESSION STATE
     ///########==================================================
     return self::$sessionState;
     ///########==================================================
 }