function [Taskas Ak, Fk]=Ejimas(J, Spx, Spy, Rib, Gama, Judejimo_lygtis, e, kelias, R_kr)

[T1 Fk1]=Susikirtimas_su_ribinemis(Spx, Spy, Judejimo_lygtis, Gama, -1, e, Rib, kelias, R_kr);
[T2 Fk2]=Susikirtimas_su_ribinemis(Spx, Spy, Judejimo_lygtis, Gama, 1, e, Rib, kelias, R_kr);
% if isempty(T1)==1 && isempty(T2)==1
%     [T1 Fk1]=Susikirtimas_su_ribinemis(Spx, Spy, Judejimo_lygtis, Gama, 1, e, Rib2, kelias);
%     [T2 Fk2]=Susikirtimas_su_ribinemis(Spx, Spy, Judejimo_lygtis, Gama, -1, e, Rib1, kelias);
% end

if isempty(T1)==0 && isempty(T2)==1
    %nustatoma judejimo kryptis nuo roboto padeties iki naujo
    %surasto tasko
    kiekis=size(T1,1);
    m=1;
    for i=1:kiekis
        koord1=[kelias; T1(i,:)];
        [s1 kr1]=Skirtumai(koord1,1);
        if kr1(1,1)==R_kr(1) && kr1(1,2)==R_kr(2)
            Jud_taskas(m,:)=T1(i,:);
            F(m)=Fk1(i);
            atstumas_tarp_tasku(m)=atstumas(Jud_taskas(m,1), kelias(1,1), Jud_taskas(m,2), kelias(1,2));
            m=m+1;
        end
    end
    %ieskomas maziausias atstumas tarp tasku
    
    if exist('atstumas_tarp_tasku', 'var')==1
        [min_atstumas nr]=min(atstumas_tarp_tasku);
        Judejimo_taskas=Jud_taskas(nr,:);
        Ak=J;
        Fk=F(nr);
    else
        Judejimo_taskas=zeros(0);
        Ak=Judejimo_taskas;
        Fk=Ak;
    end
    
elseif isempty(T1)==1 && isempty(T2)==0
    %nustatoma judejimo kryptis nuo roboto padeties iki naujo
    %surasto tasko
    kiekis=size(T2,1);
    m=1;
    for i=1:kiekis
        koord2=[kelias; T2(i,:)];
        [s2 kr2]=Skirtumai(koord2,1);
        if kr2(1,1)==R_kr(1) && kr2(1,2)==R_kr(2)
            Jud_taskas(m,:)=T2(i,:);
            F(m)=Fk2(i);
            atstumas_tarp_tasku(m)=atstumas(Jud_taskas(m,1), kelias(1,1), Jud_taskas(m,2), kelias(1,2));
            m=m+1;
        end
    end
    if exist('atstumas_tarp_tasku', 'var')==1
        [min_atstumas nr]=min(atstumas_tarp_tasku);
        Judejimo_taskas=Jud_taskas(nr,:);
        Ak=J;
        Fk=Fk2(nr);
    else
        Judejimo_taskas=zeros(0);
        Ak=Judejimo_taskas;
        Fk=Ak;
    end
elseif isempty(T1)==0 && isempty(T2)==0
    for i =1:size(T1,1)
        koord1=[kelias; T1(i,:)];
        [s1(i,:) kr1(i,:)]=Skirtumai(koord1,1);
        atstumas_s1(i)=sqrt(s1(i,1)^2+s1(i,2)^2);
    end
    for i =1:size(T2,1)
        koord2=[kelias; T2(i,:)];
        [s2(i,:) kr2(i,:)]=Skirtumai(koord2,1);
        atstumas_s2(i)=sqrt(s2(i,1)^2+s2(i,2)^2);
    end
    [min_s1 i_s1]=min(atstumas_s1);
    [min_s2 i_s2]=min(atstumas_s2);
    
    if kr1(i_s1,1)==kr2(i_s2,1) && kr1(i_s1,2)==kr2(i_s2,2) && kr1(i_s1,1)==R_kr(1) && kr1(i_s1,2)==R_kr(2)
        %ieskomas maziausias atstumas tarp tasku
        atstumas_tarp_tasku(1)=sqrt(s1(i_s1,1)^2+s1(i_s1,2)^2);
        atstumas_tarp_tasku(2)=sqrt(s2(i_s2,1)^2+s2(i_s2,2)^2);
        [min_atstumas nr]=min(atstumas_tarp_tasku);
        if nr==1
            Judejimo_taskas=T1(i_s1,:);
            Ak=J;
            Fk=Fk1(i_s1);
        else
            Judejimo_taskas=T2(i_s2,:);
            Ak=J;
            Fk=Fk2(i_s2);
        end
    else
        if kr1(i_s1,1)==R_kr(1) && kr1(i_s1,2)==R_kr(2)
            Judejimo_taskas=T1(i_s1,:);
            Ak=J;
            Fk=Fk1(i_s1);
        elseif kr2(i_s2,1)==R_kr(1) && kr2(i_s2,2)==R_kr(2)
            Judejimo_taskas=T2(i_s2,:);
            Ak=J;
            Fk=Fk2(i_s2);
        else
            Judejimo_taskas=zeros(0);
            Ak=Judejimo_taskas;
            Fk=Ak;
        end
    end
else
    Judejimo_taskas=zeros(0);
    Ak=Judejimo_taskas;
    Fk=Ak;
end
Taskas=Judejimo_taskas;