scenario = "blkblr";
no_logfile = true;
active_buttons = 2; 
button_codes = 1,2;
default_background_color = 127, 127, 127;   
default_text_color = 255, 255, 255;
default_font_size = 18;

begin;


### Screen for participant name:
picture {
   text {
      font_size = 24;
      caption = "Por favor, entre com o seu nome e pressione ENTER";
   };
   x = 0; y = 100;
   text {
      font_size = 24;
      caption = " ";
   } response_text;
   left_x = -200;
   y = 0;
} participant_name;

###
### Eye-tracker calibration screen:
#picture {
#	background_color = 127, 127, 127;
#	box {
#		height = 10; width = 10;
#		color = 0, 0, 0; #check if we want the square another color
#		}box1;
#		x=0; y=0;
#	} et_calibration;
###
### give pic to rego to center
trial {    
	trial_duration = 2000;
		picture{
		background_color = 127,127,127;
	}infra_video;
} trial_recenter;
###

trial {
   picture {
				text { caption = " place_holder "; font_size = 24;} instruction_text;
      x = 0; y = 30;
   };
   time = 0;
   duration = response;
} instruction_trial;

###
picture {
   text {
#      font_size = 24;
      caption = "Por favor, pressione o botão esquerdo do mouse para continuar.";
   };
   x = 0; y = 100;

} after_video_screen;

trial {

	trial_duration = stimuli_length;
	trial_type = fixed;
   video { filename = "v1_1280x720.avi"; 
   speed_type = video_speed_hz;
   speed = 30;
   use_audio = false;
   } vid;
} video_trial;

#wavefile { filename = "t1.wav"; } ding;
#trial {
#   sound { wavefile ding; } sound1;
#} trial1;
### Choosing Score
array {
		text { caption = "0"; } text0;    
		text { caption = "1"; } text1;    
		text { caption = "2"; } text2;
		text { caption = "3"; } text3;
		text { caption = "4"; } text4;
		text { caption = "5"; } text5;
		text { caption = "6"; } text6;
		text { caption = "7"; } text7;
		text { caption = "8"; } text8;
		text { caption = "9"; } text9;
		text { caption = "10"; } text10;
		text { caption = "Baixa";} textPoor;
		text { caption = "Alta";} textExcellent;
	} numbers;
	
	
### Labels -- sem labels 
array {
		text { caption = " "; } label0;    
		text { caption = " "; } label1;    
		text { caption = " "; } label2;
		text { caption = " "; } label3;
		text { caption = " "; } label4;
		text { caption = " "; } label5;
		text { caption = " "; } label6;
		text { caption = " "; } label7;
		text { caption = " "; } label8;
		text { caption = " "; } label9;
		text { caption = " ";} textPoor3;
		text { caption = " ";} textExcellent3;
	} labels;
####################################

######################################### ESCALA de ANNOYANCE
trial
{
   picture {   
		# the line
		box { color = 255,255,255; height = 3; width = 500; };
		x = 0; y = -20;  
		# scale marks
		box { color = 255,255,255; height = 10; width = 3; };
		x = -250; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = -200; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = -150; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = -100; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = -50; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 0; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 50; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 100; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 150; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 200; y = -20;  
		box { color = 255,255,255; height = 10; width = 3; };
		x = 250; y = -20; 
		# the cursor
		box { color = 255,0,0; height = 20; width = 7; };
		x = 0; y = -20;
		# the text
		text { caption = "\n\nMovimente o mouse para escolher um valor na escala.\nPressione o botão esquerdo quando houver escolhido um valor.";} cap_text;
		x = 0; y = -150;
		text text0; 
		x = -250; y = 10;     
		text text1; 
		x = -200; y = 10;     
		text text2; 
		x = -150; y = 10;
		text text3; 
		x = -100; y = 10;
		text text4; 
		x = -50; y = 10;
		text text5; 
		x = 0; y = 10;
		text text6; 
		x = 50; y = 10;
		text text7; 
		x = 100; y = 10;
		text text8; 
		x = 150; y = 10;
		text text9; 
		x = 200; y = 10;  
		text text10; 
		x = 250; y = 10;
		text { caption = "Imperceptível"; } poor_text;
		x = -250; y = -50;
		text { caption = "Muito Irritante"; } excellent_text;
		x =  250; y = -50;
	} slider_pic;
} slider_trial;

