﻿//  -----   feel free to use this stuff   ---   play with it   ---    copy as You  like   -----
//  -----   but leave this authors 2 lines untouched: pseliger@gmx.net [september 2006]   -----
//
//  extended javascript-api-methods         :
//  * jsApi-extension-name / file-name      : "jsApi.Array.mozGenerics.js"
//  * original download-location            : "http://www.pseliger.de/jsExtendedApi/jsApi.Array.mozGenerics.js"
//
//  first public release: september 23-2006 - implements the specifications of mozillas recently introduced generic Array methods as it can be
//                                            read at [http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6#Array_and_String_generics];
//                                          - adds a generic "Array.contains" as well;
//                                          - also have a look at the related but prior (august 2005) to this released
//                                            [http://www.pseliger.de/jsExtendedApi/jsApi.Array.mozExtensions.dev.js]
//
Array.indexOf = function (obj, objLookingFor, idx) {var k,i=-1,l=((typeof obj.length=="number")?(obj.length):(0));idx=((idx&&isNaN(Number(idx)))?(parseInt(Number(idx),10)):(0));idx=((idx<0)?(Math.max(0,(l+idx))):(idx));for(k=idx;k<l;++k){if(obj[k]===objLookingFor){i=k;break;}}return i;};
Array.lastIndexOf = function (obj, objLookingFor, idx) {var k,i=-1,l=((typeof obj.length=="number")?(obj.length):(0));idx=((idx&&isNaN(Number(idx)))?(parseInt(Number(idx),10)):(l-1));idx=((idx<0)?(Math.max(0,(l+idx))):(idx));idx=((idx>l)?(l):(idx));for(k=idx;k>=0;--k){if(obj[k]===objLookingFor){i=k;break;}}return i;};
Array.contains = function (obj, objLookingFor) {return(obj.indexOf(objLookingFor)>=0);};
Array.forEach = function (obj, fct) {if(typeof fct=="function"){var i,l=((typeof obj.length=="number")?(obj.length):(0));for(i=0;i<l;++i){fct.call(null,obj[i],i,obj);}}};
Array.every = function (obj, fct) {var isAnd=false;if(typeof fct=="function"){isAnd=true;var i,l=((typeof obj.length=="number")?(obj.length):(0));for(i=0;i<l;++i){if(!fct.call(null,obj[i],i,obj)){isAnd=false;break;}}}return isAnd;};
Array.some = function (obj, fct) {var isOr=false;if(typeof fct=="function"){var i,l=((typeof obj.length=="number")?(obj.length):(0));for(i=0;i<l;++i){if(fct.call(null,obj[i],i,obj)){isOr=true;break;}}}return isOr;};
Array.map = function (obj, fct) {var arr=[];if(typeof fct=="function"){var i,l=((typeof obj.length=="number")?(obj.length):(0));for(i=0;i<l;++i){arr.push(fct.call(null,obj[i],i,obj));}}return arr;};
Array.filter = function (obj, fct) {var arr=[];if(typeof fct=="function"){var i,l=((typeof obj.length=="number")?(obj.length):(0));for(i=0;i<l;++i){if(fct.call(null,obj[i],i,obj)){arr.push(obj[i]);}}}return arr;};