
var PdpCollections = {

  search: function(array, elem, func) {
    var start = 0;
    var end = array.length;
    var m, am;
    var lelem = func ? func(elem) : elem;
    while (start < end) {
      m = Math.floor((start + end) / 2);
      am = func ? func(array[m]) : array[m];
      if (lelem == am)
        return m;
      if (lelem < am)
        end = m;
      else
        start = m + 1;
    }
    return -start - 1;
  },


  insert: function(array, elem, pos) {
    for (i = array.length; i > pos; i--)
      array[i] = array[i - 1];
    array[pos] = elem;
  },

  remove: function(array, pos) {
    var end = array.length - 1;
    for (i = pos; i < end; i++) {
      array[i] = array[i + 1];
    }
    array.length--;
  },

  hashIsEmpty: function(hash) {
    for (var key in hash)
      return false;
    return true;
  }
}