function study_dir = dsUnzipDemoData(zipfname,overwrite_flag,verbose_flag)
%dsUnzipDemoData - Unzips demo data (utility function)
%
% Purpose: Restores demo data to the appropriate folder incase the user
% deleted it.
%
% Usage:
%   study_dir = dsUnzipDemoData(zipfname,overwrite_flag)
%
% Inputs:
%   zipfname: string with name of zipped file. Can be either a full path or
%       just the filename, since DynaSim knows where to look for its
%       demo zip files.
%   overwrite_flag: {0,1} - Flag to force overwrite if directory already
%       exists.
%   verbose_flag: {0,1} - verbose flag
%
% Outputs:
%   study_dir: input 
%
% Examples:
%   study_dir = unDemoData('demo_sPING_100cells_3x3.zip')
%   study_dir = unDemoData('/Users/davestanley/Dropbox/git/DynaSimSherfey/demos/demo_zips/demo_sPING_100cells_3x3.zip')
%       (both return same result)
% 
% Author:
%   David Stanley, stanleyd@bu.edu, March 2017
%
% See also: ZipDemoData, demos_generate_data.m (demo script)

    if nargin < 2
        overwrite_flag = 0;
    end
    
    if nargin < 3
        verbose_flag = 1;
    end

    ds_root_path = dsGetConfig('ds_root_path');
    demos_path = dsGetConfig('demos_path');
    demo_zips_path = dsGetConfig('demos_zips_path');

    mkdirSilent(demos_path);
    
    % Make sure zipfname ends in zip and doesn't have any other crap in
    % front of it
    [path, zipfilename_only, ext] = fileparts(zipfname);
    zipfname = [zipfilename_only, '.zip'];
    
    % Verify the source (zip file) exists; if not, download it from web!
    if ~exist(fullfile(demo_zips_path,zipfname),'file')
     
        dsDownloadFiles(fullfile(demo_zips_path,zipfname));

    end
    
    % Get the destination directory
    study_dir = fullfile(demos_path,zipfilename_only);

    % Unzip
    if ~exist(study_dir,'dir')
        if verbose_flag; fprintf('Unzipping demo data to %s.\n',study_dir); end
        unzip(fullfile(demo_zips_path,zipfname),demos_path);
    elseif exist(study_dir,'dir') && overwrite_flag
        if verbose_flag; fprintf('Demo data folder %s already exists. Overwriting \n',study_dir); end
        unzip(fullfile(demo_zips_path,zipfname),demos_path);
    else
        if verbose_flag; fprintf('Demo data folder %s already exists. Skipping \n',study_dir); end
    end
    
    
end