############################################
box {height = 10 ; width = 10;}border_box;
array {
	LOOP $i 20; 
	text {caption = " "; background_color = 127, 127, 127 ;};
	ENDLOOP;
}menu_text;

text{caption = "mii"; font_size = 7; background_color = 255,255,255; }cursor;
text{caption = " "; font_size = 36; background_color = 127,127,127;}titletext;

trial{
	picture{
	background_color = 127,127,127;
	}pic;
}menu_screen;

###########
### PCL ###
###########

begin_pcl;

#global variables
array< string > VideoNames[0][0];
array< string > VOriginalNames[0][0];
int iExpCount = 0;
array <int> scores[2];#array where the scores are saved
int sessions = 1; #set depending on how many sessions
string file_name;
string namevo; #name of the original video
string input_file_name;
int iCount = 1;
int max_x = display_device.width() / 2;
int min_x = -max_x;
int max_y = display_device.height() / 2;
int min_y = -max_y;
int bottom_max_y = 100; #for restricting mouse to bottom half
int bottom_min_y = min_y + 40; #for restricting mouse to bottom half
int start_time;
string instructions;

#mouse stuff
mouse mse = response_manager.get_mouse( 1 );
mse.set_min_max( 1, -250, 250 );
int iCursor_x_delta; 
int resp_count_pre;

#files
input_file filevideoNames = new input_file;
output_file fExpRes = new output_file;
output_file newFileList = new output_file;

### Tracker Comment Out ###
#	int Caltype = 13; #>>>> set the strenght of calibration (5,9,13)
#	eye_tracker tracker = new eye_tracker( "{F62A86B9-6F75-49B7-944F-2B4DECA92F48}" );
#	string cmd_et_bmp = "ET_BMP " + "c:\\packet_loss\\";                                                            
#	string cmd_et_sav = "ET_SAV " + "c:\\packet_loss\\";

## ###
											###################
#################################### Subroutines ########################################
											###################

# 1. Utility subroutines
########################

## ### Tracker Comment Out ###

## ##	EYE TRACKER CALIBRATION
#	sub
#		calibration 
#	begin
#		if (Caltype == 5)
#		then tracker.calibrate( et_calibrate_default, 5.0, 0.0, 0.0 );
#		elseif (Caltype == 9)
#		then tracker.calibrate( et_calibrate_default, 9.0, 0.0, 0.0 );
#		elseif (Caltype == 13)
#		then tracker.calibrate( et_calibrate_default, 13.0, 0.0, 0.0 );
#		end;
#	end;
	###

# mouse activity
sub bool resp (int button, int current_count)
begin
	if response_manager.total_response_count(button) > current_count then
		return true
	end;
	return false;
end;

# 2. experiment-specific routines
#################################

# Records name of participant:
sub
	string get_response
	
	begin
	
		system_keyboard.set_case_mode( 3 ); # Accept capital letter input
		system_keyboard.set_max_length( 1 );
	
		loop until false begin  #start the loop
			response_text.set_caption( " " + file_name );
			response_text.redraw();
			participant_name.present();
			string letter = system_keyboard.get_input(); 
			if (system_keyboard.last_input_type() == keyboard_delimiter) then
				break # end the loop
			end;
      if (letter == "=" && file_name.count( ) != 0) then # Check if you were pressing backspace and there are still letters in the string
		int Str_lngth = file_name.count( );
		Str_lngth = Str_lngth - 1;
		file_name.resize( Str_lngth );
      end; 
      if (letter != "=") then     
      file_name = file_name + letter 
		end;  
		end;
		return file_name
	end; 
