var Modes = { modes: [], features: {}, setModes:function(json){ this.modes = json.map(function(m){ return new Mode(m); }); this.updateModePanel(); }, setFeatures:function(features){ this.features = features; this.updateModePanel(); }, findByModulation:function(modulation){ matches = this.modes.filter(function(m) { return m.modulation === modulation; }); if (matches.length) return matches[0] }, updateModePanel:function() { var available = this.modes.filter(function(m){ return m.isAvailable(); }); var normalModes = available.filter(function(m){ return !m.digimode; }); var digiModes = available.filter(function(m){ return m.digimode; }); var html = [] var buttons = normalModes.map(function(m){ return $( '
' ); }); var index = 0; var arrayLength = buttons.length; var chunks = []; for (index = 0; index < arrayLength; index += 5) { chunks.push(buttons.slice(index, index + 5)); } html.push.apply(html, chunks.map(function(chunk){ $line = $(''); $line.append.apply($line, chunk); return $line })); html.push($( '