var AngularMarkupUtils = function() {};

/** @param{boolean} b
    @param{Object} t
    @param{Object} f
    @return{Object} */
AngularMarkupUtils.prototype.conditional = function (b, t, f) {
  return b ? t : f;
};

AngularMarkupUtils.prototype.confirm = function(msg, fn, param1, param2) {
  if (confirm(msg)) {
    fn(param1, param2);
  }
};

AngularMarkupUtils.prototype.gt = function(lhs, rhs) {
  return lhs > rhs;
};

angular.service('MarkupUtils', function() {
  return new AngularMarkupUtils();
});

angular.filter('zeroOneToYN', function(b) {
  if ("" + b == "0") {
    return "No";
  } else if ("" + b == "1") {
    return "Yes";
  }
});

angular.filter('notSelectedIfEmpty', function(st) {
  if (st.length == 0) {
    return "Not Specified";
  }
  return st;
});

angular.filter('readableList', function(arr, key, seperator, or) {
  var st = "";
  if (arr.length == 0) {
    return st;
  }
  if (seperator == undefined) {
    var format = function(s) { return s; }
  } else {
    var format = function(s) { return "<" + seperator + ">" + s + "</" + seperator + ">"; }
  }
  if (key == undefined) {
    var get = function(k) { return k; };
  } else {
    var get = function(k) { return k[key]; };
  }
  st += format(get(arr[0]));
  if (arr.length == 2) {
    st += (or ? " or " : " and ") + format(get(arr[1]));
    return st;
  }
  for (var i = 1; i < arr.length; i++) {
    st += (i == arr.length - 1 ? (or ? ", or " : ", and ") : ", ") + format(get(arr[i]));
  }
  return st;
});

angular.filter("objectListForEachFormat", function(arr, format) {
  var ret = [];
  for (var i = 0; i < arr.length; i++) {
    var st = format;
    for (key in arr[i]) {
      st = st.replace("@@" + key + "@@", arr[i][key]);
    }
    ret.push(st);
  }
  return ret;
});

AngularMarkupUtils.prototype.alert = function(msg) {
  alert(msg);
};

AngularMarkupUtils.prototype.$R = function(low, high) {
  if (high < low) {
    return [];
  }
  var ret = [];
  for (var i = low; i <= high; i++) {
    ret.push(i);
  }
  return ret;
};