###

# shows videos
sub
	int showVideo(string filename)
	begin
		vid.set_filename(filename);
		#term.print_line(filename);
		vid.prepare();

		### recentering
		trial_recenter.present();
		fExpRes.print( (clock.time()-start_time) ); fExpRes.print("\t");
		
## ### Tracker comment out ###
#		tracker.send_command(cmd_et_bmp + "ET_background.jpg");### sending image name to eye tracker

		video_trial.present();
		fExpRes.print( (clock.time()-start_time) ); fExpRes.print("\t");
		return 1;
	end;

# show audio
#sub
#   play( string message )
#begin
#   display_window.erase();
#   display_window.draw_text( message );
#   trial1.present()
#end;
	
# allows entering scores
sub 
	array <int, 1> score_video
		begin
		int resp_count = response_manager.response_data_count( );
	loop
		mse.set_xy(0,0);
		mse.poll();
		int iCursor_x_initial = mse.x();
		int iCursor_x_current = mse.x();
		iCursor_x_delta = iCursor_x_current - iCursor_x_initial;
	until
		resp(1,resp_count)
	begin
		mse.poll();
		iCursor_x_current = mse.x();
		iCursor_x_delta = iCursor_x_current - iCursor_x_initial;
		if (iCursor_x_delta > 250) then 
			iCursor_x_delta = 250
		elseif (iCursor_x_delta < -250) then 
			iCursor_x_delta = -250
		end;
		
		#primer slider (dinamico)
		#slider_pic2.set_part_x( 13, iCursor_x_delta );
		#slider_trial2.present();
		#segundo slider (estatico)
				
	end;
	
	int score1=(iCursor_x_delta+250)/5;#score1, score que vai ser escrito no arquivo de saida
	int aux2=iCursor_x_delta;#aux2, valor da primeira avaliacao
	scores[1]=score1;#adiciona o primeiro score ao array

	resp_count = response_manager.response_data_count( );
	loop
		mse.set_xy(0,0);
		mse.poll();
		int iCursor_x_initial = mse.x();
		int iCursor_x_current = mse.x();
		iCursor_x_delta = iCursor_x_current - iCursor_x_initial;
	until 
		resp(1,resp_count)
	begin
		mse.poll();
		iCursor_x_current = mse.x();
		iCursor_x_delta = iCursor_x_current - iCursor_x_initial;
		if (iCursor_x_delta > 250) then 
			iCursor_x_delta = 250
		elseif (iCursor_x_delta < -250) then 
			iCursor_x_delta = -250
		end;	
		#slider_pic2.set_part_x( 46, iCursor_x_delta );
		#slider_trial2.present();
				
	end;
		#int score2 = (iCursor_x_delta+250)/5;
		#scores[2]=score2;
		#term.print_line(scores[2]);
		#slider_trial2.present();
		#slider_pic2.set_part_x( 13, 0 );
		#slider_pic2.set_part_x( 46, 0 );
		return scores;
	
	end;
###	
	

# Sets New Instruction Screen
sub
	instruction_screen(string instr)
	begin
		instruction_text.set_caption(instr); 
		instruction_text.redraw(); 
		instruction_trial.present();
	end;
###

# Finds the original video from an array comparing it with the current video shown

sub
	string get_original(string videoname)
	
	begin
		loop
			string namev;
			string aux1;
			string aux2=videoname.substring(1,2);
			#term.print_line(videoname);
			#term.print_line(aux2);
			int nV=VOriginalNames[1].count();
			int i=1;
			bool located=false;
		until
			located || (i > nV)
		begin
			namevo=VOriginalNames[1][i];
			#term.print_line(namev);
			aux1=namevo.substring(1,2);
			if (aux1==aux2) then
				located=true;
			else
				i=i+1;
			end;
		end;
		
	return namevo;

	end; 


