Array.prototype.shuffle = function () {
  var list = this.concat();
  var i = list.length;

  if (i == 0) { return list; }

  while (--i) {
    var j = parseInt(Math.random() * (i + 1));
    if (i == j) continue;
    var k = list[i];
    var l = list[j];
    list[i] = l;
    list[j] = k;
  }
  return list;
}
