function [mntree,mm,dots]=pplot(c,str,nprev, xprev, yprev,nbeg,radius,anglemin,anglemax,f1,f2,mm,mntree)
%validity check
%if nargin~=7
%    error('incorrect number of input arguments');
%end

%body
dat=[];
dat.next=[];
dat.nprev=nprev;
%dat.xprev=xprev;
%dat.yprev=yprev;
dat.nbeg=nbeg;
prev1=findobj(mntree,'Xdata',xprev);
prev=findobj(prev1,'Ydata',yprev);
dat.prev=prev;
n=size(c,1);
nn=0;
list=[];
for i=1:n
    %if and(c(nbeg,i)~=0,i~=nprev)
        if and(c(nbeg,i)~=inf,i~=nprev)
        list=[list,i];
        nn=nn+1;
    end
end
angle=(anglemin+anglemax)/2;
if angle < 0
    angle=angle+2*pi;
end
xbeg=radius*cos(angle);
ybeg=radius*sin(angle);
    %mntree(mm)=plot([xprev,xbeg],[yprev,ybeg],'k');
    %mm=mm+1;
    link=plot([xprev,xbeg],[yprev,ybeg],'k','Linewidth',2);
    dat.link=link;
if f1==1 
    %mntree(mm)=text(xbeg,ybeg+3  ,str(nbeg).name);
    dat.text=text(xbeg,ybeg+3,str(nbeg).name,'fontsize',7);
else
    %mntree(mm)=text(xbeg,ybeg+3  ,'');
    dat.text=text(xbeg,ybeg+3,'','fontsize',7);
end
%mm=mm+1;
dots=plot(xbeg,ybeg,'ko');
%dots=rectangle('curvature',[1 1],'position',[xbeg,ybeg,3,3]);
%set(dots,'ButtonDownFcn','mvv');
mntree(mm)=dots;
mm=mm+1;
if f2==1 
    set(dots,'MarkerFaceColor',str(nbeg).color);
    %set(dots,'FaceColor',str(nbeg).color);
    dat.color=str(nbeg).color;
    dat.color_bw=str(nbeg).color_bw;
else
    set(dots,'MarkerFaceColor',[.5 .5 .5]);
    %set(dots,'FaceColor',[.5 .5 .5]);
    dat.color=[.5 .5 .5];
end
set(dots,'UserData',dat);
ang=anglemin;
if ang < 0
    ang=ang+2*pi;
end
if nn~=0 
    astep=(anglemax-anglemin)/nn;
    for i=1:nn
        %[mntree,mm,xx]=pplot(c,str,nbeg,xbeg,ybeg,list(i),radius+20,ang,ang+astep,f1,f2,mm,mntree);
    %[mntree,mm,xx]=pplot(c,str,nbeg,xbeg,ybeg,list(i),radius+20,ang+astep/n,ang+astep,f1,f2,mm,mntree);
     [mntree,mm,xx]=pplot(c,str,nbeg,xbeg,ybeg,list(i),1,ang+astep/n,ang+astep,f1,f2,mm,mntree);
    %dat.next=[dat.next,mntree(mm-1)];
    dat.next=[dat.next,xx];
    set(dots,'UserData',dat);
    ang=ang+astep;      
    end
end
for i=1:length(mntree);
    ii=0;
if get(mntree(i),'Xdata')==get(dots,'Xdata') & get(mntree(i),'Ydata')==get(dots,'Ydata')
    ii=i;
    break
end
end
    x=get(mntree(ii),'Xdata');
    y=get(mntree(ii),'Ydata');
    ddt=get(mntree(ii),'UserData');
    delete(dots);
    newdot=plot(x,y,'ko');
    %set(newdot,'MarkerSize',3);
    set(newdot,'Userdata',ddt);
    set(newdot,'MarkerFaceColor',ddt.color);
    set(newdot,'ButtonDownFcn','mvv');
    mntree(ii)=newdot;
    if length(ddt.next)~=0
        for i=1:length(ddt.next)
            dtchild=get(ddt.next(i),'UserData');
            dtchild.prev=newdot;
            set(ddt.next(i),'Userdata',dtchild);
        end
    end
    dots=newdot;