(function() { self.port.on('displayApps', function(message) { var div, a, img, label, name, d = document, detectedApps = d.getElementById('detected-apps'), empty = d.getElementById('empty'); while ( detectedApps.firstChild ) { detectedApps.removeChild(detectedApps.firstChild); } if ( message.tabCache.count > 0 ) { empty.style.display = 'none'; for ( appName in message.tabCache.appsDetected ) { div = d.createElement('div'); a = d.createElement('a'); img = d.createElement('img'); label = d.createElement('span'); name = d.createElement('span'); confidence = message.tabCache.appsDetected[appName].confidenceTotal; version = message.tabCache.appsDetected[appName].version; div.setAttribute('class', 'detected-app'); a.setAttribute('href', '#'); (function(appName) { a.addEventListener('click', function(e) { e.preventDefault(); self.port.emit('goToUrl', 'applications/' + appName.toLowerCase().replace(/ /g, '-').replace(/[^\w-]/g, '')); }); }(appName)); img.setAttribute('src', 'images/icons/' + appName + '.png'); img.setAttribute('height', '16'); img.setAttribute('width', '16'); label.setAttribute('class', 'label'); name.setAttribute('class', 'name'); name.appendChild(d.createTextNode(appName)); label.appendChild(name); label.appendChild(d.createTextNode(( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : ''))); a.appendChild(img) a.appendChild(label) div.appendChild(a); message.apps[appName].cats.forEach(function(cat) { a = d.createElement('a'); label = d.createElement('span'); name = d.createElement('span'); a.setAttribute('href', '#'); (function(appName) { a.addEventListener('click', function(e) { e.preventDefault(); self.port.emit('goToUrl', 'categories/' + message.categories[cat]); }); }(appName)); label.setAttribute('class', 'category'); name.setAttribute('class', 'name'); name.appendChild(d.createTextNode(message.categoryNames[cat])); label.appendChild(name); a.appendChild(label); div.appendChild(a); }); detectedApps.appendChild(div); } } else { empty.style.display = 'inherit'; } self.port.emit('resize', document.body.offsetHeight); }); }());