Index: trunk/Utilities/FROG/Includes/FROG/FROG_Chunk.h
===================================================================
--- trunk/Utilities/FROG/Includes/FROG/FROG_Chunk.h	(revision 96)
+++ trunk/Utilities/FROG/Includes/FROG/FROG_Chunk.h	(revision 100)
@@ -114,4 +114,5 @@
 #define	C_PRIMITIVE_PARTIALSPHERE	41031   // Contains a sphere
 #define	C_PRIMITIVE_CYLINDER		41040	// Contains a cylinder
+#define	C_PRIMITIVE_CONE		41080	// Contains a cylinder
 
 #define	C_PRIMITIVE_SURFACE			42000	// Contains Chunks related to Surface Primtive (Plane, Disc, ...)
Index: trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.cpp
===================================================================
--- trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.cpp	(revision 96)
+++ trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.cpp	(revision 100)
@@ -139,4 +139,13 @@
 				}				
 			break;
+
+                       case C_PRIMITIVE_CONE :
+                                NObjs = (chunk_size-chunk_read)/(FROG_Element_Primitive_Cone::sizeOf()-6);
+                                for(int i=0;i<NObjs;i++){
+                                        mother->addDaughter(new FROG_Element_Primitive_Cone(pFile));
+                                        chunk_read += FROG_Element_Primitive_Cone::sizeOf()-6;
+                                }
+                        break;
+
 
 			case C_PRIMITIVE_CUSTOM_SURFACE :
Index: trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.h
===================================================================
--- trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.h	(revision 96)
+++ trunk/Utilities/FROG/Includes/FROG/FROG_Element_Tools.h	(revision 100)
@@ -25,4 +25,5 @@
 #include "FROG_Element_Primitive_PartialSphere.h"
 #include "FROG_Element_Primitive_Cylinder.h"
+#include "FROG_Element_Primitive_Cone.h"
 
 #include "FROG_Element_Primitive_CustomSurface.h"
Index: trunk/Utilities/FROG/main.cpp
===================================================================
--- trunk/Utilities/FROG/main.cpp	(revision 96)
+++ trunk/Utilities/FROG/main.cpp	(revision 100)
@@ -5,4 +5,6 @@
 void Loading()
 {
+	char Buffer[1024];
+
 	switch(mLoading_I)
 	{	
@@ -43,11 +45,12 @@
 			ViewScreen = new FROG_View_Screen("Screen");
 			ViewScreen->Reshape(WINDOW_WIDTH,WINDOW_HEIGHT);
-			ViewScreen->LoadingInProgress(0.0f,"Reading config.txt",Fonts,LogoTexture);
+			sprintf(Buffer,"Reading %s",inputConfig.c_str());
+			ViewScreen->LoadingInProgress(0.0f,Buffer,Fonts,LogoTexture);
 		
 
-			LoadCard("config.txt");
+			LoadCard(inputConfig.c_str());
 			if(!Card->IsTagPresent("InputGeom") && !Card->IsTagPresent("InputVisFile")){
 			   printf("There is no .geom file neither than .vis file in the Config card\n");
-			   printf("FROG will stop.  Please update the Config card (config.txt)\n");
+			   printf("FROG will stop.  Please update the Config card (%s)\n",inputConfig.c_str());
 			   exit(0);
 			}			
@@ -61,5 +64,5 @@
 			   inputGeom = Card->GetStringVector("InputGeom");	   
 			   for(unsigned int g=0;g<inputGeom.size();g++){
-				   inputGeom[g] = string((char*)DownLoadFile( (char*)inputGeom[g].c_str() ) );
+				   inputGeom[g] = string((char*)DownLoadFile( (char*)inputGeom[g].c_str(), AbsolutePath.c_str() ) );
 			   }
 			}						
@@ -67,4 +70,5 @@
 
 		case 2:
+			/*
 			ViewScreen->LoadingInProgress(10.0f,"Downloading Events\n(if necessary)",Fonts,LogoTexture);			
 
@@ -72,5 +76,6 @@
 				inputVisFileFromCard = Card->GetString("InputVisFile");			   	
 			}
-			inputVisFile = string((char*)DownLoadFile( (char*)inputVisFileFromCard.c_str() ) );
+			inputVisFile = string((char*)DownLoadFile( (char*)inputVisFileFromCard.c_str(), AbsolutePath.c_str() ) );
+			*/
 			break;
 
@@ -87,37 +92,32 @@
 			}			
 			frogObjects_ = new FROG_Objects_Extended(geom,NULL,Card, Fonts);
