Array.prototype.uniq = function(usedObjKey) {
  if (typeof(usedObjKey) == 'undefined')
    usedObjKey = (typeof(this[0]) == 'object');
  
  var ret = [];
  if (usedObjKey) {
    for (var i=0, len=this.length, s=[]; i<len; i++) {
      if (s.indexOf(this[i]) < 0) {
        ret.push(this[i]);
        s.push(this[i]);
      }
    }
  }
  else
  {
    for (var i=0, len=this.length, s={}; i<len; i++) {
      if (!s[this[i]])
        ret.push(this[i]);
      s[this[i]] = true;
    }
  }
  return ret;
}

/**
 * @site http://developer.mozilla.org/ja/docs/
 *       Core_JavaScript_1.5_Reference:Global_Objects:Array:indexOf
 */
if (!Array.prototype.indexOf) {
  Array.prototype.indexOf = function(elt /*, from*/) {
    var len = this.length;
    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    if (from < 0)
      from += len;
    
    for (; from<len; from++)
      if (from in this && this[from] === elt)
        return from;
    return -1;
  };
}
