function WindowStatFigure(hndl)

% створюємо глобальну змінну TS, куди будуть записуватись дані
%global TS; TS.index=0;
%global TSTemp; TSTemp.index=0;

% визначаємо поточну розподільчу здатність, встановивши одиниці в PIXELS
set(0,'Units','pixels');
SCREEN_SIZE=get(0,'ScreenSize');
% SCREEN_SIZE = [left bottom width height]
SCRHeight=SCREEN_SIZE(1,4);

% створюємо фігуру розміром 300 x 300, що знаходиться у верхному лівому
% куті з відступом у 10 пікселів зверху та зліва
fg=figure('Position',[30,SCRHeight-330,300,300], 'Units','pixels', ...
          'HandleVisibility','on', 'MenuBar','none', 'Name','Віконна статистика ряда', ...
          'Resize','off', 'Tag','Window statistics figure', ...
          'NumberTitle','off', 'DeleteFcn',@DeleteFcn_Callback);
      
% записуємо handle фігури
handles.rootFigure=fg;
% записуємо handle фігури, з якої відбувся виклик
handles.baseFigure=hndl;

% створюємо меню користувача
%menuRoot=uimenu('Parent',fg, 'Label','Файл', 'Tag', 'Menu File');
%menuTemp=uimenu('Parent',menuRoot, 'Label','Читать', 'Tag','Menu File Load', 'Callback',@MenuFileLoad_Callback);
      
% створюємо статичний текст та едіт для ширини вікна
uicontrol(fg, 'Style','text', 'Tag','', 'Units','pixels', 'Position',[3,270,225,25], ...
          'String','Ширина вікна:', ...
          'FontName','Times New Roman', 'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');
handles.windowWidthEdit=uicontrol(fg, 'Style','edit', 'Tag','windowWidthEdit', ...
          'BackgroundColor',[1.0 1.0 1.0], 'Units','pixels', 'Position',[228,270,72,25], ...
          'String','250', 'FontName','Courier New', ...
          'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');

% створюємо статичний текст та едіт для кроку вікна
uicontrol(fg, 'Style','text', 'Tag','', 'Units','pixels', 'Position',[3,245,225,25], ...
          'String','Крок вікна:', ...
          'FontName','Times New Roman', 'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');
handles.windowStepEdit=uicontrol(fg, 'Style','edit', 'Tag','windowStepEdit', ...
          'BackgroundColor',[1.0 1.0 1.0], 'Units','pixels', 'Position',[228,245,72,25], ...
          'String','1', 'FontName','Courier New', ...
          'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');

% створюємо статичний текст - підпис 1 до статистик
uicontrol(fg, 'Style','text', 'Tag','', 'Units','pixels', 'Position',[3,215,297,25], ...
          'String','Статистики', 'FontName','Times New Roman', ...
          'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');

% створюємо статичний текст - підпис до доступних статистик
uicontrol(fg, 'Style','text', 'Tag','', 'Units','pixels', 'Position',[3,195,132,25], ...
          'String','доступні:', 'FontName','Times New Roman', ...
          'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');
% створюємо ListBox, де записані доступні статистики
handles.ListBoxStat=uicontrol(fg, 'Style','listbox', 'Units','pixels', 'Position',[3,140,132,55], ...
          'String',['Другий момент   '; 'Коефіцієнт асим.'; 'Ексцес          '], ...
          'FontName','Times New Roman', ...
          'FontSize', 10, 'FontAngle', 'normal', 'FontWeight', 'normal', ...
          'Tag', 'ListBoxStat', 'ListboxTop', 1);
% створюємо статичний текст - підпис до вибраних статистик
uicontrol(fg, 'Style','text', 'Tag','', 'Units','pixels', 'Position',[165,195,132,25], ...
          'String','вибрані:', 'FontName','Times New Roman', ...
          'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal');
% створюємо ListBox, де записуватимуться вибрані статистики
handles.ListBoxGetStat=uicontrol(fg, 'Style','listbox', 'Units','pixels', 'Position',[165,140,132,55], ...
          'String',['Другий момент   '; 'Коефіцієнт асим.'; 'Ексцес          '], ...
          'FontName','Times New Roman', ...
          'FontSize', 10, 'FontAngle', 'normal', 'FontWeight', 'normal', ...
          'Tag', 'ListBoxStat', 'ListboxTop', 1);
% створюємо кнопку для додавання статистичних показників
handles.setStatbutton=uicontrol(fg, 'Style','pushbutton', 'Tag','setStatButton', ...
          'Units','pixels', 'Position',[135,170,30,25], 'String','>>', ...
          'FontName','Times New Roman', 'FontSize', 10, 'FontAngle', 'normal', 'FontWeight', 'bold', ...
          'Callback',@setStatButton_Callback);
% створюємо кнопку для видалення статистичних показників
handles.moveStatbutton=uicontrol(fg, 'Style','pushbutton', 'Tag','moveStatButton', ...
          'Units','pixels', 'Position',[135,140,30,25], 'String','<<', ...
          'FontName','Times New Roman', 'FontSize', 10, 'FontAngle', 'normal', 'FontWeight', 'bold', ...
          'Callback',@moveStatButton_Callback);

% створюємо checkbox для можливості виводу результатів у окремих вікнах
handles.diffWindowsCheckBox=uicontrol(fg,'Style','checkbox','Tag','diffWindowsCheckBox','Units','pixels', ...
          'Position',[3,110,297,25], 'String','Виводити в різних вікнах', ...
          'FontName','Times New Roman', 'FontSize', 12, 'FontAngle', 'normal', 'FontWeight', 'normal',...
          'Value',1);

