function plotxppaut(file_name,C_Us,Lt_Us, N_plot)
%PlotXppaut
%Plot bifurcation diagrams in Matlab that have been saved by XPPAUT
%
%How to use:
%In AUTO (XPPAUT) click-->File--->Write Pts
%and save your bifurcation diagram in a .dat file
%In Matlab command window type: plotxppaut 
%Select .dat file saved by AUTO
%A bifurcation diagram will be plotted
%Cutomize the plot using Matlab figure editor
%Or edit program parameters to suit your needs--very useful for those who
%plot lots of bifurcation diagrams
%
%Version 1.0 Tested Under Matlab 6.1 (R12.1)

%---------------------------------------
%Version 1.0
%Time-stamp: <2005-05-03 17:06:11 msi800> 
%-------------------------------------------
%Mohammad S. Imtiaz
%Room 403
%The Neuroscience Group
%Discipline of Human Physiology
%School of Biomedical Sciences
%Faculty of Health
%The University of Newcastle
%Callaghan, NSW 2308
%Australia
%Tel: +61 02 49217857  (Office)
%Tel: +61 02 49215626  (Lab)
%Fax: +61 02 49217406
%Email: Mohammad.Imtiaz@newcastle.edu.au
%-------------------------------------------
%-------------------------------------------


%-------------------------------------------------------------------
%       USER DEFINED PARAMETERS -- CHANGE TO CUSTOMIZE OUTPUT PLOT
%-------------------------------------------------------------------
%Colors -- SHOULD BE VALID MATLAB COLORS
C_Ss = 'Black';   %STABLE STEADY STATE
% C_Us = 'Black';   %UNSTABLE STEADY STATE
C_Sp = 'Green';     %STABLE PERIODIC ORBIT
C_Up = 'Blue';    %UNSTABLE PERIODIC ORBIT

%LineStyle -- SHOULD BE VALID MATLAB LINESTYLES
Lt_Ss = '-';    %STABLE STEADY STATE
% Lt_Us = '--';   %UNSTABLE STEADY STATE
Lt_Sp = 'o';    %STABLE PERIODIC ORBIT
Lt_Up = 'o';    %UNSTABLE PERIODIC ORBIT

%Linewidths
Lw_Ss = 0.5;   %STABLE STEADY STATE
Lw_Us = 0.5;     %UNSTABLE STEADY STATE
Lw_Sp = 0.5;     %STABLE PERIODIC ORBIT
Lw_Up = 0.5;     %UNSTABLE PERIODIC ORBIT

%Markersize
Ms_Ss = 1;    %STABLE STEADY STATE
Ms_Us = 1;    %UNSTABLE STEADY STATE
Ms_Sp = 1;    %STABLE PERIODIC ORBIT
Ms_Up = 1;    %UNSTABLE PERIODIC ORBIT

%MarkerFaceColor -- SHOULD BE VALID MATLAB COLORS
Mfc_Ss = 'none';   %STABLE STEADY STATE
Mfc_Us = 'none';   %UNSTABLE STEADY STATE
Mfc_Sp = 'Red';    %STABLE PERIODIC ORBIT
Mfc_Up = 'none';   %UNSTABLE PERIODIC ORBIT

%	-----------------------------------------	
% END OF USER DEFINED PARAMETERS
%	-----------------------------------------

% [file_in,path] = uigetfile('*.dat','.dat file saved by AUTO (XPPAUT) ');
% file_name = [path file_in];

if(file_name),
  fid = fopen(file_name,'r');
  st = fscanf(fid,'%f',[5,inf]);
  fclose(fid);
  
  if(nargin==3)
    figure(1), hold on
  else
    subplot(1,3,N_plot), hold on
  end
  
  temp=st';
  temp1=zeros(size(temp,1),8)*NaN;
  
  for n=1:size(temp1,1),
      if(temp(n,4)==1),
          temp1(n,[1 5]) = temp(n,[2 3]);
      end;
      if(temp(n,4)==2),
          temp1(n,[2 6]) = temp(n,[2 3]);
      end;
      if(temp(n,4)==3),
          temp1(n,[3 7]) = temp(n,[2 3]);
      end;
      if(temp(n,4)==4),
          temp1(n,[4 8]) = temp(n,[2 3]);
      end;
  end;

  
% $$$ figure;
%	-----------------------------------------
%if(isfinite(temp1(:,[1 5])))
  h_SS = plot(temp(:,1),temp1(:,[1 5]));
  set(h_SS,'color',C_Ss)
  set(h_SS,'linestyle',Lt_Ss)
  set(h_SS,'linewidth',Lw_Ss)
  set(h_SS,'Markersize',Ms_Ss)
  set(h_SS,'MarkerFacecolor',Mfc_Ss)
  hold on;
%end
%	----------------------------------------- 
%if(isfinite(temp1(:,[2 6])))
  h_US = plot(temp(:,1),temp1(:,[2 6]), '*');
  set(h_US,'color',C_Us)
  set(h_US,'linestyle',Lt_Us)
  set(h_US,'linewidth',Lw_Us)
  set(h_US,'Markersize',Ms_Us)
  set(h_US,'MarkerFacecolor',Mfc_Us)
%end
%	-----------------------------------------  
  
%if(isfinite(temp1(:,[3 7])))
  h_SP = plot(temp(:,1),temp1(:,[3 7]), '*');
  set(h_SP,'color',C_Sp)
  set(h_SP,'Marker',Lt_Sp)
  set(h_SP,'linewidth',Lw_Sp)
  set(h_SP,'Markersize',Ms_Sp)
  set(h_SP,'MarkerFacecolor',Mfc_Sp)
%end
%	-----------------------------------------   
  
%if(isfinite(temp1(:,[4 8])))
  h_UP = plot(temp(:,1),temp1(:,[4 8]), '*');
  set(h_UP,'color',C_Up)
  set(h_UP,'Marker',Lt_Up)
  set(h_UP,'linewidth',Lw_Up)
  set(h_UP,'Markersize',Ms_Up)
  set(h_UP,'MarkerFacecolor',Mfc_Up)
%end
%	-----------------------------------------    
  xlim([0,8])
  ylim([-10,10])
  %figdefault()  
  grid off;
  axis tight
  title('');
  
end;