// ITEM COMPONENT function addItem(c, indexe) { var r = {}; r.el = { status: C('status'), picture: C('status-picture', 'img'), inner: C('status-inner'), user: C('status-username', 'span'), text: C('status-text', 'span'), date: C('status-date', 'span'), clear: C('clear-left') }; var is_DM = 0; if (c.sender && !c.user) { c.user = c.sender; c.source = 'N/A'; is_DM = 1; } if (c.from === undefined) { c.from = c.user.screen_name; } var cdate = new Date(c.created_at); r.el.picture.src = c.user.profile_image_url; r.el.user.innerHTML = c.user.screen_name; var display_text = c.text; display_text = display_text.replace(/(https?:\/\/|www\.)(\S*\w+)+/g, function(a) { return '' + failProofThis(a) + ''; }).replace(/\B(@[a-z0-9_A-Z\/]+)/g, function(a) { return '' + failProofThis(a) + ''; }).replace(/\B(#[a-z0-9\-_A-Z]+)/g, function(a) { return '' + failProofThis(a) + ''; }); r.el.text.innerHTML = ' ' + display_text + ' '; var statusHREF = 'http://twitter.com/' + c.user.screen_name + '/status/' + c.id; var irpHTML = ''; if (c.in_reply_to_status_id) { var irpHREF = 'http://twitter.com/' + c.in_reply_to_screen_name + '/status/' + c.in_reply_to_status_id; irpHTML = ' » ' + c.in_reply_to_screen_name + ''; } r.el.date.innerHTML = '' + cdate.getHours() + ':' + twoDigits(cdate.getMinutes()) + ':' + twoDigits(cdate.getSeconds()) + ' from ' + sanitizeSource(c.source) + '' + irpHTML; r.el.picture.style.cursor = 'pointer'; r.el.picture.onclick = function() { open_link ('http://twitter.com/' + r.getUser()); }; r.el.status.appendChild (r.el.picture); r.el.status.appendChild (r.el.inner); r.el.inner.appendChild (r.el.user); r.el.inner.appendChild (r.el.text); r.el.inner.appendChild (r.el.date); r.el.status.appendChild (r.el.clear); el.display.appendChild (r.el.status); var mgt = 0; // First item? if (indexe == 0) (function() { dtjs2.a.c (0, 1, 0.8, function(v) { mgt = Math.round(window.innerHeight * (1 - v)); r.el.status.style.marginTop = mgt + 'px'; }, dtjs2.ease.sine.o); mgt = Math.round(window.innerHeight); r.el.status.style.marginTop = mgt + 'px'; })(); var cl = ''; if (MY_DAMN_NAME != '' && c.text.toLowerCase().indexOf('@' + MY_DAMN_NAME.toLowerCase()) > -1) { cl = 'status-mention'; } r.isMentioned = function() { return cl != ''; }; var cla = ''; var clb = ''; var clc = ''; var cld = ''; var isTweetFiltered = false; var decodedText = html_entity_decode(c.text); r.updateClass = function() { r.el.status.className = 'status ' + cl + ' ' + cla + ' ' + clb + ' ' + clc + ' ' + cld; }; r.setClass = function(d) { cla = d; r.updateClass (); }; r.setSecondaryClass = function(d) { clb = d; r.updateClass (); }; r.setFaved = function(d) { clc = d ? 'status-faved' : ''; r.updateClass (); }; r.updateHighlighted = function() { cld = isHighlight(decodedText) ? 'status-highed' : ''; r.updateClass (); }; r.updateFiltered = function() { isTweetFiltered = isFilter(decodedText, c) ? true : false; r.el.status.style.display = isTweetFiltered ? 'none' : ''; }; r.isFiltered = function() { return isTweetFiltered; }; r.getPosition = function() { return r.el.status.offsetTop - mgt; }; r.getHeight = function() { return r.el.status.offsetHeight; }; r.getText = function() { return decodedText; }; r.isDM = function() { return is_DM; }; r.getUser = function() { return c.user.screen_name; }; r.getId = function() { return c.id; }; r.isProtected = function() { return !!c.user.protected; }; var numWorks = 0; r.doWorks = function() { numWorks ++; r.el.status.style.opacity = 1 / (1 + (numWorks * 0.6)); return function() { numWorks --; if (numWorks == 0) { r.el.status.style.opacity = ''; } else { r.el.status.style.opacity = 1 / (1 + (numWorks * 0.6)); } }; }; r.toggleFave = function() { var newState = true; if (clc == 'status-faved') { newState = false; } r.setFaved (newState); var xh = new XMLHttpRequest(); var worked = r.doWorks(); xh.open ('POST', 'api-fave.php?time=' + (new Date().getTime()), true); xh.setRequestHeader ('content-type', 'application/x-www-form-urlencoded'); xh.onreadystatechange = function() { if (xh.readyState == 4) { try { var data = eval('(' + xh.responseText + ')'); r.setFaved (newState); } catch (e) { notify ('Couldn\'t Save Favourite'); r.setFaved (!newState); } worked (); } }; xh.send ('mode=' + (newState ? 'create' : 'destroy') + '&id=' + r.getId() + '&tk=' + THE_TOKEN); }; r.setClass (''); r.check = function() { var expected = '@' + c.user.screen_name.toLowerCase(); var isMatch = el.tweetData.value.substr(0, expected.length).toLowerCase() == expected; r.setSecondaryClass (isMatch ? 'status-reply-to' : ''); return isMatch; }; r.uncheck = function() { r.setSecondaryClass (''); }; r.test = function(str) { if (r.getUser().toLowerCase().indexOf(str.toLowerCase()) > -1) { return true; } if (r.getText().toLowerCase().indexOf(str.toLowerCase()) > -1) { return true; } if ((r.getUser() + ' ' + r.getText()).toLowerCase().indexOf(str.toLowerCase()) > -1) { return true; } return false; }; currentItems.push (r); r.el.status.onclick = function() { for (var i = 0; i < currentItems.length; i ++) { if (currentItems[i] == r) { tl.selectItem (i); return; } } }; if (c.favorited) r.setFaved (true); r.updateHighlighted (); r.updateFiltered (); };