YAHOO.lang.augmentObject(YAHOO.namespace("YAHOO.util.Functional"),{each:function(a,c){for(var b=0;b<a.length;b++){c(a[b],b)}return a},collect:function(a,c){var b=[];this.each(a,function(e,d){b.push(c(e,d))});return b},inject:function(b,c,d){var a=c;this.each(b,function(f,e){a=d(a,f,e)});return a},indexOf:function(b,d){var a=-1;try{this.each(b,function(f,e){if(d(f,e)){throw e}})}catch(c){a=c}return a},detect:function(a,c){var b=this.indexOf(a,c);return(b>=0)?a[b]:null},select:function(a,c){var b=[];this.each(a,function(e,d){if(c(e,d)){b.push(e)}});return b},reject:function(a,b){return this.select(a,function(d,c){return !(b(d,c))})},grep:function(a,b){return this.select(a,function(d,c){return b.test(d)})},partition:function(a,c){var b={matches:[],rejects:[]};this.each(a,function(e,d){var f=c(e,d)?b.matches:b.rejects;f.push(e)});return b},zip:function(a,c){var b=[];this.each(a,function(e,d){b.push([e,c[d]])});return b},contains:function(a,b){return this.detect(a,function(c){return c==b})?true:false},all:function(a,b){return(a.length==this.select(a,function(c){return(true===b(c))}).length)},any:function(a,b){return(null!=this.detect(a,function(c){return(true===b(c))}))}});YAHOO.util.Functional.map=YAHOO.util.Functional.collect;YAHOO.util.Functional.reduce=YAHOO.util.Functional.inject;YAHOO.util.Functional.find=YAHOO.util.Functional.detect;YAHOO.util.Functional.find_all=YAHOO.util.Functional.select;