Advertisement
Guest User

Untitled

a guest
Mar 4th, 2010
415
0
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. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement