function time_forecast_par(time, total, cores, txth, deftxt, path, dlt)
% function to forecast the left time for calculation (only avarage)
%
% -------------------------------------------------------------------------
% Dateiname / filename: time_forecast.m
%
% Syntax / syntax: time_forecast(time, total, txth, deftxt, dlt)
%
% Übergabeparameter / inputs:
%   time    Gemessene Zeit für eine Berechnung in Sekunden
%   total   Übrig gebliebene Berechnungen
%   cores   Anzahl der Kerne, die an den Berechnungen beteiligt sind
%   txth    Handle eines Textobjektes in dem die Zeit angezeigt werden kann
%           Funktioniert nur bei sequentieller Berechnung!
%           Wird keine Texthandle übergeben, wird die Zeit im Commandwindow
%           angezeigt.
%   path    Pfad, in dem die Textdatei liegt (mit Backslash '\')
%   deftxt  Standardtext, der vor der Zeit steht
%   dlt     true für löschen des Zeitdatei, ansonsten false
%
% Rückgabe / outputs:
%   -
%
% Benötigte m-files / required m-files: -
%
% Unterfunktionen / subfunctions: -
%
% Letzte Änderung / last revision: 6-Dez-2012
% Andreas Kupezki
% -------------------------------------------------------------------------

% Löschen der Zeiterfassung
if dlt
    delete([path 'timetext.txt'])
    % Zeit im Textobjekt anzeigen
    if ~isempty(txth) && ~isempty(deftxt)
        set(txth,'String',deftxt)
    elseif ~isempty(deftxt)
        disp(deftxt)
    end
    return
end

% Textdatei erstellen/öffnen
a = fopen([path 'timetext.txt'],'a+');

% Zeit in Zeile schreiben
fprintf(a,'%f \r\n',time);

% Langen Vektor für die Zeiten erstellen
vek = zeros(1e+6,1); line=1; n=0;

% Textcursor zum Anfang der Textdatei schieben
fseek(a,0,-1);

% Zeilen auslesen
while n == 0
    % neue Zeile auslesen
    tline = fgetl(a);

    % Zeile versuchen von String in Zahl um zuwandeln
    vek(line,1) = str2double(tline);
    
    n = feof(a);
    line = line + 1;
end

% File schließen
fclose(a);

% Durchschnittszeit berechnen
middle = mean(vek(vek > 0));

% Übrige Zeit
time_left = middle * ((total - length(vek(vek> 0)))/cores);

% Zeit auf geeignetes Format konvertieren
if time_left > 60
    time_left = time_left / 60;
    zeit = ' Minuten';
    if time_left > 60
        time_left = time_left / 60;
        zeit = ' Stunden';
    end
else
    zeit = ' Sekunden';
end

% rüfen, ob ein Handle mitgeliefert wurde ansonsten, wenn leer auf CW
% ausgeben
if ~isempty(txth)
    set(txth,'string',[deftxt num2str(time_left,'%1.1f') zeit])
else
    disp([deftxt num2str(time_left,'%1.1f') zeit])
end
