function [f X] = dave_binoverlap_FFT (t_input, x_input, bin_duration)
% Bin duration, t_input in equivalent units (preferrably seconds for FFT output to
% make sense)
% Bins are 50% overlapping

use_hann = 1;       % If = 1, use hann window; otherwise, use rectangular windowing
t_input = t_input(:);
x_input = x_input(:);

tstep = t_input(2)-t_input(1);

length_t = length(t_input);
length_bin = round(bin_duration/tstep);

if (length_bin > length_t)
    fprintf('FFT bin duration is longer than dataset. Decreasing bin size \n');
	length_bin = length_t;
    
end

curr_index=1;
nbins = 0;
X = zeros(1,length_bin);
while (curr_index+length_bin-1 <= length(x_input))
    x_bin = x_input((curr_index):(curr_index+length_bin-1));
    x_bin = x_bin - mean(x_bin);
    t_bin = (0:(length_bin-1))*tstep;

    
    if use_hann == 1
        x_bin = x_bin .* hann(length(x_bin));
%         w = hann(length(x_bin));
%         figure; plot(x_bin);
%         hold on; plot(w,'r');
%         plot(x_bin.*w,'g')
    end
    [f_bin X_bin] = daveFFT (t_bin, x_bin, 1);
    curr_index = curr_index + round(length_bin/2);
    nbins = nbins + 1;
    X_bin = abs(X_bin).^2;
    X = X + X_bin;
end

X = X / nbins;  % Return the average power spectrum
X = X.^(1/2);
f = f_bin;
nbins;

end