///<reference path="../../../headers/common.d.ts" />

import moment from 'moment';
import * as dateMath from 'app/core/utils/datemath';

export function inputDateDirective() {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function ($scope, $elem, attrs, ngModel) {
      var format = 'YYYY-MM-DD HH:mm:ss';

      var fromUser = function (text) {
        if (text.indexOf('now') !== -1) {
          if (!dateMath.isValid(text)) {
            ngModel.$setValidity("error", false);
            return undefined;
          }
          ngModel.$setValidity("error", true);
          return text;
        }

        var parsed;
        if ($scope.ctrl.isUtc) {
          parsed = moment.utc(text, format);
        } else {
          parsed = moment(text, format);
        }

        if (!parsed.isValid()) {
          ngModel.$setValidity("error", false);
          return undefined;
        }

        ngModel.$setValidity("error", true);
        return parsed;
      };

      var toUser = function (currentValue) {
        if (moment.isMoment(currentValue)) {
          return currentValue.format(format);
        } else {
          return currentValue;
        }
      };

      ngModel.$parsers.push(fromUser);
      ngModel.$formatters.push(toUser);
    }
  };
}

