function saveMultiComp(hf) % called from 'endmultiComp' or whenever temporarily saved

dat=get(hf,'userdata');

test=dat.test;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Collect the results into rsl
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

rsl.gcom=strrep(get(dat.gcom,'string'), sprintf('\n'),'; '); % general comments
rsl.hcom=get(struct([]), 'struct'); % empty array of individual comments
rsl.permVec=dat.permVec;
rsl.playVec=dat.playVec;

nbSnd=test.nbComb;
nbScale=length(test.scale);

for noScale=1:nbScale
    for noSnd=1:nbSnd
       rsl.hcom{noSnd}=strrep(get(dat.hcom{noSnd}, 'string'), sprintf('\n'),'; '); % individual comments
       posIc=get(dat.hIcon(noScale,noSnd),'position');
       scale=test.scale(noScale);
       posx=posIc(1);
       dxx=dat.dxx;
       dxI=dat.dxI;      
       minx=scale.minn;
       maxx=scale.maxx;
       stepp=scale.stepp;      
       a=(maxx-minx)/(1-2*dxx);
       b=minx-a*dxx;
       nx=a*(posx+dxI/2)+b;
       rsl.mat(noScale,noSnd)=nx;
    end
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Save it
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

test=[];
indDat=[];
sesDat=dat.sesDat;

test.rsl=rsl;
test.tstFile=sesDat.tstDat{dat.sesDat.noTst}.tstFile;
test.tstType=sesDat.tstDat{dat.sesDat.noTst}.tstType;
test.sndFile=sesDat.cuSndListFile;

% Create new test data file
sesDat.tstDat{dat.sesDat.noTst}=test;

% make temporary variable in workspace
assignin('base','multiComp',test);

% save the individual session
indDat.id=sesDat.id;
indDat.sesScript=sesDat.sesScript;
indDat.tstDat=sesDat.tstDat;
eval(sprintf('%s=indDat;',indDat.id));
expre=sprintf('save(''responses/%s'',''%s'')',indDat.id,indDat.id);
eval(expre);
