YAHOO.lang.augmentObject(YAHOO.namespace("YAHOO.util.Functional"),{each:function(j,g,f){var b=0;try{if(j.forEach){j.forEach(g,f)}else{if(j.length){for(var d=0,a=j.length;d<a;d++){g.call(f,j[d],d,j)}}else{if(j.each){j.each(function(e){g.call(f,e,b++,j)})}else{for(var c in j){if(Object.prototype.hasOwnProperty.call(j,c)){g.call(f,j[c],c,j)}}}}}}catch(h){if(h!="__break__"){throw h}}return j},collect:function(d,c,b){if(d&&d.map){return d.map(c,b)}var a=[];this.each(d,function(g,e,f){a.push(c.call(b,g,e,f))});return a},inject:function(d,a,c,b){if(d&&d.reduce){return d.reduce(this.bind(c,b),a)}this.each(d,function(g,e,f){a=c.call(b,a,g,e,f)});return a},bind:function(c,b){if(!b){return c}var a=this.toArray(arguments).slice(2);return function(){var d=a.concat(YAHOO.util.Functional.toArray(arguments));return c.apply(b,d)}},toArray:function(a){if(!a){return[]}if(YAHOO.lang.isArray(a)){return a}return this.map(a,function(b){return b})},indexOf:function(a,b){if(YAHOO.lang.isFunction(b)){try{this.each(a,function(e,d){if(b.call(a,e,d)){throw d}})}catch(c){return c}return -1}else{if(a.indexOf){return a.indexOf(b)}for(i=0,l=a.length;i<l;i++){if(a[i]===b){return i}}return -1}},detect:function(d,c,b){var a;this.each(d,function(g,e,f){if(c.call(b,g,e,f)){a=g;throw"__break__"}});return a},select:function(d,c,b){if(d.filter){return d.filter(c,b)}var a=[];this.each(d,function(g,e,f){c.call(b,g,e,f)&&a.push(g)});return a},reject:function(d,c,b){var a=[];this.each(d,function(g,e,f){!c.call(b,g,e,f)&&a.push(g)});return a},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.call(a,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(b,a){if(YAHOO.lang.isArray(b)){return this.indexOf(b,a)!=-1}return this.detect(enumerable,function(c){return c==value})?true:false},all:function(d,c,b){c=c||this.identity;if(d.every){return d.every(c,b)}var a=true;this.each(d,function(g,e,f){if(!(a=a&&c.call(b,g,e,f))){throw"__break__"}});return a},any:function(d,c,b){c=c||this.identity;if(d.some){return d.some(c,b)}var a=false;this.each(d,function(g,e,f){if(a=c.call(b,g,e,f)){throw"__break__"}});return a},identity:function(a){return a}});YAHOO.util.Functional.forEach=YAHOO.util.Functional.each;YAHOO.util.Functional.map=YAHOO.util.Functional.collect;YAHOO.util.Functional.foldl=YAHOO.util.Functional.reduce=YAHOO.util.Functional.inject;YAHOO.util.Functional.find=YAHOO.util.Functional.detect;YAHOO.util.Functional.filter=YAHOO.util.Functional.find_all=YAHOO.util.Functional.select;YAHOO.util.Functional.every=YAHOO.util.Functional.all;YAHOO.util.Functional.some=YAHOO.util.Functional.any;YAHOO.register("functional",YAHOO.util.Functional,{version:"0.4.0",build:"0"});