+
 			
 			}break;
 
 		case 4:{
-			if(strcmp(inputVisFile.c_str(),"")==0){
-				ViewScreen->LoadingInProgress(80.0f,"No Event Files has been Given",Fonts,LogoTexture);
-			}else{
-				ViewScreen->LoadingInProgress(80.0f,(char*)inputVisFile.c_str(),Fonts,LogoTexture);
-			}
+			ViewScreen->LoadingInProgress(80.0f,"Loading .vis Files",Fonts,LogoTexture);
 
 			if(events)delete events;
-			events = new FROG_Events();				
-			events->Load(inputVisFile.c_str());
-			events->frogObjects_ = frogObjects_;
-			events->Init(frogObjects_);
+			events = new FROG_Events(frogObjects_);						
+			events->Load(inputVisFileFromCommand);				
 			events->readEventToDisplay(Card);
-			if(SCREENSAVER)eventNumber = rand()%((int)events->NumberOfEvents());
+			if(SCREENSAVER)eventNumber = rand()%((int)events->NumberOfEvents());			
 			event = events->GoToEvent(eventNumber);	
-
 			}break;
 
-		case 5:{
+		case 5:{			
 			ViewScreen->LoadingInProgress(95.0f,"Views Initialisation",Fonts,LogoTexture);
 
 			ViewScreen->displayFunc_ = displaytext;
 			std::vector<string> ViewsName = Card->GetStringVector("ActiveViews");
-			ViewMain = ViewScreen;			
-			for(unsigned int i=0;i<ViewsName.size();i++){				
+			ViewMain = ViewScreen;						
+			for(unsigned int i=0;i<ViewsName.size();i++){								
 				char* tmp = new char[ViewsName[i].size()+1];				
 				strcpy(tmp,ViewsName[i].c_str());				
-				ActiveViews.push_back(FROG_VIEW::Create(tmp,frogObjects_));								
-			}						
+				ActiveViews.push_back(FROG_VIEW::Create(tmp,frogObjects_));												
+			}							
 			ViewScreen->Reshape(WINDOW_WIDTH,WINDOW_HEIGHT);
+			
 			for(unsigned int j=0;j<ActiveViews.size();j++){
 				if(ViewMain==ViewScreen && ActiveViews[j]->IsSwapPossible()){ViewMain = ActiveViews[j];}
@@ -125,9 +125,9 @@
 				ActiveViews[j]->displayFunc_ = &display2;
 			}				
-			ViewMain->IsActive = true;
+			ViewMain->IsActive = true;			
 			geom->updateGeomToDisplay((void*)frogObjects_);
 
 			ViewMenu = new FROG_View_Menu("ViewMenu2",frogObjects_);
-			ViewMenu->Reshape(WINDOW_WIDTH,WINDOW_HEIGHT);			
+			ViewMenu->Reshape(WINDOW_WIDTH,WINDOW_HEIGHT);						
 			}break;
 
@@ -155,4 +155,5 @@
 			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;		
 
+
 			mLoading   = false;
 			end = time ( NULL );
@@ -161,4 +162,16 @@
 			glutDisplayFunc (display);
 			glutIdleFunc    (display);
+
+			glutKeyboardFunc (processNormalKeys);
+			glutSpecialFunc  (processSpecialKeys);
+		 
+			glutMouseFunc(processMouse);
+			glutMotionFunc(processMotion);
+			if(SCREENSAVER){
+				eventTime = 20;
+				glutPassiveMotionFunc(processPassiveMotion);		
+				glutFullScreen();
+			}
+
 
 			if(SHOOTER){
@@ -207,38 +220,43 @@
 	Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH-126,WINDOW_HEIGHT - 30,"% 10i FPS", ViewScreen->FPS);
 	if(mHelpScreen){		
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 45	,"F1     = Open this Screen for Help");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 60	,"F2     = Open the Display Menu");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 75	,"F3     = use only for debug");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 90	,"F4     = Automatic ScreenShooter (Warning)");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 125	,"F5     = SimTrack       : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 140	,"F6     = SimVertex      : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 155	,"F7     = PSimHits       : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 170	,"F8     = RecoTrack      : ON/OFF");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 205	,"F9     = SiStripCluster : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 220	,"F10    = EcalHits       : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 235	,"F11    = HcalHits       : ON/OFF");		
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 250	,"F12    = MuonHit/Seg    : ON/OFF");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 285	,"0      = Geometry to Display : NONE");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 300	,"9      = Geometry to Display : FULL");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 335	,"LEFT   = Previous Event");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 350	,"RIGHT  = Next     Event");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 375	,"UP     = Increase Rotation");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 390	,"DOWN   = Decrease Rotation");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 425	,"p      = Zoom In");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 440	,"m      = Zoom Out");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 455	,"f      = Maximize the active view");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 470	,"s      = SlideShow      : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 485	,"t      = TreeMenu       : ON/OFF");
-
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 515   ,"ENTER  = Screenshot");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 530   ,"SPACE  = Rotation       : ON/OFF");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 545   ,"ESCAPE = Exit");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 560   ,"q      = Exit");
-		Fonts->Font_Fixed_9_by_15->glPrint(WINDOW_WIDTH/3,WINDOW_HEIGHT - 575   ,"a      = Full Screen");
+		if(events) Fonts->Font_Fixed_9_by_15->glPrint(0,WINDOW_HEIGHT - 14,"CurrentFile = ...%s",events->CurrentFile());
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 45	,"F1     = Open this Screen for Help");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 60	,"F2     = Open the Display Menu");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 75	,"F3     = use only for debug");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 90	,"F4     = Automatic ScreenShooter (Warning)");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 125	,"F5     = SimTrack       : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 140	,"F6     = SimVertex      : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 155	,"F7     = PSimHits       : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 170	,"F8     = RecoTrack      : ON/OFF");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 205	,"F9     = SiStripCluster : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 220	,"F10    = EcalHits       : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 235	,"F11    = HcalHits       : ON/OFF");		
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 250	,"F12    = MuonHit/Seg    : ON/OFF");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 285	,"0      = Geometry to Display : NONE");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 300	,"9      = Geometry to Display : FULL");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 335	,"LEFT   = Previous Event");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 350	,"RIGHT  = Next     Event");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 375	,"UP     = Increase Rotation");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 390	,"DOWN   = Decrease Rotation");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(500,WINDOW_HEIGHT - 375	,"PAGE UP   = Previous VisFile");
+		Fonts->Font_Fixed_9_by_15->glPrint(500,WINDOW_HEIGHT - 390	,"PAGE DOWN = Next     VisFile");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 425	,"p      = Zoom In");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 440	,"m      = Zoom Out");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 455	,"f      = Maximize the active view");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 470	,"s      = SlideShow      : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 485	,"t      = TreeMenu       : ON/OFF");
+
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 515   ,"ENTER  = Screenshot");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 530   ,"SPACE  = Rotation       : ON/OFF");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 545   ,"ESCAPE = Exit");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 560   ,"q      = Exit");
+		Fonts->Font_Fixed_9_by_15->glPrint(150,WINDOW_HEIGHT - 575   ,"a      = Full Screen");
 		
 		Fonts->Font_Fixed_9_by_15->glPrint(120,3,"This program has been created by Loic Quertenmont, loic.quertenmont@cern.ch");		