#loads the video lists for the current task
sub
	loadvideos (string filename, int nSess)
	begin
	filevideoNames.open( filename );#abre o arquivo filename
	
	VideoNames.resize(nSess);
	
		loop 
			int iNameCount = 1;
			string strFileName = "";
		until filevideoNames.end_of_file() # parse text file
		begin
			loop
				int j = 1;
			until j > nSess
			begin
				strFileName = filevideoNames.get_line();
				if strFileName != ""
				then
					VideoNames[j].resize( iNameCount );
					VideoNames[j] [iNameCount] = strFileName;
				end;
			j = j+1;
			end;
			iNameCount = iNameCount + 1;
		end;
		#imgsPerGroup = iNameCount;
		filevideoNames.close();	
		
		loop
		int j = 1;
		until j > nSess
		begin
			VideoNames[j].shuffle();
			j = j+1;
		end;

end;
	
#load videos in order without suffling them

sub
	loadvideos_in_order (string filename, int nSess)
	begin
	filevideoNames.open( filename );#abre o arquivo filename
	
	VideoNames.resize(nSess);
	
		loop 
			int iNameCount = 1;
			string strFileName = "";
		until filevideoNames.end_of_file() # parse text file
		begin
			loop
				int j = 1;
			until j > nSess
			begin
				strFileName = filevideoNames.get_line();
				if strFileName != ""
				then
					VideoNames[j].resize( iNameCount );
					VideoNames[j] [iNameCount] = strFileName;
					#term.print_line(strFileName);
				end;
			j = j+1;
			end;
			iNameCount = iNameCount + 1;
			#term.print_line(iNameCount);
		end;
		#imgsPerGroup = iNameCount;
		filevideoNames.close();	
		
		#loop
		#int j = 1;
		#until j > nSess
		#begin
		#	VideoNames[j].shuffle();
		#	j = j+1;
		#end;

end;

# Loads original videos from a text file

sub
	load_original_videos (string filename, int nSess)
	begin
	filevideoNames.open( filename );#abre o arquivo filename
	
	VOriginalNames.resize(nSess);
	
		loop 
			int iNameCount = 1;
			string strFileName = "";
		until filevideoNames.end_of_file() # parse text file
		begin
			loop
				int j = 1;
			until j > nSess
			begin
				strFileName = filevideoNames.get_line();
				if strFileName != ""
				then
					VOriginalNames[j].resize( iNameCount );
					VOriginalNames[j] [iNameCount] = strFileName;
				end;
			j = j+1;
			end;
			iNameCount = iNameCount + 1;
		end;
		#imgsPerGroup = iNameCount;
		filevideoNames.close();	
		
		#loop
		#int j = 1;
		#until j > nSess
		#begin
		#	VideoNames[j].shuffle();
		#	j = j+1;
		#end;

end;


                                ####################
################################### MAIN ROUTINE ######################################
                                ####################

file_name = get_response();

instructions = "Bem-vindo! \n\n" +
 " Este experimento está dividido em 3 sessões: \n \n" +
 " (1) Sessão de Apresentação, \n\n" + 
 " (2) Sessão de Treinamento,  \n\n"+
 " (3) Sessão Principal. \n\n\n" +
 " No início de cada sessão, vou explicar \n" + 
 " o que você deve fazer em cada sessão.\n" +
 " \n\n\n\nClique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);


## eyetracking calibration
instructions = "A distância entre o monitor e os seus olhos\n" +
"  é muito importante. Tente não se inclinar para trás\n" +
" ou para frente durante o experimento. \n" +
" \n\n\n\nClique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions); 

#instructions = "(1) CALIBRATION SESSION\n\n\n" +
#"Please, wait for a few seconds while I adjust the system.\n\n" +
#"When the system is ready, I will ask you to continue.\n\n" +
#" \n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 

