function conn_displaynetwork(option,varargin)
global CONN_x CONN_refs;
if ~nargin, option='init'; end
if ~ischar(option), option=varargin{2}; end;
cconditions=1;
switch(lower(option)),
    case 'init',
        if nargin>1, 
            data.source=varargin{1}; 
            data.side=1;
            h=msgbox('computing adjacency matrices, please wait...','conn_displaynetwork');
            results=conn_process('results_roi');
            %data.cconditions=results(1).c2;%CONN_x.Results.xX.cconditions;
            close(h);
%             if 0,%numel(CONN_x.Results.xX.nconditions)>1
%                 h=msgbox('computing adjacency matrices, please wait...','conn_displaynetwork');
%                 temp1=CONN_x.Results.xX.nconditions;
%                 temp2=CONN_x.Results.xX.cconditions;
%                 for n1=1:numel(CONN_x.Results.xX.nconditions)
%                     CONN_x.Results.xX.nconditions=temp1(n1);
%                     CONN_x.Results.xX.cconditions=1;
%                     results(n1,:)=conn_process('results_roi');
%                 end
%                 CONN_x.Results.xX.nconditions=temp1;
%                 CONN_x.Results.xX.cconditions=temp2;
%                 %data.cconditions=CONN_x.Results.xX.cconditions;
%                 close(h);
%             else
%             end
        else
            data.side=3;
            [filename,filepath]=uigetfile('*ROI*.mat');
            if ~ischar(filename), return; end
            results=load(fullfile(filepath,filename));results=results.ROI;
            if ~isfield(results(1),'c2'), results(1).c2=[]; end
            %data.cconditions=results(1).c2;
            data.source=0;%1:length(results);
        end
