Index: branches/gui/src/lib/gui/gl/Makefile.am
===================================================================
--- branches/gui/src/lib/gui/gl/Makefile.am	(revision 8677)
+++ branches/gui/src/lib/gui/gl/Makefile.am	(revision 8688)
@@ -31,5 +31,6 @@
 		glgui_cursor.cc \
 		\
-		specials/glgui_notifier.cc
+		specials/glgui_notifier.cc \
+		specials/glgui_imagebutton.cc
 
 
@@ -58,10 +59,6 @@
 		glgui_cursor.h \
 		\
-		specials/glgui_notifier.h
-
-
-
-
+		specials/glgui_notifier.h \
+		specials/glgui_imagebutton.h
 
 EXTRA_DIST =
-
Index: branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.cc
===================================================================
--- branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.cc	(revision 8688)
+++ branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.cc	(revision 8688)
@@ -0,0 +1,27 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_SHELL
+
+#include "glgui_imagebutton.h"
+#include "multi_line_text.h"
+
+#include "debug.h"
+
+namespace OrxGui
+{
+
+
+}
Index: branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.h
===================================================================
--- branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.h	(revision 8688)
+++ branches/gui/src/lib/gui/gl/specials/glgui_imagebutton.h	(revision 8688)
@@ -0,0 +1,39 @@
+/*!
+ * @file shell.h
+ * Definition of a on-screen-shell
+ *
+ * @todo Buffer Display in different Colors for different debug mode.
+ * @todo choose color of the Font and the background.
+ */
+
+#ifndef _GLGUI_IMAGEBUTTON_H
+#define _GLGUI_IMAGEBUTTON_H
+
+#include "glgui_widget.h"
+#include "event_listener.h"
+
+#include <stack>
+
+//! Namespace of the GLGuiImageButton of ORXONOX.
+namespace OrxGui
+{
+  class GLGuiImageButton : public GLGuiWidget
+  {
+  public:
+    GLGuiImageButton();
+    virtual ~GLGuiImageButton();
+
+    void debug() const;
+
+  protected:
+    virtual void resize();
+
+  private:
+
+  private:
+
+  };
+
+}
+
+#endif /* _GLGUI_IMAGEBUTTON_H */
Index: branches/gui/src/story_entities/game_menu.cc
===================================================================
--- branches/gui/src/story_entities/game_menu.cc	(revision 8677)
+++ branches/gui/src/story_entities/game_menu.cc	(revision 8688)
@@ -25,19 +25,12 @@
 
 #include "util/loading/load_param.h"
-#include "fast_factory.h"
 #include "util/loading/factory.h"
-#include "loading/resource_manager.h"
-
-#include "world_entity.h"
-#include "elements/image_entity.h"
-#include "terrain.h"
+#include "util/loading/resource_manager.h"
+
+#include "graphics_engine.h"
 #include "camera.h"
-
-#include "graphics_engine.h"
-#include "object_manager.h"
 #include "sound_engine.h"
+
 #include "sound_source.h"
-
-#include "cd_engine.h"
 
 #include "glgui.h"
@@ -136,8 +129,11 @@
 
   this->optionsBox = NULL;
+  this->generalBox = NULL;
   this->audioBox = NULL;
   this->videoBox = NULL;
   this->controlBox = NULL;
   this->levelsBox = NULL;
+
+  this->currentlyOpened = NULL;
 
   return GameWorld::loadData();
@@ -174,7 +170,7 @@
 }
 
+
 void GameMenu::showCampaigns()
 {
-
   if (this->levelsBox == NULL)
   {
@@ -206,14 +202,10 @@
   }
 
-  this->levelsBox->showAll();
-  this->levelsBox->setRelCoor2D(200, 100);
-  this->mainMenuBox->setRelCoorSoft2D(50, 100, 5);
+  this->showSecondLevelElement(this->levelsBox);
 
 }
 
 void GameMenu::showMultiPlayer()
-{
-
-}
+{}
 
 void GameMenu::showOptionsMenu()
@@ -241,13 +233,21 @@
     }
   }
-  this->optionsBox->showAll();
-  this->optionsBox->setRelCoor2D(200, 100);
+
+  this->showSecondLevelElement(this->optionsBox);
+}
+
+
+void GameMenu::showSecondLevelElement(OrxGui::GLGuiBox* element)
+{
+  if (this->currentlyOpened != NULL && this->currentlyOpened != element)
+    this->currentlyOpened->hideAll();
+
+  element->showAll();
+  element->setRelCoor2D(200, 100);
+
+  this->currentlyOpened = element;
 
   this->mainMenuBox->setRelCoorSoft2D(50, 100, 5);
-
-}
-
-
-
+}
 
 
Index: branches/gui/src/story_entities/game_menu.h
===================================================================
--- branches/gui/src/story_entities/game_menu.h	(revision 8677)
+++ branches/gui/src/story_entities/game_menu.h	(revision 8688)
@@ -46,4 +46,5 @@
     void showOptionsMenu();
 
+
     void quitMenu();
 
@@ -54,4 +55,7 @@
 
   private:
+    void showSecondLevelElement(OrxGui::GLGuiBox* element);
+
+
     void animateScene(float dt);
     void switchMenuLayer(int layer1, int layer2);
@@ -66,7 +70,10 @@
 
     OrxGui::GLGuiBox*                 optionsBox;
+    OrxGui::GLGuiBox*                 generalBox;
     OrxGui::GLGuiBox*                 audioBox;
     OrxGui::GLGuiBox*                 videoBox;
     OrxGui::GLGuiBox*                 controlBox;
+
+    OrxGui::GLGuiBox*                 currentlyOpened;
 
     Vector                            cameraVector;
