// 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 ();
};