﻿/*

interphace.core.js

(c) 2009 Interphace Ltd.

*/

Array.prototype.each = function(cb) {
  $.each(this, cb);
};

Array.prototype.accumulate = function(cb, acc) {
  if (acc == 'undefined') {
    acc = 0;
  }
  for (var iter = 0, len = this.length; iter != len; ++iter) {
    acc += cb.apply(this[iter], iter);
  }
  return acc;
};

String.prototype.format = function() {
  for (var iter = 1; iter != arguments.length; ++iter) {
    str = str.replace("{" + (iter - 1) + "}", arguments[iter]);
  }
  return this;
}

$.fn.numeric = function(number, format) {
  if (!format) {
    format = $.fn.numeric.defaultFormat;
  }

  return $.each(this, function() {
    $(this).text("£" + parseFloat(number).numberFormat(format));
  });
};

$.fn.numeric.defaultFormat = "£0.00";

Array.prototype.where = function(property, value) {
  for (var iter = 0, len = this.length; iter != len; ++iter) {
    var item = this[iter];
    if (item[property] == value) {
      return item;
    }
  }
  return null;
};

var $parser = {
  parseInt: function(value, min) {
    value = parseInt(value);
    if (value < min) {
      value = parseInt("a"); // return NaN
    }
    return value;
  }
};


