// Prototype don't have reduce function, so we introduce one;
Enumerable.reduce=function(iterator){
	list=this;
	last = new Object();
	if(list.length <= 1) return;
	if(list.length == 2) return iterator(list[0],list[1]);
	last = list[0];
	for(var li = 1;li < list.length;li++){
		last = iterator(last,list[li]);
	}
	return last;

}
Object.extend(Array.prototype,  Enumerable);
