var ob = obj || dj_global; dojo.lang.map(arr, function(val){ reducedValue = binary_func.call(ob, reducedValue, val); } ); return reducedValue; }, 
var ob = obj || dj_global; dojo.lang.map(arr, function(val){ reducedValue = binary_func.call(ob, reducedValue, val); } ); return reducedValue; }, 
	reduce: function(/*Array*/arr, initialValue, /*Object|Function*/obj, /*Function*/binary_func){		// summary:		// 		similar to Python's builtin reduce() function. The result of		// 		the previous computation is passed as the first argument to		// 		binary_func along with the next value from arr. The result of		// 		this call is used along with the subsequent value from arr, and		// 		this continues until arr is exhausted. The return value is the		// 		last result. The "obj" and "initialValue" parameters may be		// 		safely omitted and the order of obj and binary_func may be		// 		reversed. The default order of the obj and binary_func argument		// 		will probably be reversed in a future release, and this call		// 		order is supported today.		// examples:		//		dojo.lang.reduce([1, 2, 3, 4], function(last, next){ return last+next});		//		returns 10		var reducedValue = initialValue;		if(arguments.length == 2){			binary_func = initialValue;			reducedValue = arr[0];			arr = arr.slice(1);		}else if(arguments.length == 3){			if(dojo.lang.isFunction(obj)){				binary_func = obj;				obj = null;			}		}else{			// un-fsck the default order			// FIXME:			//		could be wrong for some strange function object cases. Not			//		sure how to test for them.			if(dojo.lang.isFunction(obj)){				var tmp = binary_func;				binary_func = obj;				obj = tmp;			}		}		var ob = obj || dj_global;		dojo.lang.map(arr, 			function(val){				reducedValue = binary_func.call(ob, reducedValue, val);			}		);		return reducedValue;	},
6315	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/6315/2f1d2cb699c9d9329e8b782b0463156e211cb0f6/struts_dojo.js.uncompressed.js/buggy/src/main/resources/org/apache/struts2/static/dojo/struts_dojo.js.uncompressed.js