function map(func, arr){ ret = []; for (var i = 0; i < arr.length; i++) { ret[i] = func(arr[i]); } return ret; } function reduce(func, arr){ var last = null; if (arr.length <= 1) { return; } if (arr.length == 2) { return func(arr[0],arr[1]); } last = arr[0]; for (var i = 1; i < arr.length; i++) { last = func(last,arr[i]); } return last; } function filter(func, arr){ ret = []; for (var i = 0; i < arr.length; i++) { if(func(arr[i]) == true) ret[ret.length] = arr[i]; } return ret; } function init() { var f = function (r) { if (document.all) { kids = r.childNodes[0].childNodes; } // Strip out stupid linebreak false-alarm elems else { var pat = /[^\n\r]/; var kids = Array.prototype.slice.apply( r.childNodes[0].childNodes); var removeLineBreaks = function (item) { return pat.test(item.textContent); }; kids = filter(removeLineBreaks, kids); } alert(kids.length); }; fleegix.xhr.doGet(f, '/test.xml', 'xml'); };