#instructions = "(1) CALIBRATION SESSION\n\n\n" +
# "You're now going to see a series of small black SQUARES on the screen.\n\n"+
# "At each screen, one black square will appear at a different position.\n\n" +
# "Please, keep your eyes fixed on each of these squares.\n"+
# "\n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 

#free looking of originals 

 ### Tracker comment out ###   
	
#	tracker.start_tracking(); 
	
#	string cal = "cal.bmp";
#	string idf = file_name + "S1.idf";    

#	calibration();                           
#	tracker.send_command( "ET_CLR" );
#	tracker.set_recording( true );

start_time = clock.time();

## ###
	
#instructions = "(1) CALIBRATION SESSION\n\n\n" +
#"Thank you!\n\n The calibration is now complete.\n\n"+
#"\n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 

#instructions = "(1) SESSÃO LIVRE\n\n\n" +
#				"Agora você vai assistir uma série de videos sem audio. \n\n"+
#				"\nPor favor, assista eles como se estivesse em casa assistindo a TV\n\n"+
#				"\n\n\n Quando você estiver pronto para começar, por favor clique esquerdo do mouse para continuar";
#instruction_screen(instructions); 

## VIDEO FREE-LOOKING
#####################

#suprimimos esta parte por enquanto

#timing output file

string file_name_txt = file_name;
file_name_txt.append ( "_FL_timing.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\n");

#input_file_name = "originals\\originals_list_v.txt";
#loadvideos_in_order(input_file_name, 1);

#loop
#term.print_line("Entre al loop");
#int j = 1;
#string vfn;
#int nVid = VideoNames[1].count();
#until j > nVid
#begin
#	vfn = VideoNames[1][j];
#	term.print_line(vfn);
	#showVideo(vfn);
#	fExpRes.print( vfn ); fExpRes.print("\n");
#	j = j+1;
#end;

fExpRes.close();


## TRAINING
###################

#Part 1: show videos with impairments, no scoring
instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" +
					"Este estudo tem como objetivo medir o grau de incômodo causado\n"+
					" pelos artefatos (defeitos) presentes nos sinais de vídeo.\n\n"+
					"Não estamos interessados no conteúdo dos vídeos apresentados, \n"+
					"mas apenas se os defeitos são perceptíveis e, caso positivo, \n"+ 
					"se incomodam muito ou pouco (grau de DEGRADAÇÃO). \n"+
					" \n\n\n\nClique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" +
					"Para você ter uma idea de como avaliar os defeitos ou artefatos, vou apresentar uma\n" +
					"série de vídeos. A série inclui dois conjuntos de vídeos: originais e degradados.\n\n\n" +
					"Primeiramente, vamos apresentar um conjunto com 4 vídeos originais de alta qualidade.\n"+
					" \n\n\n\nClique no botão esquerdo do mouse para tocar os vídeos de alta qualidade.";
instruction_screen(instructions);

# Playing high quality videos
file_name_txt = file_name;
file_name_txt.append ( "_training_ORG_timing.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\n");
#input_file_name = "training\\training_HQ_list.txt"; MODIFICAR
input_file_name = "training\\training_ORG_list.txt";
loadvideos_in_order(input_file_name, 1);

loop
	int j = 1;
string vfn;
int nVid = VideoNames[1].count();
until j > nVid
begin
	vfn = VideoNames[1][j];
	#mostra videos
	####################
	showVideo(vfn);
	fExpRes.print( vfn ); fExpRes.print("\n");
	j = j+1;
end;
fExpRes.close();

# Play degraded 
instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" +
					"Em seguida, vamos apresentar os vídeos degradados. Estes vídeos \n"+
					"lhe darão uma  ideia do intervalo de DEGRADAÇÃO dos artefatos.\n\n\n"+
					"Você deve atribuir um valor de DEGRADAÇÃO igual a '10' \n"+
					" para os vídeos com defeitos mais irritantes (ou incômodos). \n\n\n"+
					" \n\n\n\nClique no botão esquerdo do mouse para tocar os vídeos degradados.";
