              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{     if(dojo.lang.isFunction(obj)){ var tmp = binary_func; binary_func = obj; obj = tmp; } } 
              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{     if(dojo.lang.isFunction(obj)){ var tmp = binary_func; binary_func = obj; obj = tmp; } } 
  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/65ae7e8768a77997b7894e274bc242069a1cb027/struts_dojo.js.uncompressed.js/clean/src/main/resources/org/apache/struts2/static/dojo/struts_dojo.js.uncompressed.js