function control_saisie(obj, event)
%control_saisie Check input
% Check all the values entered by the user 
% If there is an error, add to the global variable input_error, a
% field whose name is equal to the tag of the calling handle
%% ======================================================
global input_error;
letag = get(obj, 'tag');

% Il y avait une erreur précédemment sur le tag courant et l'utilisateur le modifie
if ~isempty(input_error) && isfield(input_error, letag)
    input_error= rmfield(input_error, letag);
end

userdata=get(obj,'userdata');
% userdata contient les bornes valides, suivies
% si userdata  est de type cell, du libelle a écrire si erreur
if iscell(userdata)
    DF=userdata{1};
    if iscell(userdata{2})
        % oter les composants vides
        for i=1:length(userdata{2})
            if ~isempty(userdata{2}{i})
                mess= userdata{2}{i};
             end
        end
    else
        mess= userdata{2} ;
    end
    libelle=['Error on ' mess  ': '];
else
    libelle='';
    mess=letag;
    DF=userdata;
end



if strcmpi(get(obj,'string'),'horloge')
    set(obj,'backgroundcolor','w')
    return
end
user_entry = str2double(get(obj,'string'));
if isnan(user_entry)
    try 
        user_entry = eval(get(obj,'string'));
     catch
        errordlg([libelle, 'Enter a numerical value'], 'Bad Input','modal')
        set(obj,'backgroundcolor',[1 1 1])
        input_error.(letag)=mess;
        uicontrol(obj)
        return
    end
end
if isempty(user_entry)
        errordlg([libelle, 'Enter a numerical value'], 'Bad Input','modal')
    set(obj,'backgroundcolor',[1 1 1])
    input_error.(letag)=mess;
    uicontrol(obj)
    return
end
 if isempty(DF)
%     helpdlg('Cette variable peut être instanciée par la suite','Note');
     set(obj,'backgroundcolor','w')
    return
else
 
    if user_entry<=str2double(DF{2}) && user_entry>=str2double(DF{1})
        set(obj,'backgroundcolor','w')
    else
        errordlg([libelle, ...
'The value ',get(obj,'string'),  ...
    ' is not between ',DF{1},' and ',DF{2}] ,'Bad Input','modal')
        set(obj,'backgroundcolor',[1 1 1])
        input_error.(letag)=mess;
        uicontrol(obj)
    end

    return
end

end %fin control_saisie
