daily pastebin goal
68%
SHARE
TWEET

Untitled

a guest Mar 4th, 2010 332 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ITEM COMPONENT
  2. function addItem(c, indexe) {
  3.  
  4.         var r = {};
  5.         r.el = {
  6.                 status: C('status'),
  7.                 picture: C('status-picture', 'img'),
  8.                 inner: C('status-inner'),
  9.                 user: C('status-username', 'span'),
  10.                 text: C('status-text', 'span'),
  11.                 date: C('status-date', 'span'),
  12.                 clear: C('clear-left')
  13.         };
  14.  
  15.         var is_DM = 0;
  16.         if (c.sender && !c.user) { c.user = c.sender; c.source = 'N/A'; is_DM = 1; }
  17.         if (c.from === undefined) { c.from = c.user.screen_name; }
  18.  
  19.         var cdate = new Date(c.created_at);
  20.         r.el.picture.src = c.user.profile_image_url;
  21.         r.el.user.innerHTML = c.user.screen_name;
  22.         var display_text = c.text;
  23.         display_text = display_text.replace(/(https?:\/\/|www\.)(\S*\w+)+/g, function(a) {
  24.                 return '<span class="status-link-this-is-new" onclick="open_link(unescape(\'' + escape(a) + '\'))">' + failProofThis(a) + '</span>';
  25.         }).replace(/\B(@[a-z0-9_A-Z\/]+)/g, function(a) {
  26.                 return '<span class="status-link-this-is-new" onclick="open_link(unescape(\'' + escape('http://twitter.com/' + a.substr(1)) + '\'))">' + failProofThis(a) + '</span>';
  27.         }).replace(/\B(#[a-z0-9\-_A-Z]+)/g, function(a) {
  28.                 return '<span class="status-link-this-is-new" onclick="open_link(unescape(\'' + escape('http://twitter.com/search?q=' + encodeURIComponent(a)) + '\'))">' + failProofThis(a) + '</span>';
  29.         });
  30.         r.el.text.innerHTML = ' ' + display_text + ' ';
  31.         var statusHREF = 'http://twitter.com/' + c.user.screen_name + '/status/' + c.id;
  32.         var irpHTML = '';
  33.         if (c.in_reply_to_status_id) {
  34.                 var irpHREF = 'http://twitter.com/' + c.in_reply_to_screen_name + '/status/' + c.in_reply_to_status_id;
  35.                 irpHTML = '<span class="status-in-reply-to"> <span class="status-date-text status-date-link" onclick="open_link(unescape(\'' + irpHREF + '\'))" title="In reply to">&raquo; ' + c.in_reply_to_screen_name + '</span></span>';
  36.         }
  37.         r.el.date.innerHTML = '<span class="status-date-text status-date-link" onclick="open_link(unescape(\'' + statusHREF + '\'))">' +
  38.                 cdate.getHours() + ':' + twoDigits(cdate.getMinutes()) + ':' + twoDigits(cdate.getSeconds()) +
  39.                 '</span><span class="status-client"> from ' + sanitizeSource(c.source) + '</span>' + irpHTML;
  40.         r.el.picture.style.cursor = 'pointer';
  41.         r.el.picture.onclick = function() {
  42.                 open_link ('http://twitter.com/' + r.getUser());
  43.         };
  44.         r.el.status.appendChild (r.el.picture);
  45.         r.el.status.appendChild (r.el.inner);
  46.         r.el.inner.appendChild (r.el.user);
  47.         r.el.inner.appendChild (r.el.text);
  48.         r.el.inner.appendChild (r.el.date);
  49.         r.el.status.appendChild (r.el.clear);
  50.         el.display.appendChild (r.el.status);
  51.  
  52.         var mgt = 0;
  53.         // First item?
  54.         if (indexe == 0) (function() {
  55.                 dtjs2.a.c (0, 1, 0.8, function(v) {
  56.                         mgt = Math.round(window.innerHeight * (1 - v));
  57.                         r.el.status.style.marginTop = mgt + 'px';
  58.                 }, dtjs2.ease.sine.o);
  59.                 mgt = Math.round(window.innerHeight);
  60.                 r.el.status.style.marginTop = mgt + 'px';
  61.         })();
  62.  
  63.         var cl = '';
  64.         if (MY_DAMN_NAME != '' && c.text.toLowerCase().indexOf('@' + MY_DAMN_NAME.toLowerCase()) > -1) {
  65.                 cl = 'status-mention';
  66.         }
  67.         r.isMentioned = function() {
  68.                 return cl != '';
  69.         };
  70.         var cla = '';
  71.         var clb = '';
  72.         var clc = '';
  73.         var cld = '';
  74.         var isTweetFiltered = false;
  75.         var decodedText = html_entity_decode(c.text);
  76.         r.updateClass = function() {
  77.                 r.el.status.className = 'status ' + cl + ' ' + cla + ' ' + clb + ' ' + clc + ' ' + cld;
  78.         };
  79.         r.setClass = function(d) {
  80.                 cla = d;
  81.                 r.updateClass ();
  82.         };
  83.         r.setSecondaryClass = function(d) {
  84.                 clb = d;
  85.                 r.updateClass ();
  86.         };
  87.         r.setFaved = function(d) {
  88.                 clc = d ? 'status-faved' : '';
  89.                 r.updateClass ();
  90.         };
  91.         r.updateHighlighted = function() {
  92.                 cld = isHighlight(decodedText) ? 'status-highed' : '';
  93.                 r.updateClass ();
  94.         };
  95.         r.updateFiltered = function() {
  96.                 isTweetFiltered = isFilter(decodedText, c) ? true : false;
  97.                 r.el.status.style.display = isTweetFiltered ? 'none' : '';
  98.         };
  99.         r.isFiltered = function() {
  100.                 return isTweetFiltered;
  101.         };
  102.         r.getPosition = function() {
  103.                 return r.el.status.offsetTop - mgt;
  104.         };
  105.         r.getHeight = function() {
  106.                 return r.el.status.offsetHeight;
  107.         };
  108.         r.getText = function() {
  109.                 return decodedText;
  110.         };
  111.         r.isDM = function() {
  112.                 return is_DM;
  113.         };
  114.         r.getUser = function() {
  115.                 return c.user.screen_name;
  116.         };
  117.         r.getId = function() {
  118.                 return c.id;
  119.         };
  120.         r.isProtected = function() {
  121.                 return !!c.user.protected;
  122.         };
  123.        
  124.         var numWorks = 0;
  125.         r.doWorks = function() {
  126.                 numWorks ++;
  127.                 r.el.status.style.opacity = 1 / (1 + (numWorks * 0.6));
  128.                 return function() {
  129.                         numWorks --;
  130.                         if (numWorks == 0) {
  131.                                 r.el.status.style.opacity = '';
  132.                         } else {
  133.                                 r.el.status.style.opacity = 1 / (1 + (numWorks * 0.6));
  134.                         }
  135.                 };
  136.         };
  137.        
  138.         r.toggleFave = function() {
  139.                 var newState = true;
  140.                 if (clc == 'status-faved') {
  141.                         newState = false;
  142.                 }
  143.                 r.setFaved (newState);
  144.                 var xh = new XMLHttpRequest();
  145.                 var worked = r.doWorks();
  146.                 xh.open ('POST', 'api-fave.php?time=' + (new Date().getTime()), true);
  147.                 xh.setRequestHeader ('content-type', 'application/x-www-form-urlencoded');
  148.                 xh.onreadystatechange = function() {
  149.                         if (xh.readyState == 4) {
  150.                                 try {
  151.                                         var data = eval('(' + xh.responseText + ')');
  152.                                         r.setFaved (newState);
  153.                                 } catch (e) {
  154.                                         notify ('Couldn\'t Save Favourite');
  155.                                         r.setFaved (!newState);
  156.                                 }
  157.                                 worked ();
  158.                         }
  159.                 };
  160.                 xh.send ('mode=' + (newState ? 'create' : 'destroy') + '&id=' + r.getId() + '&tk=' + THE_TOKEN);
  161.         };
  162.         r.setClass ('');
  163.         r.check = function() {
  164.                 var expected = '@' + c.user.screen_name.toLowerCase();
  165.                 var isMatch = el.tweetData.value.substr(0, expected.length).toLowerCase() == expected;
  166.                 r.setSecondaryClass (isMatch ? 'status-reply-to' : '');
  167.                 return isMatch;
  168.         };
  169.         r.uncheck = function() {
  170.                 r.setSecondaryClass ('');
  171.         };
  172.         r.test = function(str) {
  173.                 if (r.getUser().toLowerCase().indexOf(str.toLowerCase()) > -1) {
  174.                         return true;
  175.                 }
  176.                 if (r.getText().toLowerCase().indexOf(str.toLowerCase()) > -1) {
  177.                         return true;
  178.                 }
  179.                 if ((r.getUser() + ' ' + r.getText()).toLowerCase().indexOf(str.toLowerCase()) > -1) {
  180.                         return true;
  181.                 }
  182.                 return false;
  183.         };
  184.  
  185.         currentItems.push (r);
  186.         r.el.status.onclick = function() {
  187.                 for (var i = 0; i < currentItems.length; i ++) {
  188.                         if (currentItems[i] == r) {
  189.                                 tl.selectItem (i);
  190.                                 return;
  191.                         }
  192.                 }
  193.         };
  194.  
  195.         if (c.favorited) r.setFaved (true);
  196.         r.updateHighlighted ();
  197.         r.updateFiltered ();
  198.  
  199. };
RAW Paste Data
Top