function [err, Bstrct] = WaverBasisOption (BasisFunc, N_Basis, BasisOpt)
%
%   [err,] = WaverBasisOption ()
%
%Purpose:
%   
%   
%   
%Input Parameters:
%   
%   
%   
%Output Parameters:
%   err : 0 No Problem
%       : 1  Problems
%   
%   
%      
%Key Terms:
%   
%More Info :
%   
%   
%   
%
%     Author : Ziad Saad
%     Date : Fri Jul 18 14:35:24 EDT 2003
%     SSCC/NIMH/ National Institutes of Health, Bethesda Maryland


%Define the function name for easy referencing
FuncName = 'WaverBasisOption';

%Debug Flag
DBG = 1;

%initailize return variables
err = 1;
Bstrct = [];

if (strcmp (lower(BasisFunc),'tent')), 
   if (~isfield(BasisOpt,'tSpan') | isempty(BasisOpt.tSpan)),
      fprintf (2,'Error %s: tSpan must be set with tent option.\n',...
         FuncName);
      return;
   end

   for (i=1:1:N_Basis),
      Bstrct(i).BareOpt = sprintf ('tent((t-%g)/%g)',... 
         (i-1).*BasisOpt.tSpan./N_Basis, BasisOpt.tSpan./N_Basis); 
      Bstrct(i).opt = sprintf ('-EXPR ''%s''',... 
         Bstrct(i).BareOpt); 
      Bstrct(i).minlag = 0;
      Bstrct(i).maxlag = 0;
   end
   err = 0;
   return;
elseif (strcmp (lower(BasisFunc),'gam') | strcmp (lower(BasisFunc),'mgh')), 
   if (N_Basis ~= 1),
     fprintf (2,'Error %s: Only 1 basis for GAM or MGH\n', FuncName);
     return;
   end 
   Bstrct(1).BareOpt = '';
   Bstrct(1).opt = '-GAM';
	Bstrct(1).power = BasisOpt.gamb;
	Bstrct(1).scale = BasisOpt.gamc;
	Bstrct(1).delay = BasisOpt.gamd;
   if (~isfield(BasisOpt,'minlag') | isempty(BasisOpt.minlag)) BasisOpt.minlag = 0; end
   if (~isfield(BasisOpt,'maxlag') | isempty(BasisOpt.maxlag)) BasisOpt.maxlag = 0; end
   Bstrct(1).minlag = BasisOpt.minlag;
   Bstrct(1).maxlag = BasisOpt.maxlag;
   err = 0;
   return;
else 
   if (strcmp (lower(BasisFunc),'spm1') | strcmp (lower(BasisFunc),'spm2')),
	   for (i=1:1:N_Basis),
         Bstrct(i).BareOpt = '';
         Bstrct(i).minlag = 0;
         Bstrct(i).maxlag = 0;
		end
		err = 0;
		return;
   else
   fprintf (2,'Error %s: Bad Basis %s\n', FuncName, BasisFunc);
   return;
	end
end

err = 0;
return;