@@ -334,51 +352,6 @@
 // if required by the variable updateVisFileTime
 
-#ifdef linux        
-	if( updateVisFileTime>0 && !Thread_Run) {
-		char* argtosend = (char*)inputVisFileFromCard.c_str();
-		if (pthread_create (&Thread_H, NULL, DownLoadFile, (void*)argtosend) < 0) {
-		   printf("pthread_create error for Thread_H\n");
-		   exit (1);
-		}		
-		Thread_Run=true;
-	}
-
-	static time_t upstart = time (NULL );
-	time_t upstop = time( NULL );
-	if(upstop - upstart > updateVisFileTime && Thread_Run) {
-		(void)pthread_join (Thread_H, NULL);
-
-		Thread_Run=false;
-		glutDisplayFunc (Loading);
-		glutIdleFunc    (Loading);
-
-		mLoading_I = 30;
-		mLoading   = true;
-		start = time ( NULL );
-	}
-#elif macos
-	if( updateVisFileTime>0 && !Thread_Run) {
-		char* argtosend = (char*)inputVisFileFromCard.c_str();
-		if (pthread_create (&Thread_H, NULL, DownLoadFile, (void*)argtosend) < 0) {
-		   printf("pthread_create error for Thread_H\n");
-		   exit (1);
-		}		
-		Thread_Run=true;
-	}
-
-	static time_t upstart = time (NULL );
-	time_t upstop = time( NULL );
-	if(upstop - upstart > updateVisFileTime && Thread_Run) {
-		(void)pthread_join (Thread_H, NULL);
-
-		Thread_Run=false;
-		glutDisplayFunc (Loading);
-		glutIdleFunc    (Loading);
-
-		mLoading_I = 30;
-		mLoading   = true;
-		start = time ( NULL );
-	}
-#else	
+/*
+#ifdef windows        
 	if( updateVisFileTime>0 && !Thread_Run) {
 		char* argtosend = (char*)inputVisFileFromCard.c_str();
@@ -408,6 +381,30 @@
 		upstart = time (NULL );
 	}
+#else
+	if( updateVisFileTime>0 && !Thread_Run) {
+		char* argtosend = (char*)inputVisFileFromCard.c_str();
+		if (pthread_create (&Thread_H, NULL, DownLoadFile, (void*)argtosend) < 0) {
+		   printf("pthread_create error for Thread_H\n");
+		   exit (1);
+		}		
+		Thread_Run=true;
+	}
+
+	static time_t upstart = time (NULL );
+	time_t upstop = time( NULL );
+	if(upstop - upstart > updateVisFileTime && Thread_Run) {
+		(void)pthread_join (Thread_H, NULL);
+
+		Thread_Run=false;
+		glutDisplayFunc (Loading);
+		glutIdleFunc    (Loading);
+
+		mLoading_I = 30;
+		mLoading   = true;
+		start = time ( NULL );
+	}
+
 #endif
-
+*/
 
 }