%         if nargin<2 || isempty(varargin{1}), 
%             answ=listdlg('Promptstring','Select ROIs','selectionmode','multiple','liststring',CONN_x.Analyses(CONN_x.Analysis).sources);
%             nsources=answ; 
%             data.source=0;
%         elseif iscell(varargin{1}), nsources=varargin{1}{1}; data.source=varargin{1}{2};
%         else, nsources=varargin{1}; data.source=0; end
        data.Z=permute(cat(4,results.y),[4,2,1,3]); % roi x roi x subject x conditions 
        %data.Z=permute(reshape(cat(3,results.y),[size(results(1).y),size(results)]),[4,2,1,3]); % roi x roi x subject x conditions
        data.names=results(1).names;
        data.names2=results(1).names2;
        data.names2reduced=data.names2;[s1,s2]=regexp(data.names2,'\d+ \([LR]\)','start','end');for n1=1:numel(data.names2),if ~isempty(s1{n1}),data.names2reduced{n1}=[data.names2{n1}(s1{n1}:s2{n1}-4),data.names2{n1}(s2{n1}-1)];end;end
        data.xyz=cat(1,results(1).xyz{:});
        data.xyz2=cat(1,results(1).xyz2{:});
        data.Zthr=.15;
        data.Zthrtype=3;
        data.Zthrside=1;
        data.thr=.05;
        data.thrtype=2;
        data.clusters=[];
        data.view=[];
        data.proj=[];
        data.x=[];
        data.y=[];
        data.z=[];
        data.bgz=0;
        data.display='connectivity';
        data.displayreduced=0;
        data.displaytheserois=1:length(data.names);
        data.displaylabels=0;
        data.displayeffectsize=0;
        data.display3d=0;
        data.visible='on';
        data.disptype=0;
        
        Zthr=data.Zthr; if data.Zthrtype==1,Zthr=atanh(Zthr);end
        if ~isfield(data,'Zthrside')||data.Zthrside==1,
            for n1=1:size(data.Z,4)
                data.Zresults(n1)=conn_network({data.Z(:,:,:,n1),data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr);
            end
        else
            for n1=1:size(data.Z,4)
                data.Zresults(n1)=conn_network({abs(data.Z(:,:,:,n1)),data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr);
            end
        end
        data.Zmodel=struct('X',results(1).xX.X,'Xname',{results(1).xX.name},'C',{{results(1).c}},'Cname',{{results(1).cname}},'C2',results(1).c2);
        data.Zmodel=conn_network_results({data.Zresults,data.Zmodel});
        fnames=fieldnames(data.Zmodel.evaluate{1});
        data.hnames=fnames;
        data.hnamesroi=zeros(1,numel(fnames));
        data.h=[];data.F=[];data.p=[];data.dof=[];data.h_net=[];data.F_net=[];data.p_net=[];data.dof_net=[];
        for nfnames=1:numel(fnames),
            if numel(fnames{nfnames})>4&&strcmp(fnames{nfnames}(end-3:end),'_roi'),
                data.h=cat(1,data.h,data.Zmodel.evaluate{1}.(fnames{nfnames}).h);
                data.F=cat(1,data.F,data.Zmodel.evaluate{1}.(fnames{nfnames}).F);
                data.p=cat(1,data.p,data.Zmodel.evaluate{1}.(fnames{nfnames}).p);
                data.dof=cat(1,data.dof,data.Zmodel.evaluate{1}.(fnames{nfnames}).dof);
                data.hnames{nfnames}=['',fnames{nfnames}(1:end-4)];
                %data.hnames{nfnames}=['Analysis of ',fnames{nfnames}(1:end-4)];
                data.hnamesroi(nfnames)=1;
            else
                data.h_net=cat(1,data.h_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).h);
                data.F_net=cat(1,data.F_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).F);
                data.p_net=cat(1,data.p_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).p);
                data.dof_net=cat(1,data.dof_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).dof);
            end
            data.statsname=data.Zmodel.evaluate{1}.(fnames{nfnames}).statsname;
        end
        data.dof_net=permute(reshape(data.dof_net,[],size(data.p_net,1),size(data.p_net,2)),[2,3,1]);
        data.dof=permute(reshape(data.dof,[],size(data.p,1),size(data.p,2)),[2,3,1]);
        data.displaymeasure=1;
        
        if isfield(CONN_x,'Setup')&&isfield(CONN_x.Setup,'normalized')&&~CONN_x.Setup.normalized,
            filename=spm_select(1,'\.img$|\.nii$',['Select background anatomical image'],{},fileparts(CONN_x.Setup.structural{1}{1}));
        elseif isfield(CONN_refs,'canonical')&&isfield(CONN_refs.canonical,'filename')&&~isempty(CONN_refs.canonical.filename)
            filename=CONN_refs.canonical.filename;
        else
            filename=fullfile(fileparts(which('spm')),'canonical','avg152T1.nii');
        end
        data.ref=spm_vol(filename);
        %color1=[1,1,1];
        %color2=.85*[1,1,1];
        color1=[1,1,1];
        color2=[1,1,1];
        hfig=figure;
        set(hfig,'units','norm','position',[.05,.2,.9,.6],'numbertitle','off','name','Network theory second-level results','color',color1,'colormap',gray,'menubar','none');
        uicontrol('style','frame','units','norm','position',[.0,.85,.5,.15],'backgroundcolor',color2,'foregroundcolor',color2);
        uicontrol('style','frame','units','norm','position',[.5,0,.5,1],'backgroundcolor',color2,'foregroundcolor',color2);
        %uicontrol('style','frame','units','norm','position',[.53,.02,.44,.
        %96],'backgroundcolor',color2);
        data.handles=[...
            uicontrol('style','text','units','norm','position',[.14,.96,.25,.04],'string','Analysis threshold (p-value)','foregroundcolor','k','backgroundcolor',color2,'fontweight','bold','horizontalalignment','left'),...
            uicontrol('style','edit','units','norm','position',[.14,.92,.05,.04],'string',num2str(data.thr),'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'thr'}),...
            uicontrol('style','popupmenu','units','norm','position',[.20,.92,.09,.04],'string',{'uncorrected','FDR corrected'},'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'thrtype'},'value',data.thrtype),...
            uicontrol('style','popupmenu','units','norm','position',[.30,.92,.14,.04],'string',{'one-sided (positive)','one-sided (negative)','two-sided'},'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'side'},'value',data.side),...
            uicontrol('style','text','units','norm','position',[.01,.96,.12,.04],'string','Analysis measure','foregroundcolor','k','backgroundcolor',color2,'fontweight','bold','horizontalalignment','left'),...
            uicontrol('style','listbox','units','norm','position',[.53,.05,.45,.25],'string',' ','max',2,'value',1,'fontname','monospaced','foregroundcolor','k','backgroundcolor',[.75,.75,.75],'callback',{@conn_displaynetwork,'list1'}),...
            uicontrol('style','text','units','norm','position',[.53,.85,.45,.04],'string',sprintf('%6s  %6s  %6s  %4s  %8s  %8s','ROI','beta','T','dof','p-unc','p-FDR'),'foregroundcolor','b','backgroundcolor',color2,'fontname','monospaced','fontweight','bold','horizontalalignment','left'),...
            uicontrol('style','listbox','units','norm','position',[.53,.30,.45,.55],'string',' ','max',2,'value',1,'fontname','monospaced','foregroundcolor','k','backgroundcolor',color2,'backgroundcolor',[.75,.75,.75],'callback',{@conn_displaynetwork,'list2'}),...
            0,...%uicontrol('style','popupmenu','units','norm','position',[.08,.0,.10,.05],'string',{'axial (x-y)','coronal (x-z)','sagittal (y-z)'},'foregroundcolor','k','backgroundcolor',color1,'callback',{@conn_displaynetwork,'view'},'value',1),...
            0,...%%%uicontrol('style','slider','units','norm','position',[.38,.0,.10,.05],'foregroundcolor','w','backgroundcolor',color1,'callback',{@conn_displaynetwork,'slider1'},'value',.5),...
            0,...%uicontrol('style','slider','units','norm','position',[.23,.0,.10,.05],'foregroundcolor','w','backgroundcolor',color1,'callback',{@conn_displaynetwork,'slider2'},'value',.5),...
            uicontrol('style','popupmenu','units','norm','position',[.53,.92,.16,.04],'string',{'Network of all ROIs','Network of selected ROIs'},'value',data.displayreduced+1,'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'displayreduced'}),...
            uicontrol('style','popupmenu','units','norm','position',[.01,.92,.12,.04],'string',{data.hnames{find(data.hnamesroi>0)}},'value',data.displaymeasure,'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'selectmeasure'}),...
            uicontrol('style','text','units','norm','position',[.70,.96,.24,.04],'string','Network edges (adjacency matrix threshold)','foregroundcolor','k','backgroundcolor',color2,'fontweight','bold','horizontalalignment','left'),...
            uicontrol('style','edit','units','norm','position',[.70,.92,.05,.04],'string',num2str(data.Zthr),'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'Zthr'}),...
            uicontrol('style','popupmenu','units','norm','position',[.76,.92,.08,.04],'string',{'correlation coefficient','z-score','cost'},'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'Zthrtype'},'value',data.Zthrtype),...
            uicontrol('style','text','units','norm','position',[.53,.96,.16,.04],'string','Network nodes','foregroundcolor','k','backgroundcolor',color2,'fontweight','bold','horizontalalignment','left'),...
            uicontrol('style','pushbutton','units','norm','position',[.68,.0,.15,.04],'string','export data','callback',{@conn_displaynetwork,'export'}),...
            uicontrol('style','popupmenu','units','norm','position',[.85,.925,.13,.04],'string',{'one-sided','two-sided'},'foregroundcolor','k','backgroundcolor',color2,'callback',{@conn_displaynetwork,'Zthrside'},'value',data.Zthrside)];
        %uicontrol('style','text','units','norm','position',[.03,.01,.05,.04],'string','view:  ','foregroundcolor','k','backgroundcolor',color1,'fontweight','bold','horizontalalignment','right');
        %uicontrol('style','text','units','norm','position',[.35,.01,.02,.04],'string','q','fontname','symbol','horizontalalignment','right','foregroundcolor','k','backgroundcolor',color1,'fontweight','bold','horizontalalignment','right');
        %uicontrol('style','text','units','norm','position',[.20,.01,.02,.04],'string','z','horizontalalignment','right','foregroundcolor','k','backgroundcolor',color1,'fontweight','bold','horizontalalignment','right');
%         rcircle=[sin(linspace(0,2*pi,64)'),cos(linspace(0,2*pi,64))']*diag([5,5]);
%         h=subplot(121);set(h,'units','norm','position',[.13,.845,.25,.05],'xtick',[],'ytick',[],'box','on');axis equal;set(h,'xlim',[-10,200]);
%         h=patch(100+rcircle(:,1),0+rcircle(:,2),'w');set(h,'edgecolor','none','facecolor','r'); 
%         h=patch(150+rcircle(:,1),0+rcircle(:,2),'w');set(h,'edgecolor','none','facecolor','b'); 
%         h=text(0,0,'ROI-ROI connectivity:','horizontalalignment','left','fontsize',8);
%         h=text(100+10,0,'Positive','horizontalalignment','left','fontsize',8);
%         h=text(150+10,0,'Negative','horizontalalignment','left','fontsize',8);
    case 'thr',
        hfig=gcbf;
        data=get(hfig,'userdata');
        str=get(data.handles(2),'string');
        if ~isempty(str2num(str)),
            data.thr=max(0,str2num(str));
        end
        data.visible='on';
    case 'thrtype',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(3),'value');
        data.thrtype=value;
        data.visible='on';
    case 'side',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(4),'value');
        data.side=value;
        data.visible='on';
    case 'selectmeasure',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(13),'value');
        data.displaymeasure=value;
        data.visible='on';
    case {'zthr','zthrtype','zthrside','displayreduced'},
        hfig=gcbf;
        data=get(hfig,'userdata');
        
        switch(lower(option)),
            case 'zthr',
                value=get(data.handles(15),'string');
                if ~isempty(value), 
                    value=str2num(value); 
                    if ~isempty(value), data.Zthr=value; end
                else
                    set(data.handles(15),'string',num2str(data.Zthr)); 
                    if ~isfield(data,'Zthrside')||data.Zthrside==1, 
                        conn_network({data.Z,data.names},data.displaytheserois,1,data.Zthrtype-1,[]);
                    else
                        conn_network({abs(data.Z),data.names},data.displaytheserois,1,data.Zthrtype-1,[]);
                    end
                    return;
                end
            case 'zthrtype',
                value=get(data.handles(16),'value');
                if ~isempty(value), data.Zthrtype=value; end
            case 'zthrside',
                value=get(data.handles(19),'value');
                if ~isempty(value), data.Zthrside=value; end
            case 'displayreduced',
                value=get(data.handles(12),'value');
                data.displayreduced=value-1;
                switch(data.displayreduced),
                    case 0,
                        data.displaytheserois=1:length(data.names);
                    case 1,
                        answ=listdlg('Promptstring','Select ROIs','selectionmode','multiple','liststring',data.names,'initialvalue',data.displaytheserois);
                        if ~isempty(answ), data.displaytheserois=answ; end
                end
                data.source=0;%data.source(data.source==0 || data.source<=length(data.displaytheserois));if isempty(data.source),data.soruce=0;end
                
        end
        
        data.visible='on';
        Zthr=data.Zthr; if data.Zthrtype==1,Zthr=atanh(Zthr);end
        if ~isfield(data,'Zthrside')||data.Zthrside==1,
            for n1=1:size(data.Z,4), data.Zresults(n1)=conn_network({data.Z(:,:,:,n1),data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr); end
        else
            for n1=1:size(data.Z,4), data.Zresults(n1)=conn_network({abs(data.Z(:,:,:,n1)),data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr); end
        end
%         if ~isfield(data,'Zthrside')||data.Zthrside==1,
%             data.Zresults=conn_network({data.Z,data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr);
%         else
%             data.Zresults=conn_network({abs(data.Z),data.names},data.displaytheserois,1,data.Zthrtype-1,Zthr);
%         end
        data.Zmodel=conn_network_results({data.Zresults,data.Zmodel});
        fnames=fieldnames(data.Zmodel.evaluate{1});
        data.hnames=fnames;
        data.hnamesroi=zeros(1,numel(fnames));
        data.h=[];data.F=[];data.p=[];data.dof=[];data.h_net=[];data.F_net=[];data.p_net=[];data.dof_net=[];
        for nfnames=1:numel(fnames),
            if numel(fnames{nfnames})>4&&strcmp(fnames{nfnames}(end-3:end),'_roi'),
                data.h=cat(1,data.h,data.Zmodel.evaluate{1}.(fnames{nfnames}).h);
                data.F=cat(1,data.F,data.Zmodel.evaluate{1}.(fnames{nfnames}).F);
                data.p=cat(1,data.p,data.Zmodel.evaluate{1}.(fnames{nfnames}).p);
                data.dof=cat(1,data.dof,data.Zmodel.evaluate{1}.(fnames{nfnames}).dof);
                data.hnames{nfnames}=['',fnames{nfnames}(1:end-4)];
                %data.hnames{nfnames}=['Analysis of ',fnames{nfnames}(1:end-4)];
                data.hnamesroi(nfnames)=1;
            else
                data.h_net=cat(1,data.h_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).h);
                data.F_net=cat(1,data.F_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).F);
                data.p_net=cat(1,data.p_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).p);
                data.dof_net=cat(1,data.dof_net,data.Zmodel.evaluate{1}.(fnames{nfnames}).dof);
            end
            data.statsname=data.Zmodel.evaluate{1}.(fnames{nfnames}).statsname;
        end
        data.dof_net=permute(reshape(data.dof_net,[],size(data.p_net,1),size(data.p_net,2)),[2,3,1]);
        data.dof=permute(reshape(data.dof,[],size(data.p,1),size(data.p,2)),[2,3,1]);
        
    case 'list1',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(6),'value');
        set(data.plotsadd2,'linewidth',1,'edgecolor','none');
        if all(value>0)&&all(value<=numel(data.plotsadd2)), 
            set(data.plotsadd2(value),'linewidth',2,'edgecolor','k'); 
            h=[];for n1=1:numel(value),h=[h,find(data.list2==value(n1))];end
            set(data.handles(8),'value',1+h);
        end
        return;
        if all(value>0&value<=length(data.displaytheserois)), 
            data.source=value;
            data.bgz=mean(data.z(data.displaytheserois(data.source)));
            %set(data.handles(11),'value',max(0,min(1,data.bgz/200+.5)));
            data.bgimage=spm_get_data(data.ref,pinv(data.ref.mat)*[data.proj(:,1:3)*[data.bgx(:),data.bgy(:),data.bgz+zeros(prod(size(data.bgx)),1)]';ones(1,prod(size(data.bgx)))]);
            %set(data.refaxes,'cdata',convn(convn(reshape(data.bgimage,size(data.bgx)),conn_hanning(5),'same'),conn_hanning(5)','same'));
        else
            data.source=0; 
            data.bgz=0;
            %set(data.handles(11),'value',max(0,min(1,data.bgz/200+.5)));
            data.bgimage=spm_get_data(data.ref,pinv(data.ref.mat)*[data.proj(:,1:3)*[data.bgx(:),data.bgy(:),data.bgz+zeros(prod(size(data.bgx)),1)]';ones(1,prod(size(data.bgx)))]);
            %set(data.refaxes,'cdata',convn(convn(reshape(data.bgimage,size(data.bgx)),conn_hanning(5),'same'),conn_hanning(5)','same'));
        end
        data.visible='on';
    case 'list2',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(8),'value');
%         if value==1||value-1>numel(data.list2), data.source=0;
%         else data.source=data.list2(value-1); end
        set(data.plotsadd2,'linewidth',1,'edgecolor','none');
        if all(value>1)&&all(value-1<=numel(data.plotsadd2)), 
            set(data.plotsadd2(data.list2(value-1)),'linewidth',2,'edgecolor','k'); 
            set(data.handles(6),'value',data.list2(value-1));
        end
        return;
        data.visible='on';
    case {'view','view-axial','view-coronal','view-sagittal'}
        hfig=gcbf;
        data=get(hfig,'userdata');
        switch(lower(option))
            case 'view-axial', data.view=1;
            case 'view-coronal', data.view=2;
            case 'view-sagittal', data.view=3;
        end
        %data.view=get(data.handles(9),'value');
        data.proj=[];data.x=[];data.y=[];data.z=[];
        %set(data.handles(10),'value',.5);
        %set(data.handles(11),'value',.5);
        data.bgz=0;
    case {'displayefffectsize-on','displayefffectsize-off'}
        hfig=gcbf;
        data=get(hfig,'userdata');
        switch(lower(option))
            case 'displayefffectsize-on', data.displayeffectsize=1;
            case 'displayefffectsize-off', data.displayeffectsize=0;
        end
        data.proj=[];data.x=[];data.y=[];data.z=[];
        data.bgz=0;
    case 'display3d'
        hfig=gcbf;
        data=get(hfig,'userdata');
        data.view=1;
        data.proj=[];data.x=[];data.y=[];data.z=[];
        data.bgz=0;
        data.display3d=1;
    case 'changebackground',
        hfig=gcbf;
        data=get(hfig,'userdata');
        filename=spm_select(1,'\.img$|\.nii$',['Select background anatomical image'],{},fileparts(data.ref.fname));
        data.ref=spm_vol(filename);
        data.view=[];data.proj=[];data.x=[];data.y=[];data.z=[];
        data.bgz=0;
    case {'labelsoff','labelson'}
        hfig=gcbf;
        data=get(hfig,'userdata');
        data.displaylabels=strcmpi(option,'labelson');
    case 'slider1',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(10),'value');
        ang=(value-.5)*pi;
        switch(data.view),
            case 1, data.proj=[1,0,0;0,cos(ang),-sin(ang);0,sin(ang),cos(ang)];
            case 2, data.proj=[1,0,0;0,sin(ang),-cos(ang);0,cos(ang),sin(ang)];
            case 3, data.proj=[0,sin(ang),cos(ang);1,0,0;0,cos(ang),-sin(ang)];
        end
        data.x=[];data.y=[];data.z=[];
    case 'slider2',
        hfig=gcbf;
        data=get(hfig,'userdata');
        value=get(data.handles(11),'value');
        data.bgz=(value-.5)*200;
        data.bgimage=spm_get_data(data.ref,pinv(data.ref.mat)*[data.proj(:,1:3)*[data.bgx(:),data.bgy(:),data.bgz+zeros(prod(size(data.bgx)),1)]';ones(1,prod(size(data.bgx)))]);
        set(data.refaxes,'cdata',convn(convn(reshape(data.bgimage,size(data.bgx)),conn_hanning(5),'same'),conn_hanning(5)','same'));
        set(hfig,'userdata',data);
        return;
    case 'export',
        hfig=gcbf;
        data=get(hfig,'userdata');
        [filename,pathname]=uiputfile({'*.csv','comma-separated file (*.csv)'},'Save as');
        Zthr=data.Zthr; if data.Zthrtype==1,Zthr=atanh(Zthr);end        
        if ~isfield(data,'Zthrside')||data.Zthrside==1,
            conn_network({data.Z,data.names,fullfile(pathname,filename)},data.displaytheserois,1,data.Zthrtype-1,Zthr);
        else
            conn_network({abs(data.Z),data.names,fullfile(pathname,filename)},data.displaytheserois,1,data.Zthrtype-1,Zthr);
        end            
        return;
    case 'disptype',
        hfig=gcf;
        data=get(hfig,'userdata');
        data.disptype=mod(1+data.disptype,2);
end

% selects optimal view
if isempty(data.view),
    a=std(data.xyz2(:,1:3),1,1);
    [nill,idx]=sort(a);
    if idx(end-1)==1, idx([end-1,end])=idx([end,end-1]); end
    if idx(end)==1&&idx(end-1)==2,data.view=1;
    elseif idx(end)==1&&idx(end-1)==3,data.view=2;
    else data.view=3; end
    %set(data.handles(9),'value',data.view);
end
% projector associated with view
if isempty(data.proj),
    switch(data.view),
        case 1, data.proj=[1,0,0;0,1,0;0,0,1];
        case 2, data.proj=[1,0,0;0,0,1;0,1,0];
        case 3, data.proj=[0,0,1;1,0,0;0,1,0];
    end
end
% projects coordinates and background image
scale=1;
scalecircle=1;
if isempty(data.x)||isempty(data.y),
    data.x=data.xyz2*data.proj(:,1);data.y=data.xyz2*data.proj(:,2);data.z=data.xyz2*data.proj(:,3);
    lim=[1,1,1;data.ref.dim];refminmax=sort([lim((dec2bin(0:7)-'0'+1)+repmat([0,2,4],[8,1])),ones(8,1)]*data.ref.mat(1:3,:)'*data.proj(:,1:2));
    [data.bgx,data.bgy]=meshgrid(refminmax(1,1):scale:refminmax(end,1),refminmax(1,2):scale:refminmax(end,2));
    data.bgimage=spm_get_data(data.ref,pinv(data.ref.mat)*[data.proj(:,1:3)*[data.bgx(:),data.bgy(:),data.bgz+zeros(prod(size(data.bgx)),1)]';ones(1,prod(size(data.bgx)))]);
end
N=length(data.displaytheserois);%length(data.names);
N2=length(data.names2);
switch(data.display),
    case 'connectivity',
        cmap=jet(64);cmap=cmap(8:56,:);
        % computes stat threshold
        if ~isequal(data.statsname,'T'), data.side=1; end
        if isequal(data.statsname,'T'), set(data.handles(4),'enable','on'); else set(data.handles(4),'value',3,'enable','off'); end
        switch(data.side),
            case 1,p=data.p(data.displaymeasure,:);p_net=data.p_net(data.displaymeasure);
            case 2,p=1-data.p(data.displaymeasure,:);p_net=1-data.p_net(data.displaymeasure);
            case 3,p=2*min(data.p(data.displaymeasure,:),1-data.p(data.displaymeasure,:));p_net=2*min(data.p_net(data.displaymeasure),1-data.p_net(data.displaymeasure));
        end
        %if data.displayreduced, p=p(:,1:N); end
        %p=p(intersect(1:N,data.displaytheserois),data.displaytheserois);
        %p(setdiff(1:N,data.displaytheserois))=nan;
        P=reshape(conn_fdr(p(:)),size(p));
        data.P=P;
        switch(data.thrtype),
            case 1, z=(p<=data.thr).*(.1+.8*p/max(eps,data.thr));
            case 2, z=(P<=data.thr).*(.1+.8*P/max(eps,data.thr));
        end
        z(isnan(p))=nan;
        
        % text lists
        txt1={};for n1=1:N,%length(data.displaytheserois),
            if n1<=N&&z(n1)>0,
                txt1{end+1}=(sprintf('%-5s= %-40s',['(',num2str(n1),')'],data.names{data.displaytheserois(n1)}));
            end
        end;txt1{end+1}=' ';
        txt1=strvcat(txt1{:});
        %tp=[];sort2=[];txt2={};for n1=1:N,for n2=[1:n1-1,n1+1:N2+data.displayreduced*(N-N2)],
        tp=[];sort2=[];txt2={};
        if 1,
            txt2{end+1}=(sprintf('%-7s %6.2f  %6.2f  %4d  %8.6f',['network'],data.h_net(data.displaymeasure),data.F_net(data.displaymeasure),data.dof_net(data.displaymeasure,end),p_net));
        end
        for n1=1:N,
            if n1<=N&&z(n1)>0,
                txt2{end+1}=(sprintf('%-6s  %6.2f  %6.2f  %4d  %8.6f  %8.6f',['(',num2str(n1),')'],data.h(data.displaymeasure,n1),data.F(data.displaymeasure,n1),data.dof(data.displaymeasure,n1,end),p(n1),P(n1))); tp=cat(1,tp,P(n1)-1e-10*abs(data.F(data.displaymeasure,n1))); sort2=cat(1,sort2,[n1]);
            end
        end
        if size(data.dof,3)>1
            set(data.handles(7),'string',sprintf('%6s  %6s  %6s  %4s  %8s  %8s','ROI','beta',[data.statsname,'(',num2str(data.dof(1)),')'],'dof','p-unc','p-FDR'));
        else
            set(data.handles(7),'string',sprintf('%6s  %6s  %6s  %4s  %8s  %8s','ROI','beta',data.statsname,'dof','p-unc','p-FDR'));
        end
        [nill,idxsort]=sort(tp); data.list2=idxsort;%sort2(idxsort,:); 
        txt2=strvcat(txt2{1},txt2{1+idxsort},' ');
        
        set(data.handles(6),'string',txt1,'value',max(1,min(size(txt1,1), get(data.handles(6),'value'))),'listboxtop',1); 
        set(data.handles(8),'string',txt2,'value',max(1,min(size(txt2,1), get(data.handles(8),'value'))),'listboxtop',1);
        
        % plots
        figure(hfig);set(hfig,'pointer','watch');drawnow;
        if ~data.disptype, set(hfig,'colormap',.5+.5*gray(128)); else set(hfig,'colormap',gray(128)); end
        rcircle=[sin(linspace(0,2*pi,64)'),cos(linspace(0,2*pi,64))']*diag([5,5]*scalecircle);
        rtriang=[-1-j*.5;0;-1+j*.5];
        h=findobj(hfig,'tag','conn_displaynetwork_plot');
        if ~isempty(h),delete(h); end
        h=axes('units','norm','position',[.03,.01,.45,.83]);
        lim=[1,1,1;data.ref.dim];refminmax=sort([lim((dec2bin(0:7)-'0'+1)+repmat([0,2,4],[8,1])),ones(8,1)]*data.ref.mat(1:3,:)'*data.proj(:,1:2));
        if 0,%~data.disptype, data.refaxes=imagesc(refminmax(1,1):scale:refminmax(end,1),refminmax(1,2):scale:refminmax(end,2),convn(convn(reshape(data.bgimage,size(data.bgx)),conn_hanning(5),'same'),conn_hanning(5)','same')>3);hold on; 
        else data.refaxes=imagesc(refminmax(1,1):scale:refminmax(end,1),refminmax(1,2):scale:refminmax(end,2),convn(convn(reshape(data.bgimage,size(data.bgx)),conn_hanning(5),'same'),conn_hanning(5)','same'));hold on; end
        hc1=uicontextmenu;
        uimenu(hc1,'Label','Change background anatomical image','callback',{@conn_displaynetwork,'changebackground'});
        uimenu(hc1,'Label','Switch display type','callback',{@conn_displaynetwork,'disptype'});
        uimenu(hc1,'Label','Labels on','callback',{@conn_displaynetwork,'labelson'});
        uimenu(hc1,'Label','Labels off','callback',{@conn_displaynetwork,'labelsoff'});
        uimenu(hc1,'Label','View axial (x-y)','callback',{@conn_displaynetwork,'view-axial'});
        uimenu(hc1,'Label','View coronal (x-z)','callback',{@conn_displaynetwork,'view-coronal'});
        uimenu(hc1,'Label','View sagittal (y-y)','callback',{@conn_displaynetwork,'view-sagittal'});
        uimenu(hc1,'Label','Circle-sizes represent T-values','callback',{@conn_displaynetwork,'displayefffectsize-off'});
        uimenu(hc1,'Label','Circle-sizes represent beta-values','callback',{@conn_displaynetwork,'displayefffectsize-on'});
        uimenu(hc1,'Label','Menubar on','callback',['set(gcbf,''menubar'',''figure'');']);
        uimenu(hc1,'Label','Menubar off','callback',['set(gcbf,''menubar'',''none'');']);
        uimenu(hc1,'Label','Display 3d view','callback',{@conn_displaynetwork,'display3d'});
        set(data.refaxes,'uicontextmenu',hc1);
        set(hfig,'uicontextmenu',hc1);
        h=gca;data.buttondown=struct('h1',h);set(h,'tag','conn_displaynetwork_plot');
        
        EPS=1e-0;
        data.plotsadd2=[];
        idxtext=[];
        hold on;
        if isfield(data,'displayeffectsize')&&data.displayeffectsize
            K=data.h(data.displaymeasure,:)/max(eps,max(abs(data.h(data.displaymeasure,:))));
        else
            K=data.F(data.displaymeasure,:)/max(eps,max(abs(data.F(data.displaymeasure,:))));
        end
        n1a=1;
        Zthrdisplay=mean(data.Zresults(1).Z_thr,3);
        for n1=1:N,%1:length(data.displaytheserois),%size(z,2),%N2,
%             n1=data.displaytheserois(na1);
            if (n1<=numel(z)&&z(n1)>0),
                k=K(n1);
                if isnan(k),k=0; end
                if ~data.disptype, h=patch(data.x(data.displaytheserois(n1))+rcircle(:,1)*abs(k),data.y(data.displaytheserois(n1))+rcircle(:,2)*abs(k),max(1,data.z(data.displaytheserois(n1)))*EPS+200+zeros(size(rcircle,1),1),'w');
                else h=patch(data.x(data.displaytheserois(n1))+rcircle(:,1)*max(.5,1+1e-3*data.z(data.displaytheserois(n1))),data.y(data.displaytheserois(n1))+rcircle(:,2)*max(.5,1+1e-3*data.z(data.displaytheserois(n1))),max(1,data.z(data.displaytheserois(n1)))*EPS+200+zeros(size(rcircle,1),1),'w'); end
                if any(n1a==data.source), set(h,'edgecolor','k','linewidth',2); else set(h,'edgecolor','none'); end
                if ~data.disptype, set(h,'facecolor',cmap(round(1+48*(1+sign(k))/2),:));
                else set(h,'facecolor',cmap(round(1+48*(1+k)/2),:)); end
                data.plotsadd2(end+1)=h;
                hold on;
                set(h,'buttondownfcn',@conn_displaynetwork_menubuttondownfcn,'userdata',data);
                n1a=n1a+1;
            end
            if ~data.disptype, idx=find(Zthrdisplay(n1,:)>.25);
            else idx=find(Zthrdisplay(n1,:)>.25); end
            if ~isempty(idx),
                x=data.x([data.displaytheserois(n1)+zeros(1,numel(idx));data.displaytheserois(idx)]);
                y=data.y([data.displaytheserois(n1)+zeros(1,numel(idx));data.displaytheserois(idx)]);
                if ~data.disptype,h=plot3(x,y,max(0,repmat(Zthrdisplay(n1,idx),[2,1]))*EPS+.5); hold on;
                    for n2a=1:numel(idx),set(h(n2a),'color',.5+.5*(1-Zthrdisplay(n1,idx(n2a)))*[1,1,1],'visible',data.visible); end
                else h=plot3(x,y,max(0,repmat(Zthrdisplay(n1,idx),[2,1]))*EPS+.5); hold on;
                    for n2a=1:numel(idx),set(h(n2a),'color',(1-Zthrdisplay(n1,idx(n2a)))*[1,1,1],'visible',data.visible); end
                end
            end
            if (n1<=N&&z(n1)>0), 
                idxtext=[idxtext;n1];
            end
        end
        if isfield(data,'displaylabels')&&data.displaylabels
            if ~data.disptype,  
                h=text(data.x(data.displaytheserois(idxtext)),data.y(data.displaytheserois(idxtext))+scalecircle*5*abs(K(idxtext))'+3,max(1,data.z(data.displaytheserois(idxtext)))*EPS+202,{data.names2reduced{data.displaytheserois(idxtext)}});
                set(h,'fontsize',8,'color','k','horizontalalignment','center','interpreter','none','fontweight','normal','backgroundcolor','none');
            else h=text(data.x(data.displaytheserois(idxtext)),data.y(data.displaytheserois(idxtext)),max(1,data.z(data.displaytheserois(idxtext)))*EPS+202,num2str(idxtext));
                set(h,'fontsize',9,'color','w','horizontalalignment','center','interpreter','none','fontweight','bold','backgroundcolor','none'); 
            end
            set(h,'buttondownfcn',@conn_displaynetwork_menubuttondownfcn,'userdata',data);
        end
        %data.plotsadd2=data.plotsadd2(idxsort);
        hold off;
        set(gca,'ydir','normal');
        axis equal; axis off;
        if data.display3d, data.display3d=0; datadisplay3d=1;else datadisplay3d=0; end
        set(hfig,'userdata',data);
        set(hfig,'pointer','arrow');
        if datadisplay3d
            c=mat2cell(cmap(round(1+48*(1+sign(K(idxtext)))/2),:),ones(numel(idxtext),1),3);
            for n1=1:numel(data.source),idxc=find(idxtext==data.source(n1));c(idxc,:)=repmat({[.25,.25,.25]},[numel(idxc),1]); end
            conn_mesh_display('',[],...
                struct('sph_names',{data.names2reduced(data.displaytheserois(idxtext))},'sph_xyz',[data.x(data.displaytheserois(idxtext)),data.y(data.displaytheserois(idxtext)),data.z(data.displaytheserois(idxtext))],...
                'sph_r',max(1,6*K(idxtext)).*(K(idxtext)>0),... %6*ones(numel(idxtext),1),...
                'sph_c',{c}), ...
                (1*Zthrdisplay(idxtext,idxtext)).*(Zthrdisplay(idxtext,idxtext)>.25), ...
                .25, [0,-.01,1],{[.5,.5,.5],[.5,.5,.5]});
        end
end

function conn_displaynetwork_menubuttondownfcn(varargin);
data=get(gcbo,'userdata');
xyz=get(data.buttondown.h1,'currentpoint'); 
x=xyz(1,1);y=xyz(1,2);z=-100;
[nill,idx]=min(sqrt(abs(data.x(data.displaytheserois)-x).^2+abs(data.y(data.displaytheserois)-y).^2)+1e-10*abs(data.z(data.displaytheserois)-z).^2);
txt=data.names{data.displaytheserois(idx)};
h=findobj('tag','conn_displaynetwork_menubuttondownfcn');if isempty(h), h=figure('units','pixels','position',[get(0,'pointerlocation')-[125,-200],250,40]);else, figure(h); end;
set(h,'units','pixels','position',[get(0,'pointerlocation')-[125,-200],0,0]+[0,0,1,1].*get(h,'position'),'menubar','none','numbertitle','off','color','k','tag','conn_displaynetwork_menubuttondownfcn');
clf(h);text(0,1,['x,y,z = (',num2str(data.xyz2(data.displaytheserois(idx),1),'%1.0f'),',',num2str(data.xyz2(data.displaytheserois(idx),2),'%1.0f'),',',num2str(data.xyz2(data.displaytheserois(idx),3),'%1.0f'),') mm'],'color','y','fontweight','bold','horizontalalignment','center','fontsize',9);
text(0,0,['(',num2str(idx),') : ',txt],'color','y','fontweight','bold','horizontalalignment','center','fontsize',9,'interpreter','none');set(gca,'units','norm','position',[0,0,1,1],'xlim',[-1,1],'ylim',[-.5,1.5],'visible','off');
%hc=get(0,'children');if length(hc)>0&&hc(1)~=h,hc=[h;hc(hc~=h)];set(0,'children',h); end