Array.prototype._reverse = Array.prototype.reverse;
imos.Object.extend(Array.prototype, {
    inArray: function (value) {
        var i;
        for (i=0; i < this.length; i++) {
            if (this[i] === value) {
                return true;
            }
        }
        return false;
    },
    first: function() {
        return this[0];
    },
    last: function() {
        return this[this.length - 1];
    },
    indexOf: function(object) {
        for (var i = 0; i < this.length; i++)
            if (this[i] == object) return i;
        return -1;
    },

    reverse: function(inline) {
        return (inline !== false ? this : this.toArray())._reverse();
    },

    shift: function() {
        var result = this[0];
        for (var i = 0; i < this.length - 1; i++)
            this[i] = this[i + 1];
        this.length--;
        return result;
    }
});