instruction_screen(instructions);

file_name_txt = file_name;
file_name_txt.append ( "_training_LQ_timing.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\n");
#input_file_name = "training\\training_LQ_list.txt"; MODIFICAR
input_file_name = "training\\training_ORG_list.txt";
loadvideos(input_file_name, 1);

loop
	int j = 1;
string vfn;
int nVid = VideoNames[1].count();
until j > nVid
begin
	vfn = VideoNames[1][j];

	showVideo(vfn);
	fExpRes.print( vfn ); fExpRes.print("\n");
	j = j+1;
end;
fExpRes.close();
instructions = "(1) SESSÃO DE APRESENTAÇÃO\n\n\n" +
					"Aos vídeos com defeitos mais irritantes (incômodos) deve\n"+
					"ser atribuído o valor de DEGRADAÇÃO '10'. Aos defeitos com grau \n"+
					"de incômodo menor, valores intermediários devem ser atribuídos. \n\n"+
					"Por exemplo, se os defeitos causarem 1/2 do incômodo causado \n"+
					"pelos defeitos de valor '10', o valor da DEGRADAÇÃO atribuído\n" +
					" deve ser '5'; se os defeitos causarem 1/10 do incômodo, o \n"+
					"valor da DEGRADAÇÃO deve ser '1'; etc.\n\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

#######################################################################################
			
#Part 2:scoring training

instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" +
					"Antes de começar a sessão experimental, realizaremos uma sessão de treinamento \n"+
					"para ter certeza que você entendeu as tarefas do experimento. As tarefas a serem \n"+
					"realizadas nesta sessão serão as mesmas realizadas no experimento principal.\n\n"+
					"As respostas nesta sessão não serão gravadas.\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" +
					"A cada sessão, um vídeo com duração de 8 segundos é apresentado.\n"+ 
					"Cada vídeo é reproduzido apenas uma vez. Após a sua apresentação,\n"+
					"perguntas vão aparecer no monitor. \n\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" +
					"Após o vídeo ser tocado, você será perguntado: Você viu algum defeito?\n\n"+ 
					"Os defeitos podem estar localizados em qualquer região do vídeo. \n"+
					"Se você não viu nenhum defeito, responda NÃO  \n"+
					"e pressione o botão esquerdo do mouse.\n\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" +
					"Para os vídeos que você detectar um defeito, responda SIM.\n"+
					"Você deverá, então, escolher um valor de DEGRADAÇÃO para o vídeo\n"+
					"utilizando a escala de degradaçao, com valores variando entre 1 e 0. \n\n\n"+
					"Aos vídeos com defeitos mais irritantes (incômodos) deve\n"+
					"ser atribuído o valor de DEGRADAÇÃO '10'. Aos defeitos com grau \n"+
					"de incômodo menor, valores intermediários devem ser atribuídos. \n\n"+
					"Escolha um número na escala clicando o botão ESQUERDO do mouse.\n\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);				


instructions = "(2) SESSÃO DE TREINAMENTO \n\n\n" +
					"Depois de selecionar sua escolha de DEGRADAÇÃO, clique no\n"+
					"botão esquerdo do mouse para tocar o próximo vídeo.\n\n"+
					"Dúvidas?\n\n"+
					"\n\n\n clique no botão esquerdo do mouse para começar a SESSÃO DE TREINAMENTO.";
instruction_screen(instructions);					
					
# not used anymore
#int main_menu_choice = menu(main_menu_options, "Did you perceive any impairments or defects in the video?");
#score_video();

#Loading referencial videos first

#input_file_name = "training\\originals_practicetest_list_v.txt";
input_file_name = "training\\training_ORG_list.txt";
load_original_videos(input_file_name, 1);

