/**
 *  Delete troublesome Object properties and provide some helper functions.
 *
 *  @author marcel
 *
 *  @provides object-extensions
 */

// Safety for FBJS.
if (Object.prototype.eval) {
  window.eval = Object.prototype.eval;
}
delete Object.prototype.eval;     // silly Mozilla
delete Object.prototype.valueOf;  // sorry, use Object.valueOf instead

function is_scalar(v) {

  switch (typeof(v)) {
    case 'string':
    case 'number':
    case 'null':
    case 'boolean':
      return true;
  }

  return false;
}

function is_empty(obj) {
  for (var i in obj) {
    return false;
  }
  return true;
}

function object_keys(obj) {
  var keys = [];
  for (var i in obj) {
    keys.push(i);
  }
  return keys;
}

function object_values(obj) {
  var values = [];
  for (var i in obj) {
    values.push(obj[i]);
  }
  return values;
}

function object_key_count(obj) {
  var count = 0;
  for (var i in obj) {
    count++;
  }
  return count;
}

function are_equal(a, b) {
  return JSON.encode(a) == JSON.encode(b);
}

