/*
* Helma License Notice
*
* The contents of this file are subject to the Helma License
* Version 2.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://adele.helma.org/download/helma/license.txt
*
* Copyright 1998-2006 Helma Software. All Rights Reserved.
*
* $RCSfile: Array.js,v $
* $Author$
* $Revision$
* $Date$
*/
/**
* @fileoverview Adds useful methods to the JavaScript Array type.
*
* To use this optional module, its repository needs to be added to the
* application, for example by calling app.addRepository('modules/core/Array.js')
*
* @addon
*/
/**
* Return the first index position of a value
* contained in an array, or -1 if it isn't contained.
* @param {Object} val the value to check
* @return {int} the index of the first occurence of val, or -1
*/
Array.prototype.indexOf = function(val) {
var i = -1;
while (i++ < this.length -1) {
if (this[i] == val)
return i;
}
return -1;
};
/**
* return the last index position of a value
* contained in an array, or -1 if it isn't contained.
* @param {Object} val the value to check
* @return {int} the index of the first occurence of val, or -1
*/
Array.prototype.lastIndexOf = function(val) {
var i = 1;
while (this.length - i++ >= 0) {
if (this[i] == val)
return i;
}
return -1;
};
/**
* check if an array passed as argument contains
* a specific value (start from end of array)
* @param {Object} val the value to check
* @return {boolean} true if the value is contained
*/
Array.prototype.contains = function(val) {
if (this.indexOf(val) > -1)
return true;
return false;
};
/**
* Retrieve the union set of a bunch of arrays
* @param {Array} array1,... the arrays to unify
* @return {Array} the union set
*/
Array.union = function() {
var result = [];
var map = {};
for (var i=0; i