###########################################################

file_name_txt = file_name;
file_name_txt.append ( "_training_scores.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\tStrength Score\n");

#input_file_name = "training\\training_list_v.txt";
input_file_name = "training\\training_ORG_list.txt";
loadvideos(input_file_name, 1);

loop
	int j = 1;
string vfn;
int nVid = VideoNames[1].count();
array <int> t_score[2];
int turn;
until j > nVid
begin
	#current video
	vfn = VideoNames[1][j];
	
	#gets the original video from the vfn video
	namevo=get_original(vfn);
	
	turn=random(1,2);#escolhe quem vai ser primeiro
	
	if (turn==1) then
		showVideo(namevo);#original primeiro
		fExpRes.print( namevo );
		fExpRes.print("\n");			
		showVideo(vfn);
		t_score = score_video();
		fExpRes.print( vfn ); 		
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");		
	elseif (turn==2) then
		showVideo(vfn);#degradado primeiro
		fExpRes.print( vfn );
		fExpRes.print("\n");			
		showVideo(namevo);
		t_score = score_video();
		fExpRes.print( namevo );
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");	 		
	end;
	
	j = j+1;
end;

fExpRes.close();


#####################
## MAIN EXPERIMENT ##
#####################

instructions = "(3) SESSÃO PRINCIPAL \n\n\n" +
					"Agora, iniciaremos a sessão principal. \n\n\n" + 
					"Se, em algum momento do experimento, você precisar de uma pausa ou, ainda,\n"+
					"se estiver confuso sobre a tarefa a ser realizada, por favor me informe.\n\n"+
					"O experimento tem uma duração de xx minutos, caso você não realize pausas.\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar.";
instruction_screen(instructions);

instructions = "(3) SESSÃO PRINCIPAL  -- PARTE I \n\n\n" +
					"Mais alguma dúvida?\n\n"+
					"\n\n\n Clique no botão esquerdo do mouse para continuar (PARTE I).";
instruction_screen(instructions);

#instructions = "Now the experiment starts\n\nHalfway your task you will be allowed to take a small break and rest your eyes\n\n\n\nLeft-click to continue";
#instruction_screen(instructions);

#Loading referencial videos first

input_file_name = "maintest\\originals_maintest_list_v.txt";
load_original_videos(input_file_name, 1);

###########################################################


file_name_txt = file_name;
file_name_txt.append ( "_S1.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\t\Strength Score\n");


input_file_name = "maintest\\video_list_v.txt";
loadvideos(input_file_name, 2);


loop
	int j = 1;
string vfn;
int nVid = VideoNames[1].count();

array <int> t_score[2];
int turn;
until j > nVid
begin

	#current video
	vfn = VideoNames[1][j];
	#gets the original video from the vfn video
	namevo=get_original(vfn);	
	
	term.print_line("El video original" + namevo);
	term.print_line("El video degradado" + vfn);

	
	turn=random(1,2);#escolhe quem vai ser primeiro
	
	if (turn==1) then
		showVideo(namevo);#original primeiro
		fExpRes.print( namevo );
		fExpRes.print("\n");			
		showVideo(vfn);
		t_score = score_video();
		fExpRes.print( vfn ); 		
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");		
	elseif (turn==2) then
		showVideo(vfn);#degradado primeiro
		fExpRes.print( vfn );
		fExpRes.print("\n");			
		showVideo(namevo);
		t_score = score_video();
		fExpRes.print( namevo );
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");	 		
	end;
	
	j = j+1;
	
end;

fExpRes.close();

 ###Tracker comment out####
#	tracker.set_recording( false ); 
#	tracker.send_command( cmd_et_sav + "roi_exp_01\\" + idf );
#	tracker.stop_tracking();
 ###

instructions = "\n\n\nEste é o final da primeira parte do teste.\n"+
					"\n\n\nPor favor, clique no botão esquerdo do mouse para continuar com o teste (Parte II). \n";
					instruction_screen(instructions);

