function varargout = Sheduler(varargin)
% SHEDULER M-file for Sheduler.fig
%      SHEDULER, by itself, creates a new SHEDULER or raises the existing
%      singleton*.
%
%      H = SHEDULER returns the handle to a new SHEDULER or the handle to
%      the existing singleton*.
%
%      SHEDULER('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in SHEDULER.M with the given input arguments.
%
%      SHEDULER('Property','Value',...) creates a new SHEDULER or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before Sheduler_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to Sheduler_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help Sheduler

% Last Modified by GUIDE v2.5 31-Dec-2008 01:31:57

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Sheduler_OpeningFcn, ...
                   'gui_OutputFcn',  @Sheduler_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before Sheduler is made visible.
function Sheduler_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Sheduler (see VARARGIN)

% Choose default command line output for Sheduler
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes Sheduler wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = Sheduler_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes during object creation, after setting all properties.
function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: listbox controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end


% --- Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
% hObject    handle to listbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from listbox1

% --- Executes on button press in pushbutton_addtask.
function pushbutton_addtask_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_addtask (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
[path,fname]=uigetfile('*.mat');
fullpath=strcat(fname,path);
items=get(handles.listbox1,'String');
newitem={fullpath};
items=[items;newitem];
set(handles.listbox1,'String',items);

% --- Executes on button press in pushbutton_deltask.
function pushbutton_deltask_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_deltask (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
curnum=get(handles.listbox1,'Value');
items=get(handles.listbox1,'String');
n=length(items); 
items=[items(1:curnum-1);items(curnum+1:n)];
set(handles.listbox1,'String',items);

% --- Executes on button press in pushbutton_start.
function pushbutton_start_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_start (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
curnum=get(handles.listbox1,'Value');
items=get(handles.listbox1,'String');
hlogfile=1;
n=length(items); 
for i=1:n 
    currentpath=items{i};
    load(currentpath);
    if (flag_down==1)% Пусто - выбирается левая бифуркация - нижняя граница
        [yprogn1,masdtparamnew,hierarchies]=MarkovPrognozMain(in_series_urez,hierarchy_params,nbegprognoz,nprognoz);
        nyprogn1=length(yprogn1);
        yprogn1=yprogn1(2:nyprogn1); % урезается, выявлена ошибка!
        yprogn=yprogn1;
    end
    if (flag_up==1)
        bif_flag=[1];
        [yprogn2,masdtparamnew,hierarchies]=MarkovPrognozMain(in_series_urez,hierarchy_params,nbegprognoz,nprognoz);
        nyprogn2=length(yprogn2);
        yprogn2=yprogn2(2:nyprogn2); % урезается, выявлена ошибка!
        yprogn=yprogn2;
    end 
    hierarchy_params=masdtparamnew;
    figure;
    %beg=str2num(get(handles.edit3,'String'))+1;
    in_series4plot=in_series(beg:in_series_len);
    if (tbeg_pogreshn>length(in_series4plot))
        tbeg_pogreshn=length(in_series4plot);
    end;
    
    if (tbeg_pogreshn>length(yprogn))
        tbeg_pogreshn=length(yprogn);
    end;
    if (tend_pogreshn>length(in_series4plot)) 
        tend_pogreshn=length(in_series4plot);
    end;
    if (tend_pogreshn>length(yprogn))
        tend_pogreshn=length(yprogn);
    end;

if (flag_down==1)
    plot(yprogn1,'b');
    title('Progn1');
    %lenresult=min(length(in_series4plot),min(length(yprogn1),nbegprognoz+nprognoz));
    razn=sum(abs(in_series4plot(tbeg_pogreshn:tend_pogreshn)-yprogn1(tbeg_pogreshn:tend_pogreshn)))/(tend_pogreshn-tbeg_pogreshn);
    fprintf(hlogfile,'srednkw otklon rezultata(progn1) na promezhutke(%d..%d) =%d \n',tbeg_pogreshn,tend_pogreshn,razn);
end
hold on;
if (flag_up==1)
    plot(yprogn2,'b');
    title('Progn2');
    %lenresult=min(length(in_series4plot),min(length(yprogn2),nbegprognoz+nprognoz));
    razn=sum(abs(in_series4plot(tbeg_pogreshn:tend_pogreshn)-yprogn2(tbeg_pogreshn:tend_pogreshn)))/(tend_pogreshn-tbeg_pogreshn);
    fprintf(hlogfile,'srednkw otklon rezultata(progn2) na promezhutke(%d..%d) =%d \n',tbeg_pogreshn,tend_pogreshn,razn);
end
plot(in_series4plot,'r');

outpath=strrep(currentpath,'.mat', '_out.mat');
save(outpath);
if length(resfilename)>0
    dlmwrite(resfilename,yprogn,'\n');
end

end