@@ -424,5 +421,5 @@
 			break;
 		case 13 :{			
-			char temp[255]; sprintf(temp,"screenshot%02i.%s",SCREENSHOT,SCREENSHOT_FORMAT);			
+			char temp[255]; sprintf(temp,"%s%02i.%s",ScreenShotName,SCREENSHOT,SCREENSHOT_FORMAT);			
 			SaveScreenshot(temp,WINDOW_WIDTH,WINDOW_HEIGHT, displayForScreenShot );			
 			SCREENSHOT++;
@@ -439,5 +436,5 @@
 		case 'r' :
         case 'R' :
-            LoadCard("config.txt");
+            LoadCard(inputConfig.c_str());
 /*			geom->updateGeomToDisplay(Card);
 			events->prim->setDisplay(0);
@@ -586,4 +583,14 @@
 			}
 			break;
+
+		case GLUT_KEY_PAGE_UP : 
+			events->NextFile();
+			event = events->GoToEvent(0);
+			break;
+		case GLUT_KEY_PAGE_DOWN : 
+			events->PreviousFile();
+			event = events->GoToEvent(0);
+			break;
+
 		case GLUT_KEY_HOME :
 			if(ViewMain->Type_==VIEW3D)	ViewMain->cam_->Reset();			
@@ -681,8 +688,8 @@
 	ViewMain->Display_Begin();
 
-	GLuint buff[256] = {0};
+	GLuint buff[1024] = {0};
 	GLint hits, view[4];
 
-	glSelectBuffer(256, buff);
+	glSelectBuffer(1024, buff);
 	glGetIntegerv(GL_VIEWPORT, view);
 	glRenderMode(GL_SELECT);
@@ -693,5 +700,5 @@
  	glPushMatrix();
  		glLoadIdentity();
-		gluPickMatrix(x-2, y-2, 4.0, 4.0, view); 		        
+		gluPickMatrix(x-4, y-4, 8.0, 8.0, view); 		        
 		ViewMain->ProjectionMatrix();
  		glMatrixMode(GL_MODELVIEW);
@@ -723,5 +730,5 @@
 	for (i = 0; (int)i < hits; i++) {
 		unsigned int tmp = names[i * 4 + 3];
-		//printf("--> %i > %i\n",i,tmp);		
+		//printf("--> %i/%i > %i\n",i,hits,tmp);		
 		if(i == NearestHit && tmp!=0){				
 			if(tmp>1000000){
@@ -734,8 +741,8 @@
  }
 
-void LoadCard(const char* inputCard ) {
+void LoadCard(const char* inputCard ){
 	if(Card)delete Card;
-	Card = new FROG_ReadCards(inputCard);
-	
+	Card = new FROG_ReadCards(AbsolutePath.c_str(),inputCard);
+		
 	Card->GetInt  (&updateVisFileTime   , "updateVisFileTime");	
 
@@ -745,4 +752,5 @@
 
 	Card->GetChar (SCREENSHOT_FORMAT,256, "Screenshot_Format");
+	Card->GetChar (ScreenShotName,1024  , "Screenshot_Name");
 
 	Card->GetColor(BackGround_Color     , "BackGround_Color");
@@ -778,5 +786,5 @@
 	}
 	if(!mAutomaticShooter){				
-		if(eventTime>0)glutTimerFunc(1+eventTime*1000,AutomaticEventChanging, 0);	
+		if(eventTime>=0)glutTimerFunc(1+eventTime*1000,AutomaticEventChanging, 0);	
 	}else{		
 		if(mAutomaticShooter_LastEvent == events->Current_Event){
@@ -788,5 +796,5 @@
 
 	EventI++;
-	if(event && events)printf("%8u | Run %4i Event %4i | Event %4i in File Containing %4i Events\n",EventI,event->NRun_,event->NEvent_,events->Current_Event, (int)events->NumberOfEvents()-1);
+	if(event && events)printf("%8u | Run %4i Event %4i | Event %4i in File Containing %4i Events\n",EventI,event->NRun_,event->NEvent_,events->Current_Event, (int)events->NumberOfEvents());
 }
 
@@ -794,17 +802,7 @@
 int main (int argc, char *argv[])
 {	
-	#ifdef linux
-	#elif macos
-
-    #else
-		string ExePath = string(argv[0]);
-		unsigned int n = ExePath.rfind("frog");
-		ExePath = ExePath.substr(0,n);
-
-		USES_CONVERSION;
-		if(SetCurrentDirectory(A2W(ExePath.c_str()))==0){
-			printf("Was not able to change directory to %s\n",ExePath.c_str());
-		}
-    #endif
+	string ExePath = string(argv[0]);
+	unsigned int n = ExePath.rfind("frog");
+	AbsolutePath = ExePath.substr(0,n);
 
 	
@@ -821,23 +819,33 @@
 		if(      strcmp(LowCase,"-shooter"				 )==0){SHOOTER		= true;
 		}else if(strcmp(LowCase,"-s"					 )==0){SCREENSAVER	= true;
-		}else if(len>=4 && strcmp(LowCase+len-4,".vis"	 )==0){inputVisFileFromCard = string(argv[i]);
-		}else if(len>=7 && strcmp(LowCase+len-7,".vis.gz")==0){inputVisFileFromCard = string(argv[i]);
+		}else if(strcmp(LowCase,"-v"					 )==0){
+			printf("Fast and Realistic OpenGl Event Display : FROG\n");
+			printf("Version      : %6.3f of %s\n",FROG_VERSION,__DATE__);
+			printf("Authors List : \n");
+			printf("%s\n",FROG_AUTHORLIST);	
+			exit(0);
+		}else if(strcmp(LowCase,"-c"					 )==0 && i+1<argc){ 
+			i++;	inputConfig = string(argv[i]);
+		}else if(len>=4 && strcmp(LowCase+len-4,".vis"	 )==0){inputVisFileFromCommand.push_back(string(argv[i]));
+		}else if(len>=7 && strcmp(LowCase+len-7,".vis.gz")==0){inputVisFileFromCommand.push_back(string(argv[i]));
 		}else{
 			printf("\n");
-			printf("######################################################################\n");
-			printf("#                 http://projects.hepforge.org/frog/                 #\n");
-			printf("#   Please have a look at the website for latest versions and news   #\n");
-			printf("# Also register to the Frog mailing list if you are not a member yet #\n");			
-			printf("######################################################################\n");
-			printf("#                             HELP SCREEN                            #\n");
-			printf("######################################################################\n");
-			printf("#  Supported Commands are :                                          #\n");
-			printf("#  filename.vis        --> open the file : filename.vis              #\n");
-			printf("#  filename.vis.gz     --> open the file : filename.vis.gz           #\n");
-			printf("#  -help               --> Print this screen                         #\n");
-			printf("#  -s                  --> ScreenSaver Mode                          #\n");
-			printf("#  -shooter            --> Scan events, make a screenshot and exit   #\n");
-			printf("######################################################################\n");
-			printf("\n");
+			printf("#######################################################################\n");
+			printf("#                  http://projects.hepforge.org/frog/                 #\n");
+			printf("#   Please have a look at the website for latest versions and news    #\n");
+			printf("# Also register to the Frog mailing list if you are not a member yet  #\n");			
+			printf("#######################################################################\n");
+			printf("#                             HELP SCREEN                             #\n");
+			printf("#######################################################################\n");
+			printf("#  Supported Commands are :                                           #\n");
+			printf("#  filename.vis        --> open the file : filename.vis               #\n");
+			printf("#  filename.vis.gz     --> open the file : filename.vis.gz            #\n");
+			printf("#  -help               --> Print this screen                          #\n");
+			printf("#  -v                  --> Print Version and Other Info               #\n");
+			printf("#  -s                  --> ScreenSaver Mode                           #\n");
+			printf("#  -c <config.txt>     --> Specify the Frog Configuration Card to use #\n");
+			printf("#  -shooter            --> Scan events, make a screenshot and exit    #\n");
+			printf("#######################################################################\n");
+			printf("\n");			
 			exit(0);
 		}
@@ -854,6 +862,6 @@
 
 	// Charge le logo en mémoire
-	LoadTexture((unsigned int*)&LogoTexture     ,"Resources/Frog_Logo.png");
-	LoadTexture((unsigned int*)&LogoTxtTexture  ,"Resources/Frog_LogoTxt.png");
+	LoadTexture((unsigned int*)&LogoTexture     ,FROG_PATH::GetGlobalPath("Resources/Frog_Logo.png"   ,AbsolutePath.c_str()).c_str());
+	LoadTexture((unsigned int*)&LogoTxtTexture  ,FROG_PATH::GetGlobalPath("Resources/Frog_LogoTxt.png",AbsolutePath.c_str()).c_str());
 
 	// initialisation des fonctions callback appelées par glut 
@@ -864,15 +872,4 @@
 	glutIdleFunc    (Loading);
 
-	// here are the new entries
-	glutKeyboardFunc (processNormalKeys);
-	glutSpecialFunc  (processSpecialKeys);
- 
-	glutMouseFunc(processMouse);
-	glutMotionFunc(processMotion);
-	if(SCREENSAVER){
-		eventTime = 20;
-		glutPassiveMotionFunc(processPassiveMotion);		
-		glutFullScreen();
-	}
 	
 	// initialisation of GLEW (OpenGL Extension Wrangler Library)
Index: trunk/Utilities/FROG/main.h
===================================================================
--- trunk/Utilities/FROG/main.h	(revision 96)
+++ trunk/Utilities/FROG/main.h	(revision 100)
@@ -7,5 +7,5 @@
 #define _MAIN_H__
 
-#define FROG_VERSION 1.105
+#define FROG_VERSION 1.106
 #define FROG_AUTHORLIST "Loic.Quertenmont@cern.ch\nVincent.Roberfroid@cern.ch"
 
@@ -89,6 +89,10 @@
 GLuint LogoTxtTexture;
 
+char ScreenShotName[1024] = {"screenshot"};
+std::string AbsolutePath;
+std::string inputConfig = "config.txt";
 std::string inputVisFile;
 std::string inputVisFileFromCard;
+std::vector<string> inputVisFileFromCommand;
 std::vector<std::string> inputGeom;
 
@@ -151,4 +155,9 @@
 void displayForScreenShot();
 void displaytext();
+void processNormalKeys(unsigned char key, int x, int y);
+void processSpecialKeys(int key, int x, int y) ;
+void processMouse(int button, int state, int x, int y);
+void processMotion(int x, int y);
+void processPassiveMotion(int x, int y);
 
 void LoadCard(const char* inputCard );
@@ -161,5 +170,4 @@
 void updateEventsFile();
 
-
 #endif
 