file_name_txt = file_name;
file_name_txt.append ( "_S2.txt");
fExpRes.open( "output\\" + file_name_txt );
fExpRes.print( "T-Start\tT-End\tVideo\tStrength Score\n");

################
# Part 2
#################

#instructions = "(1) CALIBRATION SESSION -- PART II\n\n\n" +
#					"You are now going to perform the calibration session again.\n"+
#					"Please, wait for a few seconds while the experimenter adjusts the system.\n\n" +
#					"When the system is ready, the experimenter will ask you to continue.\n\n" +
#					" \n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 

#instructions = "(1) CALIBRATION SESSION  -- PART II \n\n\n" +
# "You're now going to see a series of small black SQUARES on the screen.\n\n"+
# "At each screen, one black square will appear at a different position.\n\n" +
# "Please, keep your eyes fixated on each of these squares.\n"+
# "\n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 

#instructions = "(1) CALIBRATION FOR PART II \n\n\n" +
#					"You are now going to perform the calibration session again.
#\n\n Please keep your eyes fixed on the small black square\n\n\n\nLeft-click to continue";
#instruction_screen(instructions); 


##	##Tracker comment out####   
	
#	tracker.start_tracking(); 

#	cal = "cal.bmp";
#	idf = file_name + "S2.idf";    

#	calibration();                           
#	tracker.send_command( "ET_CLR" );
#	tracker.set_recording( true );

 start_time = clock.time();

 ###

#instructions = "Obrigado!\n\n The calibration is now complete.\n\n"+
#					"Left-click to start the Part II of the experiment."+
#					"\n\n\n\n Left-click to continue";
#instruction_screen(instructions); 

term.print_line("Main test 2");

loop
	int j = 1;
string vfn;
int nVid = VideoNames[2].count();
#term.print_line(nVid);
array <int> t_score[2];
int turn;
until j > nVid
begin
	
	#current video
	vfn = VideoNames[2][j];
	#gets the original video from the vfn video
	namevo=get_original(vfn);	


	term.print_line("El video original" + namevo);
	term.print_line("El video degradado" + vfn);
	
	
	turn=random(1,2);#escolhe quem vai ser primeiro
	
	if (turn==1) then
		showVideo(namevo);#original primeiro
		fExpRes.print( namevo );
		fExpRes.print("\n");			
		showVideo(vfn);
		t_score = score_video();
		fExpRes.print( vfn ); 		
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");		
	elseif (turn==2) then
		showVideo(vfn);#degradado primeiro
		fExpRes.print( vfn );
		fExpRes.print("\n");			
		showVideo(namevo);
		t_score = score_video();
		fExpRes.print( namevo );
		fExpRes.print("\t");
		fExpRes.print(t_score[1]);
		fExpRes.print("\t");
		fExpRes.print(t_score[2]);
		fExpRes.print("\n");	 		
	end;
	
	j = j+1;

end;

newFileList.open("maintest\\video_list_v.txt");

loop
int i = 1;
int ll = VideoNames[1].count();
string vfn;
until i >ll
begin
	vfn = VideoNames[1][i];
	#term.print_line(vfn);
	newFileList.print(vfn);
	newFileList.print("\n");
	i = i+1;
	end;
	
loop
int i = 1;
int ll = VideoNames[2].count();
string vfn;
until i > ll
begin
	vfn = VideoNames[2][i];
	newFileList.print(vfn);
	newFileList.print("\n");
	i = i+1;
end;


fExpRes.close();
newFileList.close();
instructions = "Este é o final do teste.\n\n\n\n\n Obrigado(a) pela participação!";
instruction_screen(instructions);

 ###Tracker comment out####

#	tracker.set_recording( false ); 
#	tracker.send_command( cmd_et_sav + "roi_exp_01\\" + idf );
#	tracker.stop_tracking();

 ###