    var processing = false;     
       
    $(function() {   
      var page = 1;   
      var pageSize = 10;   
  
      $('span.loading')   
          .bind('ajaxStart', function() { $(this).show(); })   
          .bind('ajaxStop', function() { $(this).hide(); });   
  
//      $('#btnSearch').click(function() {   
        page = 1;   
        feedTweets(page, pageSize);   
//      });   
  
      $('#prev').click(function() {   
        if (processing) return false;   
        if (page > 1) {   
          page = page - 1;   
          feedTweets(page, pageSize);   
        }   
        return false;   
      });   
  
      $('#next').click(function() {   
        if (processing) return false;   
        page = page + 1;   
        feedTweets(page, pageSize);   
        return false;   
      });   
  
  
      function feedTweets(pNum, pSize) {   
        processing = true;   
        var keyword = $('#txtKeyword').val();   
        var url = '//search.twitter.com/search.json?callback=?';   
        var params = {   
          q: keyword,   
          lang: 'ja',   // en, ja   
          locale: 'ja',   
          rpp: pSize,     // number of tweets to return   
          page: pNum      // page number    
        }   
        $.getJSON(url, params, function(data) {   
          if (!data.results) return;   
          if (data.results.length <= 0) return;   
          var html = ''  
          $.each(data.results, function(i, item) {   
            var avatar = '<a class="tweet_avatar" href="http://twitter.com/' + item.from_user + '" target="_blank"><img src="' + item.profile_image_url + '" height="48px" width="48px" alt="' + item.from_user + '\'s avatar" title="' + item.from_user + '\'s avatar" border="0"/></a>';   
            var text = '<span class="tweet_text">' + linkUser(linkUrl(item.text)) + '</span><br />';   
            var date = '<a href="http://twitter.com/' + item.from_user + '/statuses/' + item.id + '" target="_blank" title="view tweet on twitter">' + relative_time(item.created_at) + '</a>';   
            html += '<li>' + avatar + text + date + '</li>'  
          });   
          var $list = $('ul#tweets');   
          $list.empty().html(html);   
          $list.children('li:first').addClass('tweet_first');   
          $list.children('li:odd').addClass('tweet_even');   
          $list.children('li:even').addClass('tweet_odd');   
  
          $('#prev').text(pNum > 1 ? '前へ' : '');   
          $('#page').text('Page: ' + pNum);   
          $('#pager').show();   
          processing = false;   
        }); // end of getJSON   
           
      }   
  
  
      /* helper functions */  
  
      function linkUrl(item_text) {   
        var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;   
        return item_text.replace(regexp, '<a href="$1" target="_blank">$1</a>');   
      }   
  
      function linkUser(item_text) {   
        var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;   
        return item_text.replace(regexp, '<a href="http://twitter.com/$1" target="_blank">@$1</a>');   
      }   
  
      function relative_time(time_value) {   
        var parsed_date = Date.parse(time_value);   
        var relative_to = (arguments.length > 1) ? arguments[1] : new Date();   
        var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);   
        if (delta < 60) {   
          return '1分以内'; //'less than a minute ago';   
        } else if (delta < 120) {   
          return '1分前';  //'about a minute ago';   
        } else if (delta < (45 * 60)) {   
          return (parseInt(delta / 60)).toString() + '分前'; //' minutes ago';   
        } else if (delta < (90 * 60)) {   
          return '1時間前'; //'about an hour ago';   
        } else if (delta < (24 * 60 * 60)) {   
          return (parseInt(delta / 3600)).toString() + '時間前' //' hours ago';   
        } else if (delta < (48 * 60 * 60)) {   
          return '1日前' //'1 day ago';   
        } else {   
          return (parseInt(delta / 86400)).toString() + '日前' //' days ago';   
        }   
      }   
  
    });     // end of jQuery     
 