% створюємо кнопку для розрахунку статистичних віконних показників
handles.calcWindowStatbutton=uicontrol(fg, 'Style','pushbutton', 'Tag','calcWinStatButton', ...
          'Units','pixels', 'Position',[75,80,150,25], 'String','Розрахувати', ...
          'FontName','Times New Roman', 'FontSize', 10, 'FontAngle', 'normal', 'FontWeight', 'bold', ...
          'Callback',@calcWinStatButton_Callback);
      
statArray{1,1}=1; statArray{1,2}=cellstr('Другий момент   ');
statArray{2,1}=2; statArray{2,2}=cellstr('Коефіцієнт асим.');
statArray{3,1}=2; statArray{3,2}=cellstr('Ексцес          ');
handles.statArray=statArray;
handles.statArrayCount=3;
handles.statArrayChecked=[1; 2; 3];
handles.statArrayCheckedCount=3;

guidata(fg,handles);

% =============================================================================================================================
% Функція, що виконується при закритті фігури
function DeleteFcn_Callback(h,eventdata,handles)

% очищення пам"яті, що використовувалась для локальних змінних
%global TSTemp;
%clear TSTemp;

% =============================================================================================================================
% якщо клацнули по кнопці ">>"
function setStatButton_Callback(h,eventdata,handles)

handles=guidata(gcbo);

index=get(handles.ListBoxStat,'Value');
if isempty(find(handles.statArrayChecked==index))
    % додаємо назву статистики
    handles.statArrayCheckedCount=handles.statArrayCheckedCount+1;
    handles.statArrayChecked(handles.statArrayCheckedCount,1)=index;
    S=get(handles.ListBoxGetStat,'String');
    S1=char(handles.statArray{index,2});
    if isempty(S)
        S=S1;
    else
        S=arrangeArrays(S,S1);
    end
    set(handles.ListBoxGetStat,'String',S);
    set(handles.ListBoxGetStat,'Value',1);
end

guidata(gcbo,handles);

% =============================================================================================================================
% якщо клацнули по кнопці "<<"
function moveStatButton_Callback(h,eventdata,handles)

handles=guidata(gcbo);

index=get(handles.ListBoxGetStat,'Value');
if (handles.statArrayCheckedCount==0)
    return
end
handles.statArrayCheckedCount=handles.statArrayCheckedCount-1;
for i=index+1:3
    handles.statArrayChecked(i-1,1)=handles.statArrayChecked(i,1);
end
handles.statArrayChecked(3,1)=0;
S=get(handles.ListBoxGetStat,'String');
[ms,ns]=size(S);
S1=[];
for i=1:ms
    if (i~=index)
        S1=[S1; S(i,:)];
    end
end
set(handles.ListBoxGetStat,'String',S1);
set(handles.ListBoxGetStat,'Value',1);

guidata(gcbo,handles);

% =============================================================================================================================
% якщо клацнули по кнопці "Розрахувати"
function calcWinStatButton_Callback(h,eventdata,handles)

global SERIES
global SERIESNAMES
global SERIESINDEX
global SERIESTYPE
global SERIESSTAT

handles=guidata(gcbo);
handlesBase=guidata(handles.baseFigure);

index=get(handlesBase.listbox1,'Value');
X=SERIES{index};

[m,n]=size(X);
windowWidth=str2num(get(handles.windowWidthEdit,'String'));
windowStep=str2num(get(handles.windowStepEdit,'String'));

RES=zeros(3,floor((n-windowWidth+1)/windowStep));
i=1; windowBegin=1; windowEnd=windowBegin+windowWidth-1;
while (windowEnd<=n)
    STAT=getStat(X(1,windowBegin:windowEnd));
    RES(:,i)=[STAT.moment2; STAT.koeffAsym; STAT.curtosis];
    windowBegin=windowBegin+windowStep;
    windowEnd=windowEnd+windowStep;
    i=i+1;
end

S=[];
CHKD=get(handles.diffWindowsCheckBox,'Value');
if (CHKD==0)
    f=figure;
    hold on
end

if ~isempty(find(handles.statArrayChecked==1))
    if (CHKD==1)
        f=figure;
    end
    plot(RES(1,:),'-r');
    if (CHKD==1)
        l=legend('Second moment');
        set(l,'FontName','Times New Roman');
    else
        S='Second moment   ';
    end
end

if ~isempty(find(handles.statArrayChecked==2))
    if (CHKD==1)
        f=figure;
    end
    plot(RES(2,:),'-g');
    if (CHKD==1)
        l=legend('Assymetry');
        set(l,'FontName','Times New Roman');
    else
        if isempty(S)
            S='Assymetry       ';
        else
            S=[S; 'Assymetry       '];
        end
    end
end

if ~isempty(find(handles.statArrayChecked==3))
    if (CHKD==1)
        f=figure;
    end
    plot(RES(3,:),'-b');
    if (CHKD==1)
        l=legend('Curtosis');
        set(l,'FontName','Times New Roman');
    else
        if isempty(S)
            S='Curtosis        ';
        else
            S=[S; 'Curtosis        '];
        end
    end
end

if (CHKD==0)
    l=legend(S);
    set(l,'FontName','Times New Roman');
end

%hold off
%figure
%plot(X(1,windowWidth:n),'-k');
%legend('Початковий ряд');
