define([], function () { var trendsic = { //define trendsic.ko namespace ko: { //****KO unwrap****// unwrapSingletonArray: function (obj) { var items = []; this.unwrapSingletonArrayRecur(obj, items, 0); //build object var newItem = false; var item = new Object(); var result = new Array(); var index = 0; for (var i = 0; i < items.length; i++) { if (items[i].level == index) { newItem = true; item[items[i].name] = items[i].value; } else { result.push(item); newItem = false; item = new Object(); index++; } } if (newItem) { result.push(item); } return result; }, unwrapSingletonArrayRecur: function (obj, items, level, prop) { if (typeof obj == 'function') { this.unwrapSingletonArrayRecur(obj(), items, level, prop); } else if (Array.isArray(obj)) { for (var i = 0; i < obj.length; i++) { this.unwrapSingletonArrayRecur(obj[i], items, i); } } else if ((this.hasProperties(obj)) && (typeof obj != 'string')) { for (var prop in obj) { if (obj.hasOwnProperty(prop)) { // handle prop as required this.unwrapSingletonArrayRecur(obj[prop], items, level, prop); } } } else { var a = new this.unwrapItem(prop, obj, level); items.push(a); } }, hasProperties: function (obj) { for (var prop in obj) { if (obj.hasOwnProperty(prop)) { // handle prop as required return true; } } return false; }, unwrapItem: function (oName, oValue, oLevel) { this.name = oName; this.value = oValue; this.level = oLevel; } //****END KO unwrap****// }, //define trendsic.utils namespace utils: {} }; return trendsic; });