OSDN Git Service

embr
authorJiang <jianghgr@yahoo.co.jp>
Wed, 19 Nov 2014 08:24:30 +0000 (16:24 +0800)
committerJiang <jianghgr@yahoo.co.jp>
Wed, 19 Nov 2014 08:24:30 +0000 (16:24 +0800)
107 files changed:
.htaccess [new file with mode: 0644]
ajax/addfavor.php
ajax/apiQuota.php
ajax/delete.php
ajax/list.php
ajax/relation.php
ajax/reportSpam.php
ajax/retweet.php
ajax/setTip.php [new file with mode: 0644]
ajax/shortenTweet.php
ajax/shorturl.php
ajax/status.php
ajax/update.php
ajax/updateFollowing.php
ajax/updateList.php
ajax/updateMessage.php
ajax/updateProfile.php [new file with mode: 0644]
ajax/updateReplies.php
ajax/updateTimeline.php
ajax/updateTrends.php
ajax/uploadImage.php [new file with mode: 0644]
all.php
authorize.php [new file with mode: 0644]
basic_auth.php [new file with mode: 0644]
browse.php
css/main.css
css/ui.colorpicker.css
error.php
favor.php
followers.php
friends.php
img.php [new file with mode: 0644]
img/bg-btn.gif
img/bg-clouds.png
img/big_logo.png
img/blank.gif [new file with mode: 0644]
img/logo.png
img/refresh.png [new file with mode: 0644]
img/sprite-icons.png
img/sprite_icons.png
img/toggle_down_dark.png
img/toggle_up_dark.png
img/ui_icons.png
inc/followingWall.php
inc/footer.php
inc/header.php
inc/sentForm.php
inc/sidebar.php
inc/sidepost.php
inc/symbols.inc [new file with mode: 0644]
inc/userlist.php
index.php
js/all.js
js/browse.js
js/btns.js
js/formfunc.js
js/home.js
js/jquery.js
js/list.js
js/list_members.js
js/lists.js
js/mediaPreview.js
js/message.js
js/public.js
js/search.js
js/setting.js
js/user.js
js/userlist.js
lib/config.sample.php [new file with mode: 0644]
lib/mobile_device_detect.php
lib/oauth_lib.php
lib/timeline_format.php [new file with mode: 0644]
lib/twitese.php
lib/twitteroauth.php
lib/utility.php
list.php
list_members.php
lists.php
login.php
logout.php
message.php
oauth.php
profile.php
replies.php
retweets.php
search.php
setting.php
share.php
status.php
themes/1.css
themes/10.css
themes/11.css
themes/12.css
themes/13.css
themes/14.css
themes/15.css
themes/16.css
themes/2.css
themes/3.css
themes/4.css
themes/5.css
themes/6.css
themes/7.css
themes/8.css
themes/9.css
themes/minimal.css
user.php

diff --git a/.htaccess b/.htaccess
new file mode 100644 (file)
index 0000000..bf2a7a6
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,10 @@
+RewriteEngine On\r
+RewriteRule ^([a-zA-Z0-9_]+)$ user.php?id=$1 [L,QSA]\r
+RewriteRule ^(\d+)$ status.php?id=$1 [L,QSA]\r
+<IfModule mod_expires.c>\r
+ExpiresActive On\r
+ExpiresByType image/gif A2592000\r
+ExpiresByType image/png A2592000\r
+ExpiresByType text/css A2592000\r
+ExpiresByType application/x-javascript A2592000\r
+</IfModule>
\ No newline at end of file
index f4a4375..5358414 100644 (file)
@@ -1,11 +1,11 @@
-<?php \r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       $result = $t->makeFavorite($_POST['status_id']);\r
-       if ($result) echo 'success';\r
-       else echo 'error';\r
-?>\r
-\r
+<?php 
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       $result = $t->makeFavorite($_POST['status_id']);
+       if ($result) echo 'success';
+       else echo 'error';
+?>
+
index 5dc966d..0b9a962 100644 (file)
@@ -1,12 +1,14 @@
-<?php \r
-       include ('../lib/twitese.php');\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       $t = getTwitter();\r
-       $limit = $t->ratelimit();\r
-       $reset = intval((strtotime($limit->reset_time) - time())/60);\r
-       $remaining = $limit->remaining_hits < 0 ? 0 : $limit->remaining_hits;\r
-       header('Content-Type: text/plain');\r
-       echo "{ limit: $remaining, reset: $reset }";\r
-?>\r
+<?php 
+       include ('../lib/twitese.php');
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       $t = getTwitter();
+       $limit = $t->ratelimit();
+       $reset = intval((format_time($limit->reset_time) - time())/60);
+       $remaining = $limit->remaining_hits < 0 ? 0 : $limit->remaining_hits;
+       $hourly = $limit->hourly_limit;
+       header('Content-Type: text/html');
+       echo "<li><span style=\"color: #2276BB\">API: $remaining/$hourly</span></li>
+       <li><span style=\"color: #2276BB\">Reset in $reset min(s)</span></li>";
+?>
index ba4bab4..f9e21ae 100644 (file)
@@ -1,34 +1,34 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       if ( isset($_POST['status_id']) ) {\r
-               $result = $t->deleteStatus($_POST['status_id']);\r
-               if ($result) echo 'success';\r
-               else echo 'error';\r
-       }\r
-       if ( isset($_POST['message_id']) ) {\r
-               $result = $t->deleteDirectMessage($_POST['message_id']);\r
-               if ($result) echo 'success';\r
-               else echo 'error';\r
-       }\r
-       if ( isset($_POST['favor_id']) ) {\r
-               $result = $t->removeFavorite($_POST['favor_id']);\r
-               if ($result) echo 'success';\r
-               else echo 'error';\r
-       }\r
-       if ( isset($_POST['list_id']) ) {\r
-               $result = $t->deleteList($_POST['list_id']);\r
-               if ($result) echo 'success';\r
-               else echo 'error';\r
-       }\r
-       if ( isset($_POST['list_member']) ) {\r
-               //$user = $t->showUser($_POST['list_member']);\r
-               $result = $t->deleteListMember($_POST['id'], $_POST['list_member']);\r
-               if ($result) echo 'success';\r
-               else echo 'error';\r
-       }\r
-?>\r
-\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       if ( isset($_POST['status_id']) ) {
+               $result = $t->deleteStatus($_POST['status_id']);
+               if ($result) echo 'success';
+               else echo 'error';
+       }
+       elseif ( isset($_POST['message_id']) ) {
+               $result = $t->deleteDirectMessage($_POST['message_id']);
+               if ($result) echo 'success';
+               else echo 'error';
+       }
+       elseif ( isset($_POST['favor_id']) ) {
+               $result = $t->removeFavorite($_POST['favor_id']);
+               if ($result) echo 'success';
+               else echo 'error';
+       }
+       elseif ( isset($_POST['list_id']) ) {
+               $result = $t->deleteList($_POST['list_id']);
+               if ($result) echo 'success';
+               else echo 'error';
+       }
+       elseif ( isset($_POST['list_member']) ) {
+               //$user = $t->showUser($_POST['list_member']);
+               $result = $t->deleteListMember($_POST['id'], $_POST['list_member']);
+               if ($result) echo 'success';
+               else echo 'error';
+       }
+?>
+
index 2ce015b..b75abe3 100644 (file)
@@ -1,21 +1,21 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       $t->debug = true;\r
-       if ( isset($_POST['action']) && isset($_POST['id']) ) {\r
-               if ($_POST['action'] == 'create') {\r
-                       $result = $t->followList($_POST['id']);\r
-                       if ($result) echo 'success';\r
-                       else echo 'error';\r
-               } else if ($_POST['action'] == 'destory') {\r
-                       $result = $t->unfollowList($_POST['id']);\r
-                       if ($result) echo 'success';\r
-                       else echo 'error';\r
-               } \r
-       }\r
-       \r
-?>\r
-\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       $t->debug = true;
+       if ( isset($_POST['action']) && isset($_POST['id']) ) {
+               if ($_POST['action'] == 'create') {
+                       $result = $t->followList($_POST['id']);
+                       if ($result) echo 'success';
+                       else echo 'error';
+               } else if ($_POST['action'] == 'destory') {
+                       $result = $t->unfollowList($_POST['id']);
+                       if ($result) echo 'success';
+                       else echo 'error';
+               } 
+       }
+       
+?>
+
index acfefb9..fa25476 100644 (file)
@@ -1,32 +1,42 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       $result;\r
-       if ( isset($_POST['action']) && isset($_POST['id']) ) {\r
-               switch($_POST['action']){\r
-                       case 'create':\r
-                               $result = $t->followUser($_POST['id']);\r
-                               break;\r
-                       case 'destory':\r
-                               $result = $t->destroyUser($_POST['id']);\r
-                               break;\r
-                       case 'block':\r
-                               $result = $t->blockUser($_POST['id']);\r
-                               break;\r
-                       case 'unblock':\r
-                               $result = $t->unblockUser($_POST['id']);\r
-                               break;\r
-               }\r
-               if ($result){\r
-                       refreshProfile($t);\r
-                       echo 'success';\r
-               }else{\r
-                       echo 'error';\r
-               }\r
-       }\r
-\r
-?>\r
-\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       $result;
+       if ( isset($_POST['action']) && isset($_POST['id']) ) {
+               switch($_POST['action']){
+                       case 'create':
+                               $result = $t->followUser($_POST['id']);
+                               break;
+                       case 'destory':
+                               $result = $t->destroyUser($_POST['id']);
+                               break;
+                       case 'block':
+                               $result = $t->blockUser($_POST['id']);
+                               break;
+                       case 'unblock':
+                               $result = $t->unblockUser($_POST['id']);
+                               break;
+                       case 'report':
+                               $result = $t->reportSpam($_POST['id']);
+                               break;
+                       case 'show':
+                               $result = getRelationship($_POST['id']);
+                               if ($result) {
+                                       echo $result;
+                                       return;
+                               }
+                               break;
+               }
+               if ($result){
+                       refreshProfile($t);
+                       echo 'success';
+               }else{
+                       echo 'error';
+               }
+       }
+
+?>
+
index c9f80b0..e12ac35 100644 (file)
@@ -1,19 +1,19 @@
-<?php\r
-       include_once("../lib/twitese.php");\r
-       if(!isset($_POST['spammer'])){\r
-               echo 'error';\r
-               exit;\r
-       }\r
-       $spammer = trim($_POST['spammer']);\r
-       if($spammer == ''){\r
-               echo 'error';\r
-               exit;\r
-       }\r
-       $t = getTwitter();\r
-       $result = $t->reportSpam($spammer);\r
-       if(isset($result->screen_name)){\r
-               echo 'success';\r
-       }else{\r
-               echo 'error';\r
-       }\r
-?>\r
+<?php
+       include_once("../lib/twitese.php");
+       if(!isset($_POST['spammer'])){
+               echo 'error';
+               exit;
+       }
+       $spammer = trim($_POST['spammer']);
+       if($spammer == ''){
+               echo 'error';
+               exit;
+       }
+       $t = getTwitter();
+       $result = $t->reportSpam($spammer);
+       if(isset($result->screen_name)){
+               echo 'success';
+       }else{
+               echo 'error';
+       }
+?>
index 79f53a7..6099d33 100644 (file)
@@ -1,24 +1,24 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include('../lib/twitese.php');\r
-       include('timeline_format.php');\r
-       $t = getTwitter();\r
-       if(isset($_POST['status_id'])){\r
-               $id = trim($_POST['status_id']);\r
-               if($id == ''){\r
-                       return 'empty';\r
-               }\r
-               $result = $t->retweet($id);\r
-               if($result){\r
-                       if($result->errors){\r
-                               echo 'duplicated';\r
-                       }else{\r
-                               echo $result->id;\r
-                       }\r
-               }else{\r
-                       echo "error";\r
-               }\r
-       }\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include('../lib/twitese.php');
+       include('timeline_format.php');
+       $t = getTwitter();
+       if(isset($_POST['status_id'])){
+               $id = trim($_POST['status_id']);
+               if($id == ''){
+                       return 'empty';
+               }
+               $result = $t->retweet($id);
+               if($result){
+                       if($result->errors){
+                               echo 'duplicated';
+                       }else{
+                               echo $result->id_str;
+                       }
+               }else{
+                       echo "error";
+               }
+       }
+?>
diff --git a/ajax/setTip.php b/ajax/setTip.php
new file mode 100644 (file)
index 0000000..2ea497f
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       if(trim(SECURE_KEY) == "") {
+               echo 'unsecured';
+       } else {
+               //header('location: ../pr.php?pr='.urlencode(print_r($_POST,true)));
+               if(isset($_POST)){
+                       if($_POST['reset'] == 'true') {
+                               delCookie('Tip_Title');
+                               delCookie('Tip_Content');
+                               delCookie('Tip_More');
+                               echo 'reset';exit();
+                       }
+                       $time = $_SERVER['REQUEST_TIME'] + 3600*24*365;
+                       setEncryptCookie('Tip_Title',$_POST['Tip_Title'],$time);
+                       setEncryptCookie('Tip_Content',$_POST['Tip_Content'],$time);
+                       setEncryptCookie('Tip_More',$_POST['Tip_More'],$time);
+                       echo 'success';
+               } else {
+                       echo 'error';
+               }
+       }
+?>
\ No newline at end of file
index 9579adf..541673b 100644 (file)
@@ -1,24 +1,24 @@
-<?php\r
-       include_once('../lib/twitese.php');\r
-       if(!isset($_POST['text'])){\r
-               echo 'error';\r
-               exit;\r
-       }\r
-       $text = $_POST['text'];\r
-       if(strlen($text) == 0){\r
-               echo 'error';\r
-               exit;\r
-       }\r
-       $shorten_api = 'http://tweetshrink.com/shrink?format=xml&text=';\r
-       $request = $shorten_api.rawurlencode($text);\r
-       try{\r
-               $obj = objectifyXml(processCurl($request));\r
-               if (isset($obj->text)){\r
-                       echo $obj->text;\r
-               }else{\r
-                       echo 'error';\r
-               }\r
-       }catch(Exception $e){\r
-               echo 'error';\r
-       }\r
-?>\r
+<?php
+       include_once('../lib/twitese.php');
+       if(!isset($_POST['text'])){
+               echo 'error';
+               exit;
+       }
+       $text = $_POST['text'];
+       if(strlen($text) == 0){
+               echo 'error';
+               exit;
+       }
+       $shorten_api = 'http://tweetshrink.com/shrink?format=xml&text=';
+       $request = $shorten_api.rawurlencode($text);
+       try{
+               $obj = objectifyXml(processCurl($request));
+               if (isset($obj->text)){
+                       echo $obj->text;
+               }else{
+                       echo 'error';
+               }
+       }catch(Exception $e){
+               echo 'error';
+       }
+?>
index 33c9d33..1f35b3a 100644 (file)
@@ -1,32 +1,13 @@
-<?php\r
-       /**\r
-        * @Authot leeio(http://leeiio.me)\r
-        * @Version 0.1\r
-        * @Description:转换地址为短地址\r
-        */\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       $urls = array();\r
-       $get_long_urls = array();\r
-       $get_api = 'http://zi.mu/api.php?format=simple&action=shorturl&url=';\r
-       //$get_api = 'http://is.gd/api.php?longurl=';\r
-       //$get_api = 'http://aa.cx/api.php?url=';\r
-       //http://api.bit.ly/shorten?version=2.0.1&login=disinfeqt&apiKey=R_19b002e03a72522c492b453238be5f82&longUrl=\r
-       $long_urls = substr($_POST['long_urls'],0,-1);\r
-       $urls = explode("|",$long_urls);\r
-\r
-       $long_urls_len = count($urls);\r
-\r
-       for($i=0;$i<$long_urls_len;$i++){\r
-               $curl = curl_init();\r
-               $url = $get_api.rawurlencode($urls[$i]);\r
-               curl_setopt($curl, CURLOPT_URL, $url);\r
-               curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);\r
-               $data = curl_exec($curl);\r
-               curl_close($curl);\r
-\r
-               $short_urls .= $data.'|'.$urls[$i].'^';\r
-       }\r
-       echo substr($short_urls,0,-1);\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include_once('../lib/twitese.php');
+       $long_urls = array();
+       $long_urls = explode("|",substr($_POST['long_urls'],0,-1));
+       $short_urls ='';
+       foreach($long_urls as $url){
+               $short_urls .= urlshorten($url).'|'.$url.'^';
+       }
+       echo substr($short_urls,0,-1);
+?>
index c4fa5ed..5b8a1d0 100644 (file)
@@ -1,58 +1,58 @@
-<?php\r
-       // ver 0.2 by @Chris_Ys\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include_once("../lib/twitese.php");\r
-\r
-       if(isset($_GET['id']) && isset($_GET['uid'])){\r
-               $t = getTwitter();\r
-               $user_id = $_GET['uid'];\r
-               $reply_to_id = "";\r
-               $html = '<div class="ajax_form round">';\r
-               $html .= "<a class=\"close\" title=\"Close\" onclick=\"$(this).parent().slideToggle(300);\" href=\"javascript:void(0);\"></a>";\r
-               $html .= '<ol>';\r
-               $html .= formatConversation($_GET['id']);\r
-               $html .= '</ol></div>';\r
-               echo $html;\r
-       }else{\r
-               echo 'error';\r
-       }\r
-\r
-       function formatConversation($status_id){\r
-               GLOBAL $t;\r
-               GLOBAL $user_id;\r
-               GLOBAL $reply_to_id;\r
-               $status = $t->showStatus($status_id);\r
-               if(!isset($status->user)){\r
-                       return "";\r
-               }\r
-               $user = $status->user;\r
-               if($reply_to_id == ""){\r
-                       $reply_to_id = $user->id;\r
-               }\r
-               $date = formatDate($status->created_at);\r
-               $text = formatText($status->text);\r
-               $end = (!isset($status->in_reply_to_user_id) || ($user_id != $status->in_reply_to_user_id && $reply_to_id != $status->in_reply_to_user_id));\r
-               $html = '<li class="round">\r
-                       <span class="status_author">\r
-                       <a href="user.php?id='.$user->screen_name.'" target="_blank"><img src="'.getAvatar($user->profile_image_url).'" style="height: 30px; width: 30px;"></a>\r
-                       </span>\r
-                       <span class="status_body">\r
-                       <span class="status_id">'.$status_id.'</span>\r
-                       <span class="status_word" style="font-size: 12px;"><a class="user_name" href="user.php?id='.$user->screen_name.'">'.$user->screen_name.'</a> <span class="tweet">'.$text.'</span></span>\r
-                       <span class="status_info" style="font-size: 11px; margin: 0px;">';\r
-               if($end && isset($status->in_reply_to_user_id)){\r
-                       $html .= '<span class="in_reply_to"> <a class="ajax_reply" href="ajax/status.php?id='.$status->in_reply_to_status_id.'&uid='.$user->id.'">in reply to '.$status->in_reply_to_screen_name.'</a></span>';\r
-               }\r
-               $html .= '<span class="source">from '.$status->source.'</span>\r
-                       <span class="date"><a href="status.php?id='.$status_id.'" target="_blank">'.$date.'</a></span>\r
-                       </span>\r
-                       </span>\r
-                       </li>';\r
-               if(!$end){\r
-                       $html .= formatConversation($status->in_reply_to_status_id);\r
-               }\r
-               return $html;\r
-       }\r
-?>\r
+<?php
+       // ver 0.2 by @Chris_Ys
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include_once("../lib/twitese.php");
+
+       if(isset($_GET['id']) && isset($_GET['uid'])){
+               $t = getTwitter();
+               $user_id = $_GET['uid'];
+               $reply_to_id = "";
+               $html = '<div class="ajax_form round">';
+               $html .= "<a class=\"close\" title=\"Close\" onclick=\"$(this).parent().slideToggle(300);\" href=\"#\"></a>";
+               $html .= '<ol>';
+               $html .= formatConversation($_GET['id']);
+               $html .= '</ol></div>';
+               echo $html;
+       }else{
+               echo 'error';
+       }
+
+       function formatConversation($status_id){
+               GLOBAL $t;
+               GLOBAL $user_id;
+               GLOBAL $reply_to_id;
+               $status = $t->showStatus($status_id);
+               if(!isset($status->user)){
+                       return "";
+               }
+               $user = $status->user;
+               if($reply_to_id == ""){
+                       $reply_to_id = $user->id;
+               }
+               $date = format_time($status->created_at);
+               $text = formatEntities($status->entities,$status->text);
+               $end = (!isset($status->in_reply_to_user_id) || ($user_id != $status->in_reply_to_user_id && $reply_to_id != $status->in_reply_to_user_id));
+               $html = '<li class="round">
+                       <span class="status_author">
+                       <a href="user.php?id='.$user->screen_name.'" target="_blank"><img src="'.getAvatar($user->profile_image_url).'" style="height: 30px; width: 30px;"></a>
+                       </span>
+                       <span class="status_body">
+                       <span class="status_id">'.$status_id.'</span>
+                       <span class="status_word" style="font-size: 12px;"><a class="user_name" href="user.php?id='.$user->screen_name.'">'.$user->screen_name.'</a> <span class="tweet">'.$text.'</span></span>
+                       <span class="status_info" style="font-size: 11px; margin: 0px;">';
+               if($end && isset($status->in_reply_to_user_id)){
+                       $html .= '<span class="in_reply_to"> <a class="ajax_reply" href="ajax/status.php?id='.$status->in_reply_to_status_id_str.'&uid='.$user->id.'">in reply to '.$status->in_reply_to_screen_name.'</a></span>';
+               }
+               $html .= '<span class="source">via '.$status->source.'</span>
+                       <span class="date"><a href="status.php?id='.$status->id_str.'" id="'.$date.'" target="_blank">'.date('Y-m-d H:i:s', $date).'</a></span>
+                       </span>
+                       </span>
+                       </li>';
+               if(!$end){
+                       $html .= formatConversation($status->in_reply_to_status_id_str);
+               }
+               return $html;
+       }
+?>
index 5e4a079..e9a8308 100644 (file)
@@ -1,35 +1,41 @@
-<?php \r
-       include ('../lib/twitese.php');\r
-       include_once('timeline_format.php');\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       $t = getTwitter();\r
-       if ( isset($_POST['status']) && isset($_POST['in_reply_to']) ) {\r
-               if (trim($_POST['status']) == '') {\r
-                       echo 'empty';\r
-                       exit();\r
-               }\r
-               $result = $t->update($_POST['status'], $_POST['in_reply_to']);\r
-               if(isset($result->error)){\r
-                       if(strpos($result->error, 'duplicate') > 0){\r
-                               $tmp = $t->userTimeline();\r
-                               $result = $tmp[0];\r
-                       }\r
-               }\r
-               if(isset($result->user)){\r
-                       $user = $result->user;\r
-                       $time = time()+3600*24*365;\r
-                       if ($user) {\r
-                               setcookie('friends_count', $user->friends_count, $time, '/');\r
-                               setcookie('statuses_count', $user->statuses_count, $time, '/');\r
-                               setcookie('followers_count', $user->followers_count, $time, '/');\r
-                               setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');\r
-                               setcookie('name', $user->name, $time, '/');\r
-                       }\r
-                       echo format_timeline($result, $t->username, true);\r
-               }else{\r
-                       echo 'error';\r
-               }\r
-       }\r
-?>\r
+<?php 
+       include ('../lib/twitese.php');
+       include_once('../lib/timeline_format.php');
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       $t = getTwitter();
+       if ( isset($_POST['status']) && isset($_POST['in_reply_to']) ) {
+               if (trim($_POST['status']) == '') {
+                       echo 'empty';
+                       exit();
+               }
+               if (get_magic_quotes_gpc()) {
+                       $result = $t->update(stripslashes($_POST['status']), $_POST['in_reply_to']);
+               } else {
+                       $result = $t->update($_POST['status'], $_POST['in_reply_to']);
+               }
+               if(isset($result->error)){
+                       if(strpos($result->error, 'duplicate') > 0){
+                               $tmp = $t->userTimeline();
+                               $result = $tmp[0];
+                               echo 'error';
+                       }
+               }
+               if(isset($result->user)){
+                       $user = $result->user;
+                       $time = $_SERVER['REQUEST_TIME']+3600*24*365;
+                       if ($user) {
+                               setcookie('friends_count', $user->friends_count, $time, '/');
+                               setcookie('statuses_count', $user->statuses_count, $time, '/');
+                               setcookie('followers_count', $user->followers_count, $time, '/');
+                               setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');
+                               setcookie('name', $user->screen_name, $time, '/');
+                               setcookie('listed_count', $user->listed_count, $time, '/');
+                       }
+                       echo format_timeline($result, $t->username, true);
+               }else{
+                       echo 'error';
+               }
+       }
+?>
index 8465342..4c2eb74 100644 (file)
@@ -1,19 +1,19 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include('../lib/twitese.php');\r
-\r
-       $t = getTwitter();\r
-       $MAX_COUNT = 36;\r
-       $friends = $t->friends(false, false, $MAX_COUNT)->users;\r
-       $html = '';\r
-       foreach($friends as $friend){\r
-               $html .= '<span class="vcard">\r
-                       <a class="url" title="'.$friend->name.'" rel="contact" href="../user.php?id='.$friend->screen_name.'">\r
-                       <img class="photo fn" width="24" height="24" src="'.getAvatar($friend->profile_image_url).'" alt="'.$friend->name.'" />\r
-                       </a>\r
-                       </span>';\r
-       }\r
-       echo $html;\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include('../lib/twitese.php');
+
+       $t = getTwitter();
+       $MAX_COUNT = 36;
+       $friends = $t->friends(false, false, $MAX_COUNT)->users;
+       $html = '';
+       foreach($friends as $friend){
+               $html .= '<span class="vcard">
+                       <a class="url" title="'.$friend->name.'" rel="contact" href="../user.php?id='.$friend->screen_name.'">
+                       <img class="photo fn" width="24" height="24" src="'.getAvatar($friend->profile_image_url).'" alt="'.$friend->name.'" />
+                       </a>
+                       </span>';
+       }
+       echo $html;
+?>
index 63677c7..bfa7941 100644 (file)
@@ -1,59 +1,59 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       if ( isset($_GET['since_id']) && isset($_GET['id'])) {\r
-\r
-               $statuses = $t->listStatus($_GET['id'], false, $_GET['since_id']);\r
-\r
-               $empty = count($statuses) == 0? true: false;\r
-\r
-               if ($empty) {\r
-                       echo "empty";\r
-               } else {\r
-                       $count = 0;\r
-                       foreach ($statuses as $status) {\r
-                               $user = $status->user;\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-\r
-                               if(strpos("@$t->username", $text) > -1) {\r
-                                       if (++$count == count($statuses)) \r
-                                               $output = "<li style=\"background-color:#E8FECD;border-bottom:5px solid #CCCCCC\">";\r
-                                       else \r
-                                               $output = "<li style=\"background-color:#E8FECD\">";\r
-\r
-                               }       else {\r
-                                       $output = "<li>";\r
-                               }\r
-                               $output .= "<span class=\"status_author\">\r
-                                       <a href=\"user.php?id=$user->screen_name\" target=\"_blank\"><img src=\"".getAvatar($user->profile_image_url)."\" title=\"$user->screen_name\" /></a>\r
-                                       </span>\r
-                                       <span class=\"status_body\">\r
-                                       <span class=\"status_id\">$status->id </span>\r
-                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$user->screen_name\">$user->screen_name</a><span class=\"tweet\"> $text </span></span>";\r
-                               if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";   \r
-                               $output .= "<span class=\"actions\">\r
-                                       <a class=\"replie_btn\" title=\"Reply\" href=\"a_reply.php?id=$status->id\">回复</a>\r
-                                       <a class=\"rt_btn\" title=\"Retweet\" href=\"a_rt.php?id=$status->id\">回推</a>\r
-                                       <a class=\"favor_btn\" title=\"Favorite\" href=\"a_favor.php?id=$status->id\">收藏</a>";\r
-                               if ($user->screen_name == $t->username) $output .= "<a class=\"delete_btn\" title=\"Delete\" href=\"a_del.php?id=$status->id&t=s\">删除</a>";\r
-                               $output .= "</span><span class=\"status_info\">";\r
-                               if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id&uid=$user->id \">in reply to $status->in_reply_to_screen_name</a></span>";\r
-                               $output .= "<span class=\"source\">from $status->source</span>\r
-                                       <span class=\"date\"><a href=\"status.php?id=$status->id\" target=\"_blank\">$date</a></span>\r
-                                       </span>\r
-                                       </span>\r
-                                       </li>";\r
-                               $html .= '<div class="new"></div>';\r
-                               echo $output;\r
-                       }\r
-               }\r
-\r
-       } else {\r
-               echo 'error';\r
-       }\r
-\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       if ( isset($_GET['since_id']) && isset($_GET['id'])) {
+
+               $statuses = $t->listStatus($_GET['id'], false, $_GET['since_id']);
+
+               $empty = count($statuses) == 0? true: false;
+
+               if ($empty) {
+                       echo "empty";
+               } else {
+                       $count = 0;
+                       foreach ($statuses as $status) {
+                               
+                               $user = $status->user;
+                               $date = $status->created_at;
+                               $text = formatEntities($status->entities,$status->text);
+
+                               if(strpos("@$t->username", $text) > -1) {
+                                       if (++$count == count($statuses)) 
+                                               $output = "<li style=\"background-color:#E8FECD;border-bottom:5px solid #CCC\">";
+                                       else 
+                                               $output = "<li style=\"background-color:#E8FECD\">";
+                               }       else {
+                                       $output = "<li>";
+                               }
+                               $output .= "<span class=\"status_author\">
+                                       <a href=\"user.php?id=$user->screen_name\" target=\"_blank\"><img src=\"".getAvatar($user->profile_image_url)."\" title=\"$user->screen_name\" /></a>
+                                       </span>
+                                       <span class=\"status_body\">
+                                       <span class=\"status_id\">$status->id_str </span>
+                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$user->screen_name\">$user->screen_name</a><span class=\"tweet\"> $text </span></span>
+                                       <span class=\"actions\">
+                                       <a class=\"replie_btn\" title=\"Reply\" href=\"a_reply.php?id=$status->id_str\">Reply</a>
+                                       <a class=\"rt_btn\" title=\"Retweet\" href=\"a_rt.php?id=$status->id_str\">RT</a>
+                                       <a class=\"favor_btn\" title=\"Favorite\" href=\"a_favor.php?id=$status->id_str\">Favor</a>";
+                               if ($user->screen_name == $t->username) $output .= "<a class=\"delete_btn\" title=\"Delete\" href=\"a_del.php?id=$status->id_str&t=s\">删除</a>";
+                               $output .= "</span><span class=\"status_info\">";
+                               if ($status->in_reply_to_status_id_str) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id_str&uid=$user->id \">in reply to $status->in_reply_to_screen_name</a></span>";
+                               $output .= "<span class=\"source\">via $status->source</span>
+                                       <span class=\"date\"><a href=\"status.php?id=$status->id_str\" target=\"_blank\">$date</a></span>
+                                       </span>
+                                       </span>
+                                       </li>";
+                               $html .= '<div class="new"></div>';
+                               echo $output;
+                               */
+                       }
+               }
+
+       } else {
+               echo 'error';
+       }
+
+?>
index c3b4f0e..632720d 100644 (file)
@@ -1,44 +1,27 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       include_once('timeline_format.php');\r
-       $t = getTwitter();\r
-       if ( isset($_GET['since_id']) ) {\r
-\r
-               $messages = $t->directMessages(false, $_GET['since_id']);\r
-\r
-               $empty = count($messages) == 0? true: false;\r
-\r
-               if ($empty) {\r
-                       echo "empty";\r
-               } else {\r
-                       foreach ($messages as $message) {\r
-                               $name = $message->sender_screen_name;\r
-                               $imgurl = getAvatar($message->sender->profile_image_url);\r
-                               $date = formatDate($message->created_at);\r
-                               $text = formatText($message->text);\r
-                               $output = "<li>";\r
-                               $output .= "<span class=\"status_author\">".initShortcutMenu($message->sender)."\r
-                                       <a href=\"user.php?id=$name\" target=\"_blank\"><img src=\"$imgurl\" title=\"$name\" /></a>\r
-                                       </span>\r
-                                       <span class=\"status_body\">\r
-                                       <span class=\"status_id\">$message->id </span>\r
-                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$name\">$name</a> $text </span>";\r
-                               if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";\r
-                               $output .= "<span class=\"actions\"><a class=\"msg_replie_btn\" href=\"message.php?id=$name\">Reply</a><a class=\"msg_delete_btn\" href=\"a_del.php?id=$message->id&t=m\">Delete</a></span>\r
-                                       <span class=\"status_info\">\r
-                                       <span class=\"date\">$date</span>\r
-                                       </span>\r
-                                       </span>\r
-                                       </li>";\r
-                       }\r
-                       $output .= "<div class=\"new\"></div>";\r
-                       echo $output;\r
-               }\r
-       } else {\r
-               echo 'error';\r
-       }\r
-\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       include_once('../lib/timeline_format.php');
+       $t = getTwitter();
+       if ( isset($_GET['since_id']) ) {
+
+               $messages = $t->directMessages(false, $_GET['since_id']);
+               $count = count($messages);
+               if ($count == 0) {
+                       echo "empty";
+               } else {
+                       $output = '';
+                       foreach ($messages as $message) {
+                               $output .= format_message($message);
+                       }
+                       $tweetCounter = "<span class=\"tweetcount\">$count</span> unread message(s)";
+                       $output .= '<div class="new">'.$tweetCounter.'</div>';
+                       echo $output;
+               }
+       } else {
+               echo 'error';
+       }
+
+?>
diff --git a/ajax/updateProfile.php b/ajax/updateProfile.php
new file mode 100644 (file)
index 0000000..5138dc1
--- /dev/null
@@ -0,0 +1,29 @@
+<?php 
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       if (isset($_POST)) {
+               $user = $t->updateProfile($_POST);
+       } else {
+               $user = $t->veverify();
+       }
+       if ($t->http_code == 200) {
+               $time = $_SERVER['REQUEST_TIME']+3600*24*365;
+               setcookie('friends_count', $user->friends_count, $time, '/');
+               setcookie('statuses_count', $user->statuses_count, $time, '/');
+               setcookie('followers_count', $user->followers_count, $time, '/');
+               setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');
+               setcookie('name', $user->screen_name, $time, '/');
+               setcookie('listed_count', $user->listed_count, $time, '/');
+               if($_GET['extra'] == 'bg') {
+                       setcookie('Bgcolor', '#'.$user->profile_background_color,$time,'/');
+                       setcookie('Bgimage', $user->profile_background_image_url,$time,'/');
+                       setcookie('Bgrepeat',$user->profile_background_tile ? "repeat" : "no-repeat",$time,'/');
+               }
+               echo '{"result": "success"}';
+       } else {
+               echo '{"result": "error"}';
+       }
+?>
\ No newline at end of file
index 034d054..9083748 100644 (file)
@@ -1,29 +1,28 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       include_once('timeline_format.php');\r
-       $t = getTwitter();\r
-       if ( isset($_GET['since_id']) ) {\r
-\r
-               $statuses = $t->replies(false, $_GET['since_id']);\r
-\r
-               $empty = count($statuses) == 0? true: false;\r
-\r
-               if ($empty) {\r
-                       echo "empty";\r
-               } else {\r
-                       $output = "";\r
-                       foreach($statuses as $status) {\r
-                               $output .= format_timeline($status, $t->username);\r
-                       }\r
-                       $output .= '<div class="new"></div>';\r
-                       echo $output;\r
-               }\r
-\r
-       } else {\r
-               echo 'error';\r
-       }\r
-\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       include_once('../lib/timeline_format.php');
+       $t = getTwitter();
+       if ( isset($_GET['since_id']) ) {
+
+               $statuses = $t->replies(false, $_GET['since_id']);
+               $count = count($statuses);
+               if ($count == 0) {
+                       echo "empty";
+               } else {
+                       $output = "";
+                       foreach($statuses as $status) {
+                               $output .= format_timeline($status, $t->username);
+                       }
+                       $tweetCounter = "<span class=\"tweetcount\">$count</span> unread mention(s)";
+                       $output .= '<div class="new">'.$tweetCounter.'</div>';
+                       echo $output;
+               }
+
+       } else {
+               echo 'error';
+       }
+
+?>
index 94a81ab..397a200 100644 (file)
@@ -1,64 +1,49 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       function getTimeline(){\r
-               include ('../lib/twitese.php');\r
-               include('timeline_format.php');\r
-               $t = getTwitter();\r
-               if ( isset($_GET['since_id']) ) {\r
-\r
-                       $statuses = $t->friendsTimeline(false, $_GET['since_id']);\r
-                       $retweetes = $t->retweeted_to_me(false, false, $_GET['since_id']);\r
-                       if(count($retweetes) > 0){\r
-                               $statuses = sort_timeline($statuses, $retweetes);\r
-                       }\r
-\r
-                       $count = count($statuses);\r
-                       $html = "";\r
-                       if ($count <= 0) {\r
-                               echo "empty";\r
-                       }else{\r
-                               foreach ($statuses as $status) {\r
-                                       if($status->id < $_GET['since_id']){\r
-                                               break;\r
-                                       }\r
-                                       if(($status->user->screen_name == $t->username || $t->username == $status->retweeted_status->user->screen_name) && (strpos($status->source, "api") !== false || strpos($status->source, "rabr") !== false)){\r
-                                               $count -= 1;\r
-                                               continue;\r
-                                       }\r
-                                       if(isset($status->retweeted_status)){\r
-                                               $html .= format_retweet($status);\r
-                                       }else{\r
-                                               $html .= format_timeline($status, $t->username);\r
-                                       }\r
-                               }\r
-                               if($count == 1){\r
-                                       $tweetCounter = "$count unread tweet";\r
-                               }else{\r
-                                       $tweetCounter = "$count unread tweets";\r
-                               }\r
-                               $html .= '<div class="new">'.$tweetCounter.'</div>';\r
-                               echo $html;\r
-                       }\r
-               } else {\r
-                       echo 'error';\r
-               }\r
-       }\r
-\r
-       // force exit timeout script\r
-       //$deadline = time() + MAX_EXECUTION_TIME;\r
-       /*\r
-       function checkTimeout(){\r
-               if(time() < $GLOBALS['timeline']){\r
-                       return;\r
-               }\r
-               echo "error";\r
-               exit;\r
-       }\r
-       register_tick_function("checkTimeout");\r
-       declare(ticks = 1){\r
-        */\r
-       getTimeline();\r
-       //}\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       include('../lib/timeline_format.php');
+       $t = getTwitter();
+       if ( isset($_GET['since_id']) ) {
+               $statuses = $t->homeTimeline(false, $_GET['since_id']);
+               $count = count($statuses);
+               $html = "";
+               if ($count <= 0) {
+                       echo "empty";
+               }
+               else
+               {
+                       foreach ($statuses as $status)
+                       {
+                               if($status->id_str < $_GET['since_id'])
+                               {
+                                       break;
+                               }
+                               
+                               if(($status->user->screen_name == $t->username ) && (strpos($status->source, "api") !== false || strpos($status->source, "embr") !== false)){
+                                       $count -= 1;
+                                       continue;
+                               }
+                               elseif ( isset($status->retweeted_status) )
+                               {
+                                       if ( ($t->username == $status->retweeted_status->user->screen_name) && (strpos($status->source, "api") != false || strpos($status->source, "embr") !== false) )
+                                       {
+                                               $count -= 1;
+                                               continue;
+                                       }
+                               }
+                               if(isset($status->retweeted_status)){
+                                       $html .= format_retweet($status);
+                               }else{
+                                       $html .= format_timeline($status, $t->username);
+                               }
+                       }
+                       $tweetCounter = "<span class=\"tweetcount\">$count</span> unread tweet(s)";
+                       $html .= '<div class="new">'.$tweetCounter.'</div>';
+                       echo $html;
+               }
+       } else {
+               echo 'error';
+       }
+?>
index 083133d..f3d991c 100644 (file)
@@ -1,23 +1,35 @@
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('../lib/twitese.php');\r
-       $t = getTwitter();\r
-       $trends = $t->trends();\r
-\r
-       if (count($trends) == 0) {\r
-               echo "empty";\r
-       }else{\r
-               $html = '';\r
-               foreach ($trends->trends as $trend) {\r
-                       $li = '\r
-                               <li>\r
-                               <a href="search.php?q='.rawurlencode($trend->name).'">'.$trend->name.'</a>\r
-                               </li>\r
-                               ';\r
-                       $html .= $li;\r
-               }\r
-               echo $html;\r
-       }\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('../lib/twitese.php');
+       $t = getTwitter();
+       if (isset($_COOKIE['woeid'])) {
+               $woeid = getEncryptCookie('woeid');
+       } else {
+               $tr = $t->trends_closest($_GET['lat'], $_GET['long']);
+               if (isset($tr->woeid)) {
+                       $woeid = $tr[0]->woeid;
+               } else {
+                       $woeid = 1;
+               }
+               setEncryptCookie('woeid', $woeid, $_SERVER['REQUEST_TIME'] + 3600*24);
+       }
+       $tr = $t->trends_place($woeid);
+       $trends = $tr[0]->trends;
+       
+       if (count($trends) == 0) {
+               echo "empty";
+       }else{
+               $html = '';
+               foreach ($trends as $trend) {
+                       $li = '
+                               <li>
+                               <a href="search.php?q='.$trend->query.'">'.$trend->name.'</a>
+                               </li>
+                               ';
+                       $html .= $li;
+               }
+               echo $html;
+       }
+?>
diff --git a/ajax/uploadImage.php b/ajax/uploadImage.php
new file mode 100644 (file)
index 0000000..002b4a2
--- /dev/null
@@ -0,0 +1,29 @@
+<?php\r
+       if(!isset($_SESSION)){\r
+               session_start();\r
+       }\r
+       include ('../lib/twitese.php');\r
+       if (isset($_FILES['image'])) {\r
+               $image = "@{$_FILES['image']['tmp_name']};type={$_FILES['image']['type']};filename={$_FILES['image']['name']}";\r
+               switch($_GET['do']) {\r
+                       case 'image':\r
+                       $result = imageUpload($image);\r
+                       if (isset($result->url)) {\r
+                               echo '{"result": "success" , "url" : "' . $result->url . '"}';\r
+                       } else {\r
+                               echo '{"result": "error"}';\r
+                       }\r
+                       break;\r
+                       case 'profile':\r
+                       $t = getTwitter();\r
+                       $skip_status = $_POST['skip_status'];\r
+                       $result = $t->updateProfileImage($image,$skip_status);\r
+                       if ($t->http_code == 200) {\r
+                               echo '{"result": "success"}';\r
+                       } else {\r
+                               echo '{"result": "error"}';\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+?>\r
diff --git a/all.php b/all.php
index 4119075..ce21752 100644 (file)
--- a/all.php
+++ b/all.php
 <?php \r
        include_once('lib/twitese.php');\r
-       $title = "Updates";\r
+       $title = 'Updates';\r
        include_once('inc/header.php');\r
-       include_once('ajax/timeline_format.php');\r
+       include_once('lib/timeline_format.php');\r
        if (!loginStatus()) header('location: login.php');\r
-\r
 ?>\r
-<script type="text/javascript" src="js/all.js?ver=2010041101"></script>\r
-<script type="text/javascript" src="js/ajaxfileupload.js"></script>\r
-<script type="text/javascript" src="js/formfunc.js?ver=2010041501"></script>\r
-\r
 <div id="statuses" class="column round-left">\r
-\r
-       <h2>What's happening?</h2>\r
-       <span id="tip"><b>140</b></span>\r
-\r
-       <form enctype="multipart/form-data" action="ajax/uploadPhoto.php" method="post" id="photoArea">\r
-       <span style="font-weight: bold;">Upload Image</span>\r
-       <p>Powered by Img.ly</p>\r
-       <input type="file" name="image" id="imageFile"/> \r
-       <input type="submit" id="imageUploadSubmit" class="btn" value="Upload"/>\r
-       <a href="#" onclick="$('#photoArea').slideToggle(300)" title="Close" class="close"></a>\r
-       </form>\r
-\r
-<form id="filterArea">\r
-<span style="font-weight: bold;">Filter Timeline</span>\r
-<p>Seperate keywords with comma. [eg: twitter,hello] Also usernames <b>without</b> @</p> \r
-<input type="text" id="iptFilter" name="iptFilter" class="filter_input"/>\r
-<input type="submit" style="vertical-align: top; padding: 5px; margin: 9px 3px 0pt 6px;" id="filterSubmit" class="btn" value="Update">\r
-<input type="submit" style="padding: 5px; vertical-align: top; margin-top: 9px;" id="filterReset" class="btn" value="Reset">\r
-<input type="submit" style="padding: 5px; vertical-align: top; margin: 9px 0pt 0pt 3px;" id="filterHide" class="btn" value="Hide @">\r
-<a class="close" title="Close" onclick="$('#filterArea').slideToggle(300)" href="#"></a>\r
-</form>\r
-\r
-<form id="symArea">\r
-<div id="symbols">\r
-<?php include ('inc/symbols.php');?>\r
-</div>\r
-<a class="close" title="Close" onclick="$('#symArea').slideToggle(300)" href="#"></a>\r
-</form>\r
-\r
-<form id="transArea">\r
-<span style="font-weight: bold; display: block; margin-bottom: 5px;">Translation Settings</span>\r
-<p>Translate tweets into\r
-<select name="langs" style="border: 1px solid rgb(170, 170, 170); padding: 1px 2px;">\r
-<option value="ar">Arabic</option>\r
-<option value="zh-CN">简体中文</option>\r
-<option value="zh-TW">繁體中文</option>\r
-<option value="da">Danish</option>\r
-<option value="nl">Dutch</option>\r
-<option value="en">English</option>\r
-<option value="fi">Finnish</option>\r
-<option value="fr">French</option>\r
-<option value="de">German</option>\r
-<option value="el">Greek</option>\r
-<option value="hu">Hungarian</option>\r
-<option value="is">Icelandic</option>\r
-<option value="it">Italian</option>\r
-<option value="ja">Japanese</option>\r
-<option value="ko">Korean</option>\r
-<option value="lt">Lithuanian</option>\r
-<option value="no">Norwegian</option>\r
-<option value="pl">Polish</option>\r
-<option value="pt">Portuguese</option>\r
-<option value="ru">Russian</option>\r
-<option value="es">Spanish</option>\r
-<option value="sv">Swedish</option>\r
-<option value="th">Thai</option>\r
-</select>\r
-</p>\r
-<p>Translate my tweets into <select name="myLangs" style="border: 1px solid rgb(170, 170, 170); margin-top: 5px; padding: 1px 2px;">\r
-<option value="ar">Arabic</option>\r
-<option value="zh-CN">简体中文</option>\r
-<option value="zh-TW">繁體中文</option>\r
-<option value="da">Danish</option>\r
-<option value="nl">Dutch</option>\r
-<option value="en">English</option>\r
-<option value="fi">Finnish</option>\r
-<option value="fr">French</option>\r
-<option value="de">German</option>\r
-<option value="el">Greek</option>\r
-<option value="hu">Hungarian</option>\r
-<option value="is">Icelandic</option>\r
-<option value="it">Italian</option>\r
-<option value="ja">Japanese</option>\r
-<option value="ko">Korean</option>\r
-<option value="lt">Lithuanian</option>\r
-<option value="no">Norwegian</option>\r
-<option value="pl">Polish</option>\r
-<option value="pt">Portuguese</option>\r
-<option value="ru">Russian</option>\r
-<option value="es">Spanish</option>\r
-<option value="sv">Swedish</option>\r
-<option value="th">Thai</option>\r
-</select>\r
-<input type="button" value="Translate" class="btn" id="translateMy" style="vertical-align: middle; padding: 3px 8px; margin-top: -3px;">\r
-</p>\r
-<a href="#" onclick="$('#transArea').slideToggle(300)" title="Close" style="right:25px;top:5px;" class="close"></a>\r
-</form>\r
-\r
-       <form action="index.php" method="post">\r
-               <a id="transRecover">Restore</a>\r
-               <textarea name="status" id="textbox"></textarea>\r
-               <input type="hidden" id="in_reply_to" name="in_reply_to" value="0" />\r
-\r
-       <div id="func_set">\r
-       \r
-       <a class="func_btn" href="javascript:shortUrlDisplay();" title="Shorten URL" style="background-position:-238px -113px">Shorten URL</a>\r
-       \r
-       <a class="func_btn" href="javascript:shortenTweet();" title="Shorten Tweet" style="background-position:-222px -48px;">Shorten Tweet</a>\r
-       \r
-       <a id="transBtn" title="Translation Settings" class="func_btn" style="background-position:-110px -80px;">Translate</a>\r
-       \r
-<?php \r
-       if(!isOAuth()){\r
-               echo '<a title="Upload Image" id="photoBtn" class="func_btn" style="background-position: -207px -128px;">Image</a>';\r
-       }\r
-?>\r
-       <a id="filterBtn" title="Filter Timeline" class="func_btn" style="background-position:-174px -112px;">Filter</a>\r
-       \r
-       <a title="Sogou Cloud IME" href="javascript:void((function(){var%20n=navigator.userAgent.toLowerCase();ie=n.indexOf('msie')!=-1?1:0;if(document.documentMode)ie=0;charset='';if(ie)charset=document.charset;src=ie&amp;&amp;charset=='utf-8'?'http://web.pinyin.sogou.com/web_ime/init2_utf8.php':'http://web.pinyin.sogou.com/web_ime/init2.php';element=document.createElement('script');element.setAttribute('src',src);document.body.appendChild(element);})())" onclick="updateSentTip('Loading...', 5000, 'ing')" class="func_btn" style="background-position: -62px -112px;">Sogou</a>\r
-       \r
-       <a id="symbolBtn" title="Symbols and smileys" class="func_btn" style="background-position: -206px -113px;">Symbols</a>\r
-\r
-       <a id="restoreBtn" style="background-position: 2px -64px;" class="func_btn" title="Restore previous tweet">Restore</a>\r
-       \r
-       <a id="autoBtn" title="Auto refresh control" class="func_btn pause">Pause</a>\r
-       \r
-       <a id="clearBtn" style="background-position: 3px -176px;" class="func_btn" title="Sweep Timeline" class="func_btn">Sweep</a>\r
-\r
-       <a id="refreshBtn" title="Refresh the timeline" class="func_btn" style="background-position: -62px -80px;">Refresh</a>\r
-       </div>\r
-\r
-<?php \r
-       $t = getTwitter();\r
-       $current_user = $t->veverify();\r
-       if ($current_user === false) {\r
-               header('location: error.php');\r
-       } \r
-       $empty = count($current_user) == 0? true: false;\r
-       if ($empty) {\r
-               echo "<div id=\"currently\">\r
-                       <span id=\"full_status\" title=\"Click to view the full tweet\"><strong >Latest:</strong></span>\r
-                       <span id=\"latest_status\">\r
-                       <span id=\"latest_text\">\r
-                       <span class=\"status-text\">What's shaking?</span>\r
-                       <span class=\"full-text\" style=\"display:none\">What's shaking?</span>\r
-                       <span class=\"entry-meta\" id=\"latest_meta\"></span>\r
-                       <span class=\"entry-meta\" id=\"full_meta\"></span>\r
-                       </span>\r
-                       </span>\r
-                       </div>";\r
-       } else {\r
-               $status = $current_user->status;\r
-               refreshProfile($t, $current_user);\r
-               $date = formatDate($status->created_at);\r
-               $text = formatText($status->text);\r
-               $output = "\r
-                       <div id=\"currently\">\r
-                       <span id=\"full_status\"><strong>Latest:</strong></span>\r
-                       <span id=\"latest_status\">\r
-                       <span id=\"latest_text\">\r
-                       <span class=\"status-text\">" . $text . "</span>\r
-                       <span class=\"full-text\" style=\"display:none\">" . $text . "</span>\r
-                       <span class=\"entry-meta\" id=\"latest_meta\"><a href=\"status.php?id=$status->id\" target=\"_blank\">" . $date . "</a></span>\r
-                       <span class=\"entry-meta\" id=\"full_meta\" style=\"display:none\"><a href=\"status.php?id=$status->id\" target=\"_blank\">" . $date . "</a></span>\r
-                       </span>\r
-                       </span>\r
-                       </div>                          \r
-                       ";\r
-               echo $output;\r
-       }\r
+<?php\r
+       include('inc/sentForm.php');\r
 ?>\r
-               <div id="tweeting_controls">\r
-               <a class="a-btn a-btn-m btn-disabled" id="tweeting_button" tabindex="2" href="#"><span>Tweet</span></a>\r
-       </div>\r
-<!--<input type="submit" id="submit_btn" value="update" />-->\r
-               <div id="allNav">\r
-                       <a class="allBtn allHighLight" id="allTimelineBtn" href="javascript:void(0);">Updates</a>\r
-                       <a class="allBtn" id="allRepliesBtn" href="javascript:void(0);">Replies</a>\r
-                       <a class="allBtn" id="allMessageBtn" href="javascript:void(0);">Messages</a>\r
+<script src="js/all.js"></script>\r
+<style>.timeline li {border-bottom:1px solid #EFEFEF;border-top:none !important}</style>\r
+                       <div id="allNav">\r
+                       <a class="allBtn allHighLight" id="allTimelineBtn" href="#">Updates</a>\r
+                       <a class="allBtn" id="allRepliesBtn" href="#">Replies</a>\r
+                       <a class="allBtn" id="allMessageBtn" href="#">Messages</a>\r
                </div>\r
-\r
-\r
-       </form>\r
-\r
-       <div class="clear"></div>\r
 <?php\r
-       $statuses = $t->friendsTimeline();\r
-       $retweetes = $t->retweeted_to_me();\r
+       $statuses = $t->homeTimeline();\r
        if ($statuses === false) {\r
-               header('location: error.php');\r
+               header('location: error.php');exit();\r
        }\r
        $empty = count($statuses) == 0? true: false;\r
        if ($empty) {\r
                echo "<div id=\"empty\">No tweet to display</div>";\r
        } else {\r
                $output = '<ol class="timeline" id="allTimeline">';\r
-               if(count($retweetes) > 0){\r
-                       $statuses = sort_timeline($statuses, $retweetes);\r
-               }\r
-               $MAX_STATUSES = 20;\r
-               $status_count = 0;\r
                foreach ($statuses as $status) {\r
-                       if($count++ >= $MAX_STATUSES){\r
-                               break;\r
-                       }\r
-                       if($status->retweeted_status){\r
+                       if(isset($status->retweeted_status)){\r
                                $output .= format_retweet($status);\r
                        }else{\r
                                $output .= format_timeline($status, $t->username);\r
 \r
        $statuses = $t->replies();\r
        if ($statuses === false) {\r
-               header('location: error.php');\r
+               header('location: error.php');exit();\r
        }\r
        $empty = count($statuses) == 0? true: false;\r
        if ($empty) {\r
 \r
        $messages = $t->directMessages();\r
        if ($messages === false) {\r
-               header('location: error.php');\r
+               header('location: error.php');exit();\r
        }\r
        $empty = count($messages) == 0? true: false;\r
        if ($empty) {\r
-               echo "";\r
+               echo "<div id=\"empty\">No tweet to display</div>";\r
        } else {\r
                $output = '<ol class="timeline" id="allMessage">';\r
 \r
                foreach ($messages as $message) {\r
-                       $name = $message->sender_screen_name;\r
-                       $imgurl = getAvatar($message->sender->profile_image_url);\r
-                       $date = formatDate($message->created_at);\r
-                       $text = formatText($message->text);\r
-\r
-                       $output .= "<li>\r
-                               <span class=\"status_author\">".initShortcutMenu($message->sender)."\r
-                               <a href=\"user.php?id=$name\" target=\"_blank\"><img src=\"$imgurl\" title=\"$name\" /></a>\r
-                               </span>\r
-                               <span class=\"status_body\">\r
-                               <span class=\"status_id\">$message->id</span>\r
-                               <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$name\">$name</a><span class=\"tweet\"> $text </span></span>";\r
-                       if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";\r
-                       $output .= "<span class=\"actions\"><a class=\"msg_replie_btn\" href=\"message.php?id=$name\">Reply</a><a class=\"msg_delete_btn\" href=\"a_del.php?id=$message->id&t=m\">Delete</a></span>\r
-                               <span class=\"status_info\">\r
-                               <span class=\"date\">$date</span>\r
-                               </span>\r
-                               </span>\r
-                               </li>";\r
+                       $output .= format_message($message);\r
                }\r
 \r
                $output .= "</ol>";\r
 \r
 <?php \r
        include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
        include ('inc/footer.php');\r
 ?>\r
diff --git a/authorize.php b/authorize.php
new file mode 100644 (file)
index 0000000..65dbcdf
--- /dev/null
@@ -0,0 +1,6 @@
+<?php\r
+\r
+       include ('lib/twitese.php');\r
+       $url = 'https://api.twitter.com/oauth/authorize';\r
+       echo processCurl($url, http_build_query($_POST));\r
+?>
\ No newline at end of file
diff --git a/basic_auth.php b/basic_auth.php
new file mode 100644 (file)
index 0000000..822bfd9
--- /dev/null
@@ -0,0 +1,43 @@
+<?php\r
+/* from http://www.rooftopsolutions.nl/blog/223 */\r
+\r
+       $validUser = BASIC_AUTH_USER;\r
+       $validPass = BASIC_AUTH_PW;\r
+       \r
+       $realm = 'input your speicial username and password here from your sitemaster';\r
+       $nonce = uniqid(); \r
+       $digest = getDigest();\r
+       if (is_null($digest)) requireLogin($realm,$nonce); \r
+       $digestParts = digestParse($digest);\r
+       $A1 = md5("{$validUser}:{$realm}:{$validPass}");\r
+       $A2 = md5("{$_SERVER['REQUEST_METHOD']}:{$digestParts['uri']}");\r
+       $validResponse = md5("{$A1}:{$digestParts['nonce']}:{$digestParts['nc']}:{$digestParts['cnonce']}:{$digestParts['qop']}:{$A2}");\r
+       \r
+       if ($digestParts['response']!=$validResponse) requireLogin($realm,$nonce);\r
+       function getDigest() {\r
+    if (isset($_SERVER['PHP_AUTH_DIGEST'])) {\r
+        $digest = $_SERVER['PHP_AUTH_DIGEST'];\r
+    } elseif (isset($_SERVER['HTTP_AUTHENTICATION'])) {\r
+            if (strpos(strtolower($_SERVER['HTTP_AUTHENTICATION']),'digest')===0) \r
+              $digest = substr($_SERVER['HTTP_AUTHORIZATION'], 7);\r
+    }\r
+    return $digest;\r
+       }\r
+\r
+function requireLogin($realm,$nonce) {\r
+    header('WWW-Authenticate: Digest realm="' . $realm . '",qop="auth",nonce="' . $nonce . '",opaque="' . md5($realm) . '"');\r
+    header('HTTP/1.0 401 Unauthorized');\r
+    die();\r
+}\r
+\r
+function digestParse($digest) {\r
+    $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);\r
+    $data = array();\r
+    preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER);\r
+    foreach ($matches as $m) {\r
+        $data[$m[1]] = $m[2] ? $m[2] : $m[3];\r
+        unset($needed_parts[$m[1]]);\r
+    }\r
+    return $needed_parts ? false : $data;\r
+}\r
+?>
\ No newline at end of file
index 51e2b41..d91bbbf 100644 (file)
@@ -1,77 +1,58 @@
-<?php \r
-       include ('lib/twitese.php');\r
-       $title = "Public";\r
-       include ('inc/header.php');\r
-       if (!loginStatus()) header('location: login.php');\r
-?>\r
-\r
-<script type="text/javascript" src="js/browse.js"></script>\r
-\r
-<div id="statuses" class="column round-left">\r
-\r
-       <h2 id="browse_title">See what people are saying about…</h2>\r
-       <div class="clear"></div>\r
-       \r
-       <?php \r
-               $t = getTwitter();\r
-               $p = 1;\r
-               if (isset($_GET['p'])) {\r
-                       $p = (int) $_GET['p'];\r
-                       if ($p <= 0) $p = 1;\r
-               }\r
-       \r
-               $statuses = $t->browse($p);\r
-               if ($statuses === false) {\r
-                       header('location: error.php');\r
-               } \r
-               $empty = count($statuses) == 0? true: false;\r
-               if ($empty) {\r
-                       echo "<div id=\"empty\">No tweet to display.</div>";\r
-               } else {\r
-                       $output = '<ol class="timeline" id="allTimeline">';\r
-                       \r
-                       foreach ($statuses as $status) {\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-                               \r
-                               $output .= "\r
-                                       <li>\r
-                                               <span class=\"status_author\">\r
-                                                       <a href=\"user.php?id=$status->screen_name\" target=\"_blank\"><img src=\"$status->profile_img_url\" title=\"$status->screen_name\" /></a>\r
-                                               </span>\r
-                                               <span class=\"status_body\">\r
-                                                       <span class=\"status_id\">$status->id</span>\r
-                                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$status->screen_name\">$status->screen_name</a> $text </span>\r
-                                                       <span class=\"actions\">\r
-                                                               <a class=\"replie_btn\" href=\"a_reply.php?id=$status->id\">Reply</a><a class=\"rt_btn\" href=\"a_rt.php?id=$status->id\">Retweet</a><a class=\"favor_btn\" href=\"a_favor.php?id=$status->id\">Favorite</a></span>\r
-                                               <span class=\"status_info\">\r
-                                                               <span class=\"source\">from $status->source</span>\r
-                                                               <span class=\"date\"><a href=\"status.php?id=$status->id\" target=\"_blank\">$date</a></span>\r
-                                                   </span>\r
-                                               </span>\r
-                                       </li>\r
-                               ";\r
-                       }\r
-                       \r
-                       $output .= "</ol><div id=\"pagination\">";\r
-\r
-                       if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"browse.php?p=" . ($p-1) . "\">Back</a>";\r
-                       if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"browse.php?p=" . ($p+1) . "\">Next</a>";\r
-                       \r
-                       $output .= "</div>";\r
-                       \r
-                       echo $output;\r
-               }\r
-               \r
-               \r
-               \r
-       ?>\r
-</div>\r
-\r
-<?php \r
-       include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php 
+       include ('lib/twitese.php');
+       $title = "Public";
+       include ('inc/header.php');
+       if (!loginStatus()) header('location: login.php');
+?>
+
+<script src="js/browse.js"></script>
+
+<div id="statuses" class="column round-left">
+       <h2 id="browse_title">See what people are saying about…</h2>
+       <div class="clear"></div>
+       
+       <?php
+       // selected from top 50 freqently used Han Chracter in http://www.cslog.cn/Content/word-frequency-list-of-chinese/
+               $seed = array(
+               '的', '一', '是', '不', '了', '我', '人', '在', '有', '这', '他', '来', '个', '上', '说', '中', '大', '为', '到', '道', '你', '们', '出', '就', '时', '以', '之', '那', '和', '子', '地', '得', '自', '要', '下', '可', '而', '学', '过', '对', '么', '然', '她', '国', '去', '里'
+       );
+               if(!isset($_COOKIE['browse_seed'])) {
+                       $browse_seed = $seed[mt_rand(0,48)];
+                       setcookie('browse_seed', $browse_seed, $_SERVER['REQUEST_TIME']+300, '/');
+               } else {
+                       $browse_seed = $_COOKIE['browse_seed'];
+               }
+               $t = getTwitter();
+               $p = 1;
+               if (isset($_GET['p'])) {
+                       $p = (int) $_GET['p'];
+                       if ($p <= 0) $p = 1;
+               }
+       
+               $statuses = $t->search($browse_seed, $p, 50);
+               $resultCount = count($statuses->results);
+               if ($resultCount <= 0) {
+                       echo "<div id=\"empty\">No tweet to display.</div>";
+               } else {
+                       include_once('lib/timeline_format.php');
+                       $output = '<ol class="timeline" id="allTimeline">';
+                       foreach ($statuses->results as $status) {
+                               if(!preg_match('/[\p{Hiragana}\p{Katakana}\p{Hangul}]+/u', $status->text) ) { // filter the Japanese and Korean tweets since some of Han Character included.
+                                       $output .= format_search($status);
+                               }
+                       }
+                       $output .= "</ol><div id=\"pagination\">";
+
+                       if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"browse.php?p=" . ($p-1) . "\">Back</a>";
+                       if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"browse.php?p=" . ($p+1) . "\">Next</a>";
+                       
+                       $output .= "</div>";
+                       echo $output;
+               }
+       ?>
+</div>
+
+<?php 
+       include ('inc/sidebar.php');
+       include ('inc/footer.php');
+?>
index 8e14b9b..5d2d3c8 100644 (file)
-/*----------------------------------------\r
-Rabr main.css\r
-Author: disinfeqt\r
-Platform: open source\r
-Version: 0082\r
-Date: 2010-04-18\r
-Synced: yes\r
-----------------------------------------*/\r
-\r
-/* =elements\r
-----------------------------------------*/\r
-body{background:#C0DEED url(../img/bg-clouds.png) repeat-x scroll 0 0;font-family:"Lucida Grande",Tahoma,Arial,sans-serif;font-size:13px;margin:0}\r
-*{margin:0;padding:0}\r
-a{color:#2276BB;text-decoration:none}\r
-li{list-style-image:none;list-style-position:outside;list-style-type:none}\r
-img{border:medium none}\r
-h2  {\r
-clear:both;\r
-display:block;\r
-float:left;\r
-font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;\r
-font-size:20px;\r
-font-weight:normal;\r
-line-height:1.1;\r
-margin:8px 0 0 10px;\r
-cursor:default;\r
-}\r
-.wrapper{margin:1em auto;position:relative;width:763px}\r
-.warpper{margin:1em auto;position:relative;width:763px}\r
-.content-bubble-arrow{background-image:url(../img/arr2.gif);background-position:25px 0;background-repeat:no-repeat;margin-top:1em;padding-top:11px}\r
-.columns{margin-bottom:15px;width:100%}\r
-.round{-moz-border-radius:5px;-webkit-border-radius:5px}\r
-.round-top-right{-moz-border-radius-topright:5px;-webkit-border-top-right-radius:5px}\r
-.round-right{-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px}\r
-.round-bottom-right{-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px}\r
-.round-bottom{-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-moz-border-radius-topleft:0;-moz-border-radius-topright:0;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0}\r
-.round-bottom-left{-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px}\r
-.round-left{-moz-border-radius-bottomleft:5px;-moz-border-radius-topleft:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-top-left-radius:5px}\r
-.round-top-left{-moz-border-radius-topleft:5px;-webkit-border-top-left-radius:5px}\r
-.round-top{-moz-border-radius-bottomleft:0;-moz-border-radius-bottomright:0;-moz-border-radius-topleft:5px;-moz-border-radius-topright:5px;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-top-left-radius:5px;-webkit-border-top-right-radius:5px}\r
-.clear{clear:both}\r
-#error{padding:40px;text-align:center}\r
-#sidename,ul.sidebar-menu li a span.stat_count,#side #local_trend_locations li,#home #rssfeed,#search #rssfeed,#profile #rssfeed,#profile_favorites #rssfeed,#favorites #rssfeed,#home #rssfeed .timeline-rss,#search #rssfeed .search-rss,#profile #rssfeed .profile-rss,#favorites #rssfeed .favorites-rss,#profile_favorites #rssfeed .favorites-rss,#side .stats .stats_count,fieldset.vertical-form label,fieldset.vertical-form input{display:block}\r
-.timeline li:hover a,.rank_list li:hover a,#user_stats a:hover,#info_block_btn:hover,#side .promotion a:hover,#side .stats a:hover{text-decoration:none}\r
-a:hover,.timeline li:hover a:hover,.rank_list li:hover a:hover,#side .user_icon a:hover #me_tweets,#side .stats a:hover .label{text-decoration:underline}\r
-#left,#sidenav a:hover,.allHighLight{background-color:#FFF}\r
-#user_info li span,#user_info_profile li span,#side .about .label{font-weight:700}\r
-\r
-/* =login\r
-----------------------------------------*/\r
-#login_left{background:#FFF url(../img/press-bird.gif) no-repeat scroll 100% 60%}\r
-#login{display:block;margin:0 auto;width:240px}\r
-#username,#password{border:1px solid #C7C5B8;display:inline;padding:4px;width:150px}\r
-#login div{display:block;margin:10px}\r
-#login_btn{margin-right:50px}\r
-#login_area{background-color:#FFF;float:left;padding:10px 0;width:766px}\r
-#remember{font-size:12px;margin-left:20px;padding:5px 0 0 50px}\r
-#remember_input{margin:0 5px}\r
-\r
-/* header\r
-----------------------------------------*/\r
-#header {margin:1em auto;text-align:right;width:766px}\r
-#content {margin:1em auto;width:766px}\r
-#logo img{left:0;margin-top:-2px;position:absolute}\r
-#nav{background-color:#FFF;display:inline-block;padding:0 .7em;white-space:nowrap}\r
-#nav li{float:left;padding:6px 8px}\r
-\r
-/* =status form\r
-----------------------------------------*/\r
-#tweeting_controls  {\r
-float:right;\r
-padding:5px 12px 0 5px;\r
-}\r
-#tweeting_controls a  {\r
-line-height:13px;\r
-}\r
-a.a-btn, a.a-btn:visited {\r
-color:#333333 !important;\r
-}\r
-a.a-btn {\r
--moz-border-radius:4px;\r
--webkit-border-radius:4px;\r
-border-radius:4px;\r
-background:url("../img/bg-btn.gif") repeat-x scroll 0 0 #DDDDDD;\r
-border-color:#DDDDDD #DDDDDD #CCCCCC !important;\r
-border-style:solid;\r
-border-width:1px !important;\r
-cursor:pointer;\r
-display:inline-block;\r
-font-family:"lucida grande",helvetica,tahoma,arial;\r
-font-size:11px;\r
-line-height:14px;\r
-padding:4px 8px 5px;\r
-text-decoration:none;\r
-text-shadow:1px 1px 0 #FFFFFF !important;\r
-}\r
-a.btn-disabled {\r
-background-image:none;\r
-opacity:0.6;\r
-}\r
-a.a-btn-m {\r
--moz-border-radius:5px;\r
--webkit-border-radius:5px;\r
-border-radius:5px;\r
-background-position:0 -200px;\r
-font-family:"helvetica neue",arial,sans-serif;\r
-font-size:15px;\r
-line-height:20px;\r
-padding:5px 15px 6px;\r
-}\r
-a.a-btn:hover, a.a-btn:focus {\r
-border-color:#999999 #999999 #888888 !important;\r
-color:#000000;\r
-outline:medium none;\r
-text-decoration:none;\r
-}\r
-a.a-btn:active {\r
-background-image:none;\r
-outline:medium none;\r
-}\r
-/*legacy below*/\r
-#statuses,#ajax_statuses{background-color:#FFF;float:left;padding:10px;width:544px}\r
-#statuses form{margin-bottom:10px}\r
-#update_form{margin-bottom:10px}\r
-#tip{color:#CCC;float:right;font-size:24px;margin:5px 10px 0 0;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;}\r
-#tip.loading  {\r
-background:url("../img/spinner.gif") no-repeat scroll center center transparent !important;\r
-color:transparent !important;\r
-}\r
-#textbox{-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px;border:1px solid #A7A6AA;font-size:14px;height:80px;margin:2px 0 5px 10px;overflow-x:hidden;overflow-y:auto;padding:5px;width:510px}\r
-textarea#textbox:focus{outline:none;border:1px solid rgba(82,168,236,.75)!important;-moz-box-shadow:0 0 5px rgba(82,168,236,.5);-webkit-box-shadow:0 0 5px rgba(82,168,236,.5);}\r
-#submit_btn,#login_btn,#rank_addtag_btn,.submit_btn{background:transparent url(../img/round-btn.gif) repeat scroll 0 0;border:medium none;color:#666;float:right;font-size:14px;height:32px;margin:5px 13px 0 0;width:115px}\r
-#submit_btn:hover,#login_btn:hover,#rank_addtag_btn:hover,.submit_btn:hover{background:transparent url(../img/round-btn.gif) repeat scroll 0 32px;color:#444;cursor:pointer}\r
-#submit_btn:active{color:#000;cursor:pointer}\r
-#func_set {\r
-clear:left;\r
-display:block;\r
-float:left;\r
-left:190px;\r
-position:absolute;\r
-top:33px;\r
-}\r
-.func_btn {\r
-background-image:url("../img/ui_icons.png");\r
-background-color:#ffffff;\r
--moz-border-radius:3px;\r
--webkit-border-radius:3px;\r
-border:1px solid #ADADAD;\r
-color:#75715E;\r
-display:block;\r
-float:left;\r
-font-size:11px;\r
-margin:0 -5px 0 10px;\r
-text-align:center;\r
-text-decoration:none;\r
-text-indent:-9999em;\r
-height: 16px;\r
-width: 20px;\r
-cursor:pointer;\r
-}\r
-.func_btn:hover{background-color:#F2F2F2;text-decoration:none}\r
-#transRecover {\r
--moz-border-radius-bottomleft:3px;\r
--webkit-border-bottom-left-radius:3px;\r
-display:none;\r
-background-color:#FFFFFF;\r
-background-image:url("../img/ui_icons.png");\r
-border:1px solid #ADADAD;\r
-color:#75715E;\r
-cursor:pointer;\r
-float:left;\r
-font-size:11px;\r
-height:16px;\r
-margin:0 -5px 0 10px;\r
-text-align:center;\r
-text-decoration:none;\r
-text-indent:-9999em;\r
-background-position:-32px -64px;\r
-bottom:58px;\r
-left:515px;\r
-position:absolute;\r
-top:58px;\r
-width:15px;\r
-}\r
-#transRecover:hover {\r
-background-color:#F2F2F2;\r
-text-decoration:none;\r
-}\r
-#photoArea {\r
--moz-border-radius:3px;-webkit-border-radius:3px;\r
-background:#F5F5F5 none repeat scroll 0 0;\r
-border:1px solid #A7A6AA;\r
-clear:both;\r
-display:none;\r
-height:20px;\r
-left:20px;\r
-padding:10px 10px 60px;\r
-position:absolute;\r
-top:58px;\r
-width:500px;\r
-}\r
-#transArea {\r
--moz-border-radius:3px;-webkit-border-radius:3px;\r
-background:#F5F5F5 none repeat scroll 0 0;\r
-border:1px solid #A7A6AA;\r
-clear:both;\r
-display:none;\r
-height:20px;\r
-left:20px;\r
-padding:10px 10px 60px;\r
-position:absolute;\r
-top:58px;\r
-width:500px;\r
-}\r
-#filterArea {\r
--moz-border-radius:3px;-webkit-border-radius:3px;\r
-background:#F5F5F5 none repeat scroll 0 0;\r
-border:1px solid #A7A6AA;\r
-clear:both;\r
-display:none;\r
-height:20px;\r
-left:20px;\r
-padding:10px 10px 60px;\r
-position:absolute;\r
-top:58px;\r
-width:500px;\r
-}\r
-#symArea {\r
--moz-border-radius:3px;-webkit-border-radius:3px;\r
-background:#F5F5F5 none repeat scroll 0 0;\r
-border:1px solid #A7A6AA;\r
-clear:both;\r
-display:none;\r
-height:20px;\r
-left:20px;\r
-padding:10px 10px 60px;\r
-position:absolute;\r
-top:58px;\r
-width:500px;\r
-overflow-x:hidden;\r
-overflow-y:auto;\r
-}\r
-#symArea span  {\r
--moz-border-radius:3px;\r
--webkit-border-radius:3px;\r
-background-color:#EEEEEE;\r
-border:1px solid transparent;\r
-color:#000000;\r
-display:block;\r
-float:left;\r
-font-size:12px;\r
-line-height:18px;\r
-margin:0 10px 5px 0;\r
-min-width:60px;\r
-padding:1px 2px;\r
-text-align:center;\r
-white-space:nowrap;\r
-}\r
-#symArea span:hover {\r
-border:1px solid #666;\r
-cursor:pointer;\r
-}\r
-#filterArea .filter_input {\r
-border:1px solid #A7A6AA;\r
-font-size:13px;\r
-height:17px;\r
-margin:10px 0 5px;\r
-padding:3px 2px;\r
-width:300px;\r
-}\r
-.close{background: transparent url(../img/sprite-icons.png) no-repeat scroll -272px -16px;text-decoration: none; position: absolute; top: 10px; right: 10px; height: 10px; width: 9px;}\r
-#sent_function{float:left;margin:4px 0 0 10px;}\r
-#imageFile {\r
-margin:10px 0;\r
-padding:2px;\r
-}\r
-#autoBtn.pause {background-position:-15px -160px;}\r
-#autoBtn.start {background-position: 1px -160px;}\r
-#currently {\r
-color:#666666;\r
-float:left;\r
-font-size:11px !important;\r
-margin:3px 8px 0 10px;\r
-overflow:hidden;\r
-padding:2px 4px 2px 0;\r
-text-align:left;\r
-width:385px;\r
-word-wrap:break-word;\r
-cursor:pointer;\r
-}\r
-.status-text a{color:#666666}\r
-#latest_meta a{color:#999999;}\r
-\r
-/* =tips\r
-----------------------------------------*/\r
-#shortcutTip {\r
-border-radius:5px;\r
--moz-border-radius:5px;\r
--webkit-border-radius:5px;\r
-border:2px solid;\r
-color:#FFFFFF;\r
-cursor:default;\r
-display:block;\r
-font-size:20px;\r
-font-weight:bold;\r
-left:20px;\r
-opacity:0.8;\r
-padding:8px 16px;\r
-position:fixed;\r
-top:20px;\r
-}\r
-#sentTip{background:#FFFFFF;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-left-radius:10px;-webkit-border-bottom-right-radius:10px;font-size:11px !important;font-weight:700;left:auto;right:auto;padding:4px 0 6px;margin:-1px 0 0 233px;position:fixed;text-align:center;top:0;width:300px;min-height:13px;z-index:1000;opacity:0.8;filter:alpha(opacity=80);}\r
-.ing{color:#2276BB}\r
-.success{color:green}\r
-.failure{color:red}\r
-#otherTip{-moz-border-radius:5px;-webkit-border-radius:5px;background:#F5F5F5 none repeat scroll 0 0;border:1px solid #EEE;clear:both;color:red;font-size:12px;margin:10px 20px;padding:5px 10px;text-align:center;width:483px}\r
-\r
-/* =timeline\r
-----------------------------------------*/\r
-#allTimeline,#allReplies,#allMessage {margin:10px;padding:0;clear:both;}\r
-.timeline embed{margin: 10px 0px 0px 10px}\r
-.new {\r
-background-color:#E3F1FA;\r
-color:#858585;\r
-display:block;\r
-float:left;\r
-font-size:11px;\r
-text-align:center;\r
-width:522px;\r
-}\r
-.mine{display:none;background-color:#E8FFED}\r
-.reply{background-color:#E8FECD}\r
-.filter{background-color:#FFFFCC}\r
-.retweet{background-color:#FFFFE5}\r
-.faved{background:transparent url(../img/faved.png) no-repeat scroll 500px 10px}\r
-.user_name{font-weight:bold}\r
-.timeline{margin:0 10px}\r
-.timeline li {\r
-border-top:1px solid #EFEFEF;\r
-cursor:default;\r
-display:block;\r
-float:left;\r
-margin:0;\r
-overflow:visible;\r
-padding:10px 25px 5px 2px;\r
-position:relative;\r
-width:497px;\r
-}\r
-.timeline li:hover .actions {visibility:visible}\r
-.ajax_timeline li {\r
-cursor:default;\r
-display:block;\r
-float:left;\r
-margin:0;\r
-overflow:visible;\r
-padding:5px 0;\r
-width:520px;\r
-position:relative;\r
-}\r
-.ajax_timeline li .status_body {\r
-margin-left:50px !important;\r
-margin-right:5px !important;\r
-}\r
-.xmas_tweet{background:transparent url(../img/jingle_bell.png) no-repeat scroll 510px 5px;}\r
-.status_body {\r
-display:block;\r
-line-height:22px;\r
-margin-left:60px;\r
-overflow:hidden;\r
-position:relative;\r
-}\r
-.status_info{color:#999;display:block;font-size:11px;height:22px;margin:5px 0;overflow:hidden;text-align:left;width:100%}\r
-.status_info a{color:#999;font-size:11px;text-decoration:none}\r
-.status_info span{display:inline-block;margin:0 0 3px;padding:0 1px}\r
-.timeline li:hover,.rank_list li:hover{background-color:#F7F7F7}\r
-.status_author {\r
-height:48px;\r
-left:5px;\r
-padding:1px;\r
-position:absolute;\r
-width:48px;\r
-}\r
-.timeline li.loading .status_author {\r
-background:url("../img/spinner.gif") no-repeat scroll center center transparent !important;\r
-outline:4px solid #BBBBBB;\r
-}\r
-.timeline li.loading .status_author a {\r
-opacity:0.2;\r
-}\r
-.rank_img{top:15px;left:10px;position:absolute;width:48px;height:48px}\r
-.status_author img,.rank_img img{height:48px;width:48px}\r
-.unshorturl {\r
-border-radius:5px;\r
--moz-border-radius:5px;\r
--webkit-border-radius:5px;\r
-border:1px solid #DDDDDD;\r
-display:block;\r
-font-family:tahoma;\r
-font-size:11px;\r
-margin:5px 5px 5px 0;\r
-overflow:hidden;\r
-padding:0 10px;\r
-white-space:nowrap;\r
-word-wrap:break-word;\r
-}\r
-.unshorturl:hover{border:1px solid #999999}\r
-.unshorturl p{float:left;color:#DDD;font-weight:700;margin:0 10px 0 0}\r
-.unshorturl:hover p{color:#999}\r
-.unshorturl a {color:#999;word-wrap:break-word;word-break:break-all;white-space:nowrap;display:block;}\r
-.unshorturl:hover a{text-decoration:none !important}\r
-#empty{font-size:16px;font-weight:700;margin:50px;text-align:center}\r
-#description{font-size:14px;padding:10px}\r
-#description p{line-height:22px;margin:15px}\r
-.big-retweet-icon {background-image:url(../img/sprite-icons.png);background-position:-128px -64px;background-repeat:no-repeat;display:inline-block;height:14px;position:relative;top:2px;width:18px;}\r
-/*new below*/\r
-.ajax_form {\r
-background-color:#FFFFFF;\r
-border:1px solid #A7A6AA;\r
-float:left;\r
-margin:5px 0 5px -1px;\r
-padding:0;\r
-width:520px;\r
-}\r
-.ajax_form li {\r
-border-top:1px solid #EFEFEF;\r
-cursor:default;\r
-display:block;\r
-float:left;\r
-margin:0;\r
-overflow:visible;\r
-padding:5px 25px 5px 0;\r
-position:relative;\r
-width:495px;\r
-}\r
-.ajax_form li .status_author {\r
-height:30px;\r
-left:5px;\r
-margin-left:5px;\r
-margin-top:6px;\r
-padding:1px;\r
-position:absolute;\r
-width:30px;\r
-}\r
-.ajax_form li .status_body {\r
-display:block;\r
-line-height:22px;\r
-margin-left:50px;\r
-margin-right:5px;\r
-overflow:hidden;\r
-position:relative;\r
-}\r
-/* =pagination\r
-----------------------------------------*/\r
-#pagination{margin:5px}\r
-#pagination p.no-more-tweets{font-size:1.1em;text-align:center}\r
-.more{background-color:#FFF;background-image:url(../img/more.gif);background-position:left top;background-repeat:repeat-x;border-color:#DDD #AAA #AAA #DDD;border-style:solid;border-width:1px;display:block;font-size:14px;font-weight:700;height:22px;line-height:1.5em;margin-bottom:6px;outline-color:0;outline-style:none;outline-width:medium;padding:6px 0;text-align:center;text-shadow:1px 1px 1px #FFF;width:45%}\r
-.more:hover{background-position:left -78px;border:1px solid #bbb;text-decoration:none}\r
-.more:active{background-position:left -38px;color:#666}\r
-.more.loading{background-color:#fff;background-image:url(../img/ajax.gif);background-position:50% 50%;background-repeat:no-repeat;border:1px solid #eee;cursor:default!important}\r
-.more::-moz-focus-inner{border:0}\r
-#pagination.pagination{height:1.5em}\r
-#pagination.pagination a,#pagination.pagination .link-like{border:1px solid #cecece;float:right;margin:0 0 0 10px;padding:.25em 1em}\r
-\r
-/* =sidebar\r
-----------------------------------------*/\r
-#side_base{-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px;background-color:#DDEEF6;border-left:1px solid #C0DEED;line-height:1.2;vertical-align:top;width:198px}\r
-#side{-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px;float:left;font-size:12px;margin:0 -2px;overflow:hidden;padding-top:.5em;width:198px}\r
-#sideimg{float:left;height:31px;margin:10px 10px 10px 15px;width:31px}\r
-#sideid{display:block;font:bold 1.2em/1.2em Helvetica Neue,Helvetica,sans-serif;padding:10px 0 0 18px}\r
-#me_tweets {font-family:Helvetica,Arial,sans-serif;font-size:11px;margin-top:17px;}\r
-#user_stats{clear:both;padding:0 0 0 10px}\r
-#user_stats li{display:inline-block;float:left;overflow:hidden;padding:0 5px;width:48px}\r
-.count{display:block;font:bold 13px Helvetica Neue,Helvetica,Arial,sans-serif;}\r
-.label{display:block;font-size:11px}\r
-#sidenav{border-top:1px solid #CCC;margin:0}\r
-#sidenav a{background-color:#F4F4F4;border-bottom:1px solid #CCC;color:#000;display:block;font-size:13px;font-weight:700;padding:10px;text-decoration:none}\r
-h3{font-size:14px;margin:14px 0 0 14px}\r
-#sidepost{margin:0;padding-bottom:0}\r
-#sidepost li{font-size:12px;line-height:18px;margin:12px 10px}\r
-#side .promotion{background-color:#EDFEFF;font-size:12px;margin:.5em auto;padding:6px 10px;text-align:left;width:152px}\r
-#side .promotion a{color:#333;font-size:11px;outline-style:none;outline-width:medium}\r
-#side .promotion a.definition:hover strong{font-size:11px;outline-style:none;outline-width:medium;text-decoration:underline}\r
-#side .promotion .definition strong{color:#2276BB;display:block;font-size:11px}\r
-#side span.sponsored{color:#777;display:block;font-size:.9em;padding-bottom:.2em;padding-top:.2em}\r
-#side .notice{background-color:#FFF;margin:.5em auto 1em;padding:10px;text-align:center}\r
-#side div.section{padding:13px}\r
-#side div#profile.section{margin-bottom:0;padding:.2em}\r
-#side div.last{border-top:1px solid #C0DEED}\r
-#side h1{color:#333;font-size:1.1em;margin-bottom:.5em;padding:0 0 2px}\r
-#side div.section-header h3{border-bottom:1px solid #C0DEED;color:#333;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;line-height:18px}\r
-#side .section-links{float:right;font-size:.9em;text-align:right}\r
-#side div.msg strong{display:block;font-size:1.4em}\r
-#side div.msg h3{font-size:1.25em}\r
-#side ul{margin:0px}\r
-#side .faq-index ul{list-style-type:square;margin-left:15px}\r
-#side .faq-index li{margin:10px 0}\r
-#side p{padding:.5em 10px}\r
-#side div#profile.profile-side{margin-bottom:1em!important}\r
-#side .profile-side .about{margin-bottom:.6em}\r
-#side div.user_icon a,#side div.user_icon a:hover{color:#333;text-decoration:none}\r
-#side div.user_icon a:hover{color:#0084B5}\r
-#side .user_icon{clear:both;display:block;height:31px;padding:0 0 .8em}\r
-#side .user_icon img{padding-right:.8em;vertical-align:middle}\r
-#me_name{font-size:1.35em;vertical-align:middle}\r
-#side p.promotion{cursor:default;margin-bottom:.5em}\r
-.in-page-link{outline-style:none;outline-width:medium}\r
-#side #gadgets,#side #saved_searches{overflow:hidden;width:198px}\r
-ul.sidebar-menu li .side-tab-ajax{display:none;float:right;margin-right:1em;vertical-align:top}\r
-ul.sidebar-menu span.stat_count{-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;background-color:transparent;float:right;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;margin-right:14px;margin-top:0;padding:0 .1em}\r
-span.link-title{float:left}\r
-.ie6 ul.sidebar-menu li a{margin-top:-2px}\r
-ul.sidebar-menu li{padding-top:1px}\r
-ul.sidebar-menu li a{background-image:none;clear:both;cursor:pointer!important;display:block;margin-right:-1px;outline-style:none;outline-width:medium;padding:8px 0 8px 14px}\r
-.safari ul.sidebar-menu li a{padding:6px 0 6px 14px}\r
-.ie8 ul.sidebar-menu li a{margin-right:0}\r
-ul.sidebar-menu li a span{display:inline-block;width:150px}\r
-ul#primary_nav.sidebar-menu li a span{display:inline-block;width:auto}\r
-ul.sidebar-menu li.loading a{background:#EDFEFF url(https://s3.amazonaws.com/twitter_production/a/1256928834/images/spinner.gif) no-repeat scroll 171px .5em}\r
-ul.sidebar-menu li.loading a span.stat_count{display:none!important}\r
-ul.sidebar-menu li a:hover{background-color:#EDFEFF;text-decoration:none}\r
-ul.sidebar-menu li.active a,a.active{background-color:#EDFEFF;color:#333;font-weight:700}\r
-#side ul.sidebar-actions{margin:.2em 14px 1em}\r
-#side p.no-lists{padding:.5em 14px}\r
-#side span.xref{display:block;padding:4px 14px}\r
-#side p.sidebar-menu-actions{clear:both;display:block;padding:.5em 14px}\r
-#side span.new-list,#side span.view-all{font-size:11px;line-height:11px;margin:0 3px 0 0;padding:0}\r
-#side span.view-all{display:inline;margin:0}\r
-#side span.pipe{border-left:1px solid #C0DEED;padding-left:4px;padding-right:4px}\r
-#side #following span.xref{display:block;margin-top:-5px;padding:0 14px 5px}\r
-h2.sidebar-title{font-size:1.05em;font-weight:400;padding:.2em 14px}\r
-h2.sidebar-subtitle{font-size:1.3em;font-weight:400;padding:.2em 14px}\r
-#side .collapsible h2.sidebar-title{background:transparent url(../img/toggle_up_dark.png) no-repeat scroll right center;width:157px}\r
-#side .collapsible.collapsed h2.sidebar-title{background:transparent url(../img/toggle_down_dark.png) no-repeat scroll right center}\r
-#side div.collapsible.loading h2.sidebar-title{-moz-background-clip:border!important;-moz-background-inline-policy:continuous!important;-moz-background-origin:padding!important;background:transparent url(../img/spinner.gif) no-repeat scroll right center!important}\r
-#side .actions{border:1px solid #87BC44;margin:10px -3px}\r
-#side .actions small{font-size:.9em}\r
-#side .actions a{padding-left:7px}\r
-#side .user_icon > *{padding:0;vertical-align:middle}\r
-#side .stats{clear:both;float:none;margin:0;padding:0;position:relative}\r
-#side .stats td + td{padding:0 5px}\r
-#profile #side .stats td + td{padding:0 8px}\r
-#side .stats td + td + td{padding:0!important}\r
-#side .stats a span.stats_count{color:#333}\r
-#side .smaller span.stats_count{font-size:1.1em!important}\r
-#profile #side .smaller span.stats_count{font-size:1.3em!important}\r
-#side .stats a:hover span.stats_count{color:#2276BB}\r
-#side .stats td .numeric{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;text-decoration:none}\r
-#side .stats td .label{font-size:.9em;text-transform:lowercase}\r
-#side .about li{padding-bottom:3px}\r
-#side .about li#bio{overflow:hidden;width:170px;word-wrap:break-word}\r
-ul#tabMenu li{border-top:1px solid #BDDCAD}\r
-ul#tabMenu a,#side .section h1{color:#4C4C4C;display:block;font-size:110%;font-weight:700;padding:13px;text-decoration:none}\r
-#side .section h1{padding:0 0 .25em}\r
-ul,.ie6 ul.sidebar-menu li{overflow:hidden}\r
-td.column,#side .stats td{padding:0;vertical-align:top}\r
-.status_id,#side #gadgets em,#side .collapsible a.fetch-contents,#side .collapsed .xref,#side .collapsed .sidebar-menu,#rssfeed,#rssfeed .timeline-rss,#rssfeed .search-rss,#rssfeed .favorites-rss,#rssfeed .profile-rss{display:none}\r
-#side .collapsible h2.sidebar-title:hover,#side .user_icon a{cursor:pointer}\r
-#side hr{float:left;width:177px;display:block;border:0;height:1px;margin:7px 0 6px 11px;opacity:.7;background:#C0DEED;color:#C0DEED;}\r
-.ie7 #side hr{width:170px;margin:0 14px;}\r
-.ie#side hr{filter:alpha(opacity=70);}\r
-.notify{text-align:center;line-height:1;padding:5px 0;background-repeat:no-repeat;background-position:left center;margin-bottom:8px;}\r
-.notify div{background-color:#edffe5;font-size:.9em;margin:0 12px 0 24px;padding:10px 5px;-moz-border-radius:5px;-webkit-border-radius:5px;}\r
-#trend_entries, #tools_list{display:none;width: 198px; float: left;margin-top:5px !important;}\r
-#trends, #following, #toolbox{margin-left: -2px;}\r
-#trends_title, #following_title, #toolbox_title{background: transparent url(../img/toggle_down_dark.png) no-repeat scroll right center; font-weight: normal; font-size: 13px; padding-left: 3px; margin-bottom: 0px; margin-top: 0px;width: 177px;cursor:pointer}\r
-#trends_title.loading, #following_title.loading, #toolbox_title.loading{background: transparent url(../img/spinner.gif) no-repeat scroll right center !important;}\r
-#trends_title.open, #following_title.open, #toolbox_title.open{background: transparent url(../img/toggle_up_dark.png) no-repeat scroll right center ! important;}\r
-#following_list {display:none;float:left;padding:10px 10px 0 10px;}\r
-#following_list span {float:left;padding:0 3px 2px 2px;}\r
-#following_list img {padding:0;}\r
-#friends_view_all {font-size:0.9em;padding:0 14px;}\r
-#plz_dont_block_us {background: transparent url(../img/dont_block_us.png) no-repeat scroll center center;display:block;float: left; margin: 10px 0 0 5px;width:180px;height:150px}\r
-#follow_us {float: left; display: block; margin-left: -3px; line-height: 22px;}\r
-#follow_us span {\r
-background-color:#FFFFFF;\r
-color:#666666;\r
-cursor:pointer;\r
-float:left;\r
-font-family:georgia;\r
-font-size:11px;\r
-height:24px;\r
-line-height:24px;\r
-margin:5px;\r
-min-width:78px;\r
-padding:0 5px;\r
-text-align:left;\r
-text-transform:uppercase;\r
-}\r
-#follow_us span:hover {background-color:#eee !important;}\r
-\r
-/* =buttons\r
-----------------------------------------*/\r
-.btn::-moz-focus-inner  {\r
-border:0 none;\r
-}\r
-.btn,input.btn[type=submit],input.btn[type=button]{-moz-border-radius:4px;-webkit-border-radius:4px;-x-system-font:none;background:#DDD url(../img/bg-btn.gif) repeat-x scroll 0 0;border-color:#DDD #DDD #CCC;border-style:solid;border-width:1px;color:#333;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;margin:0;overflow:visible;padding:4px 8px 5px;text-shadow:1px 1px 0 #FFF;width:auto;font: 400 11px/14px "tahoma";cursor:pointer;}\r
-#btn{-moz-border-radius:4px;-webkit-border-radius:4px;-x-system-font:none;background:#DDD url(../img/bg-btn.gif) repeat-x scroll 0 0;border-color:#DDD #DDD #CCC;border-style:solid;border-width:1px;color:#333;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;margin:0;overflow:visible;padding:4px 8px 5px;text-shadow:1px 1px 0 #FFF;width:auto;font: 400 11px/14px "tahoma"}\r
-.btn:hover,.btn:focus,input.btn[type=submit]:hover,input.btn[type=submit]:focus,input.btn[type=button]:hover,input.btn[type=button]:focus,button.btn:hover,button.btn:focus{background-position:0 -6px;border-color:#999 #999 #888;color:#000}\r
-.btn:active,.btn:active,input.btn[type=submit]:active,input.btn[type=button]:active,button.btn:active {\r
-background-image:none !important;\r
-outline:medium none !important;\r
-text-shadow:none !important;\r
-}\r
-#btn:hover,#btn:focus{background-position:0 -6px;border-color:#999 #999 #888;color:#000}\r
-\r
-/* =footer\r
-----------------------------------------*/\r
-#footer ul, #footer li {overflow:visible}\r
-#footer{background:#FFF none repeat scroll 0 0;font-size:12px;line-height:1;margin-top:.7em;padding:8px 0;text-align:center;white-space:nowrap}\r
-#footer li{display:inline;padding:0 4px}\r
-#footer li.first:before{content:'';padding-right:0}\r
-#footer li .share{text-decoration:none;border: 1px dashed #DADADA; padding: 0px 3px; overflow: hidden; cursor: move;}\r
-#footer li .share:hover{text-decoration:none;border: 1px dashed #666;}\r
-#footer li img {border:0 none;margin:-3px;padding:0}\r
-\r
-/* =ranking\r
-----------------------------------------*/\r
-.rank_list{font-size:12px;margin:0 5px 5px 0}\r
-.rank_list li{border-bottom:1px solid #CCC;margin:0 10px;overflow:visible;padding:10px;position:relative}\r
-.rank_content{display:block;line-height:20px;margin-left:63px;min-height:50px;overflow:hidden;position:relative}\r
-.rank_content span{margin:0;color:#666666;}\r
-.rank_count {\r
-color:#333333 !important;\r
-display:block;\r
-font-size:12px;\r
-font-weight:bold;\r
-margin:4px 0;\r
-width:400px;\r
-}\r
-.rank_count b {\r
-color:#666666;\r
-font-size:12px;\r
-font-weight:normal;\r
-}\r
-.rank_description{font-size:12px}\r
-.rank_description b {font-weight:normal;}\r
-.rank_tag{width:400px}\r
-.rank_name{font-size:14px;font-weight:700}\r
-.rank_name em{font-style:normal;font-weight:400}\r
-#rank_tag_list{display:block;font-size:12px;padding:5px 10px;width:200px}\r
-#rank_tag_list li{float:left;margin:4px;white-space:nowrap}\r
-#tag_area{margin:0 auto;width:300px}\r
-#tag_area h2{display:block;margin:15px 30px 0}\r
-#addtag{margin:10px auto;width:250px}\r
-#addtag span{display:inline-block;vertical-align:middle}\r
-.tag_text{margin:5px;padding:3px;width:150px}\r
-#addtag #submit_btn{float:none;margin:10px 40px}\r
-#tag_msg{background:#FFFCAA none repeat scroll 0 0;border:1px solid #FFED00;clear:both;margin:5px auto;padding:5px 10px;width:485px}\r
-\r
-/* =user\r
-----------------------------------------*/\r
-#user_info{clear:both;font-size:12px;padding:5px}\r
-#user_info li{line-height:18px;margin:5px 3px;word-break:break-all;word-wrap:break-word}\r
-#user_info_profile{clear:both;font-size:12px;padding:0 0 5px 5px}\r
-#user_info_profile li{line-height:19px;margin:5px 15px 5px 5px}\r
-#info_head {\r
-background-color:#F6F6F6;\r
-border:1px solid #EEEEEE;\r
-height:70px;\r
-margin:9px;\r
-padding:0;\r
-}\r
-#info_name {\r
-float:left;\r
-font-size:20px;\r
-margin:6px 0 2px 10px;\r
-text-transform:uppercase;\r
-}\r
-#info_relation a {\r
-float:left;\r
-margin:2px 10px 5px 0;\r
-text-decoration:none;\r
-}\r
-#info_headimg {\r
-background-color:#EFEFEF;\r
-border:1px solid #ADADAD;\r
-float:left;\r
-height:48px;\r
-margin:8px 8px 8px 15px;\r
-padding:2px;\r
-width:48px;\r
-}\r
-#info_relation {\r
-display:inline-block;\r
-font-size:12px;\r
-margin:2px 0 0 10px;\r
-width:400px;\r
-}\r
-#subnav {\r
-border-bottom:1px solid #CECECE;\r
-clear:both;\r
-display:block;\r
-font-size:12px;\r
-margin:20px 10px 0;\r
-padding:0 0 5px;\r
-}\r
-#subnav a, #subnav a:hover {\r
-text-decoration:none}\r
-.info_status_body{display:block;line-height:20px;margin-left:5px;overflow:hidden;position:relative}\r
-.info_status_body .status_info{margin:2px 0;text-align:left}\r
-.info_btn, .info_btn_hover {\r
--moz-border-radius:3px;-webkit-border-radius:3px;\r
-background:#EEEEEE none repeat scroll 0 0;\r
-border:1px solid #ADADAD;\r
-color:#75715E;\r
-font-size:12px;\r
-overflow:hidden;\r
-padding:2px 3px;\r
-text-align:center;\r
-text-decoration:none;\r
-vertical-align:middle;\r
-min-width:60px;\r
-text-decoration:none\r
-}\r
-.info_btn_hover{background:#FFF none repeat scroll 0 0;text-decoration:none}\r
-.info_btn:hover{background:#FFF none repeat scroll 0 0;text-decoration:none}\r
-.subnavNormal{-moz-border-radius-topleft:2px;-moz-border-radius-topright:2px;-webkit-border-top-left-radius:2px;-webkit-border-top-right-radius:2px;background:#FFF none repeat scroll 0 0;border-color:#C4C4C4 #C4C4C4 #FFF;border-style:solid;border-width:1px;padding:5px 12px;margin:0 5px 0 0}\r
-.subnavLink{background-color:#F0F0F0;cursor:pointer;font-size:12px;margin:0 5px 0 0;padding:6px 12px 5px}\r
-.subnavLink a, .subnavNormal a, .subnavLink a:hover, .subnavNormal a:hover{text-decoration:none}\r
-.subnavLink:hover{background-color:#E6E6E6;text-decoration:none}\r
-\r
-/* =actions button\r
-----------------------------------------*/\r
-.actions{border-width:0;bottom:10px;line-height:1.25em;position:absolute;right:0px;visibility:hidden;z-index:9;}\r
-.rt_btn,.replie_btn,.favor_btn,.delete_btn,.msg_replie_btn,.msg_delete_btn,.retw_btn,.trans_btn {display:inline-block;height:16px;width:21px;margin:-7px 0;overflow:hidden;text-indent:-9999em;}\r
-.replie_btn,.msg_replie_btn{background:url("../img/sprite_icons.png") no-repeat scroll 4px 1px transparent}\r
-.replie_btn:hover,.msg_replie_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -17px 1px transparent}\r
-.retw_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -15px transparent}\r
-.retw_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -21px -15px transparent}\r
-.favor_btn{background:url("../img/sprite_icons.png") no-repeat scroll 2px -32px transparent}\r
-.favor_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -19px -32px transparent}\r
-.delete_btn,.msg_delete_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -47px transparent}\r
-.delete_btn:hover,.msg_delete_btn:hover{background:transparent url(../img/sprite_icons.png) no-repeat scroll -21px -47px}\r
-.rt_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -63px transparent}\r
-.rt_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -21px -63px transparent}\r
-.trans_btn {background:url("../img/sprite_icons.png") no-repeat scroll -2px -79px transparent}\r
-.trans_btn:hover {background:url("../img/sprite_icons.png") no-repeat scroll -23px -79px transparent}\r
-.trans_header {\r
-border-top:1px solid #AAAAAA;\r
-color:#AAAAAA;\r
-display:block;\r
-margin-top:5px;\r
-padding-top:5px;\r
-}\r
-.trans_body {\r
-display: block;\r
-}\r
-.trans_close {\r
-color:#AAAAAA;\r
-display:block;\r
-float:right;\r
-font-size:12px;\r
-margin-top:7px;\r
-text-decoration:none;\r
-}\r
-/* =search\r
-----------------------------------------*/\r
-#block{font-size:12px;margin:20px}\r
-#search_form {\r
-font-size:12px;\r
-margin:15px;\r
-padding:0 0 10px;\r
-text-align:center;\r
-}\r
-#query {\r
-border:1px solid #999999;\r
-display:block;\r
-float:left;\r
-font-family:Helvetica,Arial,Sans-serif;\r
-font-size:18px;\r
-height:24px;\r
-margin-bottom:25px;\r
-margin-left:45px;\r
-padding:4px 0;\r
-text-indent:10px;\r
-width:300px;\r
-}\r
-#header_search form  {\r
-height:26px;\r
-width:175px;\r
-}\r
-#header_search_query {\r
-border-color:#999999;\r
-border-style:solid none solid solid;\r
-border-width:1px medium 1px 1px;\r
-float:left;\r
-font-size:12px;\r
-height:14px;\r
-line-height:18px;\r
-padding:5px 0;\r
-text-indent:5px;\r
-width:144px;\r
-}\r
-#header_search_submit {\r
-background:url("../img/nav_search_submit.png") repeat scroll -2px 0 transparent !important;\r
-border:1px solid #999999;\r
-color:#555555;\r
-cursor:pointer;\r
-float:left;\r
-font-size:14px;\r
-height:26px;\r
-line-height:26px;\r
-text-align:center;\r
-width:28px; \r
-}\r
-#header_search_submit:hover {\r
-background:transparent url(../img/nav_search_submit.png) repeat scroll -2px -25px!important;\r
-outline:none\r
-}\r
-#header_search_submit:focus, #header_search_submit:active {\r
-background:transparent url(../img/nav_search_submit.png) repeat scroll -2px -50px!important;\r
-outline:none\r
-}\r
-\r
-/* =setting\r
-----------------------------------------*/\r
-.desc{padding:5px !important;background-color:#F2F2F2}\r
-#setting_table{font-size:12px;margin:10px 0 0 20px}\r
-#setting_table tr td  {\r
-line-height:20px;\r
-padding:5px 0;\r
-text-align:left;\r
-}\r
-#style_table{font-size:12px;margin:10px 0 0 20px}\r
-#style_table tr td{padding:5px 0;text-align:center}\r
-#setting_nav{border-bottom:1px solid #CECECE;clear:both;display:block;font-size:12px;margin:20px 15px 0;padding:0 0 5px}\r
-.setting_title {\r
-display:block;\r
-margin:0 10px 0 0;\r
-width:50px;\r
-}\r
-.setting_input, .style_input {\r
-border:1px solid #A7A6AA;\r
-padding:3px;\r
-width:280px;\r
-}\r
-#setting_text {\r
-border:1px solid #A7A6AA;\r
-font-size:12px;\r
-height:80px;\r
-overflow:auto;\r
-padding:3px;\r
-width:280px;\r
-}\r
-.style_title{display:block;width:100px}\r
-.style_input{width:180px}\r
-#style_form{margin-bottom:10px;margin-top:10px}\r
-/*new styles below*/\r
-fieldset.settings {border: 1px solid #CECECE; margin: 15px; padding: 10px}\r
-fieldset.settings legend{padding:0 5px}\r
-fieldset.settings select{border: 1px solid #CECECE;padding: 2px; vertical-align: middle; font-size: 12px; margin-left: 5px;}\r
-fieldset.settings input{border: 1px solid #CECECE;padding: 2px; font-size: 12px;}\r
-fieldset.settings textarea{border:1px solid #CECECE;font-size:12px;height:100px;margin-top:10px;width:489px}\r
-fieldset.settings label, fieldset.settings small, fieldset.settings input{vertical-align:middle;margin-right:2px;margin-top:1px}\r
-fieldset.settings small {font-size:11px}\r
-#save_button{padding: 5px 20px; float: left; cursor: pointer; margin-left: 15px;font-size:13px;}\r
-#reset_link{float: right; margin-top: 10px; margin-left: 10px; position: absolute; left: 440px;text-decoration:underline}\r
-#reset_link:hover{color:red}\r
-\r
-/* =all.php\r
-----------------------------------------*/\r
-#allNav{margin-left:10px;float:left}\r
-.allBtn{-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;background-color:#E0E0E0;border-left:1px solid #ADADAD;border-right:1px solid #ADADAD;border-top:1px solid #ADADAD;color:#75715E;display:inline-block;float:left;font-size:12px;margin:10px 10px -10px 0;padding:2px 20px;text-align:center}\r
-.allBtn:hover{background-color:#F2F2F2;text-decoration:none}\r
-.allHighLight{background-color:#FFF}\r
-\r
-/* =lists\r
-----------------------------------------*/\r
-#list_action{display:block;margin:7px 0}\r
-#list_action a{margin:0 5px 0 0;text-decoration:none}\r
-#list_form span{display:block;margin:10px 0;vertical-align:top}\r
-#list_form span label{display:inline-block;margin:0 2px 0 5px;text-align:left;vertical-align:top;width:70px}\r
-#list_description,#list_name{border:1px solid #CCC;font-size:12px;padding:3px;width:290px}\r
-#list_form span textarea{border:1px solid #CCC;font-size:12px;height:100px;width:290px}\r
-#list_protect{width:16px}\r
-#list_submit{margin-left:220px;width:60px}\r
-#list_form{-moz-border-radius:8px;-webkit-border-radius:8px;background-color:#F5F5F5;border:3px solid #CCC;display:none;margin:0 auto;padding:10px 10px 0;width:390px}\r
-#list_create_btn{display:block;margin-bottom:10px;text-align:center}\r
-#member_form{-moz-border-radius:8px;-webkit-border-radius:8px;background-color:#F5F5F5;border:4px solid #CCC;font-size:12px;padding:5px;position:absolute}\r
-#member_form span{display:block;font-size:12px;margin:5px;text-align:center}\r
-#list_members{font-size:12px;height:70px;padding:3px;width:266px}\r
-#member_submit,#list_submit,#member_cancel{padding:2px 4px}\r
-.list_delete_btn{margin-top:5px}\r
-\r
-/* =feedback\r
-----------------------------------------*/\r
-#feedbackLabel{-moz-border-radius-bottomleft:5px;-moz-border-radius-topleft:5px;-webkit-border-bottom-left-radius:5px;-webkit-border-top-left-radius:5px;background:#C0DEED url(../img/beta.png) no-repeat scroll 5px center;border-color:#FFF;border-style:solid;border-width:2px 0 2px 2px;display:block;height:53px;outline-color:0;outline-style:none;outline-width:medium;position:fixed!important;right:0;text-indent:-9999px;top:310px;width:24px}\r
-#feedbackLabel:hover{width:26px}\r
-\r
-/* =fieldsets\r
-----------------------------------------*/\r
-fieldset.common-form{border:0 none;margin:0}\r
-fieldset.common-form p{margin:0 0 5px}\r
-fieldset.common-form th,fieldset.common-form td{padding:9px 7px 3px 3px}\r
-fieldset.common-form th{font-weight:400;padding-top:10px;text-align:right;width:11em}\r
-fieldset.common-form small{color:#777;font-size:.97em}\r
-fieldset.common-form input[type=text],fieldset.common-form input[type=password],fieldset.common-form textarea,fieldset.common-form select,fieldset.common-form checkbox{border:1px solid #AAA;padding:4px 2px}\r
-fieldset.common-form input[type=text],fieldset.common-form input[type=password]{width:12em}\r
-fieldset.common-form input.medium[type=text],fieldset.common-form textarea.medium{width:50%}\r
-fieldset.common-form input.wider[type=text],fieldset.common-form textarea.wider{width:75%}\r
-fieldset.common-form input.widest[type=text],fieldset.common-form textarea.widest{width:100%}\r
-fieldset.common-form label{font-weight:400;white-space:nowrap}\r
-fieldset.common-form ul li{padding:5px 0}\r
-fieldset.common-form ul li label{display:block;font-weight:700}\r
-fieldset.common-form ul li label sup{color:#888}\r
-fieldset.common-form table.input-form th{vertical-align:top}\r
-fieldset.common-form .instruction,fieldset.common-form .example,fieldset.common-form .required{color:#666;font-size:x-small;font-weight:400}\r
-fieldset.common-form .instruction,fieldset.common-form .example{margin-top:.5em}\r
-fieldset.common-form .example{font-style:oblique}\r
-fieldset.common-form .suggestion{color:red}\r
-fieldset.vertical-form input[type=text]{width:165px}\r
-div.direct-message-box fieldset.standard-form{padding:10px 90px;width:548px}\r
-.ie6 .standard-form .info{background:transparent none repeat scroll 0 0;border:0 none}\r
-fieldset.common-form td[colspan=2]{text-align:right}\r
-\r
-/* =Tipsy\r
-----------------------------------------*/\r
-.tipsy  {\r
-background-image:url("../img/tipsy.gif");\r
-background-repeat:no-repeat;\r
-opacity:0.8;\r
-padding:5px;\r
-font-size:12px;\r
-}\r
-.tipsy-inner {\r
-background-color:#000000;\r
-color:white;\r
-font:11px;\r
-max-width:200px;\r
-padding:8px;\r
-text-align:left;\r
-}\r
-.tipsy-inner { -moz-border-radius:4px; -webkit-border-radius:4px; }\r
-.tipsy-north {\r
-background-position:center top;\r
-}\r
-.tipsy-south {\r
-background-position:center bottom;\r
-}\r
-.tipsy-east {\r
-background-position:right center;\r
-}\r
-.tipsy-west {\r
-background-position:left center;\r
-}\r
-\r
-/* =New Feature Tip\r
-----------------------------------------*/\r
-#newtip {\r
-color:#333333;\r
-cursor:default;\r
-font-size:11px;\r
-line-height:18px;\r
-position:absolute;\r
-background-image:url("../img/tipsy.gif");\r
-background-repeat:no-repeat;\r
-opacity:0.8;\r
-padding:5px;\r
-display:none;\r
-}\r
-#newtip_inner {\r
--moz-border-radius:4px;\r
--webkit-border-radius:4px;\r
-border-radius:4px;\r
--moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.5);\r
--webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.5);\r
-box-shadow:0 1px 2px rgba(0, 0, 0, 0.5);\r
-background-color:#000000;\r
-color:#DDDDDD;\r
-max-width:200px;\r
-padding:8px;\r
-text-align:left;\r
-}\r
-#newtip_inner span {\r
--moz-border-radius:3px 3px 3px 3px;\r
-background-color:#333333;\r
-font-size:12px;\r
-padding:2px 4px;\r
-}\r
-#newtip_inner strong {\r
-font-size:12px;\r
-}\r
-.a_close {\r
-color:#666666;\r
-font:bold 16px/12px tahoma,sans-serif;\r
-margin-left:10px;\r
-position:absolute;\r
-right:7px;\r
-text-decoration:none;\r
-top:10px;\r
-width:15px;\r
-}\r
-.a_close:hover {\r
-color:#FFFFFF;\r
-text-decoration:none;\r
-}\r
-/* =Avatar Menu\r
-----------------------------------------*/\r
-.right_menu .menu button.clicked {\r
-background-image:none;\r
-}\r
-.right_menu {\r
-background-color:#FFFFFF;\r
-border:1px solid #666666;\r
-display:none;\r
-margin-left:24px;\r
-margin-top:24px;\r
-padding:4px 0;\r
-position:absolute;\r
-text-align:left;\r
-width:200px;\r
-z-index:9999;\r
-}\r
-.right_menu li {\r
-margin:0 !important;\r
-padding:0 !important;\r
-text-align:left;\r
-position:static;\r
-}\r
-.right_menu li a, .right_menu li label, .right_menu li input[type="checkbox"] {\r
-color:#666666;\r
-display:inline-block;\r
-font:11px 'Lucida Grande',Arial,sans-serif;\r
-padding:4px 5px;\r
-position:relative;\r
-vertical-align:top;\r
-}\r
-.right_menu li .loading-spinner {\r
-display:inline-block;\r
-left:1px;\r
-margin-left:4px;\r
-position:relative;\r
-top:4px;\r
-}\r
-.right_menu li a {\r
-padding:4px 5px 4px 27px;\r
-text-decoration:none;\r
-color:#666666;\r
-display:block;\r
-}\r
-.right_menu li a:hover {\r
-text-decoration:none !important;\r
-}\r
-.right_menu li:hover {\r
-background-color:#666666;\r
-color:#FFFFFF;\r
-}\r
-.right_menu li:hover * {\r
-color:#FFFFFF;\r
-}\r
-.right_menu li.divider {\r
-border-top:1px solid #DDDDDD;\r
-}\r
-.right_menu i {\r
-background-image:url("../img/sprite-icons.png");\r
-background-repeat:no-repeat;\r
-display:inline-block;\r
-height:13px;\r
-outline:medium none;\r
-overflow:hidden;\r
-width:13px;\r
-}\r
-.right_menu a i {\r
-left:7px;\r
-position:absolute;\r
-top:4px;\r
-width:15px;\r
-}\r
-.right_menu .rm_mention i, .right_menu .ul_mention i {\r
-background-position:-16px -32px;\r
-}\r
-.right_menu .rm_mention:hover i, .right_menu .ul_mention:hover i {\r
-background-position:0 -32px;\r
-}\r
-.right_menu .rm_dm i, .right_menu .ul_dm i {\r
-background-position:-48px -32px;\r
-}\r
-.right_menu .rm_dm:hover i, .right_menu .ul_dm:hover i {\r
-background-position:-32px -32px;\r
-}\r
-.right_menu .rm_follow i, .right_menu .ul_follow i {\r
-background-position:-176px -32px;\r
-}\r
-.right_menu .rm_follow:hover i, .right_menu .ul_follow:hover i {\r
-background-position:-160px -32px;\r
-}\r
-.right_menu .rm_remove i, .right_menu .ul_remove i {\r
-background-position:-208px -32px;\r
-}\r
-.right_menu .rm_remove:hover i, .right_menu .ul_remove:hover i {\r
-background-position:-192px -32px;\r
-}\r
-.right_menu .rm_unfollow i, .right_menu .ul_unfollow i {\r
-background-position:-112px -32px;\r
-}\r
-.right_menu .rm_unfollow:hover i, .right_menu .ul_unfollow:hover i {\r
-background-position:-96px -32px;\r
-}\r
-.right_menu .rm_block i, .right_menu .ul_block i {\r
-background-position:-144px -32px;\r
-}\r
-.right_menu .rm_spam i, .right_menu .ul_spam i {\r
-background-position:-272px -32px;\r
-}\r
-.right_menu .rm_spam:hover i, .right_menu .ul_spam:hover i {\r
-background-position:-256px -32px;\r
-}\r
-.right_menu .rm_block:hover i, .right_menu .ul_block:hover i {\r
-background-position:-128px -32px;\r
-}\r
-.right_menu .rm_unblock i, .right_menu .ul_unblock i {\r
-background-position:-144px -32px;\r
-}\r
-.right_menu .rm_unblock:hover i, .right_menu .ul_unblock:hover i {\r
-background-position:-128px -32px;\r
-}\r
-\r
-/* =Twitter Buttons\r
-----------------------------------------*/\r
-.btn-m,input[type=submit].btn-m,input[type=button].btn-m{background-position:0 -200px;font-size:15px;line-height:20px;padding:5px 15px 6px;-moz-border-radius:5px;-khtml-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}.btn-l,input[type=submit].btn-l,input[type=button].btn-l{background-position:0 -400px;font-size:20px;line-height:26px;padding:7px 20px 9px;-moz-border-radius:6px;-khtml-border-radius:6px;-webkit-border-radius:6px;border-radius:6px;}.btn-light{background-color:#add!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-light.gif")!important;border-color:#add #add #9cc!important;text-shadow:1px 1px 0 #dff!important;}.btn-dark{background-color:#59a!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-dark.gif")!important;border-color:#59a #59a #489!important;color:#fff!important;text-shadow:-1px -1px 0 #59a!important;}.btn-blue{background-color:#39d!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-blue.gif")!important;border-color:#39d #39d #28c!important;color:#fff!important;text-shadow:-1px -1px 0 #39d!important;}.btn-chart{background-color:#9c2!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-chart.gif")!important;border-color:#9c2 #9c2 #8b1!important;text-shadow:1px 1px 0 #df6!important;}.btn-mint{background-color:#bdb!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-mint.gif")!important;border-color:#bdb #bdb #aca!important;text-shadow:1px 1px 0 #efe!important;}.btn-green{background-color:#272!important;background-image:url("../img/bg-btn-green.gif")!important;border-color:#272 #272 #161!important;color:#fff!important;text-shadow:-1px -1px 0 #272!important;}.btn-pink{background-color:#daa!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-pink.gif")!important;border-color:#daa #daa #c99!important;text-shadow:1px 1px 0 #fdd!important;}.btn-red{background-color:#a22!important;background-image:url("../img/bg-btn-red.gif")!important;background-position:0 0;border-color:#a22 #a22 #911!important;text-shadow:-1px -1px 0 #a22!important;color:#fff!important;}.btn:hover,.btn:focus,input[type=submit].btn:hover,input[type=submit].btn:focus,button.btn:hover,button.btn:focus{border-color:#999 #999 #888;background-position:0 -6px;color:#000;}.btn-light:hover,.btn-light:focus{border-color:#7aa #7aa #699;}.btn-dark:hover,.btn-dark:focus{border-color:#267 #267 #156;color:#fff;}.btn-blue:hover,.btn-blue:focus{border-color:#17b #17b #06a;color:#fff;}.btn-chart:hover,.btn-chart:focus{border-color:#7a1 #7a1 #690;}.btn-mint:hover,.btn-mint:focus,input[type=submit].btn-mint:hover,input[type=submit].btn-mint:focus,button.btn-mint:hover,button.btn-mint:focus{border-color:#8a8 #8a8 #797!important;}.btn-green:hover,.btn-green:focus,input[type=submit].btn-green:hover,input[type=submit].btn-green:focus,button.btn-green:hover,button.btn-green:focus{background-color:#272!important;border-color:#050 #050 #040!important;color:#fff;}.btn-pink:hover,.btn-pink:focus,input[type=submit].btn-pink:hover,input[type=submit].btn-pink:focus,button.btn-pink:hover,button.btn-pink:focus{border-color:#a88 #a88 #977!important;}.btn-red:hover,.btn-red:focus,input[type=submit].btn-red:hover,input[type=submit].btn-red:focus,button.btn-red:hover,button.btn-red:focus{background-color:#a22!important;border-color:#611 #611 #500!important;color:#fff;}.btn-m:hover,.btn-m:focus,input[type=submit].btn-m:hover,input[type=submit].btn-m:focus,button.btn-m:hover,button.btn-m:focus{background-position:0 -206px;}.btn-l:hover,.btn-l:focus,input[type=submit].btn-l:hover,input[type=submit].btn-l:focus,button.btn-l:hover,button.btn-l:focus{background-position:0 -406px;}.dbtn,.dbtn:hover,.dbtn:focus,.dbtn:active,button.dbtn:hover,button.dbtn:focus{background:#eee;border-color:#ddd;color:#aaa;text-shadow:none;}.btn-light.dbtn,.btn-light.dbtn:hover,.btn-light.dbtn:focus,.btn-light.dbtn:active{background:#dee;border-color:#cdd;color:#9aa;}.btn-dark.dbtn,.btn-dark.dbtn:hover,.btn-dark.dbtn:focus,.btn-dark.dbtn:active{background:#aad5dd;border-color:#99c5cc;color:#ddf6f6;}.btn-blue.dbtn,.btn-blue.dbtn:hover,.btn-blue.dbtn:focus,.btn-blue.dbtn:active{background:#bde;border-color:#acd;color:#def;}.btn-chart.dbtn,.btn-chart.dbtn:hover,.btn-chart.dbtn:focus,.btn-chart.dbtn:active{background:#deb;border-color:#cda;color:#ab9;}.btn-mint.dbtn,.btn-mint.dbtn:hover,.btn-mint.dbtn:focus,.btn-mint.dbtn:active{background:#ded;border-color:#cdc;color:#9a9;}.btn-green.dbtn,.btn-green.dbtn:hover,.btn-green.dbtn:focus,.btn-green.dbtn:active{background:#aca;border-color:#9b9;color:#ded;}.btn-pink.dbtn,.btn-pink.dbtn:hover,.btn-pink.dbtn:focus,.btn-pink.dbtn:active{background:#edd;border-color:#dcc;color:#a99;}.btn-red.dbtn,.btn-red.dbtn:hover,.btn-red.dbtn:focus,.btn-red.dbtn:active{background:#caa;border-color:#b99;color:#edd;}\r
+/*----------------------------------------
+Embr main.css
+Author:disinfeqt
+Platform:open source
+Version:0084
+----------------------------------------*/
+
+/*elements*/
+body{background:#C0DEED url(../img/bg-clouds.png) repeat-x scroll 0 0;font-family:"Lucida Grande",Tahoma,Arial,sans-serif;font-size:13px;margin:0;background-attachment:fixed}
+*{margin:0;padding:0}
+a{color:#2276BB;text-decoration:none}
+li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-transition:all .5s ease-out;-webkit-transition:all .5s ease-out}
+img{border:medium none}
+h2{clear:both;display:block;float:left;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;font-size:20px;font-weight:400;line-height:1.1;margin:8px 0 0 10px;cursor:default}
+.wrapper{margin:1em auto;position:relative;width:763px}
+.content-bubble-arrow{background-image:url(../img/arr2.gif);background-position:25px 0;background-repeat:no-repeat;margin-top:1em;padding-top:11px}
+.columns{margin-bottom:15px;width:100%}
+.round{border-radius:5px}
+.round-right{border-radius:0 5px 5px 0}
+.round-left{border-radius:5px 0 0 5px}
+.clear{clear:both}
+::selection{background:rgba(82,168,236,.25);color:#333}
+#error{padding:40px;text-align:center}
+#sidename,ul.sidebar-menu li a span.stat_count,#side #local_trend_locations li,#home #rssfeed,#search #rssfeed,#profile #rssfeed,#profile_favorites #rssfeed,#favorites #rssfeed,#home #rssfeed .timeline-rss,#search #rssfeed .search-rss,#profile #rssfeed .profile-rss,#favorites #rssfeed .favorites-rss,#profile_favorites #rssfeed .favorites-rss,#side .stats .stats_count,fieldset.vertical-form label,fieldset.vertical-form input{display:block}
+.timeline li:hover a,.rank_list li:hover a,#user_stats a:hover,#info_block_btn:hover,#side .promotion a:hover,#side .stats a:hover{text-decoration:none}
+a:hover,.timeline li:hover a:hover,.rank_list li:hover a:hover,#side .user_icon a:hover #me_tweets,#side .stats a:hover .label{text-decoration:underline}
+#left,#sidenav a:hover,.allHighLight{background-color:#FFF}
+#user_info li span,#user_info_profile li span,#side .about .label{font-weight:700}
+
+/* header*/
+header{margin:1em auto;text-align:right;width:766px}
+#content{margin:1em auto;width:766px}
+#logo img{left:0;margin-top:-2px;position:absolute}
+nav{background-color:#FFF;display:inline-block;padding:0 .8em;white-space:nowrap;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-ms-transition:all .5s ease-out}
+nav li{float:left;padding:4px 8px;line-height:18px}
+nav:hover{box-shadow:0 0 10px #2276BB;-webkit-box-shadow:0 0 10px #2276BB}
+nav a{border-radius:3px;padding:0 2px}
+nav a:hover{background-color:#DDEEF6;text-decoration:none}
+nav li .share{text-decoration:none;padding:0 3px;overflow:hidden;cursor:move}
+
+/*status form*/
+#tweeting_controls{float:right;padding:5px 12px 0 5px}
+#tweeting_controls a{line-height:13px}
+a.a-btn, a.a-btn:visited{color:#333!important}
+a.a-btn{border-radius:4px;background:url("../img/bg-btn.gif") repeat-x scroll 0 0 #DDD;border-color:#DDD #DDD #CCC!important;border-style:solid;border-width:1px!important;cursor:pointer;display:inline-block;font-family:"lucida grande",helvetica,tahoma,arial;font-size:11px;line-height:14px;padding:4px 8px 5px;text-decoration:none;text-shadow:1px 1px 0 #FFF!important;-moz-transition:all .5s ease-out;-webkit-transition:all .5s ease-out;-ms-transition:all .5s ease-out}
+a.btn-disabled{background-image:none;opacity:0.6}
+a.a-btn-m{border-radius:5px;background-position:0 -200px;font-family:"helvetica neue",arial,sans-serif;font-size:15px;line-height:20px;padding:5px 15px 6px}
+a.a-btn:hover, a.a-btn:focus{border-color:#999 #999 #888!important;color:#000;outline:medium none;text-decoration:none}
+a.a-btn:active{background-image:none;outline:medium none}
+
+/*legacy below*/
+#statuses,#ajax_statuses{background-color:#FFF;float:left;padding:10px;width:544px}
+#statuses form{margin-bottom:10px}
+#tip{color:#CCC;float:right;font-size:24px;margin:5px 10px 0 0;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif}
+#tip.loading{background:url("../img/spinner.gif") no-repeat scroll center center transparent!important;color:transparent!important}
+#textbox{border-radius:3px;border:1px solid #A7A6AA;font-size:14px;height:80px;margin:2px 0 5px 10px;overflow-x:hidden;overflow-y:auto;padding:5px;width:510px;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-ms-transition:all .5s ease-out}
+textarea#textbox:focus{outline:none;border:1px solid rgba(82,168,236,.75)!important;box-shadow:0 0 8px rgba(82,168,236,.5)!important;-webkit-box-shadow:0 0 8px rgba(82,168,236,.5)!important}
+textarea#textbox:hover{outline:none;border:1px solid rgba(167,166,170,.75);box-shadow:0 0 5px rgba(167,166,170,.5);-webkit-box-shadow:0 0 8px rgba(167,166,170,.5)}
+#submit_btn,.submit_btn{background:transparent url(../img/round-btn.gif) repeat scroll 0 0;border:medium none;color:#666;float:right;font-size:14px;height:32px;margin:5px 13px 0 0;width:115px}
+#submit_btn:hover,#login_btn:hover,#rank_addtag_btn:hover,.submit_btn:hover{background:transparent url(../img/round-btn.gif) repeat scroll 0 32px;color:#444;cursor:pointer}
+#submit_btn:active{color:#000;cursor:pointer}
+#func_set{clear:left;display:block;float:left;left:190px;position:absolute;top:33px}
+.func_btn{background-image:url("../img/ui_icons.png");background-color:#FFF;border-radius:3px;border:1px solid #ADADAD;color:#75715E;display:block;float:left;font-size:11px;margin:0 -5px 0 10px;text-align:center;text-decoration:none;text-indent:-9999em;height:16px;width:20px;cursor:pointer}
+.func_btn:hover{background-color:#F2F2F2;text-decoration:none}
+#transRecover{border-radius:0 0 0 3px;display:none;background-color:#FFF;background-image:url("../img/ui_icons.png");border:1px solid #ADADAD;color:#75715E;cursor:pointer;float:left;font-size:11px;height:16px;margin:0 -5px 0 10px;text-align:center;text-decoration:none;text-indent:-9999em;background-position:-32px -64px;bottom:58px;left:515px;position:absolute;top:58px;width:15px}
+#transRecover:hover{background-color:#F2F2F2;text-decoration:none}
+#photoArea,#transArea,#filterArea,#symArea{border-radius:3px;background:#F5F5F5 none repeat scroll 0 0;border:1px solid #A7A6AA;clear:both;display:none;height:20px;left:20px;padding:10px 10px 60px;position:absolute;top:58px;width:500px}
+#symArea{overflow-x:hidden;overflow-y:auto}
+#symArea span{border-radius:3px;background-color:#EEE;border:1px solid transparent;color:#000;display:block;float:left;font-size:12px;line-height:18px;margin:0 10px 5px 0;min-width:60px;padding:1px 2px;text-align:center;white-space:nowrap}
+#symArea span:hover{border:1px solid #666;cursor:pointer}
+#filterArea .filter_input{border:1px solid #A7A6AA;font-size:13px;height:17px;margin:10px 0 5px;padding:3px 2px;width:300px}
+.close{background:transparent url(../img/sprite-icons.png) no-repeat scroll -272px -16px;text-decoration:none;position:absolute;top:10px;right:10px;height:10px;width:9px}
+#sent_function{float:left;margin:4px 0 0 10px}
+#imageFile{margin:10px 0;padding:2px}
+#autoBtn.pause{background-position:-15px -160px}
+#autoBtn.start{background-position:1px -160px}
+#currently{color:#666;float:left;font-size:11px!important;margin:3px 8px 0 10px;overflow:hidden;padding:2px 4px 2px 0;text-align:left;width:385px;word-wrap:break-word;cursor:pointer}
+.status-text a{color:#666}
+#latest_meta a{color:#999}
+
+/*tips*/
+#shortcutTip{border-radius:5px;border:2px solid #FFF;color:#FFF;cursor:default;display:block;font-size:20px;font-weight:700;left:20px;opacity:0.8;padding:8px 16px;position:fixed;top:20px}
+#sentTip{background:#FFF;border-radius:0 0 5px 5px;font-size:11px!important;font-weight:700;left:auto;right:auto;padding:4px 0 6px;margin:-1px 0 0 233px;position:fixed;text-align:center;top:0;width:300px;min-height:13px;z-index:1000;opacity:0.8}
+.ing{color:#2276BB}
+.success{color:green}
+.failure{color:red}
+
+/*timeline*/
+#allTimeline,#allReplies,#allMessage{margin:10px;padding:0;clear:both}
+.timeline embed{margin:10px 0 0 10px}
+.tweetcount{display:inline}
+.new{background-color:#E3F1FA;color:#858585;display:none;float:left;font-size:11px;text-align:center;width:522px}
+.mine{display:none;background-color:#E8FFED}
+.reply{background-color:#E8FECD}
+.filter{background-color:#FFC}
+.retweet{background-color:#FFFFE5}
+.faved{background:transparent url(../img/sprite-icons.png) no-repeat scroll -64px 0;height:15px;width:15px!important;display:inline-block;outline:medium none;overflow:hidden;position:absolute;top:10px;margin-left:500px}
+.user_name{font-weight:700}
+.timeline{margin:0 10px}
+.timeline li{border-top:1px solid #EFEFEF;cursor:default;display:block;float:left;margin:0;overflow:visible;padding:10px 25px 5px 2px;position:relative;width:497px;-moz-transition:all .5s ease-out;-webkit-transition:all .5s ease-out}
+.timeline li:hover .actions{display:inline}
+.ajax_timeline li{cursor:default;display:block;float:left;margin:0;overflow:visible;padding:5px 0;width:520px;position:relative}
+.ajax_timeline li .status_body{margin-left:50px!important;margin-right:5px!important}
+.status_body{display:block;line-height:22px;margin-left:60px;overflow:hidden;position:relative}
+.status_info{color:#999;display:block;font-size:11px;height:22px;margin:5px 0 0;overflow:hidden;text-align:left;width:100%}
+.status_info a{color:#999;font-size:11px;text-decoration:none}
+.status_info span{display:inline-block;margin:0 0 3px;padding:0 1px}
+.status_info span.source{display:inline;max-width:180px;overflow:hidden;padding-right:3px;white-space:nowrap}
+.embr{color:#3CF!important}
+.timeline li:hover,.rank_list li:hover{background-color:#F2F2F2}
+.status_author{height:48px;left:5px;padding:1px;position:absolute;width:48px}
+li.loading .status_author,li.loading .rank_img{background:url("../img/spinner.gif") no-repeat scroll center center transparent!important;outline:4px solid #BBB}
+li.loading #avatar{opacity:0.2}
+.rank_img{top:15px;left:10px;position:absolute;width:48px;height:48px}
+.status_author img,.rank_img img,#avatar{height:48px;width:48px;border-radius:5px}
+
+#thumb_pic{display:block;margin:5px 0}
+#thumb_pic img{padding:3px;border:1px solid #ccc;max-width:420px;max-height:420px;box-shadow:0 1px 2px rgba(0,0,0,.25);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.25)}
+.hashtag{font-weight:700}
+#empty{font-size:16px;font-weight:700;margin:50px;text-align:center}
+#description{font-size:14px;padding:10px}
+#description p{line-height:22px;margin:15px}
+.big-retweet-icon{background-image:url(../img/sprite-icons.png);background-position:-128px -64px;background-repeat:no-repeat;display:inline-block;height:14px;position:relative;top:2px;width:18px}
+/*new below*/
+.ajax_form{background-color:#FFF;border:1px solid #A7A6AA;float:left;margin:5px 0 5px -1px;padding:0;width:520px}
+.ajax_form li{border-top:1px solid #EFEFEF;cursor:default;display:block;float:left;margin:0;overflow:visible;padding:5px 25px 5px 0;position:relative;width:495px}
+.ajax_form li .status_author{height:30px;left:5px;margin-left:5px;margin-top:6px;padding:1px;position:absolute;width:30px}
+.ajax_form li .status_body{display:block;line-height:22px;margin-left:50px;margin-right:5px;overflow:hidden;position:relative}
+/*pagination*/
+#pagination{margin:5px}
+#pagination p.no-more-tweets{font-size:1.1em;text-align:center}
+.more{background-color:#FFF;background-image:url(../img/more.gif);background-position:left top;background-repeat:repeat-x;border-color:#DDD #AAA #AAA #DDD;border-style:solid;border-width:1px;display:block;font-size:14px;font-weight:700;height:22px;line-height:1.5em;margin-bottom:6px;outline-color:0;outline-style:none;outline-width:medium;padding:6px 0;text-align:center;text-shadow:1px 1px 1px #FFF;width:45%}
+.more:hover{background-position:left -78px;border:1px solid #bbb;text-decoration:none}
+.more:active{background-position:left -38px;color:#666}
+.more.loading{background-color:#fff;background-image:url(../img/ajax.gif);background-position:50% 50%;background-repeat:no-repeat;border:1px solid #eee;cursor:default!important}
+.more::-moz-focus-inner{border:0}
+#pagination.pagination{height:1.5em}
+#pagination.pagination a,#pagination.pagination .link-like{border:1px solid #cecece;float:right;margin:0 0 0 10px;padding:.25em 1em}
+
+/*sidebar*/
+#side_base{border-radius:0 5px 5px 0;background-color:#DDEEF6;border-left:1px solid #C0DEED;line-height:1.2;vertical-align:top;width:198px}
+#side{border-radius:0 5px 5px 0;float:left;font-size:90%;margin:0 -2px;overflow:hidden;padding-top:.5em;width:198px}
+#sideimg{float:left;margin:10px 10px 10px 15px;height:40px;width:40px;border-radius:5px;box-shadow:0 1px 2px rgba(0,0,0,.25);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.25)}
+#sideid{display:block;padding:10px 0 0 18px;margin-bottom:5px}
+#side_name{font:bold 1.3em/1.3em Helvetica Neue,Helvetica,sans-serif;color:#2276BB;margin-right:1px}
+#profileRefresh i{background:url(../img/refresh.png) no-repeat;width:16px;height:16px;display:inline-block}
+.refreshing i{background:url(../img/ajax.gif)!important}
+#me_tweets{font-family:Helvetica,Arial,sans-serif;font-size:90%}
+#update_count{font-weight:700}
+#user_stats{clear:both;padding:0 0 0 10px}
+#user_stats li{display:inline-block;float:left;overflow:hidden;padding:0 5px;width:48px}
+.count{display:block;font:bold 13px Helvetica Neue,Helvetica,Arial,sans-serif}
+.label{display:block;font-size:11px}
+#sidenav{border-top:1px solid #CCC;margin:0}
+#sidenav a{background-color:#F4F4F4;border-bottom:1px solid #CCC;color:#000;display:block;font-size:13px;font-weight:700;padding:10px;text-decoration:none}
+h3{font-size:14px;margin:14px 0 0 14px}
+#sidepost{margin:0;padding-bottom:0}
+#sidepost li{font-size:12px;line-height:18px;margin:12px 10px}
+#side .promotion{background-color:#EDFEFF;font-size:12px;margin:.5em auto;padding:6px 10px;text-align:left;width:152px}
+#side .promotion a{color:#333;font-size:11px;outline-style:none;outline-width:medium}
+#side .promotion a.definition:hover strong{font-size:11px;outline-style:none;outline-width:medium;text-decoration:underline}
+#side .promotion .definition strong{color:#2276BB;display:block;font-size:11px}
+#indicator{cursor:pointer}
+#tip_reset{text-decoration:underline;cursor:pointer}
+#tip_reset:hover{color:red}
+#sidebarTip_more{display:none}
+#side .notice{background-color:#FFF;margin:.5em auto 1em;padding:10px;text-align:center}
+#side div.section{padding:13px}
+#side div#profile.section{margin-bottom:0;padding:.2em}
+#side div.last{border-top:1px solid #C0DEED}
+#side h1{color:#333;font-size:1.1em;margin-bottom:.5em;padding:0 0 2px}
+#side div.section-header h3{border-bottom:1px solid #C0DEED;color:#333;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;line-height:18px}
+#side .section-links{float:right;font-size:.9em;text-align:right}
+#side div.msg strong{display:block;font-size:1.4em}
+#side div.msg h3{font-size:1.25em}
+#side ul{margin:0}
+#side .faq-index ul{list-style-type:square;margin-left:15px}
+#side .faq-index li{margin:10px 0}
+#side p{padding:.5em 10px}
+#side div#profile.profile-side{margin-bottom:1em!important}
+#side .profile-side .about{margin-bottom:.6em}
+#side div.user_icon a,#side div.user_icon a:hover{color:#333;text-decoration:none}
+#side div.user_icon a:hover{color:#0084B5}
+#side .user_icon{clear:both;display:block;height:31px;padding:0 0 .8em}
+#side .user_icon img{padding-right:.8em;vertical-align:middle}
+#me_name{font-size:1.35em;vertical-align:middle}
+#side p.promotion{cursor:text;margin-bottom:1em}
+.in-page-link{outline-style:none;outline-width:medium}
+#side #gadgets,#side #saved_searches{overflow:hidden;width:198px}
+ul.sidebar-menu li .side-tab-ajax{display:none;float:right;margin-right:1em;vertical-align:top}
+ul.sidebar-menu span.stat_count{border-radius:3px;background-color:transparent;float:right;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:12px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;margin-right:14px;margin-top:0;padding:0 .1em}
+span.link-title{float:left}
+#ul.sidebar-menu li{padding-top:1px}
+ul.sidebar-menu li a,#apiquota_list li span{background-image:none;clear:both;display:block;margin-right:-1px;outline-style:none;outline-width:medium;padding:8px 0 8px 14px}
+ul.sidebar-menu li a{cursor:pointer!important;-webkit-transition:background-color .5s ease-out;-moz-transition:background-color .5s ease-out}
+.safari ul.sidebar-menu li a{padding:6px 0 6px 14px}
+ul.sidebar-menu li a span{display:inline-block;width:150px}
+ul#primary_nav.sidebar-menu li a span{display:inline-block;width:auto}
+ul.sidebar-menu li.loading a{background:#EDFEFF url(../img/spinner.gif) no-repeat scroll 171px .5em}
+ul.sidebar-menu li.loading a span.stat_count{display:none!important}
+ul.sidebar-menu li a:hover{background-color:#EDFEFF;text-decoration:none}
+ul.sidebar-menu li.active a,a.active{background-color:#EDFEFF;color:#333;font-weight:700}
+#side ul.sidebar-actions{margin:.2em 14px 1em}
+#side p.no-lists{padding:.5em 14px}
+#side span.xref{display:block;padding:4px 14px}
+#side p.sidebar-menu-actions{clear:both;display:block;padding:.5em 14px}
+#side span.new-list,#side span.view-all{font-size:11px;line-height:11px;margin:0 3px 0 0;padding:0}
+#side span.view-all{display:inline;margin:0}
+#side span.pipe{border-left:1px solid #C0DEED;padding-left:4px;padding-right:4px}
+#side #following span.xref{display:block;margin-top:-5px;padding:0 14px 5px}
+h2.sidebar-title{font-size:1.05em;font-weight:400;padding:.2em 14px}
+h2.sidebar-subtitle{font-size:1.3em;font-weight:400;padding:.2em 14px}
+#side .collapsible h2.sidebar-title{background:transparent url(../img/toggle_up_dark.png) no-repeat scroll right center;width:157px}
+#side .collapsible.collapsed h2.sidebar-title{background:transparent url(../img/toggle_down_dark.png) no-repeat scroll right center}
+#side div.collapsible.loading h2.sidebar-title{background-clip:border!important;-moz-background-inline-policy:continuous!important;background-origin:padding!important;background:transparent url(../img/spinner.gif) no-repeat scroll right center!important}
+#side .actions{border:1px solid #87BC44;margin:10px -3px}
+#side .actions small{font-size:.9em}
+#side .actions a{padding-left:7px}
+#side .user_icon > *{padding:0;vertical-align:middle}
+#side .stats{clear:both;float:none;margin:0;padding:0;position:relative}
+#side .stats td + td{padding:0 5px}
+#profile #side .stats td + td{padding:0 8px}
+#side .stats td + td + td{padding:0!important}
+#side .stats a span.stats_count{color:#333}
+#side .smaller span.stats_count{font-size:1.1em!important}
+#profile #side .smaller span.stats_count{font-size:1.3em!important}
+#side .stats a:hover span.stats_count{color:#2276BB}
+#side .stats td .numeric{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:700;line-height:normal;text-decoration:none}
+#side .stats td .label{font-size:.9em;text-transform:lowercase}
+#side .about li{padding-bottom:3px}
+#side .about li#bio{overflow:hidden;width:170px;word-wrap:break-word}
+ul#tabMenu li{border-top:1px solid #BDDCAD}
+ul#tabMenu a,#side .section h1{color:#4C4C4C;display:block;font-size:110%;font-weight:700;padding:13px;text-decoration:none}
+#side .section h1{padding:0 0 .25em}
+ul{overflow:hidden}
+td.column,#side .stats td{padding:0;vertical-align:top}
+.status_id,#side #gadgets em,#side .collapsible a.fetch-contents,#side .collapsed .xref,#side .collapsed .sidebar-menu,#rssfeed,#rssfeed .timeline-rss,#rssfeed .search-rss,#rssfeed .favorites-rss,#rssfeed .profile-rss{display:none}
+#side .collapsible h2.sidebar-title:hover,#side .user_icon a{cursor:pointer}
+#side hr{float:left;width:177px;display:block;border:0;height:1px;margin:7px 0 6px 11px;opacity:.7;background:#C0DEED;color:#C0DEED}
+.notify{text-align:center;line-height:1;padding:5px 0;background-repeat:no-repeat;background-position:left center;margin-bottom:8px}
+.notify div{background-color:#edffe5;font-size:.9em;margin:0 12px 0 24px;padding:10px 5px;border-radius:5px}
+#trend_entries, #apiquota_list{display:none;width:198px;float:left;margin-top:5px!important}
+#trends, #following, #apiquota, #version{margin-left:-2px}
+#trends_title, #following_title, #apiquota_title,#version_title{background:transparent url(../img/toggle_down_dark.png) no-repeat scroll right center;font-weight:400;font-size:110%;padding-left:3px;margin-bottom:0;margin-top:0;width:177px;cursor:pointer}
+#version_title{background:none!important}
+#trends_title.loading, #following_title.loading, #apiquota_title.loading{background:transparent url(../img/spinner.gif) no-repeat scroll right center!important}
+#trends_title.open, #following_title.open, #apiquota_title.open{background:transparent url(../img/toggle_up_dark.png) no-repeat scroll right center!important}
+#following_list{display:none;float:left;padding:10px 10px 0}
+#following_list span{float:left;padding:0 3px 2px 2px}
+#following_list img{padding:0}
+
+/* =buttons
+----------------------------------------*/
+.btn::-moz-focus-inner{border:0 none}
+.btn,input.btn[type=submit],input.btn[type=button]{border-radius:4px;background:#DDD url(../img/bg-btn.gif) repeat-x scroll 0 0;border-color:#DDD #DDD #CCC;border-style:solid;border-width:1px;color:#333;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;margin:0;overflow:visible;padding:4px 8px 5px;text-shadow:1px 1px 0 #FFF;width:auto;font:400 11px/14px "tahoma";cursor:pointer}
+#btn{border-radius:4px;background:#DDD url(../img/bg-btn.gif) repeat-x scroll 0 0;border-color:#DDD #DDD #CCC;border-style:solid;border-width:1px;color:#333;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;margin:0;overflow:visible;padding:4px 5px 5px;text-shadow:1px 1px 0 #FFF;width:auto;font:400 11px/14px "tahoma"}
+.btn:hover,.btn:focus,input.btn[type=submit]:hover,input.btn[type=submit]:focus,input.btn[type=button]:hover,input.btn[type=button]:focus,button.btn:hover,button.btn:focus{background-position:0 -6px;border-color:#999 #999 #888;color:#000}
+.btn:active,.btn:active,input.btn[type=submit]:active,input.btn[type=button]:active,button.btn:active{background-image:none!important;outline:medium none!important;text-shadow:none!important}
+#btn:hover,#btn:focus{background-position:0 -6px;border-color:#999 #999 #888;color:#000}
+
+/*footer*/
+footer ul,footer li{overflow:visible}
+footer{background:#FFF none repeat scroll 0 0;font-size:12px;line-height:1;margin-top:.7em;padding:8px 0;text-align:center;white-space:nowrap}
+footer li{display:inline;padding:0 4px}
+footer li.first:before{content:'';padding-right:0}
+footer li img{border:0 none;margin:-3px;padding:0}
+
+/*ranking*/
+.rank_list{font-size:12px;margin:0 5px 5px 0}
+.rank_list li{border-bottom:1px solid #CCC;margin:0 10px;overflow:visible;padding:10px;position:relative}
+.rank_content{display:block;line-height:20px;margin-left:63px;min-height:50px;overflow:hidden;position:relative}
+.rank_content span{margin:0;color:#666}
+.rank_count{color:#333!important;display:block;font-size:12px;font-weight:700;margin:4px 0;width:400px}
+.rank_count b{color:#666;font-size:12px;font-weight:400}
+.rank_description{font-size:12px}
+.rank_description b{font-weight:400}
+.rank_tag{width:400px}
+.rank_name{font-size:14px;font-weight:700}
+.rank_name em{font-style:normal;font-weight:400}
+#rank_tag_list{display:block;font-size:12px;padding:5px 10px;width:200px}
+#rank_tag_list li{float:left;margin:4px;white-space:nowrap}
+#tag_area{margin:0 auto;width:300px}
+#tag_area h2{display:block;margin:15px 30px 0}
+#addtag{margin:10px auto;width:250px}
+#addtag span{display:inline-block;vertical-align:middle}
+.tag_text{margin:5px;padding:3px;width:150px}
+#addtag #submit_btn{float:none;margin:10px 40px}
+#tag_msg{background:#FFFCAA none repeat scroll 0 0;border:1px solid #FFED00;clear:both;margin:5px auto;padding:5px 10px;width:485px}
+
+/*user*/
+#user_info{clear:both;font-size:12px;padding:5px}
+#user_info li{line-height:18px;margin:5px 3px;word-break:break-all;word-wrap:break-word}
+#user_info_profile{clear:both;font-size:12px;padding:0 0 5px 5px}
+#user_info_profile li{line-height:19px;margin:5px 15px 5px 5px}
+#info_head{background-color:#F6F6F6;border:1px solid #EEE;height:70px;margin:9px;padding:0}
+#info_name{float:left;font-size:20px;margin:6px 0 2px 10px;text-transform:uppercase}
+#info_relation a{float:left;margin:2px 10px 5px 0;text-decoration:none}
+#info_headimg{background-color:#EFEFEF;border:1px solid #ADADAD;float:left;height:48px;margin:8px 8px 8px 15px;padding:2px;width:48px}
+#info_relation{display:inline-block;font-size:12px;margin:2px 0 0 6px;width:435px}
+#following_me{display:inline-block;top:8px;position:relative;margin:10px 0 0 8px;font-size:11px}
+#following_me img{margin: 0pt 5px 3px 0pt;vertical-align:middle}
+
+#subnav{border-bottom:1px solid #CECECE;clear:both;display:block;font-size:12px;margin:20px 10px 0;padding:0 0 5px}
+#subnav a,#subnav a:hover{text-decoration:none}
+.info_status_body{display:block;line-height:20px;margin-left:5px;overflow:hidden;position:relative}
+.info_status_body .status_info{margin:2px 0;text-align:left}
+.info_btn,.info_btn_hover{border-radius:3px;background:#EEE none repeat scroll 0 0;border:1px solid #ADADAD;color:#75715E;font-size:12px;overflow:hidden;padding:2px 3px;text-align:center;text-decoration:none;vertical-align:middle;min-width:60px;text-decoration:none
+}
+.info_btn_hover,.info_btn:hover{background:#FFF none repeat scroll 0 0;text-decoration:none}
+.subnavNormal{border-radius:2px 0 0 2px;background:#FFF none repeat scroll 0 0;border-color:#C4C4C4 #C4C4C4 #FFF;border-style:solid;border-width:1px;padding:5px 12px;margin:0 5px 0 0}
+.subnavLink,.ac_over{background-color:#F0F0F0;cursor:pointer;font-size:12px;margin:0 5px 0 0;padding:6px 12px 5px}
+.subnavLink a,.subnavNormal a, .subnavLink a:hover, .subnavNormal a:hover{text-decoration:none}
+.subnavLink:hover,.ac_over:hover{background-color:#E6E6E6;text-decoration:none}
+
+/*actions button*/
+.actions{border-width:0;bottom:8px;line-height:1.25em;position:absolute;right:0;display:none;z-index:9}
+.rt_btn,.replie_btn,.favor_btn,.delete_btn,.msg_replie_btn,.msg_delete_btn,.retw_btn,.trans_btn,.unfav_btn,.unrt_btn{display:inline-block;height:16px;width:21px;margin:-7px 0;overflow:hidden;text-indent:-9999em}
+.replie_btn,.msg_replie_btn{background:url("../img/sprite_icons.png") no-repeat scroll 4px 1px transparent}
+.replie_btn:hover,.msg_replie_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -17px 1px transparent}
+.retw_btn,.unrt_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll 0 -15px transparent}
+.retw_btn:hover,.unrt_btn{background:url("../img/sprite_icons.png") no-repeat scroll -21px -15px transparent}
+.favor_btn,.unfav_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll 2px -32px transparent}
+.favor_btn:hover,.unfav_btn{background:url("../img/sprite_icons.png") no-repeat scroll -19px -32px transparent}
+.delete_btn,.msg_delete_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -47px transparent}
+.delete_btn:hover,.msg_delete_btn:hover{background:transparent url(../img/sprite_icons.png) no-repeat scroll -21px -47px}
+.rt_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -63px transparent}
+.rt_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -21px -63px transparent}
+.trans_btn{background:url("../img/sprite_icons.png") no-repeat scroll -2px -79px transparent}
+.trans_btn:hover{background:url("../img/sprite_icons.png") no-repeat scroll -23px -79px transparent}
+.trans_header{border-top:1px solid #AAA;color:#AAA;display:block;margin-top:5px;padding-top:5px}
+.trans_body{display:block}
+.trans_close{color:#AAA;display:block;float:right;font-size:12px;margin-top:7px;text-decoration:none}
+/*search*/
+#block{font-size:12px;margin:20px}
+#search_form{font-size:12px;margin:15px;padding:0 0 10px;text-align:center}
+#query{border:1px solid #999;display:block;float:left;font-family:Helvetica,Arial,Sans-serif;font-size:18px;height:24px;margin:0 0 25px 45px;padding:4px 0;text-indent:10px;width:300px;border-radius:5px}
+#header_search form {height:26px;width:175px}
+#header_search_query{border-color:#999;border-style:solid none solid solid;border-width:1px medium 1px 1px;float:left;font-size:12px;height:14px;line-height:18px;padding:5px 0;text-indent:5px;width:144px}
+#header_search_submit{
+background:url("../img/nav_search_submit.png") repeat scroll -2px 0 transparent!important;border:1px solid #999;color:#555;cursor:pointer;float:left;font-size:14px;height:26px;line-height:26px;text-align:center;width:28px}
+#header_search_submit:hover{
+background:transparent url(../img/nav_search_submit.png) repeat scroll -2px -25px!important;outline:none}
+#header_search_submit:focus, #header_search_submit:active{
+background:transparent url(../img/nav_search_submit.png) repeat scroll -2px -50px!important;outline:none}
+
+/* =setting
+----------------------------------------*/
+.desc{padding:5px!important;background-color:#F2F2F2}
+#setting_table{font-size:12px}
+#setting_table tr td{line-height:20px;padding:5px 0;text-align:left}
+#style_table{font-size:12px}
+#style_table tr td{padding:5px 0;text-align:center}
+#setting_nav{border-bottom:1px solid #CECECE;clear:both;display:block;font-size:12px;margin:20px 15px 0;padding:0 0 5px}
+.setting_title{display:block;margin:0;width:80px;font-size:12px}
+.setting_input, .style_input{border-radius:3px;border:1px solid #A7A6AA;padding:3px;width:320px}
+#setting_text{border-radius:3px;border:1px solid #A7A6AA;font-size:12px;height:80px;overflow:auto;padding:3px;width:320px;margin-top:-5px}
+
+.style_title{display:block;width:100px}
+.style_input{width:180px}
+#style_form{margin-bottom:10px;margin-top:10px}
+/*new styles below*/
+fieldset.settings{border-radius:3px;border:1px solid #CECECE;margin:15px;padding:15px 20px}
+fieldset.settings legend{padding:0 5px}
+fieldset.settings select{border:1px solid #CECECE;padding:2px;vertical-align:middle;font-size:12px;margin:0 20px 0 5px}
+fieldset.settings select::-moz-focus-inner{border:0}
+fieldset.settings input{border-radius:3px;border:1px solid #CECECE;padding:2px;font-size:12px;margin-top:-8px}
+fieldset.settings textarea{border-radius:3px;border:1px solid #CECECE;font-size:12px;height:100px;margin-top:10px;width:455px}
+fieldset.settings label, fieldset.settings small{vertical-align:middle;margin-right:2px;margin-top:1px}
+fieldset.settings ol{display:inline-block}
+fieldset.settings small{font-size:11px}
+fieldset.settings .btn{padding: 4px 8px}
+
+#save_button{padding:5px 20px;float:left;cursor:pointer;margin-left:15px;font-size:13px}
+#reset_link{float:right;color:position:absolute;left:440px;text-decoration:underline}
+#reset_link:hover{color:red}
+
+/*all.php*/
+#allNav{margin-left:10px;float:left}
+.allBtn{border-radius:3px 3px 0 0;background-color:#E0E0E0;border-left:1px solid #ADADAD;border-right:1px solid #ADADAD;border-top:1px solid #ADADAD;color:#75715E;display:inline-block;float:left;font-size:12px;margin:10px 5px 0 0;padding:2px 20px;text-align:center}
+.allBtn:hover{background-color:#F2F2F2;text-decoration:none}
+.allHighLight{background-color:#FFF}
+
+/*lists*/
+#list_action{display:block;margin:7px 0}
+#list_action a{margin:0 5px 0 0;text-decoration:none}
+#list_form span{display:block;margin:10px 0;vertical-align:top}
+#list_form span label{display:inline-block;margin:0 2px 0 5px;text-align:left;vertical-align:top;width:70px}
+#list_description,#list_name{border:1px solid #CCC;font-size:12px;padding:3px;width:290px}
+#list_form span textarea{border:1px solid #CCC;font-size:12px;height:100px;width:290px}
+#list_protect{width:16px}
+#list_submit{margin-left:220px;width:60px}
+#list_form{border-radius:8px;background-color:#F5F5F5;border:3px solid #CCC;display:none;margin:0 auto;padding:10px 10px 0;width:390px}
+#list_create_btn{display:block;margin-bottom:10px;text-align:center}
+#member_form{border-radius:8px;background-color:#F5F5F5;border:4px solid #CCC;font-size:12px;padding:5px;position:absolute}
+#member_form span{display:block;font-size:12px;margin:5px;text-align:center}
+#list_members{font-size:12px;height:70px;padding:3px;width:266px}
+#member_submit,#list_submit,#member_cancel{padding:2px 4px}
+.list_delete_btn{margin-top:5px}
+
+/*fieldsets*/
+fieldset.common-form{border:0 none;margin:0}
+fieldset.common-form p{margin:0 0 5px}
+fieldset.common-form th,fieldset.common-form td{padding:9px 7px 3px 3px}
+fieldset.common-form th{font-weight:400;padding-top:10px;text-align:right;width:11em}
+fieldset.common-form small{color:#777;font-size:.97em}
+fieldset.common-form input[type=text],fieldset.common-form input[type=password],fieldset.common-form textarea,fieldset.common-form select,fieldset.common-form checkbox{border:1px solid #AAA;padding:4px 2px}
+fieldset.common-form input[type=text],fieldset.common-form input[type=password]{width:12em}
+fieldset.common-form input.medium[type=text],fieldset.common-form textarea.medium{width:50%}
+fieldset.common-form input.wider[type=text],fieldset.common-form textarea.wider{width:75%}
+fieldset.common-form input.widest[type=text],fieldset.common-form textarea.widest{width:100%}
+fieldset.common-form label{font-weight:400;white-space:nowrap}
+fieldset.common-form ul li{padding:5px 0}
+fieldset.common-form ul li label{display:block;font-weight:700}
+fieldset.common-form ul li label sup{color:#888}
+fieldset.common-form table.input-form th{vertical-align:top}
+fieldset.common-form .instruction,fieldset.common-form .example,fieldset.common-form .required{color:#666;font-size:x-small;font-weight:400}
+fieldset.common-form .instruction,fieldset.common-form .example{margin-top:.5em}
+fieldset.common-form .example{font-style:oblique}
+fieldset.common-form .suggestion{color:red}
+fieldset.vertical-form input[type=text]{width:165px}
+div.direct-message-box fieldset.standard-form{padding:10px 90px;width:548px}
+fieldset.common-form td[colspan=2]{text-align:right}
+.ac_results ul{width:100%;list-style-position:outside;list-style:none;margin:0;padding:0} 
+.ac_results li{cursor:default;display:block;font:menu;font-size:12px;line-height:16px;overflow:hidden;margin:0;padding:2px 5px} 
+.ac_loading{background:#FFF url(img/ajax.gif) right center no-repeat}
+.ac_odd{background-color:#eee}
+
+/*Tipsy*/
+.tipsy{color:#333;cursor:default;font-size:11px;line-height:18px;position:absolute;background:url("../img/tipsy.gif") no-repeat;opacity:0.8;padding:5px;display:none}
+.tipsy-inner{border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.5);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#000;color:#DDD;max-width:200px;padding:8px;text-align:left}
+.tipsy-inner span{border-radius:3px;background-color:#333;font-size:12px;padding:2px 4px}
+.tipsy-inner strong{font-size:12px}
+.tipsy-north{background-position:center top}
+.tipsy-south{background-position:center bottom}
+.tipsy-east{background-position:right center}
+.tipsy-west{background-position:left center}
+
+/*Avatar Menu*/
+.right_menu .menu button.clicked{background-image:none}
+.right_menu{background-color:#FFF;border:1px solid #666;margin:24px 0 0 24px;padding:4px 0;position:absolute;text-align:left;width:150px;z-index:9999;opacity:.9;box-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3)}
+.right_menu li{margin:0!important;padding:0!important;text-align:left;position:static;border:none;-moz-transition:all .5s ease-out;-webkit-transition:all .5s ease-out}
+.right_menu li a,.right_menu li label, .right_menu li input[type="checkbox"]{color:#666;display:inline-block;font:11px 'Lucida Grande',Arial,sans-serif;padding:4px 5px;position:relative;vertical-align:top}
+.right_menu li a{padding:4px 5px 4px 27px;text-decoration:none;color:#666;display:block}
+.right_menu li a:hover{text-decoration:none!important}
+.right_menu li:hover{background-color:#666;color:#FFF}
+.right_menu li:hover *{color:#FFF}
+.right_menu li.divider{border:none/*border-top:1px solid #DDD*/}
+.right_menu i{background:url("../img/sprite-icons.png") no-repeat;display:inline-block;height:13px;outline:medium none;overflow:hidden;width:13px}
+.right_menu a i{left:7px;position:absolute;top:4px;width:15px}
+.right_menu .rm_mention i, .right_menu .ul_mention i{background-position:-16px -32px}
+.right_menu .rm_mention:hover i, .right_menu .ul_mention:hover i{background-position:0 -32px}
+.right_menu .rm_dm i,.right_menu .ul_dm i{background-position:-48px -32px}
+.right_menu .rm_dm:hover i,.right_menu .ul_dm:hover i{background-position:-32px -32px}
+.right_menu .rm_follow i,.right_menu .ul_follow i{background-position:-176px -32px}
+.right_menu .rm_follow:hover i,.right_menu .ul_follow:hover i{background-position:-160px -32px}
+.right_menu .rm_remove i,.right_menu .ul_remove i{background-position:-208px -32px}
+.right_menu .rm_remove:hover i,.right_menu .ul_remove:hover i{background-position:-192px -32px}
+.right_menu .rm_unfollow i,.right_menu .ul_unfollow i{background-position:-112px -32px}
+.right_menu .rm_unfollow:hover i,.right_menu .ul_unfollow:hover i{background-position:-96px -32px}
+.right_menu .rm_block i,.right_menu .ul_block i,.right_menu .rm_unblock:hover i, .right_menu .ul_unblock:hover i{background-position:-144px -32px}
+.right_menu .rm_block:hover i,.right_menu .ul_block:hover i,.right_menu .rm_unblock i, .right_menu .ul_unblock i{background-position:-128px -32px}
+.right_menu .rm_spam i,.right_menu .ul_spam i{background-position:-272px -32px}
+.right_menu .rm_spam:hover i, .right_menu .ul_spam:hover i{background-position:-256px -32px}
+
+/*Twitter Buttons*/
+.btn-m,input[type=submit].btn-m,input[type=button].btn-m{background-position:0 -200px;font-size:15px;line-height:20px;padding:5px 15px 6px;border-radius:5px}.btn-l,input[type=submit].btn-l,input[type=button].btn-l{background-position:0 -400px;font-size:20px;line-height:26px;padding:7px 20px 9px;border-radius:6px}.btn-light{background-color:#add!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-light.gif")!important;border-color:#add #add #9cc!important;text-shadow:1px 1px 0 #dff!important}.btn-dark{background-color:#59a!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-dark.gif")!important;border-color:#59a #59a #489!important;color:#fff!important;text-shadow:-1px -1px 0 #59a!important}.btn-blue{background-color:#39d!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-blue.gif")!important;border-color:#39d #39d #28c!important;color:#fff!important;text-shadow:-1px -1px 0 #39d!important}.btn-chart{background-color:#9c2!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-chart.gif")!important;border-color:#9c2 #9c2 #8b1!important;text-shadow:1px 1px 0 #df6!important}.btn-mint{background-color:#a22!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-mint.gif")!important;border-color:#bdb #bdb #aca!important;text-shadow:1px 1px 0 #efe!important}.btn-green{background-color:#272!important;background-image:url("../img/bg-btn-green.gif")!important;border-color:#272 #272 #161!important;color:#fff!important;text-shadow:-1px -1px 0 #272!important}.btn-pink{background-color:#daa!important;background-image:url("https://s3.amazonaws.com/twitter_production/a/1261078355/images/buttons/bg-btn-pink.gif")!important;border-color:#daa #daa #c99!important;text-shadow:1px 1px 0 #fdd!important}.btn-red{background-color:#a22!important;background-image:url("../img/bg-btn-red.gif")!important;background-position:0 0;border-color:#a22 #a22 #911!important;text-shadow:-1px -1px 0 #a22!important;color:#fff!important}.btn:hover,.btn:focus,input[type=submit].btn:hover,input[type=submit].btn:focus,button.btn:hover,button.btn:focus{border-color:#999 #999 #888;background-position:0 -6px;color:#000}.btn-light:hover,.btn-light:focus{border-color:#7aa #7aa #699}.btn-dark:hover,.btn-dark:focus{border-color:#267 #267 #156;color:#fff}.btn-blue:hover,.btn-blue:focus{border-color:#17b #17b #06a;color:#fff}.btn-chart:hover,.btn-chart:focus{border-color:#7a1 #7a1 #690}.btn-mint:hover,.btn-mint:focus,input[type=submit].btn-mint:hover,input[type=submit].btn-mint:focus,button.btn-mint:hover,button.btn-mint:focus{border-color:#8a8 #8a8 #797!important}.btn-green:hover,.btn-green:focus,input[type=submit].btn-green:hover,input[type=submit].btn-green:focus,button.btn-green:hover,button.btn-green:focus{background-color:#272!important;border-color:#050 #050 #040!important;color:#fff}.btn-pink:hover,.btn-pink:focus,input[type=submit].btn-pink:hover,input[type=submit].btn-pink:focus,button.btn-pink:hover,button.btn-pink:focus{border-color:#a88 #a88 #977!important}.btn-red:hover,.btn-red:focus,input[type=submit].btn-red:hover,input[type=submit].btn-red:focus,button.btn-red:hover,button.btn-red:focus{background-color:#a22!important;border-color:#611 #611 #500!important;color:#fff}.btn-m:hover,.btn-m:focus,input[type=submit].btn-m:hover,input[type=submit].btn-m:focus,button.btn-m:hover,button.btn-m:focus{background-position:0 -206px}.btn-l:hover,.btn-l:focus,input[type=submit].btn-l:hover,input[type=submit].btn-l:focus,button.btn-l:hover,button.btn-l:focus{background-position:0 -406px}.dbtn,.dbtn:hover,.dbtn:focus,.dbtn:active,button.dbtn:hover,button.dbtn:focus{background:#eee;border-color:#ddd;color:#aaa;text-shadow:none}.btn-light.dbtn,.btn-light.dbtn:hover,.btn-light.dbtn:focus,.btn-light.dbtn:active{background:#dee;border-color:#cdd;color:#9aa}.btn-dark.dbtn,.btn-dark.dbtn:hover,.btn-dark.dbtn:focus,.btn-dark.dbtn:active{background:#aad5dd;border-color:#99c5cc;color:#ddf6f6}.btn-blue.dbtn,.btn-blue.dbtn:hover,.btn-blue.dbtn:focus,.btn-blue.dbtn:active{background:#bde;border-color:#acd;color:#def}.btn-chart.dbtn,.btn-chart.dbtn:hover,.btn-chart.dbtn:focus,.btn-chart.dbtn:active{background:#deb;border-color:#cda;color:#ab9}.btn-mint.dbtn,.btn-mint.dbtn:hover,.btn-mint.dbtn:focus,.btn-mint.dbtn:active{background:#ded;border-color:#cdc;color:#9a9}.btn-green.dbtn,.btn-green.dbtn:hover,.btn-green.dbtn:focus,.btn-green.dbtn:active{background:#aca;border-color:#9b9;color:#ded}.btn-pink.dbtn,.btn-pink.dbtn:hover,.btn-pink.dbtn:focus,.btn-pink.dbtn:active{background:#edd;border-color:#dcc;color:#a99}.btn-red.dbtn,.btn-red.dbtn:hover,.btn-red.dbtn:focus,.btn-red.dbtn:active{background:#caa;border-color:#b99;color:#edd}
\ No newline at end of file
index e7dcb4a..704da6f 100644 (file)
-/*colorpicker*/\r
-.ui-colorpicker {\r
-       width: 356px;\r
-       height: 176px;\r
-       overflow: hidden;\r
-       position: absolute;\r
-       background: url(../img/color/colorpicker_background.png);\r
-       font-family: Arial, Helvetica, sans-serif;\r
-       display: none;\r
-}\r
-.ui-colorpicker-color {\r
-       width: 150px;\r
-       height: 150px;\r
-       left: 14px;\r
-       top: 13px;\r
-       position: absolute;\r
-       background: #f00;\r
-       overflow: hidden;\r
-       cursor: crosshair;\r
-}\r
-.ui-colorpicker-color div {\r
-       position: absolute;\r
-       top: 0;\r
-       left: 0;\r
-       width: 150px;\r
-       height: 150px;\r
-       background: url(../img/color/colorpicker_overlay.png);\r
-}\r
-.ui-colorpicker-color div div {\r
-       position: absolute;\r
-       top: 0;\r
-       left: 0;\r
-       width: 11px;\r
-       height: 11px;\r
-       overflow: hidden;\r
-       background: url(../img/color/colorpicker_select.gif);\r
-       margin: -5px 0 0 -5px;\r
-}\r
-.ui-colorpicker-hue {\r
-       position: absolute;\r
-       top: 13px;\r
-       left: 171px;\r
-       width: 35px;\r
-       height: 150px;\r
-       cursor: n-resize;\r
-}\r
-.ui-colorpicker-hue div {\r
-       position: absolute;\r
-       width: 35px;\r
-       height: 9px;\r
-       overflow: hidden;\r
-       background: url(../img/color/colorpicker_indic.gif) left top;\r
-       margin: -4px 0 0 0;\r
-       left: 0px;\r
-}\r
-.ui-colorpicker-new-color {\r
-       position: absolute;\r
-       width: 60px;\r
-       height: 30px;\r
-       left: 213px;\r
-       top: 13px;\r
-       background: #f00;\r
-}\r
-.ui-colorpicker-current-color {\r
-       position: absolute;\r
-       width: 60px;\r
-       height: 30px;\r
-       left: 283px;\r
-       top: 13px;\r
-       background: #f00;\r
-}\r
-.colorpicker input {\r
-       background-color: transparent;\r
-       border: 1px solid transparent;\r
-       position: absolute;\r
-       font-size: 10px;\r
-       font-family: Arial, Helvetica, sans-serif;\r
-       color: #898989;\r
-       top: 4px;\r
-       right: 11px;\r
-       text-align: right;\r
-       margin: 0;\r
-       padding: 0;\r
-       height: 11px;\r
-}\r
-.ui-colorpicker-hex {\r
-       position: absolute;\r
-       width: 72px;\r
-       height: 22px;\r
-       background: url(../img/color/colorpicker_hex.png) top;\r
-       left: 212px;\r
-       top: 142px;\r
-}\r
-.ui-colorpicker input {\r
-       height: 15px;\r
-}\r
-.ui-colorpicker-hex input {\r
-       margin-left: 18px;\r
-       right: 6px;\r
-       width: 47px;\r
-}\r
-.ui-colorpicker-field {\r
-       height: 22px;\r
-       width: 62px;\r
-       background-position: top;\r
-       position: absolute;\r
-}\r
-.ui-colorpicker-field label {\r
-       padding-left: 17px;\r
-       font-size: 10px;\r
-}\r
-.ui-colorpicker-field input {\r
-       width: 25px;\r
-}\r
-.ui-colorpicker-field span {\r
-       position: absolute;\r
-       width: 12px;\r
-       height: 22px;\r
-       overflow: hidden;\r
-       top: 0;\r
-       right: 0;\r
-       cursor: n-resize;\r
-}\r
-.ui-colorpicker-rgb-r {\r
-       background-image: url(../img/color/colorpicker_rgb_r.png);\r
-       top: 52px;\r
-       left: 212px;\r
-}\r
-.ui-colorpicker-rgb-g {\r
-       background-image: url(../img/color/colorpicker_rgb_g.png);\r
-       top: 82px;\r
-       left: 212px;\r
-}\r
-.ui-colorpicker-rgb-b {\r
-       background-image: url(../img/color/colorpicker_rgb_b.png);\r
-       top: 112px;\r
-       left: 212px;\r
-}\r
-.ui-colorpicker-hsb-h {\r
-       background-image: url(../img/color/colorpicker_hsb_h.png);\r
-       top: 52px;\r
-       left: 282px;\r
-}\r
-.ui-colorpicker-hsb-s {\r
-       background-image: url(../img/color/colorpicker_hsb_s.png);\r
-       top: 82px;\r
-       left: 282px;\r
-}\r
-.ui-colorpicker-hsb-b {\r
-       background-image: url(../img/color/colorpicker_hsb_b.png);\r
-       top: 112px;\r
-       left: 282px;\r
-}\r
-.ui-colorpicker-submit {\r
-       position: absolute;\r
-       left: 296px;\r
-       top: 144px;\r
-       overflow: hidden;\r
-}\r
-.ui-colorpicker-focus {\r
-       background-position: center;\r
-}\r
-.ui-colorpicker-hex.ui-colorpicker-focus {\r
-       background-position: bottom;\r
-}\r
-.ui-colorpicker-submit.ui-colorpicker-focus {\r
-       background-position: bottom;\r
-}\r
-.ui-colorpicker-slider {\r
-       background-position: bottom;\r
-}\r
+/*colorpicker*/
+.ui-colorpicker {
+       width: 356px;
+       height: 176px;
+       overflow: hidden;
+       position: absolute;
+       background: url(../img/color/colorpicker_background.png);
+       font-family: Arial, Helvetica, sans-serif;
+       display: none;
+}
+.ui-colorpicker-color {
+       width: 150px;
+       height: 150px;
+       left: 14px;
+       top: 13px;
+       position: absolute;
+       background: #f00;
+       overflow: hidden;
+       cursor: crosshair;
+}
+.ui-colorpicker-color div {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 150px;
+       height: 150px;
+       background: url(../img/color/colorpicker_overlay.png);
+}
+.ui-colorpicker-color div div {
+       position: absolute;
+       top: 0;
+       left: 0;
+       width: 11px;
+       height: 11px;
+       overflow: hidden;
+       background: url(../img/color/colorpicker_select.gif);
+       margin: -5px 0 0 -5px;
+}
+.ui-colorpicker-hue {
+       position: absolute;
+       top: 13px;
+       left: 171px;
+       width: 35px;
+       height: 150px;
+       cursor: n-resize;
+}
+.ui-colorpicker-hue div {
+       position: absolute;
+       width: 35px;
+       height: 9px;
+       overflow: hidden;
+       background: url(../img/color/colorpicker_indic.gif) left top;
+       margin: -4px 0 0 0;
+       left: 0px;
+}
+.ui-colorpicker-new-color {
+       position: absolute;
+       width: 60px;
+       height: 30px;
+       left: 213px;
+       top: 13px;
+       background: #f00;
+}
+.ui-colorpicker-current-color {
+       position: absolute;
+       width: 60px;
+       height: 30px;
+       left: 283px;
+       top: 13px;
+       background: #f00;
+}
+.colorpicker input {
+       background-color: transparent;
+       border: 1px solid transparent;
+       position: absolute;
+       font-size: 10px;
+       font-family: Arial, Helvetica, sans-serif;
+       color: #898989;
+       top: 4px;
+       right: 11px;
+       text-align: right;
+       margin: 0;
+       padding: 0;
+       height: 11px;
+}
+.ui-colorpicker-hex {
+       position: absolute;
+       width: 72px;
+       height: 22px;
+       background: url(../img/color/colorpicker_hex.png) top;
+       left: 212px;
+       top: 142px;
+}
+.ui-colorpicker input {
+       height: 15px;
+}
+.ui-colorpicker-hex input {
+       margin-left: 18px;
+       right: 6px;
+       width: 47px;
+}
+.ui-colorpicker-field {
+       height: 22px;
+       width: 62px;
+       background-position: top;
+       position: absolute;
+}
+.ui-colorpicker-field label {
+       padding-left: 17px;
+       font-size: 10px;
+}
+.ui-colorpicker-field input {
+       width: 25px;
+}
+.ui-colorpicker-field span {
+       position: absolute;
+       width: 12px;
+       height: 22px;
+       overflow: hidden;
+       top: 0;
+       right: 0;
+       cursor: n-resize;
+}
+.ui-colorpicker-rgb-r {
+       background-image: url(../img/color/colorpicker_rgb_r.png);
+       top: 52px;
+       left: 212px;
+}
+.ui-colorpicker-rgb-g {
+       background-image: url(../img/color/colorpicker_rgb_g.png);
+       top: 82px;
+       left: 212px;
+}
+.ui-colorpicker-rgb-b {
+       background-image: url(../img/color/colorpicker_rgb_b.png);
+       top: 112px;
+       left: 212px;
+}
+.ui-colorpicker-hsb-h {
+       background-image: url(../img/color/colorpicker_hsb_h.png);
+       top: 52px;
+       left: 282px;
+}
+.ui-colorpicker-hsb-s {
+       background-image: url(../img/color/colorpicker_hsb_s.png);
+       top: 82px;
+       left: 282px;
+}
+.ui-colorpicker-hsb-b {
+       background-image: url(../img/color/colorpicker_hsb_b.png);
+       top: 112px;
+       left: 282px;
+}
+.ui-colorpicker-submit {
+       position: absolute;
+       left: 296px;
+       top: 144px;
+       overflow: hidden;
+}
+.ui-colorpicker-focus {
+       background-position: center;
+}
+.ui-colorpicker-hex.ui-colorpicker-focus {
+       background-position: bottom;
+}
+.ui-colorpicker-submit.ui-colorpicker-focus {
+       background-position: bottom;
+}
+.ui-colorpicker-slider {
+       background-position: bottom;
+}
index dddce85..c4f9779 100644 (file)
--- a/error.php
+++ b/error.php
@@ -1,10 +1,28 @@
-<?php include ('lib/twitese.php') ?>\r
-<?php $title = "Error" ?>\r
-<?php include ('inc/header.php') ?>\r
+<?php \r
+       include ('lib/twitese.php');\r
+       $title = "Error";\r
+       include ('inc/header.php');\r
+?>\r
 \r
 <div id="login_area">\r
        <div id="error">\r
-               <p>Ooops, an unknown error occured. Please <a href="index.php">go back</a> or <a href="logout.php">sign in</a> again.</p>\r
+               <?php\r
+               if ( isset($_GET['t'])){ \r
+                       switch($_GET['t']){\r
+                               case 1:\r
+                               echo '<p>Fail to connect Twitter right now. Please <a href="index.php">go back</a> or <a href="logout.php">sign in</a> minutes later.</p>';\r
+                               if(loginStatus())\r
+                               {\r
+                               echo '<p> The API will reset in '.intval((format_time(getTwitter()->ratelimit()->reset_time) - time())/60).' min(s).';\r
+                               break;\r
+                               }\r
+                               default:\r
+                               echo '<p>Ooops, an unknown error occured. Please <a href="index.php">go back</a> or <a href="logout.php">sign in</a> again.</p>';\r
+                       }\r
+               } else{\r
+                       echo '<p>Ooops, an unknown error occured. Please <a href="index.php">go back</a> or <a href="logout.php">sign in</a> again.</p>';\r
+               }\r
+               ?>\r
        </div>\r
 </div> \r
 \r
index 50ea4e7..a0d16ed 100644 (file)
--- a/favor.php
+++ b/favor.php
@@ -5,7 +5,7 @@
        if (!loginStatus()) header('location: login.php');\r
 ?>\r
 \r
-<script type="text/javascript" src="js/favor.js"></script>\r
+<script src="js/btns.js"></script>\r
 \r
 <div id="statuses" class="column round-left">\r
 \r
 \r
        $statuses = $t->getFavorites($p);\r
        if ($statuses === false) {\r
-               header('location: error.php');\r
+               header('location: error.php');exit();\r
        } \r
        $empty = count($statuses) == 0? true: false;\r
        if ($empty) {\r
                echo "<div id=\"empty\">No tweet to display.</div>";\r
        } else {\r
                $output = '<ol class="timeline" id="allTimeline">';\r
-\r
+               include('lib/timeline_format.php');\r
                foreach ($statuses as $status) {\r
-                       $user = $status->user;\r
-                       $date = formatDate($status->created_at);\r
-                       $text = formatText($status->text);\r
-\r
-                       $output .= "\r
-                               <li>\r
-                               <span class=\"status_author\">\r
-                               <a href=\"user.php?id=$user->screen_name\" target=\"_blank\"><img src=\"".getAvatar($user->profile_image_url)."\" title=\"$user->screen_name\" /></a>\r
-                               </span>\r
-                               <span class=\"status_body\">\r
-                               <span class=\"status_id\">$status->id</span>\r
-                               <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$user->screen_name\">$user->screen_name</a> $text </span>";\r
-                       if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";\r
-                       $output .="<span class=\"actions\">\r
-                               <a class=\"replie_btn\" href=\"a_reply.php?id=$status->id\">回复</a>\r
-                               <a class=\"rt_btn\" href=\"a_rt.php?id=$status->id\">回推</a>\r
-                               <a class=\"retw_btn\" title=\"New Retweet\" href=\"javascript:void(0);\">New Retweet</a>\r
-                               <a class=\"delete_btn\" href=\"a_del.php?id=$status->id&t=f\">删除</a></span><span class=\"status_info\">\r
-                               ";\r
-                       if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a href=\"/status.php?id=$status->in_reply_to_status_id \">in reply to $status->in_reply_to_screen_name</a></span>";\r
-                       $output .= "                            \r
-                               <span class=\"source\">from $status->source</span>\r
-                               <span class=\"date\"><a href=\"/status.php?id=$status->id\" target=\"_blank\">$date</a></span>\r
-                               </span>\r
-                               </span>\r
-                               </li>\r
-                               ";\r
+                       if (isset($status->retweeted_status)) {\r
+                               $output .= format_retweet($status);\r
+                       } else { \r
+                               $output .= format_timeline($status,$t->username);\r
+                       }\r
                }\r
 \r
                $output .= "</ol><div id=\"pagination\">";\r
 \r
                echo $output;\r
        }\r
-\r
-\r
-\r
 ?>\r
 </div>\r
 \r
 <?php \r
        include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
        include ('inc/footer.php');\r
 ?>\r
index 4552e9d..a4a866a 100644 (file)
@@ -6,7 +6,6 @@
        \r
        $type = 'followers';\r
        include ('inc/userlist.php');\r
-       \r
        include ('inc/sidebar.php');\r
        include ('inc/footer.php');\r
 ?>\r
index 91e7960..1e5094c 100644 (file)
@@ -3,10 +3,8 @@
        $title = "Following";\r
        include ('inc/header.php');\r
        if (!loginStatus()) header('location: login.php');\r
-               \r
        $type = 'friends';\r
        include ('inc/userlist.php');\r
-       \r
        include ('inc/sidebar.php');\r
        include ('inc/footer.php');\r
 ?>\r
diff --git a/img.php b/img.php
new file mode 100644 (file)
index 0000000..873cb19
--- /dev/null
+++ b/img.php
@@ -0,0 +1,54 @@
+<?php
+function curl_redirect_exec($ch) {
+    curl_setopt($ch, CURLOPT_HEADER, TRUE);
+    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
+    $data = curl_exec($ch);
+    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+    if ($http_code == 301 || $http_code == 302) {
+        list($header) = explode("\r\n\r\n", $data, 2);
+        $matches = array();
+        //this part has been changes from the original
+        preg_match("/(Location:|URI:)[^(\n)]*/", $header, $matches);
+        $url = trim(str_replace($matches[1],"",$matches[0]));
+        //end changes
+        $url_parsed = parse_url($url);
+        if (isset($url_parsed)) {
+            curl_setopt($ch, CURLOPT_URL, $url);
+            return curl_redirect_exec($ch);
+        }
+    }
+    return $data;
+}
+
+if(isset($_GET['imgurl']))
+{
+    $url = $_GET['imgurl'];
+    $ch = curl_init($url);
+    curl_setopt($ch,CURLOPT_FOLLOWLOCATION,TRUE); //301&302
+    $ret = curl_redirect_exec($ch);
+    $Httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+    $Hsize = curl_getinfo($ch,CURLINFO_HEADER_SIZE);
+    curl_close($ch);
+    if($Httpcode == '200')
+    {
+        $header = substr($ret,0,$Hsize);
+        $pat = '/(Content-Type:\s?image\/\w+)/i';
+        $matchRet = preg_match_all($pat,$header,$m);
+        if($matchRet)
+        {
+            $header = $m[0][0];
+            $ret = substr($ret,$Hsize);
+            Header($header);
+            echo $ret;
+        }
+        else
+        {
+            echo 'image not found';
+        }
+    }
+    else
+    {
+        echo 'image loading error, code: '.$Httpcode;
+    }
+}
+?>
\ No newline at end of file
index 5d1e164..1926158 100644 (file)
Binary files a/img/bg-btn.gif and b/img/bg-btn.gif differ
index 1481768..da9330d 100644 (file)
Binary files a/img/bg-clouds.png and b/img/bg-clouds.png differ
index 7efad07..110a736 100644 (file)
Binary files a/img/big_logo.png and b/img/big_logo.png differ
diff --git a/img/blank.gif b/img/blank.gif
new file mode 100644 (file)
index 0000000..2799b45
Binary files /dev/null and b/img/blank.gif differ
index 32e8d38..56f983d 100644 (file)
Binary files a/img/logo.png and b/img/logo.png differ
diff --git a/img/refresh.png b/img/refresh.png
new file mode 100644 (file)
index 0000000..230340c
Binary files /dev/null and b/img/refresh.png differ
index 7336e51..bc63447 100644 (file)
Binary files a/img/sprite-icons.png and b/img/sprite-icons.png differ
index 0fc30b8..bfd9622 100644 (file)
Binary files a/img/sprite_icons.png and b/img/sprite_icons.png differ
index f3fd0f4..6c6eeb8 100644 (file)
Binary files a/img/toggle_down_dark.png and b/img/toggle_down_dark.png differ
index 951d903..89c6664 100644 (file)
Binary files a/img/toggle_up_dark.png and b/img/toggle_up_dark.png differ
index 2e5180e..16e4b1d 100644 (file)
Binary files a/img/ui_icons.png and b/img/ui_icons.png differ
index 6e3af94..67b8730 100644 (file)
@@ -7,17 +7,12 @@
        $t = getTwitter();\r
        $friends = $t->friends()->users;\r
        $html = '<div id="following_list">';\r
-       $count = 0;\r
-       $MAX_COUNT = 30;\r
        foreach($friends as $friend){\r
                $html .= '<span class="vcard">\r
                        <a class="url" title="'.$friend->name.'" rel="contact" href="../user.php?id='.$friend->screen_name.'">\r
                        <img class="photo fn" width="24" height="24" src="'.getAvatar($friend->profile_image_url).'" alt="'.$friend->name.'" />\r
                        </a>\r
                        </span>';\r
-               if(++$count == $MAX_COUNT){\r
-                       break;\r
-               }\r
        }\r
        echo $html.'</div>';\r
 ?>\r
index f1f7d12..7958d65 100644 (file)
@@ -2,19 +2,18 @@
           </tbody>\r
         </table>\r
                <div class="clear"></div>\r
-                       <div id="footer" class="round">\r
+                       <footer class="round">\r
                        <ul>\r
-                       <li>&copy; 2010 <a href="http://www.zdxia.com/" target="_blank">disinfeqt</a></li>\r
-                       <li><a href="http://blog.zdxia.com/" title="zdx Purified" target="_blank">Blog</a></li>\r
-                       <li><a href="http://code.google.com/p/twitese/" target="_blank" title="Rabr is proundly powered by the Open Source project - Twitese">Twitese</a></li>\r
-                       <li><a href="http://code.google.com/p/rabr/" target="_blank">Open Source</a></li>\r
-                       <li>Run by <a href="http://twitter.com/<?php echo $site_owner ?>" target="_blank"><?php echo $site_owner ?></a></li>\r
-                       <li><a class="share" title="Drag Me!" href="javascript:var%20d=document,w=window,f='https://rabr.in/share.php',l=d.location,e=encodeURIComponent,p='?u='+e(l.href)+'&t='+e(d.title)+'&d='+e(w.getSelection?w.getSelection().toString():d.getSelection?d.getSelection():d.selection.createRange().text)+'&s=bm';a=function(){if(!w.open(f+p,'sharer','toolbar=0,status=0,resizable=0,width=600,height=300,left=175,top=150'))l.href=f+'.new'+p};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}void(0);">Share to Rabr</a></li>\r
+                       <li>&copy; 2013 Contributors incl. <a href="profile.php" title="It is you that make it!" target="_blank"><?php echo getEncryptCookie('twitese_name')?></a></li>\r
+                       <?php if (BLOG_SITE) { ?><li><a href="<?php echo BLOG_SITE ?>" title="Site Owner's Blog" target="_blank">Blog</a></li><?php }?>\r
+                       <li><a href="http://code.google.com/p/tuite/" target="_blank" title="Embr is proundly powered by the Open Source project - Twitese & Rabr">Twitese</a></li>\r
+                       <li><a href="http://code.google.com/p/embr/" target="_blank">Open Source</a></li>\r
+                       <?php if (SITE_OWNER) { ?><li>Run by <a href="https://twitter.com/<?php echo SITE_OWNER ?>" target="_blank"><?php echo SITE_OWNER ?></a></li><?php }?>\r
                        </ul>\r
-                       </div>\r
+                       </footer>\r
                </div>\r
        </div>\r
-<script type="text/javascript">var nav=document.getElementById("primary_nav");var links=nav.getElementsByTagName("a");var currenturl=document.location.href;for(var i=0;i<links.length;i++){var linkurl=links[i].getAttribute("href");if(currenturl==links[i]){links[i].className="active";}}</script>\r
+<script>var nav=document.getElementById("primary_nav");var links=nav.getElementsByTagName("a");var currenturl=document.location.href;for(var i=0;i<links.length;i++){var linkurl=links[i].getAttribute("href");if(currenturl==links[i]){links[i].className="active";}}</script>\r
 </body>\r
 </html>\r
 <?php ob_end_flush(); ?>
\ No newline at end of file
index 6107795..1be5161 100644 (file)
@@ -4,49 +4,65 @@
                session_start();\r
        }\r
 ?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
+<!DOCTYPE HTML>\r
+<html>\r
 <head>\r
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
-<meta name="keywords" content="rabr, open source, php, twitter, oauth, disinfeqt" />\r
-<meta name="description" content="Revolutionary Interface for Twitter" />\r
-<link rel="shortcut icon" href="img/favicon.ico" />\r
-<link type="text/css" id="css" href="css/main.css?ver=2010041607" rel="stylesheet" />\r
-<title>Rabr / <?php echo $title ?></title>\r
+<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />\r
+<meta name="keywords" content="embr, open source, php, twitter, oauth" />\r
+<meta name="description" content="Vivid Interface for Twitter" />\r
+<meta name="author" content="Contributors" />\r
+<link rel="icon" href="img/favicon.ico" />\r
+<link id="css" href="css/main.css" rel="stylesheet" />\r
+<title>Embr / <?php echo $title ?></title>\r
 <?php \r
-       $myCSS = getColor("myCSS","");\r
+       $myCSS = getDefCookie("myCSS");\r
+       $theme = getDefCookie("theme");\r
        $old_css = "ul.sidebar-menu li.active a";\r
        $new_css = "ul.sidebar-menu a.active";\r
        $myCSS = str_replace($old_css,$new_css,$myCSS);\r
-       $fontsize = getColor("fontsize","13px");\r
-       $ad_display = getColor("ad_display","block");\r
-       $bodyBg = getColor("bodyBg","");\r
+       $fontsize = getDefCookie("fontsize","13px");\r
+       $Bgcolor = getDefCookie("Bgcolor");\r
+       $Bgimage = getAvatar(getDefCookie("Bgimage"));\r
+       $Bgrepeat = getDefCookie("Bgrepeat","no-repeat");\r
+       \r
+       if ($title != 'Error' ){\r
+               setcookie('loginPage',$_SERVER['PHP_SELF'],$_SERVER['REQUEST_TIME']+3600*24);\r
+       }\r
 ?>\r
 <style type="text/css">\r
-<?php echo $myCSS ?>\r
-a:active, a:focus {outline:none}\r
-body {font-size:<?php echo $fontsize ?> !important;background-color:<?php echo $bodyBg ?>}\r
-#plz_dont_block_us {display: <?php echo $ad_display ?>}\r
+<?php echo $theme;echo $myCSS ?>\r
+a:active,a:focus {outline:none}\r
+body {font-size:<?php echo $fontsize ?> !important;<?php \r
+       if ($Bgcolor != "") echo 'background-color:'.$Bgcolor.';';\r
+       if ($Bgimage != "") echo 'background-image: url("'.$Bgimage.'");';\r
+ ?>background-repeat:<?php echo $Bgrepeat ?>}\r
 </style>\r
-<script type="text/javascript" src="js/jquery.js?ver=1.4.2"></script>\r
-<script type="text/javascript" src="js/jquery.plugins.js?ver=2010033101"></script>\r
-<script type="text/javascript" src="js/mediaPreview.js?ver=2010041501"></script>\r
-<script type="text/javascript" src="js/public.js?ver=2010041604"></script>\r
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>\r
+<script src="js/jquery.js"></script>\r
+<script src="js/mediaPreview.js"></script>\r
+<script src="js/public.js"></script>\r
 </head>\r
 <body>\r
 <div id="shortcutTip" style="display:none"></div>\r
-       <div id="header">\r
+       <header>\r
                <div class="wrapper">\r
-                       <a href="index.php"><img id="logo" style="float:left" src="img/logo.png" /></a>\r
-                       <ul id="nav" class="round">\r
+               <div id="sentTip" style="display:none"></div>\r
+                       <a href="index.php"><img id="logo" style="float:left" width="155" height="49" src="img/logo.png" /></a>\r
+                       <nav class="round">\r
+                       <ul>\r
+                               <?php $scheme=(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http://' : 'https://';\r
+                               $base_url=str_replace('http://',$scheme,BASE_URL);\r
+                               ?> \r
+                               <li><a class="share" title="Drag me to share!" href="javascript:var%20d=document,w=window,f='<?php echo $base_url."/share.php" ?>',l=d.location,e=encodeURIComponent,p='?u='+e(l.href)+'&t='+e(d.title)+'&d='+e(w.getSelection?w.getSelection().toString():d.getSelection?d.getSelection():d.selection.createRange().text)+'&s=bm';a=function(){if(!w.open(f+p,'sharer','toolbar=0,status=0,resizable=0,width=600,height=300,left=175,top=150'))l.href=f+'.new'+p};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}void(0);">Share</a></li>\r
                                <li><a href="index.php">Home</a></li>\r
                                <li><a href="profile.php">Profile</a></li>\r
                                <li><a href="browse.php">Public</a></li>\r
                                <li><a href="setting.php">Settings</a></li>\r
                                <li><a href="logout.php">Logout</a></li>                        \r
                        </ul>\r
+                       </nav>\r
                </div>\r
-       </div>\r
+       </header>\r
        <div id="content">\r
                <div class="wrapper">\r
                        <div class="content-bubble-arrow"></div>\r
index 9628062..9b7f0e3 100644 (file)
-<script type="text/javascript" src="js/ajaxfileupload.js"></script>\r
-<script type="text/javascript" src="js/formfunc.js?ver=2010041501"></script>\r
-<?php if (!isset($_sentText)) { ?>\r
-<h2>What's happening?</h2>\r
-<span id="tip"><b>140</b></span>\r
-<?php } ?>\r
-\r
-<form enctype="multipart/form-data" action="ajax/uploadPhoto.php" method="post" id="photoArea">\r
-<span style="font-weight: bold;">Upload Image</span>\r
-<p>Powered by Img.ly</p>\r
-<input type="file" name="image" id="imageFile"/> \r
-<input type="submit" id="imageUploadSubmit" class="btn" value="Upload"/>\r
-<a href="#" onclick="$('#photoArea').slideToggle(300)" title="Close" class="close"></a>\r
-</form>\r
-\r
-<form id="filterArea">\r
-<span style="font-weight: bold;">Filter Timeline</span>\r
-<p>Seperate keywords with comma. [eg: twitter,hello] Also usernames <b>without</b> @</p> \r
-<input type="text" id="iptFilter" name="iptFilter" class="filter_input"/>\r
-<input type="submit" style="vertical-align: top; padding: 5px; margin: 9px 3px 0pt 6px;" id="filterSubmit" class="btn" value="Update">\r
-<input type="submit" style="padding: 5px; vertical-align: top; margin-top: 9px;" id="filterReset" class="btn" value="Reset">\r
-<input type="submit" style="padding: 5px; vertical-align: top; margin: 9px 0pt 0pt 3px;" id="filterHide" class="btn" value="Hide @">\r
-<a class="close" title="Close" onclick="$('#filterArea').slideToggle(300)" href="#"></a>\r
-</form>\r
-\r
-<form id="symArea">\r
-<div id="symbols">\r
-<?php include ('inc/symbols.php');?>\r
-</div>\r
-<a class="close" title="Close" onclick="$('#symArea').slideToggle(300)" href="#"></a>\r
-</form>\r
-\r
-<form id="transArea">\r
-<span style="font-weight: bold; display: block; margin-bottom: 5px;">Translation Settings</span>\r
-<p>Translate tweets into\r
-<select name="langs" style="border: 1px solid rgb(170, 170, 170); padding: 1px 2px;">\r
-<option value="ar">Arabic</option>\r
-<option value="zh-CN">简体中文</option>\r
-<option value="zh-TW">繁體中文</option>\r
-<option value="da">Danish</option>\r
-<option value="nl">Dutch</option>\r
-<option value="en">English</option>\r
-<option value="fi">Finnish</option>\r
-<option value="fr">French</option>\r
-<option value="de">German</option>\r
-<option value="el">Greek</option>\r
-<option value="hu">Hungarian</option>\r
-<option value="is">Icelandic</option>\r
-<option value="it">Italian</option>\r
-<option value="ja">Japanese</option>\r
-<option value="ko">Korean</option>\r
-<option value="lt">Lithuanian</option>\r
-<option value="no">Norwegian</option>\r
-<option value="pl">Polish</option>\r
-<option value="pt">Portuguese</option>\r
-<option value="ru">Russian</option>\r
-<option value="es">Spanish</option>\r
-<option value="sv">Swedish</option>\r
-<option value="th">Thai</option>\r
-</select>\r
-</p>\r
-<p>Translate my tweets into <select name="myLangs" style="border: 1px solid rgb(170, 170, 170); margin-top: 5px; padding: 1px 2px;">\r
-<option value="ar">Arabic</option>\r
-<option value="zh-CN">简体中文</option>\r
-<option value="zh-TW">繁體中文</option>\r
-<option value="da">Danish</option>\r
-<option value="nl">Dutch</option>\r
-<option value="en">English</option>\r
-<option value="fi">Finnish</option>\r
-<option value="fr">French</option>\r
-<option value="de">German</option>\r
-<option value="el">Greek</option>\r
-<option value="hu">Hungarian</option>\r
-<option value="is">Icelandic</option>\r
-<option value="it">Italian</option>\r
-<option value="ja">Japanese</option>\r
-<option value="ko">Korean</option>\r
-<option value="lt">Lithuanian</option>\r
-<option value="no">Norwegian</option>\r
-<option value="pl">Polish</option>\r
-<option value="pt">Portuguese</option>\r
-<option value="ru">Russian</option>\r
-<option value="es">Spanish</option>\r
-<option value="sv">Swedish</option>\r
-<option value="th">Thai</option>\r
-</select>\r
-<input type="button" value="Translate" class="btn" id="translateMy" style="vertical-align: middle; padding: 3px 8px; margin-top: -3px;">\r
-</p>\r
-<a href="#" onclick="$('#transArea').slideToggle(300)" title="Close" style="right:25px;top:5px;" class="close"></a>\r
-</form>\r
-\r
-<form action="index.php" method="post">\r
-<a id="transRecover">Restore</a>\r
-<textarea name="status" id="textbox"><?php if (isset($_sentText)) echo $_sentText ?></textarea>\r
-<input type="hidden" id="in_reply_to" name="in_reply_to" value="<?php echo isset($_sentInReplyTo) ? $_sentInReplyTo : 0 ?>" />\r
-<?php\r
-       $t = getTwitter();\r
-       $current_user = $t->veverify();\r
-       if ($current_user === false) {\r
-               header('location: error.php');\r
-       } \r
-       $empty = count($current_user) == 0? true: false;\r
-       if ($empty) {\r
-               echo "<div id=\"currently\">\r
-                       <span id=\"full_status\" title=\"Click to view the full tweet\"><strong >Latest:</strong></span>\r
-                       <span id=\"latest_status\">\r
-                       <span id=\"latest_text\">\r
-                       <span class=\"status-text\">What's shaking?</span>\r
-                       <span class=\"full-text\" style=\"display:none\">What's shaking?</span>\r
-                       <span class=\"entry-meta\" id=\"latest_meta\"></span>\r
-                       <span class=\"entry-meta\" id=\"full_meta\"></span>\r
-                       </span>\r
-                       </span>\r
-                       </div>";\r
-       } else {\r
-                       $status = $current_user->status;\r
-                       $date = formatDate($status->created_at);\r
-                       $text = formatText($status->text);\r
-                       $output = "\r
-                               <div id=\"currently\">\r
-                               <span id=\"full_status\"><strong>Latest:</strong></span>\r
-                               <span id=\"latest_status\">\r
-                               <span id=\"latest_text\">\r
-                               <span class=\"status-text\">" . $text . "</span>\r
-                               <span class=\"full-text\" style=\"display:none\">" . $text . "</span>\r
-                               <span class=\"entry-meta\" id=\"latest_meta\"><a href=\"status.php?id=$status->id\" target=\"_blank\">" . $date . "</a></span>\r
-                               <span class=\"entry-meta\" id=\"full_meta\" style=\"display:none\"><a href=\"status.php?id=$status->id\" target=\"_blank\">" . $date . "</a></span>\r
-                               </span>\r
-                               </span>\r
-                               </div>\r
-                               ";\r
-               echo $output;\r
-       }\r
-?>\r
-<div id="tweeting_controls">\r
-               <a class="a-btn a-btn-m btn-disabled" id="tweeting_button" tabindex="2" href="#"><span>Tweet</span></a>\r
-       </div>\r
-<!--<input type="submit" id="submit_btn" value="update" />-->\r
-       <div id="func_set">\r
-       \r
-       <a class="func_btn" href="javascript:shortUrlDisplay();" title="Shorten URL" style="background-position:-238px -113px">Shorten URL</a>\r
-       \r
-       <a class="func_btn" href="javascript:shortenTweet();" title="Shorten Tweet" style="background-position:-222px -48px;">Shorten Tweet</a>\r
-       \r
-       <a id="transBtn" title="Translation Settings" class="func_btn" style="background-position:-110px -80px;">Translate</a>\r
-       \r
-<?php \r
-       if(!isOAuth()){\r
-               echo '<a title="Upload Image" id="photoBtn" class="func_btn" style="background-position: -207px -128px;">Image</a>';\r
-       }\r
-?>\r
-       \r
-       <a id="filterBtn" title="Filter Timeline" class="func_btn" style="background-position:-174px -112px;">Filter</a>\r
-       \r
-       <a title="Sogou Cloud IME" href="javascript:void((function(){var%20n=navigator.userAgent.toLowerCase();ie=n.indexOf('msie')!=-1?1:0;if(document.documentMode)ie=0;charset='';if(ie)charset=document.charset;src=ie&amp;&amp;charset=='utf-8'?'http://web.pinyin.sogou.com/web_ime/init2_utf8.php':'http://web.pinyin.sogou.com/web_ime/init2.php';element=document.createElement('script');element.setAttribute('src',src);document.body.appendChild(element);})())" onclick="updateSentTip('Loading...', 5000, 'ing')" class="func_btn" style="background-position: -62px -112px;">Sogou</a>\r
-       \r
-       <a id="symbolBtn" title="Symbols and smileys" class="func_btn" style="background-position: -206px -113px;">Symbols</a>\r
-\r
-       <a id="restoreBtn" style="background-position: 2px -64px;" class="func_btn" title="Restore previous tweet">Restore</a>\r
-       \r
-       <a id="autoBtn" title="Auto refresh control" class="func_btn pause">Pause</a>\r
-       \r
-       <a id="clearBtn" style="background-position: 3px -176px;" class="func_btn" title="Sweep Timeline" class="func_btn">Sweep</a>\r
-\r
-       <a id="refreshBtn" title="Refresh the timeline" class="func_btn" style="background-position: -62px -80px;">Refresh</a>\r
-       </div>\r
-       </form>\r
-       <div class="clear"></div>
\ No newline at end of file
+<script src="js/formfunc.js"></script>
+<?php if (!isset($_sentText)) { 
+       if ($title != 'Direct Messages') {
+       echo "<h2>What's happening?</h2>" ;
+       } ?> 
+<span id="tip"><b>140</b></span>
+<?php } ?>
+<form enctype="multipart/form-data" action="ajax/uploadImage.php?do=image" method="post" id="photoArea">
+<span style="font-weight: bold;">Upload Image</span>
+<p>Powered by Img.ly</p>
+<input type="file" name="image" id="imageFile"/> 
+<input type="submit" id="imageUploadSubmit" class="btn" value="Upload"/>
+<a href="#" onclick="$('#photoArea').slideToggle(300)" title="Close" class="close"></a>
+</form>
+
+<form id="filterArea">
+<span style="font-weight: bold;">Filter Timeline</span>
+<p>Seperate keywords with comma. [eg: twitter,hello] Also usernames <b>without</b> @</p> 
+<input type="text" id="iptFilter" name="iptFilter" class="filter_input"/>
+<input type="submit" style="vertical-align: top; padding: 5px; margin: 9px 3px 0pt 6px;" id="filterSubmit" class="btn" value="Update">
+<input type="submit" style="padding: 5px; vertical-align: top; margin-top: 9px;" id="filterReset" class="btn" value="Reset">
+<input type="submit" style="padding: 5px; vertical-align: top; margin: 9px 0pt 0pt 3px;" id="filterHide" class="btn" value="Hide @">
+<a class="close" title="Close" onclick="$('#filterArea').slideToggle(300)" href="#"></a>
+</form>
+
+<form id="symArea">
+<div id="symbols">
+<?php include ('inc/symbols.inc');?>
+</div>
+<a class="close" title="Close" onclick="$('#symArea').slideToggle(300)" href="#"></a>
+</form>
+
+<form id="transArea">
+<span style="font-weight: bold; display: block; margin-bottom: 5px;">Translation Settings</span>
+<p>Translate tweets into
+<select name="langs" style="border: 1px solid rgb(170, 170, 170); padding: 1px 2px;">
+<option value="ar">Arabic</option>
+<option value="zh-CN">简体中文</option>
+<option value="zh-TW">繁體中文</option>
+<option value="da">Danish</option>
+<option value="nl">Dutch</option>
+<option value="en">English</option>
+<option value="fi">Finnish</option>
+<option value="fr">French</option>
+<option value="de">German</option>
+<option value="el">Greek</option>
+<option value="hu">Hungarian</option>
+<option value="is">Icelandic</option>
+<option value="it">Italian</option>
+<option value="ja">Japanese</option>
+<option value="ko">Korean</option>
+<option value="lt">Lithuanian</option>
+<option value="no">Norwegian</option>
+<option value="pl">Polish</option>
+<option value="pt">Portuguese</option>
+<option value="ru">Russian</option>
+<option value="es">Spanish</option>
+<option value="sv">Swedish</option>
+<option value="th">Thai</option>
+</select>
+</p>
+<p>Translate my tweets into <select name="myLangs" style="border: 1px solid rgb(170, 170, 170); margin-top: 5px; padding: 1px 2px;">
+<option value="ar">Arabic</option>
+<option value="zh-CN">简体中文</option>
+<option value="zh-TW">繁體中文</option>
+<option value="da">Danish</option>
+<option value="nl">Dutch</option>
+<option value="en">English</option>
+<option value="fi">Finnish</option>
+<option value="fr">French</option>
+<option value="de">German</option>
+<option value="el">Greek</option>
+<option value="hu">Hungarian</option>
+<option value="is">Icelandic</option>
+<option value="it">Italian</option>
+<option value="ja">Japanese</option>
+<option value="ko">Korean</option>
+<option value="lt">Lithuanian</option>
+<option value="no">Norwegian</option>
+<option value="pl">Polish</option>
+<option value="pt">Portuguese</option>
+<option value="ru">Russian</option>
+<option value="es">Spanish</option>
+<option value="sv">Swedish</option>
+<option value="th">Thai</option>
+</select>
+<input type="button" value="Translate" class="btn" id="translateMy" style="vertical-align: middle; padding: 3px 8px; margin-top: -3px;">
+</p>
+<a class="close" title="Close" onclick="$('#transArea').slideToggle(300)" href="#"></a>
+</form>
+
+<form action="index.php" method="post">
+<a id="transRecover">Restore</a>
+<textarea name="status" id="textbox"><?php if (isset($_sentText)) echo $_sentText ?></textarea>
+<input type="hidden" id="in_reply_to" name="in_reply_to" value="<?php echo isset($_sentInReplyTo) ? $_sentInReplyTo : 0 ?>" />
+<?php
+       $p = 1;
+       if (isset($_GET['p']))
+       {
+               $p = (int) $_GET['p'];
+               if ($p <= 0) $p = 1;
+       }
+       if($_COOKIE['autoscroll'] == 'false' || $p == 1) {
+               $t = getTwitter();
+               $user = $t->veverify();
+               if ($user === false) {
+                       header('location: error.php');exit();
+               } 
+               $empty = count($user) == 0 || !isset($user->status) || $user->status->text == '';
+               if ($empty) {
+                       echo "<div id=\"currently\">
+                               <span id=\"full_status\"><strong >Latest:</strong></span>
+                               <span id=\"latest_status\">
+                               <span id=\"latest_text\">
+                               <span class=\"status-text\">What's happening?</span>
+                               <span class=\"full-text\" style=\"display:none\">What's happening?</span>
+                               <span class=\"entry-meta\" id=\"latest_meta\"></span>
+                               <span class=\"entry-meta\" id=\"full_meta\"></span>
+                               </span>
+                               </span>
+                               </div>";
+               } else {
+                               $status = $user->status;
+                               $date = format_time($status->created_at);
+                               $text = formatText($status->text);
+                               $output = "
+                                       <div id=\"currently\">
+                                       <span id=\"full_status\" title=\"Click to view the full tweet\"><strong>Latest:</strong></span>
+                                       <span id=\"latest_status\">
+                                       <span id=\"latest_text\">
+                                       <span class=\"status-text\">" . $text . "</span>
+                                       <span class=\"full-text\" style=\"display:none\">" . $text . "</span>
+                                       <span class=\"entry-meta\" id=\"latest_meta\"><a href=\"status.php?id=$status->id_str\" id=\"$date\" target=\"_blank\">".date('Y-m-d H:i:s', $date)."</a></span>
+                                       <span class=\"entry-meta\" id=\"full_meta\" style=\"display:none\"><a href=\"status.php?id=$status->id_str\" id=\"$date\" target=\"_blank\">".date('Y-m-d H:i:s', $date)."</a></span>
+                                       </span>
+                                       </span>
+                                       </div>
+                                       ";
+                       echo $output;
+               }
+       }
+?>
+<div id="tweeting_controls">
+       <a class="a-btn a-btn-m btn-disabled" id="tweeting_button" tabindex="2" href="#" title="Ctrl/⌘+Enter also works!"><span>
+               <?php if($title == 'Direct Messages') {
+                       echo 'Send';
+                       } else {
+                               echo 'Tweet';
+                       } ?>
+               </span></a>
+       </div>
+       
+       <div id="func_set">
+       
+       <a class="func_btn" href="javascript:shortUrlDisplay();" title="Shorten URL" style="background-position:-238px -113px">Shorten URL</a>
+       
+       <a class="func_btn" href="javascript:shortenTweet();" title="Shorten Tweet" style="background-position:-222px -48px;">Shorten Tweet</a>
+       
+       <a id="transBtn" title="Translation Settings" class="func_btn" style="background-position:-110px -80px;">Translate</a>
+       
+       <a title="Upload Image" id="photoBtn" class="func_btn" style="background-position: -207px -128px;">Image</a>
+       
+       <a id="filterBtn" title="Filter Timeline" class="func_btn" style="background-position:-174px -112px;">Filter</a>
+       
+       <a title="Sogou Cloud IME" href="javascript:void((function(){var%20n=navigator.userAgent.toLowerCase();ie=n.indexOf('msie')!=-1?1:0;if(document.documentMode)ie=0;charset='';if(ie)charset=document.charset;src=ie&amp;&amp;charset=='utf-8'?'http://web.pinyin.sogou.com/web_ime/init2_utf8.php':'http://web.pinyin.sogou.com/web_ime/init2.php';element=document.createElement('script');element.setAttribute('src',src);document.body.appendChild(element);})())" onclick="updateSentTip('Loading...', 5000, 'ing')" class="func_btn" style="background-position: -62px -112px;">Sogou</a>
+       
+       <a id="symbolBtn" title="Symbols and smileys" class="func_btn" style="background-position: -206px -113px;">Symbols</a>
+
+       <a id="restoreBtn" style="background-position: 2px -64px;" class="func_btn" title="Restore previous tweet">Restore</a>
+       
+       <a id="autoBtn" title="Auto refresh control" class="func_btn pause">Pause</a>
+       
+       <a id="clearBtn" style="background-position: 3px -176px;" class="func_btn" title="Sweep Timeline" class="func_btn">Sweep</a>
+
+       <a id="refreshBtn" title="Refresh the timeline" class="func_btn" style="background-position: -62px -80px;">Refresh</a>
+       </div>
+       </form>
+       <div class="clear"></div>   
\ No newline at end of file
index 6b05fd4..7f8b2c9 100644 (file)
-<?php \r
-$t = getTwitter();\r
-?>\r
-<td class="column round-right" id="side_base">\r
-<table>\r
-<tr>\r
-<td>\r
-<div id="side" class="round-right">\r
-       <div id="sideinfo">\r
-               <a href="profile.php"><img id="sideimg" src="<?php echo getCookie("imgurl")?>" />\r
-               <span id="sideid"><?php echo getEncryptCookie('twitese_name')?></span>\r
-               <span id="me_tweets"><span id="update_count"><?php echo getCookie('statuses_count')?></span> tweets</span>\r
-               </a>\r
-       </div>\r
-       <?php if (strrpos($_SERVER['PHP_SELF'], 'profile')) {\r
-       $user = $t->showUser();\r
-?>\r
-       <ul id="user_info_profile">\r
-               <li><span>Name</span> <?php echo $user->name ?></li>\r
-               <?php if ($user->location) echo "<li><span>Location</span> $user->location</li>"; ?>\r
-               <?php if (($user->url) and (strlen($user->url)>20)) echo '<li><span>Web</span> <a href="' .$user->url. '" target="_blank">' .substr($user->url, 0, 20). '...</a></li>'; else if (($user->url) and (strlen($user->url)<=20)) echo '<li><span>Web</span> <a href="' .$user->url. '" target="_blank">' .$user->url. '</a></li>';?>\r
-               <?php if ($user->description) echo "<li><span>Bio</span> $user->description</li>"; ?>\r
-               </ul>\r
-       <?php }?>\r
-       <ul id="user_stats">\r
-               <li>\r
-                       <a href="friends.php">\r
-                               <span class="count"><?php echo getCookie('friends_count')?></span>\r
-                               <span class="label">following</span>\r
-                       </a>\r
-               </li>\r
-               <li>\r
-                       <a href="followers.php">\r
-                               <span class="count"><?php echo getCookie('followers_count')?></span>\r
-                               <span class="label">followers</span>\r
-                       </a>\r
-               </li>\r
-               <li>\r
-                       <a href="lists.php">\r
-                               <span class="count"><?php $listed_count = getCookie('listed_count'); echo ($listed_count > 0 ? $listed_count : 0);?></span>\r
-                               <span class="label">listed</span>\r
-                       </a>\r
-               </li>\r
-       </ul>\r
-       \r
-               <li>\r
-               <DIV id='profile' class='section'> \r
-               <p id="sidebarTip" class='promotion round' style='cursor:pointer'> \r
-               <a class="definition">\r
-               <strong>Short&middot;cuts</strong>\r
-               <em>n.</em>\r
-               Use shortcuts in Rabr. Click for more details.<span id="indicator">[+]</span>\r
-               </a>\r
-               <a id="sidebarTip_more" style="display: none;">\r
-               <strong>Shortcuts available now:</strong><br>\r
-               C / U - Update<br>\r
-               T - Go to top<br>\r
-               B - Go to bottom<br>\r
-               R - Refresh<br>\r
-               S - Search\r
-               </a>\r
-               </p>\r
-               </DIV>\r
-               </li>\r
-               \r
-       <div class="clear"></div>\r
-       <ul id="primary_nav" class="sidebar-menu">\r
-       <li id="updates_tab"><a class="in-page-link" href="all.php"><span>Updates</span></a></li>\r
-       <li id="home_tab"><a class="in-page-link" href="index.php"><span>Home</span></a></li>\r
-       <li id="replies_tab"><a class="in-page-link" href="replies.php"><span>@<?php echo is_null(getEncryptCookie('twitese_name')) ? $t->screen_name : getEncryptCookie('twitese_name'); ?></span></a></li>\r
-       <li id="msgs_tab"><a class="in-page-link" href="message.php"><span>Direct Messages</span></a></li>\r
-       <li id="lists_tab"><a class="in-page-link" href="lists.php"><span>Lists</span></a></li>\r
-       <li id="favs_tab"><a class="in-page-link" href="favor.php"><span>Favorites</span></a></li>\r
-       <li id="retweets_tab"><a class="in-page-link" href="retweets.php"><span>Retweets</span></a></li>\r
-       </ul>\r
-       <?php include ('sidepost.php') ?>\r
-</div>\r
-</td>\r
-</tr>\r
-</table>
\ No newline at end of file
+<td class="column round-right" id="side_base">
+<table>
+<tr>
+<td>
+<div id="side" class="round-right">
+       <div id="sideinfo">
+               <a href="profile.php"><img id="sideimg" src="<?php echo getCookie("imgurl")?>" /></a>
+               <span id="sideid"><span id="side_name"><?php echo getEncryptCookie('twitese_name')?></span><a href="#" id="profileRefresh" title="refresh your profile"><i></i></a></span>
+               <a href="profile.php"><span id="me_tweets"><span id="update_count"><?php echo getCookie('statuses_count')?></span> tweets</span></a>
+       </div>
+       <?php if (strrpos($_SERVER['PHP_SELF'], 'profile')) {
+               $t = getTwitter();
+       $user = $t->showUser();
+?>
+       <ul id="user_info_profile">
+               <li><span>Name</span> <?php echo $user->name ?></li>
+               <?php if ($user->location) echo "<li><span>Location</span> $user->location</li>"; ?>
+               <?php if (($user->url) and (strlen($user->url)>20)) echo '<li><span>Web</span> <a href="' .$user->url. '" target="_blank">' .substr($user->url, 0, 20). '...</a></li>'; else if (($user->url) and (strlen($user->url)<=20)) echo '<li><span>Web</span> <a href="' .$user->url. '" target="_blank">' .$user->url. '</a></li>';?>
+               <?php if ($user->description) echo "<li><span>Bio</span> ".formatText($user->description)."</li>"; ?>
+               </ul>
+       <?php }?>
+       <ul id="user_stats">
+               <li>
+                       <a href="friends.php">
+                               <span class="count"><?php echo getCookie('friends_count')?></span>
+                               <span class="label">following</span>
+                       </a>
+               </li>
+               <li>
+                       <a href="followers.php">
+                               <span class="count"><?php echo getCookie('followers_count')?></span>
+                               <span class="label">followers</span>
+                       </a>
+               </li>
+               <li>
+                       <a href="lists.php?t=2">
+                               <span class="count"><?php $listed_count = getCookie('listed_count'); echo ($listed_count > 0 ? $listed_count : 0);?></span>
+                               <span class="label">listed</span>
+                       </a>
+               </li>
+       </ul>
+       
+               <li>
+               <DIV id='profile' class='section'> 
+               <p id="sidebarTip" class='promotion round'> 
+       <?php
+       $preset = array(
+               array(
+                       'term' => 'Short&middot;cuts',
+                       'def' => '<em>n.</em> Use shortcuts in Embr.',
+                       'more' => '<strong>Shortcuts available now:</strong><br>
+                       C / U - Update<br>
+                       T - Go to top<br>
+                       B - Go to bottom<br>
+                       R - Refresh<br>
+                       S - Search'
+               ),
+               array(
+                       'term' => 'User Di&middot;rect View',
+                       'def' => '<em>n.</em> Now you can view the user page of your interested more incentively.',
+                       'more' => 'take @'.SITE_OWNER.' for example, you can visit his/her page via '.BASE_URL.'/'.SITE_OWNER,
+               ),
+               array(
+                       'term' => 'Realtime Refresh',
+                       'def' => '<em>v.</em> Now you can refresh your profile whenever you like!',
+                       'more' => 'See the circle behind your username? Try to click it!'
+               ),
+               array(
+                       'term' => 'Custom&middot;Tips',
+                       'def' => '<em>n.</em> Hate embr tips so much? Now you can edit me into your own tips!',
+                       'more' => 'Your tips will be encrypted in your cookies all for your privacy!'
+               ),
+       );
+               if(isset($_COOKIE['Tip_Title']) || isset($_COOKIE['Tip_Content']) || isset($_COOKIE['Tip_More'])){
+                       $raw = array(
+                               'term' => getEncryptCookie('Tip_Title'),
+                               'def' => getEncryptCookie('Tip_Content'),
+                               'more' => getEncryptCookie('Tip_More'),
+                       );
+                       initSidebarTip($raw);
+               } else {
+                       initSidebarTip($preset[3]);
+               }
+       ?>
+               </p>
+               </DIV>
+               </li>
+               
+       <div class="clear"></div>
+       <ul id="primary_nav" class="sidebar-menu">
+       <li id="updates_tab"><a class="in-page-link" href="all.php"><span>Updates</span></a></li>
+       <li id="replies_tab"><a class="in-page-link" href="replies.php"><span>@<?php echo is_null(getEncryptCookie('twitese_name')) ? $t->screen_name : getEncryptCookie('twitese_name'); ?></span></a></li>
+       <li id="msgs_tab"><a class="in-page-link" href="message.php"><span>Direct Messages</span></a></li>
+       <li id="lists_tab"><a class="in-page-link" href="lists.php"><span>Lists</span></a></li>
+       <li id="favs_tab"><a class="in-page-link" href="favor.php"><span>Favorites</span></a></li>
+       <li id="retweets_tab"><a class="in-page-link" href="retweets.php"><span>Retweets</span></a></li>
+       </ul>
+       <?php include ('sidepost.php') ?>
+</div>
+</td>
+</tr>
+</table>
+<?php
+       function initSidebarTip($entity){
+               echo '<a class="definition"><strong contenteditable="true">'.$entity['term'].'</strong><span contenteditable="true">'.$entity['def'].'</span></a><br><br><span>Click for more details.<span id="indicator">[+]</span></span><span id="sidebarTip_more"><span contenteditable="true">'.$entity['more'].'</span><br><br><a href="#" id="tip_reset" title="You will lose all customized Tips!">Reset to default</a></span>';
+       }
+?>
\ No newline at end of file
index afc52dd..6604a96 100644 (file)
@@ -1,49 +1,49 @@
-<table>\r
-<tr>\r
-<td>\r
-<ul id="sidepost">\r
-       <li id="header_search">\r
-<form method="get" action="search.php">\r
-<input type="text" name="q" autocomplete="off" id="header_search_query" class="round-left"/>\r
-<input type="submit" value="" id="header_search_submit" class="round-right"/>\r
-</form>\r
-       </li>\r
-</ul>\r
-<hr />\r
-<div id="trends">\r
-<h2 id="trends_title">\r
-<span>Trending Topics</span>\r
-</h2>\r
-<ul id="trend_entries" class="sidebar-menu">\r
-</ul>\r
-</div>\r
-<hr />\r
-<div id="following">\r
-<h2 id="following_title">\r
-<span>Following</span>\r
-</h2>\r
-<div id="following_list">\r
-</div>\r
-</div>\r
-<hr />\r
-<div id="toolbox">\r
-<h2 id="toolbox_title">\r
-<span>Toolbox</span>\r
-</h2>\r
-<ul id="tools_list" class="sidebar-menu">\r
-<li><a class="in-page-link" href="nexus.php"><span>Nexus</span></a></li>\r
-</ul>\r
-</div>\r
-<hr />\r
-<!--Preload Start-->\r
-<div class="preload" style="position: absolute; left: -9999em; top: -9999em;">\r
-<img src="img/spinner.gif" />\r
-<img src="img/toggle_up_dark.png" />\r
-<img src="img/sprite-icons.png" />\r
-<img src="/img/square.gif" />\r
-</div>\r
-<!--Preload End-->\r
-</td>\r
-</tr>\r
-</table>\r
+<table>
+<tr>
+<td>
+<ul id="sidepost">
+       <li id="header_search">
+       <form method="get" action="search.php">
+       <input type="text" name="q" autocomplete="off" id="header_search_query" class="round-left"/>
+       <input type="submit" value="" id="header_search_submit" class="round-right"/>
+       </form>
+       </li>
+</ul>
+<hr />
+<div id="trends">
+<h2 id="trends_title">
+<span>Trending Topics</span>
+</h2>
+<ul id="trend_entries" class="sidebar-menu">
+</ul>
+</div>
+<hr />
+<div id="following">
+<h2 id="following_title">
+<span>Following</span>
+</h2>
+<div id="following_list">
+</div>
+</div>
+<hr />
+<!-- 
+<div id="apiquota">
+<h2 id="apiquota_title">
+<span>API Quota</span>
+</h2>
+<ul id="apiquota_list" class="sidebar-menu">
+</ul>
+</div>
+!-->
+<!--Preload Start-->
+<div class="preload" style="position: absolute; left: -9999em; top: -9999em;">
+<img src="img/spinner.gif" width="14" height="14"/>
+<img src="img/toggle_up_dark.png" width="13" height="13"/>
+<img src="img/sprite-icons.png" width="288" height="96"/>
+<img src="img/square.gif" width="16" height="11"/>
+</div>
+<!--Preload End-->
+</td>
+</tr>
+</table>
 </td>
\ No newline at end of file
diff --git a/inc/symbols.inc b/inc/symbols.inc
new file mode 100644 (file)
index 0000000..5776966
--- /dev/null
@@ -0,0 +1,490 @@
+<span title="花蕾无语">╮(╯_╰)╭</span>\r
+<span title=" 嗷~~">┗|`O′|┛</span>\r
+<span title="~你给我回来!">o(°▽、°o)....+(( ̄﹏ ̄m )</span>\r
+<span title="“不明真相的围观群众”">槑槑槑槑呆槑槑槑槑槑槑槑槑……</span>\r
+<span title="『家』">~o(▽` o) =3 =3 =3</span>\r
+<span title="【TEL】"><铃铃铃~ヾ( ̄  ̄*)==3=3=3</span>\r
+<span title="【小黑屋】">ヽ( ̄︿ ̄ )—C<(/;◇;)/ </span>\r
+<span title="555~他不起来……">ヾ( ┬o┬)┌θθθθ(;;_ _).o○</span>\r
+<span title="aaa">o((>ω< ))o</span>\r
+<span title="aaa">o(≧口≦)o</span>\r
+<span title="ai">╮( ̄▽ ̄")╭ </span>\r
+<span title="bai">m(_ _)m</span>\r
+<span title="bai">ヾ( ̄▽ ̄)Bye~Bye~</span>\r
+<span title="baotou">▄︻┻┳═一…… ☆(>○<)</span>\r
+<span title="baoxiao">o(*≧▽≦)ツ</span>\r
+<span title="baoxiao">ヾ(≧▽≦*)o</span>\r
+<span title="bengkui">o(≧口≦)o</span>\r
+<span title="BINGO!">(o゜▽゜)o☆</span>\r
+<span title="biti">( ̄ ‘i  ̄;)</span>\r
+<span title="biti">( ̄ ii  ̄;) ( ̄" ̄;)</span>\r
+<span title="bizui">(⊙x⊙;)</span>\r
+<span title="bo">(*^ ^*)(^ *)</span>\r
+<span title="bqlz">(◎_x)</span>\r
+<span title="buhaoyisi">o( ̄┰ ̄*)ゞ</span>\r
+<span title="buyao">°.°·(((p(≧□≦)q)))·°.°。</span>\r
+<span title="canle">X﹏X 惨了!</span>\r
+<span title="chaoxiao">q(≧▽≦q)</span>\r
+<span title="chouyan">( ̄ c ̄)y▂ξ。。。</span>\r
+<span title="chuai"><(  ̄^ ̄)(θ(θ☆( >_< </span>\r
+<span title="dai">( ̄△ ̄;)</span>\r
+<span title="dai">( ̄旦 ̄;)</span>\r
+<span title="dai">━┳━ ━┳━</span>\r
+<span title="dao">Σ(`д′*ノ)ノ</span>\r
+<span title="dao">Σ(っ °Д °;)っ</span>\r
+<span title="dese">~( ̄▽ ̄~)(~ ̄▽ ̄)~</span>\r
+<span title="deyi"><( ̄ˇ ̄)/</span>\r
+<span title="duo">┬┴┤_·)</span>\r
+<span title="e">("▔□▔)</span>\r
+<span title="e">(⊙﹏⊙)</span>\r
+<span title="e">-________-''</span>\r
+<span title="e">o(` · ~ · ′。)o</span>\r
+<span title="EXIT">______λ......_____</span>\r
+<span title="EXIT">λ…λλ…λ…λλλ…</span>\r
+<span title="fangp">○| ̄|_ =3</span>\r
+<span title="fanzhuo">(╯′□`)╯ ┫:·'∵:.┻┻:·'.:┣∵·:. ┳┳☆</span>\r
+<span title="fanzhuo">(╯‵□′)╯""┻━┻☆))>○<)</span>\r
+<span title="fanzhuo">┻━┻︵╰(‵□′)╯︵┻━┻ </span>\r
+<span title="fei">︿( ̄︶ ̄)︿</span>\r
+<span title="fen">ヾ(≧奋≦)〃</span>\r
+<span title="fk">French (* ̄( ̄ *) Kiss!</span>\r
+<span title="fufu">( ̄ˇ ̄)v</span>\r
+<span title="fufu">fufu~ ^u^</span>\r
+<span title="gaozhuang">( σ'ω')σ </span>\r
+<span title="gaozhuang">o(>O<;; )σ</span>\r
+<span title="gfw">┳G┻┳F┳┻W┫</span>\r
+<span title="GiveMeFive!">(┘ ̄︶ ̄)┘└( ̄︶ ̄└)</span>\r
+<span title="GO!"><( ̄︶ ̄)↗</span>\r
+<span title="GO!"><( ̄OO, ̄)/</span>\r
+<span title="good">Good! o( ̄▽ ̄)d</span>\r
+<span title="gudan">______λ......_____</span>\r
+<span title="guilian">( ̄┰ ̄*)</span>\r
+<span title="ha">(#°Д°) </span>\r
+<span title="ha">O口O!</span>\r
+<span title="ha">Σ(⊙▽⊙"a...</span>\r
+<span title="haha">o(*≧▽≦)ツ</span>\r
+<span title="han">( ̄_ ̄|||)</span>\r
+<span title="han">( ̄▽ ̄")</span>\r
+<span title="han">(寒 ̄ii ̄)彡…彡…彡</span>\r
+<span title="hehe">o(* ̄▽ ̄*)o</span>\r
+<span title="heiban">【】\(·ω·`)o</span>\r
+<span title="heihei">o(* ̄▽ ̄*)ゞ</span>\r
+<span title="heng">( -з)</span>\r
+<span title="heng">(;′⌒`)</span>\r
+<span title="heng">(ε- )</span>\r
+<span title="heng">o( ̄ヘ ̄o#) </span>\r
+<span title="hh">( ̄▽ ̄")</span>\r
+<span title="hh">o(* ̄▽ ̄*)o</span>\r
+<span title="hhh">^-^</span>\r
+<span title="hhh">^O^</span>\r
+<span title="hi">Hi~ o(* ̄▽ ̄*)ブ</span>\r
+<span title="Hi~Hitler!">( ·_·)ノ_·)ノ_·)ノ_·)ノ_·)ノ</span>\r
+<span title="hiahia">○( ^皿^)っHiahiahia.... </span>\r
+<span title="hoho">( ̄y▽ ̄)╭ Ohohoho.....</span>\r
+<span title="hoho">hoho ^O^</span>\r
+<span title="huhu">(_ _)。゜zzZ</span>\r
+<span title="jing">Σ( ° △ °|||)︴</span>\r
+<span title="jing">Σ(`д′*ノ)ノ</span>\r
+<span title="jing">Σ(っ °Д °;)っ</span>\r
+<span title="jirou">┗|*`0′*|┛</span>\r
+<span title="jiujie">( -'`-; ) </span>\r
+<span title="jiujie">o(′益`)o</span>\r
+<span title="jizhang">(  ̄ー ̄)人(^▽^ )</span>\r
+<span title="keai">n(*≧▽≦*)n</span>\r
+<span title="kedou">(°°)~ (°°)~ (°°)~ (°°)~</span>\r
+<span title="Kiss!"> (* ̄( ̄ *)</span>\r
+<span title="koushui">ˋ( ° ▽、° ) 口水ing...</span>\r
+<span title="K歌"> ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)></span>\r
+<span title="laohu">m( =∩王∩= )m</span>\r
+<span title="lei">(┳_┳)...</span>\r
+<span title="lei">/(ㄒoㄒ)/~~</span>\r
+<span title="luanma">卐~%?…,# *'☆&℃$︿★?</span>\r
+<span title="manzu">o(* ̄︶ ̄*)o</span>\r
+<span title="manzu">o( ̄ˇ ̄)o</span>\r
+<span title="mao">o( =·ω·= )m </span>\r
+<span title="mao">o(=·ェ·=)m</span>\r
+<span title="max">MIN■■■■■□□MAX</span>\r
+<span title="miehhh">(/ ̄ˇ ̄)/</span>\r
+<span title="mimi">(。人。) </span>\r
+<span title="mmm">mmm...f('︶︿︶)o</span>\r
+<span title="mmm">mmm.....</span>\r
+<span title="mojiezuo">Capricorn</span>\r
+<span title="mua">mua! (*╯3╰)</span>\r
+<span title="niao">--\(˙<>˙)/--</span>\r
+<span title="nie">~( ̄▽ ̄)~* </span>\r
+<span title="nu">(#‵′) </span>\r
+<span title="nu">(o#゜ 曲゜)o</span>\r
+<span title="nu">MIN■■■■■□□MAX(╯‵□′)╯︵┻━┻</span>\r
+<span title="nu">ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)ノ</span>\r
+<span title="o">(⊙o⊙)?</span>\r
+<span title="ohno">Oh~ no!!!!</span>\r
+<span title="ohye">Oh yeah!\(^&^)/</span>\r
+<span title="ok">OK</span>\r
+<span title="paidui">λ…λλ…λ…入λλ…</span>\r
+<span title="pao">ε = = (づ′▽`)づ</span>\r
+<span title="pao">ε=ε=ε=(~ ̄▽ ̄)~</span>\r
+<span title="pao">ヾ(*′▽`*)ノ彡☆ノヽノヽノヽ</span>\r
+<span title="pdr">ヾ(′▽`* )ノ~</span>\r
+<span title="pia">( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///) </span>\r
+<span title="pia">Pia!(o ‵-′)ノ”(ノ﹏<。)</span>\r
+<span title="piao">(~ ̄▽ ̄)~</span>\r
+<span title="piao">(~o ̄3 ̄)~</span>\r
+<span title="piao">.....((/- -)/</span>\r
+<span title="qiang">▄︻┻┳═一……</span>\r
+<span title="qie">(ˉ▽ ̄~) 切~~</span>\r
+<span title="qing">( ^ ^) _U~~</span>\r
+<span title="quan">(╬ ̄皿 ̄)=○#( ̄#)3 ̄)</span>\r
+<span title="quan">(Д゜(○=(゜ 皿゜)=○)゜Д゜)</span>\r
+<span title="shengqi"><(-︿-)></span>\r
+<span title="shy">shy~ o(*////▽////*)q</span>\r
+<span title="sigh">( ′ 3`) sigh~</span>\r
+<span title="S奥特曼">三三三三三三三三三4(o|o ) </span>\r
+<span title="S小孩!"> (o ‵-′)ノ”(ノ_<。)</span>\r
+<span title="t"><(  ̄^ ̄)(θ(θ☆( >_< </span>\r
+<span title="tanshou">╮( ╯ 3 ╰ )╭</span>\r
+<span title="tanshou">╮( ̄▽ ̄")╭ </span>\r
+<span title="tanshou">╮(╯-╰)╭</span>\r
+<span title="tanshou">ㄟ( ▔, ▔ )ㄏ</span>\r
+<span title="tao">ε=ε=┏( >_<)┛</span>\r
+<span title="tao">ε=ε=ε=┏(゜ロ゜;)┛ </span>\r
+<span title="tao">ε=ε=ε=ε=ヽ(* ̄o ̄)ノ</span>\r
+<span title="tat">o(≧∩≦)o</span>\r
+<span title="tat">o(TヘTo)</span>\r
+<span title="thx">☆⌒(*^-゜)v THX!!</span>\r
+<span title="toukui">|壁|_☆)</span>\r
+<span title="toukui">┬┴┤_·)</span>\r
+<span title="touxiang">n(→_←)┛</span>\r
+<span title="touxiang">o( >﹏<。)┛</span>\r
+<span title="tun">0^)吞!</span>\r
+<span title="tushetou">( ̄┰ ̄*)</span>\r
+<span title="wa">(PД`q。)·。'゜</span>\r
+<span title="wakkk"><( ̄▽ ̄)/</span>\r
+<span title="wc">∥wc∥ o(- -o) =з =з =з</span>\r
+<span title="weiguan">(﹁"﹁)</span>\r
+<span title="weiqu">╥﹏╥...</span>\r
+<span title="wo">σ(⌒ー⌒)</span>\r
+<span title="woniu">@/"</span>\r
+<span title="wow">wow~⊙o⊙</span>\r
+<span title="xiaoxin">ㄟ( ▔, ▔ )ㄏ</span>\r
+<span title="xiey">( ﹁ ﹁ ) ~→</span>\r
+<span title="xiey">( ̄. ̄)+</span>\r
+<span title="xiey">(﹁"﹁)</span>\r
+<span title="xiezi">...ψ(。。 )</span>\r
+<span title="xingfu">o(* ̄▽ ̄*)o</span>\r
+<span title="xiong">(* ̄(エ) ̄)</span>\r
+<span title="xiong">(+(工)+╬)</span>\r
+<span title="xiu">o(*////▽////*)q</span>\r
+<span title="xiu">p(# ̄▽ ̄#)o</span>\r
+<span title="xxoo">卐~%?…,# *'☆&℃$︿★?……</span>\r
+<span title="xxoo">╳╳○○</span>\r
+<span title="y">(* ̄︶ ̄)y</span>\r
+<span title="y">(* ̄▽ ̄)y</span>\r
+<span title="y">^_^)y</span>\r
+<span title="yanshen">━┳━ ━┳━</span>\r
+<span title="yanwenzi">ag108lau</span>\r
+<span title="yessir">Yes,sir! <( ̄O ̄)/</span>\r
+<span title="yiqi">╭(′▽`)╭(′▽`)╯</span>\r
+<span title="yiqi">ヽ( ̄ω ̄( ̄ω ̄〃)ゝ</span>\r
+<span title="yo">(^U^)ノ~YO </span>\r
+<span title="yu">>°)))>彡</span>\r
+<span title="yun">(((φ(◎ロ◎;)φ)))</span>\r
+<span title="zhaoxiang">Σ[ ◎ ]}</span>\r
+<span title="zhi"><( ̄ ﹌  ̄)@m</span>\r
+<span title="zhu">^(* ̄(oo) ̄)^</span>\r
+<span title="zhua">W( ̄_ ̄)W</span>\r
+<span title="zhuangqiang">┳G┻F┳W┫☆(ノ﹏<。)</span>\r
+<span title="zhuisha">--==≡≡〈〈《( / ̄皿 ̄)=O));>o<)/</span>\r
+<span title="zuomeng">ZZzz…(。-ω-)..ooO((【·:*:~夢~:*:·】))</span>\r
+<span title="哎哟哟……">( ̄y▽, ̄)╭ </span>\r
+<span title="安安啦~~~"> o(* ̄▽ ̄*)ブ</span>\r
+<span title="凹凸曼……">(o|o)</span>\r
+<span title="嗷~">ヾ(≧O≦)〃</span>\r
+<span title="奥特曼……">(o|o) </span>\r
+<span title="拜佛">(-人-) </span>\r
+<span title="拜托啦……">(^人^)</span>\r
+<span title="包在我身上!">ヾ(′▽`*)ゝ</span>\r
+<span title="包在我身上!">ヾ(′▽`*)ゝ</span>\r
+<span title="抱抱">━((*′ ▽`)爻(′▽`*))━!!!</span>\r
+<span title="抱抱">━((*′д`)爻(′д`*))━!!!!</span>\r
+<span title="抱抱~">\( ̄︶ ̄)/</span>\r
+<span title="抱抱~">\( ̄︶ ̄*\))</span>\r
+<span title="鼻毛">(′゜c_,゜` ) </span>\r
+<span title="鄙视你!">╭∩╮(︶︿︶)╭∩╮</span>\r
+<span title="壁">(  ̄  ̄)σ…( _ _)ノ|</span>\r
+<span title="壁">(  ̄  ̄)σ…( _ _)ノ|</span>\r
+<span title="壁">ノ ̄ー ̄)ノ ⌒ >┼○"☆||</span>\r
+<span title="便秘">o(′益`)o </span>\r
+<span title="辫子">§(* ̄▽ ̄*)§</span>\r
+<span title="表!"><( ̄3 ̄)> </span>\r
+<span title="别走啊~~">______λ......___丬</span>\r
+<span title="瘪嘴">(* ̄︿ ̄) </span>\r
+<span title="冰天雪地掩面泪奔……">(PД`q。)·。'゜</span>\r
+<span title="啵啵">(*  ̄3)(ε ̄ *) </span>\r
+<span title="不吃!">( *^-^)ρ(*╯^╰)</span>\r
+<span title="不懂">(@_@;)? </span>\r
+<span title="不满">(* ̄︿ ̄) </span>\r
+<span title="不是我干的">ㄟ( ▔, ▔ )ㄏ </span>\r
+<span title="不屑">( ̄_, ̄ )</span>\r
+<span title="擦眼泪……">(ノへ ̄、)</span>\r
+<span title="财神爷">(o′┏▽┓`o) </span>\r
+<span title="草泥马">( ·ェ·)(·ェ· )</span>\r
+<span title="蹭">(*≧︶≦))( ̄▽ ̄* )ゞ</span>\r
+<span title="蹭">( * ̄▽ ̄)((≧︶≦*) </span>\r
+<span title="叉腰"><)。(> </span>\r
+<span title="超强风扇吹">ε~( ~( ~ ( 卍 )\( ̄▽ ̄ \)</span>\r
+<span title="超远程BB枪!">(# ̄□ ̄)o―∈‥oo━━━━━━━☆ </span>\r
+<span title="車">●┻┓⌒ Σ┌┘車└┐=3 =3 =3</span>\r
+<span title="吃饭去鸟">.....(((((ヾ( o=^·ェ·)o ┏━┓</span>\r
+<span title="吃我一鞭!">( `0‘)ノ~~~~~~~~~ν</span>\r
+<span title="吃药">(。>︿<)_θ</span>\r
+<span title="冲出!!">___*\(  ̄皿 ̄)/#____</span>\r
+<span title="抽!!">( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)</span>\r
+<span title="抽泣">(ノへ ̄、)</span>\r
+<span title="抽泣">(ノへ ̄、)</span>\r
+<span title="臭蚊子!">Pia!(o ‵-′)ノ” </span>\r
+<span title="穿墙过去!">ε=ε┣G┻F┳ε=ヽ(* ̄▽ ̄)ノ┻W┫</span>\r
+<span title="戳">→)╥﹏╥) </span>\r
+<span title="赐予你力量!">( * ̄▽ ̄)o ─═≡※:☆▆▅▄▃▂_</span>\r
+<span title="打呵欠">(_ _)( - . - )(~O~) ……( - . - ) </span>\r
+<span title="大鼻子">(′台` ) </span>\r
+<span title="呆滞"> ━┳━ ━┳━</span>\r
+<span title="淡定">━━( ̄ー ̄*|||━━</span>\r
+<span title="当然!"><(ˉ^ˉ)></span>\r
+<span title="刀疤">(-_-メ)</span>\r
+<span title="等等我…我……我…………">...(* ̄0 ̄)ノ</span>\r
+<span title="低落"> (#`-_ゝ-)</span>\r
+<span title="低头">(。﹏。) </span>\r
+<span title="低头">(。_。) </span>\r
+<span title="点头">( ̄ー ̄(_ _( ̄ー ̄(_ _ </span>\r
+<span title="跌">(┬_┬)↘ </span>\r
+<span title="顶!">d=====( ̄▽ ̄*)b </span>\r
+<span title="动感光波">!!!(  ̄O ̄)ノノ……∞∞OOO)))</span>\r
+<span title="动感光波">!!!(  ̄O ̄)ノノ……∞∞OOO)))</span>\r
+<span title="抖">o((⊙﹏⊙))o. </span>\r
+<span title="嘟嘴">o( ̄ε ̄*) </span>\r
+<span title="嘟嘴">(○` 3′○) </span>\r
+<span title="对不起~"> <(_ _)></span>\r
+<span title="呃~被发现了......">(ˉ▽ˉ;)</span>\r
+<span title="呃~我……">σ(-_-メ)</span>\r
+<span title="翻桌!">(╯‵□′)╯︵┻━┻</span>\r
+<span title="防御!">(((\( ̄一 ̄)/)))</span>\r
+<span title="放我出去~~~"> ||Φ|(|T|Д|T|)|Φ|| </span>\r
+<span title="飞吻"> (* ̄3 ̄)╭</span>\r
+<span title="分裂">>( ̄▽ ̄ =  ̄︿ ̄)<</span>\r
+<span title="风魔法!"> (/-_-)/ξ ξ ξ ξ ξ ξ (+_+ /)/~~~</span>\r
+<span title="去去去~">乀ˉεˉ乀...</span>\r
+<span title="扶眼镜">(-@y@) </span>\r
+<span title="扶眼镜">(-@y@) </span>\r
+<span title="复活!">...:.;::..;::: .:.;::….;: ̄)…:.;:□ ̄)( ̄□ ̄*)</span>\r
+<span title="嘎~嘎~嘎~">.<{=....</span>\r
+<span title="干杯">( ̄▽ ̄)~■□~( ̄▽ ̄)</span>\r
+<span title="干杯!">~( ̄▽ ̄)~* </span>\r
+<span title="感动!">o(*≧▽≦*)m</span>\r
+<span title="高~实在是高!">(* ̄▽)u┌┐ d(▽ ̄*)</span>\r
+<span title="告状">(′д`σ)σ </span>\r
+<span title="跟你说厚~">╰( ̄▽ ̄)╭</span>\r
+<span title="狗狗">U·ェ·*U </span>\r
+<span title="狗狗">U·ェ·U </span>\r
+<span title="鼓掌">””\\( ̄ー ̄) ( ̄ー ̄)//””</span>\r
+<span title="鼓掌">└( ̄  ̄└)(┘ ̄  ̄)┘</span>\r
+<span title="乖~">o(*^@^*)o</span>\r
+<span title="滚来滚去">……~(~o ̄▽ ̄)~o 。。。……o~(_△_o~) ~。。。</span>\r
+<span title="含泪挥手帕">(ToT)/~~~</span>\r
+<span title="好~~">o(*^▽^*)o </span>\r
+<span title="好吧">╮╯-╰╭"</span>\r
+<span title="好苦~">( >﹏<)</span>\r
+<span title="好香~~">(╯▽╰ )</span>\r
+<span title="好主意!">(o゜▽゜)o☆</span>\r
+<span title="喝西北风">( ′Д`)彡</span>\r
+<span title="河马">( ̄。。 ̄)</span>\r
+<span title="黑客帝国下腰!"> ┌(_Д_┌ )┐</span>\r
+<span title="黑客帝国下腰!"> ┌(_Д_┌ )┐</span>\r
+<span title="呼~幸好幸好……">ε=( ̄。 ̄;A</span>\r
+<span title="呼唤">(/0 ̄)o </span>\r
+<span title="坏人……"> ~( TロT)σ</span>\r
+<span title="幻影术!">((( ̄( ̄( ̄( ̄ー ̄) ̄) ̄) ̄))) </span>\r
+<span title="挥手帕">(@^^)/~~~</span>\r
+<span title="火箭筒,发射!">(* ̄皿 ̄)=Σ口>=Σ口>=Σ口></span>\r
+<span title="获胜者是……">ヾ( ̄ー ̄)X(^▽^)ゞ</span>\r
+<span title="击掌">(〃 ̄︶ ̄)人( ̄︶ ̄〃)</span>\r
+<span title="加油">o^^oo^^o</span>\r
+<span title="交通志愿老大妈指挥ing..."> (o^~^)尸"</span>\r
+<span title="金盾!">||┣(—_\) </span>\r
+<span title="就你!"><( ̄ ﹌  ̄)@m</span>\r
+<span title="就你好了~"> (@゜▽゜)</span>\r
+<span title="就是他!"> (@`д′)</span>\r
+<span title="举手">o(*^▽^*)┛</span>\r
+<span title="举手投降">┗( T﹏T )┛</span>\r
+<span title="嚼!">( ̄~ ̄)</span>\r
+<span title="卡拉OK"> ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)′</span>\r
+<span title="看">(°ー°〃) </span>\r
+<span title="看好你哦!">(@^0^)</span>\r
+<span title="看我忍者镖!">( ‵▽′)ノ'卍卍卍卍卍卍 Σ(゜д゜;)</span>\r
+<span title="靠!什么东西?!"> ( `д′)</span>\r
+<span title="咳咳">><</span>\r
+<span title="苦恼"> ( -'`-; )</span>\r
+<span title="快使用双截棍,">┗(`o′)┓哼┏(`○′)┛哼┏(`o′)┓哈┗(`O′)┛兮!!</span>\r
+<span title="困,揉眼睛……">(o-ωq)).oO</span>\r
+<span title="啦啦啦">...φ(0 ̄*)_φ(* ̄0 ̄)></span>\r
+<span title="来啦~">(~o ̄▽ ̄)~o ~。。。</span>\r
+<span title="来人呐~">(o ;′Д`)ノ゛</span>\r
+<span title="冷笑">(  ̄ー ̄)</span>\r
+<span title="脸红掩面">(*/ω\*)</span>\r
+<span title="脸红掩面">(*/ω\*)</span>\r
+<span title="两罐纸星星">(*ˉ﹃ˉ)_☆☆</span>\r
+<span title="列队">(* ̄^ ̄(* ̄^ ̄(* ̄^ ̄)</span>\r
+<span title="铃铃铃">☆{{{Д}}} ☆!! </span>\r
+<span title="毛毛虫">(· ·)nnn </span>\r
+<span title="没办法~">╮( ̄▽ ̄")╭</span>\r
+<span title="没人在哦?">||o(*°ω°*)o|Ю </span>\r
+<span title="媚眼">ο(=·ω<=)ρ⌒☆</span>\r
+<span title="秘密">(一-一) </span>\r
+<span title="喵~">o( =∩ω∩= )m </span>\r
+<span title="喵~">>▽<</span>\r
+<span title="咩哈哈哈哈……"><(* ̄▽ ̄*)/</span>\r
+<span title="蔑视">( ̄_, ̄ )</span>\r
+<span title="命苦...">ε(┬┬﹏┬┬)3</span>\r
+<span title="摸摸头">(~ ̄▽ ̄)ノ</span>\r
+<span title="摸摸头">╰( ̄ω ̄o) </span>\r
+<span title="膜拜">_| ̄|○ → _|\○_ → _/\○_ → ____○_</span>\r
+<span title="墓">┏┛墓┗┓...(((m -__-)m</span>\r
+<span title="哪~里跑?!">(/// ̄皿 ̄)○~</span>\r
+<span title="那边那个">(﹁ ﹁ )σ</span>\r
+<span title="嗯!">ヾ(≧へ≦)〃</span>\r
+<span title="嗯!">o( ̄︶ ̄)n</span>\r
+<span title="嗯~">o(* ̄▽ ̄*)o</span>\r
+<span title="你!!">Σ(  ̄д ̄;)</span>\r
+<span title="你回来啦~~">ヾ(^▽^*)))</span>\r
+<span title="你你你……"> ~( TロT)σ</span>\r
+<span title="你你你……"> ~( TロT)σ</span>\r
+<span title="溺水">゜゜┌┴o゜゜゜゜°</span>\r
+<span title="念力~"> ( -人-)···-~=~≡~≡ ((+o+)))</span>\r
+<span title="念咒">((( (-h-) )))</span>\r
+<span title="念咒">……(((\( ̄一 ̄)/)))</span>\r
+<span title="捏耳朵!"><( ‵□′)>───Cε(┬﹏┬)3</span>\r
+<span title="怒">ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)/</span>\r
+<span title="哦~">_( ̄0 ̄)_</span>\r
+<span title="啪叽~摔一跟头……">((o_ _)'彡☆</span>\r
+<span title="怕怕">━((*′д`)爻(′д`*))━!!!!</span>\r
+<span title="拍手">└( ̄  ̄└)(┘ ̄  ̄)┘</span>\r
+<span title="拍手拍手">””\\( ̄ー ̄) ( ̄ー ̄)//””</span>\r
+<span title="拍桌狂笑!">o(*≧▽≦)ツ┏━┓</span>\r
+<span title="飘飘然……">︿( ̄︶ ̄)︿</span>\r
+<span title="乒乓球">( ^o)ρ┳┻┳°σ(o^ ) </span>\r
+<span title="期待"> (☆▽☆)</span>\r
+<span title="起床">(o ̄Д ̄)<起床! ※=○☆(__*)Zzz</span>\r
+<span title="起床啦!">( *′д)/o(_ _)ozzZZ…</span>\r
+<span title="切~~">( ﹁ ﹁ ) ~~~</span>\r
+<span title="亲亲">o(* ̄3 ̄)o</span>\r
+<span title="亲亲">(*  ̄)( ̄▽ ̄*)ゞ</span>\r
+<span title="去去去~">(づ ̄ 3 ̄)づ...</span>\r
+<span title="去下厕厕……">∥WC||_·)╯</span>\r
+<span title="忍术~隐!"> ( ̄人 ̄)( ̄人:.;:…( ̄...:.;::..;::: .:;.…::;.:..:;.:...</span>\r
+<span title="撒花!">( ̄▽ ̄)o∠※PAN!=.:*:'☆.:*:'★':* </span>\r
+<span title="撒花!">*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。</span>\r
+<span title="散弹发射!!">▄︻┻┳═一∵∴∷∶∵ (∵_,∵)>>>></span>\r
+<span title="杀虫剂!">( ▼▼)/鹵〈 巛巛巛 ( ◎_x)/</span>\r
+<span title="闪人">(* ̄▽ ̄)( ̄▽:;.…::;.:.:::;..::;.:... </span>\r
+<span title="伤心">(;′⌒`)</span>\r
+<span title="蛇拳">z(-_-z)).....((s-_-)s</span>\r
+<span title="射箭">(  ̄ー ̄)——)-=======>-->></span>\r
+<span title="神啊~">\( ̄0 ̄)/</span>\r
+<span title="失落">(。_。) </span>\r
+<span title="石化">━━∑( ̄□ ̄*|||━━化</span>\r
+<span title="石化ing~">(ˉ▽ˉ;)...</span>\r
+<span title="视力表">┫♀旦 ̄)σ(呃……)</span>\r
+<span title="是不是你?!">(σ`д′)σ</span>\r
+<span title="是不是你?!">(σ`д′)σ</span>\r
+<span title="手榴弹!">σ~ (`′メ </span>\r
+<span title="手指戳戳">(~ ̄▽ ̄)→))* ̄▽ ̄*)o </span>\r
+<span title="手肘戳戳">o( ̄▽ ̄*)ゞ)) ̄▽ ̄*)o </span>\r
+<span title="衰">(′д` )…彡…彡</span>\r
+<span title="死亡中">(:D)┼─┤</span>\r
+<span title="太好笑了!!">……o((≧▽≦o)</span>\r
+<span title="太可怕了">ヽ(*。>Д<)o゜</span>\r
+<span title="逃命啊~~">\("▔□▔)/\("▔□▔)/ </span>\r
+<span title="陶醉">( *︾▽︾)</span>\r
+<span title="讨厌啦~">(ノω<。)ノ))☆.。</span>\r
+<span title="天旋地转">ヾ(   )ノ゛ヾ( °д)ノ゛ヾ(°д°)ノ゛ヾ(д° )ノ゛ヾ(  )ノ゛</span>\r
+<span title="天助我也~"> ヾ(*′▽`*)彡</span>\r
+<span title="挑衅"><(* ̄ー ̄)ゞ来呀~</span>\r
+<span title="挑衅"><(* ̄ー ̄)ゞ来啊~</span>\r
+<span title="偷看">(/ω\*)……… (/ω·\*) </span>\r
+<span title="偷看">(/ω·\*) </span>\r
+<span title="偷拍 ">Σ[ ◎ ]}ー′)</span>\r
+<span title="怒">凸艹皿艹</span>\r
+<span title="靠">凸゜皿゜メ</span>\r
+<span title="吐">( >ρ < ”)</span>\r
+<span title="推推~起床啦!">(o ̄ω ̄)○))o(__*)Zzz</span>\r
+<span title="拖走">ヽ(゜▽゜ )-C<(/;◇;)/~</span>\r
+<span title="哇卡卡卡卡卡……">o((≧▽≦o) 太好笑了!!</span>\r
+<span title="哇咧!">Σ(⊙▽⊙"a...</span>\r
+<span title="挖鼻屎"> (* ̄rǒ ̄)</span>\r
+<span title="万岁!">*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。</span>\r
+<span title="围观!">(← ← )</span>\r
+<span title="围观!">( → →) </span>\r
+<span title="畏罪自杀…">…〒_〒…‵o′-一┳═┻︻▄</span>\r
+<span title="喂!">(#`O′)</span>\r
+<span title="喂饭">( *^-^)ρ(^0^* )</span>\r
+<span title="吻别">(* ̄;( ̄ *)</span>\r
+<span title="我?">σ(· ·?)</span>\r
+<span title="我不看……">(/▽\)</span>\r
+<span title="我错了……">(。﹏。*)</span>\r
+<span title="我回来啦~">||ヽ(* ̄▽ ̄*)ノミ|Ю</span>\r
+<span title="我来了~">(~ ̄▽ ̄)~</span>\r
+<span title="我忍!">o(-"-;) </span>\r
+<span title="我闪!">|(·_·) |·_·) |_·) |·) | )</span>\r
+<span title="握拳!">o( ̄ヘ ̄o* )</span>\r
+<span title="握拳!">o( ̄ヘ ̄o#)</span>\r
+<span title="呜呜呜……">( >﹏<。)~</span>\r
+<span title="无敌!">↑↑↓↓←→←→BA...┗( -o-)┛</span>\r
+<span title="无敌弹簧拳!">( ‵Д′)=○))~~~~~~Ю))>o<)/ </span>\r
+<span title="无敌幻影脚!">ヽ(ヽ `д′)ヽ`д′)ヽ`д′)┌┛┌┛┌┛★)`з゜)y</span>\r
+<span title="无敌捏脸功!"><( ‵□′)───C<─___-)|| </span>\r
+<span title="无敌肉包拳!">(o  ̄3)==@))゜ロ゜((@==(′ε′ )o </span>\r
+<span title="无敌肉包拳!">(o  ̄3)==@))゜ロ゜((@==(′ε′ )o</span>\r
+<span title="无敌影分身!">((≧(≧▽(≧▽≦(≧▽≦)≧▽≦)▽≦)≦))) </span>\r
+<span title="无力扶墙..."> ( _ _)ノ|壁</span>\r
+<span title="无奈">╮(╯-╰)╭ </span>\r
+<span title="无影脚!"><(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-)</span>\r
+<span title="无影脚!"><(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-)</span>\r
+<span title="享受">(╯▽╰ ) </span>\r
+<span title="消失">(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:...</span>\r
+<span title="小新"><( ̄︶ ̄)↗</span>\r
+<span title="邪恶">( ‵▽′)ψ</span>\r
+<span title="谢啦!!">☆⌒(*^-゜)v </span>\r
+<span title="心神不宁...">(゜゜ )(。。)(゜゜ )(。。)</span>\r
+<span title="欣慰">( ╯▽╰)</span>\r
+<span title="要">不>( ̄ε ̄ =  ̄3 ̄)<</span>\r
+<span title="噎死">( *⊙~⊙) </span>\r
+<span title="噎住">( *⊙~⊙) </span>\r
+<span title="隐身!">(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:...</span>\r
+<span title="鹰钩鼻">( ̄ム ̄) </span>\r
+<span title="哟西!">(9 ̄^ ̄)9</span>\r
+<span title="有了!">(o゜▽゜)o☆</span>\r
+<span title="有人吗?">||o(*°▽°*)o|Ю </span>\r
+<span title="御风_凌"></span>\r
+<span title="怨.念....">o(一︿一+)o</span>\r
+<span title="运动">╔囧╗╔囧╝╚囧╝╚囧╗</span>\r
+<span title="晕!">@o@"</span>\r
+<span title="糟糕!">X﹏X</span>\r
+<span title="早安呀~~~"> o(* ̄▽ ̄*)ブ</span>\r
+<span title="早点回来哦~">(~ ̄(OO) ̄)ブ</span>\r
+<span title="炸弹!">(╯‵□′)╯···*~●</span>\r
+<span title="斩!!">ˋ( ° ▽、° ) (o( ̄▽ ̄///</span>\r
+<span title="涨">( ̄︶ ̄)↗</span>\r
+<span title="这个……呃~~">-______-"</span>\r
+<span title="真哒?!"> o(〃'▽'〃)o</span>\r
+<span title="真空波动拳!">( `o′){ ···-=≡))</span>\r
+<span title="真空波动拳!">( `o′){ ···-=≡))</span>\r
+<span title="振奋">(o>ε(o>u(≧∩≦) </span>\r
+<span title="振作!">━━(o_ _)o━━(o―_―)o━━(9 ̄ー ̄)9</span>\r
+<span title="痣长毛">( ゜,_ゝ゜) </span>\r
+<span title="皱眉">(-"-)</span>\r
+<span title="抓狂">o((>ω< ))o</span>\r
+<span title="抓狂">o(>@<)o</span>\r
+<span title="足球">( · ·)L☆ .....○ 冂 </span>\r
+<span title="醉拳">ヨロ (*~▽~)ノ ヨロ ヽ(~▽~*)ヨロ (*~▽~)―〇 ☆ バシ ))>口<)</span>\r
+<p style="display: block; float: left; margin-top: 25px; margin-bottom: -40px;">&copy; 2010 @ag108lau<br>Thanks @OnlyTiny<br />\r
+Last Update: 2010-11-13\r
+</p>
\ No newline at end of file
index 0358777..34b9af8 100644 (file)
-<div id="statuses" class="column round-left">\r
-<script type="text/javascript" src="js/userlist.js?ver=2010032102"></script>\r
-<?php\r
-       include_once('ajax/timeline_format.php');\r
-       \r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       $test_var = false;\r
-\r
-       $t = getTwitter();\r
-       refreshProfile($t);\r
-       $p = -1;\r
-       if (isset($_GET['p'])) {\r
-               $p = $_GET['p'] = '' ? -1 : $_GET['p']; // 如果出现 p= 的情况会异常\r
-       }\r
-       $c = -1;\r
-       if (isset($_GET['c'])) {\r
-               $c = $_GET['c'];\r
-       }\r
-\r
-       $id = isset($_GET['id']) ? $_GET['id'] : null;\r
-       $userid = $id;\r
-       {\r
-               switch ($type) {\r
-                       case 'blocks':\r
-                               echo $userid ? "You can't view others' blocking!" : "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>People I'm blocking</span>\r
-                                       </h2>\r
-                                       <div id='subnav'>\r
-                                       <span class='subnavLink'><a href='friends.php'>People I'm following</a></span>\r
-                                       <span class='subnavLink'><a href='followers.php'>People who follow me</a></span>                \r
-                                       <span class='subnavNormal'>People I'm blocking</span>\r
-                                       </div>";\r
-                               break;\r
-                       case 'friends':\r
-                               echo $userid ? "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>People <a href='user.php?id=$userid'>" . $userid . "</a> is following</span>\r
-                                       </h2>\r
-                                       <div id='subnav'>\r
-                                       <span class='subnavNormal'>People <b>" . $userid . "</b> is following</span>\r
-                                       <span class='subnavLink'><a href='followers.php?id=$userid'>People who follow <b>" . $userid . "</b></a></span>\r
-                                       </div>" : "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>People I'm following</span>\r
-                                       </h2>\r
-                                       <div id='subnav'>\r
-                                       <span class='subnavNormal'>People I'm following</span>\r
-                                       <span class='subnavLink'><a href='followers.php'>People who follow me</a></span>\r
-                                       <span class='subnavLink'><a href='block.php'>People I'm blocking</a></span>\r
-                                       </div>";\r
-                               break;\r
-                       case 'followers':\r
-                               echo $userid ? "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>People who follow <a href='user.php?id=$userid'>" . $userid . "</a></span>\r
-                                       </h2>\r
-                                       <div id='subnav'>\r
-                                       <span class='subnavLink'><a href='friends.php?id=$userid'>People <b>" . $userid . "</b> is following</a></span>\r
-                                       <span class='subnavNormal'>People who follow <b>" . $userid . "</b></span>\r
-                                       </div>" : "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>People who follow me</span>\r
-                                       </h2>\r
-                                       <div id='subnav'><span class='subnavLink'><a href='friends.php'>People I'm following</a></span>\r
-                                       <span class='subnavNormal'>People who follow me</span>\r
-                                       <span class='subnavLink'><a href='block.php'>People I'm blocking</a></span>\r
-                                       </div>";\r
-                               break;\r
-                       case 'list_members':\r
-                               echo "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>Members of list <span class=\"list_id\">$id</span></span>\r
-                                       </h2>\r
-                                       <div id='subnav'><span class='subnavNormal'>Members of list <b>$id</b></span>\r
-                                       <span class='subnavLink'><a href='list.php?id=$id'>Go back to the list</a></span>\r
-                                       </div>";\r
-                               break;\r
-                       case 'list_followers':\r
-                               echo "\r
-                                       <h2 style='margin: 10px 0pt 20px 15px'>\r
-                                       <span>Followers of list $id</span>\r
-                                       </h2>\r
-                                       <div id='subnav'><span class='subnavNormal'>Followers of list <b>$id</b></span>\r
-                                       <span class='subnavLink'><a href='list.php?id=$id'>Go back to the list</a></span>\r
-                                       </div>";\r
-                               break;\r
-                       case 'browse':\r
-                               echo "<div id='subnav'><span class='subnavNormal'>See what people are saying about…</span></div>";\r
-                               break;\r
-               }\r
-       }\r
-\r
-       echo '<div class="clear"></div>';\r
-       switch ($type) {\r
-               case 'blocks':\r
-                       $p = $p < 1 ? 1 : $p;\r
-                       $t->type = 'xml';\r
-                       $userlist = $t->blockingList($p)->user;\r
-                       $nextlist = count($userlist) == 20 ? $p + 1 : 0;\r
-                       $prelist = $p <= 1 ? 0 : $p - 1;\r
-                       break;\r
-               case 'friends':\r
-                       $t->type = 'xml';\r
-                       $userlist = $t->friends($id, $p);\r
-                       $next_page = $userlist->next_cursor;\r
-                       $previous_page = $userlist->previous_cursor;\r
-                       $userlist = $userlist->users->user;\r
-                       break;\r
-               case 'followers':\r
-                       $t->type = 'xml';\r
-                       $userlist = $t->followers($id, $p);\r
-                       $next_page = $userlist->next_cursor;\r
-                       $previous_page = $userlist->previous_cursor;\r
-                       $userlist = $userlist->users->user;\r
-                       break;\r
-               case 'list_members':\r
-                       $t->type = 'xml';\r
-                       $userlist = $t->listMembers($id, $c);\r
-                       $nextlist = (string) $userlist->next_cursor;\r
-                       $prelist = (string) $userlist->previous_cursor;\r
-                       $userlist = $userlist->users->user;\r
-                       break;\r
-               case 'list_followers':\r
-                       $t->type = 'xml';\r
-                       $userlist = $t->listFollowers($id, $c);\r
-                       $nextlist = (string) $userlist->next_cursor;\r
-                       $prelist = (string) $userlist->previous_cursor;\r
-                       $userlist = $userlist->users->user;\r
-                       break;\r
-               case 'browse':\r
-                       $userlist = $t->followers($id, $p);\r
-                       break;\r
-       }\r
-\r
-       $empty = count($userlist) == 0? true: false;\r
-       if ($empty) {\r
-               if($type == 'blocks'){\r
-                       $empty_msg = 'No blocked user to display.';\r
-               }else{\r
-                       $empty_msg = 'No tweet to display.';\r
-               }\r
-               echo "<div id=\"empty\">$empty_msg</div>";\r
-       } else {\r
-               $output = '<ol class="rank_list">';\r
-               foreach ($userlist as $user) {\r
-                       $output .= "\r
-                               <li>\r
-                               <span class=\"rank_img\">".initShortcutMenu($user)."\r
-                               <a href=\"user.php?id=".$user->screen_name."\" target=\"_blank\"><img title=\"Click for more functions\" src=\"".getAvatar($user->profile_image_url)."\" /></a>\r
-                               </span>\r
-                               <div class=\"rank_content\">\r
-                               <span class=\"rank_num\"><span class=\"rank_name\"><a href=\"user.php?id=$user->screen_name\">$user->name</a></span>&nbsp;<span class=\"rank_screenname\">$user->screen_name</span><span id=\"rank_id\" style=\"display: none;\">$user->id</span></span>\r
-                               <span class=\"rank_count\"><b>Followers:</b> $user->followers_count  <b>Following:</b> $user->friends_count  <b>Tweets:</b> $user->statuses_count</span>\r
-                               ";\r
-                       if ($user->description) $output .= "<span class=\"rank_description\"><b>Bio:</b> $user->description</span>";\r
-                       $list_id = explode("/",$id);\r
-                       if ($type == 'list_members' &&  $list_id[0] == $t->username) $output .= "<span class=\"status_info\"><a class=\"delete_btn list_delete_btn\" href=\"javascript:void()\">删除</a></span>";\r
-                       $output .= "\r
-                               </div>\r
-                               </li>\r
-                               ";\r
-               }\r
-               $output .= "</ol><div id=\"pagination\">";\r
-               if ($type == 'list_members' || $type == 'list_followers' || $type == 'blocks') {\r
-                       if ($prelist != 0) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"list_members.php?id=$id&c=$prelist\">Back</a>";\r
-                       if ($nextlist != 0) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"list_members.php?id=$id&c=$nextlist\">Next</a>";\r
-               } else {\r
-                       if ($id) {\r
-                               if ($p >0)\r
-                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"$type.php?id=$id&p=" . $previous_page . "\">Back</a>";\r
-                               if ($next_page != 0)\r
-                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"$type.php?id=$id&p=" . $next_page . "\">Next</a>";\r
-                       } else {\r
-                               if ($p >0)\r
-                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"$type.php?p=" . $previous_page . "\">Back</a>";\r
-                               if ($next_page != 0)\r
-                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"$type.php?p=" . $next_page . "\">Next</a>";\r
-                       }\r
-               }\r
-               $output .= "</div>";\r
-\r
-               echo $output;\r
-       }\r
-?>\r
-</div>\r
+<div id="statuses" class="column round-left">
+<script src="js/userlist.js"></script>
+<?php
+       include_once('lib/timeline_format.php');
+       
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       $test_var = false;
+
+       $t = getTwitter();
+       $p = -1;
+       if (isset($_GET['p'])) {
+               $p = $_GET['p'] = '' ? -1 : $_GET['p'];
+       }
+       $c = -1;
+       if (isset($_GET['c'])) {
+               $c = $_GET['c'];
+       }
+
+       $id = isset($_GET['id']) ? $_GET['id'] : null;
+       $userid = $id;
+       {
+               switch ($type) {
+                       case 'blocks':
+                               echo $userid ? "You can't view others' blocking!" : "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>People I'm blocking</span>
+                                       </h2>
+                                       <div id='subnav'>
+                                       <span class='subnavLink'><a href='friends.php'>People I'm following</a></span>
+                                       <span class='subnavLink'><a href='followers.php'>People who follow me</a></span>                
+                                       <span class='subnavNormal'>People I'm blocking</span>
+                                       </div>";
+                               break;
+                       case 'friends':
+                               echo $userid ? "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>People <a href='user.php?id=$userid'>" . $userid . "</a> is following</span>
+                                       </h2>
+                                       <div id='subnav'>
+                                       <span class='subnavNormal'>People <b>" . $userid . "</b> is following</span>
+                                       <span class='subnavLink'><a href='followers.php?id=$userid'>People who follow <b>" . $userid . "</b></a></span>
+                                       </div>" : "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>People I'm following</span>
+                                       </h2>
+                                       <div id='subnav'>
+                                       <span class='subnavNormal'>People I'm following</span>
+                                       <span class='subnavLink'><a href='followers.php'>People who follow me</a></span>
+                                       <span class='subnavLink'><a href='block.php'>People I'm blocking</a></span>
+                                       </div>";
+                               break;
+                       case 'followers':
+                               echo $userid ? "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>People who follow <a href='user.php?id=$userid'>" . $userid . "</a></span>
+                                       </h2>
+                                       <div id='subnav'>
+                                       <span class='subnavLink'><a href='friends.php?id=$userid'>People <b>" . $userid . "</b> is following</a></span>
+                                       <span class='subnavNormal'>People who follow <b>" . $userid . "</b></span>
+                                       </div>" : "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>People who follow me</span>
+                                       </h2>
+                                       <div id='subnav'><span class='subnavLink'><a href='friends.php'>People I'm following</a></span>
+                                       <span class='subnavNormal'>People who follow me</span>
+                                       <span class='subnavLink'><a href='block.php'>People I'm blocking</a></span>
+                                       </div>";
+                               break;
+                       case 'list_members':
+                               echo "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>Members of list <span class=\"list_id\">$id</span></span>
+                                       </h2>
+                                       <div id='subnav'><span class='subnavNormal'>Members of list <b>$id</b></span>
+                                       <span class='subnavLink'><a href='list.php?id=$id'>Go back to the list</a></span>
+                                       </div>";
+                               break;
+                       case 'list_followers':
+                               echo "
+                                       <h2 style='margin: 10px 0pt 20px 15px'>
+                                       <span>Followers of list $id</span>
+                                       </h2>
+                                       <div id='subnav'><span class='subnavNormal'>Followers of list <b>$id</b></span>
+                                       <span class='subnavLink'><a href='list.php?id=$id'>Go back to the list</a></span>
+                                       </div>";
+                               break;
+                       case 'browse':
+                               echo "<div id='subnav'><span class='subnavNormal'>See what people are saying about…</span></div>";
+                               break;
+               }
+       }
+
+       echo '<div class="clear"></div>';
+       $p = -1;
+       switch ($type) {
+               case 'blocks':
+                       $userlist = $t->blockingList($id, $p);
+                       $next_page = $userlist->next_cursor;
+                       $previous_page = $userlist->previous_cursor;
+                       $userlist = $userlist->users;
+                       break;
+               case 'friends':
+                       $userlist = $t->friends($id, $p);
+                       $next_page = $userlist->next_cursor;
+                       $previous_page = $userlist->previous_cursor;
+                       $userlist = $userlist->users;
+                       break;
+               case 'followers':
+                       $userlist = $t->followers($id, $p);
+                       $next_page = $userlist->next_cursor;
+                       $previous_page = $userlist->previous_cursor;
+                       $userlist = $userlist->users;
+                       break;
+               case 'list_members':
+                       $userlist = $t->listMembers($id, $c);
+                       $nextlist = $userlist->next_cursor_str;
+                       $prelist = $userlist->previous_cursor_str;
+                       $userlist = $userlist->users;
+                       break;
+               case 'list_followers':
+                       $userlist = $t->listFollowers($id, $c);
+                       $nextlist = $userlist->next_cursor_str;
+                       $prelist = $userlist->previous_cursor_str;
+                       $userlist = $userlist->users;
+                       break;
+               case 'browse':
+                       $userlist = $t->followers($id, $p);
+                       break;
+       }
+       $empty = count($userlist) == 0? true: false;
+       if ($empty) {
+               echo "<div id=\"empty\">No user to display.</div>";
+       } else {
+               $output = '<ol class="rank_list">';
+               foreach ($userlist as $user) {
+                       $output .= "
+                               <li>
+                               <span class=\"rank_img\">
+                               <img id= \"avatar\"title=\"Click for more...\" src=\"".getAvatar($user->profile_image_url)."\" />
+                               </span>
+                               <div class=\"rank_content\">
+                               <span class=\"rank_num\"><span class=\"rank_name\"><a href=\"user.php?id=$user->screen_name\">$user->name</a></span>&nbsp;<span class=\"rank_screenname\">$user->screen_name</span><span id=\"rank_id\" style=\"display: none;\">$user->id</span></span>
+                               <span class=\"rank_count\"><b>Followers:</b> $user->followers_count  <b>Following:</b> $user->friends_count  <b>Tweets:</b> $user->statuses_count</span>
+                               ";
+                       if ($user->description) $output .= "<span class=\"rank_description\"><b>Bio:</b> $user->description</span>";
+                       $list_id = explode("/",$id);
+                       if ($type == 'list_members' &&  $list_id[0] == $t->username) $output .= "<span class=\"status_info\"><a class=\"delete_btn list_delete_btn\" href=\"#\">delete</a></span>";
+                       $output .= "
+                               </div>
+                               </li>
+                               ";
+               }
+               $output .= "</ol><div id=\"pagination\">";
+               if ($type == 'list_members' || $type == 'list_followers' || $type == 'blocks') {
+                       if ($prelist != 0) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"list_members.php?id=$id&c=$prelist\">Back</a>";
+                       if ($nextlist != 0) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"list_members.php?id=$id&c=$nextlist\">Next</a>";
+               } else {
+                       if ($id) {
+                               if ($p >0)
+                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"$type.php?id=$id&p=" . $previous_page . "\">Back</a>";
+                               if ($next_page != 0)
+                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"$type.php?id=$id&p=" . $next_page . "\">Next</a>";
+                       } else {
+                               if ($p >0)
+                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"$type.php?p=" . $previous_page . "\">Back</a>";
+                               if ($next_page != 0)
+                                       $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"$type.php?p=" . $next_page . "\">Next</a>";
+                       }
+               }
+               $output .= "</div>";
+
+               echo $output;
+       }
+?>
+</div>
index 6736f5b..ed9dc2c 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,90 +1,82 @@
-<?php\r
-       include ('lib/twitese.php');\r
-       $title = "Home";\r
-       include ('inc/header.php');\r
-\r
-       if (!loginStatus()) header('location: login.php');\r
-\r
-       $t = getTwitter();\r
-\r
-       if (isset($_POST['status']) && isset($_POST['in_reply_to'])) {\r
-               if (trim($_POST['status']) == '') {\r
-                       setUpdateCookie('empty');\r
-               } else {\r
-                       $result = $t->update($_POST['status'], $_POST['in_reply_to']);\r
-                       if ($result) {\r
-                               setUpdateCookie('success');\r
-\r
-                               $user = $result->user;\r
-                               $time = time()+3600*24*365;\r
-                               if ($user) {\r
-                                       setcookie('friends_count', $user->friends_count, $time, '/');\r
-                                       setcookie('statuses_count', $user->statuses_count, $time, '/');\r
-                                       setcookie('followers_count', $user->followers_count, $time, '/');\r
-                                       setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');\r
-                                       setcookie('name', $user->name, $time, '/');\r
-                               }\r
-                       }\r
-                       else {\r
-                               setUpdateCookie('error');\r
-                       }\r
-               }\r
-               header('location: index.php');\r
-       }\r
-?>\r
-<script type="text/javascript" src="js/home.js?ver=2010041101"></script>\r
-<div id="statuses" class="column round-left">\r
-<?php include('inc/sentForm.php'); ?>\r
-<?php\r
-       $p = 1;\r
-       if (isset($_GET['p'])) {\r
-               $p = (int) $_GET['p'];\r
-               if ($p <= 0) $p = 1;\r
-       }\r
-\r
-       $statuses = $t->friendsTimeline($p);\r
-       $retweetes = $t->retweeted_to_me($p);\r
-       if ($statuses === false) {\r
-               header('location: error.php');\r
-       } \r
-       $empty = count($statuses) == 0 ? true: false;\r
-       if ($empty) {\r
-               echo "<div id=\"empty\">No tweet to display.</div>";\r
-       } else {\r
-               $output = '<ol class="timeline" id="allTimeline">';\r
-\r
-               include('ajax/timeline_format.php');\r
-               if(count($retweetes) > 0){\r
-                       $statuses = sort_timeline($statuses, $retweetes);\r
-               }\r
-               $MAX_STATUSES = 20;\r
-               $status_count = 0;\r
-               foreach ($statuses as $status) {\r
-                       if(++$status_count >= $MAX_STATUSES){\r
-                               break;\r
-                       }\r
-                       if(isset($status->retweeted_status)){\r
-                               $output .= format_retweet($status);\r
-                       }else{\r
-                               $output .= format_timeline($status, $t->username);\r
-                       }\r
-               }\r
-\r
-               $output .= "</ol><div id=\"pagination\">";\r
-\r
-               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"index.php?p=" . ($p-1) . "\">Back</a>";\r
-               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"index.php?p=" . ($p+1) . "\">Next</a>";\r
-\r
-               $output .= "</div>";\r
-\r
-               echo $output;\r
-       }\r
-?>\r
-</div>\r
-<?php \r
-       include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php
+       include ('lib/twitese.php');
+       $title = 'Home';
+       include ('inc/header.php');
+
+       if (!loginStatus()) header('location: login.php'); 
+       $t = getTwitter();
+       if (isset($_POST['status']) && isset($_POST['in_reply_to'])) {
+               if (trim($_POST['status']) !== '')
+               {
+                       $result = $t->update($_POST['status'], $_POST['in_reply_to']);
+                       if ($result)
+                       {
+                               $user = $result->user;
+                               $time = $_SERVER['REQUEST_TIME']+3600*24*365;
+                               if ($user)
+                               {
+                                       setcookie('friends_count', $user->friends_count, $time, '/');
+                                       setcookie('statuses_count', $user->statuses_count, $time, '/');
+                                       setcookie('followers_count', $user->followers_count, $time, '/');
+                                       setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');
+                                       setcookie('name', $user->name, $time, '/');
+                               }
+                       }
+               }
+               header('location: index.php');
+       }
+?>
+<script src="js/home.js"></script>
+<div id="statuses" class="column round-left">
+<?php
+  include('inc/sentForm.php'); 
+  
+       $p = 1;
+       if (isset($_GET['p']))
+       {
+               $p = (int) $_GET['p'];
+               if ($p <= 0) $p = 1;
+       }
+
+       $statuses = $t->homeTimeline($p);
+       if ($statuses == false)
+       {
+               header('location: error.php');exit();
+       }
+       $count = count($statuses);
+       $empty = $count == 0 ? true: false;
+       if ($empty)
+       {
+               echo "<div id=\"empty\">No tweet to display.</div>";
+       }
+       else
+       {
+               $output = '<ol class="timeline" id="allTimeline">';
+
+               include('lib/timeline_format.php');
+               $maxid = isset($_COOKIE['maxid']) ? $_COOKIE['maxid'] : '';
+               foreach ($statuses as $status) {
+                       if($maxid == '' || $p == 1 || strcmp($status->id_str,$maxid) < 0) {
+                               if (isset($status->retweeted_status)) {
+                                       $output .= format_retweet($status);
+                               } else { 
+                                       $output .= format_timeline($status,$t->username);
+                               }
+                       }
+               }
+
+               $output .= "</ol><div id=\"pagination\">";
+               $time = $_SERVER['REQUEST_TIME']+3600;
+               setcookie('maxid',$statuses[$count-1]->id_str,$time,'/');
+
+               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"index.php?p=" . ($p-1) . "\">Back</a>";
+               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"index.php?p=" . ($p+1) . "\">Next</a>";
+               echo $output;
+       }
+?>
+</div>
+</div>
+<?php 
+       include ('inc/sidebar.php');
+       include ('inc/footer.php');
+?>
index 3bf809e..2511670 100644 (file)
--- a/js/all.js
+++ b/js/all.js
-var INTERVAL_COOKIE = 'updatesInterval';\r
-$(function () {\r
-               formFunc();\r
-               $(".rt_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onRT($(this));\r
-                       });\r
-               $(".retw_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onNwRT($(this));\r
-                       });\r
-               $(".replie_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onReplie($(this), e);\r
-                       });\r
-               $(".favor_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onFavor($(this));\r
-                       });\r
-               $(".delete_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onDelete($(this), "Tweet");\r
-                       });\r
-               $(".msg_replie_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onReplieDM($(this));\r
-                       });\r
-               $(".msg_delete_btn").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onDeleteMsg($(this));\r
-                       });\r
-               $(".rt_undo").live("click", function (e) {\r
-                               e.preventDefault();\r
-                               onUndoRt($(this));\r
-                       });\r
-               markReply($("#allTimeline > li"));\r
-               $("#submit_btn").click(function (e) {\r
-                               updateStatus();\r
-                               e.preventDefault();\r
-                       });\r
-               document.onclick = function () {\r
-                       document.title = document.title.replace(/(\([0-9]+\))/g, "");\r
-                       $(".allHighLight").text($(".allHighLight").text().replace(/(\([0-9]+\))/g, ""));\r
-                       $("#statuses .new").each(function () {\r
-                                       $("#statuses .new").remove();\r
-                               });\r
-               }\r
-               $("#allReplies").hide();\r
-               $("#allMessage").hide();\r
-               $("#allTimelineBtn").click(function () {\r
-                               $("#allTimeline").show();\r
-                               $("#allReplies").hide();\r
-                               $("#allMessage").hide();\r
-                               $("#allTimelineBtn").addClass("allHighLight");\r
-                               if ($("#allRepliesBtn").hasClass("allHighLight")) $("#allRepliesBtn").removeClass("allHighLight");\r
-                               else $("#allMessageBtn").removeClass("allHighLight");\r
-                               $("#allTimelineBtn").text($("#allTimelineBtn").text().replace(/(\([0-9]+\))/g, ""));\r
-                       })\r
-               $("#allRepliesBtn").click(function () {\r
-                               $("#allTimeline").hide();\r
-                               $("#allReplies").show();\r
-                               $("#allMessage").hide();\r
-                               $("#allRepliesBtn").addClass("allHighLight");\r
-                               if ($("#allTimelineBtn").hasClass("allHighLight")) $("#allTimelineBtn").removeClass("allHighLight");\r
-                               else $("#allMessageBtn").removeClass("allHighLight");\r
-                               $("#allRepliesBtn").text($("#allRepliesBtn").text().replace(/(\([0-9]+\))/g, ""));\r
-                       })\r
-               $("#allMessageBtn").click(function () {\r
-                               $("#allTimeline").hide();\r
-                               $("#allReplies").hide();\r
-                               $("#allMessage").show();\r
-                               $("#allMessageBtn").addClass("allHighLight");\r
-                               if ($("#allRepliesBtn").hasClass("allHighLight")) $("#allRepliesBtn").removeClass("allHighLight");\r
-                               else $("#allTimelineBtn").removeClass("allHighLight");\r
-                               $("#allMessageBtn").text($("#allMessageBtn").text().replace(/(\([0-9]+\))/g, ""));\r
-                       })\r
-               $(function () {\r
-                               setUpdateInterval();\r
-                       });\r
-       });\r
-var setUpdateInterval = function () {\r
-       if (!location.href.split("?")[1] || location.href.split("?")[1] == "p=1") {\r
-               var interval = parseFloat($.cookie(INTERVAL_COOKIE));\r
-               if (interval === 0.0) {\r
-                       return false;\r
-               }\r
-               interval = interval > 0 ? interval : 3;\r
-               UPDATE_INTERVAL = setInterval(function () {\r
-                               update();\r
-                       }, interval * 1000 * 60);\r
-       }\r
-};\r
-\r
-function update() {\r
-       if (PAUSE_UPDATE === true) {\r
-               window.setTimeout(update, 5000);\r
-       } else if (PAUSE_TIMELINE === true) {\r
-               return 0;\r
-       } else {\r
-               if($.cookie("intervalChanged") === "true"){\r
-                       clearInterval(UPDATE_INTERVAL);\r
-                       $.cookie("intervalChanged", "")\r
-                       setUpdateInterval();\r
-               }\r
-               updateSentTip('Retrieving new tweets...', 5000, 'ing');\r
-               updateFunc("timeline");\r
-               updateFunc("replies");\r
-               updateFunc("message");\r
-       }\r
-}\r
-\r
-function updateFunc(type, name, pw) {\r
-       PAUSE_TIMELINE = true;\r
-       var div, url, btnDiv, param;\r
-       switch (type) {\r
-       case "timeline":\r
-               div = "#allTimeline";\r
-               btnDiv = "#allTimelineBtn";\r
-               url = "ajax/updateTimeline.php";\r
-               $(div + " li.mine").removeClass("mine").addClass("myTweet");\r
-               break;\r
-       case "replies":\r
-               div = "#allReplies";\r
-               btnDiv = "#allRepliesBtn";\r
-               url = "ajax/updateReplies.php";\r
-               break;\r
-       case "message":\r
-               div = "#allMessage";\r
-               btnDiv = "#allMessageBtn";\r
-               url = "ajax/updateMessage.php";\r
-               break;\r
-       }\r
-       var since_id = 0;\r
-       if (div === "#allTimeline") {\r
-               since_id = $(div + " li:not(.myTweet):not(#ajax_statuses li):first").find("span.status_id").text();\r
-       } else {\r
-               since_id = $(div + " li:first-child").find("span.status_id").text();\r
-       }\r
-       param = "?since_id=" + since_id;\r
-       $.ajax({\r
-                       url: url + param,\r
-                       type: "GET",\r
-                       dataType: "text",\r
-                       data: "since_id=" + since_id,\r
-                       success: function (msg) {\r
-                               if ($.trim(msg).indexOf("</li>") > 0) {\r
-                                       var source = $(msg).prependTo(div);\r
-                                       if (div === "#allTimeline") {\r
-                                               $(div + " li.myTweet:not(:first)").removeClass("myTweet");\r
-                                               markReply($('#allTimeline > li'));\r
-                                       }\r
-                                       var num = 0;\r
-                                       var navNum = 0;\r
-                                       if (document.title.match(/\d+/) != null) {\r
-                                               num = parseInt(document.title.match(/\d+/));\r
-                                       }\r
-                                       var len = $(msg).length - 1;\r
-                                       document.title = "(" + (num + len) + ") " + document.title.replace(/(\([0-9]+\))/g, "");\r
-                                       if ($(btnDiv).text().match(/\d+/) != null) {\r
-                                               navNum = parseInt($(btnDiv).text().match(/\d+/));\r
-                                       }\r
-                                       $(btnDiv).text($(btnDiv).text().replace(/(\([0-9]+\))/g, "") + "(" + (navNum + len) + ")");\r
-                                       filterEle();\r
-                                       rabrTweet(source);\r
-                                       $(".new").slideDown("fast");\r
-                                       $(".big-retweet-icon").tipsy({\r
-                                                       gravity: 's'\r
-                                               });\r
-                                       previewMedia(source);\r
-                               }\r
-                               PAUSE_TIMELINE = false;\r
-                       },\r
-                       error: function (msg) {\r
-                               PAUSE_TIMELINE = false;\r
-                       }\r
-               });\r
-}\r
+var INTERVAL_COOKIE = 'updatesInterval';
+$(function () {
+               formFunc();
+               $("ol.timeline").click(function(e) {
+                       var $this = $(e.target);
+                       var type = $this.attr('class');
+                       switch(type) {
+                               case 'rt_btn':
+                                       e.preventDefault();
+                                       onRT($this);
+                                       break;
+                               case 'retw_btn':
+                                       e.preventDefault();
+                                       onNwRT($this);
+                                       break;
+                               case 'replie_btn':
+                                       e.preventDefault();
+                                       onReplie($this,e);
+                                       break;
+                               case 'favor_btn':
+                                       e.preventDefault();
+                                       onFavor($this);
+                                       break;
+                               case 'unfav_btn':
+                                       e.preventDefault();
+                                       UnFavor($this);
+                                       break;
+                               case 'delete_btn':
+                                       e.preventDefault();
+                                       onDelete($this);
+                                       break;
+                               case 'rt_undo':
+                                       e.preventDefault();
+                                       onUndoRt($this);
+                                       break;
+                               case 'msg_replie_btn':
+                                       e.preventDefault();
+                                       onReplieDM($this);
+                                       break;
+                               case 'msg_delete_btn':
+                                       e.preventDefault();
+                                       onDeleteMsg($this);
+                                       break;
+                       }
+               });
+               markReply($("#allTimeline > li"));
+               $("#submit_btn").click(function (e) {
+                               updateStatus();
+                               e.preventDefault();
+                       });
+               document.onclick = function () {
+                       document.title = document.title.replace(/(\([0-9]+\))/g, "");
+                       $(".allHighLight").text($(".allHighLight").text().replace(/(\([0-9]+\))/g, ""));
+                       $("#statuses .new").each(function () {
+                                       $("#statuses .new").remove();
+                               });
+               }
+               $("#allReplies").hide();
+               $("#allMessage").hide();
+               $("#allTimelineBtn").click(function () {
+                               $("#allTimeline").show();
+                               $("#allTimeline img").lazyload({threshold : 100, effect : "fadeIn", placeholder:'img/blank.gif'});
+                               $("#allReplies").hide();
+                               $("#allMessage").hide();
+                               $("#allTimelineBtn").addClass("allHighLight");
+                               if ($("#allRepliesBtn").hasClass("allHighLight")) $("#allRepliesBtn").removeClass("allHighLight");
+                               else $("#allMessageBtn").removeClass("allHighLight");
+                               $("#allTimelineBtn").text($("#allTimelineBtn").text().replace(/(\([0-9]+\))/g, ""));
+                       })
+               $("#allRepliesBtn").click(function () {
+                               $("#allTimeline").hide();
+                               $("#allReplies").show();
+                               $("#allReplies img").lazyload({threshold : 100, effect : "fadeIn",placeholder:'img/blank.gif'});
+                               $("#allMessage").hide();
+                               $("#allRepliesBtn").addClass("allHighLight");
+                               if ($("#allTimelineBtn").hasClass("allHighLight")) $("#allTimelineBtn").removeClass("allHighLight");
+                               else $("#allMessageBtn").removeClass("allHighLight");
+                               $("#allRepliesBtn").text($("#allRepliesBtn").text().replace(/(\([0-9]+\))/g, ""));
+                       })
+               $("#allMessageBtn").click(function () {
+                               $("#allTimeline").hide();
+                               $("#allReplies").hide();
+                               $("#allMessage").show();
+                               $("#allMessage img").lazyload({threshold : 100, effect : "fadeIn",placeholder:'img/blank.gif'});
+                               $("#allMessageBtn").addClass("allHighLight");
+                               if ($("#allRepliesBtn").hasClass("allHighLight")) $("#allRepliesBtn").removeClass("allHighLight");
+                               else $("#allTimelineBtn").removeClass("allHighLight");
+                               $("#allMessageBtn").text($("#allMessageBtn").text().replace(/(\([0-9]+\))/g, ""));
+                               $("#allMessage span.date").timeago();
+                       })
+               $(function () {
+                               setUpdateInterval();
+                       });
+       });
+var setUpdateInterval = function () {
+       if (!location.href.split("?")[1] || location.href.split("?")[1] == "p=1") {
+               var interval = parseFloat($.cookie(INTERVAL_COOKIE));
+               if (interval === 0.0) {
+                       return false;
+               }
+               interval = interval > 0 ? interval : 3;
+               UPDATE_INTERVAL = setInterval(function () {
+                               update();
+                       }, interval * 1000 * 60);
+       }
+};
+
+function update() {
+       if (PAUSE_UPDATE === true) {
+               window.setTimeout(update, 5000);
+       } else if (PAUSE_TIMELINE === true) {
+               return 0;
+       } else {
+               if($.cookie("intervalChanged") === "true"){
+                       clearInterval(UPDATE_INTERVAL);
+                       $.cookie("intervalChanged", "")
+                       setUpdateInterval();
+               }
+               updateSentTip('Retrieving new tweets...', 5000, 'ing');
+               updateFunc("timeline");
+               updateFunc("replies");
+               updateFunc("message");
+       }
+}
+
+function updateFunc(type, name, pw) {
+       PAUSE_TIMELINE = true;
+       var div, url, btnDiv, param;
+       switch (type) {
+       case "timeline":
+               div = "#allTimeline";
+               btnDiv = "#allTimelineBtn";
+               url = "ajax/updateTimeline.php";
+               $(div + " li.mine").removeClass("mine").addClass("myTweet");
+               break;
+       case "replies":
+               div = "#allReplies";
+               btnDiv = "#allRepliesBtn";
+               url = "ajax/updateReplies.php";
+               break;
+       case "message":
+               div = "#allMessage";
+               btnDiv = "#allMessageBtn";
+               url = "ajax/updateMessage.php";
+               break;
+       }
+       var since_id = 0;
+       if (div === "#allTimeline") {
+               since_id = $(div + " li:not(.myTweet):not(#ajax_statuses li):first").find("span.status_id").text();
+       } else {
+               since_id = $(div + " li:first-child").find("span.status_id").text();
+       }
+       $.ajax({
+               url: url,
+               type: "GET",
+               dataType: "text",
+               data: "since_id=" + since_id,
+               success: function (msg) {
+                       if ($.trim(msg).indexOf("</li>") > 0) {
+                               var source = $(msg).prependTo(div);
+                               if (div === "#allTimeline") {
+                                       $(div + " li.myTweet:not(:first)").removeClass("myTweet");
+                                       markReply($('#allTimeline > li'));
+                               }
+                               var num = 0;
+                               var navNum = 0;
+                               if (document.title.match(/\d+/) != null) {
+                                       num = parseInt(document.title.match(/\d+/));
+                               }
+                               var len = $(msg).length - 1;
+                               document.title = "(" + (num + len) + ") " + document.title.replace(/(\([0-9]+\))/g, "");
+                               if ($(btnDiv).text().match(/\d+/) != null) {
+                                       navNum = parseInt($(btnDiv).text().match(/\d+/));
+                               }
+                               $(btnDiv).text($(btnDiv).text().replace(/(\([0-9]+\))/g, "") + "(" + (navNum + len) + ")");
+                               filterEle();
+                               embrTweet(source);
+                               if($("div.new").length == 1) {
+                                       $("div.new").show().slideDown("fast");
+                               } else {
+                                       $("div.new").filter(":first").remove();
+                                       $("span.tweetcount").filter(":last").text(navNum + len);
+                               }
+                               $("span.big-retweet-icon").tipsy({
+                                               gravity: 's'
+                                       });
+                               previewMedia(source);
+                       }
+                       PAUSE_TIMELINE = false;
+               },
+               error: function (msg) {
+                       PAUSE_TIMELINE = false;
+               }
+       });
+}
index fb8e310..66e1890 100644 (file)
@@ -1,24 +1,44 @@
-$(function(){\r
-       $(".rt_btn").click(function(){\r
-               if ($("#textbox").length > 0) {\r
-                       onRT($(this));\r
-               } else {\r
-                       $("#browse_title").after(formHTML);\r
-                       formFunc();\r
-                       onRT($(this));\r
-               }\r
-       });\r
-       $(".replie_btn").click(function(e){\r
-               e.preventDefault();\r
-               if ($("#textbox").length > 0) {\r
-                       onReplie($(this));\r
-               } else {\r
-                       $("#browse_title").after(formHTML);\r
-                       formFunc();\r
-                       onReplie($(this));\r
-               }\r
-       });\r
-       $(".favor_btn").live("click", function(){\r
-               onFavor($(this));\r
-       });\r
+$(function(){
+       $("ol.timeline").click(function(e) {
+               var $this = $(e.target);
+               var type = $this.attr('class');
+               switch(type) {
+                       case 'rt_btn':
+                               e.preventDefault();
+                               if ($("#textbox").length > 0) {
+                                       onRT($this);
+                               } else {
+                                       $("#browse_title").after(formHTML);
+                                       formFunc();
+                                       onRT($this);
+                               }
+                               break;
+                       case 'retw_btn':
+                               e.preventDefault();
+                               onNwRT($this);
+                               break;
+                       case 'replie_btn':
+                               e.preventDefault();
+                               if ($("#textbox").length > 0) {
+                                       onReplie($this,e);
+                               } else {
+                                       $("#browse_title").after(formHTML);
+                                       formFunc();
+                                       onReplie($this,e);
+                               }
+                               break;
+                       case 'favor_btn':
+                               e.preventDefault();
+                               onFavor($this);
+                               break;
+                       case 'unfav_btn':
+                               e.preventDefault();
+                               UnFavor($this);
+                               break;
+                       case 'rt_undo':
+                               e.preventDefault();
+                               onUndoRt($this);
+                               break;
+               }
+       });
 });
\ No newline at end of file
index c9f2a48..663fdc7 100644 (file)
@@ -1,45 +1,48 @@
 $(function(){\r
                formFunc();\r
-               $(".rt_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onRT($(this));\r
-                       });\r
-\r
-               $(".retw_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onNwRT($(this));\r
-                       });\r
-\r
-               $(".replie_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onReplie($(this), e);\r
-                       });\r
-\r
-               $(".favor_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onFavor($(this));\r
-                       });\r
-\r
-               $(".delete_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onDelete($(this), "Tweet");\r
-                       });\r
-                       \r
-               $(".msg_replie_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onReplieDM($(this));\r
-                       });\r
-                       \r
-               $(".msg_delete_btn").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onDeleteMsg($(this));\r
-                       });\r
-\r
-               $(".rt_undo").live("click", function(e){\r
-                               e.preventDefault();\r
-                               onUndoRt($(this));\r
-                       });\r
-\r
+               $("ol.timeline").live("click", function(e) {\r
+                       var $this = $(e.target);\r
+                       var type = $this.attr('class');\r
+                       switch(type) {\r
+                               case 'rt_btn':\r
+                                       e.preventDefault();\r
+                                       onRT($this);\r
+                                       break;\r
+                               case 'retw_btn':\r
+                                       e.preventDefault();\r
+                                       onNwRT($this);\r
+                                       break;\r
+                               case 'replie_btn':\r
+                                       e.preventDefault();\r
+                                       onReplie($this,e);\r
+                                       break;\r
+                               case 'favor_btn':\r
+                                       e.preventDefault();\r
+                                       onFavor($this);\r
+                                       break;\r
+                               case 'unfav_btn':\r
+                                       e.preventDefault();\r
+                                       UnFavor($this);\r
+                                       break;\r
+                               case 'delete_btn':\r
+                                       e.preventDefault();\r
+                                       onDelete($this);\r
+                                       break;\r
+                               case 'rt_undo':\r
+                               case 'unrt_btn':\r
+                                       e.preventDefault();\r
+                                       onUndoRt($this);\r
+                                       break;\r
+                               case 'msg_replie_btn':\r
+                                       e.preventDefault();\r
+                                       onReplieDM($this);\r
+                                       break;\r
+                               case 'msg_delete_btn':\r
+                                       e.preventDefault();\r
+                                       onDeleteMsg($this);\r
+                                       break;\r
+                       }\r
+               });\r
                $("#submit_btn").click(function(e){\r
                                updateStatus();\r
                                e.preventDefault();\r
index b150594..501e549 100644 (file)
-FILTER_COOKIE = 'filKey';\r
-FILTER_COUNTER = 'filCnt';\r
-FILTER_KEY_OPT = {\r
-       expires: 30\r
-}\r
-$(function () {\r
-               $("#photoBtn").click(function () {\r
-                               $("#photoArea").slideToggle(100);\r
-                       });\r
-               $("#imageUploadSubmit").click(function (e) {\r
-                               e.preventDefault();\r
-                               ajaxFileUpload();\r
-                       });\r
-               $("#filterBtn").click(function () {\r
-                               $("#filterArea").slideToggle(100);\r
-                       });\r
-               $("#symbolBtn").click(function () {\r
-                               $("#symArea").toggle();\r
-                       });\r
-               $("#symbols span").click(function () {\r
-                               $("#textbox").val($("#textbox").val() + $(this).html());\r
-                               $("#symArea").hide();\r
-                               leaveWord();\r
-                       });\r
-               $("#restoreBtn").click(function () {\r
-                               $('#textbox').val($.cookie('recover'));\r
-                               updateSentTip("Your previous tweet has been restored!", 3000, "success");\r
-                       });\r
-               $("#autoBtn").click(function(){\r
-                               if ($("#autoBtn").hasClass("pause")) {\r
-                                       clearInterval(UPDATE_INTERVAL);\r
-                                       $("#autoBtn").removeClass("pause").addClass("start");\r
-                                       updateSentTip("Auto refresh deactivated!", 3000, "success");\r
-                               } else {\r
-                                       setUpdateInterval();\r
-                                       $("#autoBtn").removeClass("start").addClass("pause");\r
-                                       updateSentTip("Auto refresh activated!", 3000, "success");\r
-                                       update();\r
-                               }\r
-                       });\r
-               $("#refreshBtn").click(function () {\r
-                               update();\r
-                               updateSentTip("Retrieving new tweets...", 3000, "ing");\r
-                       });\r
-               $("#transBtn").click(function () {\r
-                               $("#transArea").slideToggle(100);\r
-                       });\r
-               $("#filterSubmit").click(function (e) {\r
-                               e.preventDefault();\r
-                               if ($.trim($('#iptFilter').val()).length == 0) {\r
-                                       updateSentTip("Please enter at least one keyword!", 3000, "failure");\r
-                                       return false;\r
-                               } else {\r
-                                       $.cookie(FILTER_COOKIE, null);\r
-                                       $.cookie(FILTER_COUNTER, null);\r
-                                       updateSentTip("New keyword: " + $.trim($('#iptFilter').val()) + " added!", 3000, "success");\r
-                                       filterEle();\r
-                               }\r
-                       });\r
-               $("#filterReset").click(function (e) {\r
-                               e.preventDefault();\r
-                               $.cookie(FILTER_COOKIE, null);\r
-                               $.cookie(FILTER_COUNTER, null);\r
-                               $('#iptFilter').val("");\r
-                               updateSentTip("Filtered tweets have been restored!", 5000, "success");\r
-                               $('#statuses .filter').slideDown("fast");\r
-                       });\r
-               $("#filterHide").toggle(\r
-\r
-                       function () {\r
-                               $('#statuses .reply').slideUp("fast");\r
-                               $('#filterHide').val("Show @");\r
-                       }, function () {\r
-                               $('#statuses .reply').slideDown("fast");\r
-                               $('#filterHide').val("Hide @");\r
-                       });\r
-               $("#clearBtn").click(function(e){\r
-                               e.preventDefault();\r
-                               if (confirm("This will sweep your timeline and remove excess tweets, are you sure?")) {\r
-                                       $("#statuses .timeline").each(function(){\r
-                                                       $(this).find("li:gt(19)").remove();\r
-                                               });\r
-                               }\r
-                       });\r
-       });\r
-function ajaxFileUpload() {\r
-       updateSentTip("Uploading your image...", 10000, "ing");\r
-       $.ajaxFileUpload({\r
-                       url: 'ajax/uploadPhoto.php',\r
-                       secureuri: false,\r
-                       fileElementId: 'imageFile',\r
-                       dataType: 'json',\r
-                       success: function (data, status) {\r
-                               if (typeof(console) !== 'undefined' && console != null) {\r
-                                       console.info(data);\r
-                               }\r
-                               if (typeof(data.result) != 'undefined' && data.result == "success") {\r
-                                       $("#textbox").val($("#textbox").val() + data.url);\r
-                                       updateSentTip("Your image has been uploaded!", 3000, "success");\r
-                                       $("#photoArea").slideToggle(100);\r
-                               } else {\r
-                                       updateSentTip("Failed to upload, please try again.", 3000, "failure");\r
-                                       $("#photoArea").slideToggle(100);\r
-                               }\r
-                       },\r
-                       error: function (data, status, e) {\r
-                               updateSentTip("Failed to upload, please try again.", 3000, "failure");\r
-                               $("#photoArea").slideToggle(100);\r
-                       }\r
-               })\r
-       return false;\r
-}\r
-function enableFilter() {\r
-       if ($.cookie(FILTER_COOKIE) != null && $.cookie(FILTER_COOKIE) != "") {\r
-               $('#iptFilter').val(recoverKeywords());\r
-               $.cookie(FILTER_COUNTER, null);\r
-               filterEle();\r
-       }\r
-}\r
-function filterEle() {\r
-       if ($.trim($('#iptFilter').val()).length == 0) {\r
-               return false;\r
-       } else {\r
-               var objs;\r
-               var targets = new Array();\r
-               var keywords = keywordRegexp();\r
-               if (keywords === $.cookie(FILTER_COOKIE)) {\r
-                       objs = $('#statuses .timeline li:not(.filter:hidden)').find('.status_word');\r
-               } else {\r
-                       objs = $('#statuses .timeline li').find('.status_word');\r
-               }\r
-               var reg = new RegExp(keywords, "i");\r
-               for (i = 0; i < objs.length; i++) {\r
-                       if (reg.test($(objs[i]).text())) {\r
-                               targets.push(objs[i]);\r
-                       }\r
-               }\r
-               if ($.cookie(FILTER_COUNTER) != null && $.cookie(FILTER_COUNTER) != '') {\r
-                       $.cookie(FILTER_COUNTER, targets.length + parseInt($.cookie(FILTER_COUNTER)));\r
-               } else {\r
-                       $.cookie(FILTER_COUNTER, targets.length);\r
-               }\r
-               hideMatched(targets);\r
-               $.cookie(FILTER_COOKIE, keywords);\r
-               setCounter();\r
-       }\r
-}\r
-function hideMatched(obj) {\r
-       $(obj).parent().parent().addClass("filter").hide();\r
-}\r
-function isMatch(txt, keywords) {\r
-       var reg = RegExp(keywords, "i");\r
-       return reg.test(txt);\r
-}\r
-function keywordRegexp() {\r
-       if ($.cookie(FILTER_COOKIE) === null) {\r
-               return setFilterCookie();\r
-       } else {\r
-               return $.cookie(FILTER_COOKIE);\r
-       }\r
-}\r
-function recoverKeywords() {\r
-       return $.cookie(FILTER_COOKIE).replace(/\|/g, ',');\r
-}\r
-function setFilterCookie() {\r
-       var strs = $('#iptFilter').val().split(",");\r
-       var keywords = '';\r
-       for (i = 0; i < strs.length; i++) {\r
-               if (strs[i] == "") continue;\r
-               keywords += strs[i] + "|";\r
-       }\r
-       keywords = keywords.substr(0, keywords.length - 1);\r
-       return keywords;\r
-}\r
-var option = { expire: 30 };\r
-$(document).ready(function () {\r
-               enableFilter();\r
-               if($.cookie('transLang') === null){\r
-                       $.cookie('transLang', 'en', option);\r
-               }\r
-               if($.cookie('myLangs') === null){\r
-                       $.cookie('myLangs', 'en', option);\r
-               }\r
-               var select = $('#transArea select[name=langs]');\r
-               select.change(function(){\r
-                               var val = $(this).val();\r
-                               $.cookie('transLang', val, option);\r
-                               $.cookie('fullLang', $(this).find('option[value=' + val + ']').text(), option);\r
-                       });\r
-               select.find('option').each(function(){\r
-                               var lang = $.cookie('transLang')\r
-                               if(lang === null){\r
-                                       lang = 'en';\r
-                               }\r
-                               if($(this).val() === lang){\r
-                                       $(this).attr('selected', 'selected');\r
-                               }\r
-                       });\r
-               var mylang = $('#transArea select[name=myLangs]');\r
-               mylang.change(function(){\r
-                               var val = $(this).val();\r
-                               $.cookie('myLangs', val, option);\r
-                       });\r
-               mylang.find('option').each(function(){\r
-                               var lang = $.cookie('myLangs')\r
-                               if(lang === null){\r
-                                       lang = 'en';\r
-                               }\r
-                               if($(this).val() === lang){\r
-                                       $(this).attr('selected', 'selected');\r
-                               }\r
-                       });\r
-       });\r
+FILTER_COOKIE = 'filKey';
+FILTER_COUNTER = 'filCnt';
+FILTER_KEY_OPT ={
+       expires: 30
+}
+$(function (){
+               $("#photoBtn").click(function (){
+                               $("#photoArea").slideToggle(100);
+                       });
+               $("#imageUploadSubmit").click(function (e){
+                               e.preventDefault();
+                               ImageUpload();
+                       });
+               $("#filterBtn").click(function (){
+                               $("#filterArea").slideToggle(100);
+                       });
+               $("#symbolBtn").click(function (){
+                               $("#symArea").toggle();
+                       });
+               $("#symbols span").click(function (){
+             var obj = document.getElementById('textbox'); 
+             var str = $(this).html();
+             if(document.selection){  
+                obj.focus();  
+                var sel=document.selection.createRange();  
+                document.selection.empty();  
+                sel.text = str;  
+             }else{  
+                var prefix, main, suffix;  
+                prefix = obj.value.substring(0, obj.selectionStart);  
+                main = obj.value.substring(obj.selectionStart, obj.selectionEnd);  
+                suffix = obj.value.substring(obj.selectionEnd);  
+                obj.value = prefix + str + suffix;  
+             }
+                       $("#symArea").hide();
+                       leaveWord();
+               });
+               $("#restoreBtn").click(function (){
+                               $('#textbox').val($.cookie('recover'));
+                               updateSentTip("Your previous tweet has been restored!", 3e3, "success");
+                       });
+               $("#autoBtn").click(function(){
+                               if ($("#autoBtn").hasClass("pause")){
+                                       clearInterval(UPDATE_INTERVAL);
+                                       $("#autoBtn").removeClass("pause").addClass("start");
+                                       updateSentTip("Auto refresh deactivated!", 3e3, "success");
+                               }else{
+                                       setUpdateInterval();
+                                       $("#autoBtn").removeClass("start").addClass("pause");
+                                       updateSentTip("Auto refresh activated!", 3e3, "success");
+                                       update();
+                               }
+                       });
+               $("#refreshBtn").click(function (){
+                               update();
+                               updateSentTip("Retrieving new tweets...", 3e3, "ing");
+                       });
+               $("#transBtn").click(function (){
+                               $("#transArea").slideToggle(100);
+                       });
+               $("#filterSubmit").click(function (e){
+                               e.preventDefault();
+                               if ($.trim($('#iptFilter').val()).length == 0){
+                                       updateSentTip("Please enter at least one keyword!", 3e3, "failure");
+                                       return false;
+                               }else{
+                                       $.cookie(FILTER_COOKIE, null);
+                                       $.cookie(FILTER_COUNTER, null);
+                                       updateSentTip("New keyword: " + $.trim($('#iptFilter').val()) + " added!", 3e3, "success");
+                                       filterEle();
+                               }
+                       });
+               $("#filterReset").click(function (e){
+                               e.preventDefault();
+                               $.cookie(FILTER_COOKIE, null);
+                               $.cookie(FILTER_COUNTER, null);
+                               $('#iptFilter').val("");
+                               updateSentTip("Filtered tweets have been restored!", 5e3, "success");
+                               $('#statuses .filter').slideDown("fast");
+                       });
+               $("#filterHide").toggle(
+
+                       function (){
+                               $('#statuses .reply').slideUp("fast");
+                               $('#filterHide').val("Show @");
+                       }, function (){
+                               $('#statuses .reply').slideDown("fast");
+                               $('#filterHide').val("Hide @");
+                       });
+               $("#clearBtn").click(function(e){
+                               e.preventDefault();
+                               if (confirm("This will sweep your timeline and remove excess tweets, are you sure?")){
+                                       $("#statuses .timeline").each(function(){
+                                                       $(this).find("li:gt(19)").remove();
+                                               });
+                               }
+                       });
+       });
+       
+       function ImageUpload(){
+               updateSentTip("Uploading your image...", 10000, "ing");
+               $.ajaxFileUpload({
+                               url: 'ajax/uploadImage.php?do=image',
+                               timeout: 60000,
+                               secureuri: false,
+                               fileElementId: 'imageFile',
+                               dataType: 'json',
+                               success: function (data, status){
+                                       if (typeof(console) !== 'undefined' && console != null){
+                                               console.info(data);
+                                       }
+                                       if (data.result != undefined && data.result == "success"){
+                                               $("#textbox").val($("#textbox").val() + data.url);
+                                               updateSentTip("Your image has been uploaded!", 3e3, "success");
+                                               $("#photoArea").slideToggle(100);
+                                       }else{
+                                               updateSentTip("Failed to upload, please try again.", 3e3, "failure");
+                                               $("#photoArea").slideToggle(100);
+                                       }
+                               },
+                               error: function (data, status, e){
+                                       updateSentTip("Failed to upload, please try again.", 3e3, "failure");
+                                       $("#photoArea").slideToggle(100);
+                               }
+                       })
+               return false;
+       }
+       
+function enableFilter(){
+       if ($.cookie(FILTER_COOKIE) != null && $.cookie(FILTER_COOKIE) != ""){
+               $('#iptFilter').val(recoverKeywords());
+               $.cookie(FILTER_COUNTER, null);
+               filterEle();
+       }
+}
+function filterEle(){
+       if ($.trim($('#iptFilter').val()).length == 0){
+               return false;
+       }else{
+               var objs;
+               var targets = [];
+               var keywords = keywordRegexp();
+               if (keywords === $.cookie(FILTER_COOKIE)){
+                       objs = $('#statuses .timeline li:not(.filter:hidden)').find('.status_word');
+               }else{
+                       objs = $('#statuses .timeline li').find('.status_word');
+               }
+               var reg = new RegExp(keywords, "i");
+               for (i = 0; i < objs.length; i++){
+                       if (reg.test($(objs[i]).text())){
+                               targets.push(objs[i]);
+                       }
+               }
+               if ($.cookie(FILTER_COUNTER) != null && $.cookie(FILTER_COUNTER) != ''){
+                       $.cookie(FILTER_COUNTER, targets.length + parseInt($.cookie(FILTER_COUNTER)));
+               }else{
+                       $.cookie(FILTER_COUNTER, targets.length);
+               }
+               hideMatched(targets);
+               $.cookie(FILTER_COOKIE, keywords);
+               setCounter();
+       }
+}
+function hideMatched(obj){
+       $(obj).parent().parent().addClass("filter").hide();
+}
+function isMatch(txt, keywords){
+       var reg = RegExp(keywords, "i");
+       return reg.test(txt);
+}
+function keywordRegexp(){
+       if ($.cookie(FILTER_COOKIE) === null){
+               return setFilterCookie();
+       }else{
+               return $.cookie(FILTER_COOKIE);
+       }
+}
+function recoverKeywords(){
+       return $.cookie(FILTER_COOKIE).replace(/\|/g, ',');
+}
+function setFilterCookie(){
+       var strs = $('#iptFilter').val().split(",");
+       var keywords = '';
+       for (i = 0; i < strs.length; i++){
+               if (strs[i] == "") continue;
+               keywords += strs[i] + "|";
+       }
+       keywords = keywords.substr(0, keywords.length - 1);
+       return keywords;
+}
+var option ={ expire: 30 };
+$(document).ready(function (){
+               enableFilter();
+               if($.cookie('transLang') === null){
+                       $.cookie('transLang', 'en', option);
+               }
+               if($.cookie('myLangs') === null){
+                       $.cookie('myLangs', 'en', option);
+               }
+               var select = $('#transArea select[name=langs]');
+               select.change(function(){
+                               var val = $(this).val();
+                               $.cookie('transLang', val, option);
+                               $.cookie('fullLang', $(this).find('option[value=' + val + ']').text(), option);
+                       })
+                       .find('option').each(function(){
+                               var lang = $.cookie('transLang')
+                               if(lang === null){
+                                       lang = 'en';
+                               }
+                               if($(this).val() === lang){
+                                       $(this).attr('selected', 'selected');
+                               }
+                       });
+               var mylang = $('#transArea select[name=myLangs]');
+               mylang.change(function(){
+                               var val = $(this).val();
+                               $.cookie('myLangs', val, option);
+                       })
+                       .find('option').each(function(){
+                               var lang = $.cookie('myLangs')
+                               if(lang === null){
+                                       lang = 'en';
+                               }
+                               if($(this).val() === lang){
+                                       $(this).attr('selected', 'selected');
+                               }
+                       });
+       });
index 55537f1..020585d 100644 (file)
-// Global Const\r
-var INTERVAL_COOKIE = 'homeInterval';\r
-$(function () {\r
-       formFunc();\r
-       $(".rt_btn").live("click", function (e) {\r
-               e.preventDefault();\r
-               onRT($(this));\r
-       });\r
-       $(".retw_btn").live("click", function (e) {\r
-               e.preventDefault();\r
-               onNwRT($(this));\r
-       });\r
-       $(".replie_btn").live("click", function (e) {\r
-               e.preventDefault();\r
-               onReplie($(this), e);\r
-       });\r
-       $(".favor_btn").live("click", function (e) {\r
-               e.preventDefault();\r
-               onFavor($(this));\r
-       });\r
-       $(".delete_btn").live("click", function (e) {\r
-               e.preventDefault();\r
-               onDelete($(this), "Tweet");\r
-       });\r
-       $(".rt_undo").live("click", function (e) {\r
-               e.preventDefault();\r
-               onUndoRt($(this));\r
-       });\r
-       markReply($("#allTimeline > li"));\r
-       $("#submit_btn").click(function (e) {\r
-               updateStatus();\r
-               e.preventDefault();\r
-       });\r
-       document.onclick = function () {\r
-               document.title = document.title.replace(/(\([0-9]+\))/g, "");\r
-               $(".new").each(function () {\r
-                       $(".new").remove();\r
-               });\r
-       }\r
-       setUpdateInterval();\r
-});\r
-var setUpdateInterval = function () {\r
-       if (!location.href.split("?")[1] || location.href.split("?")[1] == "p=1") {\r
-               var interval = parseFloat($.cookie(INTERVAL_COOKIE));\r
-               if (interval === 0.0) {\r
-                       return false;\r
-               }\r
-               interval = interval > 0 ? interval : 1;\r
-               UPDATE_INTERVAL = setInterval(function () {\r
-                       update();\r
-               }, interval * 1000 * 60);\r
-       }\r
-};\r
-function update() {\r
-       if (PAUSE_UPDATE === true) {\r
-               window.setTimeout(update, 5000);\r
-       } else if (PAUSE_TIMELINE === true) {\r
-               return 0;\r
-       } else {\r
-               PAUSE_TIMELINE = true;\r
-               updateSentTip('Retrieving new tweets...', 5000, 'ing');\r
-               if ($.cookie("intervalChanged") === "true") {\r
-                       clearInterval(UPDATE_INTERVAL);\r
-                       $.cookie("intervalChanged", "")\r
-                       setUpdateInterval();\r
-               }\r
-               $("#statuses .timeline li.mine").removeClass("mine").addClass("myTweet");\r
-               var since_id = $("#statuses .timeline li:not(.myTweet):not(#ajax_statuses li):first").find(".status_id").text();\r
-               $.ajax({\r
-                       url: "ajax/updateTimeline.php",\r
-                       type: "GET",\r
-                       dataType: "text",\r
-                       data: "since_id=" + since_id,\r
-                       success: function (msg) {\r
-                               if ($.trim(msg).indexOf("</li>") > 0) {\r
-                                       $("#allTimeline li.myTweet:not(:first)").removeClass("myTweet");\r
-                                       var source = $(msg).prependTo($(".timeline"));\r
-                                       var num = 0;\r
-                                       if (document.title.match(/\d+/) != null) {\r
-                                               num = parseInt(document.title.match(/\d+/));\r
-                                       }\r
-                                       document.title = "(" + (num + $(msg).length - 1) + ") " + document.title.replace(/(\([0-9]+\))/g, "");\r
-                                       markReply($('#allTimeline > li'));\r
-                                       filterEle();\r
-                                       rabrTweet(source);\r
-                                       $(".new").slideDown("fast");\r
-                                       $(".big-retweet-icon").tipsy({\r
-                                               gravity: 's'\r
-                                       });\r
-                                       previewMedia(source);\r
-                               } else {\r
-                                       updateSentTip('No new tweets', 3000, 'failure');\r
-                               }\r
-                               PAUSE_TIMELINE = false;\r
-                       },\r
-                       error: function (msg) {\r
-                               PAUSE_TIMELINE = false;\r
-                       }\r
-               });\r
-       }\r
-}\r
+// Global Const
+var INTERVAL_COOKIE = 'homeInterval';
+$(function () {
+       formFunc();
+       $("#allTimeline").click(function(e) {
+               var $this = $(e.target);
+               var type = $this.attr('class');
+               switch(type) {
+                       case 'rt_btn':
+                               e.preventDefault();
+                               onRT($this);
+                               break;
+                       case 'retw_btn':
+                               e.preventDefault();
+                               onNwRT($this);
+                               break;
+                       case 'replie_btn':
+                               e.preventDefault();
+                               onReplie($this,e);
+                               break;
+                       case 'favor_btn':
+                               e.preventDefault();
+                               onFavor($this);
+                               break;
+                       case 'unfav_btn':
+                               e.preventDefault();
+                               UnFavor($this);
+                               break;
+                       case 'delete_btn':
+                               e.preventDefault();
+                               onDelete($this);
+                               break;
+                       case 'rt_undo':
+                               e.preventDefault();
+                               onUndoRt($this);
+                               break;
+               }
+       });
+       markReply($("#allTimeline > li"));
+       $("#submit_btn").click(function (e) {
+               e.preventDefault();
+               updateStatus();
+       });
+       $("body").live("click", function (e) {
+               document.title = document.title.replace(/(\([0-9]+\))/g, "");
+               $(".new").remove();
+       });
+       setUpdateInterval();
+});
+var setUpdateInterval = function () {
+       if (!location.href.split("?")[1] || location.href.split("?")[1] == "p=1") {
+               var interval = parseFloat($.cookie(INTERVAL_COOKIE));
+               if (interval === 0.0) {
+                       return false;
+               }
+               interval = interval > 0 ? interval : 1;
+               UPDATE_INTERVAL = setInterval(function () {
+                       update();
+               }, interval * 1000 * 60);
+       }
+};
+function update() {
+       if (PAUSE_UPDATE === true) {
+               window.setTimeout(update, 5000);
+       } else if (PAUSE_TIMELINE === true) {
+               return 0;
+       } else {
+               PAUSE_TIMELINE = true;
+               updateSentTip('Retrieving new tweets...', 5000, 'ing');
+               if ($.cookie("intervalChanged") === "true") {
+                       clearInterval(UPDATE_INTERVAL);
+                       $.cookie("intervalChanged", "")
+                       setUpdateInterval();
+               }
+               $("ol.timeline li.mine").removeClass("mine").addClass("myTweet");
+               var since_id = $("ol.timeline li:not(.myTweet):not(#ajax_statuses li):first").find(".status_id").text();
+               $.ajax({
+                       url: "ajax/updateTimeline.php",
+                       type: "GET",
+                       dataType: "text",
+                       data: "since_id=" + since_id,
+                       success: function (msg) {
+                               if ($.trim(msg).indexOf("</li>") > 0) {
+                                       var source = $(msg).prependTo($(".timeline"));
+                                       var num = 0;
+                                       if (document.title.match(/\d+/) != null) {
+                                               num = parseInt(document.title.match(/\d+/));
+                                       }
+                                       document.title = "(" + (num + $(msg).length - 1) + ") " + document.title.replace(/(\([0-9]+\))/g, "");
+                                       markReply($('#allTimeline > li'));
+                                       filterEle();
+                                       embrTweet(source);
+                                       if($("div.new").length == 1) {
+                                               $("div.new").show().slideDown("fast");
+                                       } else {
+                                               $("div.new").filter(":first").remove();
+                                               $("span.tweetcount").filter(":last").text(num + $(msg).length - 1);
+                                       }
+                                       $("span.big-retweet-icon").tipsy({
+                                               gravity: 's'
+                                       });
+                                       previewMedia(source);
+                               } else {
+                                       updateSentTip('No new tweets', 3000, 'failure');
+                               }
+                               PAUSE_TIMELINE = false;
+                       },
+                       error: function (msg) {
+                               PAUSE_TIMELINE = false;
+                       }
+               }); 
+       }
+}
index 7c24308..bb67c85 100644 (file)
 /*!
- * jQuery JavaScript Library v1.4.2
- * http://jquery.com/
+ * jQuery Plugins Package for Embr
+ * https://embr.in/
  *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Sat Feb 13 22:33:48 2010 -0500
+ * Copyright 2010-2011, Plugins Authors
+ * Packaged by Contributors
+ * 
+ * Currently including:
+ * - Cookie
+ * - Color
+ * - Tipsy
+ * - Lazy Load
+ * - Infinite Scroll
+ * - Autocomplete
+ * - Timeago
+ * - caret
+ * - ajaxFileupload
  */
-(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
-e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
-j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
-"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
-true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
-Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
-(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
-a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
-"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
-function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
-c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
-L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
-"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
-a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
-d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
-a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
-!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
-true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
-var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
-parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
-false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
-s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
-applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
-else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
-a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
-w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
-cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
-i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
-" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
-this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
-e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
-c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
-a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
-function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
-k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
-C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
-null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
-e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
-f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
-if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
-"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
-a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
-isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
-{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
-if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
-e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
-"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
-d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
-!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
-toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
-u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
-function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
-if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
-e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
-t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
-g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
-for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
-1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
-CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
-relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
-l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
-h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
-CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
-g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
-text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
-setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
-h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
-m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
-"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
-h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
-!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
-h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
-q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
-if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
-(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
-function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
-gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
-c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
-{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
-"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
-d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
-a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
-1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
-a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
-c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
-wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
-prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
-this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
-return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
-""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
-this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
-u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
-1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
-return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
-""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
-c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
-c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
-function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
-Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
-"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
-a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
-a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
-"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
-serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
-function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
-global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
-e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
-"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
-false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
-false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
-c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
-d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
-g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
-1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
-"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
-if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
-this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
-"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
-animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
-j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
-this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
-"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
-c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
-this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
-this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
-e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
-c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
-function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
-this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
-k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
-f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
-a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
-c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
-d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
-"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
-e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
+
+//Cookie
+jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};
+
+//Color
+(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);
+
+//Tipsy
+(function(a){a.fn.tipsy=function(b){b=a.extend({},a.fn.tipsy.defaults,b);return this.each(function(){var c=a.fn.tipsy.elementOptions(this,b);a(this).hover(function(){a.data(this,"cancel.tipsy",true);var b=a.data(this,"active.tipsy");if(!b){b=a('<div class="tipsy"><div class="tipsy-inner"/></div>');b.css({position:"absolute",zIndex:1e5});a.data(this,"active.tipsy",b)}if(a(this).attr("title")||typeof a(this).attr("original-title")!="string"){a(this).attr("original-title",a(this).attr("title")||"").removeAttr("title")}var d;if(typeof c.title=="string"){d=a(this).attr(c.title=="title"?"original-title":c.title)}else if(typeof c.title=="function"){d=c.title.call(this)}b.find(".tipsy-inner")[c.html?"html":"text"](d||c.fallback);var e=a.extend({},a(this).offset(),{width:this.offsetWidth,height:this.offsetHeight});b.get(0).className="tipsy";b.remove().css({top:0,left:0,visibility:"hidden",display:"block"}).appendTo(document.body);var f=b[0].offsetWidth,g=b[0].offsetHeight;var h=typeof c.gravity=="function"?c.gravity.call(this):c.gravity;switch(h.charAt(0)){case"n":b.css({top:e.top+e.height,left:e.left+e.width/2-f/2}).addClass("tipsy-north");break;case"s":b.css({top:e.top-g,left:e.left+e.width/2-f/2}).addClass("tipsy-south");break;case"e":b.css({top:e.top+e.height/2-g/2,left:e.left-f}).addClass("tipsy-east");break;case"w":b.css({top:e.top+e.height/2-g/2,left:e.left+e.width}).addClass("tipsy-west");break}if(c.fade){b.css({opacity:0,display:"block",visibility:"visible"}).animate({opacity:.8})}else{b.css({visibility:"visible"})}},function(){a.data(this,"cancel.tipsy",false);var b=this;setTimeout(function(){if(a.data(this,"cancel.tipsy"))return;var d=a.data(b,"active.tipsy");if(c.fade){d.stop().fadeOut(function(){a(this).remove()})}else{d.remove()}},100)})})};a.fn.tipsy.elementOptions=function(b,c){return a.metadata?a.extend({},c,a(b).metadata()):c};a.fn.tipsy.defaults={fade:false,fallback:"",gravity:"n",html:false,title:"title"};a.fn.tipsy.autoNS=function(){return a(this).offset().top>a(document).scrollTop()+a(window).height()/2?"s":"n"};a.fn.tipsy.autoWE=function(){return a(this).offset().left>a(document).scrollLeft()+a(window).width()/2?"e":"w"}})(jQuery);
+
+//Lazy Load
+(function(a){a.fn.lazyload=function(b){var c={threshold:0,failurelimit:0,event:"scroll",effect:"show",container:window};if(b){a.extend(c,b)}var d=this;if("scroll"==c.event){a(c.container).bind("scroll",function(b){var e=0;d.each(function(){if(a.abovethetop(this,c)||a.leftofbegin(this,c)){}else if(!a.belowthefold(this,c)&&!a.rightoffold(this,c)){a(this).trigger("appear")}else{if(e++>c.failurelimit){return false}}});var f=a.grep(d,function(a){return!a.loaded});d=a(f)})}this.each(function(){var b=this;if(undefined==a(b).attr("original")){a(b).attr("original",a(b).attr("src"))}if("scroll"!=c.event||undefined==a(b).attr("src")||c.placeholder==a(b).attr("src")||a.abovethetop(b,c)||a.leftofbegin(b,c)||a.belowthefold(b,c)||a.rightoffold(b,c)){if(c.placeholder){a(b).attr("src",c.placeholder)}else{a(b).removeAttr("src")}b.loaded=false}else{b.loaded=true}a(b).one("appear",function(){if(!this.loaded){a("<img />").bind("load",function(){a(b).hide().attr("src",a(b).attr("original"))[c.effect](c.effectspeed);b.loaded=true}).attr("src",a(b).attr("original"))}});if("scroll"!=c.event){a(b).bind(c.event,function(c){if(!b.loaded){a(b).trigger("appear")}})}});a(c.container).trigger(c.event);return this};a.belowthefold=function(b,c){if(c.container===undefined||c.container===window){var d=a(window).height()+a(window).scrollTop()}else{var d=a(c.container).offset().top+a(c.container).height()}return d<=a(b).offset().top-c.threshold};a.rightoffold=function(b,c){if(c.container===undefined||c.container===window){var d=a(window).width()+a(window).scrollLeft()}else{var d=a(c.container).offset().left+a(c.container).width()}return d<=a(b).offset().left-c.threshold};a.abovethetop=function(b,c){if(c.container===undefined||c.container===window){var d=a(window).scrollTop()}else{var d=a(c.container).offset().top}return d>=a(b).offset().top+c.threshold+a(b).height()};a.leftofbegin=function(b,c){if(c.container===undefined||c.container===window){var d=a(window).scrollLeft()}else{var d=a(c.container).offset().left}return d>=a(b).offset().left+c.threshold+a(b).width()};a.extend(a.expr[":"],{"below-the-fold":"$.belowthefold(a, {threshold : 0, container: window})","above-the-fold":"!$.belowthefold(a, {threshold : 0, container: window})","right-of-fold":"$.rightoffold(a, {threshold : 0, container: window})","left-of-fold":"!$.rightoffold(a, {threshold : 0, container: window})"})})(jQuery);
+
+//Infinite Scroll
+(function(a){a.fn.infinitescroll=function(b,c){function l(){if(n.isDone){i();return false}else{var b=o.children().get();if(b.length==0){return a.event.trigger("ajaxError",[{status:404}])}else{m.callback(o)}while(o[0].firstChild){p.appendChild(o[0].firstChild)}a(m.contentSelector)[0].appendChild(p);n.loadingMsg.fadeOut("normal");if(m.animate){var d=a(window).scrollTop()+a("#infscr-loading").height()+m.extraScrollPx+"px";a("html,body").animate({scrollTop:d},800,function(){n.isDuringAjax=false})}c.call(a(m.contentSelector)[0],b);if(!m.animate)n.isDuringAjax=false}}function k(){n.isDuringAjax=true;n.loadingMsg.appendTo(m.contentSelector).show();a(m.navSelector).hide();n.currPage++;d("heading into ajax",r);o=a(m.contentSelector).is("table")?a("<tbody/>"):a("<div/>");p=document.createDocumentFragment();o.load(r.join(n.currPage)+" "+m.itemSelector,null,l)}function j(){if(n.isDuringAjax||n.isInvalidPage||n.isDone)return;if(!h(m,n))return;a(document).trigger("retrieve.infscr")}function i(){n.loadingMsg.find("img").hide().parent().find("div").html(m.donetext).animate({opacity:1},2e3).fadeOut("normal");m.errorCallback()}function h(){var b=0+g()-(m.localMode?a(n.container).scrollTop():a(n.container).scrollTop()||a(n.container.ownerDocument.body).scrollTop())-a(m.localMode?n.container:window).height();d("math:",b,n.pixelsFromNavToBottom);var c=b;var e=n.pixelsFromNavToBottom;return b-m.bufferPx<n.pixelsFromNavToBottom}function g(){return m.localMode?a(n.container)[0].scrollHeight&&a(n.container)[0].scrollHeight:a(document).height()}function f(a){a.match(q)?a.match(q)[2]:a;if(a.match(/^(.*?)\b2\b(.*?$)/)){a=a.match(/^(.*?)\b2\b(.*?$)/).slice(1)}else if(a.match(/^(.*?)2(.*?$)/)){if(a.match(/^(.*?page=)2(\/.*|$)/)){a=a.match(/^(.*?page=)2(\/.*|$)/).slice(1);return a}d("Trying backup next selector parse technique. Treacherous waters here, matey.");a=a.match(/^(.*?)2(.*?$)/).slice(1)}else{if(a.match(/^(.*?page=)1(\/.*|$)/)){a=a.match(/^(.*?page=)1(\/.*|$)/).slice(1);return a}n.isInvalidPage=true}return a}function e(b){for(var c in b){if(c.indexOf&&c.indexOf("Selector")>-1&&a(b[c]).length===0){d("Your "+c+" found no elements.");return false}return true}}function d(){if(m.debug){window.console&&console.log.call(console,arguments)}}a.browser.ie6=a.browser.msie&&a.browser.version<7;var m=a.extend({},a.infinitescroll.defaults,b),n=a.infinitescroll,o,p;c=c||function(){};if(!e(m)){return false}n.container=m.localMode?this:document.documentElement;m.contentSelector=m.contentSelector||this;var q=/(.*?\/\/).*?(\/.*)/,r=a(m.nextSelector).attr("href");if(!r){d("Navigation selector not found");return}r=f(r);if(m.localMode)a(n.container)[0].scrollTop=0;n.pixelsFromNavToBottom=n.container==document.documentElement?300:g()+a(n.container).offset().top-a(m.navSelector).offset().top;n.loadingMsg=a('<li class="scro"><img alt="Loading..." src="'+m.loadingImg+'" /> '+m.loadingText+"</li>");(new Image).src=m.loadingImg;a(document).ajaxError(function(b,c,e){d("Page not found. Self-destructing...");if(c.status==404){i();n.isDone=true;a(m.localMode?this:window).unbind("scroll.infscr")}});a(m.localMode?this:window).bind("scroll.infscr",j).trigger("scroll.infscr");a(document).bind("retrieve.infscr",k);return this};a.infinitescroll={defaults:{debug:false,preload:false,nextSelector:"a#more:last",loadingImg:"img/square.gif",loadingText:" Please wait...",donetext:"Sorry, but we have no more loading for you!",navSelector:"div.navigation",contentSelector:null,extraScrollPx:150,itemSelector:"#allTimeline li",animate:false,localMode:false,bufferPx:400,errorCallback:function(){},callback:undefined},loadingImg:undefined,loadingMsg:undefined,container:undefined,currPage:1,currDOMChunk:null,isDuringAjax:false,isInvalidPage:false,isDone:false}})(jQuery);
+
+//Autocomplete
+(function(a){a.fn.extend({autocomplete:function(b,c){var d=typeof b=="string";c=a.extend({},a.Autocompleter.defaults,{url:d?b:null,data:d?null:b,delay:d?a.Autocompleter.defaults.delay:10,max:c&&!c.scroll?10:150},c);c.highlight=c.highlight||function(a){return a};c.formatMatch=c.formatMatch||c.formatItem;return this.each(function(){new a.Autocompleter(this,c)})},result:function(a){return this.bind("result",a)},search:function(a){return this.trigger("search",[a])},flushCache:function(){return this.trigger("flushCache")},setOptions:function(a){return this.trigger("setOptions",[a])},unautocomplete:function(){return this.trigger("unautocomplete")}});a.Autocompleter=function(b,c){function x(){e.removeClass(c.loadingClass)}function w(b){var d=[];var e=b.split("\n");for(var f=0;f<e.length;f++){var g=a.trim(e[f]);if(g){g=g.split("|");d[d.length]={data:g,value:g[0],result:c.formatResult&&c.formatResult(g,g[0])||g[0]}}}return d}function v(d,e,f){if(!c.matchCase)d=d.toLowerCase();var g=h.load(d);if(g&&g.length){e(d,g)}else if(typeof c.url=="string"&&c.url.length>0){var i={timestamp:+(new Date)};a.each(c.extraParams,function(a,b){i[a]=typeof b=="function"?b():b});a.ajax({mode:"abort",port:"autocomplete"+b.name,dataType:c.dataType,url:c.url,data:a.extend({q:q(d),limit:c.max},i),success:function(a){var b=c.parse&&c.parse(a)||w(a);h.add(d,b);e(d,b)}})}else{l.emptyList();f(d)}}function u(a,b){if(b&&b.length&&i){x();l.display(b,a);r(a,b[0].value);l.show()}else{t()}}function t(){var d=l.visible();l.hide();clearTimeout(f);x();if(c.mustMatch){e.search(function(a){if(!a){if(c.multiple){var b=p(e.val()).slice(0,-1);e.val(b.join(c.multipleSeparator)+(b.length?c.multipleSeparator:""))}else e.val("")}})}if(d)a.Autocompleter.Selection(b,b.value.length,b.value.length)}function s(){clearTimeout(f);f=setTimeout(t,200)}function r(f,h){if(c.autoFill&&q(e.val()).toLowerCase()==f.toLowerCase()&&j!=d.BACKSPACE){e.val(e.val()+h.substring(q(g).length));a.Autocompleter.Selection(b,g.length,g.length+h.length)}}function q(a){if(!c.multiple)return a;var b=p(a);return b[b.length-1]}function p(b){if(!b){return[""]}var d=b.split(c.multipleSeparator);var e=[];a.each(d,function(b,c){if(a.trim(c))e[b]=a.trim(c)});return e}function o(a,b){if(j==d.DEL){l.hide();return}var f=e.val();if(!b&&f==g)return;g=f;f=q(f);if(f.length>=c.minChars){e.addClass(c.loadingClass);if(!c.matchCase)f=f.toLowerCase();v(f,u,t)}else{x();l.hide()}}function n(){var a=l.selected();if(!a)return false;var b=a.result;g=b;if(c.multiple){var d=p(e.val());if(d.length>1){b=d.slice(0,d.length-1).join(c.multipleSeparator)+c.multipleSeparator+b}b+=c.multipleSeparator}e.val(b);t();e.trigger("result",[a.data,a.value]);return true}var d={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34,BACKSPACE:8};var e=a(b).attr("autocomplete","off").addClass(c.inputClass);var f;var g="";var h=a.Autocompleter.Cache(c);var i=0;var j;var k={mouseDownOnSelect:false};var l=a.Autocompleter.Select(c,b,n,k);var m;a.browser.opera&&a(b.form).bind("submit.autocomplete",function(){if(m){m=false;return false}});e.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(b){j=b.keyCode;switch(b.keyCode){case d.UP:b.preventDefault();if(l.visible()){l.prev()}else{o(0,true)}break;case d.DOWN:b.preventDefault();if(l.visible()){l.next()}else{o(0,true)}break;case d.PAGEUP:b.preventDefault();if(l.visible()){l.pageUp()}else{o(0,true)}break;case d.PAGEDOWN:b.preventDefault();if(l.visible()){l.pageDown()}else{o(0,true)}break;case c.multiple&&a.trim(c.multipleSeparator)==","&&d.COMMA:case d.TAB:case d.RETURN:if(n()){b.preventDefault();m=true;return false}break;case d.ESC:l.hide();break;default:clearTimeout(f);f=setTimeout(o,c.delay);break}}).focus(function(){i++}).blur(function(){i=0;if(!k.mouseDownOnSelect){s()}}).click(function(){if(i++>1&&!l.visible()){o(0,true)}}).bind("search",function(){function c(a,c){var d;if(c&&c.length){for(var f=0;f<c.length;f++){if(c[f].result.toLowerCase()==a.toLowerCase()){d=c[f];break}}}if(typeof b=="function")b(d);else e.trigger("result",d&&[d.data,d.value])}var b=arguments.length>1?arguments[1]:null;a.each(p(e.val()),function(a,b){v(b,c,c)})}).bind("flushCache",function(){h.flush()}).bind("setOptions",function(){a.extend(c,arguments[1]);if("data"in arguments[1])h.populate()}).bind("unautocomplete",function(){l.unbind();e.unbind();a(b.form).unbind(".autocomplete")});};a.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(a){return a[0]},formatMatch:null,autoFill:false,width:0,multiple:false,multipleSeparator:", ",highlight:function(a,b){return a.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+b.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>")},scroll:true,scrollHeight:180};a.Autocompleter.Cache=function(b){function h(){c={};d=0}function g(){if(!b.data)return false;var c={},d=0;if(!b.url)b.cacheLength=1;c[""]=[];for(var e=0,g=b.data.length;e<g;e++){var h=b.data[e];h=typeof h=="string"?[h]:h;var i=b.formatMatch(h,e+1,b.data.length);if(i===false)continue;var j=i.charAt(0).toLowerCase();if(!c[j])c[j]=[];var k={value:i,data:h,result:b.formatResult&&b.formatResult(h)||i};c[j].push(k);if(d++<b.max){c[""].push(k)}}a.each(c,function(a,c){b.cacheLength++;f(a,c)})}function f(a,e){if(d>b.cacheLength){h()}if(!c[a]){d++}c[a]=e}function e(a,c){if(!b.matchCase)a=a.toLowerCase();var d=a.indexOf(c);if(b.matchContains=="word"){d=a.toLowerCase().search("\\b"+c.toLowerCase())}if(d==-1)return false;return d==0||b.matchContains}var c={};var d=0;setTimeout(g,25);return{flush:h,add:f,populate:g,load:function(f){if(!b.cacheLength||!d)return null;if(!b.url&&b.matchContains){var g=[];for(var h in c){if(h.length>0){var i=c[h];a.each(i,function(a,b){if(e(b.value,f)){g.push(b)}})}}return g}else if(c[f]){return c[f]}else if(b.matchSubset){for(var j=f.length-1;j>=b.minChars;j--){var i=c[f.substr(0,j)];if(i){var g=[];a.each(i,function(a,b){if(e(b.value,f)){g[g.length]=b}});return g}}}return null}}};a.Autocompleter.Select=function(b,c,d,e){function s(){m.empty();var c=r(i.length);for(var d=0;d<c;d++){if(!i[d])continue;var e=b.formatItem(i[d].data,d+1,c,i[d].value,j);if(e===false)continue;var k=a("<li/>").html(b.highlight(e,j)).addClass(d%2==0?"ac_even":"ac_odd").appendTo(m)[0];a.data(k,"ac_data",i[d])}g=m.find("li");if(b.selectFirst){g.slice(0,1).addClass(f.ACTIVE);h=0}if(a.fn.bgiframe)m.bgiframe()}function r(a){return b.max&&b.max<a?b.max:a}function q(a){h+=a;if(h<0){h=g.size()-1}else if(h>=g.size()){h=0}}function p(a){g.slice(h,h+1).removeClass(f.ACTIVE);q(a);var c=g.slice(h,h+1).addClass(f.ACTIVE);if(b.scroll){var d=0;g.slice(0,h).each(function(){d+=this.offsetHeight});if(d+c[0].offsetHeight-m.scrollTop()>m[0].clientHeight){m.scrollTop(d+c[0].offsetHeight-m.innerHeight())}else if(d<m.scrollTop()){m.scrollTop(d)}}}function o(a){var b=a.target;while(b&&b.tagName!="LI")b=b.parentNode;if(!b)return[];return b}function n(){if(!k)return;l=a("<div/>").hide().addClass(b.resultsClass).css("position","absolute").appendTo(document.body);m=a("<ul/>").appendTo(l).mouseover(function(b){if(o(b).nodeName&&o(b).nodeName.toUpperCase()=="LI"){h=a("li",m).removeClass(f.ACTIVE).index(o(b));a(o(b)).addClass(f.ACTIVE)}}).click(function(b){a(o(b)).addClass(f.ACTIVE);d();c.focus();return false}).mousedown(function(){e.mouseDownOnSelect=true}).mouseup(function(){e.mouseDownOnSelect=false});if(b.width>0)l.css("width",b.width);k=false}var f={ACTIVE:"ac_over"};var g,h=-1,i,j="",k=true,l,m;return{display:function(a,b){n();i=a;j=b;s()},next:function(){p(1)},prev:function(){p(-1)},pageUp:function(){if(h!=0&&h-8<0){p(-h)}else{p(-8)}},pageDown:function(){if(h!=g.size()-1&&h+8>g.size()){p(g.size()-1-h)}else{p(8)}},hide:function(){l&&l.hide();g&&g.removeClass(f.ACTIVE);h=-1},visible:function(){return l&&l.is(":visible")},current:function(){return this.visible()&&(g.filter("."+f.ACTIVE)[0]||b.selectFirst&&g[0])},show:function(){var d=a(c).offset();l.css({width:typeof b.width=="string"||b.width>0?b.width:a(c).width(),top:d.top+c.offsetHeight,left:d.left}).show();if(b.scroll){m.scrollTop(0);m.css({maxHeight:b.scrollHeight,overflow:"auto"});if(a.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var e=0;g.each(function(){e+=this.offsetHeight});var f=e>b.scrollHeight;m.css("height",f?b.scrollHeight:e);if(!f){g.width(m.width()-parseInt(g.css("padding-left"))-parseInt(g.css("padding-right")))}}}},selected:function(){var b=g&&g.filter("."+f.ACTIVE).removeClass(f.ACTIVE);return b&&b.length&&a.data(b[0],"ac_data")},emptyList:function(){m&&m.empty()},unbind:function(){l&&l.remove()}}};a.Autocompleter.Selection=function(a,b,c){if(a.createTextRange){var d=a.createTextRange();d.collapse(true);d.moveStart("character",b);d.moveEnd("character",c);d.select()}else if(a.setSelectionRange){a.setSelectionRange(b,c)}else{if(a.selectionStart){a.selectionStart=b;a.selectionEnd=c}}a.focus()}})(jQuery);
+
+//Timeago
+(function(a){function f(a){return(new Date).getTime()-a.getTime()}function e(a){return b.inWords(f(a))}function d(b){b=a(b);var c=a.trim(b.attr("id"));if(!b.data("timeago")){b.data("timeago",{datetime:new Date(c*1e3)})}return b.data("timeago")}function c(){var b=d(this);if(!isNaN(b.datetime)){a(this).text(e(b.datetime))}return this}a.timeago=function(a){if(a instanceof Date){return e(a)}};var b=a.timeago;a.extend(a.timeago,{settings:{refreshMillis:6e4,allowFuture:false,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",seconds:"%d seconds",minute:"about a minute",minutes:"%d minutes",hour:"about an hour",hours:"about %d hours",day:"a day",days:"%d days",month:"about a month",months:"%d months",year:"about a year",years:"%d years",numbers:[]}},inWords:function(b){function k(d,e){var f=a.isFunction(d)?d(e,b):d;var g=c.numbers&&c.numbers[e]||e;return f.replace(/%d/i,g)}var c=this.settings.strings;var d=c.prefixAgo;var e=c.suffixAgo;if(this.settings.allowFuture){if(b<0){d=c.prefixFromNow;e=c.suffixFromNow}b=Math.abs(b)}var f=b/1e3;var g=f/60;var h=g/60;var i=h/24;var j=i/365;var l=f<45&&k(c.seconds,Math.round(f))||f<90&&k(c.minute,1)||g<45&&k(c.minutes,Math.round(g))||g<90&&k(c.hour,1)||h<24&&k(c.hours,Math.round(h))||h<48&&k(c.day,1)||i<30&&k(c.days,Math.floor(i))||i<60&&k(c.month,1)||i<365&&k(c.months,Math.floor(i/30))||j<2&&k(c.year,1)||k(c.years,Math.floor(j));return a.trim([d,l,e].join(" "))}});a.fn.timeago=function(){var a=this;a.each(c);var d=b.settings;if(d.refreshMillis>0){setInterval(function(){a.each(c)},d.refreshMillis)}return a}})(jQuery);
+
+//caret
+(function(a){a.extend(a.fn,{caret:function(a,b){var c=this[0];if(c){if(typeof a=="undefined"){if(c.selectionStart){a=c.selectionStart;b=c.selectionEnd}else if(document.selection){var d=this.val();var e=document.selection.createRange().duplicate();e.moveEnd("character",d.length);a=e.text==""?d.length:d.lastIndexOf(e.text);e=document.selection.createRange().duplicate();e.moveStart("character",-d.length);b=e.text.length}}else{var d=this.val();if(typeof a!="number")a=-1;if(typeof b!="number")b=-1;if(a<0)a=0;if(b>d.length)b=d.length;if(b<a)b=a;if(a>b)a=b;c.focus();if(c.selectionStart){c.selectionStart=a;c.selectionEnd=b}else if(document.selection){var e=c.createTextRange();e.collapse(true);e.moveStart("character",a);e.moveEnd("character",b-a);e.select()}}return{start:a,end:b}}}})})(jQuery);
+
+//ajaxFileupload
+jQuery.extend({createUploadIframe:function(a,b){var c="jUploadFrame"+a;var d='<iframe id="'+c+'" name="'+c+'" style="position:absolute; top:-9999px; left:-9999px"';if(window.ActiveXObject){if(typeof b=="boolean"){d+=' src="'+"javascript:false"+'"'}else if(typeof b=="string"){d+=' src="'+b+'"'}}d+=" />";jQuery(d).appendTo(document.body);return jQuery("#"+c).get(0)},createUploadForm:function(a,b,c){var d="jUploadForm"+a;var e="jUploadFile"+a;var f=jQuery('<form  action="" method="POST" name="'+d+'" id="'+d+'" enctype="multipart/form-data"></form>');if(c){for(var g in c){jQuery('<input type="hidden" name="'+g+'" value="'+c[g]+'" />').appendTo(f)}}var h=jQuery("#"+b);var i=jQuery(h).clone();jQuery(h).attr("id",e);jQuery(h).before(i);jQuery(h).appendTo(f);jQuery(f).css("position","absolute");jQuery(f).css("top","-1200px");jQuery(f).css("left","-1200px");jQuery(f).appendTo("body");return f},ajaxFileUpload:function(a){a=jQuery.extend({},jQuery.ajaxSettings,a);var b=(new Date).getTime();var c=jQuery.createUploadForm(b,a.fileElementId,typeof a.data=="undefined"?false:a.data);var d=jQuery.createUploadIframe(b,a.secureuri);var e="jUploadFrame"+b;var f="jUploadForm"+b;if(a.global&&!(jQuery.active++)){jQuery.event.trigger("ajaxStart")}var g=false;var h={};if(a.global)jQuery.event.trigger("ajaxSend",[h,a]);var i=function(b){var d=document.getElementById(e);try{if(d.contentWindow){h.responseText=d.contentWindow.document.body?d.contentWindow.document.body.innerHTML:null;h.responseXML=d.contentWindow.document.XMLDocument?d.contentWindow.document.XMLDocument:d.contentWindow.document}else if(d.contentDocument){h.responseText=d.contentDocument.document.body?d.contentDocument.document.body.innerHTML:null;h.responseXML=d.contentDocument.document.XMLDocument?d.contentDocument.document.XMLDocument:d.contentDocument.document}}catch(f){jQuery.handleError(a,h,null,f)}if(h||b=="timeout"){g=true;var i;try{i=b!="timeout"?"success":"error";if(i!="error"){var j=jQuery.uploadHttpData(h,a.dataType);if(a.success)a.success(j,i);if(a.global)jQuery.event.trigger("ajaxSuccess",[h,a])}else jQuery.handleError(a,h,i)}catch(f){i="error";jQuery.handleError(a,h,i,f)}if(a.global)jQuery.event.trigger("ajaxComplete",[h,a]);if(a.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");if(a.complete)a.complete(h,i);jQuery(d).unbind();setTimeout(function(){try{jQuery(d).remove();jQuery(c).remove()}catch(b){jQuery.handleError(a,h,null,b)}},100);h=null}};if(a.timeout>0){setTimeout(function(){if(!g)i("timeout")},a.timeout)}try{var c=jQuery("#"+f);jQuery(c).attr("action",a.url);jQuery(c).attr("method","POST");jQuery(c).attr("target",e);if(c.encoding){jQuery(c).attr("encoding","multipart/form-data")}else{jQuery(c).attr("enctype","multipart/form-data")}jQuery(c).submit()}catch(j){jQuery.handleError(a,h,null,j)}jQuery("#"+e).load(i);return{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script")jQuery.globalEval(data);if(type=="json")eval("data = "+data);if(type=="html")jQuery("<div>").html(data).evalScripts();return data}});
\ No newline at end of file
index eccaa45..21bb4a3 100644 (file)
@@ -4,27 +4,35 @@ $(function(){
                if ($("#textbox").length > 0) {\r
                        onRT($(this));\r
                } else {\r
-                       $("#info_head").before('<h2>What are you doing?</h2>' + formHTML);\r
+                       $("#info_head").after('<h2>What are you doing?</h2>' + formHTML);\r
                        formFunc();\r
                        onRT($(this));\r
                }\r
        });\r
-       \r
-       $(".replie_btn").click(function(e){\r
+       $(".retw_btn").live("click", function(e){\r
+                       e.preventDefault();\r
+                       onNwRT($(this));\r
+       });\r
+       $(".rt_undo").live("click", function(e){\r
+               e.preventDefault();\r
+               onUndoRt($(this));\r
+       });\r
+       $(".replie_btn").live("click", function(e){\r
                e.preventDefault();\r
+               var replie_id = $(this).parent().parent().find(".status_word").find(".user_name").text();\r
                if ($("#textbox").length > 0) {\r
-                       onReplie($(this));\r
+                       onReplie($(this),e);\r
                } else {\r
-                       $("#info_head").before('<h2>What are you doing?</h2>' + formHTML);\r
+                       $("#info_head").after('<h2>In reply to ' + replie_id + '</h2>' + formHTML);\r
                        formFunc();\r
-                       onReplie($(this));\r
+                       onReplie($(this),e);\r
                }\r
        });\r
 \r
        $("#list_send_btn").click(function(e){\r
                e.preventDefault();\r
                if ($("#textbox").length == 0) {\r
-                       $("#info_head").before('<h2>What are you doing?</h2>' + formHTML);\r
+                       $("#info_head").after('<h2>What are you doing?</h2>' + formHTML);\r
                formFunc();\r
                }\r
        });\r
@@ -47,7 +55,7 @@ $(function(){
                        success: function(msg) {\r
                                if (msg.indexOf("success") >= 0) {\r
                                        updateSentTip("You have followed " + id + ".", 3000, "success");\r
-                                       $this.after('<a class="info_btn_hover" id="list_block_btn" href="javascript:void(0)">Unfollow</a>');\r
+                                       $this.after('<a class="info_btn_hover" id="list_block_btn" href="#">Unfollow</a>');\r
                                        $this.remove();\r
                                } else {\r
                                        updateSentTip("Failed to follow list " + id + ".", 3000, "failure");\r
index f8511d0..f7d1abe 100644 (file)
@@ -26,7 +26,7 @@ $(function(){
                                success: function(msg) {\r
                                        if (msg.indexOf("success") >= 0) {\r
                                                $this.parent().parent().parent().remove();\r
-                                               updateSentTip(member_name + "has been deleted.", 3000, "success");\r
+                                               updateSentTip(member_name + " has been deleted.", 3000, "success");\r
                                        } else {\r
                                                updateSentTip("Failed to delete " + member_name + ".", 3000, "failure");\r
                                        }\r
index a297030..77e1a25 100644 (file)
@@ -6,32 +6,31 @@ $(function(){
        \r
        $(".replie_btn").live("click", function(e){\r
                e.preventDefault();\r
-               onReplie($(this));\r
+               onReplie($(this),e);\r
        });\r
        $(".favor_btn").live("click", function(e){\r
                e.preventDefault();\r
                onFavor($(this));\r
        });\r
-       \r
-       $(".unfollow_list").click(function(e){\r
+       $(".unfollow_list").live("click",function(e){\r
                e.preventDefault();\r
                var $this = $(this);\r
                var id = $(this).parent().parent().find(".rank_name").text().substr(1);\r
-               updateSentTip("正在取消关注推群" + id + "...");\r
+               updateSentTip("Unfollowing lists...", 5000, "ing");\r
                $.ajax({\r
                        url: "ajax/list.php",\r
                        type: "POST",\r
                        data: "action=destory&id=" + id,\r
                        success: function(msg) {\r
                                if (msg.indexOf("success") >= 0) {\r
-                                       updateSentTip("取消关注推群" + id + "成功");\r
+                                       updateSentTip("Successfully unfollowing list" + id, 3000, "success");\r
                                        $this.remove();\r
                                } else {\r
-                                       updateSentTip("取消关注推群" + id + "失败,请重试");\r
+                                       updateSentTip("Unfollow failed. Please try again.", 3000, "failure");\r
                                }\r
                        },\r
                        error: function(msg) {\r
-                               updateSentTip("取消关注推群" + id + "失败,请重试");\r
+                               updateSentTip("Unfollow failed. Please try again.", 3000, "failure");\r
                        }\r
                });\r
                \r
@@ -41,9 +40,9 @@ $(function(){
                e.preventDefault();\r
                var $this = $(this);  \r
                var list_id = $(this).parent().parent().find(".rank_name").text().substr(1);\r
-               var confirm = window.confirm("确定要删除推群" + list_id + "?");\r
+               var confirm = window.confirm("Do you really want to delete" + list_id + "?");\r
                if (confirm) {\r
-                       updateSentTip("删除推群" + list_id + "中...");\r
+                       updateSentTip("deleting list" + list_id + "...", 5000, "ing");\r
                        $.ajax({\r
                                url: "ajax/delete.php",\r
                                type: "POST",\r
@@ -51,13 +50,13 @@ $(function(){
                                success: function(msg) {\r
                                        if (msg.indexOf("success") >= 0) {\r
                                                $this.parent().parent().parent().remove();\r
-                                               updateSentTip("删除推群" + list_id + "成功");\r
+                                               updateSentTip("Successfully deleting" + list_id, 3000, "success");\r
                                        } else {\r
-                                               updateSentTip("删除推群出错,请重试");\r
+                                               updateSentTip("Delete failed. Please try again.", 3000, "failure");\r
                                        }\r
                                },\r
                                error: function(msg) {\r
-                                       updateSentTip("删除推群出错,请重试");\r
+                                       updateSentTip("Delete failed. Please try again.", 3000, "failure");\r
                                }\r
                        });\r
                }\r
@@ -101,10 +100,10 @@ $(function(){
                var liPosition = $(this).parent().parent().parent().position();\r
                var list_name = $(this).parent().parent().find(".rank_name").text().split("/")[1];\r
                $('<form method="POST" action="./lists.php?t=1" id="member_form">' +\r
-               '<span>成员ID:(以英文逗号隔开,示例:bang590,twitter)</span>' +\r
+               '<span>User ID:(Saperated with comma, e.g. JLHwung,twitter)</span>' +\r
                '<span><textarea type="text" name="list_members" id="list_members"></textarea></span>' +\r
                '<input type="hidden" name="member_list_name" value="' + list_name + '" />' +\r
-               '<span><input type="submit" class="btn" id="member_submit" value="提交" /> <input type="button" class="btn" id="member_cancel" value="取消" /></span>' +\r
+               '<span><input type="submit" class="btn" id="member_submit" value="Submit" /> <input type="button" class="btn" id="member_cancel" value="Cancel" /></span>' +\r
            '</form>').appendTo("#statuses").css("left", liPosition.left + position.left).css("top", liPosition.top + position.top + 30);\r
                \r
                $("#member_cancel").click(function(){\r
index 91829d3..7cbcf15 100644 (file)
-// Flash preview\r
-TUDOU_EMBED = '<br /><embed src="http://www.tudou.com/v/src_id" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed>';\r
-XIAMI_EMBED = '<br /><embed src="http://www.xiami.com/widget/0_src_id/singlePlayer.swf" type="application/x-shockwave-flash" width="257" height="33" wmode="transparent"></embed>';\r
-YOUKU_EMBED = '<br /><embed src="http://player.youku.com/player.php/sid/src_id/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';\r
-EMBED_FRAME = '';\r
-\r
-function getFlashReg(sSite) {\r
-       switch (sSite) {\r
-       case 'xiami':\r
-               EMBED_FRAME = XIAMI_EMBED;\r
-               return /[\S]+\.xiami\.com\/song\/([\d]+)[\S]*/i;\r
-               break;\r
-       case 'tudou':\r
-               EMBED_FRAME = TUDOU_EMBED;\r
-               return /[\S]+.tudou.[\S]+\/([\w-]+)[\S]*/i;\r
-               break;\r
-       default:\r
-               return null;\r
-       }\r
-}\r
-var previewFlash = function (obj) {\r
-       var reg = /http:\/\/[\w]+\.([\w]+)\.[\w]+/i;\r
-       var embed = "";\r
-       if (reg.exec(obj.text().toLowerCase()) !== null) {\r
-               var re = getFlashReg(RegExp.$1);\r
-               if (re !== null) {\r
-                       if (re.exec(obj.text()) !== null) {\r
-                               embed = EMBED_FRAME.replace(/src_id/, RegExp.$1);\r
-                               $(embed).appendTo(obj.parent());\r
-                       }\r
-               }\r
-       }\r
-}\r
-// Image preview\r
-COOKIE_NAME = "showpic_cookie";\r
-options = {\r
-       expires: 10\r
-};\r
-function get_img_processor(type) {\r
-\r
-       if (type.indexOf('phodroid.com') == 0) { //ugly fix for bloody Phodroid (which's the worst image hosting service ON EARTH) by @luosheng\r
-               return {\r
-               reg: /^http:\/\/(?:www\.)?phodroid\.com\/([\d\w\/]+)/,\r
-               func: function (url_key, url_elem) {\r
-               var src = "http://phodroid.s3.amazonaws.com/" + url_key[1] + ".jpg";\r
-               append_image(src, url_elem);\r
-               }\r
-               };\r
-       }\r
-\r
-       switch (type) {\r
-       case "twitgoo.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitgoo\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/twitgoo.com/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "yfrog.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?yfrog\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = url_key[0] + ".th.jpg";\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "twitpic.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitpic\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/twitpic.com/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "img.ly":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?img\.ly\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://img.ly/show/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "ow.ly":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?ow\.ly\/i\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://static.ow.ly/photos/thumb/" + url_key[1] + ".jpg";\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "pic.gd":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?pic\.gd\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "tweetphoto.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?tweetphoto\.com\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "https://zdxproxy.appspot.com/TweetPhotoAPI.com/api/TPAPI.svc/imagefromurl?size=thumbnail&url=" + url_key[0];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "ts1.in":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?ts1\.in\/(\d+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://ts1.in/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "hellotxt.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?hellotxt.com\/i\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://hellotxt.com/image/" + url_key[1] + ".s.jpg"\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "twitxr.com":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?twitxr.com\/[^ ]+\/updates\/([\d]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = 'http://twitxr.com/thumbnails/' + url_key[1].substr(-2, 2) + '/' + url_key[1] + '_th.jpg';\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "moby.to":\r
-               proc = {\r
-                       reg: /^(http:\/\/(?:www\.)?moby\.to\/[A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://api.mobypicture.com?s=small&format=plain&k=OozRuDDauQlucrZ3&t=" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "grab.by":\r
-               proc = {\r
-                       reg: /^(http:\/\/(?:www\.)?grab\.by\/[A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "sf.gs":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?sf\.gs\/([\d\w]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               var src = "http://sf.gs/thumb/" + url_key[1];\r
-                               append_image(src, url_elem);\r
-                       }\r
-               };\r
-               return proc;\r
-       case "flic.kr":\r
-               proc = {\r
-                       reg: /^http:\/\/(?:www\.)?flic\.kr\/p\/([A-Za-z0-9]+)/,\r
-                       func: function (url_key, url_elem) {\r
-                               function base58_decode(snipcode) {\r
-                                       var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';\r
-                                       var num = snipcode.length;\r
-                                       var decoded = 0;\r
-                                       var multi = 1;\r
-                                       for (var i = (num - 1); i >= 0; i--) {\r
-                                               decoded = decoded + multi * alphabet.indexOf(snipcode[i]);\r
-                                               multi = multi * alphabet.length;\r
-                                       }\r
-                                       return decoded;\r
-                               }\r
-                               var id = base58_decode(url_key[1]);\r
-                               var apiKey = '4ef2fe2affcdd6e13218f5ddd0e2500d';\r
-                               var url = "http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=" + apiKey + "&photo_id=" + id;\r
-                               $.getJSON(url + "&format=json&jsoncallback=?", function (data) {\r
-                                       if (data.stat == "ok") {\r
-                                               var imgsrc = "https://zdxproxy.appspot.com/farm" + data.photo.farm + ".static.flickr.com/" + data.photo.server + "/" + data.photo.id + "_" + data.photo.secret + "_m.jpg";\r
-                                               append_image(imgsrc, url_elem);\r
-                                       }\r
-                               });\r
-                       }\r
-               };\r
-               return proc;\r
-       default:\r
-               return null;\r
-       }\r
-}\r
-function append_image(src, elem) {\r
-       var img = $('<img style="padding:3px;border:1px solid #ccc;max-width:420px;max-height:420px;" />').attr("src", src);\r
-       var link = $(elem).clone().empty().append(img);\r
-       $(elem).parent().after($('<div class="thumb_pic" style="display:block;margin:5px 0px;" />').append(link));\r
-}\r
-var previewImg = function (obj) {\r
-       if (obj.attr("rel") === "noreferrer") {\r
-               /(https?\:\/\/[\S]*\.(jpg|png|gif))/.exec(obj.attr("href"));\r
-               if(RegExp.$2.length > 0){\r
-                       append_image(RegExp.$1, obj);\r
-                       return;\r
-               }\r
-               /http[s]?:\/\/(?:www\.)?([\S]+)\/[\S]*/i.exec(obj.attr("href"));\r
-               var img_processor = get_img_processor(RegExp.$1);\r
-               if (img_processor === null) {\r
-                       return null;\r
-               }\r
-               if ((img_url_key = img_processor.reg.exec(obj.attr("href"))) != null) {\r
-                       obj.attr("alt", "image");\r
-                       img_processor.func(img_url_key, obj);\r
-               }\r
-       }\r
-}\r
-var previewMedia = function (objs) {\r
-       $(objs).find(".tweet a:not(:hidden)").each(function () {\r
-               if ($.cookie(COOKIE_NAME) === 'true') {\r
-                       previewImg($(this));\r
-               }\r
-               if ($.cookie('mediaPre') === 'true') {\r
-                       previewFlash($(this));\r
-               }\r
-       });\r
-}\r
-// Check if jQuery's loaded\r
-function GM_wait() {\r
-       if (typeof $ == 'undefined') {\r
-               window.setTimeout(GM_wait, 100);\r
-       }\r
-       else {\r
-               $(document).ready(function () {\r
-                       previewMedia($('.timeline'));\r
-               });\r
-       }\r
-}\r
-GM_wait();\r
+// Flash preview
+TUDOU_EMBED = '<br /><embed src="http://www.tudou.com/v/src_id" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" width="420" height="363"></embed>';
+XIAMI_EMBED = '<br /><embed src="http://www.xiami.com/widget/0_src_id/singlePlayer.swf" type="application/x-shockwave-flash" width="257" height="33" wmode="transparent"></embed>';
+YOUKU_EMBED = '<br /><embed src="http://player.youku.com/player.php/sid/src_id/v.swf" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';
+YOUTUBE_EMBED = '<br /><embed src="http://www.youtube.com/e/src_id?enablejsapi=1&version=3&playerapiid=ytplayer" quality="high" width="420" height="363" align="middle" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"></embed>';
+KU6_EMBED='<br /><embed src="http://player.ku6.com/refer/src_id/v.swf" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></embed>';
+VIMEO_EMBED='<br /><iframe src="http://player.vimeo.com/video/src_id" quality="high" width="420" height="363" align="middle" allowScriptAccess="allways" mode="transparent" type="application/x-shockwave-flash"></iframe>';
+EMBED_FRAME = '';
+function getFlashReg(sSite) {
+       switch (sSite) {
+       case 'www.xiami.com':
+               EMBED_FRAME = XIAMI_EMBED;
+               return /[\S]+\.xiami\.com\/song\/([\d]+)[\S]*/i;
+               break;
+       case 'www.tudou.com':
+               EMBED_FRAME = TUDOU_EMBED;
+               return /[\S]+.tudou.[\S]+\/([\w-]+)[\S]*/i;
+               break;
+       case 'v.youku.com':
+               EMBED_FRAME = YOUKU_EMBED;
+               return /[\S]+.youku.com\/v_show\/id_([\w-]+)[\S]*(.html)/i;
+               break;
+       case 'youtu.be':
+               EMBED_FRAME = YOUTUBE_EMBED;
+               return /youtu.be\/([\w-_?]+)[\S]*/i;
+               break;
+       case 'www.youtube.com':
+               EMBED_FRAME = YOUTUBE_EMBED;
+               return /[\S]+.youtube.[\S]+\/watch\?v=([\w-_?]+)[\S]*/i;
+               break;
+       case 'v.ku6.com':
+               EMBED_FRAME = KU6_EMBED;
+               return /[\S]+.ku6.com\/show\/([\w-]+)[\S]*(.html)/i;
+       case 'vimeo.com':
+               EMBED_FRAME = VIMEO_EMBED;
+               return /vimeo.com\/(\d+)[\S]*/i;
+       default:
+               return null;
+       }
+}
+var previewFlash = function (obj) {
+       var reg = /http:\/\/([\w]*[\.]*[\w]+\.[\w]+)\//i;
+       var embed = "";
+       var href = obj.attr("href");
+       if (reg.exec(href.toLowerCase()) !== null) {
+               var re = getFlashReg(RegExp.$1);
+               if (re !== null) {
+                       if (re.exec(href) !== null) {
+                               embed = EMBED_FRAME.replace(/src_id/, RegExp.$1);
+                               $(embed).appendTo(obj.parent().parent().find(".tweet"));
+                       }
+               }
+       }
+}
+
+function get_img_processor(type) {
+       switch (type) {
+       case "instagr.am":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?instagr\.am\/([\w\/]+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://instagr.am/" + url_key[1] + "media/?size=m";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "twitgoo.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitgoo\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://twitgoo.com/show/thumb/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "yfrog.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?yfrog\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=" + url_key[0] + ":iphone";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "twitpic.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitpic\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://twitpic.com/show/large/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "img.ly":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?img\.ly\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://img.ly/show/medium/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "ow.ly":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?ow\.ly\/i\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?imgurl=http://static.ow.ly/photos/thumb/" + url_key[1] + ".jpg";
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "tweetphoto.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?tweetphoto\.com\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.plixi.com/api/TPAPI.svc/imagefromurl?size=medium&url=" + url_key[0];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "plixi.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?plixi\.com\/p\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.plixi.com/api/tpapi.svc/imagefromurl?size=medium&url=http://plixi.com/p/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "hellotxt.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?hellotxt.com\/i\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://hellotxt.com/image/" + url_key[1] + ".s.jpg"
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "moby.to":
+               proc = {
+                       reg: /^(http:\/\/(?:www\.)?moby\.to\/(\w+))/,
+                       func: function (url_key, url_elem) {
+                               var src = "http://api.mobypicture.com?s=small&format=plain&k=OozRuDDauQlucrZ3&t=" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "p.twipple.jp":
+               proc = {
+                       reg: /^http:\/\/(?:p\.)?twipple\.jp\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               var src = "img.php?url=http://p.twipple.jp/show/large/" + url_key[1];
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       case "picplz.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?picplz\.com\/(\w+)/,
+                       func: function(url_key, url_elem) {
+                               $.getJSON('http://api.picplz.com/api/v2/pic.json?pic_formats=400r&callback=?&shorturl_id='+url_key[1],function (data) {
+                                       if (data.result == "ok") {
+                                               var imgsrc = data.value.pics[0].pic_files["400r"].img_url;
+                                               append_image(imgsrc, url_elem);
+                                       }
+                               });
+                       }
+               };
+               return proc;
+       case "flic.kr": 
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?flic\.kr\/p\/(\w+)/,
+                       func: function (url_key, url_elem) {
+                               function base58_decode(snipcode) {
+                                       var alphabet = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
+                                       var num = snipcode.length;
+                                       var decoded = 0;
+                                       var multi = 1;
+                                       for (var i = (num - 1); i >= 0; i--) {
+                                               decoded = decoded + multi * alphabet.indexOf(snipcode[i]);
+                                               multi = multi * alphabet.length;
+                                       }
+                                       return decoded;
+                               }
+                               var id = base58_decode(url_key[1]);
+                               var apiKey = '4ef2fe2affcdd6e13218f5ddd0e2500d';
+                               var url = "http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=" + apiKey + "&photo_id=" + id;
+                               $.getJSON(url + "&format=json&jsoncallback=?", function (data) {
+                                       if (data.stat == "ok") {
+                                               var imgsrc = "img.php?imgurl=http://farm" + data.photo.farm + ".static.flickr.com/" + data.photo.server + "/" + data.photo.id + "_" + data.photo.secret + "_m.jpg";
+                                               append_image(imgsrc, url_elem);
+                                       }
+                               });
+                       }
+               };
+               return proc;
+       case "twitxr.com":
+               proc = {
+                       reg: /^http:\/\/(?:www\.)?twitxr.com\/[^ ]+\/updates\/(\d+)/,
+                       func: function (url_key, url_elem) {
+                               var src = 'http://twitxr.com/thumbnails/' + url_key[1].substr(-2, 2) + '/' + url_key[1] + '_th.jpg';
+                               append_image(src, url_elem);
+                       }
+               };
+               return proc;
+       default:
+               return null;
+       }
+}
+var append_image = function(src, elem) {
+       var img = $('<img />').attr("src", src);
+       var link = $(elem).clone().empty().append(img);
+       $(elem).parent().after($('<div id="thumb_pic" />').append(link));
+}
+var previewImg = function (obj) {
+       var rel = obj.attr("href");
+       /(https?\:\/\/[\S]*\.(jpg|png|gif))/.exec(obj.attr("href"));
+       if(RegExp.$2.length == 3){
+               append_image(RegExp.$1, obj);
+               return;
+       }
+       /https?\:\/\/(?:www\.)?([\w-.]+)\/[\S]*/i.exec(obj.attr("href"));
+       var img_processor = get_img_processor(RegExp.$1);
+       if (img_processor === null) {
+               return null;
+       }
+       if ((img_url_key = img_processor.reg.exec(obj.attr("href"))) != null) {
+               obj.attr("alt", "image");
+               img_processor.func(img_url_key, obj);
+       }
+}
+var previewMedia = function (objs) {
+       var temp =[];
+       objs.find("span.tweet a[rel^=noref], span.tweet_url").each(function () {
+               var t = $(this);
+               var href = t.attr("href");
+               if(!(href in temp) && !t.data("previewed")) {
+                       if ($.cookie('showpic') === 'true') previewImg(t);
+                       if ($.cookie('mediaPre') === 'true') previewFlash(t);
+                       temp[href]=true;
+               }
+               t.data("previewed",true);
+       });
+}
+// Check if jQuery's loaded
+function GM_wait() {
+       if (typeof $ == 'undefined') {
+               window.setTimeout(GM_wait, 100);
+       }
+       else {
+               $(document).ready(function () {
+                       previewMedia($('.timeline'));
+               });
+       }
+}
+GM_wait();
\ No newline at end of file
index 297a2f9..1470aa5 100644 (file)
@@ -1,35 +1,50 @@
-$(document).ready(function(){\r
-       $(".delete_btn").click(function(e){\r
-               e.preventDefault();\r
-               \r
-               var $this = $(this);\r
-               var message_id = $.trim($this.parent().parent().find(".status_id").text());\r
-               var confirm = window.confirm("Are you sure to delete this message?");\r
-               \r
-               if (confirm) {\r
-                       updateSentTip("Deleting message...");\r
-                       $.ajax({\r
-                               url: "ajax/delete.php",\r
-                               type: "POST",\r
-                               data: "message_id=" + message_id,\r
-                               success: function(msg) {\r
-                                       if (msg.indexOf("success") >= 0) {\r
-                                               $this.parent().parent().parent().remove();\r
-                                               updateSentTip("Message deleted.");\r
-                                       } else {\r
-                                               updateSentTip("Failed to delete this message!");\r
-                                       }\r
-                               },\r
-                               error: function(msg) {\r
-                                       updateSentTip("Failed to delete this message!");\r
-                               }\r
-                       });\r
+//message function\r
+$(function () {\r
+       formFunc();\r
+       var temp = [];\r
+       var auto = [];\r
+       $("a.user_name").each(function(){\r
+               var u = this.text;\r
+               if (!(u in temp)) {\r
+                       temp[u] = true;\r
+                       auto.push(u);\r
                }\r
        });\r
+       $("#sent_id").autocomplete(auto);\r
+       $("#allMessage").click(function(e) {\r
+               var $this = $(e.target);\r
+               var type = $this.attr('class');\r
+               switch(type) {\r
+                       case 'msg_replie_btn':\r
+                               e.preventDefault();\r
+                               $("#sent_id").val($this.parent().parent().find(".status_word").find(".user_name").text());\r
+                               $("#textbox").focus();\r
+                               break;\r
+                       case 'msg_delete_btn':\r
+                               e.preventDefault();\r
+                               var message_id = $.trim($this.parent().parent().find(".status_id").text());\r
+                               var confirm = window.confirm("Are you sure to delete this message?");\r
 \r
-       $(".msg_replie_btn").click(function(e){\r
-               e.preventDefault();\r
-               $("#sent_id").val($(this).parent().parent().find(".status_word").find(".user_name").text());\r
-               $("#textbox").focus();\r
+                               if (confirm) {\r
+                                       updateSentTip("Deleting message...", 5000, "ing");\r
+                                       $.ajax({\r
+                                               url: "ajax/delete.php",\r
+                                               type: "POST",\r
+                                               data: "message_id=" + message_id,\r
+                                               success: function(msg) {\r
+                                                       if (msg.indexOf("success") >= 0) {\r
+                                                               $this.parent().parent().parent().remove();\r
+                                                               updateSentTip("Message deleted.", 3000, "success");\r
+                                                       } else {\r
+                                                               updateSentTip("Failed to delete this message!", 3000, "failure");\r
+                                                       }\r
+                                               },\r
+                                               error: function(msg) {\r
+                                                       updateSentTip("Failed to delete this message!", 3000, "failure");\r
+                                               }\r
+                                       });\r
+                               }\r
+                               break;\r
+               }\r
        });\r
-});\r
+});
\ No newline at end of file
index d09f073..3a6ad4d 100644 (file)
-var UPDATE_INTERVAL;\r
-var PAUSE_UPDATE = false;\r
-var PAUSE_TIMELINE = false;\r
-function register() {\r
-       window.open("signup/index.php", "registerwindow", "height=450, width=550, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=yes, status=yes")\r
-};\r
-function oauth() {\r
-       var wtfgfw = window.confirm("Please make sure your proxy is ready to visit Twitter.com before authenticating.");\r
-       if (wtfgfw) {\r
-               window.location.href = "oauth.php"\r
-       }\r
-};\r
-function leaveWord(num) {\r
-       if(!num){\r
-               num = 140;\r
-       }\r
-       var leave = num-$("#textbox").val().length;\r
-       if (leave < 0) {\r
-               $("#tip").css("color","#CC0000");\r
-               $("#tip b").css("color","#CC0000");\r
-               $("#tip").html("<b>-" + (-leave) + "</b>");\r
-               $("#tweeting_button").addClass('btn-disabled');\r
-       } else {\r
-               $("#tip").css("color","#CCCCCC");\r
-               $("#tip b").css("color","#CCCCCC");\r
-               $("#tip").html("<b>" + leave + "</b>");\r
-               $("#tweeting_button").removeClass('btn-disabled');\r
-       }\r
-       if(leave === 140) {\r
-               $("#in_reply_to").val("");\r
-               $("#tweeting_button").addClass('btn-disabled');\r
-       }\r
-}\r
-var formHTML = '<span id="tip"><b>140</b></span><form action="index.php" method="post">';\r
-formHTML += '<textarea name="status" id="textbox"></textarea>';\r
-formHTML += '<input type="hidden" id="in_reply_to" name="in_reply_to" value="0" />';\r
-formHTML += '<input type="submit" id="submit_btn" value="update" /></form>';\r
-function rabrTweet(objs) {\r
-       if(typeof objs === 'undefined'){\r
-               var objs = $('#statuses .timeline .source a');\r
-       }else{\r
-               var objs = objs.find('.source a');\r
-       }\r
-       for (i = 0; i < objs.length; i++) {\r
-               if (/rabr/i.test($(objs[i]).text())) {\r
-                       $(objs[i]).css("color", "#33CCFF");\r
-               }\r
-       }\r
-}\r
-var getConversation = function (obj) {\r
-       var url = $(obj).attr("href");\r
-       var target = $(obj).parent().parent().parent().parent();\r
-       $.ajax({\r
-                       url: url,\r
-                       type: "GET",\r
-                       dataType: "text",\r
-                       success: function(msg){\r
-                               if ($.trim(msg).indexOf("</li>") > 0) {\r
-                                       $(msg).appendTo(target);\r
-                               }else{\r
-                                       updateSentTip('Get thread failed.', 5000, 'failure');\r
-                               }\r
-                               target.removeClass("loading");\r
-                       },\r
-                       error: function(msg){\r
-                               updateSentTip('Get thread failed.', 5000, 'failure');\r
-                               target.removeClass("loading");\r
-                       }\r
-               });\r
-}\r
-$(function () {\r
-               $(".ajax_reply").live("click", function (e) {\r
-                               var obj = $(this).parent().parent().parent().parent();\r
-                               var thread = obj.find(".ajax_form");\r
-                               if (thread.size() > 0) {\r
-                                       thread.slideToggle("fast");\r
-                               } else {\r
-                                       obj.addClass("loading");\r
-                                       getConversation($(this));\r
-                               }\r
-                               e.preventDefault();\r
-                       });\r
-       });\r
-$(function(){\r
-               $("#statuses .trans_btn").live("click", function(){\r
-                               var tBody = $(this).parent().parent();\r
-                               if(tBody.find(".trans_body").size() !== 0){\r
-                                       return;\r
-                               }\r
-                               var id = $.trim(tBody.find('.status_id').text());\r
-                               var text = $.trim(tBody.find('.tweet').text());\r
-                               var lang = $.cookie('transLang');\r
-                               if(lang === null){\r
-                                       lang = 'zh';\r
-                               }\r
-                               tBody.parent().addClass('loading');\r
-                               translate(text, id, lang, 'transCallback');\r
-                       });\r
-               $("#statuses .trans_close").live("click", function(){\r
-                               $(this).parent().parent().parent().parent().find(".translated").remove();\r
-                       });\r
-               $("#translateMy").live("click", function(){\r
-                               var orig = $("#textbox").val();\r
-                                       ORIG_TEXT = orig;\r
-                               var lang = $.cookie('myLangs')\r
-                               if(lang === null){\r
-                                       lang = 'en';\r
-                               }\r
-                               $('#tip').addClass('loading');\r
-                               translate(orig, '', lang, 'transMyCallback');\r
-                       });\r
-               $("#transRecover").live("click", function(){\r
-                       $("#textbox").val(ORIG_TEXT);\r
-                       $("#transRecover").fadeOut('fast');\r
-                       });\r
-       });\r
-var translate = function(text, context, lang, callback) {\r
-       var a = "http://www.google.com/uds/Gtranslate";\r
-       a += "?callback=" + callback;\r
-       a += "&context=" + context;\r
-       a += "&q=" + encodeURIComponent(text);\r
-       a += "&key=notsupplied";\r
-       a += "&v=1.0";\r
-       a += "&nocache=1240207680396";\r
-       a += "&langpair=%7C" + lang;\r
-       $.getScript(a);\r
-};\r
-var transMyCallback = function(content, translation){\r
-       if(translation.translatedText !== null){\r
-               $('#tip').removeClass('loading');\r
-               $("#transArea").hide();\r
-               $("#textbox").val(translation.translatedText);\r
-               $("#transRecover").fadeIn('fast');\r
-       }\r
-};\r
-var transCallback = function(content, translation){\r
-       if(translation.translatedText !== null){\r
-               var lang = $.cookie('transLang')\r
-               if(lang === null){\r
-                       lang = 'zh';\r
-               }\r
-               var langTxt = $.cookie('fullLang');\r
-               if(langTxt === null){\r
-                       langTxt = $('#transArea select[name=langs] option[value=' + lang + ']').text();\r
-               }\r
-               var html = '<div class="translated"><a href="javascript:void(0);" title="Hide Translation" class="trans_close">(Hide)</a><span class="trans_header"><strong>Translation <small>(from ' + translation.detectedSourceLanguage;\r
-               html += ' to ' + langTxt + ')</small> : </strong></span>';\r
-               html += '<span class="trans_body">' + translation.translatedText + '</span></div>';\r
-               var li, target;\r
-               if(typeof INTERVAL_COOKIE !== 'undefined'){\r
-                       li = $("#statuses ol:visible li:has(.status_id)").filter(":contains(" + content + ")");\r
-                       target = li.find(".status_word:first");\r
-               }else{\r
-                       li = $("#statuses li:has(.status_id)").filter(":contains(" + content + ")");\r
-                       target = li.find(".status_word:first");\r
-               }\r
-               $(html).appendTo(target);\r
-               li.removeClass("loading");\r
-       }\r
-};\r
-$(window).load(function(){\r
-               var scrollTo = function (top, duration, callback) {\r
-                       var w = $(window);\r
-                       var FPS = 50;\r
-                       var currentTop = w.scrollTop();\r
-                       var offset = (currentTop - top) / (duration * FPS / 1000);\r
-                       var n = 0;\r
-                       var prevTop = currentTop;\r
-                       var t = setInterval(function () {\r
-                                       if ((prevTop - top) * (currentTop - top) <= 0) {\r
-                                               clearInterval(t);\r
-                                               currentTop = prevTop = top;\r
-                                               w.scrollTop(top);\r
-                                               if (callback) callback();\r
-                                       } else {\r
-                                               prevTop = currentTop;\r
-                                               w.scrollTop(currentTop -= offset);\r
-                                       }\r
-                               }, 1000 / FPS);\r
-               }\r
-               var scrollToTop = function(){\r
-                       scrollTo(0, 200, function () {\r
-                                       scrollTo(30, 50, function () {\r
-                                                       scrollTo(0, 50);\r
-                                               });\r
-                               });\r
-               };\r
-               var scrollToBottom = function(){\r
-                       var height = document.body.clientHeight;\r
-                       scrollTo(height, 200, function () {\r
-                                       scrollTo(height + 30, 50, function () {\r
-                                                       scrollTo(height, 50);\r
-                                               });\r
-                               });\r
-\r
-               };\r
-               $('body').dblclick(function () {\r
-                               scrollToTop();\r
-                               $("#textbox").focus();\r
-                       });\r
-               $('#content').dblclick(function (e) {\r
-                               e.stopPropagation();\r
-                       });\r
-               var hkFadeIn = function(text){\r
-                       $("#shortcutTip").fadeIn("fast").html(text);\r
-               };\r
-               var hkFadeOut = function(){\r
-                       setTimeout(function () {$("#shortcutTip").fadeOut("fast");}, 2000);\r
-               };\r
-               // hotkeys\r
-               var hotkeyHandler = function(code){\r
-                       switch(code){\r
-                       case 82: // R - refresh\r
-                               hkFadeIn("Refresh");\r
-                               update();\r
-                               hkFadeOut();\r
-                               break;\r
-                       case 67: // C - focus textbox\r
-                       case 85: // U\r
-                               hkFadeIn("Compose");\r
-                               scrollTo(0, 1, function () {\r
-                                               $("#textbox").focus();\r
-                                       });\r
-                               hkFadeOut();\r
-                               break;\r
-                       case 66: // B - scroll to bottom\r
-                               hkFadeIn("Boom!");\r
-                               scrollToBottom();\r
-                               hkFadeOut();\r
-                               break;\r
-                       case 84: // T - scroll to top\r
-                               hkFadeIn("Whiz!");\r
-                               scrollToTop();\r
-                               hkFadeOut();\r
-                               break;\r
-                       case 83: // S - search\r
-                               hkFadeIn("Search");\r
-                               $("#sidepost").animate({backgroundColor: "#FF6347"}, 500, function(){\r
-                                               $("#header_search_query").focus();\r
-                                               $("#sidepost").animate({backgroundColor: $("#side_base").css("background-color")}, 1000);\r
-                                       });\r
-                               hkFadeOut();\r
-                               break;\r
-                       }\r
-               };\r
-               $(document).keydown(function(e){\r
-                               var tag = e.target.tagName;\r
-                               if(tag === "BODY" || tag === "HTML"){\r
-                                       if(!e.altKey && !e.shiftKey && !e.ctrlKey && !e.metaKey){\r
-                                               hotkeyHandler(e.keyCode);\r
-                                       }\r
-                               }\r
-                       });\r
-       });\r
-$(document).ready(function () {\r
-               $("<div id='sentTip' style='display:none;' />").prependTo("#header .wrapper");\r
-       });\r
-var updateSentTip = function(message, duration, className){\r
-       var sentTip = $("#sentTip");\r
-       var bgColor = $("body").css("background-color");\r
-       sentTip.html(message).removeClass().addClass(className);\r
-       sentTip.css({\r
-                       "border-style": "solid",\r
-                       "border-width": "1px",\r
-                       "border-color": bgColor\r
-               });\r
-       sentTip.slideDown("fast");\r
-       window.setTimeout(function () {\r
-                       sentTip.slideUp('fast');\r
-               }, duration);\r
-       return sentTip;\r
-};\r
-var formFunc = function(){\r
-       leaveWord();\r
-       $("#textbox").keyup(function () {\r
-                       leaveWord();\r
-               }).bind("keyup", "keydown", function(event){\r
-                               if (event.ctrlKey && event.keyCode == 13) {\r
-                                       if (PAUSE_UPDATE !== true) {\r
-                                               updateStatus();\r
-                                       } else {\r
-                                               return 0;\r
-                                       }\r
-                               }\r
-                       });\r
-       };\r
-       //update button core\r
-       $(function () {\r
-                       $("#tweeting_button").click(function (e) {\r
-                                       e.preventDefault();\r
-                                       if ($("#textbox").val().length >0 ) {\r
-                                               updateStatus();\r
-                                       }               \r
-                               });\r
-               });\r
-       var updateStatus = function(){\r
-               $('#tip').addClass('loading');\r
-               PAUSE_UPDATE = true;\r
-               var text = $("#textbox").val();\r
-               var wordsCount = $("#textbox").val().length;\r
-               if (wordsCount > 140) {\r
-                       updateSentTip("Your tweet is more than 140 words!", 3000, "failure");\r
-                       return false;\r
-               } else if (wordsCount = 0) {\r
-                       updateSentTip("Your cannot send an empty tweet!", 3000, "failure");\r
-                       return false;\r
-               } else {\r
-                       $.ajax({\r
-                                       url: "ajax/update.php",\r
-                                       type: "POST",\r
-                                       data: {\r
-                                               "status": text,\r
-                                               "in_reply_to": $("#in_reply_to").val()\r
-                                       },\r
-                                       success: function (msg) {\r
-                                               if ($.trim(msg).indexOf("</li>") > 0) {\r
-                                                       $.cookie('recover', text, {'expire': 30});\r
-                                                       $('#tip').removeClass('loading');\r
-                                                       updateSentTip("Your status has been updated!", 3000, "success");\r
-                                                       $("#textbox").val("");\r
-                                                       $("#tip").html("<b>140</b>");\r
-                                                       leaveWord();\r
-                                                       if(typeof INTERVAL_COOKIE !== "undefined"){\r
-                                                               var source = $(msg).prependTo($("#allTimeline"));\r
-                                                               source.hide().slideDown('fast');\r
-                                                               var statusid = $.trim($(msg).find('.status_id').text());\r
-                                                               var statusText = $.trim($(msg).find('.tweet').html());\r
-                                                               rabrTweet(source);\r
-                                                               $(".mine").slideDown("fast");\r
-                                                               $("#full_status").fadeIn("fast");\r
-                                                               $("#currently .status-text").hide().text(limitation(text)).fadeIn("fast");\r
-                                                               $("#latest_meta").hide().html("<a target=\"_blank\" href=\"status.php?id=" + statusid + "\">less than 5 seconds ago</a>").fadeIn("fast");\r
-                                                               $("#currently .full-text").hide().html(statusText);\r
-                                                               $("#full_meta").hide().html("<a target=\"_blank\" href=\"status.php?id=" + statusid + "\">less than 5 seconds ago</a>");\r
-                                                               $("#full_meta a, .full-text a").click(function (e) {e.stopPropagation();});\r
-                                                               previewMedia(source);\r
-                                                               freshProfile();\r
-                                                       }\r
-                                               } else {\r
-                                                       $.cookie('recover', text, {'expire': 30});\r
-                                                       $('#tip').removeClass('loading');\r
-                                                       updateSentTip("Update failed. Please try again.", 3000, "failure");\r
-                                                       $('#tweeting_button').removeClass('btn-disabled');\r
-                                               }\r
-                                               PAUSE_UPDATE = false;\r
-                                       },\r
-                                       error: function (msg) {\r
-                                               $.cookie('recover', text, {'expire': 30});\r
-                                               $('#tip').removeClass('loading');\r
-                                               updateSentTip("Update failed. Please try again.", 3000, "failure");\r
-                                               $('#tweeting_button').removeClass('btn-disabled');\r
-                                               PAUSE_UPDATE = false;\r
-                                       }\r
-                               });\r
-               }\r
-       };\r
-       function onFavor($this) {\r
-               var status_id = $.trim($this.parent().parent().find(".status_id").text());\r
-               updateSentTip("Adding this tweet to your favorites...", 5000, "ing");\r
-               $.ajax({\r
-                               url: "ajax/addfavor.php",\r
-                               type: "POST",\r
-                               data: "status_id=" + status_id,\r
-                               success: function (msg) {\r
-                                       if (msg.indexOf("success") >= 0) {\r
-                                               updateSentTip("Favorite added successfully.", 3000, "success");\r
-                                               $this.parent().parent().parent().addClass('faved');\r
-                                       } else {\r
-                                               updateSentTip("Add failed. Please try again.", 3000, "failure");\r
-                                       }\r
-                               },\r
-                               error: function (msg) {\r
-                                       updateSentTip("Add failed. Please try again.", 3000, "failure");\r
-                               }\r
-                       });\r
-       }\r
-       function onReplie($this, e) {\r
-               var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();\r
-               var in_reply_id = $this.parent().parent().find(".status_id").text();\r
-               var text = "@" + replie_id;\r
-               var mode = "In reply to ";\r
-               if (e.ctrlKey) {\r
-                       mode = "Reply to all: ";\r
-                       var temp = {\r
-                               text: true\r
-                       };\r
-                       var mentionArray = [text];\r
-                       var mentions = $this.parent().parent().find('a[href^="user.php"][innerHTML^=@]');\r
-                       $.each(mentions, function () {\r
-                                       var t = $(this).text();\r
-                                       if (!(t in temp)) {\r
-                                               temp[t] = true;\r
-                                               mentionArray.push(t);\r
-                                       }\r
-                                       text = mentionArray.join(' ');\r
-                               });\r
-               }\r
-               if (e.altKey) {\r
-                       mode = "Non-conversational reply to ";\r
-                       in_reply_id = "";\r
-               }\r
-               scroll(0, 0);\r
-               $("#textbox").focus();\r
-               $("#textbox").val($("#textbox").val() + text + ' ');\r
-               $("#in_reply_to").val(in_reply_id);\r
-               $("#full_status").hide();\r
-               $("#latest_meta").html("").hide();\r
-               $("#full_meta").hide();\r
-               $("#currently .full-text").hide();\r
-               $("#latest_meta").hide();\r
-               $("#currently .status-text").html(mode + text);\r
-               leaveWord();\r
-       }\r
-       function onRT($this) {\r
-               var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();\r
-               scroll(0, 0);\r
-               $("#textbox").focus();\r
-               $("#textbox").val("RT @" + replie_id + ":" + $this.parent().parent().find(".status_word").text().replace(replie_id, ""));\r
-               $("#full_status").hide();\r
-               $("#latest_meta").hide();\r
-               $("#full_meta").hide();\r
-               $("#currently .full-text").hide();\r
-               $("#latest_meta").hide();\r
-               $("#currently .status-text").html("Retweet @" + replie_id + "'s tweet with comment.");\r
-               leaveWord();\r
-       }\r
-       function onReplieDM($this, e) {\r
-               var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();\r
-               var text = "D " + replie_id;\r
-               scroll(0, 0);\r
-               $("#textbox").focus();\r
-               $("#textbox").val($("#textbox").val() + text + ' ');\r
-               $("#in_reply_to").val($this.parent().parent().find(".status_id").text());\r
-               $("#full_status").hide();\r
-               $("#latest_meta").hide();\r
-               $("#full_meta").hide();\r
-               $("#currently .full-text").hide();\r
-               $("#latest_meta").hide();\r
-               $("#currently .status-text").html("Reply direct message to @" + replie_id);\r
-               leaveWord();\r
-       }\r
-       function onNwRT($this) {\r
-               var statusBody = $this.parent().parent();\r
-               var status_id = statusBody.find(".status_id").text();\r
-               var div = "#" + statusBody.parent().parent().attr('id');\r
-               var btnDiv = div + "Btn";\r
-               if (confirm("Are you sure to retweet this?")) {\r
-                       updateSentTip("Retweeting tweet...", 5000, "ing");\r
-                       $.ajax({\r
-                                       url: "ajax/retweet.php",\r
-                                       type: "post",\r
-                                       data: "status_id=" + status_id,\r
-                                       success: function (msg) {\r
-                                               if (msg.length >= 0) {\r
-                                                       statusBody.parent().addClass("retweet");\r
-                                                       statusBody.find(".source").hide();\r
-                                                       statusBody.find(".status_info").append("<span class=\"rt_source\">Retweeted by you from <a rel=\"nofollow\" href=\"http://code.google.com/p/rabr/\">rabr</a></span>").fadeIn("fast");\r
-                                                       statusBody.find(".date").hide();\r
-                                                       statusBody.find(".status_info").append("<span class=\"rt_undo\" title=\"Your followers will no longer see the tweet as retweeted by you.\">&nbsp;<a href=\"javascript:void(0);\">(Undo)</a><span class=\"rt_id\" style=\"display: none;\">" + msg + "</span></span>").fadeIn("fast");\r
-                                                       updateSentTip("This tweet has been retweeted!", 3000, "success");\r
-                                                       $(".rt_undo").tipsy({\r
-                                                                       gravity: 's'\r
-                                                               });\r
-                                               } else {\r
-                                                       if (msg === "duplicated") {\r
-                                                               updateSentTip("You have retweeted this tweet!", 3000, "failure");\r
-                                                       } else {\r
-                                                               updateSentTip("Failed to retweet!", 3000, "failure");\r
-                                                       }\r
-                                               }\r
-                                       },\r
-                                       error: function (msg) {\r
-                                               updateSentTip("Retweet failed. Please try again.", 3000, "failure");\r
-                                       }\r
-                               });\r
-               }\r
-       }\r
-       function onDelete($this, type) {\r
-               var status_id = $.trim($this.parent().parent().find(".status_id").text());\r
-               $this.parent().parent().parent().css("background-color", "#FF3300");\r
-               var confirm = window.confirm("Are you sure to delete this tweet?");\r
-               if (confirm) {\r
-                       updateSentTip("Deleting tweet...", 5000, "ing");\r
-                       var postData = (type == "Tweet") ? "status_id=" : "favor_id=";\r
-                       $.ajax({\r
-                                       url: "ajax/delete.php",\r
-                                       type: "POST",\r
-                                       data: postData + status_id,\r
-                                       success: function (msg) {\r
-                                               if (msg.indexOf("success") >= 0) {\r
-                                                       $this.parent().parent().parent().css("background-color", "#FF3300");\r
-                                                       $this.parent().parent().parent().fadeOut("fast");\r
-                                                       updateSentTip("Your tweet has been destroyed!", 3000, "success");\r
-                                               } else {\r
-                                                       $this.parent().parent().parent().css("background-color", "");\r
-                                                       updateSentTip("Delete failed. Please try again.", 3000, "failure");\r
-                                               }\r
-                                       },\r
-                                       error: function (msg) {\r
-                                               $this.parent().parent().parent().css("background-color", "");\r
-                                               updateSentTip("Delete failed. Please try again.", 3000, "failure");\r
-                                       }\r
-                               });\r
-               }\r
-               $this.parent().parent().parent().css("background-color", "");\r
-       }\r
-       function onUndoRt($this) {\r
-               var status_id = $.trim($this.parent().find(".rt_id").text());\r
-               var statusBody = $this.parent().parent().parent();\r
-               statusBody.css("background-color", "#FF3300");\r
-               var confirm = window.confirm("Are you sure to undo this retweet?");\r
-               if (confirm) {\r
-                       updateSentTip("Undoing retweet...", 5000, "ing");\r
-                       $.ajax({\r
-                                       url: "ajax/delete.php",\r
-                                       type: "POST",\r
-                                       data: "status_id=" + status_id,\r
-                                       success: function (msg) {\r
-                                               if (msg.indexOf("success") >= 0) {\r
-                                                       statusBody.css("background-color", "#FF3300");\r
-                                                       statusInfo = $this.parent().parent();\r
-                                                       if (statusInfo.find(".rt_source").size() === 1) {\r
-                                                               statusInfo.find(".source").show();\r
-                                                               statusInfo.find(".date").show();\r
-                                                               statusInfo.find(".rt_source").remove();\r
-                                                               statusInfo.find(".rt_undo").remove();\r
-                                                               statusBody.removeClass("retweet");\r
-                                                               statusBody.css("background-color", "");\r
-                                                       } else {\r
-                                                               statusBody.fadeOut("fast");\r
-                                                       }\r
-                                                       updateSentTip("Your retweet has been undo!", 3000, "success");\r
-                                               } else {\r
-                                                       statusBody.css("background-color", "");\r
-                                                       updateSentTip("Undo failed. Please try again.", 3000, "failure");\r
-                                               }\r
-                                       },\r
-                                       error: function (msg) {\r
-                                               statusBody.css("background-color", "");\r
-                                               updateSentTip("Undo failed. Please try again.", 3000, "failure");\r
-                                       }\r
-                               });\r
-               }\r
-               statusBody.css("background-color", "");\r
-       }\r
-       function onDeleteMsg($this) {\r
-               var message_id = $.trim($this.parent().parent().find(".status_id").text());\r
-               $this.parent().parent().parent().css("background-color", "#FF3300");\r
-               var confirm = window.confirm("Are you sure to delete this message?");\r
-               if (confirm) {\r
-                       updateSentTip("Deleting message...", 5000, "ing");\r
-                       $.ajax({\r
-                                       url: "ajax/delete.php",\r
-                                       type: "POST",\r
-                                       data: "message_id=" + message_id,\r
-                                       success: function (msg) {\r
-                                               if (msg.indexOf("success") >= 0) {\r
-                                                       $this.parent().parent().parent().css("background-color", "#FF3300");\r
-                                                       $this.parent().parent().parent().fadeOut("fast");\r
-                                                       updateSentTip("Message deleted.", 3000, "success");\r
-                                               } else {\r
-                                                       $this.parent().parent().parent().css("background-color", "");\r
-                                                       updateSentTip("Failed to delete this message!", 3000, "failure");\r
-                                               }\r
-                                       },\r
-                                       error: function (msg) {\r
-                                               $this.parent().parent().parent().css("background-color", "");\r
-                                               updateSentTip("Failed to delete this message!", 3000, "failure");\r
-                                       }\r
-                               });\r
-               }\r
-               $this.parent().parent().parent().css("background-color", "");\r
-       }\r
-       function shortUrlDisplay() {\r
-               var stringVar = "";\r
-               stringVar = document.getElementById("textbox").value;\r
-               if (stringVar.length === 0) {\r
-                       updateSentTip("There's no URL in your tweet to shorten!", 3000, "failure");\r
-               } else {\r
-                       var str = '';\r
-                       var regexp = /http(s)?:\/\/([\w\-]+\.)+[\w\-]+(\/[\w\-\.\/?\%\!\&=\+\~\:\#\;\,]*)?/ig;\r
-                       var l_urls = '';\r
-                       str = stringVar.match(regexp);\r
-                       if (str !== null) {\r
-                               for (idx = 0; idx < str.length; idx++) {\r
-                                       regexp2 = /(http:\/\/j.mp\/[\S]+)|(http:\/\/bit.ly\/[\S]+)|(http:\/\/zi.mu\/[\S]+)|(http:\/\/orz.se\/[\S]+)/gi;\r
-                                       match_short = str[idx].match(regexp2);\r
-                                       if (!match_short) {\r
-                                               l_urls += str[idx] + "|"\r
-                                       }\r
-                                       match_short = null;\r
-                                       updateSentTip("No valid URLs!", 3000, "failure");\r
-                               }\r
-                               if (l_urls != "") {\r
-                                       $('#tip').addClass('loading');\r
-                                       $.post("ajax/shorturl.php", {\r
-                                                       long_urls: l_urls\r
-                                               }, function (data) {\r
-                                                       getShortUrl(data);\r
-                                               });\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       function getShortUrl(res) {\r
-               var retstr = res;\r
-               target_layer = 'textbox';\r
-               var url_arry, s_url, l_url, part;\r
-               var err_cnt = 0;\r
-               url_arry = retstr.split('^');\r
-               for (i = 0; i < url_arry.length; i++) {\r
-                       part = url_arry[i].split('|');\r
-                       if (part.length == 2) {\r
-                               s_url = part[0];\r
-                               l_url = part[1];\r
-                       }\r
-                       if (s_url.indexOf('http://zi.mu') > -1) {\r
-                               stringVar = document.getElementById(target_layer).value;\r
-                               stringVar = stringVar.replace(l_url, s_url);\r
-                               document.getElementById(target_layer).value = stringVar + "";\r
-                               leaveWord();\r
-                               $('#tip').removeClass('loading');\r
-                               updateSentTip("Successfully shortened your URLs!", 3000, "success");\r
-                       }\r
-                       else if (s_url.length > 0) {\r
-                               err_cnt++;\r
-                       }\r
-               }\r
-               if (err_cnt < 0) {\r
-                       updateSentTip("Failed to shorten URLs, please try again.", 3000, "failure");\r
-               }\r
-       }\r
-\r
-       function shortenTweet() {\r
-               var tweet = $.trim($("#textbox").val());\r
-               if (tweet.length === 0) {\r
-                       updateSentTip("There's nothing to shorten!", 3000, "failure");\r
-               } else {\r
-                       $('#tip').addClass('loading');\r
-                       $.ajax({\r
-                                       url: "ajax/shortenTweet.php",\r
-                                       type: "POST",\r
-                                       data: "text=" + tweet,\r
-                                       success: function(msg){\r
-                                               if(msg !== 'error'){\r
-                                                       $("#textbox").val(msg);\r
-                                                       leaveWord();\r
-                                                       $('#tip').removeClass('loading');\r
-                                                       updateSentTip("Your tweet has been shortened!", 5000, "success");\r
-                                               }else{\r
-                                                       updateSentTip("Failed to shorten your tweet.", 5000, "failure");\r
-                                               }\r
-                                       },\r
-                                       error: function(msg){\r
-                                               updateSentTip("Failed to shorten your tweet.", 5000, "failure");\r
-                                       }\r
-                               });\r
-                       /* JSON FAILS!\r
-                        $.getJSON("http://tweetshrink.com/shrink?text=" + tweet, function(data){\r
-                        $("#textbox").val(data.text);\r
-                        leaveWord();\r
-                        updateSentTip("Reduced " + data.difference + " letters!" , 5000, "success");\r
-                });\r
-                */\r
-               }\r
-       }\r
-       $(function () {\r
-                       $("#latest_status").toggle(\r
-                               function () {\r
-                                       $("#currently .status-text, #latest_meta").css("display", "none");\r
-                                       $("#currently .full-text, #full_meta").css("display", "inline");\r
-                               }, function () {\r
-                                       $("#currently .status-text, #latest_meta").css("display", "inline");\r
-                                       $("#currently .full-text, #full_meta").css("display", "none");\r
-                               });\r
-                       $("#full_meta a, .full-text a").click(function (e) {\r
-                                       e.stopPropagation();\r
-                               });\r
-               });\r
-       var limitation = function (text) {\r
-               if (text.length > 60) {\r
-                       text = text.substr(0, 60) + " ...";\r
-               }\r
-               return text;\r
-       };\r
-       $(function () {\r
-                       if (document.location.href.indexOf("index") > 0 || document.location.href.indexOf("all") > 0) {\r
-                               var temp = $("#currently .status-text").text();\r
-                               if (temp.length > 60) {\r
-                                       temp = temp.substr(0, 60) + " ...";\r
-                               }\r
-                               $("#currently .status-text").text(temp);\r
-                       }\r
-               });\r
-       function updateTrends() {\r
-               $.ajax({\r
-                               url: "ajax/updateTrends.php",\r
-                               type: "GET",\r
-                               success: function (msg) {\r
-                                       if ($.trim(msg).indexOf("</ul>" > 0)) {\r
-                                               $("#trend_entries").html(msg);\r
-                                       }\r
-                                       $("#trends_title").removeClass().addClass("open");\r
-                                       $("#trend_entries").slideDown("fast");\r
-                               }\r
-                       });\r
-       }\r
-       $(function () {\r
-                       $("#trends_title").toggle(\r
-                               function () {\r
-                                       $("#trends_title").removeClass().addClass("loading");\r
-                                       updateTrends();\r
-                               }, function () {\r
-                                       $("#trend_entries").slideUp("fast");\r
-                                       $("#trends_title").removeClass();\r
-                               });\r
-               });\r
-       function updateFollowing() {\r
-               $.ajax({\r
-                               url: "ajax/updateFollowing.php",\r
-                               type: "GET",\r
-                               success: function (msg) {\r
-                                       if ($.trim(msg).indexOf("</span>" > 0)) {\r
-                                               $("#following_list").html(msg);\r
-                                       }\r
-                                       $("#following_title").removeClass().addClass("open");\r
-                                       $("#following_list").slideDown("fast");\r
-                               }\r
-                       });\r
-       }\r
-       $(function () {\r
-                       $("#following_title").toggle(\r
-                               function () {\r
-                                       $("#following_title").removeClass().addClass("loading");\r
-                                       updateFollowing();\r
-                               }, function () {\r
-                                       $("#following_list").slideUp("fast");\r
-                                       $("#following_title").removeClass();\r
-                               });\r
-               });\r
-       $(function () {\r
-                       $("#toolbox_title").toggle(\r
-                               function () {\r
-                                       $("#toolbox_title").removeClass().addClass("open");\r
-                                       $("#tools_list").slideDown("fast");\r
-                               }, function () {\r
-                                       $("#tools_list").slideUp("fast");\r
-                                       $("#toolbox_title").removeClass();\r
-                               });\r
-               });\r
-       $(function () {\r
-                       $(".status_author img, .rank_img img").live("click", function (e) {\r
-                                       $(".right_menu").hide();\r
-                                       $(this).parent().parent().find(".right_menu").css("display", "block");\r
-                                       e.preventDefault();\r
-                               });\r
-                       $('body').click(function () {\r
-                                       $(".right_menu").hide();\r
-                               });\r
-                       $('.status_author li a').click(function () {\r
-                                       $(".right_menu").hide();\r
-                               });\r
-                       $(".rm_mention").live("click", function (e) {\r
-                                       e.preventDefault();\r
-                                       rmmention($(this), e);\r
-                               });\r
-                       $(".rm_dm").live("click", function (e) {\r
-                                       e.preventDefault();\r
-                                       rmdm($(this), e);\r
-                               });\r
-                       $(".rm_follow").live("click", function (e) {\r
-                                       e.preventDefault();\r
-                                       var $this = $(this);\r
-                                       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-                                       updateSentTip("Following " + id + "...", 5000, "ing");\r
-                                       $.ajax({\r
-                                                       url: "ajax/relation.php",\r
-                                                       type: "POST",\r
-                                                       data: "action=create&id=" + id,\r
-                                                       success: function (msg) {\r
-                                                               if (msg.indexOf("success") >= 0) {\r
-                                                                       updateSentTip("You have followed " + id + "!", 3000, "success");\r
-                                                               } else {\r
-                                                                       updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                                                               }\r
-                                                       },\r
-                                                       error: function (msg) {\r
-                                                               updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                                                       }\r
-                                               });\r
-                               });\r
-                       $(".rm_unfollow").live("click", function (e) {\r
-                                       e.preventDefault();\r
-                                       var $this = $(this);\r
-                                       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-                                       if (confirm("Are you sure to unfollow " + id + " ?")) {\r
-                                               updateSentTip("Unfollowing " + id + "...", 5000, "ing");\r
-                                               $.ajax({\r
-                                                               url: "ajax/relation.php",\r
-                                                               type: "POST",\r
-                                                               data: "action=destory&id=" + id,\r
-                                                               success: function (msg) {\r
-                                                                       if (msg.indexOf("success") >= 0) {\r
-                                                                               updateSentTip("You have unfollowed " + id + "!", 3000, "success");\r
-                                                                       } else {\r
-                                                                               updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");\r
-                                                                       }\r
-                                                               },\r
-                                                               error: function (msg) {\r
-                                                                       updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");\r
-                                                               }\r
-                                                       });\r
-                                       }\r
-                               });\r
-                       $(".rm_block").live("click", function (e) {\r
-                                       e.preventDefault();\r
-                                       var $this = $(this);\r
-                                       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-                                       if (confirm("Are you sure to block " + id + " ?")) {\r
-                                               updateSentTip("Blocking " + id + "...", 5000, "ing");\r
-                                               $.ajax({\r
-                                                               url: "ajax/relation.php",\r
-                                                               type: "POST",\r
-                                                               data: "action=block&id=" + id,\r
-                                                               success: function (msg) {\r
-                                                                       if (msg.indexOf("success") >= 0) {\r
-                                                                               updateSentTip("You have blocked " + id + "!", 3000, "success");\r
-                                                                       } else {\r
-                                                                               updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");\r
-                                                                       }\r
-                                                               },\r
-                                                               error: function (msg) {\r
-                                                                       updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");\r
-                                                               }\r
-                                                       });\r
-                                       }\r
-                               });\r
-               })\r
-       $(".rm_spam").live("click", function (e) {\r
-                       e.preventDefault();\r
-                       var $this = $(this);\r
-                       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-                       if (confirm("Are you sure to report " + id + " ?")) {\r
-                               updateSentTip("Reporting " + id + " as a spammer...", 5000, "ing");\r
-                               $.ajax({\r
-                                               url: "ajax/reportSpam.php",\r
-                                               type: "POST",\r
-                                               data: "spammer=" + id,\r
-                                               success: function (msg) {\r
-                                                       if (msg.indexOf("success") >= 0) {\r
-                                                               updateSentTip("Successfully reported!", 3000, "success");\r
-                                                       } else {\r
-                                                               updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");\r
-                                                       }\r
-                                               },\r
-                                               error: function (msg) {\r
-                                                       updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");\r
-                                               }\r
-                                       });\r
-                       }\r
-               });\r
-       function rmmention($this, e) {\r
-               var replie_id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-               var in_reply_id = $this.parent().parent().parent().find(".status_id").text();\r
-               var text = "@" + replie_id;\r
-               var mode = "In reply to ";\r
-               scroll(0, 0);\r
-               $("#textbox").focus();\r
-               $("#textbox").val($("#textbox").val() + text + ' ');\r
-               $("#in_reply_to").val(in_reply_id);\r
-               $("#full_status").hide();\r
-               $("#latest_meta").html("").hide();\r
-               $("#full_meta").hide();\r
-               $("#currently .full-text").hide();\r
-               $("#latest_meta").hide();\r
-               $("#currently .status-text").html(mode + text);\r
-               leaveWord();\r
-       }\r
-       function rmdm($this, e) {\r
-               var replie_id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();\r
-               var text = "D " + replie_id;\r
-               scroll(0, 0);\r
-               $("#textbox").focus();\r
-               $("#textbox").val($("#textbox").val() + text + ' ');\r
-               $("#in_reply_to").val($this.parent().parent().parent().find(".status_id").text());\r
-               $("#full_status").hide();\r
-               $("#latest_meta").hide();\r
-               $("#full_meta").hide();\r
-               $("#currently .full-text").hide();\r
-               $("#latest_meta").hide();\r
-               $("#currently .status-text").html("Reply direct message to @" + replie_id);\r
-               leaveWord();\r
-       }\r
-       function sidebarFollow(id) {\r
-               updateSentTip("Following " + id + "...", 5000, "ing");\r
-               $.ajax({\r
-                               url: "ajax/relation.php",\r
-                               type: "POST",\r
-                               data: "action=create&id=" + id,\r
-                               success: function (msg) {\r
-                                       if (msg.indexOf("success") >= 0) {\r
-                                               updateSentTip("You have followed " + id + "!", 3000, "success");\r
-                                               $.cookie('followus', 1, {\r
-                                                               expire: 30\r
-                                                       });\r
-                                               $.cookie('whofollowedus', $("#sideid").html(), {\r
-                                                               expire: 30\r
-                                                       });\r
-                                               $("#follow_us").fadeOut("fast");\r
-                                       } else {\r
-                                               updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                                       }\r
-                               },\r
-                               error: function (msg) {\r
-                                       updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                               }\r
-                       });\r
-       };\r
-       $(function () {\r
-                       $('#fl_ds').click(function (e) {\r
-                                       e.preventDefault();\r
-                                       if (confirm("Are you sure to follow @disinfeqt?")) {\r
-                                               sidebarFollow("disinfeqt");\r
-                                       }\r
-                               });\r
-                       $('#fl_ys').click(function (e) {\r
-                                       e.preventDefault();\r
-                                       if (confirm("Are you sure to follow @Chris_Ys?")) {\r
-                                               sidebarFollow("chris_ys");\r
-                                       }\r
-                               });\r
-               })\r
-       //sidebar shortcuts tips\r
-       $(function () {\r
-                       $("#sidebarTip").toggle(\r
-                               function () {\r
-                                       $('#sidebarTip_more').slideDown('fast');\r
-                                       $('#indicator').html('[-]');\r
-                               }, function () {\r
-                                       $('#sidebarTip_more').slideUp('fast');\r
-                                       $('#indicator').html('[+]');\r
-                               });\r
-               });\r
-       //init global functions\r
-       $(document).ready(function () {\r
-                       rabrTweet();\r
-                       $("#statuses .mine").live("mouseout", function (e) {\r
-                                       $(this).removeClass("mine").addClass("myTweet");\r
-                               });\r
-                       $("#primary_nav li a").bind("click", function () {\r
-                                       $("#primary_nav li a").each(function (i, o) {\r
-                                                       if ($(this).hasClass("active")) {\r
-                                                               $(this).removeClass()\r
-                                                       }\r
-                                               });\r
-                                       $(this).removeClass().addClass("active").css("background", "transparent url('../img/spinner.gif') no-repeat scroll 173px center")\r
-                               });\r
-                       $("#statuses .big-retweet-icon, #func_set .func_btn").tipsy({\r
-                                       gravity: 's'\r
-                               });\r
-                       $('#symbols span').tipsy({\r
-                                       gravity: $.fn.tipsy.autoNS\r
-                               });\r
-                       if ($.cookie('followus') == 1 && $.cookie('whofollowedus') == $("#sideid").html()) {\r
-                               $("#follow_us").hide();\r
-                       }\r
-                       $(".timeline img").lazyload({threshold : 100, effect : "fadeIn"});\r
-               });\r
-       var freshProfile = function(){\r
-               $('#update_count').text($.cookie('statuses_count'));\r
-               $('#user_stats a[href*=friends] span.count').text(parseInt($.cookie('friends_count')));\r
-               $('#user_stats a[href*=followers] span.count').text(parseInt($.cookie('followers_count')));\r
-               $('#user_stats a[href*=lists] span.count').text(parseInt($.cookie('listed_count')));\r
-       };\r
-       var markReply = function(obj){\r
-               obj.each(function (i, o) {\r
-                               if ($(this).find("> span").find('.tweet').text().toLowerCase().indexOf("@" + $("#sideid").text().toLowerCase()) > -1) {\r
-                                       $(this).addClass("reply");\r
-                               }\r
-                       });\r
-       };
\ No newline at end of file
+var UPDATE_INTERVAL;
+var PAUSE_UPDATE = false;
+var PAUSE_TIMELINE = false;
+//form function
+function updateSentTip(message,duration,className){
+       var sentTip = $("#sentTip");
+       var bgColor = $("body").css("background-color");
+       sentTip.html(message).removeClass().addClass(className)
+               .css({
+                       "border-style": "solid",
+                       "border-width": "1px",
+                       "border-color": "transparent"
+               }).slideDown("fast");
+       setTimeout(function (){
+                       sentTip.slideUp('fast');
+               },duration);
+       return sentTip;
+};
+function leaveWord(num){
+       if(!num){
+               num = 140;
+       }
+       var leave = num-$("#textbox").val().length;
+       var sent_id = $("#sent_id").val();
+       var $tb = $("#tip b");
+       if (sent_id){
+               leave -= sent_id.length+3;
+       }
+       if (leave < 0){
+               $tb.text(leave).css("color","#C00");
+               $("#tweeting_button").addClass('btn-disabled');
+       }else{
+               $tb.text(leave);
+               $("#tweeting_button").removeClass('btn-disabled');
+               if (leave > 40){
+                       $tb.css("color","#CCC");
+               }else if(leave > 20){
+                       $tb.css("color","#CAA");
+               }else if(leave > 10){
+                       $tb.css("color","#C88");
+               }else{
+                       $tb.css("color","#C44");
+               }
+       }
+       if(leave === 140){
+               $("#in_reply_to").val("");
+               $("#tweeting_button").addClass('btn-disabled');
+       }
+}
+var formHTML = '<span id="tip"><b>140</b></span><form action="index.php" method="post"><textarea name="status" id="textbox"></textarea><input type="hidden" id="in_reply_to" name="in_reply_to" value="0" /><div id="tweeting_controls"><a class="a-btn a-btn-m btn-disabled" id="tweeting_button" tabindex="2" href="#" title="Ctrl/⌘+Enter also works!"><span>Send</span></a></div></form>';
+
+var embrTweet=function(objs){
+       if(typeof objs === 'undefined'){
+               var objs = $('#statuses .timeline .source a');
+       }else{
+               var objs = objs.find('.source a');
+       }
+       objs.each(function (){
+               var $this = $(this);
+               if (/embr/i.test($this.text())) $this.addClass('embr');
+       });
+       if($("span.date a").length > 0){
+               $("span.date a,#latest_meta a,#full_meta a").timeago();
+       }else{
+               $("span.date,#latest_meta a,#full_meta a").timeago();
+       }
+}
+var formFunc = function(){
+       leaveWord();
+       $("#textbox").keyup(function (e){
+                       leaveWord();
+                       $(e.target).unbind('keydown');
+                       if ((e.ctrlKey || e.metaKey) && e.which == 13){
+                               if (PAUSE_UPDATE !== true){
+                                       updateStatus();
+                               }else{
+                                       return 0;
+                               }
+                       }else{
+                               if($.inArray(e.which,[91,93,224,17]) > -1){
+                                       $(e.target).keydown(function(e){
+                                               if(e.which == 13){
+                                                       if (PAUSE_UPDATE !== true){
+                                                               updateStatus();
+                                                       }else{
+                                                               return 0;
+                                                       }
+                                                       e.stopPropagation();
+                                               }
+                                       });
+                               }
+                       }
+               });
+       $("#tweeting_button").click(function (e){
+               e.preventDefault();
+               if ($("#textbox").val().length >0 ){
+                       updateStatus();
+               }
+       });             
+};
+       var updateStatus = function(){
+       PAUSE_UPDATE = true;
+       var text = $("#textbox").val();
+       var sent_id = $("#sent_id").val();
+       if(sent_id){
+               text = "D "+sent_id+' '+text; 
+       }
+       var wordsCount = text.length;
+       if (wordsCount > 140){
+               $.cookie('recover',text,{'expire': 30});
+               if(window.confirm("Your tweet is longer than 140 words! truncated? (you can restore later using restore button.)")){
+                       text = text.substr(0,137)+'...' ;
+               }
+       }
+       if (wordsCount == 0 || $.trim(text).length == 0){
+               updateSentTip("Your cannot send an empty tweet!",3e3,"failure");
+               return false;
+       }else{
+               $('#tip').addClass('loading').find('b').css('color','transparent');
+               $.cookie('recover',text,{'expire': 30});
+               $.ajax({
+                       url: "ajax/update.php",
+                       type: "POST",
+                       data:{
+                               "status": text,
+                               "in_reply_to": $("#in_reply_to").val()
+                       },
+                       success: function (msg){
+                               if ($.trim(msg).indexOf("</li>") > 0){
+                                       $('#tip').removeClass('loading').find("b").text("140").show();
+                                       if ( (text.substring(0,2)).toUpperCase() == "D "){ //exclude the DMs. the exam of user_name is omitted.
+                                               updateSentTip("Your DM has been sent!",3e3,"success");
+                                               $("#sent_id,#textbox").val("");
+                                               leaveWord();
+                                       }else{
+                                               updateSentTip("Your status has been updated!",3e3,"success");
+                                               $("#textbox").val("");
+                                               leaveWord();
+                                               if(typeof INTERVAL_COOKIE !== 'undefined'){
+                                                       var source = $(msg).prependTo($("#allTimeline"));
+                                                       source.hide().slideDown('fast');
+                                                       var statusid = $.trim($(msg).find('.status_id').text());
+                                                       var statusText = $.trim($(msg).find('.tweet').html());
+                                                       embrTweet(source);
+                                                       $(".mine").slideDown("fast");
+                                                       $("#full_status").fadeIn("fast");
+                                                       $("#currently .status-text").hide().text(limitation(text)).fadeIn("fast");
+                                                       $("#latest_meta").hide().html("<a target=\"_blank\" href=\"status.php?id="+statusid+"\">less than 5 seconds ago</a>").fadeIn("fast");
+                                                       $("#currently .full-text").hide().html(statusText);
+                                                       $("#full_meta").hide().html("<a target=\"_blank\" href=\"status.php?id="+statusid+"\">less than 5 seconds ago</a>");
+                                                       $("#full_meta a,.full-text a").click(function (e){e.stopPropagation();});
+                                                       previewMedia(source);
+                                                       freshProfile();
+                                               }
+                                       }
+                               }else{
+                                       $('#tip').removeClass('loading');
+                                       leaveWord();
+                                       updateSentTip("Update failed. Please try again.",3e3,"failure");
+                                       $('#tweeting_button').removeClass('btn-disabled');
+                               }
+                               PAUSE_UPDATE = false;
+                       },
+                       error: function (msg){
+                               $('#tip').removeClass('loading');
+                               leaveWord();
+                               updateSentTip("Update failed. Please try again.",3e3,"failure");
+                               $('#tweeting_button').removeClass('btn-disabled');
+                               PAUSE_UPDATE = false;
+                       }
+               });
+       }
+};
+function shortUrlDisplay(){
+       var stringVar = $("#textbox").val();
+       if (stringVar.length === 0){
+               updateSentTip("There's no URL in your tweet to shorten!",3e3,"failure");
+       }else{
+               var str = '';
+               var regexp = /http(s)?:\/\/([\w\-]+\.)+[\w\-]+(\/[\w\-\.\/?\%\!\&=\+\~\:\#\;\,]*)?/ig;
+               var l_urls = '';
+               str = stringVar.match(regexp);
+               if (str !== null){
+                       unshorten = 0;
+                       for (idx = 0; idx < str.length; idx++){
+                               regexp2 = /(http:\/\/j.mp\/[\S]+)|(http:\/\/bit.ly\/[\S]+)|(http:\/\/goo.gl\/[\S]+)|(http:\/\/t.co\/[\S]+)/gi;
+                               if (!str[idx].match(regexp2)){
+                                       l_urls += str[idx]+"|";
+                               }else{
+                                       unshorten++;
+                               }
+                       }
+                       if (unshorten){
+                               updateSentTip(unshorten+" URL(s) are maintained!",3e3,"failure");
+                       }
+                       if (l_urls != ""){
+                               $('#tip').addClass('loading').find('b').css('color','transparent');
+                               $.post("ajax/shorturl.php",{
+                                       long_urls: l_urls
+                                       },function (data){
+                                       getShortUrl(data);
+                               });
+                       }
+               }
+       }
+}
+function getShortUrl(res){
+       var $textbox = $('#textbox');
+       var url_arry,s_url,l_url,part;
+       var err_cnt = 0;
+       url_arry = res.split('^');
+       for (i = 0; i < url_arry.length; i++){
+               part = url_arry[i].split('|');
+               if (part.length == 2){
+                       s_url = part[0];
+                       l_url = part[1];
+               }
+               if (s_url){
+                       $textbox.val($textbox.val().replace(l_url,s_url)+"");
+                       leaveWord();
+                       $('#tip').removeClass('loading');
+                       updateSentTip("Successfully shortened your URLs!",3e3,"success");
+               }       else{
+                       err_cnt++;
+               }
+       }
+       if (err_cnt > 0){
+               updateSentTip("Failed to shorten URLs,please try again.",3e3,"failure");
+       }
+}
+
+function shortenTweet(){
+       var tweet = $.trim($("#textbox").val());
+       if (tweet.length === 0){
+               updateSentTip("There's nothing to shorten!",3e3,"failure");
+       }else{
+               $('#tip').addClass('loading');
+               $.ajax({
+                       url: "ajax/shortenTweet.php",
+                       type: "POST",
+                       data: "text="+tweet,
+                       success: function(msg){
+                               if(msg !== 'error'){
+                                       $("#textbox").val(msg);
+                                       leaveWord();
+                                       $('#tip').removeClass('loading');
+                                       updateSentTip("Your tweet has been shortened!",5e3,"success");
+                               }else{
+                                       updateSentTip("Failed to shorten your tweet.",5e3,"failure");
+                               }
+                       },
+                       error: function(msg){
+                               updateSentTip("Failed to shorten your tweet.",5e3,"failure");
+                       }
+               });
+       }
+}
+$(function (){
+       $("#latest_status").toggle(
+               function (){
+                       $("#currently .status-text,#latest_meta").css("display","none");
+                       $("#currently .full-text,#full_meta").css("display","inline");
+               },function (){
+                       $("#currently .status-text,#latest_meta").css("display","inline");
+                       $("#currently .full-text,#full_meta").css("display","none");
+               });
+       $("#full_meta a,.full-text a").click(function (e){
+               e.stopPropagation();
+       });
+       var $temp = $("#currently .status-text");
+       $temp.text(limitation($temp.text()));
+       $("#translateMy").live("click",function(){
+               var orig = $("#textbox").val();
+                       ORIG_TEXT = orig;
+               var lang = $.cookie('myLangs')
+               if(lang === null){
+                       lang = 'en';
+               }
+               $('#tip').addClass('loading');
+               translate(orig,'',lang,'transMyCallback');
+       });
+});
+var limitation = function (text){
+       if (text.length > 60){
+               text = text.substr(0,60)+" ...";
+       }
+       return text;
+};
+function ajax_reply($this){
+       var $that = $this.parent().parent().parent().parent();
+       var thread = $that.find(".ajax_form");
+       if (thread.length > 0){
+               thread.slideToggle("fast");
+       }else{
+               $that.addClass("loading");
+               $.ajax({
+                       url: $this.attr("href"),
+                       type: "GET",
+                       dataType: "text",
+                       success: function(msg){
+                               $that.removeClass("loading");
+                               if ($.trim(msg).indexOf("</li>") > 0){
+                                       var source = $(msg).appendTo($that);
+                                       embrTweet(source);
+                               }else{
+                                       updateSentTip('Get thread failed.',5e3,'failure');
+                               }
+                       },
+                       error: function(msg){
+                               updateSentTip('Get thread failed.',5e3,'failure');
+                               $that.removeClass("loading");
+                       }
+               });
+       }
+}
+//tweet function
+
+function rminit($this){
+       var $that = $this.parent().parent().parent();
+       var $rm = $that.find(".right_menu");
+       if($rm.length > 0){
+               $rm.fadeIn('fast');
+       }else{
+               var id = $that.find(".status_word").find(".user_name").text();
+               $that.addClass("loading");
+               $.ajax({
+                       url: 'ajax/relation.php',
+                       type: "POST",
+                       data: "action=show&id="+id,
+                       success: function(msg){
+                               var html = '<ul class="right_menu round"><li><a class="rm_mention" href="#"><i></i>Mention</a></li>';
+                               var r = parseInt(msg);
+                               switch(r){
+                                       case 1:
+                                       html += '<li><a class="rm_dm" href="#"><i></i>Message</a></li>';
+                                       case 2:
+                                       html += '<li><a class="rm_unfollow" href="#"><i></i>Unfollow</a></li><li><a class="ul_block" href="#"><i></i>Block</a></li>';
+                                       break;
+                                       case 3:
+                                       html += '<li><a class="rm_dm" href="#"><i></i>Message</a></li>';
+                                       case 9:
+                                       html += '<li><a class="rm_follow" href="#"><i></i>Follow</a></li><li><a class="rm_block" href="#"><i></i>Block</a></li>';
+                                       break;
+                                       case 4:
+                                       html += '<li><a class="rm_follow" href="#"><i></i>Follow</a></li><li><a class="rm_unblock" href="#"><i></i>UnBlock</a></li>';
+                                       break;
+                               }
+                               html += '<li><a class="rm_spam" href="#"><i></i>Report Spam</a></li><li><a href="user.php?id='+id+'">View Full Profile</a></ul>';
+                               $this.parent().parent().after(html);
+                               $(html).fadeIn('fast');
+                               $that.removeClass();
+                       },
+                       error: function(){
+                               updateSentTip('Loading Avatar Menu Failed,Please Retry!',3e3,"failure");
+                               $that.removeClass();
+                       }
+               });
+       }
+}
+
+function rmmention($this,e){
+       var replie_id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       var in_reply_id = $this.parent().parent().parent().find(".status_id").text();
+       var text = "@"+replie_id;
+       var mode = "In reply to ";
+       scroll(0,0);
+       $("#textbox").focus().val($("#textbox").val()+text+' ');
+       $("#in_reply_to").val(in_reply_id);
+       $("#full_status,#latest_meta,#full_meta,#currently .full-text").hide();
+       $("#currently .status-text").html(mode+text);
+       leaveWord();
+}
+function rmdm($this,e){
+       var replie_id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       var text = "D "+replie_id;
+       scroll(0,0);
+       $("#textbox").focus().val($("#textbox").val()+text+' ');;
+       $("#in_reply_to").val(e.target.parent().parent().parent().find(".status_id").text());
+       $("#full_status,#latest_meta,#full_meta,#currently .full-text").hide();
+       $("#currently .status-text").html("Reply direct message to @"+replie_id);
+       leaveWord();
+}
+function rmfollow($this){
+       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       updateSentTip("Following "+id+"...",5e3,"ing");
+       $.ajax({
+               url: "ajax/relation.php",
+               type: "POST",
+               data: "action=create&id="+id,
+               success: function (msg){
+                       if (msg.indexOf("success") >= 0){
+                               updateSentTip("You have followed "+id+"!",3e3,"success");
+                       }else{
+                               updateSentTip("Failed to follow "+id+",please try again.",3e3,"failure");
+                       }
+               },
+               error: function (msg){
+                       updateSentTip("Failed to follow "+id+",please try again.",3e3,"failure");
+               }
+       });
+}
+function rmunfollow($this){
+       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       if (confirm("Are you sure to unfollow "+id+" ?")){
+               updateSentTip("Unfollowing "+id+"...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=destory&id="+id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       updateSentTip("You have unfollowed "+id+"!",3e3,"success");
+                               }else{
+                                       updateSentTip("Failed to unfollow "+id+",please try again.",3e3,"failure");
+                               }
+                       },
+                       error: function (msg){
+                               updateSentTip("Failed to unfollow "+id+",please try again.",3e3,"failure");
+                       }
+               });
+       }
+}
+function rmblock($this){
+       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       if (confirm("Are you sure to block "+id+" ?")){
+               updateSentTip("Blocking "+id+"...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=block&id="+id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       updateSentTip("You have blocked "+id+"!",3e3,"success");
+                               }else{
+                                       updateSentTip("Failed to block "+id+",please try again.",3e3,"failure");
+                               }
+                       },
+                       error: function (msg){
+                               updateSentTip("Failed to block "+id+",please try again.",3e3,"failure");
+                       }
+               });
+       }
+}
+function rmunblock($this){
+       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       if (confirm("Are you sure to unblock "+id+" ?")){
+               updateSentTip("Unblocking "+id+"...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=unblock&id="+id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       updateSentTip("You have unblocked "+id+"!",3e3,"success");
+                               }else{
+                                       updateSentTip("Failed to unblock "+id+",please try again.",3e3,"failure");
+                               }
+                       },
+                       error: function (msg){
+                               updateSentTip("Failed to unblock "+id+",please try again.",3e3,"failure");
+                       }
+               });
+       }
+}
+function rmspam($this){
+       var id = $this.parent().parent().parent().find(".status_word").find(".user_name").text();
+       if (confirm("Are you sure to report "+id+" ?")){
+               updateSentTip("Reporting "+id+" as a spammer...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/reportSpam.php",
+                       type: "POST",
+                       data: "spammer="+id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       updateSentTip("Successfully reported!",3e3,"success");
+                               }else{
+                                       updateSentTip("Failed to report "+id+",please try again.",3e3,"failure");
+                               }
+                       },
+                       error: function (msg){
+                               updateSentTip("Failed to report "+id+",please try again.",3e3,"failure");
+                       }
+               });
+       }
+}
+//tweet actions
+function onFavor($this){
+       var status_id = $.trim($this.parent().parent().find(".status_id").text());
+       updateSentTip("Adding this tweet to your favorites...",5e3,"ing");
+       $.ajax({
+               url: "ajax/addfavor.php",
+               type: "POST",
+               data: "status_id="+status_id,
+               success: function (msg){
+                       if (msg.indexOf("success") >= 0){
+                               updateSentTip("Favorite added successfully.",3e3,"success");
+                               $this.parent().parent().parent().append('<i class="faved"></i>');
+                               $this.removeClass().addClass("unfav_btn").attr("title","UnFav").text("UnFav");
+                       }else{
+                               updateSentTip("Add failed. Please try again.",3e3,"failure");
+                       }
+               },
+               error: function (msg){
+                       updateSentTip("Add failed. Please try again.",3e3,"failure");
+               }
+       });
+}
+function onReplie($this,e){
+       var $word = $this.parent().parent().find(".status_word");
+       var replie_id = $word.find(".user_name").text();
+       var in_reply_id = $this.parent().parent().find(".status_id").text();
+       var text = "@"+replie_id;
+       var start = text.length+1;
+       var mode = "In reply to ";
+       if (!e.ctrlKey && !e.metaKey){
+               var temp=[];
+               temp[text] = true;
+               var self = '@'+$("#side_name").text();
+               temp[self] = true;
+               var mentionArray = [text];
+               var mentions = $word.find('.tweet').find('a[href^="user.php"]');
+               $.each(mentions,function (){
+                       var t = this.text;
+                       if (!(t in temp)){
+                               temp[t] = true;
+                               mentionArray.push(t);
+                       }
+                       text = mentionArray.join(' ');
+               });
+               if (mentionArray.length > 1){
+                       mode = "Reply to all: ";
+               }
+       }
+       if (e.altKey){
+               mode = "Non-conversational reply to ";
+               in_reply_id = "";
+       }
+       scroll(0,0);
+       var end = text.length;
+       $("#textbox").focus().val($("#textbox").val()+text+' ').caret(start,end);
+       $("#in_reply_to").val(in_reply_id);
+       $("#full_status,#latest_meta,#full_meta,#currently .full-text,#latest_meta").hide();
+       $("#currently .status-text").html(mode+text);
+       leaveWord();
+}
+function onRT($this){
+       var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();
+       scroll(0,0);
+       var status_word = $this.parent().parent().find(".status_word").clone();
+       status_word.find('.tweet a[rel=noreferrer]').each(function(){
+               $(this).text($(this).attr('href'));
+       });
+       $("#textbox").focus().val(" RT @"+replie_id+":"+status_word.text().replace(replie_id,"")).caret(0);
+       $("#full_status,#latest_meta,#full_meta,#currently .full-text,#latest_meta").hide();
+       $("#currently .status-text").html("Retweet @"+replie_id+"'s tweet with comment.");
+       leaveWord();
+}
+function onReplieDM($this){
+       var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();
+       var text = "D "+replie_id;
+       scroll(0,0);
+       $("#textbox").focus().val($("#textbox").val()+text+' ');
+       $("#full_status,#latest_meta,#full_meta,#currently .full-text,#latest_meta").hide();
+       $("#currently .status-text").html("Reply direct message to @"+replie_id);
+       leaveWord();
+}
+function onNwRT($this){
+       if (confirm("Are you sure to retweet this?")){
+               var statusBody = $this.parent().parent();
+               var status_id = statusBody.find(".status_id").text();
+               var div = "#"+statusBody.parent().parent().attr('id');
+               var btnDiv = div+"Btn";
+               updateSentTip("Retweeting tweet...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/retweet.php",
+                       type: "post",
+                       data: "status_id="+status_id,
+                       success: function (msg){
+                               if (msg.length >= 0){
+                                       statusBody.parent().addClass("retweet");
+                                       statusBody.find(".source").hide();
+                                       statusBody.find(".status_info").append("<span class=\"rt_source\">Retweeted by you from <a rel=\"nofollow\" href=\"http://code.google.com/p/embr/\">embr</a></span>").fadeIn("fast");
+                                       statusBody.find(".date").hide();
+                                       statusBody.find(".status_info").append("<span class=\"rt_undo\" title=\"Your followers will no longer see the tweet as retweeted by you.\">&nbsp;<a href=\"#\">(Undo)</a><span class=\"rt_id\" style=\"display: none;\">"+msg+"</span></span>").fadeIn("fast");
+                                       updateSentTip("This tweet has been retweeted!",3e3,"success");
+                                       $(".rt_undo").tipsy({
+                                                       gravity: 's'
+                                               });
+                               }else{
+                                       if (msg === "duplicated"){
+                                               updateSentTip("You have retweeted this tweet!",3e3,"failure");
+                                       }else{
+                                               updateSentTip("Failed to retweet!",3e3,"failure");
+                                       }
+                               }
+                       },
+                       error: function (msg){
+                               updateSentTip("Retweet failed. Please try again.",3e3,"failure");
+                       }
+               });
+       }
+}
+function UnFavor($this){
+       if (window.confirm("Are you sure to unfavor this tweet?")){
+               var $that=$this.parent().parent();
+               var status_id = $.trim($that.find(".status_id").text());
+               $that.parent().css("background-color","#FF3300");
+               updateSentTip("Unfavoring tweet...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/delete.php",
+                       type: "POST",
+                       data: "favor_id="+status_id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       if (location.href.indexOf('favor.php')>0){
+                                               $that.parent().fadeOut("fast");
+                                       }else{
+                                               $that.parent().find(".faved").fadeOut("fast");
+                                               $this.removeClass().addClass("favor_btn").attr("title","Fav").text("Fav");
+                                       }
+                                       updateSentTip("This tweet has been unfavored!",3e3,"success");
+                               }else{
+                                       updateSentTip("Unfavor failed. Please try again.",3e3,"failure");
+                               }
+                               $that.parent().css("background-color","");
+                       },
+                       error: function (msg){
+                               updateSentTip("Unfavor failed. Please try again.",3e3,"failure");
+                               $that.parent().css("background-color","");
+                       }
+               });
+       }
+}
+function onDelete($this){
+       if (window.confirm("Are you sure to delete this tweet?")){
+               var $this=$this.parent().parent();
+               var status_id = $.trim($this.find(".status_id").text());
+               $this.parent().css("background-color","#FF3300");
+               updateSentTip("Deleting tweet...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/delete.php",
+                       type: "POST",
+                       data: "status_id="+status_id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       $this.parent().fadeOut("fast");
+                                       updateSentTip("Your tweet has been destroyed!",3e3,"success");
+                               }else{
+                                       updateSentTip("Delete failed. Please try again.",3e3,"failure");
+                               }
+                               $this.parent().css("background-color","");
+                       },
+                       error: function (msg){
+                               updateSentTip("Delete failed. Please try again.",3e3,"failure");
+                               $this.parent().css("background-color","");
+                       }
+               });
+       }
+}
+function onUndoRt($this){
+       if (window.confirm("Are you sure to undo this retweet?")){
+               var status_id = $.trim($this.parent().find(".rt_id").text());
+               var statusBody = $this.parent().parent().parent();
+               statusBody.css("background-color","#FF3300");
+               updateSentTip("Undoing retweet...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/delete.php",
+                       type: "POST",
+                       data: "status_id="+status_id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       statusInfo = $this.parent().parent();
+                                       if (statusInfo.find(".rt_source").size() === 1){
+                                               statusInfo.find(".source").show().find(".date").show();
+                                               statusInfo.find(".rt_source").remove()
+                                               statusInfo.find(".rt_undo").remove();
+                                               statusBody.removeClass("retweet");
+                                       }else{
+                                               statusBody.fadeOut("fast");
+                                       }
+                                       updateSentTip("Your retweet has been undo!",3e3,"success");
+                               }else{
+                                       updateSentTip("Undo failed. Please try again.",3e3,"failure");
+                               }
+                               statusBody.css("background-color","");
+                       },
+                       error: function (msg){
+                               updateSentTip("Undo failed. Please try again.",3e3,"failure");
+                               statusBody.css("background-color","");
+                       }
+               });
+               
+       }
+}
+function onDeleteMsg($this){
+       if (window.confirm("Are you sure to delete this message?")){
+               var $this=$this.parent().parent();
+               var message_id = $.trim($this.find(".status_id").text());
+               $this.parent().css("background-color","#FF3300");
+               updateSentTip("Deleting message...",5e3,"ing");
+               $.ajax({
+                       url: "ajax/delete.php",
+                       type: "POST",
+                       data: "message_id="+message_id,
+                       success: function (msg){
+                               if (msg.indexOf("success") >= 0){
+                                       $this.parent().fadeOut("fast");
+                                       updateSentTip("Message deleted.",3e3,"success");
+                               }else{
+                                       updateSentTip("Failed to delete this message!",3e3,"failure");
+                               }
+                               $this.parent().css("background-color","");
+                       },
+                       error: function (msg){
+                               updateSentTip("Failed to delete this message!",3e3,"failure");
+                               $this.parent().css("background-color","");
+                       }
+               });
+       }
+}
+$(function (){
+       $("#statuses .trans_close").live('click',function(e){
+               e.preventDefault();
+               $(e.target).parent().parent().parent().parent().find(".translated").remove();
+       });
+       $("#transRecover").click(function(e){
+               $("#textbox").val(ORIG_TEXT);
+               $(e.target).fadeOut('fast');
+               });
+       });
+var translate = function(text,context,lang,callback){
+       
+       var a = "http://www.google.com/uds/Gtranslate";
+       a += "?callback="+callback;
+       a += "&context="+context;
+       a += "&q="+encodeURIComponent(text);
+       a += "&key=notsupplied&v=1.0&nocache=1240207680396&langpair=%7C";
+       a += lang;
+       $.getScript(a);
+};
+var transMyCallback = function(content,translation){
+       if(translation.translatedText !== null){
+               $('#tip').removeClass('loading');
+               $("#transArea").hide();
+               $("#textbox").val(translation.translatedText);
+               $("#transRecover").fadeIn('fast');
+       }
+};
+var transCallback = function(content,translation){
+       if(translation.translatedText !== null){
+               var lang = $.cookie('transLang')
+               if(lang === null){
+                       lang = 'zh';
+               }
+               var langTxt = $.cookie('fullLang');
+               if(langTxt === null){
+                       langTxt = $('#transArea select[name=langs] option[value='+lang+']').text();
+               }
+               var html = '<div class="translated"><a href="#" title="Hide Translation" class="trans_close">(Hide)</a><span class="trans_header"><strong>Translation <small>(from '+translation.detectedSourceLanguage;
+               html += ' to '+langTxt+')</small> : </strong></span>';
+               html += '<span class="trans_body">'+translation.translatedText+'</span></div>';
+               var li,target;
+               if(typeof INTERVAL_COOKIE !== 'undefined'){
+                       li = $("#statuses ol:visible li:has(.status_id)").filter(":contains("+content+")");
+                       target = li.find(".status_word").filter(":first");
+               }else{
+                       li = $("#statuses li:has(.status_id)").filter(":contains("+content+")");
+                       target = li.find(".status_word").filter(":first");
+               }
+               $(html).appendTo(target);
+               li.removeClass("loading");
+       }
+};
+
+$(function (){
+       $('body').click(function (){
+               $('ul.right_menu').fadeOut('fast');
+       });
+       $('ol.timeline').click(function(e){
+               var $this = $(e.target);
+               switch(e.target.id){
+                               //avatar menu
+                       case 'avatar':
+                               e.preventDefault();
+                               rminit($this);
+                               e.stopPropagation();
+                       break;
+               }
+               switch(e.target.className){
+                               //ajax_reply
+                       case 'ajax_reply':
+                               e.preventDefault();
+                               ajax_reply($this);
+                       break;
+                       //avatar_menu_action
+                       case 'rm_mention':
+                               e.preventDefault();
+                               rmmention($this,e);
+                       break;
+                       case 'rm_dm':
+                               e.preventDefault();
+                               rmdm($this,e);
+                       break;
+                       case 'rm_follow':
+                               e.preventDefault();
+                               rmfollow($this);
+                       break;
+                       case 'rm_unfollow':
+                               e.preventDefault();
+                               rmunfollow($this);
+                       break;
+                       case 'rm_block':
+                               e.preventDefault();
+                               rmblock($this);
+                       break;
+                       case 'rm_unblock':
+                               e.preventDefault();
+                               rmunblock($this);
+                       break;
+                       case 'rm_spam':
+                               e.preventDefault();
+                               rmspam($this);
+                       break;
+                       //translate
+                       case 'trans_btn':
+                               e.preventDefault();
+                               var tBody = $this.parent().parent();
+                               if(tBody.find(".trans_body").length !== 0){
+                                       return;
+                               }
+                               var id = $.trim(tBody.find('.status_id').text());
+                               var text = $.trim(tBody.find('.tweet').text());
+                               var lang = $.cookie('transLang');
+                               if(lang === null){
+                                       lang = 'zh';
+                               }
+                               tBody.parent().addClass('loading');
+                               translate(text,id,lang,'transCallback');
+                       break;
+                       // unshorturl 
+                       case 'tweet_url':
+                               var tp = $this.text().split('/');
+                               var d = tp[0];
+                               if(d == 't.cn' || d == 'goo.gl' || d == 'bit.ly' || d == 'j.mp' || d == 'is.gd' || d == '163.fm') {
+                                       e.preventDefault();
+                                       updateSentTip('Unshorting the URL...',3e3,'ing');
+                                       $.getJSON('http://api.longurl.org/v2/expand?url=' +encodeURIComponent($this.attr('href')) + '&format=json&callback=?', function(data) {
+                                               if('long-url' in data) {
+                                                       var url = data['long-url'];
+                                                       if (url != $this.attr('href')) {
+                                                               var tmp = url.split("://");
+                                                               $this.text(tmp[1]);
+                                                               $this.attr('href',url);
+                                                               updateSentTip('Successfully unshort the URL!',3e3,'success');
+                                                               if ($.cookie('showpic') === 'true') previewImg($this);
+                                                               if ($.cookie('mediaPre') === 'true') previewFlash($this);
+                                                               $this.data('previewed',true);
+                                                       }
+                                               } else {
+                                                       updateSentTip('Fail to unshort the URL! Please try again later!',3e3,'failure');
+                                               }
+                                       });
+                               }
+                       break;
+               }
+       });
+       $('ol.timeline').on("dbclick", 'a.tweet_url', function(e){
+               $this = $(e.target);    
+               
+       });
+});
+
+//sidebar function
+var scroller = function(){
+       var $sidebar = $("#side");
+       var $window = $(window);
+       var top = $sidebar.data("top");
+       if ($window.scrollTop() > top){
+               $sidebar.css({
+                       marginTop: '',
+                       top: 0,
+                       position: 'fixed'
+               });
+       }else{
+               $sidebar.css({
+                       marginTop:'',
+                       top:'',
+                       position:'relative'
+               });
+       }
+}
+var sidebarscroll = function (msg){
+       if($.cookie('sidebarscroll') != 'false' && location.href.indexOf('profile.php')< 0 && location.href.indexOf('setting.php') < 0){
+               var $sidebar = $("#side");
+               var $window = $(window);
+               if(!$sidebar.data("top")){
+                       var offset = $sidebar.offset();
+                       $sidebar.data("top",offset.top);
+               }
+               if(msg == undefined){
+                       $window.scroll(scroller);
+               }
+               if (msg == 'pause'){
+                       var top = $window.scrollTop() - $sidebar.data('top');
+                       if (top <= 0) top = 0;
+                       $sidebar.css({
+                               marginTop:top,
+                               position:'relative'
+                       });
+                       $window.unbind('scroll',scroller);
+               }       
+       }
+};
+$(function (){
+       if($.cookie('autoscroll') != 'false' && $("#more").length > 0 && $("ol.timeline").length > 0){
+               $("ol.timeline").infinitescroll({
+                       nextSelector:"#more:last",
+                       navSelector:"#pagination",
+                       itemSelector:"ol.timeline li",
+                       callback: function(obj){
+                               embrTweet(obj);
+                               previewMedia(obj);
+                       },
+               });
+       }
+       $("#indicator").toggle(
+               function (){
+                       $('#sidebarTip_more').slideDown('fast');
+                       $('#indicator').html('[-]');
+               },function (){
+                       $('#sidebarTip_more').slideUp('fast');
+                       $('#indicator').html('[+]');
+               });
+       $("#sidebarTip [contenteditable]").live('focusout',function(){
+               var $this = $("#sidebarTip [contenteditable]");
+               $.post(
+                       'ajax/setTip.php',
+                       {Tip_Title: $this.eq(0).text()+' ',Tip_Content:$this.eq(1).text()+' ',Tip_More:$this.eq(2).text()+' '},
+                       function (msg){
+                               if(msg == 'unsecured'){
+                                       updateSentTip('Fail to save your tip for the security issues!',3e3,'failure');
+                               }else if(msg == 'error'){
+                                       updateSentTip('Fail to save your tip! Please try again later!',3e3,'failure');
+                               }else{
+                                       updateSentTip('Successfully save your tip!',3e3,'success');
+                               }
+                       }
+               );
+       });
+       $("#sidebarTip #tip_reset").live('click',function(e){
+               e.preventDefault();
+               if(window.confirm('Are you sure to restore to default tips?')){
+                       $.post(
+                               'ajax/setTip.php',
+                               {reset: 'true'},
+                               function (msg){
+                                       if(msg == 'reset'){
+                                               updateSentTip('Successfully restore to the default tips!',3e3,'success');
+                                               location.reload();
+                                       }else{
+                                               updateSentTip('Fail to save your tip! Please try again later!',3e3,'failure');
+                                       }
+                               }
+                       );
+               }
+       })
+       $("#profileRefresh").click(function(e){
+               e.preventDefault();
+               var that = $(this);
+               if (!that.hasClass('refreshing')){
+                       that.addClass('refreshing');
+                       $.ajax({
+                               url: "ajax/updateProfile.php",
+                               type: "GET",
+                               dataType: "json",
+                               success: function(msg){
+                                       if (msg.result == 'success'){ 
+                                               freshProfile();
+                                               updateSentTip("Profile updated successfully!",3e3,"success");
+                                       }
+                                       else{
+                                               updateSentTip("Failed to update your profile!",3e3,"failure");
+                                       }
+                               },
+                               error: function (msg){
+                                       updateSentTip("Failed to update your profile!",3e3,"failure");
+                               },
+                               complete: function(){
+                                       that.removeClass('refreshing');
+                               }
+                       });
+               }
+       });
+});
+
+// sidepost function
+$(function (){
+       $("#trends_title").toggle(
+               function (){
+                       $("#trends_title").removeClass().addClass("loading");
+                       updateTrends();
+               },function (){
+                       $("#trends_title").removeClass();
+                       $("#trend_entries").slideUp("fast");
+                       sidebarscroll();
+               });
+       $("#following_title").toggle(
+               function (){
+                       $("#following_title").removeClass().addClass("loading");
+                       sidebarscroll('pause');
+                       updateFollowing();
+               },function (){
+                       $("#following_title").removeClass();
+                       $("#following_list").slideUp("fast");
+                       sidebarscroll();
+               });
+       $("#apiquota_title").toggle(
+               function (){
+                       $("#apiquota_title").removeClass().addClass("loading");
+                       sidebarscroll('pause');
+                       updateAPIQuota();
+               },function (){
+                       $("#apiquota_title").removeClass();
+                       $("#apiquota_list").slideUp("fast");
+                       sidebarscroll();
+               });
+});
+function updateTrends(){
+       sidebarscroll('pause');
+       if (navigator.geolocation) {
+               if ($.cookie('woeid') == undefined) {
+                       navigator.geolocation.getCurrentPosition(function (pos, error) {
+                               $.ajax({
+                                       url: "ajax/updateTrends.php?lat=" + pos.coords.latitude + "&long=" + pos.coords.longitude,
+                                       type: "GET",
+                                       success: function (msg){
+                                               if ($.trim(msg).indexOf("</ul>" > 0)){
+                                                       $("#trend_entries").html(msg);
+                                               }
+                                               $("#trends_title").removeClass().addClass("open");
+                                               $("#trend_entries").slideDown("fast");
+                                       }
+                               })
+                       });
+               } else {
+                       $.ajax({
+                               url: "ajax/updateTrends.php",
+                               type: "GET",
+                               success: function (msg){
+                                       if ($.trim(msg).indexOf("</ul>" > 0)){
+                                               $("#trend_entries").html(msg);
+                                       }
+                                       $("#trends_title").removeClass().addClass("open");
+                                       $("#trend_entries").slideDown("fast");
+                               }
+                       });
+               }
+       }
+}
+function updateFollowing(){
+       $.ajax({
+               url: "ajax/updateFollowing.php",
+               type: "GET",
+               success: function (msg){
+                       if ($.trim(msg).indexOf("</span>" > 0)){
+                               $("#following_list").html(msg);
+                       }
+                       $("#following_title").removeClass().addClass("open");
+                       $("#following_list").slideDown("fast");
+               }
+       });
+}
+function updateAPIQuota(){
+       $.ajax({
+               url: "ajax/apiQuota.php",
+               type: "GET",
+               success: function (msg){
+                       if ($.trim(msg).indexOf("</span>" > 0)){
+                               $("#apiquota_list").html(msg);
+                       }
+                       $("#apiquota_title").removeClass().addClass("open");
+                       $("#apiquota_list").slideDown("fast");
+               }
+       });
+}
+$(window).load(function(){
+       var scrollTo = function (top,duration,callback){
+       var w = $(window);
+       var FPS = 50;
+       var currentTop = w.scrollTop();
+       var offset = (currentTop - top) / (duration * FPS / 1000);
+       var n = 0;
+       var prevTop = currentTop;
+       var t = setInterval(function (){
+                       if ((prevTop - top) * (currentTop - top) <= 0){
+                               clearInterval(t);
+                               currentTop = prevTop = top;
+                               w.scrollTop(top);
+                               if (callback) callback();
+                       }else{
+                               prevTop = currentTop;
+                               w.scrollTop(currentTop -= offset);
+                       }
+               },1e3 / FPS);
+       }
+       var scrollToTop = function(){
+               scrollTo(0,200,function (){
+                               scrollTo(30,50,function (){
+                                               scrollTo(0,50);
+                                       });
+                       });
+       };
+       var scrollToBottom = function(){
+               var height = document.body.clientHeight;
+               scrollTo(height,200,function (){
+                       scrollTo(height+30,50,function (){
+                                       scrollTo(height,50);
+                               });
+               });
+       };
+       $('body').dblclick(function (){
+               scrollToTop();
+               $("#textbox").focus();
+       });
+       $('#content').dblclick(function (e){
+               e.stopPropagation();
+       });
+       var hkFadeIn = function(text){
+               $("#shortcutTip").fadeIn("fast").html(text);
+       };
+       var hkFadeOut = function(){
+               setTimeout(function (){$("#shortcutTip").fadeOut("fast");},2000);
+       };
+       // hotkeys
+       var hotkeyHandler = function(code){
+               switch(code){
+               case 82: // R - refresh
+                       hkFadeIn("Refresh");
+                       update();
+                       hkFadeOut();
+                       break;
+               case 67: // C - focus textbox
+               case 85: // U
+                       hkFadeIn("Compose");
+                       scrollTo(0,1,function (){
+                                       $("#textbox").focus();
+                               });
+                       hkFadeOut();
+                       break;
+               case 66: // B - scroll to bottom
+                       hkFadeIn("Boom!");
+                       scrollToBottom();
+                       hkFadeOut();
+                       break;
+               case 84: // T - scroll to top
+                       hkFadeIn("Whiz!");
+                       scrollToTop();
+                       hkFadeOut();
+                       break;
+               case 83: // S - search
+                       hkFadeIn("Search");
+                       $("#sidepost").animate({backgroundColor: "#FF6347"},500,function(){
+                                       $("#header_search_query").focus();
+                                       $("#sidepost").animate({backgroundColor: $("#side_base").css("background-color")},1000);
+                               });
+                       hkFadeOut();
+                       break;
+               }
+       };
+       $(document).keydown(function(e){
+               var tag = e.target.tagName;
+               if(tag === "BODY" || tag === "HTML"){
+                       if(!e.altKey && !e.shiftKey && !e.ctrlKey && !e.metaKey){
+                               hotkeyHandler(e.keyCode);
+                       }
+               }
+       });
+       $("#statuses .big-retweet-icon,#func_set .func_btn,#profileRefresh").tipsy({
+               gravity: 's'
+       });
+       $('#symbols span').tipsy({
+               gravity: $.fn.tipsy.autoNS
+       });
+       $("#statuses .mine").live("mouseout",function (e){
+               $(e.target).removeClass("mine").addClass("myTweet");
+       });
+});
+//init global functions
+$(document).ready(function (){
+       embrTweet();
+       $("#primary_nav li a").click(function (e){
+                       $(e.target).each(function (){
+                                       if ($(this).hasClass("active")){
+                                               $(this).removeClass()
+                                       }
+                               });
+                       $(this).removeClass().addClass("active").css("background","transparent url('../img/spinner.gif') no-repeat scroll 173px center")
+               });
+       $("#avatar,#sideimg").lazyload({threshold:100,effect:"fadeIn",placeholder:"img/blank.gif"});
+       sidebarscroll();
+});
+var freshProfile = function(){
+       $("#side_name").text($.cookie('name'));
+       $.cookie('name',null);
+       $("span.count").eq(0).text($.cookie('friends_count')).end()
+               .eq(1).text($.cookie('followers_count')).end()
+               .eq(2).text($.cookie('listed_count'));
+       $("#update_count").text($.cookie('statuses_count'));
+       $('#sideimg').attr("src",$.cookie('imgurl'));
+};
+var markReply = function(obj){
+       var sidename = "@"+$("#side_name").text().toLowerCase();
+       obj.each(function (i,o){
+               if ($(this).find("> span").find('.tweet').text().toLowerCase().indexOf(sidename) > -1){
+                       $(this).addClass("reply");
+               }
+       });
+};
\ No newline at end of file
index cda7cac..86b320d 100644 (file)
@@ -1,36 +1,54 @@
-$(function(){\r
-       formHTML = "<h2>What are you doing?</h2>" + formHTML + "<div class=\"clear\"></div>";\r
-       $(".rt_btn").click(function(e){\r
-               e.preventDefault();\r
-               if ($("#textbox").length > 0) {\r
-                       onRT($(this));\r
-               } else {\r
-                       $("#search_form").after(formHTML);\r
-                       formFunc();\r
-                       onRT($(this));\r
-               }\r
-       });\r
-       $(".replie_btn").click(function(e){\r
-               e.preventDefault();\r
-               if ($("#textbox").length > 0) {\r
-                       onReplie($(this), e);\r
-               } else {\r
-                       $("#search_form").after(formHTML);\r
-                       formFunc();\r
-                       onReplie($(this), e);\r
-               }\r
-       });\r
-       $(".favor_btn").live("click", function(e){\r
-               e.preventDefault();\r
-               onFavor($(this));\r
-       });\r
-       $(".retw_btn").live("click", function(e){\r
-               e.preventDefault();\r
-               onNwRT($(this));\r
-       });\r
-       $("#submit_btn").live("click", function(e){\r
-               updateStatus();\r
-               e.preventDefault();\r
-       });\r
-       updateTrends();\r
-});\r
+$(function(){
+       formHTML = "<h2>What are you doing?</h2>" + formHTML + "<div class=\"clear\"></div>";
+       $("#allTimeline").click(function(e) {
+               var $this = $(e.target);
+               var type = $this.attr('class');
+               switch(type) {
+                       case 'rt_btn':
+                               e.preventDefault();
+                               if ($("#textbox").length > 0) {
+                                       onRT($this);
+                               } else {
+                                       $("#search_form").after(formHTML);
+                                       formFunc();
+                                       onRT($this);
+                               }
+                               break;
+                       case 'retw_btn':
+                               e.preventDefault();
+                               onNwRT($this);
+                               break;
+                       case 'replie_btn':
+                               e.preventDefault();
+                               if ($("#textbox").length > 0) {
+                                       onReplie($this,e);
+                               } else {
+                                       $("#search_form").after(formHTML);
+                                       formFunc();
+                                       onReplie($this,e);
+                               }
+                               break;
+                       case 'favor_btn':
+                               e.preventDefault();
+                               onFavor($this);
+                               break;
+                       case 'unfav_btn':
+                               e.preventDefault();
+                               UnFavor($this);
+                               break;
+                       case 'delete_btn':
+                               e.preventDefault();
+                               onDelete($this);
+                               break;
+                       case 'rt_undo':
+                               e.preventDefault();
+                               onUndoRt($this);
+                               break;
+               }
+       });
+       $("#submit_btn").click(function(e){
+               updateStatus();
+               e.preventDefault();
+       });
+       updateTrends();
+});
index 5fc9b76..c2390cc 100644 (file)
-$(function(){\r
-       $('.bg_input').ColorPicker({ \r
-               onBeforeShow: function () {\r
-                       $(this).ColorPickerSetColor(this.value);\r
-               },\r
-               onSubmit: function(hsb, hex, rgb, el) {\r
-                       $(el).val("#" + hex);\r
-                       $(el).ColorPickerHide();\r
-               }\r
-       }).bind('keyup', function(){\r
-               $(this).ColorPickerSetColor(this.value);\r
-       });\r
-\r
-       $('#reset_link').bind('click', function(e){\r
-               e.preventDefault();\r
-               if(confirm("You will lose all customized settings!")){\r
-                       $.cookie('myCSS', '');\r
-                       $.cookie('fontsize', '');\r
-                       $.cookie('bodyBg', '');\r
-                       location.reload();\r
-               }\r
-       });     \r
-\r
-       var style = {\r
-               "Twitter Default":{myCSS:"/*default*/ "}, \r
-               "Dark Rabr":{myCSS:"@import url(themes/1.css);"}, \r
-               "Monokai Python":{myCSS:"@import url(themes/2.css);"}, \r
-               "Old Times":{myCSS:"@import url(themes/3.css);"}, \r
-               "Pink":{myCSS:"@import url(themes/4.css);"},\r
-               "Warm @lgsoltek":{myCSS:"@import url(themes/5.css);"},\r
-               "Cold @lgsoltek":{myCSS:"@import url(themes/6.css);"},\r
-               "Green":{myCSS:"@import url(themes/7.css);"},\r
-               "Shine":{myCSS:"@import url(themes/8.css);"},\r
-               "Flew":{myCSS:"@import url(themes/9.css);"},\r
-               "Golden":{myCSS:"@import url(themes/10.css);"},\r
-               "#red":{myCSS:"@import url(themes/11.css);"},\r
-               "Storm":{myCSS:"@import url(themes/12.css);"},\r
-               "City":{myCSS:"@import url(themes/13.css);"},\r
-               "Cosmos":{myCSS:"@import url(themes/14.css);"},\r
-               "Pride (Rainbow)":{myCSS:"@import url(themes/15.css); /* Have a gay day! */"},\r
-               "Drop Bombs":{myCSS:"@import url(themes/16.css);"},\r
-               "Minimal":{myCSS:"@import url(themes/minimal.css);"},\r
-       };\r
-\r
-       $.each(style, function (i,o) {\r
-               $("#styleSelect").append('<option value="' + i + '">' + i + '</option>');\r
-       });\r
-       $("#styleSelect").change(function(){\r
-               if ($(this).val() != "n/a") {\r
-                       $.each(style[$(this).val()], function (i,o) {\r
-                               $("#"+i).val(o);\r
-                       });\r
-               }\r
-       });\r
-});\r
-\r
-$(show_pic_option);\r
-\r
-function show_pic_option () {\r
-       var cookie_val = $.cookie (COOKIE_NAME);\r
-       if (cookie_val === null) {\r
-               $.cookie (COOKIE_NAME, true, options);\r
-       }\r
-       else if (cookie_val === 'false') {\r
-               $("#show_pic").attr("checked", false);\r
-       }\r
-\r
-       $("#show_pic").click(function (){\r
-               $.cookie (COOKIE_NAME, $("#show_pic").attr("checked"), options);\r
-       });\r
-\r
-       if ($.cookie('mediaPre') === null) {\r
-               $.cookie('mediaPre', true, { expires: 30 });\r
-               $("#mediaPreSelect").attr('checked', true);\r
-       }\r
-\r
-       if($.cookie('mediaPre') === 'true'){\r
-               $("#mediaPreSelect").attr('checked', true);\r
-       }else{\r
-               $("#mediaPreSelect").attr('checked', false);;\r
-       }\r
-\r
-       $("#mediaPreSelect").click(function(){\r
-               if($(this).attr('checked') == true){\r
-                       $.cookie('mediaPre', true, { expires: 30 });\r
-               }else{\r
-                       $.cookie('mediaPre', false, { expires: 30 });\r
-               }                               \r
-       });\r
-}\r
+$(function(){
+       checkbox('showpic',"#showpic",true);
+       checkbox('mediaPre',"#mediaPreSelect",true);
+       checkbox('p_avatar',"#proxifyAvatar",false,function(){
+               var imgurl = $.cookie('imgurl');
+               if(imgurl.indexOf('img.php') > -1) {
+                       imgurl = imgurl.substr(15);
+               } else {
+                       imgurl = 'img.php?imgurl='+imgurl;
+               }
+               $.cookie('imgurl',imgurl,{expires:365});
+               freshProfile();
+       });
+       checkbox('autoscroll',"#autoscroll",true);
+       checkbox('sidebarscroll',"#sidebarscroll",true,function(){
+               $(window).unbind('scroll',scroller);
+       });
+       checkbox('twitterbg',"#twitterbg",false,function(){
+               if($.cookie('twitterbg') === 'true'){
+                       $.ajax({
+                               url:'ajax/updateProfile.php?extra=bg',
+                               dataType:'json',
+                               success: function (){
+                                       location.reload();
+                               }
+                       });
+               } else {
+                       $.cookie('Bgcolor', '');
+                       $.cookie('Bgimage','');
+                       $.cookie('Bgrepeat','no-repeat');
+                       location.reload();
+               }
+       });
+       selectbox('homeInterval',"#homeInterval",function(){
+               $.cookie('intervalChanged','true',{expires:365});
+       });
+       selectbox('updatesInterval',"#updatesInterval",function(){
+               $.cookie('intervalChanged','true',{expires:365});
+       });
+       selectbox('fontsize',"#fontsize");
+       $('.bg_input').ColorPicker({ 
+               onBeforeShow: function () {
+                       $(this).ColorPickerSetColor(this.value);
+               },
+               onSubmit: function(hsb, hex, rgb, el) {
+                       $(el).val("#" + hex);
+                       $(el).ColorPickerHide();
+                       $.cookie('bodyBg',"#" + hex,{expires:365});
+                       location.reload();
+                       updateSentTip('Setting saved successfully!',3000,'success');
+               }
+       }).bind('keyup', function(){
+               $(this).ColorPickerSetColor(this.value);
+       });
+       $('#reset_link').bind('click', function(e){
+               e.preventDefault();
+               if(confirm("You will lose all customized settings!")){
+                       $.cookie('myCSS', '/*default.css*/');
+                       $.cookie('theme','')
+                       $.cookie('fontsize', '');
+                       $.cookie('Bgcolor', '');
+                       $.cookie('Bgimage','');
+                       $.cookie('showpic','true');
+                       $.cookie('mediaPre','true');
+                       $.cookie('p_avatar','false');
+                       $.cookie('homeInterval',1);
+                       $.cookie('updatesInterval',3);
+                       location.reload();
+                       updateSentTip('Setting Reset successfully!',3000,'success');
+               }
+       });
+       var style = {
+               "Twitter Default":{theme:"/*default*/"}, 
+               "Dark Rabr":{theme:"@import url(themes/1.css);"}, 
+               "Monokai Python":{theme:"@import url(themes/2.css);"}, 
+               "Old Times":{theme:"@import url(themes/3.css);"}, 
+               "Pink":{theme:"@import url(themes/4.css);"},
+               "Warm @lgsoltek":{theme:"@import url(themes/5.css);"},
+               "Cold @lgsoltek":{theme:"@import url(themes/6.css);"},
+               "Green":{theme:"@import url(themes/7.css);"},
+               "Shine":{theme:"@import url(themes/8.css);"},
+               "Flew":{theme:"@import url(themes/9.css);"},
+               "Golden":{theme:"@import url(themes/10.css);"},
+               "#red":{theme:"@import url(themes/11.css);"},
+               "Storm":{theme:"@import url(themes/12.css);"},
+               "City":{theme:"@import url(themes/13.css);"},
+               "Cosmos":{theme:"@import url(themes/14.css);"},
+               "Pride (Rainbow)":{theme:"@import url(themes/15.css); /* Have a gay day! */"},
+               "Drop Bombs":{theme:"@import url(themes/16.css);"},
+               "Minimal":{theme:"@import url(themes/minimal.css);"},
+       };
+       $.each(style, function (i,o) {
+               $("#styleSelect").append('<option value="' + o.theme + '">' + i + '</option>');
+       });
+       var theme = $.cookie('theme') == undefined ? '/*default*/' : $.cookie('theme');
+       $("#styleSelect").change(function(){
+               var o =$(this).val();
+               $.cookie('theme',o,{expires:365});
+               $.cookie('Bgimage','');
+               location.reload();
+               updateSentTip('Themes Saved Successfully!',3000,'success');
+       }).eq(0).val(theme);
+       
+       $("textarea#myCSS").change(function(){
+               $.cookie('myCSS',$(this).val(),{expires:365});
+               location.reload();
+               updateSentTip('Themes saved successfully!',3000,'success');
+       });
+       $("#AvatarUpload").click(function (e) {
+               e.preventDefault();
+               ProfileImageUpload();
+       });
+       $("#saveProfile").click(function(e){
+               e.preventDefault();
+               $.ajax({
+                       url: 'ajax/updateProfile.php',
+                       type: 'POST',
+                       data: {
+                               'name': $('input[name="name"]').val(),
+                               'url' : $('input[name="url"]').val(),
+                               'location': $('input[name="location"]').val(),
+                               'description': $('textarea[name="description"]').text()
+                       },
+                       dataType: 'json',
+                       success: function(msg) {
+                               if (msg.result == 'success') {
+                                       freshProfile();
+                                       updateSentTip ('Profile updated successfully!',3000,'success');
+                               } else {
+                                       updateSentTip ('Fail to update your profile, please try again',3000,'failure');
+                               }
+                       },
+                       error: function() {
+                               updateSentTip ('Fail to update your profile, please try again',3000,'failure');
+                       }
+               });
+       });
+});
+function checkbox(c,id,d,extra){
+       var $id = $(id);
+       if ($.cookie (c) === null) {
+               $.cookie (c, d, { expires: 30 });
+       } 
+       $id.prop('checked', $.cookie (c) === 'true').click(function (){
+               $.cookie(c,$id.prop("checked"),{expires:365});
+               if (extra != undefined) extra();
+               updateSentTip('Setting saved successfully!',1000,'success');
+       });
+}
+function selectbox(c,id,extra){
+       var $id = $(id);
+       if($.cookie(c) != undefined){
+               $id.eq(0).val($.cookie(c));
+       }
+       $id.change(function (){
+               $.cookie(c,$id.find(':selected').val(),{expires:365});
+               if (extra != undefined) extra();
+               updateSentTip('Setting saved successfully!',1000,'success');
+       });
+}
+
+function ProfileImageUpload() {
+       updateSentTip("Uploading your profile image...", 10000, "ing");
+       $.ajaxFileUpload({
+                       url: 'ajax/uploadImage.php?do=profile',
+                       timeout: 60000,
+                       secureuri: false,
+                       fileElementId: 'profile_image',
+                       dataType: 'json',
+                       success: function (data, status) {
+                               if (typeof(console) !== 'undefined' && console != null) {
+                                       console.info(data);
+                               }
+                               if (typeof(data.result) != 'undefined' && data.result == "success") {
+                                       $.ajax({
+                                               url: '../ajax/updateProfile.php',
+                                               type: "GET",
+                                               dataType: "json",
+                                               success: function(msg){
+                                                       freshProfile();
+                                                       $(".settings > img").attr("src",$.cookie("imgurl"));
+                                               }
+                                       });
+                                       updateSentTip("Your profile image has been uploaded!", 3000, "success");
+                               } else {
+                                       updateSentTip("Failed to upload, please try again.", 3000, "failure");
+                               }
+                       },
+                       error: function (data, status, e) {
+                               updateSentTip("Failed to upload, please try again.", 3000, "failure");
+                       }
+               })
+       return false;
+}
\ No newline at end of file
index 54f1a99..f0370a0 100644 (file)
@@ -1,35 +1,45 @@
 $(function(){\r
-\r
-       $("#submit_btn").click(function(e){\r
-               updateStatus();\r
-               e.preventDefault();\r
-       });\r
-\r
-       $(".retw_btn").live("click", function(e){\r
-               e.preventDefault();\r
-               onNwRT($(this));\r
-       });\r
-\r
-       $(".rt_btn").click(function(e){\r
-               e.preventDefault();\r
-               if ($("#textbox").length > 0) {\r
-                       onInfoRT($(this));\r
-               } else {\r
-                       $("#info_head").after('<h2>What\'s happening?</h2>' + formHTML);\r
-                       formFunc();\r
-                       onInfoRT($(this));\r
-               }\r
-       });\r
-\r
-       $(".replie_btn").click(function(e){\r
-               e.preventDefault();\r
-               var replie_id = $("#info_name").text();\r
-               if ($("#textbox").length > 0) {\r
-                       onInfoReplie($(this));\r
-               } else {\r
-                       $("#info_head").after('<h2>In reply to ' + replie_id + '</h2>' + formHTML);\r
-                       formFunc();\r
-                       onInfoReplie($(this));\r
+       $("#allTimeline").click(function(e) {\r
+               var $this = $(e.target);\r
+               var type = $this.attr('class');\r
+               switch(type) {\r
+                       case 'rt_btn':\r
+                               e.preventDefault();\r
+                               if ($("#textbox").length > 0) {\r
+                                       onInfoRT($this);\r
+                               } else {\r
+                                       $("#info_head").after('<h2>What\'s happening?</h2>' + formHTML);\r
+                                       formFunc();\r
+                                       onInfoRT($this);\r
+                               }\r
+                               break;\r
+                       case 'retw_btn':\r
+                               e.preventDefault();\r
+                               onNwRT($this);\r
+                               break;\r
+                       case 'replie_btn':\r
+                               e.preventDefault();\r
+                               var replie_id = $this.parent().parent().find(".status_word").find(".user_name").text();\r
+                               if ($("#textbox").length > 0) {\r
+                                       onInfoReplie($this,e);\r
+                               } else {\r
+                                       $("#info_head").after('<h2>In reply to ' + replie_id + '</h2>' + formHTML);\r
+                                       formFunc();\r
+                                       onInfoReplie($this,e);\r
+                               }\r
+                               break;\r
+                       case 'favor_btn':\r
+                               e.preventDefault();\r
+                               onFavor($this);\r
+                               break;\r
+                       case 'unfav_btn':\r
+                               e.preventDefault();\r
+                               UnFavor($this);\r
+                               break;\r
+                       case 'rt_undo':\r
+                               e.preventDefault();\r
+                               onUndoRt($this);\r
+                               break;\r
                }\r
        });\r
 \r
@@ -47,23 +57,14 @@ $(function(){
                        leaveWord();\r
                }\r
        });\r
-\r
        if (getCookie("infoShow") == "hide") {\r
                onHide();\r
        }\r
-\r
-\r
-       $("#info_hide_btn").live("click", function(){\r
+       $("#info_hide_btn").click(function(){\r
                onHide();\r
        });\r
 \r
-\r
-       $(".favor_btn").live("click", function(){\r
-               e.preventDefault();\r
-               onFavor($(this));\r
-       });\r
-\r
-       $("#info_follow_btn").live("click", function(e){\r
+       $("#info_follow_btn").click(function(e){\r
                e.preventDefault();\r
                var $this = $(this);\r
                var id = $("#info_name").text();\r
@@ -74,7 +75,7 @@ $(function(){
                        data: "action=create&id=" + id,\r
                        success: function(msg) {\r
                                if (msg.indexOf("success") >= 0) {\r
-                                       updateSentTip("You have followed " + id + "!");\r
+                                       updateSentTip("You have followed " + id + "!", 3000, "success");\r
                                        $this.after('<a class="btn btn-red" id="info_block_btn" href="javascript:void(0)">Unfollow</a>');\r
                                        $this.remove();\r
                                        if($('#unblock') != null){\r
@@ -91,7 +92,7 @@ $(function(){
                });\r
        });\r
 \r
-       $("#info_block_btn").live("click", function(e){\r
+       $("#info_block_btn").click(function(e){\r
                e.preventDefault();\r
                var $this = $(this);\r
                var id = $("#info_name").text();\r
@@ -117,7 +118,7 @@ $(function(){
                }\r
        });\r
 \r
-       $("#block_btn").live("click", function(e){\r
+       $("#block_btn").click(function(e){\r
                e.preventDefault();\r
                var $this = $(this);\r
                var id = $("#info_name").text();\r
@@ -147,7 +148,7 @@ $(function(){
                }\r
        });\r
 \r
-       $("#unblock_btn").live("click", function(e){\r
+       $("#unblock_btn").click(function(e){\r
                e.preventDefault();\r
                var $this = $(this);\r
                var id = $("#info_name").text();\r
@@ -172,6 +173,46 @@ $(function(){
                        });\r
                }\r
        });\r
+       \r
+       $("#report_btn").click(function(e){\r
+               e.preventDefault();\r
+               var $this = $(this);\r
+               var id = $("#info_name").text();\r
+               if (confirm("Are you sure to report " + id + " for spam?")) {\r
+                       updateSentTip("Reporting " + id + " for spam...", 5000, "ing");\r
+                       $.ajax({\r
+                               url: "ajax/relation.php",\r
+                               type: "POST",\r
+                               data: "action=report&id=" + id,\r
+                               success: function(msg) {\r
+                                       if (msg.indexOf("success") >= 0) {\r
+                                               updateSentTip("You have reported " + id + " for spam!", 3000, "success");\r
+                                               /*\r
+                                               $this.after('<a class="btn" id="unblock_btn" href="javascript:void(0)">Unblock</a>');\r
+                                               $this.remove();\r
+                                               \r
+                                               if($('#info_block_btn') != null){\r
+                                                       $('#info_block_btn').after('<a class="btn btn-green" id="info_follow_btn" href="javascript:void(0)">Follow</a>');\r
+                                                       $('#info_block_btn').remove();\r
+                                               }\r
+                                               */\r
+                                       } else {\r
+                                               updateSentTip("Failed to report " + id + " for spam, please try again.", 3000, "failure");\r
+                                       }\r
+                               },\r
+                               error: function(msg) {\r
+                                       updateSentTip("Failed to report " + id + " for spam, please try again.", 3000, "failure");\r
+                               }\r
+                       });\r
+               }\r
+       });\r
+       $("#tweeting_button").click(function (e) {\r
+               e.preventDefault();\r
+               if ($("#textbox").val().length >0 ) {\r
+                       updateStatus();\r
+               }               \r
+       });\r
+       \r
 });\r
 \r
 function onInfoReplie($this) {\r
@@ -184,8 +225,11 @@ function onInfoReplie($this) {
 \r
 function onInfoRT($this) {\r
        var replie_id = $("#info_name").text();\r
-       $("#textbox").val("RT @" + replie_id + ":" + $this.parent().parent().find(".status_word").text());\r
-       $("#textbox").focus();\r
+       var status_word = $this.parent().parent().find(".status_word").clone();\r
+       status_word.find('.tweet a[rel=noreferrer]').each(function(){\r
+               $(this).text($(this).attr('href'));\r
+       });\r
+       $("#textbox").focus().val(" RT @" + replie_id + ":" + status_word.text().replace(replie_id, "")).caret(0);\r
        leaveWord();\r
 }\r
 function getCookie(name){\r
index 5143132..50944d3 100644 (file)
-$(function () {\r
-       $(".rank_img img").tipsy({gravity: 's'});\r
-       $(".rank_img img").live("click", function (e) {\r
-               $(".right_menu").hide();\r
-               $(this).parent().parent().parent().find(".right_menu").css("display", "block");\r
-               e.preventDefault();\r
-       });\r
-       $('body').click(function () {\r
-               $(".right_menu").hide();\r
-       });\r
-       $('.status_author li a').click(function () {\r
-               $(".right_menu").hide();\r
-       });\r
-       $(".ul_mention").live("click", function (e) {\r
-               e.preventDefault();\r
-               ulmention($(this), e);\r
-       });\r
-       $(".ul_dm").live("click", function (e) {\r
-               e.preventDefault();\r
-               uldm($(this), e);\r
-       });\r
-       $(".ul_follow").live("click", function (e) {\r
-               e.preventDefault();\r
-               var $this = $(this);\r
-               var id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-               updateSentTip("Following " + id + "...", 5000, "ing");\r
-               $.ajax({\r
-                       url: "ajax/relation.php",\r
-                       type: "POST",\r
-                       data: "action=create&id=" + id,\r
-                       success: function (msg) {\r
-                               if (msg.indexOf("success") >= 0) {\r
-                                       $this.parent().parent().parent().addClass("reply");\r
-                                       updateSentTip("You have followed " + id + "!", 3000, "success");\r
-                               } else {\r
-                                       updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                               }\r
-                       },\r
-                       error: function (msg) {\r
-                               updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");\r
-                       }\r
-               });\r
-       });\r
-       $(".ul_unfollow").live("click", function (e) {\r
-               e.preventDefault();\r
-               var $this = $(this);\r
-               var id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-               if (confirm("Are you sure to unfollow " + id + " ?")) {\r
-                       updateSentTip("Unfollowing " + id + "...", 5000, "ing");\r
-                       $.ajax({\r
-                               url: "ajax/relation.php",\r
-                               type: "POST",\r
-                               data: "action=destory&id=" + id,\r
-                               success: function (msg) {\r
-                                       if (msg.indexOf("success") >= 0) {\r
-                                               $this.parent().parent().parent().addClass("filter");\r
-                                               updateSentTip("You have unfollowed " + id + "!", 3000, "success");\r
-                                       } else {\r
-                                               updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");\r
-                                       }\r
-                               },\r
-                               error: function (msg) {\r
-                                       updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");\r
-                               }\r
-                       });\r
-               }\r
-       });\r
-       $(".ul_block").live("click", function (e) {\r
-               e.preventDefault();\r
-               var $this = $(this);\r
-               var id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-               if (confirm("Are you sure to block " + id + " ?")) {\r
-                       updateSentTip("Blocking " + id + "...", 5000, "ing");\r
-                       $.ajax({\r
-                               url: "ajax/relation.php",\r
-                               type: "POST",\r
-                               data: "action=block&id=" + id,\r
-                               success: function (msg) {\r
-                                       if (msg.indexOf("success") >= 0) {\r
-                                               $this.parent().parent().parent().fadeOut("normal");\r
-                                               updateSentTip("You have blocked " + id + "!", 3000, "success");\r
-                                       } else {\r
-                                               updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");\r
-                                       }\r
-                               },\r
-                               error: function (msg) {\r
-                                       updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");\r
-                               }\r
-                       });\r
-               }\r
-       });\r
-})\r
-$(".ul_spam").live("click", function (e) {\r
-       e.preventDefault();\r
-       var $this = $(this);\r
-       var id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-       if (confirm("Are you sure to report " + id + " ?")) {\r
-               updateSentTip("Reporting " + id + " as a spammer...", 5000, "ing");\r
-               $.ajax({\r
-                       url: "ajax/reportSpam.php",\r
-                       type: "POST",\r
-                       data: "spammer=" + id,\r
-                       success: function (msg) {\r
-                               if (msg.indexOf("success") >= 0) {\r
-                                       $this.parent().parent().parent().fadeOut("normal");\r
-                                       updateSentTip("Successfully reported!", 3000, "success");\r
-                               } else {\r
-                                       updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");\r
-                               }\r
-                       },\r
-                       error: function (msg) {\r
-                               updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");\r
-                       }\r
-               });\r
-       }\r
-});\r
-function ulmention($this, e) {\r
-       var replie_id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-       if ($("#textbox").length > 0) {\r
-                       var text = "@" + replie_id;\r
-                       scroll(0, 0);\r
-                       $("#textbox").focus();\r
-                       $("#textbox").val($("#textbox").val() + text + ' ');\r
-                       leaveWord();\r
-               } else {\r
-                       $("#statuses h2").before('<h2>Mention</h2>' + formHTML);\r
-                       formFunc();\r
-                       var text = "@" + replie_id;\r
-                       scroll(0, 0);\r
-                       $("#textbox").focus();\r
-                       $("#textbox").val($("#textbox").val() + text + ' ');\r
-                       leaveWord();\r
-               }\r
-}\r
-function uldm($this, e) {\r
-       var replie_id = $this.parent().parent().parent().find(".rank_screenname").text();\r
-       if ($("#textbox").length > 0) {\r
-                       var text = "D " + replie_id;\r
-                       scroll(0, 0);\r
-                       $("#textbox").focus();\r
-                       $("#textbox").val($("#textbox").val() + text + ' ');\r
-                       leaveWord();\r
-               } else {\r
-                       $("#statuses h2").before('<h2>Send direct message</h2>' + formHTML);\r
-                       formFunc();\r
-                       var text = "D " + replie_id;\r
-                       scroll(0, 0);\r
-                       $("#textbox").focus();\r
-                       $("#textbox").val($("#textbox").val() + text + ' ');\r
-                       leaveWord();\r
-               }\r
-}
\ No newline at end of file
+$(function () {
+       $('ol.rank_list').click(function(e){
+               var $this = $(e.target);
+               switch(e.target.id) {
+                               //avatar menu
+                       case 'avatar':
+                               e.preventDefault();
+                               ulinit($this);
+                       break;
+               }
+               switch(e.target.className) {
+                       //avatar_menu_action
+                       case 'ul_mention':
+                               e.preventDefault();
+                               ulmention($this,e);
+                       break;
+                       case 'ul_dm':
+                               e.preventDefault();
+                               uldm($this,e);
+                       break;
+                       case 'ul_follow':
+                               e.preventDefault();
+                               ulfollow($this);
+                       break;
+                       case 'ul_unfollow':
+                               e.preventDefault();
+                               ulunfollow($this);
+                       break;
+                       case 'ul_block':
+                               e.preventDefault();
+                               ulblock($this);
+                       break;
+                       case 'ul_unblock':
+                               e.preventDefault();
+                               ulunblock($this);
+                       break;
+                       case 'ul_spam':
+                               e.preventDefault();
+                               ulspam($this);
+                       break;
+               }
+       });
+})
+function ulinit($this) {
+       var $that = $this.parent().parent();
+       var ul = $that.find(".right_menu");
+       if (ul.length>0) {
+               ul.fadeIn('fast');
+       } else {
+               var id = getid($this);
+               $that.addClass("loading");
+               $.ajax({
+                       url: 'ajax/relation.php',
+                       type: "POST",
+                       data: "action=show&id=" + id,
+                       success: function(msg){
+                               var html = '<ul class="right_menu round"><li><a class="ul_mention" href="#"><i></i>Mention</a></li>';
+                               var r = parseInt(msg);
+                               switch(r){
+                                       case 1:
+                                       html += '<li><a class="ul_dm" href="#"><i></i>Message</a></li>';
+                                       case 2:
+                                       html += '<li><a class="ul_unfollow" href="#"><i></i>Unfollow</a></li><li><a class="ul_block" href="#"><i></i>Block</a></li>';
+                                       break;
+                                       case 3:
+                                       html += '<li><a class="ul_dm" href="#"><i></i>Message</a></li>';
+                                       case 9:
+                                       html += '<li><a class="ul_follow" href="#"><i></i>Follow</a></li><li><a class="ul_block" href="#"><i></i>Block</a></li>';
+                                       break;
+                                       case 4:
+                                       html += '<li><a class="ul_follow" href="#"><i></i>Follow</a></li><li><a class="ul_unblock" href="#"><i></i>UnBlock</a></li>';
+                                       break;
+                               }
+                               html += '<li><a class="ul_spam" href="#"><i></i>Report Spam</a></li><li><a href="user.php?id='+id+'">View Full Profile</a></ul>';
+                               $this.parent().after(html);
+                               $(html).fadeIn('fast');
+                               $that.removeClass("loading");
+                       },
+                       error: function(){
+                               return;
+                       }
+               });     
+       }
+}
+function ulmention($this, e) {
+       var replie_id = getid($this.parent());;
+       if ($("#textbox").length > 0) {
+               var text = "@" + replie_id;
+               scroll(0, 0);
+               $("#textbox").focus().val($("#textbox").val() + text + ' ');
+               leaveWord();
+       } else {
+               $("#statuses h2").before('<h2>Mention</h2>' + formHTML);
+               formFunc();
+               var text = "@" + replie_id;
+               scroll(0, 0);
+               $("#textbox").focus().val($("#textbox").val() + text + ' ');
+               leaveWord();
+       }
+}
+function uldm($this, e) {
+       var replie_id = getid($this.parent());
+       if ($("#textbox").length > 0) {
+               var text = "D " + replie_id;
+       } else {
+               $("#statuses h2").before('<h2>Send direct message</h2>' + formHTML);
+               formFunc();
+               var text = "D " + replie_id;
+       }
+       scroll(0, 0);
+       $("#textbox").focus().val($("#textbox").val() + text + ' ');
+       leaveWord();
+}
+function ulfollow($this) {
+       var id = getid($this.parent());
+       updateSentTip("Following " + id + "...", 5000, "ing");
+       $.ajax({
+               url: "ajax/relation.php",
+               type: "POST",
+               data: "action=create&id=" + id,
+               success: function (msg) {
+                       if (msg.indexOf("success") >= 0) {
+                               $this.parent().parent().parent().addClass("reply");
+                               updateSentTip("You have followed " + id + "!", 3000, "success");
+                       } else {
+                               updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");
+                       }
+               },
+               error: function (msg) {
+                       updateSentTip("Failed to follow " + id + ", please try again.", 3000, "failure");
+               }
+       });
+}
+function ulunfollow($this) {
+       var id = getid($this.parent());;
+       if (confirm("Are you sure to unfollow " + id + " ?")) {
+               updateSentTip("Unfollowing " + id + "...", 5000, "ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=destory&id=" + id,
+                       success: function (msg) {
+                               if (msg.indexOf("success") >= 0) {
+                                       $this.parent().parent().parent().addClass("filter");
+                                       updateSentTip("You have unfollowed " + id + "!", 3000, "success");
+                               } else {
+                                       updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");
+                               }
+                       },
+                       error: function (msg) {
+                               updateSentTip("Failed to unfollow " + id + ", please try again.", 3000, "failure");
+                       }
+               });
+       }
+}
+function ulblock($this) {
+       var id = getid($this.parent());;
+       if (confirm("Are you sure to block " + id + " ?")) {
+               updateSentTip("Blocking " + id + "...", 5000, "ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=block&id=" + id,
+                       success: function (msg) {
+                               if (msg.indexOf("success") >= 0) {
+                                       $this.parent().parent().parent().fadeOut("normal");
+                                       updateSentTip("You have blocked " + id + "!", 3000, "success");
+                               } else {
+                                       updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");
+                               }
+                       },
+                       error: function (msg) {
+                               updateSentTip("Failed to block " + id + ", please try again.", 3000, "failure");
+                       }
+               });
+       }
+}
+function ulunblock($this) {
+       var id = getid($this.parent());;
+       if (confirm("Are you sure to unblock " + id + " ?")) {
+               updateSentTip("Unblocking " + id + "...", 5000, "ing");
+               $.ajax({
+                       url: "ajax/relation.php",
+                       type: "POST",
+                       data: "action=unblock&id=" + id,
+                       success: function (msg) {
+                               if (msg.indexOf("success") >= 0) {
+                                       $this.parent().parent().parent().fadeOut("normal");
+                                       updateSentTip("You have unblocked " + id + "!", 3000, "success");
+                               } else {
+                                       updateSentTip("Failed to unblock " + id + ", please try again.", 3000, "failure");
+                               }
+                       },
+                       error: function (msg) {
+                               updateSentTip("Failed to unblock " + id + ", please try again.", 3000, "failure");
+                       }
+               });
+       }
+}
+function ulspam($this) {
+       var id = getid($this.parent());
+       if (confirm("Are you sure to report " + id + " ?")) {
+               updateSentTip("Reporting " + id + " as a spammer...", 5000, "ing");
+               $.ajax({
+                       url: "ajax/reportSpam.php",
+                       type: "POST",
+                       data: "spammer=" + id,
+                       success: function (msg) {
+                               if (msg.indexOf("success") >= 0) {
+                                       $this.parent().parent().parent().fadeOut("normal");
+                                       updateSentTip("Successfully reported!", 3000, "success");
+                               } else {
+                                       updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");
+                               }
+                       },
+                       error: function (msg) {
+                               updateSentTip("Failed to report " + id + ", please try again.", 3000, "failure");
+                       }
+               });
+       }
+}
+var getid = function ($this) {
+       return $this.parent().parent().find(".rank_screenname").text();
+}
+$(document).ready(function(){
+       $.ajax({
+               url: '../ajax/updateProfile.php',
+               type: "GET",
+               success: function(){
+                       freshProfile();
+               }
+       });
+});
\ No newline at end of file
diff --git a/lib/config.sample.php b/lib/config.sample.php
new file mode 100644 (file)
index 0000000..954654e
--- /dev/null
@@ -0,0 +1,21 @@
+<?php\r
+       define('API_URL', 'http://api.twitter.com/1.1');\r
+       \r
+       // Config\r
+       define('SECURE_KEY', 'YOU SHOULD CHANGE IT'); //You should NOT leave it blank\r
+       define('BASE_URL','http://embr.in'); //Where your embr is hosted, i.e. http://bugbug.tk\r
+       define("CONSUMER_KEY", "TEItTaPASySnYxziOyIdag");\r
+       define("CONSUMER_SECRET", "xJEoWvBumpqgiiBuviWTa7GT8KCvP7Kv3n0hixhJaZY");\r
+       \r
+       //Extra Auth\r
+       define('BASIC_AUTH', false); // if you set basic_auth true, u MUST set up the following BASIC_AUTH_USER and BASIC_AUTH_PW, and you d better reset your secure_key\r
+       define('BASIC_AUTH_USER', 'your_basic_auth_user');\r
+       define('BASIC_AUTH_PW', 'your_basic_auth_password');\r
+\r
+       define('ID_AUTH',false); // if you set id_auth true, u MUST set up the following AUTH_ID list\r
+       $AUTH_ID = array('username1','username2','username3','......');\r
+\r
+       //Optional Information\r
+       define('SITE_OWNER', 'TWITTER'); //Your Twitter ID  \r
+       define('BLOG_SITE',''); //blog_site\r
+?>\r
index 4f86fd6..f0f0fc9 100644 (file)
@@ -1,122 +1,2 @@
 <?php\r
-\r
-/*\r
-\r
-  This code is from http://detectmobilebrowsers.mobi/ - please do not republish it without due credit and hyperlink to http://detectmobilebrowsers.mobi\r
-  \r
-  For help generating the function call visit http://detectmobilebrowsers.mobi/ and use the function generator.\r
-  \r
-  Published by Andy Moore - .mobi certified mobile web developer - http://andymoore.info/\r
-\r
-  This code is free to download and use on non-profit websites, if your website makes a profit or you require support using this code please upgrade.\r
-\r
-  Upgrade for use on commercial websites and support: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=1064282\r
-\r
-  To submit a support request please forward your PayPal receipt with your questions to the email address you sent the money to and I will endeavour to get back to you. It might take me a few days but I reply to all support issues with as much helpful info as I can provide.\r
-\r
-  The function has eight parameters that can be passed to it which define the way it handles different scenarios. These paramaters are:\r
-\r
-    * iPhone - Set to true to treat iPhones as mobiles, false to treat them like full browsers or set a URL (including http://) to redirect iPhones and iPods to.\r
-    * Android - Set to true to treat Android handsets as mobiles, false to treat them like full browsers or set a URL (including http://) to redirect Android and Google mobile users to.\r
-    * Opera Mini - Set to true to treat Opera Mini like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Opera Mini users to.\r
-    * Blackberry - Set to true to treat Blackberry like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Blackberry users to.\r
-    * Palm - Set to true to treat Palm OS like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Palm OS users to.\r
-    * Windows - Set to true to treat Windows Mobiles like a mobile, false to treat it like full browser or set a URL (including http://) to redirect Windows Mobile users to.\r
-    * Mobile Redirect URL - This should be full web address (including http://) of the site (or page) you want to send mobile visitors to. Leaving this blank will make the script return true when it detects a mobile.\r
-    * Desktop Redirect URL - This should be full web address (including http://) of the site (or page) you want to send non-mobile visitors to. Leaving this blank will make the script return false when it fails to detect a mobile.\r
-\r
-  Change Log\r
-\r
-    * 25.11.08 - Added Amazon's Kindle to the pipe seperated array\r
-    * 27.11.08 - Added support for Blackberry options\r
-    * 27.01.09 - Added usage samples & help with PHP in HTML\r
-    * 09.03.09 - Added support for Windows Mobile options\r
-    * 09.03.09 - Removed 'ppc;'=>'ppc;', from array to reduce false positives\r
-    * 09.03.09 - Added support for Palm OS options\r
-    * 09.03.09 - Added sample .htaccess html.html and help.html files to download\r
-\r
-*/\r
-\r
-function mobile_device_detect($iphone=true,$android=true,$opera=true,$blackberry=true,$palm=true,$windows=true,$mobileredirect=false,$desktopredirect=false){\r
-\r
-  $mobile_browser   = false; // set mobile browser as false till we can prove otherwise\r
-  $user_agent       = $_SERVER['HTTP_USER_AGENT']; // get the user agent value - this should be cleaned to ensure no nefarious input gets executed\r
-  $accept           = $_SERVER['HTTP_ACCEPT']; // get the content accept value - this should be cleaned to ensure no nefarious input gets executed\r
-\r
-  switch(true){ // using a switch against the following statements which could return true is more efficient than the previous method of using if statements\r
-\r
-    case (eregi('ipod',$user_agent)||eregi('iphone',$user_agent)); // we find the words iphone or ipod in the user agent\r
-      $mobile_browser = $iphone; // mobile browser is either true or false depending on the setting of iphone when calling the function\r
-      if(substr($iphone,0,4)=='http'){ // does the value of iphone resemble a url\r
-        $mobileredirect = $iphone; // set the mobile redirect url to the url value stored in the iphone value\r
-      } // ends the if for iphone being a url\r
-    break; // break out and skip the rest if we've had a match on the iphone or ipod\r
-\r
-    case (eregi('android',$user_agent));  // we find android in the user agent\r
-      $mobile_browser = $android; // mobile browser is either true or false depending on the setting of android when calling the function\r
-      if(substr($android,0,4)=='http'){ // does the value of android resemble a url\r
-        $mobileredirect = $android; // set the mobile redirect url to the url value stored in the android value\r
-      } // ends the if for android being a url\r
-    break; // break out and skip the rest if we've had a match on android\r
-\r
-    case (eregi('opera mini',$user_agent)); // we find opera mini in the user agent\r
-      $mobile_browser = $opera; // mobile browser is either true or false depending on the setting of opera when calling the function\r
-      if(substr($opera,0,4)=='http'){ // does the value of opera resemble a rul\r
-        $mobileredirect = $opera; // set the mobile redirect url to the url value stored in the opera value\r
-      } // ends the if for opera being a url \r
-    break; // break out and skip the rest if we've had a match on opera\r
-\r
-    case (eregi('blackberry',$user_agent)); // we find blackberry in the user agent\r
-      $mobile_browser = $blackberry; // mobile browser is either true or false depending on the setting of blackberry when calling the function\r
-      if(substr($blackberry,0,4)=='http'){ // does the value of blackberry resemble a rul\r
-        $mobileredirect = $blackberry; // set the mobile redirect url to the url value stored in the blackberry value\r
-      } // ends the if for blackberry being a url \r
-    break; // break out and skip the rest if we've had a match on blackberry\r
-\r
-    case (preg_match('/(palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i',$user_agent)); // we find palm os in the user agent - the i at the end makes it case insensitive\r
-      $mobile_browser = $palm; // mobile browser is either true or false depending on the setting of palm when calling the function\r
-      if(substr($palm,0,4)=='http'){ // does the value of palm resemble a rul\r
-        $mobileredirect = $palm; // set the mobile redirect url to the url value stored in the palm value\r
-      } // ends the if for palm being a url \r
-    break; // break out and skip the rest if we've had a match on palm os\r
-\r
-    case (preg_match('/(windows ce; ppc;|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent)); // we find windows mobile in the user agent - the i at the end makes it case insensitive\r
-      $mobile_browser = $windows; // mobile browser is either true or false depending on the setting of windows when calling the function\r
-      if(substr($windows,0,4)=='http'){ // does the value of windows resemble a rul\r
-        $mobileredirect = $windows; // set the mobile redirect url to the url value stored in the windows value\r
-      } // ends the if for windows being a url \r
-    break; // break out and skip the rest if we've had a match on windows\r
-\r
-    case (preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|pda|psp|treo)/i',$user_agent)); // check if any of the values listed create a match on the user agent - these are some of the most common terms used in agents to identify them as being mobile devices - the i at the end makes it case insensitive\r
-      $mobile_browser = true; // set mobile browser to true\r
-    break; // break out and skip the rest if we've preg_match on the user agent returned true \r
-\r
-    case ((strpos($accept,'text/vnd.wap.wml')>0)||(strpos($accept,'application/vnd.wap.xhtml+xml')>0)); // is the device showing signs of support for text/vnd.wap.wml or application/vnd.wap.xhtml+xml\r
-      $mobile_browser = true; // set mobile browser to true\r
-    break; // break out and skip the rest if we've had a match on the content accept headers\r
-\r
-    case (isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE'])); // is the device giving us a HTTP_X_WAP_PROFILE or HTTP_PROFILE header - only mobile devices would do this\r
-      $mobile_browser = true; // set mobile browser to true\r
-    break; // break out and skip the final step if we've had a return true on the mobile specfic headers\r
-\r
-    case (in_array(strtolower(substr($user_agent,0,4)),array('1207'=>'1207','3gso'=>'3gso','4thp'=>'4thp','501i'=>'501i','502i'=>'502i','503i'=>'503i','504i'=>'504i','505i'=>'505i','506i'=>'506i','6310'=>'6310','6590'=>'6590','770s'=>'770s','802s'=>'802s','a wa'=>'a wa','acer'=>'acer','acs-'=>'acs-','airn'=>'airn','alav'=>'alav','asus'=>'asus','attw'=>'attw','au-m'=>'au-m','aur '=>'aur ','aus '=>'aus ','abac'=>'abac','acoo'=>'acoo','aiko'=>'aiko','alco'=>'alco','alca'=>'alca','amoi'=>'amoi','anex'=>'anex','anny'=>'anny','anyw'=>'anyw','aptu'=>'aptu','arch'=>'arch','argo'=>'argo','bell'=>'bell','bird'=>'bird','bw-n'=>'bw-n','bw-u'=>'bw-u','beck'=>'beck','benq'=>'benq','bilb'=>'bilb','blac'=>'blac','c55/'=>'c55/','cdm-'=>'cdm-','chtm'=>'chtm','capi'=>'capi','comp'=>'comp','cond'=>'cond','craw'=>'craw','dall'=>'dall','dbte'=>'dbte','dc-s'=>'dc-s','dica'=>'dica','ds-d'=>'ds-d','ds12'=>'ds12','dait'=>'dait','devi'=>'devi','dmob'=>'dmob','doco'=>'doco','dopo'=>'dopo','el49'=>'el49','erk0'=>'erk0','esl8'=>'esl8','ez40'=>'ez40','ez60'=>'ez60','ez70'=>'ez70','ezos'=>'ezos','ezze'=>'ezze','elai'=>'elai','emul'=>'emul','eric'=>'eric','ezwa'=>'ezwa','fake'=>'fake','fly-'=>'fly-','fly_'=>'fly_','g-mo'=>'g-mo','g1 u'=>'g1 u','g560'=>'g560','gf-5'=>'gf-5','grun'=>'grun','gene'=>'gene','go.w'=>'go.w','good'=>'good','grad'=>'grad','hcit'=>'hcit','hd-m'=>'hd-m','hd-p'=>'hd-p','hd-t'=>'hd-t','hei-'=>'hei-','hp i'=>'hp i','hpip'=>'hpip','hs-c'=>'hs-c','htc '=>'htc ','htc-'=>'htc-','htca'=>'htca','htcg'=>'htcg','htcp'=>'htcp','htcs'=>'htcs','htct'=>'htct','htc_'=>'htc_','haie'=>'haie','hita'=>'hita','huaw'=>'huaw','hutc'=>'hutc','i-20'=>'i-20','i-go'=>'i-go','i-ma'=>'i-ma','i230'=>'i230','iac'=>'iac','iac-'=>'iac-','iac/'=>'iac/','ig01'=>'ig01','im1k'=>'im1k','inno'=>'inno','iris'=>'iris','jata'=>'jata','java'=>'java','kddi'=>'kddi','kgt'=>'kgt','kgt/'=>'kgt/','kpt '=>'kpt ','kwc-'=>'kwc-','klon'=>'klon','lexi'=>'lexi','lg g'=>'lg g','lg-a'=>'lg-a','lg-b'=>'lg-b','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-f'=>'lg-f','lg-g'=>'lg-g','lg-k'=>'lg-k','lg-l'=>'lg-l','lg-m'=>'lg-m','lg-o'=>'lg-o','lg-p'=>'lg-p','lg-s'=>'lg-s','lg-t'=>'lg-t','lg-u'=>'lg-u','lg-w'=>'lg-w','lg/k'=>'lg/k','lg/l'=>'lg/l','lg/u'=>'lg/u','lg50'=>'lg50','lg54'=>'lg54','lge-'=>'lge-','lge/'=>'lge/','lynx'=>'lynx','leno'=>'leno','m1-w'=>'m1-w','m3ga'=>'m3ga','m50/'=>'m50/','maui'=>'maui','mc01'=>'mc01','mc21'=>'mc21','mcca'=>'mcca','medi'=>'medi','meri'=>'meri','mio8'=>'mio8','mioa'=>'mioa','mo01'=>'mo01','mo02'=>'mo02','mode'=>'mode','modo'=>'modo','mot '=>'mot ','mot-'=>'mot-','mt50'=>'mt50','mtp1'=>'mtp1','mtv '=>'mtv ','mate'=>'mate','maxo'=>'maxo','merc'=>'merc','mits'=>'mits','mobi'=>'mobi','motv'=>'motv','mozz'=>'mozz','n100'=>'n100','n101'=>'n101','n102'=>'n102','n202'=>'n202','n203'=>'n203','n300'=>'n300','n302'=>'n302','n500'=>'n500','n502'=>'n502','n505'=>'n505','n700'=>'n700','n701'=>'n701','n710'=>'n710','nec-'=>'nec-','nem-'=>'nem-','newg'=>'newg','neon'=>'neon','netf'=>'netf','noki'=>'noki','nzph'=>'nzph','o2 x'=>'o2 x','o2-x'=>'o2-x','opwv'=>'opwv','owg1'=>'owg1','opti'=>'opti','oran'=>'oran','p800'=>'p800','pand'=>'pand','pg-1'=>'pg-1','pg-2'=>'pg-2','pg-3'=>'pg-3','pg-6'=>'pg-6','pg-8'=>'pg-8','pg-c'=>'pg-c','pg13'=>'pg13','phil'=>'phil','pn-2'=>'pn-2','pt-g'=>'pt-g','palm'=>'palm','pana'=>'pana','pire'=>'pire','pock'=>'pock','pose'=>'pose','psio'=>'psio','qa-a'=>'qa-a','qc-2'=>'qc-2','qc-3'=>'qc-3','qc-5'=>'qc-5','qc-7'=>'qc-7','qc07'=>'qc07','qc12'=>'qc12','qc21'=>'qc21','qc32'=>'qc32','qc60'=>'qc60','qci-'=>'qci-','qwap'=>'qwap','qtek'=>'qtek','r380'=>'r380','r600'=>'r600','raks'=>'raks','rim9'=>'rim9','rove'=>'rove','s55/'=>'s55/','sage'=>'sage','sams'=>'sams','sc01'=>'sc01','sch-'=>'sch-','scp-'=>'scp-','sdk/'=>'sdk/','se47'=>'se47','sec-'=>'sec-','sec0'=>'sec0','sec1'=>'sec1','semc'=>'semc','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','sk-0'=>'sk-0','sl45'=>'sl45','slid'=>'slid','smb3'=>'smb3','smt5'=>'smt5','sp01'=>'sp01','sph-'=>'sph-','spv '=>'spv ','spv-'=>'spv-','sy01'=>'sy01','samm'=>'samm','sany'=>'sany','sava'=>'sava','scoo'=>'scoo','send'=>'send','siem'=>'siem','smar'=>'smar','smit'=>'smit','soft'=>'soft','sony'=>'sony','t-mo'=>'t-mo','t218'=>'t218','t250'=>'t250','t600'=>'t600','t610'=>'t610','t618'=>'t618','tcl-'=>'tcl-','tdg-'=>'tdg-','telm'=>'telm','tim-'=>'tim-','ts70'=>'ts70','tsm-'=>'tsm-','tsm3'=>'tsm3','tsm5'=>'tsm5','tx-9'=>'tx-9','tagt'=>'tagt','talk'=>'talk','teli'=>'teli','topl'=>'topl','tosh'=>'tosh','up.b'=>'up.b','upg1'=>'upg1','utst'=>'utst','v400'=>'v400','v750'=>'v750','veri'=>'veri','vk-v'=>'vk-v','vk40'=>'vk40','vk50'=>'vk50','vk52'=>'vk52','vk53'=>'vk53','vm40'=>'vm40','vx98'=>'vx98','virg'=>'virg','vite'=>'vite','voda'=>'voda','vulc'=>'vulc','w3c '=>'w3c ','w3c-'=>'w3c-','wapj'=>'wapj','wapp'=>'wapp','wapu'=>'wapu','wapm'=>'wapm','wig '=>'wig ','wapi'=>'wapi','wapr'=>'wapr','wapv'=>'wapv','wapy'=>'wapy','wapa'=>'wapa','waps'=>'waps','wapt'=>'wapt','winc'=>'winc','winw'=>'winw','wonu'=>'wonu','x700'=>'x700','xda2'=>'xda2','xdag'=>'xdag','yas-'=>'yas-','your'=>'your','zte-'=>'zte-','zeto'=>'zeto','acs-'=>'acs-','alav'=>'alav','alca'=>'alca','amoi'=>'amoi','aste'=>'aste','audi'=>'audi','avan'=>'avan','benq'=>'benq','bird'=>'bird','blac'=>'blac','blaz'=>'blaz','brew'=>'brew','brvw'=>'brvw','bumb'=>'bumb','ccwa'=>'ccwa','cell'=>'cell','cldc'=>'cldc','cmd-'=>'cmd-','dang'=>'dang','doco'=>'doco','eml2'=>'eml2','eric'=>'eric','fetc'=>'fetc','hipt'=>'hipt','http'=>'http','ibro'=>'ibro','idea'=>'idea','ikom'=>'ikom','inno'=>'inno','ipaq'=>'ipaq','jbro'=>'jbro','jemu'=>'jemu','java'=>'java','jigs'=>'jigs','kddi'=>'kddi','keji'=>'keji','kyoc'=>'kyoc','kyok'=>'kyok','leno'=>'leno','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-g'=>'lg-g','lge-'=>'lge-','libw'=>'libw','m-cr'=>'m-cr','maui'=>'maui','maxo'=>'maxo','midp'=>'midp','mits'=>'mits','mmef'=>'mmef','mobi'=>'mobi','mot-'=>'mot-','moto'=>'moto','mwbp'=>'mwbp','mywa'=>'mywa','nec-'=>'nec-','newt'=>'newt','nok6'=>'nok6','noki'=>'noki','o2im'=>'o2im','opwv'=>'opwv','palm'=>'palm','pana'=>'pana','pant'=>'pant','pdxg'=>'pdxg','phil'=>'phil','play'=>'play','pluc'=>'pluc','port'=>'port','prox'=>'prox','qtek'=>'qtek','qwap'=>'qwap','rozo'=>'rozo','sage'=>'sage','sama'=>'sama','sams'=>'sams','sany'=>'sany','sch-'=>'sch-','sec-'=>'sec-','send'=>'send','seri'=>'seri','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','siem'=>'siem','smal'=>'smal','smar'=>'smar','sony'=>'sony','sph-'=>'sph-','symb'=>'symb','t-mo'=>'t-mo','teli'=>'teli','tim-'=>'tim-','tosh'=>'tosh','treo'=>'treo','tsm-'=>'tsm-','upg1'=>'upg1','upsi'=>'upsi','vk-v'=>'vk-v','voda'=>'voda','vx52'=>'vx52','vx53'=>'vx53','vx60'=>'vx60','vx61'=>'vx61','vx70'=>'vx70','vx80'=>'vx80','vx81'=>'vx81','vx83'=>'vx83','vx85'=>'vx85','wap-'=>'wap-','wapa'=>'wapa','wapi'=>'wapi','wapp'=>'wapp','wapr'=>'wapr','webc'=>'webc','whit'=>'whit','winw'=>'winw','wmlb'=>'wmlb','xda-'=>'xda-',))); // check against a list of trimmed user agents to see if we find a match\r
-      $mobile_browser = true; // set mobile browser to true\r
-    break; // break even though it's the last statement in the switch so there's nothing to break away from but it seems better to include it than exclude it\r
-\r
-  } // ends the switch \r
-\r
-  // tell adaptation services (transcoders and proxies) to not alter the content based on user agent as it's already being managed by this script\r
-  header('Cache-Control: no-transform'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies\r
-  header('Vary: User-Agent, Accept'); // http://mobiforge.com/developing/story/setting-http-headers-advise-transcoding-proxies\r
-\r
-  // if redirect (either the value of the mobile or desktop redirect depending on the value of $mobile_browser) is true redirect else we return the status of $mobile_browser\r
-  if($redirect = ($mobile_browser==true) ? $mobileredirect : $desktopredirect){\r
-    header('Location: '.$redirect); // redirect to the right url for this device\r
-    exit;\r
-  }else{ \r
-    return $mobile_browser; // will return either true or false \r
-  }\r
-\r
-} // ends function mobile_device_detect\r
-\r
-?>\r
+ function mobile_device_detect($iphone=true,$ipad=true,$android=true,$opera=true,$blackberry=true,$palm=true,$windows=true,$mobileredirect=false,$desktopredirect=false){ $mobile_browser = false; $user_agent = $_SERVER['HTTP_USER_AGENT']; $accept = $_SERVER['HTTP_ACCEPT']; switch(true){ case (preg_match('/ipad/i',$user_agent)); $mobile_browser = $ipad; $status = 'Apple iPad'; if(substr($ipad,0,4)=='http'){ $mobileredirect = $ipad; } break; case (preg_match('/ipod/i',$user_agent)||preg_match('/iphone/i',$user_agent)); $mobile_browser = $iphone; $status = 'Apple'; if(substr($iphone,0,4)=='http'){ $mobileredirect = $iphone; } break; case (preg_match('/android/i',$user_agent)); $mobile_browser = $android; $status = 'Android'; if(substr($android,0,4)=='http'){ $mobileredirect = $android; } break; case (preg_match('/opera mini/i',$user_agent)); $mobile_browser = $opera; $status = 'Opera'; if(substr($opera,0,4)=='http'){ $mobileredirect = $opera; } break; case (preg_match('/blackberry/i',$user_agent)); $mobile_browser = $blackberry; $status = 'Blackberry'; if(substr($blackberry,0,4)=='http'){ $mobileredirect = $blackberry; } break; case (preg_match('/(pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i',$user_agent)); $mobile_browser = $palm; $status = 'Palm'; if(substr($palm,0,4)=='http'){ $mobileredirect = $palm; } break; case (preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent)); $mobile_browser = $windows; $status = 'Windows Smartphone'; if(substr($windows,0,4)=='http'){ $mobileredirect = $windows; } break; case (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i',$user_agent)); $mobile_browser = true; $status = 'Mobile matched on piped preg_match'; break; case ((strpos($accept,'text/vnd.wap.wml')>0)||(strpos($accept,'application/vnd.wap.xhtml+xml')>0)); $mobile_browser = true; $status = 'Mobile matched on content accept header'; break; case (isset($_SERVER['HTTP_X_WAP_PROFILE'])||isset($_SERVER['HTTP_PROFILE'])); $mobile_browser = true; $status = 'Mobile matched on profile headers being set'; break; case (in_array(strtolower(substr($user_agent,0,4)),array('1207'=>'1207','3gso'=>'3gso','4thp'=>'4thp','501i'=>'501i','502i'=>'502i','503i'=>'503i','504i'=>'504i','505i'=>'505i','506i'=>'506i','6310'=>'6310','6590'=>'6590','770s'=>'770s','802s'=>'802s','a wa'=>'a wa','acer'=>'acer','acs-'=>'acs-','airn'=>'airn','alav'=>'alav','asus'=>'asus','attw'=>'attw','au-m'=>'au-m','aur '=>'aur ','aus '=>'aus ','abac'=>'abac','acoo'=>'acoo','aiko'=>'aiko','alco'=>'alco','alca'=>'alca','amoi'=>'amoi','anex'=>'anex','anny'=>'anny','anyw'=>'anyw','aptu'=>'aptu','arch'=>'arch','argo'=>'argo','bell'=>'bell','bird'=>'bird','bw-n'=>'bw-n','bw-u'=>'bw-u','beck'=>'beck','benq'=>'benq','bilb'=>'bilb','blac'=>'blac','c55/'=>'c55/','cdm-'=>'cdm-','chtm'=>'chtm','capi'=>'capi','cond'=>'cond','craw'=>'craw','dall'=>'dall','dbte'=>'dbte','dc-s'=>'dc-s','dica'=>'dica','ds-d'=>'ds-d','ds12'=>'ds12','dait'=>'dait','devi'=>'devi','dmob'=>'dmob','doco'=>'doco','dopo'=>'dopo','el49'=>'el49','erk0'=>'erk0','esl8'=>'esl8','ez40'=>'ez40','ez60'=>'ez60','ez70'=>'ez70','ezos'=>'ezos','ezze'=>'ezze','elai'=>'elai','emul'=>'emul','eric'=>'eric','ezwa'=>'ezwa','fake'=>'fake','fly-'=>'fly-','fly_'=>'fly_','g-mo'=>'g-mo','g1 u'=>'g1 u','g560'=>'g560','gf-5'=>'gf-5','grun'=>'grun','gene'=>'gene','go.w'=>'go.w','good'=>'good','grad'=>'grad','hcit'=>'hcit','hd-m'=>'hd-m','hd-p'=>'hd-p','hd-t'=>'hd-t','hei-'=>'hei-','hp i'=>'hp i','hpip'=>'hpip','hs-c'=>'hs-c','htc '=>'htc ','htc-'=>'htc-','htca'=>'htca','htcg'=>'htcg','htcp'=>'htcp','htcs'=>'htcs','htct'=>'htct','htc_'=>'htc_','haie'=>'haie','hita'=>'hita','huaw'=>'huaw','hutc'=>'hutc','i-20'=>'i-20','i-go'=>'i-go','i-ma'=>'i-ma','i230'=>'i230','iac'=>'iac','iac-'=>'iac-','iac/'=>'iac/','ig01'=>'ig01','im1k'=>'im1k','inno'=>'inno','iris'=>'iris','jata'=>'jata','java'=>'java','kddi'=>'kddi','kgt'=>'kgt','kgt/'=>'kgt/','kpt '=>'kpt ','kwc-'=>'kwc-','klon'=>'klon','lexi'=>'lexi','lg g'=>'lg g','lg-a'=>'lg-a','lg-b'=>'lg-b','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-f'=>'lg-f','lg-g'=>'lg-g','lg-k'=>'lg-k','lg-l'=>'lg-l','lg-m'=>'lg-m','lg-o'=>'lg-o','lg-p'=>'lg-p','lg-s'=>'lg-s','lg-t'=>'lg-t','lg-u'=>'lg-u','lg-w'=>'lg-w','lg/k'=>'lg/k','lg/l'=>'lg/l','lg/u'=>'lg/u','lg50'=>'lg50','lg54'=>'lg54','lge-'=>'lge-','lge/'=>'lge/','lynx'=>'lynx','leno'=>'leno','m1-w'=>'m1-w','m3ga'=>'m3ga','m50/'=>'m50/','maui'=>'maui','mc01'=>'mc01','mc21'=>'mc21','mcca'=>'mcca','medi'=>'medi','meri'=>'meri','mio8'=>'mio8','mioa'=>'mioa','mo01'=>'mo01','mo02'=>'mo02','mode'=>'mode','modo'=>'modo','mot '=>'mot ','mot-'=>'mot-','mt50'=>'mt50','mtp1'=>'mtp1','mtv '=>'mtv ','mate'=>'mate','maxo'=>'maxo','merc'=>'merc','mits'=>'mits','mobi'=>'mobi','motv'=>'motv','mozz'=>'mozz','n100'=>'n100','n101'=>'n101','n102'=>'n102','n202'=>'n202','n203'=>'n203','n300'=>'n300','n302'=>'n302','n500'=>'n500','n502'=>'n502','n505'=>'n505','n700'=>'n700','n701'=>'n701','n710'=>'n710','nec-'=>'nec-','nem-'=>'nem-','newg'=>'newg','neon'=>'neon','netf'=>'netf','noki'=>'noki','nzph'=>'nzph','o2 x'=>'o2 x','o2-x'=>'o2-x','opwv'=>'opwv','owg1'=>'owg1','opti'=>'opti','oran'=>'oran','p800'=>'p800','pand'=>'pand','pg-1'=>'pg-1','pg-2'=>'pg-2','pg-3'=>'pg-3','pg-6'=>'pg-6','pg-8'=>'pg-8','pg-c'=>'pg-c','pg13'=>'pg13','phil'=>'phil','pn-2'=>'pn-2','pt-g'=>'pt-g','palm'=>'palm','pana'=>'pana','pire'=>'pire','pock'=>'pock','pose'=>'pose','psio'=>'psio','qa-a'=>'qa-a','qc-2'=>'qc-2','qc-3'=>'qc-3','qc-5'=>'qc-5','qc-7'=>'qc-7','qc07'=>'qc07','qc12'=>'qc12','qc21'=>'qc21','qc32'=>'qc32','qc60'=>'qc60','qci-'=>'qci-','qwap'=>'qwap','qtek'=>'qtek','r380'=>'r380','r600'=>'r600','raks'=>'raks','rim9'=>'rim9','rove'=>'rove','s55/'=>'s55/','sage'=>'sage','sams'=>'sams','sc01'=>'sc01','sch-'=>'sch-','scp-'=>'scp-','sdk/'=>'sdk/','se47'=>'se47','sec-'=>'sec-','sec0'=>'sec0','sec1'=>'sec1','semc'=>'semc','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','sk-0'=>'sk-0','sl45'=>'sl45','slid'=>'slid','smb3'=>'smb3','smt5'=>'smt5','sp01'=>'sp01','sph-'=>'sph-','spv '=>'spv ','spv-'=>'spv-','sy01'=>'sy01','samm'=>'samm','sany'=>'sany','sava'=>'sava','scoo'=>'scoo','send'=>'send','siem'=>'siem','smar'=>'smar','smit'=>'smit','soft'=>'soft','sony'=>'sony','t-mo'=>'t-mo','t218'=>'t218','t250'=>'t250','t600'=>'t600','t610'=>'t610','t618'=>'t618','tcl-'=>'tcl-','tdg-'=>'tdg-','telm'=>'telm','tim-'=>'tim-','ts70'=>'ts70','tsm-'=>'tsm-','tsm3'=>'tsm3','tsm5'=>'tsm5','tx-9'=>'tx-9','tagt'=>'tagt','talk'=>'talk','teli'=>'teli','topl'=>'topl','hiba'=>'hiba','up.b'=>'up.b','upg1'=>'upg1','utst'=>'utst','v400'=>'v400','v750'=>'v750','veri'=>'veri','vk-v'=>'vk-v','vk40'=>'vk40','vk50'=>'vk50','vk52'=>'vk52','vk53'=>'vk53','vm40'=>'vm40','vx98'=>'vx98','virg'=>'virg','vite'=>'vite','voda'=>'voda','vulc'=>'vulc','w3c '=>'w3c ','w3c-'=>'w3c-','wapj'=>'wapj','wapp'=>'wapp','wapu'=>'wapu','wapm'=>'wapm','wig '=>'wig ','wapi'=>'wapi','wapr'=>'wapr','wapv'=>'wapv','wapy'=>'wapy','wapa'=>'wapa','waps'=>'waps','wapt'=>'wapt','winc'=>'winc','winw'=>'winw','wonu'=>'wonu','x700'=>'x700','xda2'=>'xda2','xdag'=>'xdag','yas-'=>'yas-','your'=>'your','zte-'=>'zte-','zeto'=>'zeto','acs-'=>'acs-','alav'=>'alav','alca'=>'alca','amoi'=>'amoi','aste'=>'aste','audi'=>'audi','avan'=>'avan','benq'=>'benq','bird'=>'bird','blac'=>'blac','blaz'=>'blaz','brew'=>'brew','brvw'=>'brvw','bumb'=>'bumb','ccwa'=>'ccwa','cell'=>'cell','cldc'=>'cldc','cmd-'=>'cmd-','dang'=>'dang','doco'=>'doco','eml2'=>'eml2','eric'=>'eric','fetc'=>'fetc','hipt'=>'hipt','http'=>'http','ibro'=>'ibro','idea'=>'idea','ikom'=>'ikom','inno'=>'inno','ipaq'=>'ipaq','jbro'=>'jbro','jemu'=>'jemu','java'=>'java','jigs'=>'jigs','kddi'=>'kddi','keji'=>'keji','kyoc'=>'kyoc','kyok'=>'kyok','leno'=>'leno','lg-c'=>'lg-c','lg-d'=>'lg-d','lg-g'=>'lg-g','lge-'=>'lge-','libw'=>'libw','m-cr'=>'m-cr','maui'=>'maui','maxo'=>'maxo','midp'=>'midp','mits'=>'mits','mmef'=>'mmef','mobi'=>'mobi','mot-'=>'mot-','moto'=>'moto','mwbp'=>'mwbp','mywa'=>'mywa','nec-'=>'nec-','newt'=>'newt','nok6'=>'nok6','noki'=>'noki','o2im'=>'o2im','opwv'=>'opwv','palm'=>'palm','pana'=>'pana','pant'=>'pant','pdxg'=>'pdxg','phil'=>'phil','play'=>'play','pluc'=>'pluc','port'=>'port','prox'=>'prox','qtek'=>'qtek','qwap'=>'qwap','rozo'=>'rozo','sage'=>'sage','sama'=>'sama','sams'=>'sams','sany'=>'sany','sch-'=>'sch-','sec-'=>'sec-','send'=>'send','seri'=>'seri','sgh-'=>'sgh-','shar'=>'shar','sie-'=>'sie-','siem'=>'siem','smal'=>'smal','smar'=>'smar','sony'=>'sony','sph-'=>'sph-','symb'=>'symb','t-mo'=>'t-mo','teli'=>'teli','tim-'=>'tim-','tosh'=>'tosh','treo'=>'treo','tsm-'=>'tsm-','upg1'=>'upg1','upsi'=>'upsi','vk-v'=>'vk-v','voda'=>'voda','vx52'=>'vx52','vx53'=>'vx53','vx60'=>'vx60','vx61'=>'vx61','vx70'=>'vx70','vx80'=>'vx80','vx81'=>'vx81','vx83'=>'vx83','vx85'=>'vx85','wap-'=>'wap-','wapa'=>'wapa','wapi'=>'wapi','wapp'=>'wapp','wapr'=>'wapr','webc'=>'webc','whit'=>'whit','winw'=>'winw','wmlb'=>'wmlb','xda-'=>'xda-',))); $mobile_browser = true; $status = 'Mobile matched on in_array'; break; default; $mobile_browser = false; $status = 'Desktop / full capability browser'; break; } if($redirect = ($mobile_browser==true) ? $mobileredirect : $desktopredirect){ header('Location: '.$redirect); exit; }else{ if($mobile_browser==''){ return $mobile_browser; }else{ return array($mobile_browser,$status); } } } ?>
\ No newline at end of file
index c3709e9..6f84b07 100644 (file)
-<?php
-// vim: foldmethod=marker
-
-/* Generic exception class
- */
-class OAuthException extends Exception {
-  // pass
-}
-
-class OAuthConsumer {
-  public $key;
-  public $secret;
-
-  function __construct($key, $secret) {
-    $this->key = $key;
-    $this->secret = $secret;
-  }
-
-  function __toString() {
-    return "OAuthConsumer[key=$this->key,secret=$this->secret]";
-  }
-}
-
-class OAuthToken {
-  // access tokens and request tokens
-  public $key;
-  public $secret;
-
-  /**
-   * key = the token
-   * secret = the token secret
-   */
-  function __construct($key, $secret) {
-    $this->key = $key;
-    $this->secret = $secret;
-  }
-
-  /**
-   * generates the basic string serialization of a token that a server
-   * would respond to request_token and access_token calls with
-   */
-  function to_string() {
-    return "oauth_token=" .
-           OAuthUtil::urlencode_rfc3986($this->key) .
-           "&oauth_token_secret=" .
-           OAuthUtil::urlencode_rfc3986($this->secret);
-  }
-
-  function __toString() {
-    return $this->to_string();
-  }
-}
-
-class OAuthSignatureMethod {
-  public function check_signature(&$request, $consumer, $token, $signature) {
-    $built = $this->build_signature($request, $consumer, $token);
-    return $built == $signature;
-  }
-}
-
-class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {
-  function get_name() {
-    return "HMAC-SHA1";
-  }
-
-  public function build_signature($request, $consumer, $token) {
-    $base_string = $request->get_signature_base_string();
-    $request->base_string = $base_string;
-
-    $key_parts = array(
-      $consumer->secret,
-      ($token) ? $token->secret : ""
-    );
-
-    $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);
-    $key = implode('&', $key_parts);
-
-    return base64_encode(hash_hmac('sha1', $base_string, $key, true));
-  }
-}
-
-class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod {
-  public function get_name() {
-    return "PLAINTEXT";
-  }
-
-  public function build_signature($request, $consumer, $token) {
-    $sig = array(
-      OAuthUtil::urlencode_rfc3986($consumer->secret)
-    );
-
-    if ($token) {
-      array_push($sig, OAuthUtil::urlencode_rfc3986($token->secret));
-    } else {
-      array_push($sig, '');
-    }
-
-    $raw = implode("&", $sig);
-    // for debug purposes
-    $request->base_string = $raw;
-
-    return OAuthUtil::urlencode_rfc3986($raw);
-  }
-}
-
-class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {
-  public function get_name() {
-    return "RSA-SHA1";
-  }
-
-  protected function fetch_public_cert(&$request) {
-    // not implemented yet, ideas are:
-    // (1) do a lookup in a table of trusted certs keyed off of consumer
-    // (2) fetch via http using a url provided by the requester
-    // (3) some sort of specific discovery code based on request
-    //
-    // either way should return a string representation of the certificate
-    throw Exception("fetch_public_cert not implemented");
-  }
-
-  protected function fetch_private_cert(&$request) {
-    // not implemented yet, ideas are:
-    // (1) do a lookup in a table of trusted certs keyed off of consumer
-    //
-    // either way should return a string representation of the certificate
-    throw Exception("fetch_private_cert not implemented");
-  }
-
-  public function build_signature(&$request, $consumer, $token) {
-    $base_string = $request->get_signature_base_string();
-    $request->base_string = $base_string;
-
-    // Fetch the private key cert based on the request
-    $cert = $this->fetch_private_cert($request);
-
-    // Pull the private key ID from the certificate
-    $privatekeyid = openssl_get_privatekey($cert);
-
-    // Sign using the key
-    $ok = openssl_sign($base_string, $signature, $privatekeyid);
-
-    // Release the key resource
-    openssl_free_key($privatekeyid);
-
-    return base64_encode($signature);
-  }
-
-  public function check_signature(&$request, $consumer, $token, $signature) {
-    $decoded_sig = base64_decode($signature);
-
-    $base_string = $request->get_signature_base_string();
-
-    // Fetch the public key cert based on the request
-    $cert = $this->fetch_public_cert($request);
-
-    // Pull the public key ID from the certificate
-    $publickeyid = openssl_get_publickey($cert);
-
-    // Check the computed signature against the one passed in the query
-    $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);
-
-    // Release the key resource
-    openssl_free_key($publickeyid);
-
-    return $ok == 1;
-  }
-}
-
-class OAuthRequest {
-  private $parameters;
-  private $http_method;
-  private $http_url;
-  // for debug purposes
-  public $base_string;
-  public static $version = '1.0a';
-  public static $POST_INPUT = 'php://input';
-
-  function __construct($http_method, $http_url, $parameters=NULL) {
-    @$parameters or $parameters = array();
-    $this->parameters = $parameters;
-    $this->http_method = $http_method;
-    $this->http_url = $http_url;
-  }
-
-
-  /**
-   * attempt to build up a request from what was passed to the server
-   */
-  public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {
-    $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")
-              ? 'http'
-              : 'https';
-    @$http_url or $http_url = $scheme .
-                              '://' . $_SERVER['HTTP_HOST'] .
-                              ':' .
-                              $_SERVER['SERVER_PORT'] .
-                              $_SERVER['REQUEST_URI'];
-    @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];
-
-    // We weren't handed any parameters, so let's find the ones relevant to
-    // this request.
-    // If you run XML-RPC or similar you should use this to provide your own
-    // parsed parameter-list
-    if (!$parameters) {
-      // Find request headers
-      $request_headers = OAuthUtil::get_headers();
-
-      // Parse the query-string to find GET parameters
-      $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);
-
-      // It's a POST request of the proper content-type, so parse POST
-      // parameters and add those overriding any duplicates from GET
-      if ($http_method == "POST"
-          && @strstr($request_headers["Content-Type"],
-                     "application/x-www-form-urlencoded")
-          ) {
-        $post_data = OAuthUtil::parse_parameters(
-          file_get_contents(self::$POST_INPUT)
-        );
-        $parameters = array_merge($parameters, $post_data);
-      }
-
-      // We have a Authorization-header with OAuth data. Parse the header
-      // and add those overriding any duplicates from GET or POST
-      if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {
-        $header_parameters = OAuthUtil::split_header(
-          $request_headers['Authorization']
-        );
-        $parameters = array_merge($parameters, $header_parameters);
-      }
-
-    }
-
-    return new OAuthRequest($http_method, $http_url, $parameters);
-  }
-
-  /**
-   * pretty much a helper function to set up the request
-   */
-  public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {
-    @$parameters or $parameters = array();
-    $defaults = array("oauth_version" => OAuthRequest::$version,
-                      "oauth_nonce" => OAuthRequest::generate_nonce(),
-                      "oauth_timestamp" => OAuthRequest::generate_timestamp(),
-                      "oauth_consumer_key" => $consumer->key);
-    if ($token)
-      $defaults['oauth_token'] = $token->key;
-
-    $parameters = array_merge($defaults, $parameters);
-
-    return new OAuthRequest($http_method, $http_url, $parameters);
-  }
-
-  public function set_parameter($name, $value, $allow_duplicates = true) {
-    if ($allow_duplicates && isset($this->parameters[$name])) {
-      // We have already added parameter(s) with this name, so add to the list
-      if (is_scalar($this->parameters[$name])) {
-        // This is the first duplicate, so transform scalar (string)
-        // into an array so we can add the duplicates
-        $this->parameters[$name] = array($this->parameters[$name]);
-      }
-
-      $this->parameters[$name][] = $value;
-    } else {
-      $this->parameters[$name] = $value;
-    }
-  }
-
-  public function get_parameter($name) {
-    return isset($this->parameters[$name]) ? $this->parameters[$name] : null;
-  }
-
-  public function get_parameters() {
-    return $this->parameters;
-  }
-
-  public function unset_parameter($name) {
-    unset($this->parameters[$name]);
-  }
-
-  /**
-   * The request parameters, sorted and concatenated into a normalized string.
-   * @return string
-   */
-  public function get_signable_parameters() {
-    // Grab all parameters
-    $params = $this->parameters;
-
-    // Remove oauth_signature if present
-    // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")
-    if (isset($params['oauth_signature'])) {
-      unset($params['oauth_signature']);
-    }
-
-    return OAuthUtil::build_http_query($params);
-  }
-
-  /**
-   * Returns the base string of this request
-   *
-   * The base string defined as the method, the url
-   * and the parameters (normalized), each urlencoded
-   * and the concated with &.
-   */
-  public function get_signature_base_string() {
-    $parts = array(
-      $this->get_normalized_http_method(),
-      $this->get_normalized_http_url(),
-      $this->get_signable_parameters()
-    );
-
-    $parts = OAuthUtil::urlencode_rfc3986($parts);
-
-    return implode('&', $parts);
-  }
-
-  /**
-   * just uppercases the http method
-   */
-  public function get_normalized_http_method() {
-    return strtoupper($this->http_method);
-  }
-
-  /**
-   * parses the url and rebuilds it to be
-   * scheme://host/path
-   */
-  public function get_normalized_http_url() {
-    $parts = parse_url($this->http_url);
-
-    $port = @$parts['port'];
-    $scheme = $parts['scheme'];
-    $host = $parts['host'];
-    $path = @$parts['path'];
-
-    $port or $port = ($scheme == 'https') ? '443' : '80';
-
-    if (($scheme == 'https' && $port != '443')
-        || ($scheme == 'http' && $port != '80')) {
-      $host = "$host:$port";
-    }
-    return "$scheme://$host$path";
-  }
-
-  /**
-   * builds a url usable for a GET request
-   */
-  public function to_url() {
-    $post_data = $this->to_postdata();
-    $out = $this->get_normalized_http_url();
-    if ($post_data) {
-      $out .= '?'.$post_data;
-    }
-    return $out;
-  }
-
-  /**
-   * builds the data one would send in a POST request
-   */
-  public function to_postdata() {
-    return OAuthUtil::build_http_query($this->parameters);
-  }
-
-  /**
-   * builds the Authorization: header
-   */
-  public function to_header() {
-    $out ='Authorization: OAuth realm=""';
-    $total = array();
-    foreach ($this->parameters as $k => $v) {
-      if (substr($k, 0, 5) != "oauth") continue;
-      if (is_array($v)) {
-        throw new OAuthException('Arrays not supported in headers');
-      }
-      $out .= ',' .
-              OAuthUtil::urlencode_rfc3986($k) .
-              '="' .
-              OAuthUtil::urlencode_rfc3986($v) .
-              '"';
-    }
-    return $out;
-  }
-
-  public function __toString() {
-    return $this->to_url();
-  }
-
-
-  public function sign_request($signature_method, $consumer, $token) {
-    $this->set_parameter(
-      "oauth_signature_method",
-      $signature_method->get_name(),
-      false
-    );
-    $signature = $this->build_signature($signature_method, $consumer, $token);
-    $this->set_parameter("oauth_signature", $signature, false);
-  }
-
-  public function build_signature($signature_method, $consumer, $token) {
-    $signature = $signature_method->build_signature($this, $consumer, $token);
-    return $signature;
-  }
-
-  /**
-   * util function: current timestamp
-   */
-  private static function generate_timestamp() {
-    return time();
-  }
-
-  /**
-   * util function: current nonce
-   */
-  private static function generate_nonce() {
-    $mt = microtime();
-    $rand = mt_rand();
-
-    return md5($mt . $rand); // md5s look nicer than numbers
-  }
-}
-
-class OAuthServer {
-  protected $timestamp_threshold = 300; // in seconds, five minutes
-  protected $version = 1.0;             // hi blaine
-  protected $signature_methods = array();
-
-  protected $data_store;
-
-  function __construct($data_store) {
-    $this->data_store = $data_store;
-  }
-
-  public function add_signature_method($signature_method) {
-    $this->signature_methods[$signature_method->get_name()] =
-      $signature_method;
-  }
-
-  // high level functions
-
-  /**
-   * process a request_token request
-   * returns the request token on success
-   */
-  public function fetch_request_token(&$request) {
-    $this->get_version($request);
-
-    $consumer = $this->get_consumer($request);
-
-    // no token required for the initial token request
-    $token = NULL;
-
-    $this->check_signature($request, $consumer, $token);
-
-    $new_token = $this->data_store->new_request_token($consumer);
-
-    return $new_token;
-  }
-
-  /**
-   * process an access_token request
-   * returns the access token on success
-   */
-  public function fetch_access_token(&$request) {
-    $this->get_version($request);
-
-    $consumer = $this->get_consumer($request);
-
-    // requires authorized request token
-    $token = $this->get_token($request, $consumer, "request");
-
-
-    $this->check_signature($request, $consumer, $token);
-
-    $new_token = $this->data_store->new_access_token($token, $consumer);
-
-    return $new_token;
-  }
-
-  /**
-   * verify an api call, checks all the parameters
-   */
-  public function verify_request(&$request) {
-    $this->get_version($request);
-    $consumer = $this->get_consumer($request);
-    $token = $this->get_token($request, $consumer, "access");
-    $this->check_signature($request, $consumer, $token);
-    return array($consumer, $token);
-  }
-
-  // Internals from here
-  /**
-   * version 1
-   */
-  private function get_version(&$request) {
-    $version = $request->get_parameter("oauth_version");
-    if (!$version) {
-      $version = 1.0;
-    }
-    if ($version && $version != $this->version) {
-      throw new OAuthException("OAuth version '$version' not supported");
-    }
-    return $version;
-  }
-
-  /**
-   * figure out the signature with some defaults
-   */
-  private function get_signature_method(&$request) {
-    $signature_method =
-        @$request->get_parameter("oauth_signature_method");
-    if (!$signature_method) {
-      $signature_method = "PLAINTEXT";
-    }
-    if (!in_array($signature_method,
-                  array_keys($this->signature_methods))) {
-      throw new OAuthException(
-        "Signature method '$signature_method' not supported " .
-        "try one of the following: " .
-        implode(", ", array_keys($this->signature_methods))
-      );
-    }
-    return $this->signature_methods[$signature_method];
-  }
-
-  /**
-   * try to find the consumer for the provided request's consumer key
-   */
-  private function get_consumer(&$request) {
-    $consumer_key = @$request->get_parameter("oauth_consumer_key");
-    if (!$consumer_key) {
-      throw new OAuthException("Invalid consumer key");
-    }
-
-    $consumer = $this->data_store->lookup_consumer($consumer_key);
-    if (!$consumer) {
-      throw new OAuthException("Invalid consumer");
-    }
-
-    return $consumer;
-  }
-
-  /**
-   * try to find the token for the provided request's token key
-   */
-  private function get_token(&$request, $consumer, $token_type="access") {
-    $token_field = @$request->get_parameter('oauth_token');
-    $token = $this->data_store->lookup_token(
-      $consumer, $token_type, $token_field
-    );
-    if (!$token) {
-      throw new OAuthException("Invalid $token_type token: $token_field");
-    }
-    return $token;
-  }
-
-  /**
-   * all-in-one function to check the signature on a request
-   * should guess the signature method appropriately
-   */
-  private function check_signature(&$request, $consumer, $token) {
-    // this should probably be in a different method
-    $timestamp = @$request->get_parameter('oauth_timestamp');
-    $nonce = @$request->get_parameter('oauth_nonce');
-
-    $this->check_timestamp($timestamp);
-    $this->check_nonce($consumer, $token, $nonce, $timestamp);
-
-    $signature_method = $this->get_signature_method($request);
-
-    $signature = $request->get_parameter('oauth_signature');
-    $valid_sig = $signature_method->check_signature(
-      $request,
-      $consumer,
-      $token,
-      $signature
-    );
-
-    if (!$valid_sig) {
-      throw new OAuthException("Invalid signature");
-    }
-  }
-
-  /**
-   * check that the timestamp is new enough
-   */
-  private function check_timestamp($timestamp) {
-    // verify that timestamp is recentish
-    $now = time();
-    if ($now - $timestamp > $this->timestamp_threshold) {
-      throw new OAuthException(
-        "Expired timestamp, yours $timestamp, ours $now"
-      );
-    }
-  }
-
-  /**
-   * check that the nonce is not repeated
-   */
-  private function check_nonce($consumer, $token, $nonce, $timestamp) {
-    // verify that the nonce is uniqueish
-    $found = $this->data_store->lookup_nonce(
-      $consumer,
-      $token,
-      $nonce,
-      $timestamp
-    );
-    if ($found) {
-      throw new OAuthException("Nonce already used: $nonce");
-    }
-  }
-
-}
-
-class OAuthDataStore {
-  function lookup_consumer($consumer_key) {
-    // implement me
-  }
-
-  function lookup_token($consumer, $token_type, $token) {
-    // implement me
-  }
-
-  function lookup_nonce($consumer, $token, $nonce, $timestamp) {
-    // implement me
-  }
-
-  function new_request_token($consumer) {
-    // return a new token attached to this consumer
-  }
-
-  function new_access_token($token, $consumer) {
-    // return a new access token attached to this consumer
-    // for the user associated with this token if the request token
-    // is authorized
-    // should also invalidate the request token
-  }
-
-}
-
-class OAuthUtil {
-  public static function urlencode_rfc3986($input) {
-  if (is_array($input)) {
-    return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);
-  } else if (is_scalar($input)) {
-    return str_replace(
-      '+',
-      ' ',
-      str_replace('%7E', '~', rawurlencode($input))
-    );
-  } else {
-    return '';
-  }
-}
-
-
-  // This decode function isn't taking into consideration the above
-  // modifications to the encoding process. However, this method doesn't
-  // seem to be used anywhere so leaving it as is.
-  public static function urldecode_rfc3986($string) {
-    return urldecode($string);
-  }
-
-  // Utility function for turning the Authorization: header into
-  // parameters, has to do some unescaping
-  // Can filter out any non-oauth parameters if needed (default behaviour)
-  public static function split_header($header, $only_allow_oauth_parameters = true) {
-    $pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/';
-    $offset = 0;
-    $params = array();
-    while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {
-      $match = $matches[0];
-      $header_name = $matches[2][0];
-      $header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0];
-      if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) {
-        $params[$header_name] = OAuthUtil::urldecode_rfc3986($header_content);
-      }
-      $offset = $match[1] + strlen($match[0]);
-    }
-
-    if (isset($params['realm'])) {
-      unset($params['realm']);
-    }
-
-    return $params;
-  }
-
-  // helper to try to sort out headers for people who aren't running apache
-  public static function get_headers() {
-    if (function_exists('apache_request_headers')) {
-      // we need this to get the actual Authorization: header
-      // because apache tends to tell us it doesn't exist
-      return apache_request_headers();
-    }
-    // otherwise we don't have apache and are just going to have to hope
-    // that $_SERVER actually contains what we need
-    $out = array();
-    foreach ($_SERVER as $key => $value) {
-      if (substr($key, 0, 5) == "HTTP_") {
-        // this is chaos, basically it is just there to capitalize the first
-        // letter of every word that is not an initial HTTP and strip HTTP
-        // code from przemek
-        $key = str_replace(
-          " ",
-          "-",
-          ucwords(strtolower(str_replace("_", " ", substr($key, 5))))
-        );
-        $out[$key] = $value;
-      }
-    }
-    return $out;
-  }
-
-  // This function takes a input like a=b&a=c&d=e and returns the parsed
-  // parameters like this
-  // array('a' => array('b','c'), 'd' => 'e')
-  public static function parse_parameters( $input ) {
-    if (!isset($input) || !$input) return array();
-
-    $pairs = split('&', $input);
-
-    $parsed_parameters = array();
-    foreach ($pairs as $pair) {
-      $split = split('=', $pair, 2);
-      $parameter = OAuthUtil::urldecode_rfc3986($split[0]);
-      $value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : '';
-
-      if (isset($parsed_parameters[$parameter])) {
-        // We have already recieved parameter(s) with this name, so add to the list
-        // of parameters with this name
-
-        if (is_scalar($parsed_parameters[$parameter])) {
-          // This is the first duplicate, so transform scalar (string) into an array
-          // so we can add the duplicates
-          $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);
-        }
-
-        $parsed_parameters[$parameter][] = $value;
-      } else {
-        $parsed_parameters[$parameter] = $value;
-      }
-    }
-    return $parsed_parameters;
-  }
-
-  public static function build_http_query($params) {
-    if (!$params) return '';
-
-    // Urlencode both keys and values
-    $keys = OAuthUtil::urlencode_rfc3986(array_keys($params));
-    $values = OAuthUtil::urlencode_rfc3986(array_values($params));
-    $params = array_combine($keys, $values);
-
-    // Parameters are sorted by name, using lexicographical byte value ordering.
-    // Ref: Spec: 9.1.1 (1)
-    uksort($params, 'strcmp');
-
-    $pairs = array();
-    foreach ($params as $parameter => $value) {
-      if (is_array($value)) {
-        // If two or more parameters share the same name, they are sorted by their value
-        // Ref: Spec: 9.1.1 (1)
-        natsort($value);
-        foreach ($value as $duplicate_value) {
-          $pairs[] = $parameter . '=' . $duplicate_value;
-        }
-      } else {
-        $pairs[] = $parameter . '=' . $value;
-      }
-    }
-    // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)
-    // Each name-value pair is separated by an '&' character (ASCII code 38)
-    return implode('&', $pairs);
-  }
-}
-
-?>
+<?php\r
+\r
+/* Generic exception class\r
+ */\r
+class OAuthException extends Exception {\r
+  // pass\r
+}\r
+\r
+class OAuthConsumer {\r
+  public $key;\r
+  public $secret;\r
+\r
+  function __construct($key, $secret) {\r
+    $this->key = $key;\r
+    $this->secret = $secret;\r
+  }\r
+\r
+  function __toString() {\r
+    return "OAuthConsumer[key=$this->key,secret=$this->secret]";\r
+  }\r
+}\r
+\r
+class OAuthToken {\r
+  // access tokens and request tokens\r
+  public $key;\r
+  public $secret;\r
+\r
+  /**\r
+   * key = the token\r
+   * secret = the token secret\r
+   */\r
+  function __construct($key, $secret) {\r
+    $this->key = $key;\r
+    $this->secret = $secret;\r
+  }\r
+\r
+  /**\r
+   * generates the basic string serialization of a token that a server\r
+   * would respond to request_token and access_token calls with\r
+   */\r
+  function to_string() {\r
+    return "oauth_token=" .\r
+           OAuthUtil::urlencode_rfc3986($this->key) .\r
+           "&oauth_token_secret=" .\r
+           OAuthUtil::urlencode_rfc3986($this->secret);\r
+  }\r
+\r
+  function __toString() {\r
+    return $this->to_string();\r
+  }\r
+}\r
+\r
+class OAuthSignatureMethod {\r
+  public function check_signature(&$request, $consumer, $token, $signature) {\r
+    $built = $this->build_signature($request, $consumer, $token);\r
+    return $built == $signature;\r
+  }\r
+}\r
+\r
+class OAuthSignatureMethod_HMAC_SHA1 extends OAuthSignatureMethod {\r
+  function get_name() {\r
+    return "HMAC-SHA1";\r
+  }\r
+\r
+  public function build_signature($request, $consumer, $token) {\r
+    $base_string = $request->get_signature_base_string();\r
+    $request->base_string = $base_string;\r
+\r
+    $key_parts = array(\r
+      $consumer->secret,\r
+      ($token) ? $token->secret : ""\r
+    );\r
+\r
+    $key_parts = OAuthUtil::urlencode_rfc3986($key_parts);\r
+    $key = implode('&', $key_parts);\r
+\r
+    return base64_encode(hash_hmac('sha1', $base_string, $key, true));\r
+  }\r
+}\r
+\r
+class OAuthSignatureMethod_PLAINTEXT extends OAuthSignatureMethod {\r
+  public function get_name() {\r
+    return "PLAINTEXT";\r
+  }\r
+\r
+  public function build_signature($request, $consumer, $token) {\r
+    $sig = array(\r
+      OAuthUtil::urlencode_rfc3986($consumer->secret)\r
+    );\r
+\r
+    if ($token) {\r
+      array_push($sig, OAuthUtil::urlencode_rfc3986($token->secret));\r
+    } else {\r
+      array_push($sig, '');\r
+    }\r
+\r
+    $raw = implode("&", $sig);\r
+    // for debug purposes\r
+    $request->base_string = $raw;\r
+\r
+    return OAuthUtil::urlencode_rfc3986($raw);\r
+  }\r
+}\r
+\r
+class OAuthSignatureMethod_RSA_SHA1 extends OAuthSignatureMethod {\r
+  public function get_name() {\r
+    return "RSA-SHA1";\r
+  }\r
+\r
+  protected function fetch_public_cert(&$request) {\r
+    // not implemented yet, ideas are:\r
+    // (1) do a lookup in a table of trusted certs keyed off of consumer\r
+    // (2) fetch via http using a url provided by the requester\r
+    // (3) some sort of specific discovery code based on request\r
+    //\r
+    // either way should return a string representation of the certificate\r
+    throw Exception("fetch_public_cert not implemented");\r
+  }\r
+\r
+  protected function fetch_private_cert(&$request) {\r
+    // not implemented yet, ideas are:\r
+    // (1) do a lookup in a table of trusted certs keyed off of consumer\r
+    //\r
+    // either way should return a string representation of the certificate\r
+    throw Exception("fetch_private_cert not implemented");\r
+  }\r
+\r
+  public function build_signature(&$request, $consumer, $token) {\r
+    $base_string = $request->get_signature_base_string();\r
+    $request->base_string = $base_string;\r
+\r
+    // Fetch the private key cert based on the request\r
+    $cert = $this->fetch_private_cert($request);\r
+\r
+    // Pull the private key ID from the certificate\r
+    $privatekeyid = openssl_get_privatekey($cert);\r
+\r
+    // Sign using the key\r
+    $ok = openssl_sign($base_string, $signature, $privatekeyid);\r
+\r
+    // Release the key resource\r
+    openssl_free_key($privatekeyid);\r
+\r
+    return base64_encode($signature);\r
+  }\r
+\r
+  public function check_signature(&$request, $consumer, $token, $signature) {\r
+    $decoded_sig = base64_decode($signature);\r
+\r
+    $base_string = $request->get_signature_base_string();\r
+\r
+    // Fetch the public key cert based on the request\r
+    $cert = $this->fetch_public_cert($request);\r
+\r
+    // Pull the public key ID from the certificate\r
+    $publickeyid = openssl_get_publickey($cert);\r
+\r
+    // Check the computed signature against the one passed in the query\r
+    $ok = openssl_verify($base_string, $decoded_sig, $publickeyid);\r
+\r
+    // Release the key resource\r
+    openssl_free_key($publickeyid);\r
+\r
+    return $ok == 1;\r
+  }\r
+}\r
+\r
+class OAuthRequest {\r
+  private $parameters;\r
+  private $http_method;\r
+  private $http_url;\r
+  public $http_header;\r
+  // for debug purposes\r
+  public $base_string;\r
+  public static $version = '1.0a';\r
+  public static $POST_INPUT = 'php://input';\r
+\r
+  function __construct($http_method, $http_url, $parameters = array(), $http_header= array()) {\r
+    //@$parameters or $parameters = array();\r
+    $this->parameters = $parameters;\r
+       //@$http_header or $http_header = array();\r
+       $this->http_header = $http_header;\r
+    $this->http_method = $http_method;\r
+    $this->http_url = $http_url;\r
+  }\r
+\r
+\r
+  /**\r
+   * attempt to build up a request from what was passed to the server\r
+   */\r
+  public static function from_request($http_method=NULL, $http_url=NULL, $parameters=NULL) {\r
+    $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on")\r
+              ? 'http'\r
+              : 'https';\r
+    @$http_url or $http_url = $scheme .\r
+                              '://' . $_SERVER['HTTP_HOST'] .\r
+                              ':' .\r
+                              $_SERVER['SERVER_PORT'] .\r
+                              $_SERVER['REQUEST_URI'];\r
+    @$http_method or $http_method = $_SERVER['REQUEST_METHOD'];\r
+\r
+    // We weren't handed any parameters, so let's find the ones relevant to\r
+    // this request.\r
+    // If you run XML-RPC or similar you should use this to provide your own\r
+    // parsed parameter-list\r
+    if (!$parameters) {\r
+      // Find request headers\r
+      $request_headers = OAuthUtil::get_headers();\r
+\r
+      // Parse the query-string to find GET parameters\r
+      $parameters = OAuthUtil::parse_parameters($_SERVER['QUERY_STRING']);\r
+\r
+      // It's a POST request of the proper content-type, so parse POST\r
+      // parameters and add those overriding any duplicates from GET\r
+      if ($http_method == "POST"\r
+          && @strstr($request_headers["Content-Type"],\r
+                     "application/x-www-form-urlencoded")\r
+          ) {\r
+        $post_data = OAuthUtil::parse_parameters(\r
+          file_get_contents(self::$POST_INPUT)\r
+        );\r
+        $parameters = array_merge($parameters, $post_data);\r
+      }\r
+\r
+      // We have a Authorization-header with OAuth data. Parse the header\r
+      // and add those overriding any duplicates from GET or POST\r
+      if (@substr($request_headers['Authorization'], 0, 6) == "OAuth ") {\r
+        $header_parameters = OAuthUtil::split_header(\r
+          $request_headers['Authorization']\r
+        );\r
+        $parameters = array_merge($parameters, $header_parameters);\r
+      }\r
+\r
+    }\r
+\r
+    return new OAuthRequest($http_method, $http_url, $parameters);\r
+  }\r
+\r
+  /**\r
+   * pretty much a helper function to set up the request\r
+   */\r
+  public static function from_consumer_and_token($consumer, $token, $http_method, $http_url, $parameters=NULL) {\r
+    @$parameters or $parameters = array();\r
+    $defaults = array("oauth_version" => OAuthRequest::$version,\r
+                      "oauth_nonce" => OAuthRequest::generate_nonce(),\r
+                      "oauth_timestamp" => OAuthRequest::generate_timestamp(),\r
+                      "oauth_consumer_key" => $consumer->key);\r
+    if ($token)\r
+      $defaults['oauth_token'] = $token->key;\r
+\r
+    $parameters = array_merge($defaults, $parameters);\r
+\r
+    return new OAuthRequest($http_method, $http_url, $parameters);\r
+  }\r
+\r
+  public function set_parameter($name, $value, $allow_duplicates = true) {\r
+    if ($allow_duplicates && isset($this->parameters[$name])) {\r
+      // We have already added parameter(s) with this name, so add to the list\r
+      if (is_scalar($this->parameters[$name])) {\r
+        // This is the first duplicate, so transform scalar (string)\r
+        // into an array so we can add the duplicates\r
+        $this->parameters[$name] = array($this->parameters[$name]);\r
+      }\r
+\r
+      $this->parameters[$name][] = $value;\r
+    } else {\r
+      $this->parameters[$name] = $value;\r
+    }\r
+  }\r
+  \r
+\r
+  public function set_http_header(&$multipart = NULL) {\r
+       if (empty($this->parameters)) {\r
+               $this->http_header[] = 'Content-Type:';\r
+      $this->http_header[] = 'Content-Length:';\r
+       } else {\r
+               if($multipart) $this->http_header[] = $this->to_header(); //add OAuth header if we post multipart\r
+               $this->http_header[] = 'Expect: ';\r
+       }\r
+  }\r
+\r
+  public function get_parameter($name) {\r
+    return isset($this->parameters[$name]) ? $this->parameters[$name] : null;\r
+  }\r
+\r
+  public function get_parameters() {\r
+    return $this->parameters;\r
+  }\r
+\r
+  public function unset_parameter($name) {\r
+    unset($this->parameters[$name]);\r
+  }\r
+\r
+  /**\r
+   * The request parameters, sorted and concatenated into a normalized string.\r
+   * @return string\r
+   */\r
+  public function get_signable_parameters() {\r
+    // Grab all parameters\r
+    $params = $this->parameters;\r
+\r
+    // Remove oauth_signature if present\r
+    // Ref: Spec: 9.1.1 ("The oauth_signature parameter MUST be excluded.")\r
+    if (isset($params['oauth_signature'])) {\r
+      unset($params['oauth_signature']);\r
+    }\r
+\r
+    return OAuthUtil::build_http_query($params);\r
+  }\r
+\r
+  /**\r
+   * Returns the base string of this request\r
+   *\r
+   * The base string defined as the method, the url\r
+   * and the parameters (normalized), each urlencoded\r
+   * and the concated with &.\r
+   */\r
+  public function get_signature_base_string() {\r
+    $parts = array(\r
+      $this->get_normalized_http_method(),\r
+      $this->get_normalized_http_url(),\r
+      $this->get_signable_parameters()\r
+    );\r
+\r
+    $parts = OAuthUtil::urlencode_rfc3986($parts);\r
+\r
+    return implode('&', $parts);\r
+  }\r
+\r
+  /**\r
+   * just uppercases the http method\r
+   */\r
+  public function get_normalized_http_method() {\r
+    return strtoupper($this->http_method);\r
+  }\r
+\r
+  /**\r
+   * parses the url and rebuilds it to be\r
+   * scheme://host/path\r
+   */\r
+  public function get_normalized_http_url() {\r
+    $parts = parse_url($this->http_url);\r
+\r
+    $port = @$parts['port'];\r
+    $scheme = $parts['scheme'];\r
+    $host = $parts['host'];\r
+    $path = @$parts['path'];\r
+\r
+    $port or $port = ($scheme == 'https') ? '443' : '80';\r
+\r
+    if (($scheme == 'https' && $port != '443')\r
+        || ($scheme == 'http' && $port != '80')) {\r
+      $host = "$host:$port";\r
+    }\r
+    return "$scheme://$host$path";\r
+  }\r
+\r
+  /**\r
+   * builds a url usable for a GET request\r
+   */\r
+  public function to_url() {\r
+    $post_data = $this->to_postdata();\r
+    $out = $this->get_normalized_http_url();\r
+    if ($post_data) {\r
+      $out .= '?'.$post_data;\r
+    }\r
+    return $out;\r
+  }\r
+\r
+  /**\r
+   * builds the data one would send in a POST request\r
+   */\r
+  public function to_postdata() {\r
+    return OAuthUtil::build_http_query($this->parameters);\r
+  }\r
+\r
+  /**\r
+   * builds the Authorization: header\r
+   */\r
+  public function to_header($realm=NULL) {\r
+    $out = 'Authorization: OAuth ';\r
+       if ($realm) $out .= 'realm="'.$realm.'",';\r
+    $total = array();\r
+    foreach ($this->parameters as $k => $v) {\r
+      if (substr($k, 0, 5) != "oauth") continue;\r
+      if (is_array($v)) {\r
+        throw new OAuthException('Arrays not supported in headers');\r
+      }\r
+      $out .= OAuthUtil::urlencode_rfc3986($k) .\r
+              '="' .\r
+              OAuthUtil::urlencode_rfc3986($v) .\r
+              '",';\r
+    }\r
+    return substr($out,0,-1);\r
+  }\r
+\r
+  public function __toString() {\r
+    return $this->to_url();\r
+  }\r
+\r
+\r
+  public function sign_request($signature_method, $consumer, $token) {\r
+    $this->set_parameter(\r
+      "oauth_signature_method",\r
+      $signature_method->get_name(),\r
+      false\r
+    );\r
+    $signature = $this->build_signature($signature_method, $consumer, $token);\r
+    $this->set_parameter("oauth_signature", $signature, false);\r
+  }\r
+\r
+  public function build_signature($signature_method, $consumer, $token) {\r
+    $signature = $signature_method->build_signature($this, $consumer, $token);\r
+    return $signature;\r
+  }\r
+\r
+  /**\r
+   * util function: current timestamp\r
+   */\r
+  private static function generate_timestamp() {\r
+    return $_SERVER['REQUEST_TIME'];\r
+  }\r
+\r
+  /**\r
+   * util function: current nonce\r
+   */\r
+  private static function generate_nonce() {\r
+    $mt = microtime();\r
+    $rand = mt_rand();\r
+\r
+    return md5($mt . $rand); // md5s look nicer than numbers\r
+  }\r
+}\r
+\r
+class OAuthUtil {\r
+  public static function urlencode_rfc3986($input) {\r
+  if (is_array($input)) {\r
+    return array_map(array('OAuthUtil', 'urlencode_rfc3986'), $input);\r
+  } else if (is_scalar($input)) {\r
+    return str_replace(\r
+      '+',\r
+      ' ',\r
+      str_replace('%7E', '~', rawurlencode($input))\r
+    );\r
+  } else {\r
+    return '';\r
+  }\r
+}\r
+\r
+\r
+  // This decode function isn't taking into consideration the above\r
+  // modifications to the encoding process. However, this method doesn't\r
+  // seem to be used anywhere so leaving it as is.\r
+  public static function urldecode_rfc3986($string) {\r
+    return urldecode($string);\r
+  }\r
+\r
+  // Utility function for turning the Authorization: header into\r
+  // parameters, has to do some unescaping\r
+  // Can filter out any non-oauth parameters if needed (default behaviour)\r
+  public static function split_header($header, $only_allow_oauth_parameters = true) {\r
+    $pattern = '/(([-_a-z]*)=("([^"]*)"|([^,]*)),?)/';\r
+    $offset = 0;\r
+    $params = array();\r
+    while (preg_match($pattern, $header, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) {\r
+      $match = $matches[0];\r
+      $header_name = $matches[2][0];\r
+      $header_content = (isset($matches[5])) ? $matches[5][0] : $matches[4][0];\r
+      if (preg_match('/^oauth_/', $header_name) || !$only_allow_oauth_parameters) {\r
+        $params[$header_name] = OAuthUtil::urldecode_rfc3986($header_content);\r
+      }\r
+      $offset = $match[1] + strlen($match[0]);\r
+    }\r
+\r
+    if (isset($params['realm'])) {\r
+      unset($params['realm']);\r
+    }\r
+\r
+    return $params;\r
+  }\r
+\r
+  // helper to try to sort out headers for people who aren't running apache\r
+  public static function get_headers() {\r
+    if (function_exists('apache_request_headers')) {\r
+      // we need this to get the actual Authorization: header\r
+      // because apache tends to tell us it doesn't exist\r
+      return apache_request_headers();\r
+    }\r
+    // otherwise we don't have apache and are just going to have to hope\r
+    // that $_SERVER actually contains what we need\r
+    $out = array();\r
+    foreach ($_SERVER as $key => $value) {\r
+      if (substr($key, 0, 5) == "HTTP_") {\r
+        // this is chaos, basically it is just there to capitalize the first\r
+        // letter of every word that is not an initial HTTP and strip HTTP\r
+        // code from przemek\r
+        $key = str_replace(\r
+          " ",\r
+          "-",\r
+          ucwords(strtolower(str_replace("_", " ", substr($key, 5))))\r
+        );\r
+        $out[$key] = $value;\r
+      }\r
+    }\r
+    return $out;\r
+  }\r
+\r
+  // This function takes a input like a=b&a=c&d=e and returns the parsed\r
+  // parameters like this\r
+  // array('a' => array('b','c'), 'd' => 'e')\r
+  public static function parse_parameters( $input ) {\r
+    if (!isset($input) || !$input) return array();\r
+\r
+    $pairs = explode('&', $input);\r
+\r
+    $parsed_parameters = array();\r
+    foreach ($pairs as $pair) {\r
+      $split = explode('=', $pair, 2);\r
+      $parameter = OAuthUtil::urldecode_rfc3986($split[0]);\r
+      $value = isset($split[1]) ? OAuthUtil::urldecode_rfc3986($split[1]) : '';\r
+\r
+      if (isset($parsed_parameters[$parameter])) {\r
+        // We have already recieved parameter(s) with this name, so add to the list\r
+        // of parameters with this name\r
+\r
+        if (is_scalar($parsed_parameters[$parameter])) {\r
+          // This is the first duplicate, so transform scalar (string) into an array\r
+          // so we can add the duplicates\r
+          $parsed_parameters[$parameter] = array($parsed_parameters[$parameter]);\r
+        }\r
+\r
+        $parsed_parameters[$parameter][] = $value;\r
+      } else {\r
+        $parsed_parameters[$parameter] = $value;\r
+      }\r
+    }\r
+    return $parsed_parameters;\r
+  }\r
+\r
+  public static function build_http_query($params,$multipart=NULL) {\r
+    if (!$params) return '';\r
+\r
+    // Urlencode both keys and values\r
+    $keys = OAuthUtil::urlencode_rfc3986(array_keys($params));\r
+    $values = OAuthUtil::urlencode_rfc3986(array_values($params));\r
+    $params = array_combine($keys, $values);\r
+\r
+    // Parameters are sorted by name, using lexicographical byte value ordering.\r
+    // Ref: Spec: 9.1.1 (1)\r
+    uksort($params, 'strcmp');\r
+\r
+    $pairs = array();\r
+    foreach ($params as $parameter => $value) {\r
+      if (is_array($value)) {\r
+        // If two or more parameters share the same name, they are sorted by their value\r
+        // Ref: Spec: 9.1.1 (1)\r
+        natsort($value);\r
+        foreach ($value as $duplicate_value) {\r
+          $pairs[] = $parameter . '=' . $duplicate_value;\r
+        }\r
+      } else {\r
+        $pairs[] = $parameter . '=' . $value;\r
+      }\r
+    }\r
+    // For each parameter, the name is separated from the corresponding value by an '=' character (ASCII code 61)\r
+    // Each name-value pair is separated by an '&' character (ASCII code 38)\r
+    return implode('&', $pairs);\r
+  }\r
+}\r
+\r
+?>\r
diff --git a/lib/timeline_format.php b/lib/timeline_format.php
new file mode 100644 (file)
index 0000000..f60a10d
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+       function format_retweet($status, $retweetByMe = false){
+               $retweeter = $status->user;
+               $rt_status = $status->retweeted_status;
+               $status_owner = $rt_status->user;
+               $date = format_time($status->created_at);
+               $text = formatEntities($rt_status->entities,$rt_status->text);
+               $html = '<li>
+                       <span class="status_author">
+                       <a href="user.php?id='.$status_owner->screen_name.'" target="_blank"><img id="avatar" src="'.getAvatar($status_owner->profile_image_url).'" title="Hello, I am  '.$status_owner->screen_name.'. Click for more..." /></a>
+                       </span>
+                       <span class="status_body">
+                       <span title="Retweets from people you follow appear in your timeline." class="big-retweet-icon"></span>
+                       <span class="status_id">'.$status->id_str.'</span>
+                       <span class="status_word"><a class="user_name" href="user.php?id='.$status_owner->screen_name.'">'.$status_owner->screen_name.'</a> <span class="tweet">&nbsp;'.$text.'</span></span>
+                       <span class="actions">
+                       <a class="replie_btn" title="Reply" href="#">Reply</a>
+                       <a class="rt_btn" title="Retweet" href="#">Retweet</a>';
+               if($retweetByMe != true){
+                       $html .= '<a class="retw_btn" title="New Retweet" href="#">New Retweet</a>';
+               } else {
+                       $html .= '<a class="unrt_btn" title="UndoRT" href="#">UndoRT</a>';
+               }
+               $html .= $status->favorited ? '<a class="unfav_btn" title="UnFav" href="#">UnFav</a>' : '<a class="favor_btn" title="Fav" href="#">Fav</a>';
+               $html .= '<a class="trans_btn" title="Translate" href="#">Translate</a>';
+               if($retweetByMe == true){
+                       $html .= '<span class="rt_id" style="display:none">'.$status->id_str.'</span>';
+               }
+               $html .='</span><span class="status_info"><span class="source">by <a href="user.php?id='.$retweeter->screen_name.'">'.$retweeter->screen_name.'</a> via '.$status->source.'</span>
+                       <span class="date"><a href="status.php?id='.$rt_status->id_str.'" id="'.$date.'" target="_blank">'.date('Y-m-d H:i:s', $date).'</a></span>
+                       </span>
+                       </span>';
+               $html .= $status->favorited ? '<i class="faved"></i>' : '';
+               $html .= '</li>';
+               return $html;
+       }
+
+       function format_retweet_of_me($status){
+               $status_owner = $status->user;
+               $date = format_time($status->created_at);
+               $text = formatEntities($status->entities,$status->text);
+               $html = '<li>
+                       <span class="status_author">
+                       <a href="user.php?id='.$status_owner->screen_name.'" target="_blank"><img id="avatar" src="'.getAvatar($status_owner->profile_image_url).'" title="click for more..." /></a>
+                       </span>
+                       <span class="status_body">
+                       <span title="Retweets from people you follow appear in your timeline." class="big-retweet-icon"></span><span class="status_id">'.$status->id_str.'</span>
+                       <span class="status_word">
+                       <a class="user_name" href="user.php?id='.$status_owner->screen_name.'">'.$status_owner->screen_name.'</a><span class="tweet">&nbsp;'.$text.'</span></span>
+                       <span class="actions">
+                       <a class="replie_btn" title="Reply" href="#">Reply</a>
+                       <a class="rt_btn" title="Retweet" href="#">Retweet</a>';
+               $html .= $status->favorited ? '<a class="unfav_btn" title="UnFav" href="#">UnFav</a>' : '<a class="favor_btn" title="Fav" href="#">Fav</a>';
+               $html .= '<a class="trans_btn" title="Translate" href="#">Translate</a>
+                       </span>
+                       <span class="status_info">via '.$status->source.'
+                       <span class="date"><a href="status.php?id='.$status->id_str.'" id="'.$date.'" target="_blank">'.date('Y-m-d H:i:s', $date).'</a></span>
+                       </span>
+                       </span>';
+               $html .= $status->favorited ? '<i class="faved"></i>' : '';
+               $html .= '</li>';
+               return $html;
+       }
+
+       function getRetweeters($id, $count = 20){
+               $t = getTwitter();
+               $retweeters = $t->getRetweeters($id);
+               $html = '<span class="vcard">';
+               foreach($retweeters as $retweeter){
+                       $user = $retweeter->user;
+                       $html .= '<a class="url" title="'.$user->name.'" rel="contact" href="../user.php?id='.$user->screen_name.'">
+                               <img class="photo fn" width="24" height="24" src="'.getAvatar($user->profile_image_url).'" alt="'.$user->name.'" />
+                               </a>';
+               }
+               $html .= "</span>";
+               return $html;
+       }
+
+       function format_timeline($status, $screen_name, $updateStatus = false){
+               $user = $status->user;
+               $date = format_time($status->created_at);
+               $text = formatEntities($status->entities,$status->text);
+               
+               if(preg_match('/^\@'.getTwitter()->username.'/i', $text) == 1){
+                       $output = "<li class=\"reply\">";
+               }elseif($updateStatus == true){
+                       $output = "<li class=\"mine\">";
+               }else{
+                       $output = "<li>";
+               }
+               $output .= '<span class="status_author">
+               <a href="user.php?id='.$user->screen_name.'" target="_blank"><img id="avatar" src="'.getAvatar($user->profile_image_url).'" title="Hello, I am  '.$user->screen_name.'. Click for more..." /></a>
+               </span>
+               <span class="status_body">
+               <span class="status_id">'.$status->id_str.'</span>
+               <span class="status_word"><a class="user_name" href="user.php?id='.$user->screen_name.'">'.$user->screen_name.'</a> <span class="tweet">&nbsp;'.$text.'</span></span>';
+               $output .= "<span class=\"actions\">
+                       <a class=\"replie_btn\" title=\"Reply\" href=\"#\">Reply</a>
+                       <a class=\"rt_btn\" title=\"Retweet\" href=\"#\">Retweet</a>
+                       ";
+               if($user->screen_name != $screen_name){
+                       $output .= "<a class=\"retw_btn\" title=\"New Retweet\" href=\"#\">New Retweet</a>";
+               }
+               $output .= $status->favorited == true ? "<a class=\"unfav_btn\" title=\"UnFav\" href=\"#\">UnFav</a>" : "<a class=\"favor_btn\" title=\"Fav\" href=\"#\">Fav</a>";
+               $output .= "<a class=\"trans_btn\" title=\"Translate\" href=\"#\">Translate</a>";
+               if ($user->screen_name == $screen_name) $output .= "<a class=\"delete_btn\" title=\"Delete\" href=\"#\">Delete</a>";
+               $output .= "</span><span class=\"status_info\">";
+               if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id_str&uid=$user->id \">to $status->in_reply_to_screen_name</a> </span>";
+               $output .= "<span class=\"source\">via $status->source</span>
+                       <span class=\"date\"><a href=\"status.php?id=$status->id_str\" id=\"$date\" target=\"_blank\">".date('Y-m-d H:i:s', $date)."</a></span>
+                       </span>
+                       </span>";
+               $output .= $status->favorited == true ? '<i class="faved"></i>' : '';
+               $output .= "</li>";
+               return $output;
+       }
+       
+       function format_message($message,$isSentPage=false) {
+               if ($isSentPage) {
+                       $name = $message->recipient_screen_name;
+                       $imgurl = getAvatar($message->recipient->profile_image_url);
+                       $messenger = $message->recipient;
+               } else {
+                       $name = $message->sender_screen_name;
+                       $imgurl = getAvatar($message->sender->profile_image_url);
+                       $messenger = $message->sender;
+               }
+               $date = format_time($message->created_at);
+               $text = formatEntities($message->entities,$message->text);
+               
+               $output = "
+                       <li>
+                               <span class=\"status_author\">
+                                       <a href=\"user.php?id=$name\" target=\"_blank\"><img id=\"avatar\" src=\"$imgurl\" title=\"Hello, I am $name. Click for more...\" /></a>
+                               </span>
+                               <span class=\"status_body\">
+                                       <span class=\"status_id\">$message->id </span>
+                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$name\">$name</a> $text </span>
+                                       <span class=\"actions\">
+               ";
+               
+               if ($isSentPage) {
+                       $output .= "<a class=\"msg_delete_btn\" href=\"#\">delete</a>";
+               } else {
+                       $output .= "<a class=\"msg_replie_btn\" href=\"#\">reply</a><a class=\"msg_delete_btn\" href=\"#\">delete</a>";
+               }
+               $output .="</span><span class=\"status_info\"><span class=\"date\" id=\"$date\">".date('Y-m-d H:i:s', $date)."</span></span></span></li>";
+               return $output;
+       }
+?>
index 3866d7c..05fb287 100644 (file)
                session_start();\r
        }\r
        include_once('mobile_device_detect.php');\r
-       mobile_device_detect(true,true,true,true,true,true,'https://dabr.in/',false);\r
+       mobile_device_detect(true,true,true,true,true,true,'https://t.orzdream.com/',false);\r
        include_once('config.php');\r
        include_once('utility.php');\r
-       include_once('twitter.php');\r
        include_once('twitteroauth.php');\r
        include_once('oauth_lib.php');\r
-       include_once('image_uploader.php');\r
-       $site_owner = SITE_OWNER;\r
-       function errorHandler($errno, $errstr, $errfile, $errline){\r
-               return TRUE;\r
-       }\r
 \r
-       function verify($name, $password, $remember) {\r
-               $t = new twitter($name, $password);\r
+       function refreshProfile(){\r
+               $t = getTwitter();\r
                $user = $t->veverify();\r
-               if (!isset($user->error) && isset($user->name)) {\r
-                       $time = $remember ? time()+3600*24*365 : 0; \r
-                       setEncryptCookie('twitese_name', $name, $time, '/');\r
-                       setEncryptCookie('twitese_pw', $password, $time, '/');\r
-                       refreshProfile($t);\r
-                       $time = time()+3600*24*365;\r
-                       if(!isset($_COOKIE['showpic_cookie'])){\r
-                               setcookie('showpic_cookie', 'true', $time, '/');\r
-                       }\r
-                       if(!isset($_COOKIE['mediaPre'])){\r
-                               setcookie('mediaPre', 'true', $time, '/');\r
-                       }\r
-                       return true;\r
-               } else {\r
-                       return false;                   \r
-               }\r
-       }\r
-\r
-       function refreshProfile($t = false, $user = false){\r
-               $t = $t == false ? getTwitter() : $t;\r
-               if($user == false){\r
-                       $user = $t->veverify();\r
-               }\r
-               $time = time()+3600*24*365;\r
+               $time = $_SERVER['REQUEST_TIME']+3600*24*365;\r
                setcookie('friends_count', $user->friends_count, $time, '/');\r
                setcookie('statuses_count', $user->statuses_count, $time, '/');\r
                setcookie('followers_count', $user->followers_count, $time, '/');\r
                setcookie('imgurl', getAvatar($user->profile_image_url), $time, '/');\r
-               setcookie('name', $user->name, $time, '/');\r
+               setcookie('name', $user->screen_name, $time, '/');\r
                setcookie('listed_count', GetListed($t), $time, '/');\r
        }\r
 \r
-       function saveStyle($myCSS, $fontsize, $ad_display, $bodyBg) {\r
-               $time = time() + 3600*24*30;\r
-               setcookie("myCSS", $myCSS, $time);\r
-               setcookie("fontsize", $fontsize, $time);\r
-               setcookie("ad_display", $ad_display, $time);\r
-               setcookie("bodyBg", $bodyBg, $time);\r
-       }\r
-\r
-       function resetStyle() {\r
-               delCookie("myCSS");\r
-               delCookie("fontsize");\r
-               delCookie("ad_display");\r
-               delCookie("bodyBg");\r
-       }\r
-\r
-       function getColor($name, $default) {\r
+       function getDefCookie($name, $default="") {\r
                if (getCookie($name)) return getCookie($name);\r
                else return $default;\r
        }\r
-\r
-       function shortUrl($url) {\r
-               return $url;\r
-       }\r
-\r
-       function setUpdateCookie($value) {\r
-               setcookie('update_status', $value);\r
+       function format_time($time){\r
+               date_default_timezone_set('UTC');\r
+               return strtotime($time);\r
        }\r
-\r
-       function getUpdateCookie() {\r
-               if ( isset($_COOKIE['update_status']) ) {\r
-                       $update_status = $_COOKIE['update_status'];\r
-                       setcookie('update_status', '', time()-300);\r
-                       return $update_status;\r
-               } else {\r
-                       return null;\r
-               }\r
-       }\r
-\r
        function formatText($text) {\r
-               //Èç¹û¿ªÆôÁËħÊõÒýºÅ\" \' ×ª»ØÀ´\r
-               //if (get_magic_quotes_gpc()) {\r
-               //      $text = stripslashes($text);\r
-               //}\r
+               //如果开启了魔术引号\" \' 转回来\r
+               if (get_magic_quotes_gpc()) {\r
+                       $text = stripslashes($text);\r
+               }\r
 \r
-               //Ìí¼ÓurlÁ´½Ó\r
-               $urlReg = '/(((http|https|ftp):\/\/){1}([[:alnum:]\-\.])+(\.)(([[:alnum:]]){2,4})?([[:alnum:]\/+=%#&\:\;_\.~\?\!\-\,]*))/i';\r
+               //添加url链接\r
+               $urlReg = '/(((http|https|ftp):\/\/){1}([[:alnum:]\-\.])+(\.)(([[:alnum:]]){2,4})?([[:alnum:]\/+=%#&@\:\;_\.~\?\!\-\,]*))/i';\r
                $text = preg_replace($urlReg, '<a href="\1" target="_blank" rel="noreferrer">\1</a>', $text);\r
 \r
-               //Ìí¼Ó@Á´½Ó\r
+               //添加@链接\r
                $atReg = '/\B@{1}(([a-zA-Z0-9\_\.\-])+)/i';\r
-               $text = preg_replace($atReg,  '<a href="user.php?id=\1" target="_blank">\0</a>', $text);\r
+               $text = preg_replace($atReg,    '<a href="user.php?id=\1" target="_blank">\0</a>', $text);\r
 \r
-               //Ìí¼Ó list Á´½Ó\r
+               //添加 list 链接\r
                $listReg = '/(\<a[\w+=\:\%\#\&\.~\?\"\'\/\- ]+\>@{1}([a-zA-Z0-9_\.\-]+)<\/a\>([\/a-zA-Z0-9_\.\-]+))/i';\r
-               $text = preg_replace($listReg,  '<a href="list.php?id=\2\3" target="_blank">@\2\3</a>', $text);\r
+               $text = preg_replace($listReg,  '<a href="list.php?id=\2\3" target="_blank">@\2\3</a>', $text);\r
 \r
-               //Ìí¼Ó±êÇ©Á´½Ó\r
-               //$tagReg = "/(\#{1}([a-zA-Z0-9_\.\-]+))([\s]*)/u";\r
-               $tagReg = "/\B(\#{1}([\w]*[a-zA-Z_]+[\w]*))([\s]*)/u";\r
-               $text = preg_replace($tagReg, '<a target="_blank" href="search.php?q=%23\2">\1</a>\3', $text);\r
+               //添加标签链接\r
+               $tagReg = "/\B(\#{1}([\w]*[\pN\pC\pL]+[\w]*))([\s]*)/u";\r
+               $text = preg_replace($tagReg, '<a target="_blank" href="search.php?q=%23\2">#<span class="hashtag">\2</span></a>\3', $text);\r
 \r
                $text = formatTweetID($text);\r
 \r
                return $text;\r
        }\r
 \r
+       function formatEntities(&$entities,$html){\r
+               $user_mentions = $entities->user_mentions;\r
+               $hashtags = $entities->hashtags;\r
+               $urls = $entities->urls;\r
+               if(count($user_mentions) > 0) {\r
+                       foreach($user_mentions as $user_mention) {\r
+                               $name = $user_mention->screen_name;\r
+                               $html = str_replace("@$name","<a href=\"user.php?id=$name\" target=\"_blank\">@$name</a>",$html);\r
+                       }\r
+               }\r
+               if(count($hashtags) > 0) {\r
+                       foreach($hashtags as $hashtag) {\r
+                               $text = $hashtag->text;\r
+                               $html = str_replace("#$text","<a target=\"_blank\" href=\"search.php?q=%23$text\">#<span class=\"hashtag\">$text</span></a>",$html);\r
+                       }       \r
+               }\r
+               if(count($urls) > 0) {\r
+                       $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';\r
+                       foreach($urls as $url) {\r
+                               $exp = is_null($url->expanded_url) ? $url->url : $url->expanded_url;\r
+                               if(substr($url->url,0,4) != 'http') $url->url = 'http://'.$url->url;\r
+                               if(isset($url->display_url)) {\r
+                                       $dis = $url->display_url;\r
+                               } else {\r
+                                       $tmp = explode('://', $url->url);\r
+                                       $dis = $tmp[1];\r
+                               }\r
+                               $html = str_replace($url->url,"<a href=\"$exp\" target=\"_blank\" rel=\"noreferrer\" class=\"tweet_url\">$dis</a>",$html);\r
+                       }       \r
+               }\r
+               if(isset($entities->media)) {\r
+                       $medias = $entities->media;\r
+                       foreach($medias as $media) {\r
+                               $url = $media->media_url_https;\r
+                               if (getcookie('p_avatar') == 'true') {\r
+                                               $url = 'img.php?imgurl='.$url;\r
+                               }\r
+                               $html = str_replace($media->url,"<a href=\"$url\" target=\"_blank\" rel=\"noreferrer\">$media->display_url</a>",$html);\r
+                       }\r
+               }\r
+               return $html;\r
+       }\r
+\r
        function formatTweetID($text){\r
-               $reg = '/(\<a[\w+=\:\%\#\&\.~\?\"\'\/\-\! ]+\>[\S]+<\/a\>)/i';\r
+               $reg = '/(\<a[\w+=@\:\%\#\&\.~\?\"\'\/\-\! ]+\>[\S]+<\/a\>)/i';\r
                preg_match_all($reg, $text, $tmpMatches);\r
                if(count($tmpMatches) > 0){\r
                        $text = preg_replace($reg, '$_holder_$', $text);\r
                return $text;\r
        }\r
 \r
-       function formatDate($date){\r
-               $offset = 0;\r
-               $differ = time() - strtotime($date) - $offset;\r
-               //$differ = time() - time(date('Y-m-d H:i:s', strtotime($date)));\r
-\r
-               if ($differ < 60) {\r
-                       $dateFormated = "less than " . ceil($differ) . " seconds ago";\r
-               } else if ($differ < 3600) {\r
-                       $dateFormated = ceil($differ/60) . " minutes ago";\r
-               } else if ($differ < 3600*24) {\r
-                       $dateFormated = "about " . ceil($differ/3600) . " hours ago";\r
-               } else {\r
-                       $dateFormated = date('Y-m-d H:i:s', strtotime($date)); \r
-               }\r
-\r
-               return $dateFormated;\r
-       }\r
-\r
-       /* ---------- Recover unshorten urls ---------- */\r
-       function recoverShortens($text){\r
-               $patten = '/(http[s]?\:\/\/[\w]+[\w\.]*\/[\w\/+=%#&\:_\.~\?\!\-\,]+)/i';\r
-               preg_match_all($patten, $text, $matches);\r
-               $output = '';\r
-               for($i = 0; $i < count($matches[0]); $i += 2){\r
-                       if($recovered = unshortUrl($matches[0][$i])){\r
-                               $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$recovered\" target=\"_blank\" rel=\"noreferrer\">$recovered</a></span>";\r
-                       }\r
-               }\r
-               return $output;\r
-       }\r
-\r
-       function unshortUrl($text) {\r
-               $urlRegs = array();\r
-\r
-               $urlRegs[] ='/http:\/\/tinyurl\.com\/([a-z0-9]{5}[a-z0-9]*)/i';\r
-               $urlRegs[] = '/http:\/\/bit\.ly\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/j\.mp\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/is\.gd\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/retwt\.me\/([a-z0-9]{5}[a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/ff\.im\/-([a-z0-9]{5}[a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/tr\.im\/([a-z0-9]{5}[a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/htxt\.it\/([a-z0-9]{4}[a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/yy\.cx\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/aa\.cx\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/digg\.com\/([a-z0-9]{6}[a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/goo\.gl\/fb\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/goo\.gl\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/orz\.se\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/zi\.mu\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/knb\.im\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/ff\.im\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/sinaurl\.cn\/([a-z0-9]*)/i';\r
-               $urlRegs[] ='/http:\/\/163\.fm\/([a-z0-9]*)/i';\r
-               $urlRegs[] = '/http:\/\/guao\.cc\/([a-z0-9]*)/i';\r
-\r
-               foreach($urlRegs as $urlReg) {\r
-                       if(preg_match($urlReg,$text,$match)){\r
-                               if(strpos($match[0], "is.gd") !== false){\r
-                                       //$request = 'http://realurl.org/api/v1/getrealurl.php?url=' . $match[0];\r
-                                       $request = 'http://longurlplease.appspot.com/api/v1.1?q=' . $match[0];\r
-                                       //$obj = objectifyXml(processCurl( $request ));\r
-                                       $obj = objectifyJson(processCurl( $request ));\r
-                                       //if (isset($obj->url)) return $obj->url->real;\r
-                                       if (isset($obj->{$match[0]})) return $obj->{$match[0]};\r
-                               }else{\r
-                                       $request = 'http://api.unshort.me/?r=' . $match[0];\r
-                                       $obj = objectifyXml(processCurl( $request ));\r
-                                       if (isset($obj->resolvedURL)) return $obj->resolvedURL;\r
-                               }\r
-                       }\r
-               }\r
-               return false; \r
-       }\r
-\r
-       function processCurl($url,$postargs=false)\r
+       function processCurl($url,$postdata=false,$header=false)\r
        {\r
                $ch = curl_init($url);\r
 \r
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r
                curl_setopt($ch, CURLOPT_VERBOSE, 1);\r
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);\r
-               curl_setopt($ch, CURLOPT_TIMEOUT,5);//added by yegle\r
-\r
+               curl_setopt($ch, CURLOPT_TIMEOUT,120);\r
+               \r
+               if($postdata !== false) {\r
+                       curl_setopt ($ch, CURLOPT_POST, true);\r
+                       curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);\r
+               }\r
+               \r
+               if($header !== false) {\r
+                       curl_setopt($ch, CURLOPT_HTTPHEADER, $header);\r
+               }\r
+               \r
                $response = curl_exec($ch);\r
                $responseInfo=curl_getinfo($ch);\r
-\r
                curl_close($ch);\r
-\r
                if( intval( $responseInfo['http_code'] ) == 200 )\r
-                       return $response;    \r
+                       return $response;               \r
                else\r
                        return false;\r
        }\r
 \r
-       function objectifyXml( $data )\r
-       {\r
+       function objectifyXml( $data ){\r
 \r
                if( function_exists('simplexml_load_string') ) {\r
                        $obj = simplexml_load_string( $data );\r
        }\r
 \r
 \r
+       function imageUpload($image){\r
+               $t = getTwitter();\r
+               $signingurl = 'https://api.twitter.com/1/account/verify_credentials.json';\r
+               $request = OAuthRequest::from_consumer_and_token($t->consumer, $t->token, 'GET', $signingurl, array());\r
+               $request->sign_request($t->sha1_method, $t->consumer, $t->token);\r
+               $r_header = $request->to_header("http://api.twitter.com/");\r
+               \r
+               $url = 'http://img.ly/api/2/upload.json';\r
+               $postdata = array('media' => $image);           \r
+               $ch = curl_init($url);          \r
+               if($postdata !== false)\r
+               {\r
+                       curl_setopt ($ch, CURLOPT_POST, true);\r
+                       curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);\r
+               }\r
+               curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Auth-Service-Provider: '.$signingurl,'X-Verify-Credentials-'.$r_header)); \r
+               curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\r
+               curl_setopt($ch, CURLOPT_USERAGENT, 'embr');\r
+               curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);\r
+               curl_setopt($ch, CURLOPT_TIMEOUT,120);\r
+               curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);\r
+\r
+               $response = curl_exec($ch);\r
+               $response_info=curl_getinfo($ch);\r
+               curl_close($ch);\r
+               \r
+               if ($response_info['http_code'] == 200) {\r
+                       return objectifyJson($response);\r
+               } else {\r
+                       return null;\r
+               }\r
+       }\r
+       \r
        function getTwitter() {\r
-               if(isOAuth()){\r
-                       $access_token = $_SESSION['access_token'];\r
+               if(loginStatus()){\r
+                       $access_token = $_SESSION['access_token'] ? $_SESSION['access_token'] : null;\r
+                       $oauth_token = $access_token ? $access_token['oauth_token'] : $_COOKIE['oauth_token'];\r
+                       $oauth_token_secret = $access_token ? $access_token['oauth_token_secret'] : $_COOKIE['oauth_token_secret'];\r
                        $oauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);\r
                        return $oauth;\r
                }\r
-               $type = function_exists('json_decode') ? 'json': 'xml';\r
-               return new twitter(getEncryptCookie('twitese_name'), getEncryptCookie('twitese_pw'), $type);\r
+               return null;\r
        }\r
 \r
-       function isLogin(){\r
-               return getEncryptCookie('twitese_name') && getEncryptCookie('twitese_pw');\r
-       }\r
-\r
-       function loginStatus() {\r
-               return isLogin() || isOAuth();\r
-       }\r
-\r
-       function isOAuth() {\r
-               if(isset($_SESSION['login_status'])){\r
-                       return $_SESSION['login_status'] == 'verified' ? true : false;\r
-               }elseif(getEncryptCookie("oauth_token") != "" && getEncryptCookie("oauth_token_secret") != "" && getEncryptCookie("user_id") != "" && getEncryptCookie("twitese_name") != ""){\r
-                       $access_token = array("oauth_token" => getEncryptCookie("oauth_token"), "oauth_token_secret" => getEncryptCookie("oauth_token_secret"), "user_id" => getEncryptCookie("user_id"), "screen_name" => getEncryptCookie("twitese_name"));\r
-                       $_SESSION['access_token'] = $access_token;\r
-                       $_SESSION['login_status'] = 'verified';\r
-                       refreshProfile();\r
-                       return true;\r
-               }\r
-               return false;\r
-       }\r
+   function loginStatus() {\r
+          if(isset($_SESSION['login_status'])){\r
+             return $_SESSION['login_status'] == 'verified' ? true : false;\r
+          }elseif(getEncryptCookie("oauth_token") != "" && getEncryptCookie("oauth_token_secret") != "" && getEncryptCookie("user_id") != "" && getEncryptCookie("twitese_name") != ""){\r
+             $access_token = array("oauth_token" => getEncryptCookie("oauth_token"), "oauth_token_secret" => getEncryptCookie("oauth_token_secret"), "user_id" => getEncryptCookie("user_id"), "screen_name" => getEncryptCookie("twitese_name"));\r
+             $_SESSION['access_token'] = $access_token;\r
+             $_SESSION['login_status'] = 'verified';\r
+             refreshProfile();\r
+             return true;\r
+          }\r
+          return false;\r
+   }\r
 \r
        function GetListed($t, $cursor = false){\r
                $lists = $t->beAddedLists($t->username, $cursor);\r
                if($lists->next_cursor > 1){\r
                        $listed += GetListed($t, $lists->next_cursor);\r
                }\r
-               return  $listed;\r
+               return  $listed;\r
        }\r
 \r
        function getAvatar($profileImg){\r
-               $httpsMode = false;\r
-               if($httpsMode == true){\r
-                       $reg = "/(http[s]?\:[\S]+\.com\/)/i";\r
-                       $profileImg = preg_replace($reg, "https://s3.amazonaws.com/twitter_production/", $profileImg);\r
+               if (getcookie('p_avatar') == 'true') {\r
+                               return 'img.php?imgurl='.$profileImg;\r
                }\r
-               return $profileImg;\r
+               return preg_replace('/https?:\/\/\w+([0-9])\.twimg\.com/i','https://s3.amazonaws.com/twitter_production',$profileImg);\r
        }\r
 \r
        // $target: can't be current user\r
                }\r
                return 9;\r
        }\r
+       \r
+       function urlshorten($url, $type='goo.gl'){\r
+               switch($type){\r
+                       case 'goo.gl':\r
+                       $data = json_encode(array('longUrl' => $url));\r
+                       $api = 'https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyDsX2BAo9Jc2yG3Pq1VbLQALqdrtDFvXkg';\r
+                       $header = array('Content-type: application/json');\r
+                       $result = objectifyJson(processCurl($api,$data,$header))->id;\r
+                       break;\r
+                       case 'zi.mu':\r
+                       $api = 'http://zi.mu/api.php?format=simple&action=shorturl&url=';\r
+                       $result = objectifyJson(processCurl($api.rawurlencode($url)));\r
+                       break;\r
+                       default:\r
+                       break;\r
+               }\r
+               return $result;\r
+       }\r
 ?>\r
index b72aaaf..9dedf59 100644 (file)
-<?php
-/*
- * Abraham Williams (abraham@abrah.am) http://abrah.am
- *
- * Basic lib to work with Twitter's OAuth beta. This is untested and should not
- * be used in production code. Twitter's beta could change at anytime.
- *
- * Code based on:
- * Fire Eagle code - http://github.com/myelin/fireeagle-php-lib
- * twitterlibphp - http://github.com/jdp/twitterlibphp
- */
-
-//require_once('config.php');
-//require_once('oauth_lib.php');
-
-/**
- * Twitter OAuth class
- */
-class TwitterOAuth {
-       /* Contains the last HTTP status code returned */
-       public $http_code;
-       /* Contains the last API call */
-       public $last_api_call;
-       /* Set up the API root URL */
-       //public $host = "https://api.twitter.com/1/";
-       public $host = API_URL;
-       /* Set timeout default */
-       public $timeout = 5;
-       /* Set connect timeout */
-       public $connecttimeout = 5;
-       /* Verify SSL Cert */
-       public $ssl_verifypeer = FALSE;
-       /* Respons type */
-       public $type = 'json';
-       /* Decode returne json data */
-       public $decode_json = TRUE;
-       /* Immediately retry the API call if the response was not successful. */
-       //public $retry = TRUE;
-       public $source = 'rabr';
-
-       // user info
-       public $username;
-       public $screen_name;
-       public $user_id;
-
-       /**
-        * Set API URLS
-        */
-       function accessTokenURL()  { return 'https://twitter.com/oauth/access_token'; }
-       function authenticateURL() { return 'https://twitter.com/oauth/authenticate'; }
-       function authorizeURL()    { return 'https://twitter.com/oauth/authorize'; }
-       function requestTokenURL() { return 'https://twitter.com/oauth/request_token'; }
-
-       /**
-        * Debug helpers
-        */
-       function lastStatusCode() { return $this->http_status; }
-       function lastAPICall() { return $this->last_api_call; }
-
-       /**
-        * construct TwitterOAuth object
-        */
-       function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {
-               $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1();
-               $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
-               if (!empty($oauth_token) && !empty($oauth_token_secret)) {
-                       $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret);
-                       $this->screen_name = $_SESSION['access_token']['screen_name'];
-                       $this->username = $_SESSION['access_token']['screen_name'];
-                       $this->user_id = $_SESSION['access_token']['user_id'];
-               } else {
-                       $this->token = NULL;
-               }
-       }
-
-
-       /**
-        * Get a request_token from Twitter
-        *
-        * @returns a key/value array containing oauth_token and oauth_token_secret
-        */
-       function getRequestToken($oauth_callback = NULL) {
-               $parameters = array();
-               if (!empty($oauth_callback)) {
-                       $parameters['oauth_callback'] = $oauth_callback;
-               } 
-               $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);
-               $token = OAuthUtil::parse_parameters($request);
-               $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
-               return $token;
-       }
-
-       /**
-        * Get the authorize URL
-        *
-        * @returns a string
-        */
-       function getAuthorizeURL($token, $sign_in_with_twitter = TRUE) {
-               if (is_array($token)) {
-                       $token = $token['oauth_token'];
-               }
-               if (empty($sign_in_with_twitter)) {
-                       return $this->authorizeURL() . "?oauth_token={$token}";
-               } else {
-                       return $this->authenticateURL() . "?oauth_token={$token}";
-               }
-       }
-
-       /**
-        * Exchange the request token and secret for an access token and
-        * secret, to sign API calls.
-        *
-        * @returns array("oauth_token" => the access token,
-        *                "oauth_token_secret" => the access secret)
-        */
-       function getAccessToken($oauth_verifier = FALSE) {
-               $parameters = array();
-               if (!empty($oauth_verifier)) {
-                       $parameters['oauth_verifier'] = $oauth_verifier;
-               }
-               $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);
-               $token = OAuthUtil::parse_parameters($request);
-               $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
-               return $token;
-       }
-
-       /**
-        * GET wrappwer for oAuthRequest.
-        */
-       function get($url, $parameters = array()) {
-               $response = $this->oAuthRequest($url, 'GET', $parameters);
-               if($response == false){
-                       return false;
-               }
-               if ($this->type == 'json' && $this->decode_json) {
-                       return @json_decode($response);
-               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){
-                       return @simplexml_load_string($response);
-               }
-               return $response;
-       }
-
-       /**
-        * POST wreapper for oAuthRequest.
-        */
-       function post($url, $parameters = array()) {
-               $response = $this->oAuthRequest($url, 'POST', $parameters);
-               if($response === false){
-                       return false;
-               }
-               if ($this->type === 'json' && $this->decode_json) {
-                       return json_decode($response);
-               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){
-                       return simplexml_load_string($response);
-               }
-               return $response;
-       }
-
-       /**
-        * DELTE wrapper for oAuthReqeust.
-        */
-       function delete($url, $parameters = array()) {
-               $response = $this->oAuthRequest($url, 'DELETE', $parameters);
-               if($response === false){
-                       return false;
-               }
-               if ($this->type === 'json' && $this->decode_json) {
-                       return json_decode($response);
-               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){
-                       return simplexml_load_string($response);
-               }
-               return $response;
-       }
-
-       /**
-        * Format and sign an OAuth / API request
-        */
-       function oAuthRequest($url, $method, $parameters) {
-               if (strrpos($url, 'https://') !== 0 && strrpos($url, 'http://') !== 0) {
-                       $url = "{$this->host}{$url}.{$this->type}";
-               }
-               $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);
-               $request->sign_request($this->sha1_method, $this->consumer, $this->token);
-               switch ($method) {
-               case 'GET':
-                       return $this->http($request->to_url(), 'GET');
-               default:
-                       return $this->http($request->get_normalized_http_url(), $method, $request->to_postdata());
-               }
-       }
-
-       /**
-        * Make an HTTP request
-        *
-        * @return API results
-        */
-       function http($url, $method, $postfields = NULL) {
-               $ci = curl_init();
-               /* Curl settings */
-               curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);
-               curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);
-               curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);
-               curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));
-               curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);
-
-               switch ($method) {
-               case 'POST':
-                       curl_setopt($ci, CURLOPT_POST, TRUE);
-                       if (!empty($postfields)) {
-                               curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
-                       }
-                       break;
-               case 'DELETE':
-                       curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');
-                       if (!empty($postfields)) {
-                               $url = "{$url}?{$postfields}";
-                       }
-               }
-
-               curl_setopt($ci, CURLOPT_URL, $url);
-               $response = curl_exec($ci);
-               $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
-               $this->last_api_call = $url;
-               curl_close ($ci);
-               return $response;
-       }
-
-       /* ---------- API METHODS ---------- */
-       /*                                   */
-       /* ---------- Block ---------- */
-       function blockingIDs(){
-               $url = 'blocks/blocking/ids';
-               return $this->get($url);
-       }
-
-       function blockingList($page){
-               $url = '/blocks/blocking';
-               $args = array();
-               if($page){
-                       $args['page'] = $page;
-               }
-               return $this->get($url, $args);
-       }
-
-       function blockUser($id){
-               $url = $this->host.'/blocks/create';
-               $url .= "/$id.$this->type";
-               return $this->post($url);
-       }
-
-       function isBlocked($id){
-               $url = $this->host.'/blocks/exists';
-               $url .= "/$id.$this->type";
-               return $this->get($url);
-       }
-
-       function unblockUser($id){
-               $url = $this->host.'/blocks/destroy';
-               $url .= "/$id.$this->type";
-               return $this->delete($url);
-       }
-
-       /* ---------- Messages ---------- */
-       function deleteDirectMessage($id){
-               $url = $this->host.'/direct_messages/destroy';
-               $url .= "/$id.$this->type";
-               return $this->delete($url);
-       }
-
-       function directMessages($page = false, $since_id = false, $count = null){
-               $url = '/direct_messages';
-               $args = array();
-               if( $since_id )
-                       $args['since_id'] = $since_id;
-               if( $page )
-                       $args['page'] = $page;
-               return $this->get($url, $args);
-       }
-
-       function sendDirectMessage($user, $text){
-               $url = '/direct_messages/new';
-               $args = array();
-               $args['user'] = $user;
-               if($text)
-                       $args['text'] = $text;
-               return $this->post($url, $args);
-       }
-
-       function sentDirectMessage($page = false, $since = false, $since_id = false){
-               $url = '/direct_messages/sent';
-               $args = array();
-               if($since)
-                       $args['since'] = $since;
-               if($since_id)
-                       $args['since_id'] = $since_id;
-               if($page)
-                       $args['page'] = $page;
-               return $this->get($url, $args);
-       }
-
-       /* ---------- List ---------- */
-       function addListMember($listid, $memberid){
-               $url = "/1/$this->username/$listid/members";
-               $args = array();
-               if($memberid){
-                       $args['id'] = $memberid;
-               }
-               return $this->post($url, $args);
-       }
-
-       function beAddedLists($username = '', $cursor = false){
-               $url = $this->host."/$username/lists/memberships.$this->type";
-               $args = array();
-               if($cursor){
-                       $args['cursor'] = $cursor;
-               }
-               return $this->get($url, $args);
-       }
-
-       function createList($name, $description, $isPortect){
-               $url = "/$this->username/lists";
-               $args = array();
-               if($name){
-                       $args['name'] = $name;
-               }
-               if($description){
-                       $args['description'] = $description;
-               }
-               if($isProtect){
-                       $args['mode'] = 'private';
-               }
-               return $this->post($url, $args);
-       }
-
-       function createdLists($username = '', $cursor = false){
-               $url = $this->host."/$username/lists.$this->type";
-               $args = array();
-               if($cursor){
-                       $args['cursor'] = $cursor;
-               }
-               return $this->get($url, $args);
-       }
-
-       function deleteList($id){
-               $arr = explode('/', $id);
-               $url = "/$arr[0]/lists/$arr[1]";
-               return $this->delete($url);
-       }
-
-       function deleteListMember($id, $memberid){
-               $arr = explode("/", $id);
-               $url = "/1/".$arr[0]."/".$arr[1]."/members";
-               $args = array();
-               if($memberid){
-                       $args['id'] = $memberid;
-               }
-               return $this->delete($url, $args);
-       }
-
-       function editList($prename, $name, $description, $isProtect){
-               $url = "$this->username/lists/$prename";
-               $args = array();
-               if($name){
-                       $args['name'] = $name;
-               }
-               if($description){
-                       $args['description'] = $description;
-               }
-               if($isProtect){
-                       $args['mode'] = "private";
-               }
-               return $this->post($url, $args);
-       }
-
-       function followedLists($username = '', $cursor = false){
-               $url = $this->host."/$username/lists/subscriptions.$this->type";
-               $args = array();
-               if($cursor){
-                       $args['cursor'] = $cursor;
-               }
-               return $this->get($url, $args);
-       }
-
-       function followList($id){
-               $arr = explode("/", $id);
-               $url = $this->host."/1/$arr[0]/$arr[1]/subscribers/$this->type";
-               return $this->post($url, $args);
-       }
-
-       function isFollowedList($id){
-               $arr = explode('/', $id);
-               $url = $this->host."/$arr[0]/$arr[1]/subscribers/$this->username.$this->type";
-               return $this->get($url);
-       }
-
-       function listFollowers($id, $cursor = false){
-               $arr = explode('/', $id);
-               $url = $this->host."/1/$arr[0]/$arr[1]/subscribers.$this->type";
-               $args = array();
-               if($cursor){
-                       $args['cursor'] = $cursor;
-               }
-               return $this->get($url, $args);
-       }
-
-       function listInfo($id){
-               $arr = explode('/', $id);
-               $url = $this->host."/$arr[0]/lists/$arr[1].$this->type";
-               return $this->get($url);
-       }
-
-       function listMembers($id, $cursor = false){
-               $arr = explode("/", $id);
-               $url = $this->host."/1/$arr[0]/$arr[1]/members.$this->type";
-               $args = array();
-               if($cursor){
-                       $args['cursor'] = $cursor;
-               }
-               return $this->get($url, $args);
-
-       }
-
-       function listStatus($id, $page = false, $since_id = false){
-               $arr = explode('/', $id);
-               $url = $this->host."/$arr[0]/lists/$arr[1]/statuses.$this->type";
-               $args = array();
-               if($page){
-                       $args['page'] = $page;
-               }
-               if($since_id){
-                       $args['since_id'] = $since_id;
-               }
-               return $this->get($url, $args);
-       }
-
-       function unfollowList($id){
-               $arr = explode("/", $id);
-               $url = $this->host."/1/$arr[0]/$arr[1]/subscribers.$this->type";
-               return $this->delete($url);
-       }
-
-       /* ---------- Friendship ---------- */
-       function destroyUser($id){
-               $url = $this->host.'/friendships/destroy';
-               $url .= "/$id.$this->type";
-               return $this->delete($url);
-       }
-
-       function followers($id = false, $page = false, $count = 30){
-               $url = $this->host.'/statuses/followers';
-               $url .= $id ? "/$id.$this->type" : ".$this->type";
-               if( $id )
-                       $args['id'] = $id;
-               if( $count )
-                       $args['count'] = (int) $count;
-               $args['cursor'] = $page ? $page : -1;
-               return $this->get($url, $args);
-       }
-
-       function followUser($id, $notifications = false){
-               $url = $this->host.'/friendships/create';
-               $url .= "/$id.$this->type";
-               $args = array();
-               if($notifications)
-                       $args['follow'] = true;
-               return $this->post($url, $args);
-       }
-
-       function friends($id = false, $page = false, $count = 30){
-               $url = $this->host.'/statuses/friends';
-               $url .= $id ? "/$id.$this->type" : ".$this->type";
-               $args = array();
-               if( $id )
-                       $args['id'] = $id;
-               if( $count )
-                       $args['count'] = (int) $count;
-               $args['cursor'] = $page ? $page : -1;
-               return $this->get($url, $args);
-       }
-
-       function isFriend($user_a, $user_b){
-               $url = '/friendships/exists';
-               $args = array();
-               $args['user_a'] = $user_a;
-               $args['user_b'] = $user_b;
-               return $this->get($url, $args);
-       }
-
-       function relationship($target, $source = false){
-               $url = API_TWITTER.'/1/friendships/show.'.$this->type;
-               $args = array();
-               $args['target_screen_name'] = $target;
-               if($source){
-                       $args['source_screen_name'] = $source;
-               }
-               return $this->get($url, $args);
-       }
-
-       function showUser($id = false, $email = false, $user_id = false, $screen_name = false){
-               $url = '/users/show';
-               $args = array();
-               if($id)
-                       $args['id'] = $id;
-               elseif($screen_name)
-                       $args['id'] = $screen_name;
-               else
-                       $args['id'] = $this->user_id;
-
-               return $this->get($url, $args);
-       }
-
-       /* ---------- Ratelimit ---------- */
-       function ratelimit(){
-               $url = '/account/rate_limit_status';
-               return $this->get($url);
-       }
-
-       function ratelimit_status(){
-               return $this->ratelimit();
-       }
-
-       /* ---------- Retweet ---------- */
-       function getRetweeters($id, $count = false){
-               $url = $this->host."/1/statuses/retweets/$id.$this->type";
-               if($count != false){
-                       $url .= "?count=$count";
-               }
-               return $this->get($url);
-       }
-
-       function retweet($id){
-               $url = "http://api.twitter.com/1/statuses/retweet/$id.$this->type";
-               return $this->post($url);
-       }
-
-       function retweets($id, $count = 20){
-               if($count > 100){
-                       $count = 100;
-               }
-               $url = "http://api.twitter.com/1/statuses/retweets/id.$this->type?count=$count";
-               return $this->get($url);
-       }
-
-       // Returns the 20 most recent retweets posted by the authenticating user.
-       function retweeted_by_me($page = false, $count = 20, $since_id = false, $max_id = false){
-               $url = "http://api.twitter.com/1/statuses/retweeted_by_me.$this->type";
-               $args = array();
-               if($since_id){
-                       $args['since_id'] = $since_id;
-               }
-               if($max_id){
-                       $args['max_id'] = $max_id;
-               }
-               if($count){
-                       $args['count'] = $count;
-               }
-               if($page){
-                       $args['page'] = $page;
-               }
-               return $this->get($url, $args);
-       }
-
-       // Returns the 20 most recent retweets posted by the authenticating user's friends.
-       function retweeted_to_me($page = false, $count = false, $since_id = false, $max_id = false){
-               $url = "http://api.twitter.com/1/statuses/retweeted_to_me.$this->type";
-               $args = array();
-               if($since_id){
-                       $args['since_id'] = $since_id;
-               }
-               if($max_id){
-                       $args['max_id'] = $max_id;
-               }
-               if($count){
-                       $args['count'] = $count;
-               }
-               if($page){
-                       $args['page'] = $page;
-               }
-               return $this->get($url, $args);
-       }
-
-       function retweets_of_me($page = false, $count = false, $since_id = false, $max_id = false){
-               $url = "http://api.twitter.com/1/statuses/retweets_of_me.$this->type";
-               $args = array();
-               if($since_id){
-                       $args['since_id'] = $since_id;
-               }
-               if($max_id){
-                       $args['max_id'] = $max_id;
-               }
-               if($count){
-                       $args['count'] = $count;
-               }
-               if($page){
-                       $args['page'] = $page;
-               }
-               return $this->get($url, $args);
-       }
-
-       /* ---------- Search ---------- */
-       function search($q = false, $page = false, $rpp = false){
-               $url = '/search';
-               if(!$q)
-                       return false;
-               $args = array();
-               if($page){
-                       $args['page'] = $page;
-               }
-               if($rpp){
-                       $args['rpp'] = $rpp;
-               }
-               $args['q'] = $q;
-               return $this->get($url, $args);
-       }
-
-       /* ---------- Spam ---------- */
-       function reportSpam($screen_name){
-               $url = API_TWITTER."/1/report_spam.$this->type";
-               $args = array();
-               $args['screen_name'] = $screen_name;
-               return $this->post($url, $args);
-       }
-
-       /* ---------- Timeline ---------- */
-       function deleteStatus($id){
-               $url = $this->host.'/statuses/destroy';
-               $url .= "/$id.$this->type";
-               return $this->delete($url);
-       }
-
-       function friendsTimeline($page = false, $since_id = false, $count = false){
-               $url = '/statuses/friends_timeline';
-               $args = array();
-               if($page)
-                       $args['page'] = $page;
-               if($since_id)
-                       $args['since_id'] = $since_id;
-               if($count)
-                       $args['count'] = $count;
-               return $this->get($url, $args);
-       }
-
-       function getFavorites($page = false){
-               $url = '/favorites';
-               $args = array();
-               if($page)
-                       $args['page'] = $page;
-               return $this->get($url, $args);
-       }
-
-       function makeFavorite($id){
-               $url = $this->host.'/favorites/create/';
-               $url .= "$id.$this->type";
-               return $this->post($url);
-       }
-
-       function publicTimeline($sinceid = false){
-               $url = '/statuses/public_timeline';
-               $args = array();
-               if($sinceid){
-                       $args['since_id'] = $sinceid;
-               }
-               return $this->get($url, $args);
-       }
-
-       function removeFavorite($id){
-               $url = $this->host.'/favorites/destroy/';
-               $url .= "$id.$this->type";
-               return $this->post($url);
-       }
-
-       function replies($page = false, $since_id = false){
-               $url = '/statuses/mentions';
-               $args = array();
-               if($page)
-                       $args['page'] = (int) $page;
-               if($since_id)
-                       $args['since_id'] = $since_id;
-               return $this->get($url, $args);
-       }
-
-       function showStatus($id){
-               $url = $this->host.'/statuses/show';
-               $url .= "/$id.$this->type";
-               return $this->get($url);
-       }
-
-       function update($status, $replying_to = false){
-               try{
-                       $url = '/statuses/update';
-                       $args = array();
-                       $args['status'] = $status;
-                       if($replying_to)
-                               $args['in_reply_to_status_id'] = $replying_to;
-                       return $this->post($url, $args);
-               }catch(Exception $ex){
-                       echo $ex->getLine." : ".$ex->getMessage();
-               }
-       }
-
-       function userTimeline($page = false, $id = false, $count = false, $since_id = false){
-               $url = '/statuses/user_timeline';
-               $args = array();
-               if($page)
-                       $args['page'] = $page;
-               if($id)
-                       $args['id'] = $id;
-               if($count)
-                       $args['count'] = $count;
-               if($since_id)
-                       $args['since_id'] = $since_id;
-               $response = $this->get($url, $args);
-               if($response->error === 'Not authorized'){
-                       return 'protected';
-               }
-               return $response;
-       }
-
-       function trends(){
-               $url = "http://search.twitter.com/trends.$this->type";
-               return $this->get($url);
-       }
-
-       /* ---------- Misc. ---------- */
-       function twitterAvailable(){
-               $url = "/help/test";
-               if($this->get($url) == 'ok'){
-                       return true;
-               }
-               return false;
-       }
-
-       function updateProfile($fields = array()){
-               $url = '/account/update_profile';
-               $args = array();
-               foreach( $fields as $pk => $pv ){
-                       switch( $pk ){
-                       case 'name' :
-                               $args[$pk] = (string) substr( $pv, 0, 20 );
-                               break;
-                       case 'email' :
-                               if( preg_match( '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $pv ) )
-                                       $args[$pk] = (string) $pv;
-                               break;
-                       case 'url' :
-                               $args[$pk] = (string) substr( $pv, 0, 100 );
-                               break;
-                       case 'location' :
-                               $args[$pk] = (string) substr( $pv, 0, 30 );
-                               break;
-                       case 'description' :
-                               $args[$pk] = (string) substr( $pv, 0, 160 );
-                               break;
-                       default :
-                               break;
-                       }
-               }
-               return $this->post($url, $args);
-       }
-
-       function veverify(){
-               $url = $this->host.'/account/verify_credentials.'.$this->type;
-               return $this->get($url);
-       }
-
-       /* ---------- image upload ---------- */
-       function imglyUpload($image){
-               $imgly = new image_uploader();
-               return is_null($imgly->imgly($image));
-       }
-
-       /* ---------- twitese method ---------- */
-       function rank($page = false, $count = false){
-               $url = TWITESE_API_URL."/rank.$this->type";
-               $args = array();
-               if($page){
-                       $args['page'] = $page;
-               }
-               if($count){
-                       $args['count'] = $count;
-               }
-               return $this->get($url, $args);
-       }
-
-       function browse($page = false, $count = false){
-               $url = TWITESE_API_URL."/browse.$this->type";
-               $args = array();
-               if($page){
-                       $args['page'] = $page;
-               }
-               if($count){
-                       $args['count'] = $count;
-               }
-               return $this->get($url, $args);
-       }
-}
-
+<?php\r
+/*\r
+ * Abraham Williams (abraham@abrah.am) http://abrah.am\r
+ *\r
+ * Basic lib to work with Twitter's OAuth beta. This is untested and should not\r
+ * be used in production code. Twitter's beta could change at anytime.\r
+ *\r
+ * Code based on:\r
+ * Fire Eagle code - http://github.com/myelin/fireeagle-php-lib\r
+ * twitterlibphp - http://github.com/jdp/twitterlibphp\r
+ */\r
+\r
+//require_once('config.php');\r
+//require_once('oauth_lib.php');\r
+\r
+/**\r
+ * Twitter OAuth class\r
+ */\r
+class TwitterOAuth {\r
+       /* Contains the last HTTP status code returned */\r
+       public $http_code;\r
+       /* Contains the last API call */\r
+       public $last_api_call;\r
+       /* Set up the API root URL */\r
+       //public $host = "https://api.twitter.com/1/";\r
+       public $host = API_URL;\r
+       /* Set timeout default */\r
+       public $timeout = 5;\r
+       /* Set connect timeout */\r
+       public $connecttimeout = 30;\r
+       /* Verify SSL Cert */\r
+       public $ssl_verifypeer = FALSE;\r
+       /* Response type */\r
+       public $type = 'json';\r
+       /* Decode return json data */\r
+       public $decode_json = TRUE;\r
+\r
+       public $source = 'embr';\r
+\r
+       // user info\r
+       public $username;\r
+       public $screen_name;\r
+       public $user_id;\r
+       \r
+       //for debug use\r
+       public $curl_info;\r
+       public $http_header;\r
+\r
+       /**\r
+        * Set API URLS\r
+        */\r
+       function accessTokenURL()  { return 'https://api.twitter.com/oauth/access_token'; }\r
+       function authenticateURL() { return 'https://api.twitter.com/oauth/authenticate'; }\r
+       function authorizeURL()    { return 'https://api.twitter.com/oauth/authorize'; }\r
+       function requestTokenURL() { return 'https://api.twitter.com/oauth/request_token'; }\r
+\r
+       /**\r
+        * Debug helpers\r
+        */\r
+       function lastStatusCode() { return $this->http_status; }\r
+       function lastAPICall() { return $this->last_api_call; }\r
+\r
+       /**\r
+        * construct TwitterOAuth object\r
+        */\r
+       function __construct($consumer_key, $consumer_secret, $oauth_token = NULL, $oauth_token_secret = NULL) {\r
+               $this->sha1_method = new OAuthSignatureMethod_HMAC_SHA1();\r
+               $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);\r
+               if (!empty($oauth_token) && !empty($oauth_token_secret)) {\r
+                       $this->token = new OAuthConsumer($oauth_token, $oauth_token_secret);\r
+                       $this->screen_name = $_SESSION['access_token']['screen_name'];\r
+                       $this->username = $_SESSION['access_token']['screen_name'];\r
+                       $this->user_id = $_SESSION['access_token']['user_id'];\r
+               } else {\r
+                       $this->token = NULL;\r
+               }\r
+       }\r
+\r
+\r
+       /**\r
+        * Get a request_token from Twitter\r
+        *\r
+        * @returns a key/value array containing oauth_token and oauth_token_secret\r
+        */\r
+       function getRequestToken($oauth_callback = NULL) {\r
+               $parameters = array();\r
+               if (!empty($oauth_callback)) {\r
+                       $parameters['oauth_callback'] = $oauth_callback;\r
+               } \r
+               $request = $this->oAuthRequest($this->requestTokenURL(), 'GET', $parameters);\r
+               $token = OAuthUtil::parse_parameters($request);\r
+               $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);\r
+               return $token;\r
+       }\r
+\r
+       /**\r
+        * Get the authorize URL\r
+        *\r
+        * @returns a string\r
+        */\r
+       function getAuthorizeURL($token) {\r
+               if (is_array($token)) {\r
+                       $token = $token['oauth_token'];\r
+               }\r
+               return $this->authorizeURL() . "?oauth_token={$token}";\r
+       }\r
+\r
+       /**\r
+        * Exchange the request token and secret for an access token and\r
+        * secret, to sign API calls.\r
+        *\r
+        * @returns array("oauth_token" => the access token,\r
+        *                "oauth_token_secret" => the access secret)\r
+        */\r
+       function getAccessToken($oauth_verifier = FALSE) {\r
+               $parameters = array();\r
+               if (!empty($oauth_verifier)) {\r
+                       $parameters['oauth_verifier'] = $oauth_verifier;\r
+               }\r
+               $request = $this->oAuthRequest($this->accessTokenURL(), 'GET', $parameters);\r
+               $token = OAuthUtil::parse_parameters($request);\r
+               $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);\r
+               return $token;\r
+       }\r
+\r
+       /**\r
+        * GET wrappwer for oAuthRequest.\r
+        */\r
+       function get($url, $parameters = array()) {\r
+               $response = $this->oAuthRequest($url, 'GET', $parameters);\r
+               if($response == false){\r
+                       return false;\r
+               }\r
+               if ($this->type == 'json' && $this->decode_json) {\r
+                       return json_decode($response);\r
+               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){\r
+                       return simplexml_load_string($response);\r
+               }\r
+               return $response;\r
+       }\r
+\r
+       /**\r
+        * POST wreapper for oAuthRequest.\r
+        */\r
+       function post($url, $parameters = array(), $multipart = NULL) {\r
+               $response = $this->oAuthRequest($url, 'POST', $parameters, $multipart);\r
+               if($response === false){\r
+                       return false;\r
+               }\r
+               if ($this->type === 'json' && $this->decode_json) {\r
+                       return json_decode($response);\r
+               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){\r
+                       return simplexml_load_string($response);\r
+               }\r
+               return $response;\r
+       }\r
+\r
+       /**\r
+        * DELTE wrapper for oAuthReqeust.\r
+        */\r
+       function delete($url, $parameters = array()) {\r
+               $response = $this->oAuthRequest($url, 'DELETE', $parameters);\r
+               if($response === false){\r
+                       return false;\r
+               }\r
+               if ($this->type === 'json' && $this->decode_json) {\r
+                       return json_decode($response);\r
+               }elseif($this->type == 'xml' && function_exists('simplexml_load_string')){\r
+                       return simplexml_load_string($response);\r
+               }\r
+               return $response;\r
+       }\r
+\r
+       /**\r
+        * Format and sign an OAuth / API request, then make an HTTP request\r
+        */\r
+       function oAuthRequest($url, $method, $parameters, $multipart=NULL) {\r
+               if ($url[0] == '/') { //non-twitter.com api shall offer the entire url.\r
+                       $url = "{$this->host}{$url}.{$this->type}";\r
+               }\r
+               $request = OAuthRequest::from_consumer_and_token($this->consumer, $this->token, $method, $url, $parameters);\r
+               $request->sign_request($this->sha1_method, $this->consumer, $this->token);\r
+               $request->set_http_header($multipart);\r
+               \r
+               $ci = curl_init();\r
+               /* Curl settings */\r
+               curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);\r
+               curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);\r
+               curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);\r
+               curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);\r
+\r
+               switch ($method) {\r
+               case 'GET':\r
+                       curl_setopt($ci, CURLOPT_URL, $request->to_url());\r
+                       curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));\r
+                       break;\r
+               case 'POST':\r
+                       $postfields = $multipart ? $multipart : $request->to_postdata();\r
+                       curl_setopt($ci, CURLOPT_URL, $request->get_normalized_http_url());\r
+                       curl_setopt($ci, CURLOPT_HTTPHEADER, $request->http_header);\r
+                       curl_setopt($ci, CURLOPT_POST, TRUE);\r
+                       if (!empty($postfields)) {\r
+                               curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);\r
+                       }\r
+                       break;\r
+               case 'DELETE':\r
+                       $postfields = $request->to_postdata($multipart);\r
+                       $url = $request->get_normalized_http_url();\r
+                       curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE');\r
+                       curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:'));\r
+                       if (!empty($postfields)) {\r
+                               $url = "{$url}?{$postfields}";\r
+                               curl_setopt($ci, CURLOPT_URL, $url);\r
+                       }\r
+               }\r
+\r
+               $response = curl_exec($ci);\r
+               $this->http_header = $request->http_header;\r
+               $this->curl_info = curl_getinfo($ci);\r
+               $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);\r
+               $this->last_api_call = curl_getinfo($ci, CURLINFO_EFFECTIVE_URL);\r
+               \r
+               curl_close ($ci);\r
+               \r
+               return $response;\r
+       }\r
+       \r
+\r
+       /* ---------- API METHODS ---------- */\r
+       /*                                   */\r
+       /* ---------- Block ---------- */\r
+       function blockingIDs(){\r
+               $url = '/blocks/blocking/ids';\r
+               return $this->get($url);\r
+       }\r
+\r
+       function blockingList($id, $cursor=-1, $skip_status = 1){\r
+               $url = '/blocks/list';\r
+               $args = array();\r
+               if($id)\r
+                       $args['user_id'] = $id;\r
+               if($cursor)\r
+                       $args['cursor'] = $cursor;\r
+               $args['skip_status'] = $skip_status;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function blockUser($id){\r
+               $url = "/blocks/create/$id";\r
+               return $this->post($url);\r
+       }\r
+\r
+       function isBlocked($id){\r
+               $url = "/blocks/exists/$id";\r
+               return $this->get($url);\r
+       }\r
+\r
+       function unblockUser($id){\r
+               $url = "/blocks/destroy/$id";\r
+               return $this->delete($url);\r
+       }\r
+\r
+       /* ---------- Messages ---------- */\r
+       function deleteDirectMessage($id){\r
+               $url = "/direct_messages/destroy/$id";\r
+               return $this->delete($url);\r
+       }\r
+\r
+       function directMessages($page = false, $since_id = false, $count = null, $include_entities = true){\r
+               $url = '/direct_messages';\r
+               $args = array();\r
+               if( $since_id )\r
+                       $args['since_id'] = $since_id;\r
+               if( $page )\r
+                       $args['page'] = $page;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function sendDirectMessage($user, $text){\r
+               $url = '/direct_messages/new';\r
+               $args = array();\r
+               $args['user'] = $user;\r
+               if($text)\r
+                       $args['text'] = $text;\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function sentDirectMessage($page = false, $since = false, $since_id = false){\r
+               $url = '/direct_messages/sent';\r
+               $args = array();\r
+               if($since)\r
+                       $args['since'] = $since;\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       /* ---------- List ---------- */\r
+       function addListMember($listid, $memberid){\r
+               $url = "/lists/members/create_all";\r
+               $args = array();\r
+               if($listid) \r
+                       $args['slug'] = $listid;\r
+               if($memberid)\r
+                       $args['user_id'] = $memberid;\r
+               \r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function beAddedLists($owner_screen_name = '', $cursor = false){\r
+               $url = "/lists/memberships";\r
+               $args = array();\r
+               if($owner_screen_name)\r
+                       $args['owner_screen_name'] = $owner_screen_name;\r
+               if($cursor){\r
+                       $args['cursor'] = $cursor;\r
+               }\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function createList($name, $description, $isPortect){\r
+               $url = "/lists/create";\r
+               $args = array();\r
+               if($name)\r
+                       $args['name'] = $name;\r
+               if($description)\r
+                       $args['description'] = $description;\r
+               if($isProtect)\r
+                       $args['mode'] = 'private';\r
+               \r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function createdLists($username = '', $cursor = false){\r
+               $url = "/lists/ownerships";\r
+               $args = array();\r
+               if($cursor)\r
+                       $args['cursor'] = $cursor;\r
+               \r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function deleteList($id){\r
+               $url = "/lists/destroy";\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function deleteListMember($id, $memberid){\r
+               $arr = explode("/", $id);\r
+               $url = "/lists/members/destroy_all";\r
+               $args = array();\r
+               $args['slug'] = $arr[1];\r
+               if($memberid)\r
+                       $args['id'] = $memberid;\r
+               \r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function editList($prename, $name, $description, $isProtect){\r
+               $url = "/lists/update";\r
+               $args = array();\r
+               if($prename)\r
+                       $args['slug'] = $prename;\r
+               if($name)\r
+                       $args['name'] = $name;\r
+               if($description)\r
+                       $args['description'] = $description;\r
+               if($isProtect)\r
+                       $args['mode'] = "private";\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function followedLists($username = '', $cursor = false){\r
+               $url = "/lists/subscriptions";\r
+               $args = array();\r
+               if($username) \r
+                       $args['user_id'] = $username;\r
+               if($cursor)\r
+                       $args['cursor'] = $cursor;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function followList($id){\r
+               $url = "/lists/subscribers/create";\r
+               $arr = explode("/", $id);\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function isFollowedList($id){\r
+               $url = "/lists/subscribers/show";\r
+               $arr = explode('/', $id);\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               $args['user_id'] = $this->username;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function listFollowers($id, $cursor = false, $skip_status = 1){\r
+               $url = "/lists/subscribers";\r
+               $arr = explode('/', $id);\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               if($cursor){\r
+                       $args['cursor'] = $cursor;\r
+               }\r
+               $args['skip_status'] = $skip_status;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function listInfo($id){\r
+               $arr = explode('/', $id);\r
+               $url = "/lists/show";\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function listMembers($id, $cursor = false, $skip_status = 1){\r
+               $arr = explode("/", $id);\r
+               $url = "/lists/members";\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               if($cursor){\r
+                       $args['cursor'] = $cursor;\r
+               }\r
+               $args['skip_status'] = $skip_status;\r
+               return $this->get($url, $args);\r
+\r
+       }\r
+\r
+       function listStatus($id, $page = false, $since_id = false,$include_rts = true, $include_entities = true){\r
+               $arr = explode('/', $id);\r
+               $url = '/lists/statuses';\r
+               $args = array();\r
+               $args['slug'] = $arr[1];\r
+               $args['owner_screen_name'] = $arr[0];\r
+               if($page){\r
+                       $args['page'] = $page;\r
+               }\r
+               if($since_id){\r
+                       $args['since_id'] = $since_id;\r
+               }\r
+               if($include_rts)\r
+                       $args['include_rts'] = $include_rts;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function unfollowList($id){\r
+               $arr = explode("/", $id);\r
+               $url = "/lists/subscribers/destroy";\r
+               $args = array();\r
+               $args['owner_screen_name'] = $arr[0];\r
+               $args['slug'] = $arr[1];\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       /* ---------- Friendship ---------- */\r
+       function destroyUser($id){\r
+               $url = "/friendships/destroy/$id";\r
+               return $this->delete($url);\r
+       }\r
+\r
+       function followers($id = false, $page = false, $skip_status = true){\r
+               $url = 'followers/list';\r
+               if( $id )\r
+                       $args['user_id'] = $id;\r
+               $args['cursor'] = $page ? $page : -1;\r
+               $args['skip_status'] = $skip_status;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function followUser($id, $notifications = false){\r
+               $url = "/friendships/create/$id";\r
+               $args = array();\r
+               if($notifications)\r
+                       $args['follow'] = true;\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       function friends($id = false, $page = false, $skip_status = true){\r
+               $url = '/friends/list';\r
+               $args = array();\r
+               if( $id )\r
+                       $args['user_id'] = $id;\r
+               $args['cursor'] = $page ? $page : -1;\r
+               $args['skip_status'] = $skip_status;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function isFriend($user_a, $user_b){\r
+               $url = '/friendships/exists';\r
+               $args = array();\r
+               $args['user_a'] = $user_a;\r
+               $args['user_b'] = $user_b;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function friendship($source_screen_name,$target_screen_name){\r
+               $url = '/friendships/show';\r
+               $args = array();\r
+               $args['source_screen_name'] = $source_screen_name;\r
+               $args['target_screen_name'] = $target_screen_name;\r
+               return $this->get($url, $args);\r
+       }\r
+       \r
+       function relationship($target, $source = false){\r
+               $url = '/friendships/show';\r
+               $args = array();\r
+               $args['target_screen_name'] = $target;\r
+               if($source){\r
+                       $args['source_screen_name'] = $source;\r
+               }\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function showUser($id = false, $email = false, $user_id = false, $screen_name = false,$include_entities = true){\r
+               $url = '/users/show';\r
+               $args = array();\r
+               if($id)\r
+                       $args['id'] = $id;\r
+               elseif($screen_name)\r
+                       $args['id'] = $screen_name;\r
+               else\r
+                       $args['id'] = $this->user_id;\r
+\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       /* ---------- Ratelimit ---------- */\r
+       function ratelimit(){\r
+               $url = '/account/rate_limit_status';\r
+               return $this->get($url,array(),false);\r
+       }\r
+\r
+       /* ---------- Retweet ---------- */\r
+       function getRetweeters($id, $count = false){\r
+               $url = "/statuses/retweets/$id";\r
+               if($count != false) {\r
+                       $url .= "?count=$count";\r
+               }\r
+               return $this->get($url);\r
+       }\r
+\r
+       function retweet($id){\r
+               $url = "/statuses/retweet/$id";\r
+               return $this->post($url);\r
+       }\r
+\r
+       function retweets($id, $count = 20,$include_entities = true){\r
+               if($count > 100){\r
+                       $count = 100;\r
+               }\r
+               $url = "/statuses/retweets/$id";\r
+               $args = array();\r
+               $args['count'] = unt;\r
+               if($include_ities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url,$args);\r
+       }\r
+\r
+       function retweets_of_me($page = false, $count = false, $since_id = false, $max_id = false,$include_entities = true){\r
+               $url = '/statuses/retweets_of_me';\r
+               $args = array();\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($max_id)\r
+                       $args['max_id'] = $max_id;\r
+               if($count)\r
+                       $args['count'] = $count;\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       /* ---------- Search ---------- */\r
+       function search($q = false, $max_id = false, $include_entities = true){\r
+               $url = "/search/tweets";\r
+               if(!$q) {\r
+                       return false;\r
+               } else {\r
+                       $args = array();\r
+                       $args['q'] = $q;\r
+               }\r
+               if($max_id)\r
+                       $args['max_id'] = $max_id;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       /* ---------- Spam ---------- */\r
+       function reportSpam($screen_name){\r
+               $url = '/report_spam';\r
+               $args = array();\r
+               $args['screen_name'] = $screen_name;\r
+               return $this->post($url, $args);\r
+       }\r
+\r
+       /* ---------- Timeline ---------- */\r
+       function deleteStatus($id){\r
+               $url = "/statuses/destroy/$id";\r
+               return $this->delete($url);\r
+       }\r
+\r
+       function homeTimeline($page = false, $since_id = false, $count = false, $include_entities = true) {\r
+               $url = '/statuses/home_timeline';\r
+               $args = array();\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($count)\r
+                       $args['count'] = $count;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+       \r
+       function friendsTimeline($page = false, $since_id = false, $count = false,$include_entities = true){\r
+               $url = '/statuses/friends_timeline';\r
+               $args = array();\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($count)\r
+                       $args['count'] = $count;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function getFavorites($page = false,$userid=false,$include_entities = true){\r
+               $url = '/favorites/list';\r
+               $args = array();\r
+               if($userid)\r
+                       $args['user_id'] = $userid;\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function makeFavorite($id){\r
+               $url = "/favorites/create/$id";\r
+               return $this->post($url);\r
+       }\r
+\r
+       function publicTimeline($sinceid = false,$include_entities = true){\r
+               $url = '/statuses/public_timeline';\r
+               $args = array();\r
+               if($sinceid){\r
+                       $args['since_id'] = $sinceid;\r
+               }\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function removeFavorite($id){\r
+               $url = "/favorites/destroy/$id";\r
+               return $this->post($url);\r
+       }\r
+\r
+       function replies($page = false, $since_id = false,$include_entities = true){\r
+               $url = '/statuses/mentions_timeline';\r
+               $args = array();\r
+               if($page)\r
+                       $args['page'] = (int) $page;\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url, $args);\r
+       }\r
+\r
+       function showStatus($id,$include_entities = true){\r
+               $url = "/statuses/show/";\r
+               $args = array();\r
+               if($id)\r
+                       $args['id'] = $id;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               return $this->get($url,$args);\r
+       }\r
+\r
+       function update($status, $replying_to = false,$include_entities = true){\r
+               try{\r
+                       $url = '/statuses/update';\r
+                       $args = array();\r
+                       $args['status'] = $status;\r
+                       if($replying_to)\r
+                               $args['in_reply_to_status_id'] = $replying_to;\r
+                       if($include_entities)\r
+                               $args['include_entities'] = $include_entities;\r
+                       return $this->post($url, $args);\r
+               }catch(Exception $ex){\r
+                       echo $ex->getLine." : ".$ex->getMessage();\r
+               }\r
+       }\r
+\r
+       function userTimeline($page = false, $id = false, $count = false, $since_id = false, $include_rts = true, $include_entities = true){\r
+               $url = '/statuses/user_timeline';\r
+               $args = array();\r
+               if($page)\r
+                       $args['page'] = $page;\r
+               if($id)\r
+                       $args['id'] = $id;\r
+               if($count)\r
+                       $args['count'] = $count;\r
+               if($since_id)\r
+                       $args['since_id'] = $since_id;\r
+               if($include_rts)\r
+                       $args['include_rts'] = $include_rts;\r
+               if($include_entities)\r
+                       $args['include_entities'] = $include_entities;\r
+               $response = $this->get($url, $args);\r
+               return $response;\r
+       }\r
+\r
+       function trends_closest($lat = false, $long=false) {\r
+               $url = "/trends/closest";\r
+               $args = array();\r
+               if ($lat)\r
+                       $args['lat'] = $lat;\r
+               if ($long)\r
+                       $args['long'] = $long;\r
+               return $this->get($url, $args);\r
+       }\r
+       \r
+       function trends_place($id = 1) {\r
+               $url = "/trends/place";\r
+               $args = array();\r
+               if ($id)\r
+                       $args['id'] = $id;\r
+               return $this->get($url, $args);\r
+       }\r
+       /* ---------- Misc. ---------- */\r
+       function twitterAvailable(){\r
+               $url = "/help/test";\r
+               if($this->get($url) == 'ok'){\r
+                       return true;\r
+               }\r
+               return false;\r
+       }\r
+\r
+       function veverify($skip_status = false){\r
+               $url = '/account/verify_credentials';\r
+               $args = array('skip_status' => $skip_status);\r
+               return $this->get($url,$args);\r
+       }\r
+       \r
+       function updateProfile($fields = array(), $skip_status = true){\r
+               $url = '/account/update_profile';\r
+               $args = array();\r
+               foreach( $fields as $pk => $pv ){\r
+                       switch( $pk ){\r
+                       case 'name' :\r
+                               $args[$pk] = (string) substr( $pv, 0, 20 );\r
+                               break;\r
+                       case 'url' :\r
+                               $args[$pk] = (string) substr( $pv, 0, 100 );\r
+                               break;\r
+                       case 'location' :\r
+                               $args[$pk] = (string) substr( $pv, 0, 30 );\r
+                               break;\r
+                       case 'description' :\r
+                               $args[$pk] = (string) substr( $pv, 0, 160 );\r
+                               break;\r
+                       default :\r
+                               break;\r
+                       }\r
+                       $args['skip_status'] = $skip_status;\r
+               }\r
+               return $this->post($url, $args);\r
+       }\r
+       \r
+       /* media */\r
+       function updateProfileImage($image, $skip_status=true) {\r
+               $url = '/account/update_profile_image';\r
+               $mul = array();\r
+               if($image){\r
+                       $mul['image']=$image;\r
+               }\r
+               if($skip_status) {\r
+                       $args['skip_status']=$skip_status;\r
+               }\r
+               return $this->post($url, $args, $mul);\r
+       }\r
+       \r
+       function updateProfileBackground($image, $skip_status=true) {\r
+               $url = '/account/update_profile_background_image';\r
+               $mul = array();\r
+               if($image){\r
+                       $mul['image']=$image;\r
+                       $mul['skip_status']=$skip_status;\r
+               }\r
+               return $this->post($url, NULL, $mul);\r
+       }\r
+       \r
+       function updateMedia($status,$image,$replying_to = false) {\r
+               $url = 'https://upload.twitter.com/1/statuses/update_with_media'.$this->type;\r
+               $args = array();\r
+               if($status) $args['status'] = $status;\r
+               if($replying_to) $args['in_reply_to_status_id'] = $replying_to;\r
+               $mul = array();\r
+               if($image) $mul['media'][] = $image;\r
+               return $this->post($url,$args,$mul);\r
+       }\r
+}\r
+\r
index b2a4d85..0811c46 100644 (file)
@@ -1,6 +1,6 @@
 <?php\r
-       function setEncryptCookie($key, $value, $time = 0, $path) {\r
-               if (trim(getMcryptKey()) == '') {\r
+       function setEncryptCookie($key, $value, $time = 0, $path = '/') {\r
+               if (trim(SECURE_KEY) == '') {\r
                        setcookie($key, $value, $time, $path);\r
                } else {\r
                        setcookie($key, encrypt($value), $time, $path);\r
@@ -9,7 +9,7 @@
 \r
        function getEncryptCookie($key) {\r
                if ( isset($_COOKIE[$key]) ) {\r
-                       if (trim(getMcryptKey()) == '') {\r
+                       if (trim(SECURE_KEY) == '') {\r
                                return $_COOKIE[$key];\r
                        } else {\r
                                return decrypt($_COOKIE[$key]);\r
        }\r
 \r
        function delCookie($key) {\r
-               setcookie($key, '', time()-300, '/');\r
+               setcookie($key, '', $_SERVER['REQUEST_TIME']-300, '/');\r
        }\r
-       /*\r
+\r
+       function encrypt($plain_text) {\r
+               if ( !function_exists('mcrypt_module_open') ) {\r
+                       return EDencrypt($plain_text, SECURE_KEY);\r
+               }\r
+               $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
+               $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);\r
+               mcrypt_generic_init($td, SECURE_KEY, $iv);\r
+               $crypt_text = mcrypt_generic($td, $plain_text);\r
+               mcrypt_generic_deinit($td);\r
+               return base64_encode($iv.$crypt_text);\r
+       }\r
+\r
+       function decrypt($crypt_text) {\r
+               if ( !function_exists('mcrypt_module_open') ) {\r
+                       return EDdecrypt($plain_text, SECURE_KEY);\r
+               }\r
+               $crypt_text = base64_decode($crypt_text);\r
+               $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
+               $ivsize = mcrypt_enc_get_iv_size($td);\r
+               $iv = substr($crypt_text, 0, $ivsize);\r
+               $crypt_text = substr($crypt_text, $ivsize);\r
+               mcrypt_generic_init($td, SECURE_KEY, $iv);\r
+               $plain_text = mdecrypt_generic($td, $crypt_text);\r
+               mcrypt_generic_deinit($td);\r
+\r
+               return $plain_text;\r
+       }\r
+\r
+       if ( !function_exists('mb_strlen') ) {\r
+               function mb_strlen($text, $encode) {\r
+                       if (strtolower($encode) == 'utf-8') {\r
+                               return preg_match_all('%(?:\r
+                                       [\x09\x0A\x0D\x20-\x7E]     # ASCII\r
+                                       | [\xC2-\xDF][\x80-\xBF]# non-overlong 2-byte\r
+                                       |  \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs\r
+                                       | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte\r
+                                       |  \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates\r
+                                       |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3\r
+                                       | [\xF1-\xF3][\x80-\xBF]{3}   # planes 4-15\r
+                                       |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16\r
+                               )%xs',$text,$out);\r
+                       }else{\r
+                               return strlen($text);\r
+                       }\r
+               }\r
+       }\r
+       \r
        function keyED($txt,$encrypt_key) {\r
 \r
                $encrypt_key = md5($encrypt_key);\r
@@ -45,7 +92,7 @@
                return $tmp;\r
        }\r
 \r
-       function encrypt($txt,$key) {\r
+       function EDencrypt($txt,$key) {\r
 \r
                srand((double)microtime()*1000000);\r
                $encrypt_key = md5(rand(0,32000));\r
                return keyED($tmp,$key);\r
        }\r
 \r
-       function decrypt($txt,$key) {\r
+       function EDdecrypt($txt,$key) {\r
 \r
                $txt = keyED($txt,$key);\r
                $tmp = "";\r
                return $tmp;\r
 \r
        }\r
-        */\r
-\r
-       function getMcryptKey() {\r
-               return SECURE_KEY;\r
-       }\r
-\r
-       function encrypt($plain_text) {   \r
-               $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
-               $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);\r
-               mcrypt_generic_init($td, getMcryptKey(), $iv);\r
-               $crypt_text = mcrypt_generic($td, $plain_text);\r
-               mcrypt_generic_deinit($td);\r
-               return base64_encode($iv.$crypt_text);\r
-       }\r
-\r
-       function decrypt($crypt_text) {\r
-               $crypt_text = base64_decode($crypt_text);\r
-               $td = mcrypt_module_open('blowfish', '', 'cfb', '');\r
-               $ivsize = mcrypt_enc_get_iv_size($td);\r
-               $iv = substr($crypt_text, 0, $ivsize);\r
-               $crypt_text = substr($crypt_text, $ivsize);\r
-               mcrypt_generic_init($td, getMcryptKey(), $iv);\r
-               $plain_text = mdecrypt_generic($td, $crypt_text);\r
-               mcrypt_generic_deinit($td);\r
-\r
-               return $plain_text;\r
-       }\r
-\r
-       if ( !function_exists('mb_strlen') ) {\r
-               function mb_strlen($text, $encode) {\r
-                       if (strtolower($encode) == 'utf-8') {\r
-                               return preg_match_all('%(?:\r
-                                       [\x09\x0A\x0D\x20-\x7E]     # ASCII\r
-                                       | [\xC2-\xDF][\x80-\xBF]# non-overlong 2-byte\r
-                                       |  \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs\r
-                                       | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte\r
-                                       |  \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates\r
-                                       |  \xF0[\x90-\xBF][\x80-\xBF]{2}    # planes 1-3\r
-                                       | [\xF1-\xF3][\x80-\xBF]{3}   # planes 4-15\r
-                                       |  \xF4[\x80-\x8F][\x80-\xBF]{2}    # plane 16\r
-                               )%xs',$text,$out);\r
-                       }else{\r
-                               return strlen($text);\r
-                       }\r
-               }\r
-       }\r
 ?>\r
index 28090b0..d1df369 100644 (file)
--- a/list.php
+++ b/list.php
@@ -5,7 +5,7 @@
        if (!loginStatus()) header('location: login.php');\r
 ?>\r
 \r
-<script type="text/javascript" src="js/list.js"></script>\r
+<script src="js/list.js"></script>\r
 \r
 <div id="statuses">\r
        <?php \r
@@ -20,7 +20,7 @@
                $statuses = $t->listStatus($id, $p);\r
                $listInfo = $t->listInfo($id);\r
                if ($statuses === false) {\r
-                       header('location: error.php');\r
+                       header('location: error.php');exit();\r
                } \r
                \r
                $isFollower = false;\r
@@ -37,9 +37,9 @@
                <div id="info_name"><?php echo $id?></div>\r
                <div id="info_relation">\r
                <?php if ($isFollower) {?>\r
-                       <a id="list_block_btn" class="info_btn_hover" href="a_list.php?action=destory&id=">Unfollow</a>\r
+                       <a id="list_block_btn" class="info_btn_hover" href="#">Unfollow</a>\r
                <?php } else { ?>\r
-                       <a id="list_follow_btn" class="info_btn" href="a_list.php?action=create&id=">Follow</a>\r
+                       <a id="list_follow_btn" class="info_btn" href="#">Follow</a>\r
                <?php } ?>\r
                        <a id="list_send_btn" class="info_btn" href="#">Tweet</a>\r
                        <a class="info_btn" href="list_followers.php?id=<?php echo $id?>">Followers (<?php echo $listInfo->subscriber_count?>)</a>\r
        <?php \r
                \r
                        $output = '<ol class="timeline" id="allTimeline">';\r
-                       \r
+                       include('lib/timeline_format.php');\r
                        foreach ($statuses as $status) {\r
-                               $user = $status->user;\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-                               \r
-                               $output .= "\r
-                                       <li>\r
-                                               <span class=\"status_author\">\r
-                                                       <a href=\"user.php?id=$user->screen_name\" target=\"_blank\"><img src=\"".getAvatar($user->profile_image_url)."\" title=\"$user->screen_name\" /></a>\r
-                                               </span>\r
-                                               <span class=\"status_body\">\r
-                                                       <span class=\"status_id\">$status->id</span>\r
-                                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$user->screen_name\">$user->screen_name</a> $text </span>";\r
-                               if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";\r
-                               $output .= "<span class=\"actions\">\r
-                                                       <a class=\"replie_btn\" title=\"Reply\" href=\"a_reply.php?id=$status->id\">回复</a>\r
-                                                       <a class=\"rt_btn\" title=\"Retweet\" href=\"a_rt.php?id=$status->id\">回推</a>\r
-                                                       <a class=\"retw_btn\" title=\"New Retweet\" href=\"javascript:void(0);\">New Retweet</a>\r
-                                                       <a class=\"favor_btn\" title=\"Favorite\" href=\"a_favor.php?id=$status->id\">收藏</a>";\r
-                               if ($user->screen_name == $t->username) $output .= "<a class=\"delete_btn\" title=\"Delete\" href=\"a_del.php?id=$status->id&t=s\">删除</a>";\r
-                               $output .= "</span><span class=\"status_info\">";\r
-                               if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id&uid=$user->id \">in reply to $status->in_reply_to_screen_name</a></span>";\r
-                               $output .= "<span class=\"source\">from $status->source</span>\r
-                                                       <span class=\"date\"><a href=\"status.php?id=$status->id\" target=\"_blank\">$date</a></span>\r
-                                                   </span>\r
-                                               </span>\r
-                                       </li>\r
-                               ";\r
+                               if (isset($status->retweeted_status)) {\r
+                                       $output .= format_retweet($status);\r
+                               } else { \r
+                                       $output .= format_timeline($status,$t->username);\r
+                               }\r
                        }\r
                        \r
                        $output .= "</ol><div id=\"pagination\">";\r
                        \r
                        echo $output;\r
                }\r
-               \r
-               \r
-               \r
+\r
        ?>\r
 </div>\r
 \r
 <?php \r
        include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
        include ('inc/footer.php');\r
 ?>\r
index ac4d2b7..b8a4300 100644 (file)
@@ -3,11 +3,10 @@ include ('lib/twitese.php');
 $title = "@{$_GET['id']} - Following";\r
 include ('inc/header.php');\r
 ?>\r
-<script type="text/javascript" src="js/list_members.js"></script>\r
+<script src="js/list_members.js"></script>\r
 <?php\r
 $type = 'list_members';\r
 include ('inc/userlist.php');\r
-\r
 include ('inc/sidebar.php');\r
 include ('inc/footer.php');\r
 ?>\r
index 47a8eb2..133209d 100644 (file)
--- a/lists.php
+++ b/lists.php
@@ -6,35 +6,34 @@
        if (!loginStatus()) header('location: login.php');\r
 ?>\r
 \r
-<script type="text/javascript" src="js/lists.js"></script>\r
+<script src="js/lists.js"></script>\r
 \r
 <div id="statuses">\r
        <?php \r
                $t = getTwitter();\r
-               $t->type = 'xml';\r
                if ( isset($_POST['list_name']) ) {\r
                        if ($_POST['is_edit'] == 0) {\r
                                if (trim($_POST['list_name']) == '') {\r
-                                               echo "<div id=\"otherTip\">创建推群失败,推群名不能为空</div>";\r
+                                               echo "<div id=\"otherTip\">Fail to create list, the name CANNOT be empty</div>";\r
                                } else {\r
                                        $isProtect = isset($_POST['list_protect']) ? true : false;\r
                                        $result = $t->createList($_POST['list_name'], $_POST['list_description'], $isProtect);\r
                                        if ($result) {\r
-                                               echo "<div id=\"otherTip\">创建推群成功</div>";\r
+                                               echo "<div id=\"otherTip\">Success</div>";\r
                                        } else {\r
-                                               echo "<div id=\"otherTip\">创建推群失败,请重试</div>";\r
+                                               echo "<div id=\"otherTip\">Failed, please retry</div>";\r
                                        }\r
                                }\r
                        } else {\r
                                if (trim($_POST['list_name']) == '') {\r
-                                               echo "<div id=\"otherTip\">修改推群失败,推群名不能为空</div>";\r
+                                               echo "<div id=\"otherTip\">Fail to create list, the name CANNOT be empty</div>";\r
                                } else {\r
                                        $isProtect = isset($_POST['list_protect']) ? true : false;\r
                                        $result = $t->editList($_POST['pre_list_name'], $_POST['list_name'], $_POST['list_description'], $isProtect);\r
                                        if ($result) {\r
-                                               echo "<div id=\"otherTip\">修改推群成功</div>";\r
+                                               echo "<div id=\"otherTip\">Success</div>";\r
                                        } else {\r
-                                               echo "<div id=\"otherTip\">修改推群失败,请重试</div>";\r
+                                               echo "<div id=\"otherTip\">Failed, please retry</div>";\r
                                        }\r
                                }\r
                        }\r
                \r
                if ( isset($_POST['list_members']) ) {\r
                        if (trim($_POST['list_members']) == '') {\r
-                                       echo "<div id=\"otherTip\">添加成员失败,成员列表不能为空</div>";\r
+                                       echo "<div id=\"otherTip\">Fail to add members, the member list is empty!</div>";\r
                        } else {\r
                                $listId = $_POST['member_list_name'];\r
-                               $memberList = explode(",", $_POST['list_members']);\r
-                               $count = 0;\r
-                               $failList = '';\r
-                               \r
-                               foreach ($memberList as $member) {\r
-                                       $result = $t->addListMember($listId, $member);\r
-                                       if (!isset($result->error) && isset($result->user)) $count ++;\r
-                                       else $failList .= $member . " ";\r
-                               }\r
-                               \r
-                               if ($count > 0) {\r
-                                       if ($count == count($memberList))\r
-                                               echo "<div id=\"otherTip\">成功添加 $count 个成员</div>";\r
-                                       else \r
-                                               echo "<div id=\"otherTip\">成功添加 $count 个成员,失败名单:$failList </div>";\r
+                               $result = $t->addListMember($listId, $_POST['list_members']);\r
+                               if (isset($result->error)) {\r
+                                       echo "<div id=\"otherTip\">Failed, please retry!</div>";\r
                                } else {\r
-                                       echo "<div id=\"otherTip\">添加成员失败,请重试</div>";\r
+                                       echo "<div id=\"otherTip\">Success!</div>";\r
                                }\r
                        }\r
                }\r
                switch ($type) {\r
                        case 0:\r
                                $lists = $t->followedLists($id, $c);\r
-                               $nextlist = $lists->next_cursor;\r
-                               $prelist = $lists->previous_cursor;\r
-                               $lists = $lists->lists; \r
                                break;\r
                        case 1:\r
-                               $lists = $t->createdLists($id);\r
-                               $lists = $lists->lists; \r
+                               $lists = $t->createdLists($id, $c);\r
                                break;\r
                        case 2:\r
                                $lists = $t->beAddedLists($id, $c);\r
-                               $nextlist = $lists->next_cursor;\r
-                               $prelist = $lists->previous_cursor;\r
-                               $lists = $lists->lists; \r
                                break;\r
                        default:\r
                                $lists = false;\r
                }\r
-               \r
+               $nextlist = $lists->next_cursor;\r
+               $prelist = $lists->previous_cursor;\r
+               $lists = $lists->lists; \r
                if ($lists === false) {\r
-                       header('location: error.php');\r
+                       header('location: error.php');exit();\r
                } \r
                \r
                \r
     \r
        <?php \r
                \r
-               $empty = count($lists->list) == 0? true: false;\r
+               $empty = count($lists) == 0? true: false;\r
                if ($empty) {\r
                        echo "<div id=\"empty\">No Tweet To Display</div>";\r
                } else {\r
                        $output = '<ol class="rank_list">';                     \r
-                       foreach ($lists->list as $list) {\r
+                       foreach ($lists as $list) {\r
                \r
                                $listurl = substr($list->uri,1);\r
                                $user = $list->user;\r
                                \r
                                $output .= "\r
                                <li>\r
-                                       <span class=\"rank_img\"><a href=\"https://twitter.com/$user->screen_name\"><img src=\"".getAvatar($user->profile_image_url)."\" /></a></span>\r
+                                       <span class=\"rank_img\"><img src=\"".getAvatar($user->profile_image_url)."\" /></span>\r
                                        <div class=\"rank_content\">\r
                                                <span class=\"rank_num\"><span class=\"rank_name\"><a href=\"list.php?id=$listurl\"><em>$listname[0]/</em>$listname[1]</a></span></span>\r
                                                <span class=\"rank_count\">Followers:$list->subscriber_count  Members:$list->member_count  $mode</span> \r
                                ";\r
-                               if ($list->description != '') $output .= "<span class=\"rank_description\">简介:$list->description</span>";\r
+                               if ($list->description != '') $output .= "<span class=\"rank_description\">Description: $list->description</span>";\r
                                if ($type == 0) $output .= "<span id=\"list_action\"><a id=\"btn\" href=\"javascript:void()\" class=\"unfollow_list\">Unfollow</a></span>";\r
                                if ($type == 1 && $isSelf) $output .= "<span id=\"list_action\"><a id=\"btn\" href=\"javascript:void()\" class=\"edit_list\">Edit</a> <a id=\"btn\" href=\"javascript:void()\" class=\"delete_list\">Delete</a> <a id=\"btn\" href=\"javascript:void()\" class=\"add_member\">Add Members</a></span>";\r
                                $output .= "\r
 \r
 <?php \r
        include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
        include ('inc/footer.php');\r
 ?>\r
index dddc560..adbb78c 100644 (file)
--- a/login.php
+++ b/login.php
-<?php \r
-       include ('lib/twitese.php');\r
-       delCookie('oauth_token');\r
-       delCookie('oauth_token_secret');\r
-       delCookie('user_id');\r
-       delCookie('twitese_name');\r
-       delCookie('twitese_pw');\r
-       delCookie('friends_count');\r
-       delCookie('statuses_count');\r
-       delCookie('followers_count');\r
-       delCookie('imgurl');\r
-       delCookie('name');\r
-       delCookie('listed_count');\r
-       delCookie('recover');\r
-       delCookie('homeInterval');\r
-       delCookie('updatesInterval');\r
-       session_destroy();\r
-?>\r
-\r
-<?php \r
-       ob_start();\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
-<meta name="keywords" content="rabr, open source, php, twitter, oauth, disinfeqt" />\r
-<meta name="description" content="Revolutionary Interface for Twitter" />\r
-<title>Rabr / Sign In</title>\r
-<style type="text/css">\r
-*{list-style:none outside none;margin:0;padding:0;}\r
-body{background:none repeat scroll 0 0 #F6F7F8;font:10px helvetica,arial,sans-serif;text-align:center;margin:0;padding:0;}\r
-a:active,a:focus{outline:none;}\r
-a{color:#BFBFBF;outline:medium none;text-decoration:none;}\r
-.form-container #container{background:none repeat scroll 0 0 transparent;margin-top:70px;text-align:left;width:400px;border-width:0;}\r
-.form-container #header{position:absolute;text-align:center;z-index:-1;}\r
-.form-container #header h1{margin-left:-50px;margin-top:-30px;}\r
-.form-container .form{box-shadow:0 0 20px #666666;-webkit-box-shadow:0 0 20px #666666;-moz-box-shadow:0 0 20px #666666;background-color:#F1F8FC;margin-top:66px;opacity:0.8;}\r
-.form-container #footer{text-align:center;}\r
-#container{background:none repeat scroll 0 0 #FFF;border:1px solid #D6D8D9;text-align:left;width:920px;margin:0 auto;padding:20px;}\r
-#header h1{float:none;}\r
-#footer{color:#BFBFBF;font-size:13px;text-align:center;padding:10px;}\r
-.button:hover{background-position:center center;}\r
-.button:active{background-position:center bottom;}\r
-.rounded_5px{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;}\r
-.clear{display:block;}\r
-input[type=text],input[type=password]{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;font-family:helvetica;letter-spacing:1px;}\r
-.form{padding:0 2px;}\r
-.form > fieldset{border-width:0;padding:20px 10px 15px;}\r
-.form fieldset fieldset{border-width:0;padding:13px 0 0;}\r
-.form .textfield{margin:0 0 1em;padding:0;}\r
-.form .password{margin:0 0 1em;}\r
-.form .checkbox{color:#666;font-size:1.15em;margin:0 0 1em 125px;}\r
-.form .checkbox input{float:left;margin:0 .5em 0 0;}\r
-.form .form-footer{background:none repeat scroll 0 0 #E0F0FB;clear:both;font-size:12px;height:25px;line-height:25px;margin:10px 0 0;padding:10px;}\r
-.form .form-footer span{float:right;}\r
-.form .form-footer .delete:hover{color:#B42B2B;text-decoration:underline;}\r
-.form-footer .button{background:none repeat scroll 0 0 #FFFFFF;border:1px solid #EEE;color:#666666;cursor:pointer;display:inline-block;font-weight:700;margin-left:3px;text-align:center;text-shadow:0 1px 0 #FFF;font-family:helvetica;outline:0;zoom:1;font-size:13px;height:21px;line-height:20px;vertical-align:middle;-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px;padding:1px 20px 2px;}\r
-.form-footer .button:hover{background-color:#DDD;}\r
-.form-footer .button:active{background:none repeat scroll 0 0 #999!important;color:#CCC!important;outline:medium none;text-shadow:0 -1px 0 #404348;border-color:#61676F!important;}\r
-.form-footer .button.cancel:hover{background-color:#EDEDED;}\r
-.form-footer input.button{outline:none!important;font-size:13px;height:24px;padding-top:0;vertical-align:middle;}\r
-.form-footer .button::-moz-focus-inner{border-color:transparent!important;}\r
-a:hover,.form-footer{color:#999;}\r
-.form .textfield label,.form .searchfield label,.form .password label{color:#666;display:block;float:left;font-size:1.15em;text-align:right;width:110px;margin:.8em 0 0;}\r
-.form .textfield input,.form .password input{background:url(img/bg_input.png) repeat-x scroll 0 0 #FFF;border:1px solid #99A8AE;display:block;font-size:14px;width:190px;margin:0 0 0 120px;padding:.5em;}\r
-#oauth {margin-top:-2px; border:none; margin-right: 10px; line-height: 22px}\r
-#home_trends {position: relative; overflow: hidden; background-color: rgb(102, 102, 102); margin-top: 5px; -moz-border-radius: 5px 5px 5px 5px; padding: 5px 10px;}\r
-#home_trends h2 {font-size: 14px; text-align: center; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 5px; color: rgb(153, 153, 153); border-bottom: 1px dotted; line-height: 24px;}\r
-#home_trends li {\r
-color:#EEEEEE;\r
-cursor:pointer;\r
-float:left;\r
-font-size:12px;\r
-padding-right:15px;\r
-}\r
-#home_trends ul li a {\r
-color:#EEEEEE;\r
-}\r
-#marquee  {\r
-height:20px;\r
-line-height:20px;\r
-overflow:hidden;\r
-width:356px;\r
-}\r
-</style>\r
-<script type="text/javascript" src="js/jquery.js?ver=1.4.2"></script>\r
-<script type="text/javascript" src="js/jquery.plugins.js?ver=2010033101"></script>\r
-<script type="text/javascript" src="js/public.js?ver=2010032904"></script>\r
-</head>\r
-<body class="form-container">\r
-<div class="clear rounded_5px" id="container">\r
- <div id="header">\r
-<h1><a href="/"><img border="0" alt="Rabr" src="img/big_logo.png"></a></h1>\r
-</div>\r
- <!--[if IE]>\r
-<style type="text/css">\r
-.form-container .form {display:none}\r
-</style>\r
-<div style="display: block; color: rgb(255, 0, 0); margin-top: 150px; margin-bottom: 10px; text-align: center;">\r
-<h1 style="font-size: 20px;">Sorry, but we're NOT IE-Friendly!</h1>\r
-<p style="font-size: 12px;">For a better experience using this site, please use web browsers with WebKit or Gecko core, like Firefox Chrome and Safari.</p>\r
-</div>\r
-  <![endif]-->\r
-<form action="login_action.php" class="form rounded_5px" id="form_login" method="post">\r
-<fieldset class="clear">\r
-<ol>\r
-<li>\r
-<fieldset>\r
-<ul>\r
-<li class="textfield"><label for="username">Username</label><input type="text" id="agent_session_email_address" name="username" size="30" tabindex="1">\r
-\r
-</li>\r
-<li class="password"><label for="password">Password</label><input type="password" id="agent_session_password" name="password" size="30" tabindex="2"></li>\r
-<li class="checkbox"><input type="hidden" name="remember" value="0"><input type="checkbox" checked="checked" id="agent_session_remember_me" name="remember" value="1">Remember Me</li>\r
-</ul>\r
-</fieldset>\r
-</li>\r
-</ol>\r
-<div class="form-footer rounded_5px">\r
-<span><input type="submit" class="button sign-in" id="agent_session_submit" name="commit" tabindex="3" value="Sign In"></span>\r
-<a class="button" id="oauth" title="Login via OAuth" onclick="oauth()">OAuth</a>\r
-Need an account? <a style="cursor:pointer" onclick="register()">Sign Up!</a>\r
-</div>\r
-</fieldset>\r
-</form>\r
-<div style="background: none repeat scroll 0% 0% transparent;" id="footer">\r
-<p>&copy; 2010 disinfeqt &middot; <a href="http://code.google.com/p/rabr/" target="_blank" title="Rabr Open Source">Open Source</a> &middot; Run by <a href="http://twitter.com/<?php echo $site_owner ?>" title="<?php echo $site_owner ?>" target="_blank"><?php echo $site_owner ?></a></p>\r
-</div>\r
-</div>\r
-</body>\r
-</html>\r
+<?php 
+       include ('lib/twitese.php');
+       delCookie('oauth_token');
+       delCookie('oauth_token_secret');
+       delCookie('user_id');
+       delCookie('twitese_name');
+       delCookie('twitese_pw');
+       delCookie('friends_count');
+       delCookie('statuses_count');
+       delCookie('followers_count');
+       delCookie('imgurl');
+       delCookie('name');
+       delCookie('listed_count');
+       delCookie('recover');
+       delCookie('homeInterval');
+       delCookie('updatesInterval');
+       session_destroy();
+       
+       ob_start();
+       if(!isset($_SESSION)){
+               session_start();
+       }
+?>
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8" />
+<meta name="keywords" content="embr, open source, php, twitter, oauth" />
+<meta name="description" content="Vivid Interface for Twitter" />
+<meta name="author" content="Contributors" />
+<title>Embr / Sign In</title>
+<style>
+*{list-style:none outside none;margin:0;padding:0;}
+body{background:none repeat scroll 0 0 #F6F7F8;font:10px helvetica,arial,sans-serif;text-align:center;margin:0;padding:0;}
+a:active,a:focus{outline:none;}
+a{color:#BFBFBF;outline:medium none;text-decoration:none;}
+.form-container #container{background:none repeat scroll 0 0 transparent;margin-top:70px;text-align:left;width:400px;border-width:0;}
+.form-container #header{position:absolute;text-align:center;z-index:-1;}
+.form-container #header h1{margin-left:-50px;margin-top:-30px;}
+.form-container .form{box-shadow:0 0 20px #666;-webkit-box-shadow:0 0 20px #666;-moz-box-shadow:0 0 20px #666;background-color:#F1F8FC;margin-top:66px;opacity:0.8;}
+.form-container #footer{text-align:center;}
+#container{background:none repeat scroll 0 0 #FFF;border:1px solid #D6D8D9;text-align:left;width:920px;margin:0 auto;padding:20px;}
+#header h1{float:none;}
+#footer{color:#BFBFBF;font-size:13px;text-align:center;padding:10px;}
+.button:hover{background-position:center center;}
+.button:active{background-position:center bottom;}
+.rounded_left_12px{-moz-border-radius-topleft:12px;-moz-border-radius-bottomleft:12px;border-top-left-radius:12px;border-bottom-left-radius:12px;border-top-left-radius:12px;border-bottom-left-radius:12px;}
+.rounded_right_12px{-moz-border-radius-topright:12px;-moz-border-radius-bottomright:12px;border-top-right-radius:12px;border-bottom-right-radius:12px;border-top-right-radius:12px;border-bottom-right-radius:12px;}
+.rounded_5px{-moz-border-radius:5px;border-radius:5px;border-radius:5px;}
+.clear{display:block;}
+.form{padding:0 2px;}
+.form > fieldset{border-width:0;padding:20px 10px 10px;}
+.form fieldset fieldset{border-width:0;padding:10px 0 0;}
+.form .checkbox{color:#666;font-size:1.15em;margin-left:90px;}
+.form .checkbox input{float:left;margin:0 .5em 0 0;}
+.form .form-footer{background:none repeat scroll 0 0 #E0F0FB;clear:both;font-size:12px;height:25px;line-height:25px;margin:10px 0 0;padding:10px;}
+.form .form-footer .delete:hover{color:#B42B2B;text-decoration:underline;}
+.form-footer .button{background:none repeat scroll 0 0 #FFF;border:1px solid #EEE;color:#666;cursor:pointer;display:inline-block;margin-left:-2px;font-weight:700;text-align:center;font-family:helvetica;outline:0;zoom:1;font-size:13px;height:21px;line-height:20px;vertical-align:middle;padding:1px 20px 2px;}
+.form-footer .button:hover{background-color:#DDD;}
+.form-footer .button:active{background:none repeat scroll 0 0 #999!important;color:#CCC!important;outline:medium none;text-shadow:0 -1px 0 #404348;border-color:#61676F!important;}
+.form-footer .button.cancel:hover{background-color:#EDEDED;}
+.form-footer input.button{outline:none!important;font-size:13px;height:24px;padding-top:0;vertical-align:middle;}
+.form-footer .button::-moz-focus-inner{border-color:transparent!important;}
+a:hover,.form-footer{color:#999;}
+#oauth {border:none;line-height: 22px;margin-right:-2px;padding-left:25px;}
+</style>
+<script type="text/javascript">
+function register() {
+       if (window.confirm("Make sure you can get access to twitter.com!")) {
+               window.open("https://mobile.twitter.com/signup", "registerwindow", "height=450, width=600, toolbar=no, menubar=no, scrollbars=yes, resizable=yes, location=yes, status=yes");
+       }
+}
+</script>
+</head>
+<?php if(BASIC_AUTH) require ('basic_auth.php'); ?>
+<body class="form-container">
+<div class="clear rounded_5px" id="container">
+ <div id="header">
+<h1><a href="/"><img border="0" alt="Embr" height="167" width="500" src="img/big_logo.png"></a></h1>
+</div>
+<?php if(isset($_GET['oauth']) && $_GET['oauth'] == 'denied') {?> 
+<style type="text/css">
+.form-container .form {display:none}
+</style>
+<div style="display: block; color: rgb(255, 0, 0); margin-top: 150px; margin-bottom: 10px; text-align: center;">
+<h1 style="font-size: 20px;">Sorry, you are unauthorized to this site!</h1>
+<p style="font-size: 12px;">Please contact the sitemaster for the ID-authorization issues.</p>
+</div>
+<?php } ?>
+ <!--[if lt IE 9]>
+<style type="text/css">
+.form-container .form {display:none}
+</style>
+<div style="display: block; color: rgb(255, 0, 0); margin-top: 150px; margin-bottom: 10px; text-align: center;">
+<h1 style="font-size: 20px;">Sorry, higer version of IE is needed!</h1>
+<p style="font-size: 12px;">For a better experience using this site, please update your IE or use web browsers with WebKit or Gecko core, like Firefox Chrome and Safari.</p>
+</div>
+  <![endif]-->
+<form class="form rounded_5px" id="form_login" method="post" action="oauth.php">
+<fieldset class="clear">
+               <div class="form-footer rounded_5px" style="padding-left:100px">
+                       <input type="submit" class="button rounded_left_12px" id="oauth" name="signin" value="Sign In">
+<a class="button rounded_right_12px" id="register" title="register" onclick="register()">Sign Up!</a>
+</div>
+<ol>
+<li>
+<fieldset>
+<ul>
+<li class="checkbox"><input type="hidden" name="remember" value="0"><input type="checkbox" checked="checked" id="agent_session_remember_me" name="proxify" value="1">I CANNOT access to twitter.com!</li>
+</ul>
+</fieldset>
+</li>
+</ol>
+</fieldset>
+</form>
+<div style="background: none repeat scroll 0% 0% transparent;" id="footer">
+<p>&copy; 2013 Contributors <?php if(isset($_COOKIE['twitese_name'])) echo 'and '.$_COOKIE['twitese_name'];?> &middot; <a href="http://code.google.com/p/embr/" target="_blank" title="Embr Open Source">Open Source</a></p>
+</div>
+</div>
+</body>
+</html>
 <?php ob_end_flush(); ?>
\ No newline at end of file
index d7437f2..f0727fc 100644 (file)
@@ -1,22 +1,28 @@
 <?php \r
-       include ('lib/twitese.php');\r
        if(!isset($_SESSION)){\r
                session_start();\r
        }\r
-       delCookie('oauth_token');\r
-       delCookie('oauth_token_secret');\r
-       delCookie('user_id');\r
-       delCookie('twitese_name');\r
-       delCookie('twitese_pw');\r
-       delCookie('friends_count');\r
-       delCookie('statuses_count');\r
-       delCookie('followers_count');\r
-       delCookie('imgurl');\r
-       delCookie('name');\r
-       delCookie('listed_count');\r
-       delCookie('recover');\r
-       delCookie('homeInterval');\r
-       delCookie('updatesInterval');\r
+       $time = $_SERVER['REQUEST_TIME']-300;\r
+       setcookie('oauth_token',"",$time);\r
+       setcookie('oauth_token_secret',"",$time);\r
+       setcookie('user_id',"",$time);\r
+       setcookie('twitese_name',"",$time);\r
+       setcookie('friends_count',"",$time);\r
+       setcookie('statuses_count',"",$time);\r
+       setcookie('followers_count',"",$time);\r
+       setcookie('imgurl',"",$time);\r
+       setcookie('name',"",$time);\r
+       setcookie('listed_count',"",$time);\r
+       setcookie('recover',"",$time);\r
+       setcookie('homeInterval',"",$time);\r
+       setcookie('updatesInterval',"",$time);\r
+       setcookie('proxify',"",$time);  \r
+       setcookie('Bgimage',"",$time);\r
+       setcookie('BgColor',"",$time);\r
+       setcookie('Bgrepeat',"",$time);\r
+       setcookie('Tip_Title',"",$time);\r
+       setcookie('Tip_Content',"",$time);\r
+       setcookie('Tip_More',"",$time);\r
        session_destroy();\r
        header('location: login.php');\r
 ?>\r
index 1efed47..0e7483f 100644 (file)
-<?php\r
-       include_once('lib/twitese.php');\r
-       $title = "Direct Messages";\r
-       include_once('inc/header.php');\r
-       include_once('ajax/timeline_format.php');\r
-       \r
-       if (!loginStatus()) header('location: login.php');\r
-?>\r
-\r
-<script type="text/javascript" src="js/main.js"></script>\r
-<script type="text/javascript" src="js/message.js"></script>\r
-\r
-<?php \r
-       $isSentPage = isset($_GET['t'])? true : false;\r
-?>\r
-<div id="statuses" class="column round-left">\r
-       <div id="subnav">\r
-       <?php if ($isSentPage) {?>\r
-               <span class="subnavLink"><a href="message.php">Inbox</a></span><span class="subnavNormal">Sent</span>\r
-       <?php } else {?>\r
-               <span class="subnavNormal">Inbox</span><span class="subnavLink"><a href="message.php?t=sent">Sent</a></span>\r
-       <?php } ?>\r
-    </div>\r
-    \r
-       <?php \r
-               $t = getTwitter();\r
-               \r
-               if ( isset($_POST['sent_id']) && isset($_POST['message']) ) {\r
-                       \r
-                       if (trim($_POST['message']) == '') {\r
-                               setUpdateCookie('empty');\r
-                       } else {\r
-                               $result = $t->sendDirectMessage(trim($_POST['sent_id']), $_POST['message']);\r
-                               if ($result) setUpdateCookie('success');\r
-                               else setUpdateCookie('error');\r
-                       }\r
-                       \r
-                       header('location: message.php?t=sent');\r
-               }\r
-               \r
-               if (getUpdateCookie()) {\r
-                       switch (getUpdateCookie()) {\r
-                               case 'success':\r
-                                       echo "<div id=\"otherTip\">You message has been sent.</div>";\r
-                                       break;\r
-                               case 'empty':\r
-                                       echo "<div id=\"otherTip\">You cannot send an empty message!</div>";\r
-                                       break;\r
-                               case 'error':\r
-                                       echo "<div id=\"otherTip\">Send message failed, please try again.</div>";\r
-                                       break;\r
-                               default:\r
-                                       break;\r
-                       }\r
-               }\r
-       ?>\r
-       \r
-       <form action="message.php" method="post">\r
-       <?php if ( isset($_GET['id']) ) { ?>\r
-       <h2>Send message to <input type="text" style="border: 1px solid rgb(167, 166, 170); margin: 0px 0px 5px; padding: 2px; height: 16px; width: 150px; font-size: 13px;" name="sent_id" id="sent_id" value="<?php echo $_GET['id'] ?>"/></h2>\r
-       <?php   } else { ?>\r
-       <h2>Send message to <input type="text" style="border: 1px solid rgb(167, 166, 170); margin: 0px 0px 5px; padding: 2px; height: 16px; width: 150px; font-size: 13px;" name="sent_id" id="sent_id" /></h2>\r
-       <?php   } ?>\r
-       <span id="tip"><b>140</b></span>\r
-               <textarea name="message" id="textbox"></textarea>\r
-               <input type="submit" id="submit_btn" value="send" />\r
-       </form>\r
-       <div class="clear"></div>\r
-       \r
-       \r
-       \r
-       <?php \r
-               $t = getTwitter();\r
-               $p = 1;\r
-               if (isset($_GET['p'])) {\r
-                       $p = (int) $_GET['p'];\r
-                       if ($p <= 0) $p = 1;\r
-               }\r
-       \r
-               if ($isSentPage) {\r
-                       $messages = $t->sentDirectMessage($p);\r
-               } else {\r
-                       $messages = $t->directMessages($p);\r
-               }\r
-               if ($messages === false) {\r
-                       header('location: error.php');\r
-               } \r
-               $empty = count($messages) == 0? true: false;\r
-               if ($empty) {\r
-                       echo "<div id=\"empty\">No tweets to display.</div>";\r
-               } else {\r
-                       $output = '<ol class="timeline" id="allTimeline">';\r
-                       \r
-                       foreach ($messages as $message) {\r
-                               $name = $message->sender_screen_name;\r
-                               $imgurl = getAvatar($message->sender->profile_image_url);\r
-                               $date = formatDate($message->created_at);\r
-                               $text = formatText($message->text);\r
-                               \r
-                               $output .= "\r
-                                       <li>\r
-                                               <span class=\"status_author\">".initShortcutMenu($message->sender)."\r
-                                                       <a href=\"user.php?id=$name\" target=\"_blank\"><img src=\"$imgurl\" title=\"$name\" /></a>\r
-                                               </span>\r
-                                               <span class=\"status_body\">\r
-                                                       <span class=\"status_id\">$message->id </span>\r
-                                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$name\">$name </a> $text </span>\r
-                                                       <span class=\"actions\">\r
-                               ";\r
-                               if (!$isSentPage) {\r
-                                       $output .= "<a class=\"msg_replie_btn\" href=\"message.php?id=$name\">回复</a><a class=\"delete_btn\" href=\"a_del.php?id=$message->id&t=m\">删除</a>";\r
-                               } else {\r
-                                       $output .= "<a class=\"delete_btn\" href=\"a_del.php?id=$message->id&t=m\">删除</a>";\r
-                               }\r
-                               $output .="</span><span class=\"status_info\">\r
-                                                               <span class=\"date\">$date</span>\r
-                                                   </span>\r
-                                               </span>\r
-                                       </li>\r
-                               ";\r
-                       }\r
-                       \r
-                       $output .= "</ol><div id=\"pagination\">";\r
-                       \r
-                       \r
-                       if ($isSentPage) {\r
-                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"message.php?t=sent&p=" . ($p-1) . "\">Back</a>";\r
-                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"message.php?t=sent&p=" . ($p+1) . "\">Next</a>";\r
-                       } else {\r
-                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"message.php?p=" . ($p-1) . "\">Back</a>";\r
-                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"message.php?p=" . ($p+1) . "\">Next</a>";\r
-                       }\r
-                       \r
-                       $output .= "</div>";\r
-                       \r
-                       echo $output;\r
-               }\r
-               \r
-               \r
-               \r
-       ?>\r
-</div>\r
-\r
-<?php \r
-       include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php
+       include_once('lib/twitese.php');
+       $title = 'Direct Messages';
+       include_once('inc/header.php');
+       if (!loginStatus()) header('location: login.php');
+?>
+
+<script src="js/message.js"></script>
+<style>.timeline li{border-bottom:1px solid #EFEFEF;border-top:none !important}</style>
+
+<?php 
+       $isSentPage = isset($_GET['t']) ? true : false;
+?>
+<div id="statuses" class="column round-left">
+
+       <?php if ( isset($_GET['id']) ) { ?>
+       <h2>To <input type="text" style="border: 1px solid rgb(167, 166, 170); margin: 0px 0px 6px; padding: 2px; height: 14px; width: 120px; font-size: 13px;" name="sent_id" id="sent_id" value="<?php echo $_GET['id'] ?>"/></h2>
+       <?php   } else { ?>
+       <h2>To <input type="text" style="border: 1px solid rgb(167, 166, 170); margin: 0px 0px 6px; padding: 2px; height: 14px; width: 120px; font-size: 13px;" name="sent_id" id="sent_id" /></h2>
+       <?php   } ?>
+       
+       <?php include('inc/sentForm.php')?>
+       
+       <div id="subnav">
+       <?php if ($isSentPage) {?>
+               <span class="subnavLink"><a href="message.php">Inbox</a></span><span class="subnavNormal">Sent</span>
+       <?php } else {?>
+               <span class="subnavNormal">Inbox</span><span class="subnavLink"><a href="message.php?t=sent">Sent</a></span>
+       <?php } ?>
+    </div>
+
+       <?php 
+               $t = getTwitter();
+               $p = 1;
+               if (isset($_GET['p'])) {
+                       $p = (int) $_GET['p'];
+                       if ($p <= 0) $p = 1;
+               }
+       
+               if ($isSentPage) {
+                       $messages = $t->sentDirectMessage($p);
+               } else {
+                       $messages = $t->directMessages($p);
+               }
+               if ($messages === false) {
+                       header('location: error.php');exit();
+               } 
+               $empty = count($messages) == 0? true: false;
+               if ($empty) {
+                       echo "<div id=\"empty\">No tweets to display.</div>";
+               } else {
+                       include ('lib/timeline_format.php');
+                       $output = '<ol class="timeline" id="allMessage">';
+                       
+                       foreach ($messages as $message) {
+                               $output .= format_message($message,$isSentPage);
+                       }
+                       
+                       $output .= "</ol><div id=\"pagination\">";
+                       
+                       
+                       if ($isSentPage) {
+                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"message.php?t=sent&p=" . ($p-1) . "\">Back</a>";
+                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"message.php?t=sent&p=" . ($p+1) . "\">Next</a>";
+                       } else {
+                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"message.php?p=" . ($p-1) . "\">Back</a>";
+                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"message.php?p=" . ($p+1) . "\">Next</a>";
+                       }
+                       
+                       $output .= "</div>";    
+                       echo $output;
+               }
+       ?>
+</div>
+
+<?php 
+       include ('inc/sidebar.php');
+       include ('inc/footer.php');
+?>
index 54be7f0..eae87c5 100644 (file)
--- a/oauth.php
+++ b/oauth.php
@@ -1,16 +1,17 @@
 <?php\r
-\r
        /* Start session and load lib */\r
        if(!isset($_SESSION)){\r
                session_start();\r
        }\r
-       require_once('lib/twitese.php');\r
-\r
+       include_once('lib/twitese.php');\r
+       foreach ($AUTH_ID as &$id) {\r
+               $id = strtoupper($id);\r
+       }\r
        if (isset($_REQUEST['oauth_token'])) {\r
                if($_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) {\r
                        $_SESSION['oauth_status'] = 'oldtoken';\r
                        session_destroy();\r
-                       header('Location: ./login.php?oauth=old');\r
+                       header('Location: login.php?oauth=old');exit();\r
                }else{\r
                        /* Create TwitteroAuth object with app key/secret and token key/secret from default phase */\r
                        $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);\r
                                $_SESSION['login_status'] = 'verified';\r
                                $t = getTwitter();\r
                                $user = $t->veverify();\r
+                               \r
+                               if ( ID_AUTH && (!in_array(strtoupper($t->screen_name),$AUTH_ID)) ){\r
+                                       session_destroy();\r
+                                       header("Location: login.php?oauth=denied");exit;\r
+                               }\r
                                /* And set new cookies */\r
-                               $time = time()+3600*24*365;\r
-                               setEncryptCookie("oauth_token", $access_token['oauth_token'], $time, "/");\r
-                               setEncryptCookie("oauth_token_secret", $access_token['oauth_token_secret'], $time, "/");\r
-                               setEncryptCookie("user_id", $access_token['user_id'], $time, "/");\r
+                               $time = $_SERVER['REQUEST_TIME']+3600*24*365;\r
+                               setEncryptCookie('oauth_token', $access_token['oauth_token'], $time, '/');\r
+                               setEncryptCookie('oauth_token_secret', $access_token['oauth_token_secret'], $time, '/');\r
+                               setEncryptCookie('user_id', $access_token['user_id'], $time, '/');\r
                                setEncryptCookie('twitese_name', $t->screen_name, $time, '/');\r
                                refreshProfile();\r
-                               if(!isset($_COOKIE['showpic_cookie'])){\r
-                                       setcookie('showpic_cookie', 'true', $time, '/');\r
+                               \r
+                               if(!isset($_COOKIE['showpic'])){\r
+                                       setcookie('showpic', 'true', $time, '/');\r
                                }\r
                                if(!isset($_COOKIE['mediaPre'])){\r
                                        setcookie('mediaPre', 'true', $time, '/');\r
                                }\r
-                               header('Location: ./all.php');\r
+                               if(!isset($_COOKIE['loginPage'])) {\r
+                                       header('Location: index.php');exit();\r
+                               } else {\r
+                                       $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';\r
+                                       $port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';\r
+                                       $login_page = $scheme . '://' . $_SERVER['HTTP_HOST'] . $port . $_COOKIE['loginPage'];\r
+                                       header('Location: '. $login_page);exit();\r
+                               }\r
+                               \r
                        } else {\r
                                session_destroy();\r
-                               header('Location: ./login.php?oauth=error');\r
+                               header('Location: login.php?oauth=error');exit();\r
                        }\r
                }\r
        }else{\r
                /* Create TwitterOAuth object and get request token */\r
                $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);\r
-\r
+               \r
+               /* Get callback URL */\r
+               $scheme = (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") ? 'http' : 'https';\r
+               $port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';\r
+               $oauth_callback = $scheme . '://' . $_SERVER['HTTP_HOST'] . $port . $_SERVER['REQUEST_URI'];\r
+       \r
                /* Get request token */\r
-               $request_token = $connection->getRequestToken(OAUTH_CALLBACK);\r
+               $request_token = $connection->getRequestToken($oauth_callback);\r
 \r
                /* Save request token to session */\r
                $_SESSION['oauth_token'] = $token = $request_token['oauth_token'];\r
                /* If last connection fails don't display authorization link */\r
                switch ($connection->http_code) {\r
                        case 200:\r
-                               /* Build authorize URL */\r
+                               \r
+                               $time = $_SERVER['REQUEST_TIME']+3600*24*365;\r
                                $url = $connection->getAuthorizeURL($token);\r
-                               header('Location: ' . $url); \r
+                               if ( isset($_POST['proxify']) ) { \r
+                                       $raw= processCurl($url);\r
+                                       $new = str_replace('https://api.twitter.com/oauth/authorize', 'authorize.php',$raw); \r
+                                       $new = str_replace('html { display:none; }','.error,a.sign-up,input[name="deny"]{display:none !important;}',$new);\r
+                                       $new = preg_replace('/https?:\/\/\w+([0-9])\.twimg\.com/i','https://s3.amazonaws.com/twitter_production',$new);\r
+                               echo $new;\r
+                               } //OAuth Proxy End\r
+                               else {\r
+                                       header('Location: ' . $url); \r
+                               }\r
                                break;\r
                        default:\r
-                               echo 'Could not connect to Twitter. Refresh the page or try again later.';\r
+                               header('Location: error.php?t=1');exit();\r
                                break;\r
                }\r
        }\r
-?>\r
+?>
\ No newline at end of file
index ebcc092..b88cde9 100644 (file)
@@ -6,13 +6,11 @@
        if (!loginStatus()) header('location: login.php');\r
 ?>\r
 \r
-<script type="text/javascript" src="js/profile.js"></script>\r
+<script src="js/btns.js"></script>\r
 \r
 <div id="statuses" class="column round-left">\r
 \r
-       <?php include('inc/sentForm.php')?>\r
-       \r
-       <?php \r
+       <?php include('inc/sentForm.php');\r
                $t = getTwitter();\r
                $p = 1;\r
                if (isset($_GET['p'])) {\r
        \r
                $statuses = $t->userTimeline($p);\r
                if ($statuses === false) {\r
-                       header('location: error.php');\r
+                       header('location: error.php');exit();\r
                } \r
                $empty = count($statuses) == 0? true: false;\r
                if ($empty) {\r
                        echo "<div id=\"empty\">No tweet to display.</div>";\r
                } else {\r
-                       include_once('ajax/timeline_format.php');\r
+                       include_once('lib/timeline_format.php');\r
                        $output = '<ol class="timeline" id="allTimeline">';\r
 \r
                        foreach ($statuses as $status) {\r
-                               $output .= format_timeline($status, $t->username);\r
+                               if (isset($status->retweeted_status)) {\r
+                                       $output .= format_retweet($status,true);\r
+                               } else { \r
+                                       $output .= format_timeline($status,$t->username);\r
+                               }\r
                        }\r
 \r
                        $output .= "</ol><div id=\"pagination\">";\r
@@ -52,8 +54,5 @@
 \r
 <?php \r
                include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
                include ('inc/footer.php');\r
 ?>\r
index 3a74a88..c88b949 100644 (file)
@@ -2,40 +2,15 @@
        include ('lib/twitese.php');\r
        $title = "Replies";\r
        include ('inc/header.php');\r
-       \r
        if (!loginStatus()) header('location: login.php');\r
 ?>\r
 \r
-<script type="text/javascript">\r
-       $(function(){\r
-               formFunc();\r
-               $(".rt_btn").live("click", function(e){\r
-                       e.preventDefault();\r
-                       onRT($(this));\r
-               });\r
-               \r
-               $(".replie_btn").live("click", function(e){\r
-                       e.preventDefault();\r
-                       onReplie($(this), e);\r
-               });\r
-               \r
-               $(".favor_btn").live("click", function(e){\r
-                       e.preventDefault();\r
-                       onFavor($(this));\r
-               });\r
-               \r
-               $("#submit_btn").click(function(e){\r
-               updateStatus();\r
-               e.preventDefault();\r
-               });\r
-       });\r
-</script>\r
+<script src="js/btns.js"></script>\r
 \r
 <div id="statuses" class="column round-left">\r
-\r
-       <?php include('inc/sentForm.php')?>\r
-       \r
-       <?php \r
+<?php \r
+       include('inc/sentForm.php');\r
+       include('lib/timeline_format.php');\r
                $t = getTwitter();\r
                $p = 1;\r
                if (isset($_GET['p'])) {\r
@@ -45,7 +20,7 @@
        \r
                $statuses = $t->replies($p);\r
                if ($statuses === false) {\r
-                       header('location: error.php');\r
+                       header('location: error.php');exit();\r
                } \r
                $empty = count($statuses) == 0? true: false;\r
                if ($empty) {\r
                        $output = '<ol class="timeline" id="allTimeline">';\r
                        \r
                        foreach ($statuses as $status) {\r
-                               $user = $status->user;\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-                               \r
-                               $output .= "\r
-                                       <li>\r
-                                               <span class=\"status_author\">\r
-                                                       <a href=\"user.php?id=$user->screen_name\" target=\"_blank\"><img src=\"".getAvatar($user->profile_image_url)."\" title=\"$user->screen_name\" /></a>\r
-                                               </span>\r
-                                               <span class=\"status_body\">\r
-                                                       <span class=\"status_id\">$status->id</span>\r
-                                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$user->screen_name\">$user->screen_name</a> <span class=\"tweet\">$text</span> </span>";\r
-                                               if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\">$shorturl</a></span>";\r
-                               $output .= "<span class=\"actions\">\r
-                                                               <a class=\"replie_btn\" href=\"a_reply.php?id=$status->id\">回复</a><a class=\"rt_btn\" href=\"a_rt.php?id=$status->id\">回推</a><a class=\"favor_btn\" href=\"a_favor.php?id=$status->id\">收藏</a></span>\r
-                               <span class=\"status_info\">";\r
-                               if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id&uid=$user->id \">in reply to $status->in_reply_to_screen_name</a></span>";\r
-                               $output .= "                            \r
-                                                               <span class=\"source\">from $status->source</span>\r
-                                                               <span class=\"date\"><a href=\"https://twitter.com/$user->screen_name/status/$status->id\" target=\"_blank\">$date</a></span>\r
-                                                   </span>\r
-                                               </span>\r
-                                       </li>\r
-                               ";\r
+                               $output .= format_timeline($status,$t->username);\r
                        }\r
                        \r
                        $output .= "</ol><div id=\"pagination\">";\r
                        \r
                        echo $output;\r
                }\r
-               \r
-               \r
-               \r
        ?>\r
 </div>\r
 \r
 <?php \r
        include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
        include ('inc/footer.php');\r
 ?>\r
index af62b19..3e86cf3 100644 (file)
@@ -2,72 +2,36 @@
        include_once('lib/twitese.php');\r
        $title = "Retweets";\r
        include_once('inc/header.php');\r
-       include_once('ajax/timeline_format.php');\r
+       include_once('lib/timeline_format.php');\r
        if (!loginStatus()) header('location: login.php');\r
 \r
        $type = 'retweets';\r
-       $retweetsType = isset($_GET['type']) ? $_GET['type'] : 'to';\r
-       $page = isset($_GET['page']) ? $_GET['page'] : false;\r
+       $page = isset($_GET['p']) ? $_GET['p'] : 1;\r
        $count = isset($_GET['count']) ? $_GET['count'] : 20;\r
        $since_id = isset($_GET['since']) ? $_GET['since'] : false;\r
        $max_id = isset($_GET['maxid']) ? $_GET['maxid'] : false;\r
 \r
        $t = getTwitter();\r
-       $retweets_to_me_class = '';\r
-       $retweeted_by_me_class = '';\r
-       $retweeted_of_me_class = '';\r
-       $retweets;\r
-       switch($retweetsType){\r
-               case "by":\r
-                       $retweets_to_me_class = 'subnavLink';\r
-                       $retweeted_by_me_class = 'subnavNormal';\r
-                       $retweeted_of_me_class = 'subnavLink';\r
-                       $retweets = $t->retweeted_by_me($page, $count, $since_id, $max_id);\r
-                       break;\r
-               case "mine":\r
-                       $retweets_to_me_class = 'subnavLink';\r
-                       $retweeted_by_me_class = 'subnavLink';\r
-                       $retweeted_of_me_class = 'subnavNormal';\r
-                       $retweets = $t->retweets_of_me($page, $count, $since_id, $max_id);\r
-                       break;\r
-               default:\r
-                       $retweets_to_me_class = 'subnavNormal';\r
-                       $retweeted_by_me_class = 'subnavLink';\r
-                       $retweeted_of_me_class = 'subnavLink';\r
-                       $retweets = $t->retweeted_to_me($page, $count, $since_id, $max_id);\r
-       }\r
+       $retweets = $t->retweets_of_me($page, $count, $since_id, $max_id);\r
        echo '<div id="statuses" class="column round-left">';\r
        include_once('inc/sentForm.php');\r
-       $html .= '<script type="text/javascript" src="js/btns.js"></script>\r
-       <style type="text/css">\r
+       $html = '<script src="js/btns.js"></script>\r
+       <style>\r
        .big-retweet-icon{display:none}\r
-       .timeline li {border-bottom:1px solid #EFEFEF;border-top:none !important}\r
        </style>';\r
-       $html .= "<div id='subnav'>\r
-               <a href='retweets.php?type=to'><span class='$retweets_to_me_class'>Retweets by others</span></a>\r
-               <a href='retweets.php?type=by'><span class='$retweeted_by_me_class'>Retweets by you</span></a>\r
-               <a href='retweets.php?type=mine'><span class='$retweeted_of_me_class'>Your tweets, retweeted</span></a>\r
-               </div>";\r
        $html .='<div class="clear"></div>';\r
        $empty = count($retweets) == 0? true: false;\r
        if ($empty) {\r
                $html .= "<div id=\"empty\">No retweets to display.</div>";\r
        } else {\r
-               $html .= '<ol class="timeline">';\r
-               if($retweetsType == 'mine'){\r
-                       foreach($retweets as $retweet){\r
-                               $html .= format_retweet_of_me($retweet);\r
-                       }\r
-               }elseif($retweetsType == 'by'){\r
-                       foreach($retweets as $retweet){\r
-                               $html .= format_retweet($retweet, true);\r
-                       }\r
-               }else{\r
-                       foreach($retweets as $retweet){\r
-                               $html .= format_retweet($retweet);\r
-                       }\r
+               $html .= '<ol class="timeline" id="allTimeline">';\r
+               foreach($retweets as $retweet){\r
+                       $html .= format_retweet_of_me($retweet);\r
                }\r
                $html .= '</ol><div id="pagination">';\r
+                       if ($page >1) $html .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"retweets.php?p=" . ($page-1) . "\">Back</a>";\r
+                       if (!$empty) $html .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"retweets.php?p=" . ($page+1) . "\">Next</a>";\r
+               $html .= "</div>";\r
        }\r
        echo $html;\r
        include_once('inc/sidebar.php');\r
index a20eb3b..1011803 100644 (file)
-<?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('lib/twitese.php');\r
-       $title = "Search";\r
-       include ('inc/header.php');\r
-\r
-       function getSearch($query, $page){\r
-               GLOBAL $output;\r
-               $t = getTwitter();\r
-               $MAX_TWEETS = 20;\r
-               $statuses = $t->search($query, $page, $MAX_TWEETS);\r
-\r
-               //if ($statuses === false) {\r
-               //      header('location: error.php');\r
-               //}\r
-               $resultCount = count($statuses->results);\r
-               if ($resultCount <= 0) {\r
-                       echo "<div id=\"empty\">No tweet to display.</div>";\r
-               } else {\r
-                       include_once('ajax/timeline_format.php');\r
-                       $output = '<ol class="timeline" id="allTimeline">';\r
-                       foreach ($statuses->results as $status) {\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-\r
-                               $output .= "\r
-                                       <li>\r
-                                       <span class=\"status_author\">\r
-                                       <a href=\"user.php?id=$status->from_user\" target=\"_blank\"><img src=\"".getAvatar($status->profile_image_url)."\" title=\"$status->from_user\" /></a>\r
-                                       </span>\r
-                                       <span class=\"status_body\">\r
-                                       <span class=\"status_id\">$status->id</span>\r
-                                       <span class=\"status_word\"><a class=\"user_name\" href=\"user.php?id=$status->from_user\">$status->from_user</a> <span class=\"tweet\">$text</span> </span>";\r
-                               $output .= recoverShortens($text);\r
-                               $output .="<span class=\"actions\">\r
-                                       <a class=\"replie_btn\" href=\"a_reply.php?id=$status->id\">回复</a><a class=\"rt_btn\" href=\"a_rt.php?id=$status->id\">回推</a>\r
-                                       <a class=\"retw_btn\" title=\"New Retweet\" href=\"javascript:void(0);\">New Retweet</a>\r
-                                       <a class=\"favor_btn\" href=\"a_favor.php?id=$status->id\">收藏</a></span><span class=\"status_info\">";\r
-                               $output .=      "<span class=\"source\">from ".html_entity_decode($status->source)."</span>\r
-                                       <span class=\"date\"><a href=\"status.php?id=$status->id\" title=\"".date('Y-m-d H:i:s', strtotime($status->created_at))."\" target=\"_blank\">$date</a></span>\r
-                                       </span>\r
-                                       </span>\r
-                                       </li>\r
-                                       ";\r
-                       }\r
-\r
-                       $output .= "</ol><div id=\"pagination\">";\r
-\r
-                       if ($page > 1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"search.php?q=".urlencode($query)."&p=" . ($page - 1) . "\">Back</a>";\r
-                       if ($resultCount == $MAX_TWEETS) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"search.php?q=".urlencode($query)."&p=" . ($page + 1) . "\">Next</a>";\r
-                       $output .= "</div>";\r
-               }\r
-       }\r
-\r
-       if (!loginStatus()) header('location: login.php');\r
-?>\r
-<style type="text/css">#trend_entries{display:block}</style>\r
-<script type="text/javascript" src="js/search.js"></script>\r
-<div id="statuses" class="column round-left">\r
-\r
-       <form action="search.php" method="get" id="search_form">\r
-               <input type="text" name="q" id="query" value="<?php echo $_GET['q'] ?>" />\r
-               <input type="submit" class="more round" style="width: 103px; margin-left: 10px; display: block; float: left; height: 34px; font-family: tahoma; color: rgb(51, 51, 51);" value="Search">\r
-       </form>\r
-\r
-       <!-- Google Custom Search Element \r
-       <div id="cse" style="width:100%;">Loading</div>\r
-       <script src="http://www.google.com/jsapi" type="text/javascript"></script>\r
-       <script type="text/javascript">\r
-       google.load('search', '1');\r
-       google.setOnLoadCallback(function(){\r
-               new google.search.CustomSearchControl('011932393486939676874:dgglbf75l0o').draw('cse');\r
-         }, true);\r
-       </script>\r
--->    \r
-<?php \r
-       $t = getTwitter();\r
-       $p = 1;\r
-       if (isset($_GET['p'])) {\r
-               $p = (int) $_GET['p'];\r
-               if ($p <= 0) $p = 1;\r
-       }\r
-       $output = '';\r
-       if (isset($_GET['q'])) {\r
-               $q = $_GET['q'];\r
-               getSearch($q, $p);\r
-       }\r
-       echo $output;\r
-?>\r
-</div>\r
-\r
-<?php \r
-       include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('lib/twitese.php');
+       $title = "Search";
+       include ('inc/header.php');
+
+       function getSearch($query, $max_id_str){
+               GLOBAL $output;
+               $t = getTwitter();
+               $result = $t->search($query, $max_id_str);
+               $statuses = $result->statuses;
+               $max_id_str = end($statuses)->id_str;
+               $resultCount = count($statuses);
+               if ($resultCount <= 0) {
+                       echo "<div id=\"empty\">No tweet to display.</div>";
+               } else {
+                       include_once('lib/timeline_format.php');
+                       $output = '<ol class="timeline" id="allTimeline">';
+                       foreach ($statuses as $status) {
+                               $output .= format_timeline($status, $t->username);
+                       }
+                       $output .= "</ol><div id=\"pagination\"><a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"search.php?q=".urlencode($query)."&maxid=" . $max_id_str . "\">Next</a></div>";
+               }
+       }
+
+       if (!loginStatus()) header('location: login.php');
+?>
+<style>#trend_entries{display:block}</style>
+<script src="js/search.js"></script>
+<div id="statuses" class="column round-left">
+
+       <form action="search.php" method="get" id="search_form">
+               <input type="text" name="q" id="query" value="<?php echo $_GET['q'] ?>" />
+               <input type="submit" class="more round" style="width: 103px; margin-left: 10px; display: block; float: left; height: 34px; font-family: tahoma; color: rgb(51, 51, 51);" value="Search">
+       </form>
+<?php
+       $p = 1;
+       if (isset($_GET['max_id'])) {
+               $max_id = $_GET['max_id'];
+       } else {
+               $max_id = false;
+       }
+       $output = '';
+       if (isset($_GET['q'])) {
+               $q = $_GET['q'];
+               getSearch($q, $max_id);
+       }
+       echo $output;
+?>
+</div>
+
+<?php 
+       include ('inc/sidebar.php');
+       include ('inc/footer.php');
+?>
index 6f4daa3..1f35604 100644 (file)
-<?php\r
-       include ('lib/twitese.php');\r
-       $title = "Settings";\r
-       include ('inc/header.php');     \r
-       if (!loginStatus()) header('location: login.php');      \r
-?>\r
-<script type="text/javascript" src="js/colorpicker.js"></script>\r
-<script type="text/javascript" src="js/setting.js?ver=20100206"></script>\r
-<link rel="stylesheet" href="css/colorpicker.css" type="text/css" />\r
-<div id="statuses" class="column round-left">\r
-       <div id="setting">\r
-<?php \r
-       if (isset($_POST['name'])) {\r
-               $t = getTwitter();\r
-               $args = array();\r
-               $args['name'] = $_POST['name'];\r
-               $args['url'] = $_POST['url'];\r
-               $args['location'] = $_POST['location'];\r
-               $args['description'] = $_POST['description'];\r
-               $result = $t->updateProfile($args);\r
-               if ($result) echo "<div id=\"otherTip\">Your profile has been updated!</div>";\r
-               else echo "<div id=\"otherTip\">Update failed. Please try again.</div>";\r
-       }\r
-\r
-       if (isset($_GET['t'])){\r
-               $settingType = $_GET['t'];\r
-       }\r
-?>\r
-<div id="setting_nav">\r
-<?php\r
-       switch($settingType){\r
-               case 'profile':\r
-?>\r
-                       <span class="subnavLink"><a href="setting.php">Customize</a></span><span class="subnavNormal">Edit Profile</span><span class="subnavLink"><a href="setting.php?t=advanced">Advanced</a></span>\r
-<?php                  \r
-                       break;\r
-               case 'advanced':\r
-?>\r
-                       <span class="subnavLink"><a href="setting.php">Customize</a></span><span class="subnavLink"><a href="setting.php?t=profile">Edit Profile</a></span><span class="subnavNormal">Advanced</span>\r
-<?php          \r
-                       break;\r
-               default:\r
-?>\r
-                       <span class="subnavNormal">Customize</span><span class="subnavLink"><a href="setting.php?t=profile">Edit Profile</a></span><span class="subnavLink"><a href="setting.php?t=advanced">Advanced</a></span>\r
-<?php  \r
-       } // end switch\r
-?>\r
-</div>\r
-<?php\r
-       switch($settingType){\r
-               case 'profile':\r
-                       $user = getTwitter()->veverify();\r
-?>\r
-                       <form id="setting_form" action="setting.php?t=profile" method="post">\r
-                               <table id="setting_table">\r
-                               <tr>\r
-                               <td class="setting_title">Name:</td>\r
-                               <td><input class="setting_input" type="text" name="name" value="<?php echo isset($user->name) ? $user->name : ''?>" /></td>\r
-                               </tr>\r
-                               <tr>\r
-                               <td class="setting_title">URL:</td>\r
-                               <td><input class="setting_input" type="text" name="url" value="<?php echo isset($user->url) ? $user->url : '' ?>" /></td>\r
-                               </tr>\r
-                               <tr>\r
-                               <td class="setting_title">Location:</td>\r
-                               <td><input class="setting_input" type="text" name="location" value="<?php echo isset($user->location) ? $user->location : '' ?>" /></td>\r
-                               </tr>\r
-                               <tr>\r
-                               <td class="setting_title">Bio:</td>\r
-                               <td><textarea id="setting_text" name="description"><?php echo isset($user->description) ? $user->description : '' ?></textarea><small style="margin-left:5px;vertical-align: top;">*Max 160 chars</small></td>\r
-                               </tr>\r
-                               <tr>\r
-                               <td colspan="2"><input type="submit" class="btn" style="margin-left:62px !important" id="save_button" value="Save"></input></td>\r
-                               </tr>\r
-                               </table>\r
-                               </form>\r
-<?php\r
-                       break;\r
-               case 'advanced':\r
-?>\r
-               <div id="otherTip">More features coming soon!</div>\r
-<?php\r
-                       break;\r
-               default:\r
-                       if ( isset($_POST['myCSS']) ) {\r
-                               try {\r
-                                       saveStyle($_POST['myCSS'], $_POST['fontsize'], $_POST['ad_display'], $_POST['bodyBg']);\r
-                                       echo "<div id=\"otherTip\">Your style has been updated!</div>";\r
-                                       $arr;\r
-                                       preg_match('/\(([\w\/\.\-_\&\#\$\%\:]+)\)/i', $_POST['myCSS'], $arr);\r
-                                       echo '<script>var styles = "/'.$arr[1].'";\r
-                                       var newSS=document.createElement("link");\r
-                                       newSS.rel="stylesheet";\r
-                                       newSS.type="text/css";\r
-                                       newSS.href=escape(styles);\r
-                                       document.getElementsByTagName("head")[0].appendChild(newSS);</script>';\r
-                               } catch (Exception $e) {\r
-                                       echo "<div id=\"otherTip\">Update failed. Please try again.</div>";\r
-                               }\r
-                       }\r
-                       if ( isset($_GET['reset']) ) {\r
-                               resetStyle();\r
-                               echo "<div id=\"otherTip\">Styles have been reseted!</div>";\r
-                       }\r
-                       if(isset($_POST['updatesInterval'])){\r
-                               setcookie('updatesInterval', $_POST['updatesInterval'], time()+3600*24*365, '/');\r
-                               setcookie('intervalChanged', 'true', time()+3600*24*365, '/');\r
-                       }\r
-                       if(isset($_POST['homeInterval'])){\r
-                               setcookie('homeInterval', $_POST['updatesInterval'], time()+3600*24*365, '/');\r
-                               setcookie('intervalChanged', 'true', time()+3600*24*365, '/');\r
-                       }\r
-?>\r
-               <form id="style_form" action="setting.php" method="post">\r
-\r
-                       <fieldset class="settings">\r
-\r
-                       <legend>Enhancements</legend>\r
-\r
-                       <input id="show_pic" type="checkbox" checked="checked" />\r
-                       <label>Enable Auto Images Preview</label>\r
-                       <small>(Supports mainstream image hostings)</small>\r
-\r
-                       <br /><br />\r
-\r
-                       <input id="mediaPreSelect" type="checkbox" />\r
-                       <label>Enable Auto Medias Preview</label>\r
-                       <small>(Supports Xiami and Tudou)</small><br />\r
-\r
-                       </fieldset>\r
-\r
-                       <fieldset class="settings">\r
-\r
-                       <legend>Auto Refresh Interval</legend>\r
-\r
-                       <label>Home Page</label>\r
-                       <select id="homeInterval" name="homeInterval" value="<?php echo getCookie('homeInterval')?>">\r
-                               <option value="0.5">30 sec</option>\r
-                               <option value="1" selected="selected">1 min(Default)</option>\r
-                               <option value="3">3 min</option>\r
-                               <option value="5">5 min</option>\r
-                               <option value="10">10 min</option>\r
-                               <option value="0">Never</option>\r
-                       </select>\r
-                       <small>(https://rabr.in/index.php)</small>\r
-\r
-                       <br /><br />\r
-\r
-                       <label>Updates Page</label>\r
-                       <select id="updatesInterval" name="updatesInterval" value="<?php echo getCookie('updatesInterval')?>">\r
-                               <option value="0.5">30 sec</option>\r
-                               <option value="1">1 min</option>\r
-                               <option value="3" selected="selected">3 min(Default)</option>\r
-                               <option value="5">5 min</option>\r
-                               <option value="10">10 min</option>\r
-                               <option value="0">Never</option>\r
-                       </select>\r
-                       <small>(https://rabr.in/all.php)</small>\r
-\r
-                       </fieldset>\r
-\r
-                       <fieldset class="settings">\r
-\r
-                       <legend>UI Preferences</legend>\r
-\r
-                       <label>Custom Themes</label>\r
-                       <select id="styleSelect"><option value="n/a">Choose one...</option></select>\r
-                       <small>(We have awesome themes for you!)</small>\r
-\r
-                       <br /><br />\r
-\r
-                       <label>Background Color</label>\r
-                       <input class="bg_input" type="text" id="bodyBg" name="bodyBg" value="<?php echo getColor("bodyBg","") ?>" />\r
-                       <small>(Choose your favorite color here)</small>\r
-\r
-                       <br /><br />\r
-\r
-                       <label>Font Size</label>\r
-                       <select id="fontsize" name="fontsize" value="<?php echo getCookie('fontsize')?>">\r
-                               <option value="12px">Small</option>\r
-                               <option value="13px" selected="selected">Middle(Default)</option>\r
-                               <option value="14px">Large</option>\r
-                               <option value="15px">Extra Large</option>\r
-                       </select>\r
-                       <small>(Set the font size)</small>\r
-\r
-                       <br /><br />\r
-                       \r
-                       <label>Support Rabr</label>\r
-                       <select id="ad_display" name="ad_display" value="<?php echo getCookie('ad_display')?>">\r
-                               <option value="block" selected="selected">Count me in!</option>\r
-                               <option value="none">Nah, not me...</option>\r
-                       </select>\r
-                       <small>(Sidebar AD display management)</small>\r
-\r
-                       <br /><br />                    \r
-\r
-                       <label>Customize CSS</label>\r
-                       <small>(You can put your own CSS hack here, or your Twitter style code)</small>\r
-                       <br />\r
-                       <textarea type="text" id="myCSS" name="myCSS" value="" /><?php echo getColor("myCSS","") ?></textarea>\r
-\r
-                       </fieldset>\r
-\r
-                       <table>\r
-                       <tr>\r
-                       <td colspan="2">\r
-                       <input type="submit" class="btn" id="save_button" value="Save" />\r
-                       <a id="reset_link" href="setting.php?reset=true" title="You will lose all customized settings!">Reset to default</a>\r
-                       </td>\r
-                       </tr>\r
-                       </table>\r
-\r
-               </form>\r
-<?php\r
-       } // end switch\r
-?>\r
-\r
-       </div>\r
-</div>\r
-\r
-<?php \r
-       include ('inc/sidebar.php');\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php
+       include ('lib/twitese.php');
+       $title = "Settings";
+       include ('inc/header.php');     
+       if (!loginStatus()) header('location: login.php');      
+?>
+<script src="js/colorpicker.js"></script>
+<script src="js/setting.js"></script>
+<link rel="stylesheet" href="css/colorpicker.css" />
+<div id="statuses" class="column round-left">
+       <div id="setting">
+<div id="setting_nav">
+<?php
+       $settingType = isset($_GET['t'])? $_GET['t'] : 1;
+       switch($settingType){
+               case 'profile':
+?>
+                       <span class="subnavLink"><a href="setting.php">Customize</a></span><span class="subnavNormal">Profile</span>
+<?php                  
+                       break;
+               default:
+?>
+                       <span class="subnavNormal">Customize</span><span class="subnavLink"><a href="setting.php?t=profile">Profile</a></span>
+<?php  
+       }
+?>
+</div>
+<?php
+       switch($settingType){
+               case 'profile':
+                       $user = getTwitter()->veverify(true);
+?>
+                       <form id="setting_form" action="ajax/uploadImage.php?do=profile" method="post" enctype="multipart/form-data">
+                               <fieldset class="settings">
+                               <legend>Avatar</legend>
+                               <ol>
+                               <li style="display:inline-block"><img src="<?php echo isset($_COOKIE['imgurl']) ? $_COOKIE['imgurl'] : getAvatar($user->profile_image_url)?>"></img></li>
+                               <ol style="margin-left:29px">
+                                       <li><input type="file" name="image" id="profile_image"/></li>
+                                       <li><input type="submit" id="AvatarUpload" class="btn" value="Upload"/><small style="margin-left:10px;vertical-align: middle;">BMP,JPG or PNG accepted, less than 800K.</small></li>
+                               </ol></ol>
+                               </fieldset>
+                       </form>
+                       <form id="setting_form" action="ajax/updateProfile.php" method="post">
+                               <fieldset class="settings">
+                               <legend>Literature</legend>
+                               <table id="setting_table">
+                               <tr>
+                               <td class="setting_title">Name:</td>
+                               <td><input class="setting_input" type="text" name="name" value="<?php echo isset($user->name) ? $user->name : ''?>" /></td>
+                               </tr>
+                               <tr>
+                               <td class="setting_title">URL:</td>
+                               <td><input class="setting_input" type="text" name="url" value="<?php echo isset($user->url) ? $user->url : '' ?>" /></td>
+                               </tr>
+                               <tr>
+                               <td class="setting_title">Location:</td>
+                               <td><input class="setting_input" type="text" name="location" value="<?php echo isset($user->location) ? $user->location : '' ?>" /></td>
+                               </tr>
+                               <tr>
+                               <td class="setting_title">Bio:</td><td><small style="margin-left:5px;vertical-align: top;">*Max 160 chars</small></td>
+                               </tr><tr>
+                               <td></td>
+                               <td><textarea id="setting_text" name="description"><?php echo isset($user->description) ? $user->description : '' ?></textarea></td>
+                               </tr>
+                               </table>
+                               <input type="submit" id="saveProfile" class="btn" value="Save" />
+                               </fieldset>
+<?php
+                       break;
+               default:
+?>
+               <form id="style_form" action="setting.php" method="post">
+                       
+                       <fieldset class="settings">
+
+                       <legend>Utility</legend>
+
+                       <input id="proxifyAvatar" type="checkbox" />
+                       <label>Proxify the Avatar</label>
+                       
+                       <br /><br />                    
+                       <input id="autoscroll" type="checkbox" />
+                       <label>Timeline Autopaging</label>
+                       
+                       <br /><br />                    
+                       <input id="sidebarscroll" type="checkbox" />
+                       <label>Fixed Sidebar</label>
+                       
+                       </fieldset>
+                       
+                       <fieldset class="settings">
+
+                       <legend>Media Preview</legend>
+
+                       <input id="showpic" type="checkbox" checked="checked" />
+                       <label>Enable Images Preview</label>
+                       <small>(Supports common image hostings)</small>
+
+                       <br /><br />
+
+                       <input id="mediaPreSelect" type="checkbox" checked="checked" />
+                       <label>Enable Videos Preview</label>
+                       <small>(Supports Xiami and Tudou)</small><br />
+
+                       </fieldset>
+
+                       <fieldset class="settings">
+
+                       <legend>Auto Refresh Interval</legend>
+
+                       <label>Home Page</label>
+                       <select id="homeInterval" name="homeInterval" value="<?php echo getCookie('homeInterval')?>">
+                               <option value="0.5">30 sec</option>
+                               <option value="1" selected="selected">1 min(Default)</option>
+                               <option value="3">3 min</option>
+                               <option value="5">5 min</option>
+                               <option value="10">10 min</option>
+                               <option value="0">Never</option>
+                       </select>
+                       <label>Updates Page</label>
+                       <select id="updatesInterval" name="updatesInterval" value="<?php echo getCookie('updatesInterval')?>">
+                               <option value="0.5">30 sec</option>
+                               <option value="1">1 min</option>
+                               <option value="3" selected="selected">3 min(Default)</option>
+                               <option value="5">5 min</option>
+                               <option value="10">10 min</option>
+                               <option value="0">Never</option>
+                       </select>
+
+                       </fieldset>
+
+                       <fieldset class="settings">
+
+                       <legend>UI Preferences</legend>
+                       <input id="twitterbg" type="checkbox" />
+                       <label>Use twitter account background</label>
+                       
+                       <br /><br />
+                       
+                       <label>Custom Themes</label>
+                       <select id="styleSelect"></select>
+                       <small>(We have awesome themes for you!)</small>
+
+                       <br /><br />
+
+                       <label>Background Color</label>
+                       <input class="bg_input" type="text" id="bodyBg" name="bodyBg" value="<?php echo getDefCookie("Bgcolor","") ?>" />
+                       <small>(Choose your favorite color here)</small>
+
+                       <br /><br />
+
+                       <label>Font Size</label>
+                       <select id="fontsize" name="fontsize" value="<?php echo getCookie('fontsize')?>">
+                               <option value="12px">Small</option>
+                               <option value="13px" selected="selected">Middle(Default)</option>
+                               <option value="14px">Large</option>
+                               <option value="15px">Extra Large</option>
+                       </select>
+                       <small>(Set the font size)</small>
+
+                       <br /><br />            
+
+                       <label>Customize CSS</label>
+                       <small>(You can put your own CSS hack here, or your Twitter style code)</small>
+                       <br />
+                       <label>Tips:</label>
+                       <small>You must use <a href="http://i.zou.lu/csstidy/" target="_blank" title="Powered by Showfom">CSSTidy</a> to compress your stylesheet.</small>
+                       <br />
+                       <textarea type="text" id="myCSS" name="myCSS" value="" /><?php echo getDefCookie("myCSS","") ?></textarea>
+                       </fieldset>
+
+<?php
+       }
+?>
+       <a id="reset_link" href="#" title="You will lose all customized settings!">Reset to default</a>
+
+</form>
+       </div>
+</div>
+
+<?php 
+       include ('inc/sidebar.php');
+       include ('inc/footer.php');
+?>
index 913cc22..431ece5 100644 (file)
--- a/share.php
+++ b/share.php
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<?php\r
+       if(!isset($_SESSION)){\r
+               session_start();\r
+       }\r
+       include ('lib/twitese.php');\r
+?>\r
+<!DOCTYPE HTML>\r
 <html xmlns="http://www.w3.org/1999/xhtml">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
-<title>Share to Rabr</title>\r
-<style type="text/css">\r
-body {\r
-background-color:#EEEEEE;\r
-font-family:Tahoma,Helvetica,sans-serif;\r
-font-size:12px;\r
-margin:0;\r
-}\r
-h2 {\r
-color:#666666;\r
-display:block;\r
-float:left;\r
-font-family:Helvetica;\r
-font-weight:700;\r
-margin:8px 0 0;\r
-text-shadow:1px 1px #EEEEEE;\r
-}\r
-p {\r
-margin:0;\r
-padding:0;\r
-}\r
-a:active, a:focus {\r
-outline:medium none;\r
-}\r
-a {\r
-color:#3280AB;\r
-text-decoration:none;\r
-}\r
-a:hover {\r
-color:#000000;\r
-text-decoration:underline;\r
-}\r
-#tip {\r
-color:#999999;\r
-float:right;\r
-font-size:12px;\r
-}\r
-#tip b {\r
-font-family:Tahoma,Helvetica,sans-serif;\r
-font-size:24px;\r
-margin:3px;\r
-}\r
-#share {\r
--moz-border-radius:5px;\r
--webkit-border-radius:5px;\r
-box-shadow:0 0 5px #000000;\r
--moz-box-shadow:0 0 5px #000000;\r
--webkit-box-shadow:0 0 5px #000000;\r
-background:url("../img/bg-front.gif") repeat-x scroll 0 0 transparent;\r
-height:230px;\r
-margin:20px 30px 0;\r
-padding:10px 20px;\r
-width:500px;\r
-}\r
-#textbox {\r
--moz-border-radius:2px;\r
--webkit-border-radius:2px;\r
-background-color:#FBFBFB;\r
-border:1px solid #A7A6AA;\r
-font-family:'Lucida Grande',Tahoma,sans-serif;\r
-font-size:14px;\r
-height:80px;\r
-margin:0;\r
-overflow:hidden;\r
-padding:3px;\r
-width:490px;\r
-}\r
-#url {\r
--moz-border-radius:2px;\r
--webkit-border-radius:2px;\r
-background-color:#FBFBFB;\r
-border:1px solid #A7A6AA;\r
-font-family:'Lucida Grande',Tahoma,sans-serif;\r
-font-size:12px;\r
-padding:3px;\r
-width:490px;\r
-}\r
-.title {\r
-display:block;\r
-width:40px;\r
-}\r
-table tr td {\r
-padding:5px 0;\r
-}\r
-#message {\r
-font-size:14px;\r
-margin-top:100px;\r
-text-align:center;\r
-}\r
-#textbox:hover, #url:hover {\r
-background-color:#FFFFFF;\r
-}\r
-.more {\r
-background-color:#FFFFFF;\r
-background-image:url("../img/more.gif");\r
-background-position:left top;\r
-background-repeat:repeat-x;\r
-border-color:#DDDDDD #AAAAAA #AAAAAA #DDDDDD;\r
-border-style:solid;\r
-border-width:1px;\r
-display:block;\r
-font-family:Helvetica;\r
-font-size:18px;\r
-font-weight:700;\r
-height:22px;\r
-letter-spacing:1px;\r
-line-height:2em;\r
-margin-bottom:6px;\r
-outline-style:none;\r
-outline-width:medium;\r
-padding:6px 0;\r
-width:100%;\r
-}\r
+<title>Share to Embr</title>\r
+<style>\r
+body{background-color:#EEE;font-family:Tahoma,Helvetica,sans-serif;font-size:12px;margin:0}\r
+h2{color:#666;display:block;float:left;font-family:Helvetica;font-weight:700;margin:8px 0 0;text-shadow:1px 1px #EEE}\r
+p{margin:0;padding:0}\r
+a:active, a:focus{outline:medium none}\r
+a{color:#3280AB;text-decoration:none}\r
+a:hover{color:#000;text-decoration:underline}\r
+#tip{color:#999;float:right;font-size:12px}\r
+#tip b{font-family:Tahoma,Helvetica,sans-serif;font-size:24px;margin:3px}\r
+#share{border-radius:5px;box-shadow:0 0 5px #000;-moz-box-shadow:0 0 5px #000;-webkit-box-shadow:0 0 5px #000;background:url("../img/bg-front.gif") repeat-x scroll 0 0 transparent;height:230px;margin:20px 30px 0;padding:10px 20px;width:500px}\r
+#textbox{border-radius:2px;background-color:#FBFBFB;border:1px solid #A7A6AA;font-family:'Lucida Grande',Tahoma,sans-serif;font-size:14px;height:80px;margin:0;overflow:hidden;padding:3px;width:490px}\r
+#url{border-radius:2px;background-color:#FBFBFB;border:1px solid #A7A6AA;font-family:'Lucida Grande',Tahoma,sans-serif;font-size:12px;padding:3px;width:490px}\r
+.title{display:block;width:40px}\r
+table tr td{padding:5px 0}\r
+#message{font-size:14px;margin-top:100px;text-align:center}\r
+#textbox:hover, #url:hover{background-color:#FFF}\r
+.more{background-color:#FFF;background-image:url("../img/more.gif");background-position:left top;background-repeat:repeat-x;border-color:#DDD #AAA #AAA #DDD;border-style:solid;border-width:1px;display:block;font-family:Helvetica;font-size:18px;font-weight:700;height:22px;letter-spacing:1px;line-height:2em;margin-bottom:6px;outline-style:none;outline-width:medium;padding:6px 0;width:100%}\r
 .more:hover{background-position:left -78px;border:1px solid #bbb;text-decoration:none}\r
 .more:active{background-position:left -38px;color:#666}\r
 .more.loading{background-color:#fff;background-image:url(../img/ajax.gif);background-position:50% 50%;background-repeat:no-repeat;border:1px solid #eee;cursor:default!important}\r
 .more::-moz-focus-inner{border:0}\r
-.round{-moz-border-radius:8px;-webkit-border-radius:8px}\r
-#shareBtn {\r
-color:#666666;\r
-display:block;\r
-height:45px;\r
-margin:0 auto;\r
-text-shadow:0 1px 0 #FFFFFF;\r
-vertical-align:top;\r
-width:300px;\r
-line-height:1em;\r
-}\r
+.round{-moz-border-radius:8px;border-radius:8px}\r
+#shareBtn{color:#666;display:block;height:45px;margin:0 auto;text-shadow:0 1px 0 #FFF;vertical-align:top;width:300px;line-height:1em}\r
 </style>\r
-<script type="text/javascript" src="js/jquery.js"></script>\r
-<script type="text/javascript">\r
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>\r
+<script>\r
 $(function(){leaveWord();\r
-       $("#textbox").focus();\r
-       $("#textbox").keydown(function(){leaveWord(140);}).keyup(function(){leaveWord(140);})\r
+       $("#textbox").focus().bind("keyup","keydown",function(){leaveWord()});\r
 });\r
 \r
-function leaveWord(num) {\r
+function leaveWord(num){\r
        if (!num) num = 140;\r
        var leave = num-$("#textbox").val().length;\r
-       if (leave < 0) {\r
-               $("#tip").css("color","#CC0000");\r
-               $("#tip b").css("color","#CC0000");\r
+       if (leave < 0){\r
                $("#tip").html("<b>-" + (-leave) + "</b>");\r
-       } else {\r
-               $("#tip").css("color","#CCCCCC");\r
-               $("#tip b").css("color","#CCCCCC");\r
+       } else{\r
                $("#tip").html("<b>" + leave + "</b>");\r
+               if (leave > 40){ \r
+                       $("#tip, #tip b").css("color","#CCC");\r
+               } else if(leave > 20){\r
+                       $("#tip, #tip b").css("color","#CAA");\r
+               } else if(leave > 10){\r
+                       $("#tip, #tip b").css("color","#C88");\r
+               } else if(leave > 0){\r
+                       $("#tip, #tip b").css("color","#C44");\r
+               } else{\r
+                       $("#tip, #tip b").css("color","#E00");\r
+               }\r
        }\r
 }\r
 </script>\r
@@ -156,100 +64,62 @@ function leaveWord(num) {
 \r
 <body>\r
 <?php\r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('lib/twitese.php');\r
        $t = getTwitter();\r
-       if ( isset($_POST['status']) ) {\r
+       if ( isset($_POST['status']) ){\r
                $status = $_POST['status'];\r
-               if (mb_strlen($status,'utf-8') > 140) {\r
+               if (mb_strlen($status,'utf-8') > 140){\r
                        $status = mb_substr($status, 0, 140, 'utf-8');\r
                }\r
-               $shortUrl = shortUrl($_POST['url']);\r
-               if ($shortUrl) {\r
-                       $status .= $shortUrl;\r
-               } else {\r
-                       $status .= ' ' . $_POST['url'];\r
-               }\r
+               $status .= $_POST['url'];\r
                $result = $t->update($status);\r
        }\r
        \r
        $text = '';\r
        \r
-       if ( isset($_GET['u']) ) {\r
+       if ( isset($_GET['u']) ){\r
                $url = $_GET['u'];\r
        }\r
        \r
-       if ( isset($_GET['t']) ) {\r
+       if ( isset($_GET['t']) ){\r
                $title = $_GET['t'];\r
                $text = $_GET['t'];\r
        }\r
        \r
-       if ( isset($_GET['d']) ) {\r
+       if ( isset($_GET['d']) ){\r
                $select = $_GET['d'];\r
                if ( trim($select) != "" ) $text = $select;\r
        }\r
        \r
-       $text = $text;\r
-       \r
+       $text = $text;  \r
        $siteUrl = str_replace('share', 'index', 'http://' . $_SERVER ['HTTP_HOST'] . $_SERVER['PHP_SELF']);\r
        ?>\r
-       \r
-<?php  \r
-       function shareUrl($url, $type = "orzse") {\r
-                switch ($type) {\r
-                        case 'isgd':\r
-                                $request = 'http://is.gd/api.php?longurl=' . rawurlencode($url);\r
-                                $result = processCurl( $request );\r
-                                if ($result) return $result;\r
-                                else return false;\r
-                                break;\r
-                        case 'aacx':\r
-                                $request = 'http://aa.cx/api.php?url=' . rawurlencode($url);\r
-                                $result = processCurl( $request );\r
-                                if ($result) return $result;\r
-                                else return false;\r
-                                break;\r
-                                               case 'orzse':\r
-                                $request = 'http://orz.se/api.php?format=simple&action=shorturl&url=' . rawurlencode($url);\r
-                                $result = processCurl( $request );\r
-                                if ($result) return $result;\r
-                                else return false;\r
-                                break;\r
-                        default:\r
-                                return false;\r
-                }\r
-        }\r
-\r
-       ?>\r
 <div id="share">\r
 \r
-       <?php if ( !$t->username ) {?>\r
+       <?php if ( !$t->username ){?>\r
                <div id="message">Please <a href="login.php" target="_blank">login</a> first.</div>\r
-       <?php } else if ( isset($_POST['status']) ) \r
-                       if ($result) {\r
+       <?php } else if ( isset($_POST['status']) ){ \r
+                       if ($result){\r
        ?>\r
-                               <div id="message">Successfully shared your stuff on Rabr! <a href="javascript:window.close()">Close</a></div>\r
+                               <div id="message">Successfully shared your stuff on Embr! <a href="javascript:window.close()">Close</a></div>\r
                                        <script type="text/javascript">\r
                                        setTimeout("window.close()",1000);\r
                                        </script>\r
-               <?php } else { ?>\r
+               <?php } else{ ?>\r
                                <div id="message">Failed to share your stuff, please try again. <a href="javascript:window.history.go(-1)">Go Back</a></div>\r
                <?php \r
                        }\r
-          } else \r
+          } else{ \r
        ?>\r
                <form action="share.php" method="post">\r
                <table>\r
                        <tr>\r
-                               <td colspan="2"><h2>Share to Rabr</h2><span id="tip"><b>140</b></span></td>\r
+                               <td colspan="2"><h2>Share to Embr</h2><span id="tip"><b>140</b></span></td>\r
                        </tr>\r
                        <tr>\r
                                <td><input type="text" name="url" id="url" disabled="ture" value="<?php echo $url?>"/></td>\r
                        </tr>\r
                        <tr>\r
-                       <td><textarea name="status" id="textbox"><?php echo $text?> <?php if (strlen($url)>30) echo shareUrl($url, "orzse"); else echo $url ?></textarea></td>\r
+                       <td><textarea name="status" id="textbox"><?php echo $text?> <?php if (strlen($url)>30) echo urlshorten($url); else echo $url ?></textarea></td>\r
                        </tr>\r
                        <tr>\r
                        <td>\r
index 43f1e5f..40df598 100644 (file)
-<?php \r
-       if(!isset($_SESSION)){\r
-               session_start();\r
-       }\r
-       include ('lib/twitese.php');\r
-       $title = "Tweet";\r
-\r
-       if (!loginStatus()) header('location: login.php');\r
-\r
-       $t = getTwitter();\r
-       if ( isset($_GET['id']) ) {\r
-               $statusid = $_GET['id'];\r
-               $status = $t->showStatus($statusid);\r
-               if (!$status) {\r
-                       header('location: error.php');\r
-               }\r
-               $user = $status->user;\r
-               $date = formatDate($status->created_at);\r
-               $text = formatText($status->text);\r
-       } else {\r
-               header('location: error.php');\r
-       }\r
-\r
-?>\r
-<?php ob_start(); ?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml">\r
-<head>\r
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\r
-<meta name="keywords" content="twitter, rabr, dabr, twitese, disinfeqt" />\r
-<meta name="description" content="Rabr is an advanced and revolutionary interface for dabr and Twitese" />\r
-<link rel="shortcut icon" href="img/favicon.ico" />\r
-<link type="text/css" id="css" href="css/main.css" rel="stylesheet" />\r
-<title>Rabr / <?php echo $title ?></title>\r
-<?php \r
-       $myCSS = getColor("myCSS","");\r
-       $old_css = "ul.sidebar-menu li.active a";\r
-       $new_css = "ul.sidebar-menu a.active";\r
-       $myCSS = str_replace($old_css,$new_css,$myCSS);\r
-       $fontsize = getColor("fontsize","13px");\r
-?>\r
-<style type="text/css">\r
-<?php echo $myCSS ?>\r
-a:active, a:focus {outline:none}\r
-body {font-size:<?php echo $fontsize ?> !important}\r
-#header {\r
-margin:1em auto;\r
-text-align:right;\r
-width:600px;\r
-}\r
-#content {\r
-margin:1em auto;\r
-width:600px;\r
-}\r
-.wrapper {\r
-margin:1em auto;\r
-position:relative;\r
-width:600px;\r
-}\r
-#statuses{\r
-background-color:#FFFFFF;\r
-float:left;\r
-padding:10px;\r
-width:580px;\r
-}\r
-.timeline li:hover, .rank_list li:hover {\r
-background-color:transparent !important;\r
-}\r
-.timeline, .ajax_timeline {\r
-border-bottom:1px solid #FFF !important;\r
-border-top:1px solid #FFF !important;\r
-}\r
-.timeline li, .ajax_timeline li {\r
-border-bottom:1px solid #FFF !important;\r
-border-top:1px solid #FFF !important;\r
-}\r
-.status_body {\r
-display:block;\r
-font-size:2em;\r
-line-height:30px;\r
-margin-left:58px;\r
-overflow:hidden;\r
-position:relative;\r
-}\r
-.timeline li {\r
-cursor:default;\r
-margin:0px;\r
-overflow:hidden;\r
-padding:10px;\r
-position:relative;\r
-}\r
-.status_author, .rank_img {\r
-left:10px;\r
-position:absolute;\r
-top:15px;\r
-width:50px;\r
-}\r
-</style>\r
-<script type="text/javascript" src="js/jquery.js"></script>\r
-<script type="text/javascript" src="js/jquery.cookie.js"></script>\r
-<script type="text/javascript" src="js/mediaPreview.js"></script>\r
-<script type="text/javascript" src="js/public.js"></script>\r
-</head>\r
-\r
-<body>\r
-       <div id="header">\r
-               <div class="wrapper">\r
-                       <a href="index.php"><img id="logo" style="float:left" src="img/logo.png" /></a>\r
-                       <ul id="nav" class="round">\r
-                               <li><a href="index.php">Home</a></li>\r
-                               <li><a href="profile.php">Profile</a></li>\r
-                               <li><a href="browse.php">Public</a></li>\r
-                               <li><a href="setting.php">Settings</a></li>\r
-                               <li><a href="logout.php">Logout</a></li>                        \r
-                       </ul>\r
-               </div>\r
-       </div>\r
-       <div id="content">\r
-               <div class="wrapper">\r
-                       <div class="content-bubble-arrow"></div>\r
-                       <table cellspacing="0" class="columns">\r
-                 <tbody>\r
-                       <tr>\r
-                         <td id="left" class="round">\r
-<div id="statuses" class="round">\r
-               <div class="clear"></div>\r
-               <ol class="timeline">\r
-                               <li>\r
-                                               <span class="status_author">\r
-                                                               <a href="user.php?id=<?php echo $user->screen_name ?>" target="_blank"><img src="<?php echo getAvatar($user->profile_image_url); ?>" /></a>\r
-                                               </span>\r
-                                               <span class="status_body">\r
-                                                       <span class="status_id"><?php echo $statusid ?></span>\r
-                                                       <span class="status_word"><a class="user_name" href="user.php?id=<?php echo $user->screen_name ?>"><?php echo $user->screen_name ?></a> <span class="tweet"><?php echo $text ?></span></span>\r
-                                                       <span class="status_info">\r
-                                                                               <?php if ($status->in_reply_to_status_id) {?><span class="in_reply_to"> <a href="status.php?id=<?php echo $status->in_reply_to_status_id ?>">in reply to <?php echo $status->in_reply_to_screen_name?></a></span> <?php }?>\r
-                                                                               <span class="source">from <?php echo $status->source ?></span>\r
-                                                                               <span class="date"><a href="status.php?id=<?php echo $statusid ?>" target="_blank"><?php echo $date ?></a></span>\r
-                                                       </span>\r
-                                               </span>\r
-                               </li>\r
-               </ol>\r
-</div>\r
-                       </tr>\r
-                 </tbody>\r
-               </table>\r
-               <div class="clear"></div>\r
-                       <div id="footer" class="round">\r
-                       <ul>\r
-                       <li>&copy; 2010 disinfeqt</li>\r
-                       <li><a href="about.php" title="About Rabr">About</a></li>\r
-                       <li><a href="http://blog.zdxia.com/" title="zdx Purified" target="_blank">Blog</a></li>\r
-                       <li><a href="http://code.google.com/p/twitese/" target="_blank" title="Rabr is proundly powered by the Open Source project - Twitese">Twitese</a></li>\r
-                       <li><a href="http://code.google.com/p/rabr/" target="_blank">Open Source</a></li>\r
-                       </ul>\r
-                       </div>\r
-               </div>\r
-       </div>\r
-</body>\r
-       <script type="text/javascript">\r
-       var username = $(".user_name").html();\r
-       var tweet = $(".tweet").text();\r
-       if (tweet.length > 30) {\r
-               tweet = tweet.substr(0,30) + " ...";\r
-       }\r
-       document.title =document.title.replace(/Tweet/, username + ": " + tweet);\r
-       </script>\r
-</html>\r
-<?php ob_end_flush(); ?>\r
+<?php 
+       if(!isset($_SESSION)){
+               session_start();
+       }
+       include ('lib/twitese.php');
+       if (!loginStatus()) header('location: login.php');
+       $t = getTwitter();
+       if ( isset($_GET['id']) ) {
+               $statusid = $_GET['id'];
+               $status = $t->showStatus($statusid);
+               if (!$status) {
+                       header('location: error.php');exit();
+               }
+               $user = $status->user;
+               $date = format_time($status->created_at);
+               $text = formatEntities(&$status->entities,$status->text);
+       } else {
+               header('location: error.php');exit();
+       }
+?>
+
+<?php ob_start() ?>
+<!DOCTYPE HTML>
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="keywords" content="embr, open source, php, twitter, oauth" />
+<meta name="description" content="Vivid Interface for Twitter" />
+<meta name="author" content="disinfeqt, JLHwung" />
+<link rel="icon" href="img/favicon.ico" />
+<link id="css" href="css/main.css" rel="stylesheet" />
+<title>Embr / Tweet</title>
+<?php 
+       $myCSS = getDefCookie("myCSS","");
+       $old_css = "ul.sidebar-menu li.active a";
+       $new_css = "ul.sidebar-menu a.active";
+       $myCSS = str_replace($old_css,$new_css,$myCSS);
+       $fontsize = getDefCookie("fontsize","13px");
+       $bodyBg = getDefCookie("bodyBg");
+       $Bgcolor = getDefCookie("Bgcolor");
+?>
+<style>
+<?php echo $myCSS ?>
+a:active, a:focus {outline:none}
+body {font-size:<?php echo $fontsize ?> !important;background-color:<?php echo $bodyBg ?>;background-image:<?php echo $Bgcolor?>}
+header {margin:1em auto;text-align:right;width:600px}
+#content {margin:1em auto;width:600px}
+.wrapper {margin:1em auto;position:relative;width:600px}
+#statuses{background-color:#FFFFFF;float:left;padding:10px;width:580px}
+.timeline li:hover, .rank_list li:hover {background-color:transparent !important}
+.timeline, .ajax_timeline {border-bottom:1px solid #FFF !important;border-top:1px solid #FFF !important}
+.timeline li, .ajax_timeline li {border-bottom:1px solid #FFF !important;border-top:1px solid #FFF !important}
+.status_body {display:block;font-size:2em;line-height:30px;margin-left:58px;overflow:hidden;position:relative}
+.timeline li {cursor:default;margin:0px;overflow:hidden;padding:10px;position:relative}
+.status_author, .rank_img {left:10px;position:absolute;top:15px;width:50px}
+</style>
+<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
+<script src="js/jquery.js"></script>
+<script src="js/mediaPreview.js"></script>
+<script src="js/public.js"></script>
+</head>
+
+<body>
+       <header>
+               <div class="wrapper">
+                       <a href="index.php"><img id="logo" style="float:left" src="img/logo.png" /></a>
+                       <nav class="round">
+                       <ul>
+                               <li><a href="index.php">Home</a></li>
+                               <li><a href="profile.php">Profile</a></li>
+                               <li><a href="browse.php">Public</a></li>
+                               <li><a href="setting.php">Settings</a></li>
+                               <li><a href="logout.php">Logout</a></li>                        
+                       </ul>
+                       </nav>
+               </div>
+       </header>
+       <div id="content">
+               <div class="wrapper">
+                       <div class="content-bubble-arrow"></div>
+                       <table cellspacing="0" class="columns">
+                 <tbody>
+                       <tr>
+                         <td id="left" class="round">
+<div id="statuses" class="round">
+               <div class="clear"></div>
+               <ol class="timeline">
+                               <li>
+                                               <span class="status_author">
+                                                               <a href="user.php?id=<?php echo $user->screen_name ?>" target="_blank"><img src="<?php echo getAvatar($user->profile_image_url); ?>" /></a>
+                                               </span>
+                                               <span class="status_body">
+                                                       <span class="status_id"><?php echo $statusid ?></span>
+                                                       <span class="status_word"><a class="user_name" href="user.php?id=<?php echo $user->screen_name ?>"><?php echo $user->screen_name ?></a> <span class="tweet"><?php echo $text ?></span></span>
+                                                       <span class="status_info">
+                                                                               <?php if ($status->in_reply_to_status_id_str) {?><span class="in_reply_to"> <a href="status.php?id=<?php echo $status->in_reply_to_status_id_str ?>">in reply to <?php echo $status->in_reply_to_screen_name?></a></span> <?php }?>
+                                                                               <span class="source">from <?php echo $status->source ?></span>
+                                                                               <span class="date"><a href="status.php?id=<?php echo $statusid ?>" id="<?php echo $date?>" target="_blank"><?php echo date('Y-m-d H:i:s', $date); ?></a></span>
+                                                       </span>
+                                               </span>
+                               </li>
+               </ol>
+</div>
+<script>
+       var username = $(".user_name").text();
+       var tweet = $(".tweet").text();
+       if (tweet.length > 30) {
+               tweet = tweet.substr(0,30) + " ...";
+       }
+       document.title =document.title.replace(/Tweet/, username + ": " + tweet);
+</script>
+<?php include('inc/footer.php') ?>
index 4972b7b..d9130a9 100644 (file)
@@ -1,2 +1,2 @@
 /*Theme 9 from Twitter.com*/\r
-body{background:#1A1B1F url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/themes/theme9/bg.gif) fixed no-repeat top left;}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#2FC2EF;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#666;}#side_base{border-left:1px solid #181A1E;background-color:#252429;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#3D3C41;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#252429!important;}#side .actions,#side .promo{border:1px solid #181A1E;}#side div.section-header h3{border-bottom:1px solid #181A1E;}#side hr{background:#181A1E;color:#181A1E;}ul.sidebar-menu li.loading a{background:#3D3C41 url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #181A1E;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #181A1E!important;}
\ No newline at end of file
+body{background:#1A1B1F url(http://s3.amazonaws.com/twitter_production/images/themes/theme9/bg.gif) fixed no-repeat top left}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#2FC2EF}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#666}#side_base{border-left:1px solid #181A1E;background-color:#252429}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#3D3C41}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#252429!important}#side .actions,#side .promo{border:1px solid #181A1E}#side div.section-header h3{border-bottom:1px solid #181A1E}#side hr{background:#181A1E;color:#181A1E}ul.sidebar-menu li.loading a{background:#3D3C41 url(img/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(img/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(img/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1257465343/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #181A1E}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #181A1E!important}nav:hover{box-shadow:0 0 10px #2FC2EF;-webkit-box-shadow:0 0 10px #2FC2EF}
\ No newline at end of file
index 857b858..9a55648 100644 (file)
@@ -1,2 +1,2 @@
 /*theme 19 from twitter.com*/\r
-body{background:#FFF04D url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/themes/theme19/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}.unconfirmed-email-banner{border-bottom:solid 1px #fff8ad;}#side_base{border-left:1px solid #fff8ad;background-color:#f6ffd1;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#f6ffd1!important;}#side .actions,#side .promo{border:1px solid #fff8ad;}#side div.section-header h3{border-bottom:1px solid #fff8ad;}#side p.sidebar-location{border-bottom:1px dotted #fff8ad;}#side hr{background:#fff8ad;color:#fff8ad;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #fff8ad;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #fff8ad!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#09C;}
\ No newline at end of file
+body{background:#FFF04D url(http://s3.amazonaws.com/twitter_production/images/themes/theme19/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}.unconfirmed-email-banner{border-bottom:solid 1px #fff8ad}#side_base{border-left:1px solid #fff8ad;background-color:#f6ffd1}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#f6ffd1!important}#side .actions,#side .promo{border:1px solid #fff8ad}#side div.section-header h3{border-bottom:1px solid #fff8ad}#side p.sidebar-location{border-bottom:1px dotted #fff8ad}#side hr{background:#fff8ad;color:#fff8ad}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #fff8ad}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #fff8ad!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#09C}nav:hover{box-shadow:0 0 10px #09C;-webkit-box-shadow:0 0 10px #09C}
\ No newline at end of file
index 7cc95e6..415de96 100644 (file)
@@ -1,2 +1,2 @@
 /*theme 20 #red from twitter.com*/\r
-body{background:#BF1238 url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/themes/theme20/bg.png) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}.unconfirmed-email-banner{border-bottom:solid 1px #FFF;}#side_base{border-left:1px solid #FFF;background-color:#EFEFEF;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#EFEFEF!important;}#side .actions,#side .promo{border:1px solid #FFF;}#side div.section-header h3{border-bottom:1px solid #FFF;}#side p.sidebar-location{border-bottom:1px dotted #FFF;}#side hr{background:#FFF;color:#FFF;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #FFF;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #FFF!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#BF1238;}
\ No newline at end of file
+body{background:#BF1238 url(http://s3.amazonaws.com/twitter_production/images/themes/theme20/bg.png) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}.unconfirmed-email-banner{border-bottom:solid 1px #FFF}#side_base{border-left:1px solid #FFF;background-color:#EFEFEF}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#EFEFEF!important}#side .actions,#side .promo{border:1px solid #FFF}#side div.section-header h3{border-bottom:1px solid #FFF}#side p.sidebar-location{border-bottom:1px dotted #FFF}#side hr{background:#FFF;color:#FFF}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #FFF}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #FFF!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#BF1238}nav:hover{box-shadow:0 0 10px #BF1238;-webkit-box-shadow:0 0 10px #BF1238}
\ No newline at end of file
index 9aab7f2..9b2c3f5 100644 (file)
@@ -1,2 +1,2 @@
 /*Storm theme by disinfeqt*/\r
-body{background:#969696 url(../themes/img/01602_sandringhambeach_1440x900.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#424242;}.unconfirmed-email-banner{border-bottom:solid 1px #A6A6A6;}#side_base{border-left:1px solid #A6A6A6;background-color:#E2E2E2;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#E2E2E2!important;}#side .actions,#side .promo{border:1px solid #A6A6A6;}#side div.section-header h3{border-bottom:1px solid #A6A6A6;}#side p.sidebar-location{border-bottom:1px dotted #A6A6A6;}#side hr{background:#A6A6A6;color:#A6A6A6;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #A6A6A6;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #A6A6A6!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#690200;}
\ No newline at end of file
+body{background:#969696 url(../themes/img/01602_sandringhambeach_1440x900.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#424242}.unconfirmed-email-banner{border-bottom:solid 1px #A6A6A6}#side_base{border-left:1px solid #A6A6A6;background-color:#E2E2E2}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#E2E2E2!important}#side .actions,#side .promo{border:1px solid #A6A6A6}#side div.section-header h3{border-bottom:1px solid #A6A6A6}#side p.sidebar-location{border-bottom:1px dotted #A6A6A6}#side hr{background:#A6A6A6;color:#A6A6A6}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #A6A6A6}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #A6A6A6!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#690200}nav:hover{box-shadow:0 0 10px #690200;-webkit-box-shadow:0 0 10px #690200}
\ No newline at end of file
index 80c6539..10daffc 100644 (file)
@@ -1,2 +1,2 @@
 /*City theme by disinfeqt*/\r
-body{background-size: 100% 100%;background:#969696 url(../themes/img/01500_iceonthelake_1440x900.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#3B3B3B;}.unconfirmed-email-banner{border-bottom:solid 1px #BFFEFF;}#side_base{border-left:1px solid #BFFEFF;background-color:#EDEDED;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#EDEDED!important;}#side .actions,#side .promo{border:1px solid #BFFEFF;}#side div.section-header h3{border-bottom:1px solid #BFFEFF;}#side p.sidebar-location{border-bottom:1px dotted #BFFEFF;}#side hr{background:#BFFEFF;color:#BFFEFF;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #BFFEFF;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #BFFEFF!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#009294;}
\ No newline at end of file
+body{background-size: 100% 100%;background:#969696 url(../themes/img/01500_iceonthelake_1440x900.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#3B3B3B}.unconfirmed-email-banner{border-bottom:solid 1px #BFFEFF}#side_base{border-left:1px solid #BFFEFF;background-color:#EDEDED}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#EDEDED!important}#side .actions,#side .promo{border:1px solid #BFFEFF}#side div.section-header h3{border-bottom:1px solid #BFFEFF}#side p.sidebar-location{border-bottom:1px dotted #BFFEFF}#side hr{background:#BFFEFF;color:#BFFEFF}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #BFFEFF}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #BFFEFF!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#009294}nav:hover{box-shadow:0 0 10px #009294;-webkit-box-shadow:0 0 10px #009294}
\ No newline at end of file
index 8ca3e7c..9dbea60 100644 (file)
@@ -1,3 +1,3 @@
 /*Cosmos Theme by disinfeqt\r
 Image (c) Apple Inc*/\r
-body{background:#000 url(../themes/img/cosmos.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#636363;}.unconfirmed-email-banner{border-bottom:solid 1px #DEDEDE;}#side_base{border-left:1px solid #DEDEDE;background-color:#2B2B2B;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#2B2B2B!important;}#side .actions,#side .promo{border:1px solid #DEDEDE;}#side div.section-header h3{border-bottom:1px solid #DEDEDE;}#side p.sidebar-location{border-bottom:1px dotted #DEDEDE;}#side hr{background:#DEDEDE;color:#DEDEDE;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #DEDEDE;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #DEDEDE!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#006A87;}
\ No newline at end of file
+body{background:#000 url(http://static.colourlovers.com/images/themeleon/twitter/themes/0/0/17-bg.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#636363}.unconfirmed-email-banner{border-bottom:solid 1px #DEDEDE}#side_base{border-left:1px solid #DEDEDE;background-color:#2B2B2B}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#2B2B2B!important}#side .actions,#side .promo{border:1px solid #DEDEDE}#side div.section-header h3{border-bottom:1px solid #DEDEDE}#side p.sidebar-location{border-bottom:1px dotted #DEDEDE}#side hr{background:#DEDEDE;color:#DEDEDE}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #DEDEDE}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #DEDEDE!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#006A87}nav:hover{box-shadow:0 0 10px #006A87;-webkit-box-shadow:0 0 10px #006A87}
\ No newline at end of file
index 78a69fc..b53fad7 100644 (file)
@@ -1,4 +1,5 @@
 /*Pride (Rainbow) Theme by disinfeqt\r
 Loving you ain't my fault, is it? */\r
-body{background:#000 url(../themes/img/rainbow.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#525252;}.unconfirmed-email-banner{border-bottom:solid 1px #333;}#side_base{border-left:1px solid #333;background-color:#000;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#000!important;}#side .actions,#side .promo{border:1px solid #333;}#side div.section-header h3{border-bottom:1px solid #333;}#side p.sidebar-location{border-bottom:1px dotted #333;}#side hr{background:#333;color:#333;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #333;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #333!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#4F4F4F;}\r
-#sideid {background:url("../themes/img/pride_flag.png") no-repeat scroll 165px 4px transparent;}
\ No newline at end of file
+body{background:#000 url(../themes/img/rainbow.jpg) fixed no-repeat;background-position:center center;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#525252}.unconfirmed-email-banner{border-bottom:solid 1px #333}#side_base{border-left:1px solid #333;background-color:#000}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#000!important}#side .actions,#side .promo{border:1px solid #333}#side div.section-header h3{border-bottom:1px solid #333}#side p.sidebar-location{border-bottom:1px dotted #333}#side hr{background:#333;color:#333}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #333}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #333!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#4F4F4F}\r
+#side_name{background:url("../themes/img/pride_flag.png") no-repeat scroll 165px 4px transparent}\r
+nav:hover{box-shadow:0 0 10px #4F4F4F;-webkit-box-shadow:0 0 10px #4F4F4F}
\ No newline at end of file
index 58246e4..762f618 100644 (file)
@@ -1,2 +1,2 @@
 /*Drop Bombs by disinfeqt*/\r
-body{background:#1F1F1F url(../themes/img/drop_bombs.png) fixed no-repeat;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#75715E;}.unconfirmed-email-banner{border-bottom:solid 1px #000;}#side_base{border-left:1px solid #000;background-color:#1F1F1F;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#373737;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#1F1F1F!important;}#side .actions,#side .promo,#design .side-section{border:1px solid #000;}#side div.section-header h3{border-bottom:1px solid #000;}#side p.sidebar-location{border-bottom:1px dotted #000;}#side hr{background:#000;color:#000;}ul.sidebar-menu li.loading a{background:#373737 url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #000;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #000!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,.tweet-label a:hover{color:#858585;}
\ No newline at end of file
+body{background:#1F1F1F url(../themes/img/drop_bombs.png) fixed no-repeat}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#75715E}.unconfirmed-email-banner{border-bottom:solid 1px #000}#side_base{border-left:1px solid #000;background-color:#1F1F1F}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#373737}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#1F1F1F!important}#side .actions,#side .promo,#design .side-section{border:1px solid #000}#side div.section-header h3{border-bottom:1px solid #000}#side p.sidebar-location{border-bottom:1px dotted #000}#side hr{background:#000;color:#000}ul.sidebar-menu li.loading a{background:#373737 url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1267486213/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #000}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #000!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,.tweet-label a:hover,#side_name{color:#858585}nav:hover{box-shadow:0 0 10px #858585;-webkit-box-shadow:0 0 10px #858585}}
\ No newline at end of file
index e15e966..33dc1bf 100644 (file)
@@ -1,2 +1,2 @@
 /*disinfeqt's Monokai Python Style*/\r
-body{background:#272822 url(../themes/img/bg.py.png) fixed no-repeat top left;}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#66D8EF;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#75715E;}#side_base{border-left:1px solid #F92673;background-color:#272822;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#3F403A;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#272822!important;}#side .actions,#side .promo{border:1px solid #F92673;}#side div.section-header h3{border-bottom:1px solid #F92673;}#side hr{background:#F92673;color:#F92673;}ul.sidebar-menu li.loading a{background:#3F403A url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #F92673;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #F92673!important;}
\ No newline at end of file
+body{background:#272822 url(../themes/img/bg.py.png) fixed no-repeat top left}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#66D8EF}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#75715E}#side_base{border-left:1px solid #F92673;background-color:#272822}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#3F403A}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#272822!important}#side .actions,#side .promo{border:1px solid #F92673}#side div.section-header h3{border-bottom:1px solid #F92673}#side hr{background:#F92673;color:#F92673}ul.sidebar-menu li.loading a{background:#3F403A url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #F92673}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #F92673!important}nav:hover{box-shadow:0 0 10px #66D8EF;-webkit-box-shadow:0 0 10px #66D8EF}
\ No newline at end of file
index d0c6b10..fb3308c 100644 (file)
@@ -1,3 +1,3 @@
 /*Twitter Classic*/\r
-body{background:#9AE4E8 url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/themes/theme16/bg.gif) fixed no-repeat top left;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu li.active a,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}#side_base{border-left:1px solid #BDDCAD;background-color:#DFC;}ul.sidebar-menu li.active a,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#EDFFDC;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#DFC!important;}#side .actions,#side .promo{border:1px solid #BDDCAD;}#side div.section-header h3{border-bottom:1px solid #BDDCAD;}#side hr{background:#BDDCAD;color:#BDDCAD;}ul.sidebar-menu li.loading a{background:#EDFFDC url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #BDDCAD;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #BDDCAD!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#0084B4;}\r
+body{background:#9AE4E8 url(http://s3.amazonaws.com/twitter_production/images/themes/theme16/bg.gif) fixed no-repeat top left}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu li.active a,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}#side_base{border-left:1px solid #BDDCAD;background-color:#DFC}ul.sidebar-menu li.active a,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#EDFFDC}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#DFC!important}#side .actions,#side .promo{border:1px solid #BDDCAD}#side div.section-header h3{border-bottom:1px solid #BDDCAD}#side hr{background:#BDDCAD;color:#BDDCAD}ul.sidebar-menu li.loading a{background:#EDFFDC url(img/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(img/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(img/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #BDDCAD}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #BDDCAD!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#0084B4}nav:hover{box-shadow:0 0 10px #0084B4;-webkit-box-shadow:0 0 10px #0084B4}\r
 /*Do you miss old times? XD*/
\ No newline at end of file
index 99748de..0a60aea 100644 (file)
@@ -1,2 +1,2 @@
 /*Pink*/\r
-body{background:#F69 url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/themes/theme11/bg.gif) fixed repeat top left;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#362720;}#side_base{border-left:1px solid #C36;background-color:#E5507E;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#FD6896;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#E5507E!important;}#side .actions,#side .promo{border:1px solid #C36;}#side div.section-header h3{border-bottom:1px solid #C36;}#side hr{background:#C36;color:#C36;}ul.sidebar-menu li.loading a{background:#FD6896 url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #C36;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #C36!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#B40B43;}
\ No newline at end of file
+body{background:#F69 url(http://s3.amazonaws.com/twitter_production/images/themes/theme11/bg.gif) fixed repeat top left}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#362720}#side_base{border-left:1px solid #C36;background-color:#E5507E}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#FD6896}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#E5507E!important}#side .actions,#side .promo{border:1px solid #C36}#side div.section-header h3{border-bottom:1px solid #C36}#side hr{background:#C36;color:#C36}ul.sidebar-menu li.loading a{background:#FD6896 url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #C36}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #C36!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#B40B43}nav:hover{box-shadow:0 0 10px #B40B43;-webkit-box-shadow:0 0 10px #B40B43}
\ No newline at end of file
index eb9ed52..a5251b6 100644 (file)
@@ -1,2 +1,2 @@
 /*by @lgsoltek*/\r
-body{background:#F7AD71}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#873800;}#side_base{border-left:1px solid #D4A72A;background-color:#D4A386;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#E8B79A;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#D4A386!important;}#side .actions,#side .promo{border:1px solid #D4A72A;}#side div.section-header h3{border-bottom:1px solid #D4A72A;}#side hr{background:#D4A72A;color:#D4A72A;}ul.sidebar-menu li.loading a{background:#E8B79A url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #D4A72A;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #D4A72A!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#D94100;}
\ No newline at end of file
+body{background:#F7AD71}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#873800}#side_base{border-left:1px solid #D4A72A;background-color:#D4A386}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#E8B79A}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#D4A386!important}#side .actions,#side .promo{border:1px solid #D4A72A}#side div.section-header h3{border-bottom:1px solid #D4A72A}#side hr{background:#D4A72A;color:#D4A72A}ul.sidebar-menu li.loading a{background:#E8B79A url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1258070043/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #D4A72A}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #D4A72A!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#D94100}nav:hover{box-shadow:0 0 10px #D94100;-webkit-box-shadow:0 0 10px #D94100}
\ No newline at end of file
index c3fbca2..dd002b6 100644 (file)
@@ -1,2 +1,2 @@
 /*by @lgsoltek*/\r
-body{background:#292945;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#6F7194;}#side_base{border-left:1px solid #F9E6FC;background-color:#0E0F21;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#262739;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#0E0F21!important;}#side .actions,#side .promo{border:1px solid #F9E6FC;}#side div.section-header h3{border-bottom:1px solid #F9E6FC;}#side p.sidebar-location{border-bottom:1px dotted #F9E6FC;}#side hr{background:#F9E6FC;color:#F9E6FC;}ul.sidebar-menu li.loading a{background:#262739 url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/toggle_up_light.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/toggle_down_light.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/arrow_right_light.png) no-repeat left top;}#side span.pipe{border-left:1px solid #F9E6FC;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #F9E6FC!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#6B5B78;}
\ No newline at end of file
+body{background:#292945;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#6F7194}#side_base{border-left:1px solid #F9E6FC;background-color:#0E0F21}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#262739}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#0E0F21!important}#side .actions,#side .promo{border:1px solid #F9E6FC}#side div.section-header h3{border-bottom:1px solid #F9E6FC}#side p.sidebar-location{border-bottom:1px dotted #F9E6FC}#side hr{background:#F9E6FC;color:#F9E6FC}ul.sidebar-menu li.loading a{background:#262739 url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/toggle_up_light.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/toggle_down_light.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1260817727/images/arrow_right_light.png) no-repeat left top}#side span.pipe{border-left:1px solid #F9E6FC}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #F9E6FC!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#6B5B78}nav:hover{box-shadow:0 0 10px #6B5B78;-webkit-box-shadow:0 0 10px #6B5B78}
\ No newline at end of file
index 0dc1f1c..0741332 100644 (file)
@@ -1,2 +1,2 @@
 /*theme 13 from twitter.com*/\r
-body{background:#B2DFDA url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/themes/theme13/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}.unconfirmed-email-banner{border-bottom:solid 1px #eee;}#side_base{border-left:1px solid #eee;background-color:#fff;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#fff!important;}#side .actions,#side .promo{border:1px solid #eee;}#side div.section-header h3{border-bottom:1px solid #eee;}#side p.sidebar-location{border-bottom:1px dotted #eee;}#side hr{background:#eee;color:#eee;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #eee;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #eee!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#93A644;}
\ No newline at end of file
+body{background:#B2DFDA url(http://s3.amazonaws.com/twitter_production/images/themes/theme13/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}.unconfirmed-email-banner{border-bottom:solid 1px #eee}#side_base{border-left:1px solid #eee;background-color:#fff}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#fff!important}#side .actions,#side .promo{border:1px solid #eee}#side div.section-header h3{border-bottom:1px solid #eee}#side p.sidebar-location{border-bottom:1px dotted #eee}#side hr{background:#eee;color:#eee}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #eee}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #eee!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#93A644}nav:hover{box-shadow:0 0 10px #93A644;-webkit-box-shadow:0 0 10px #93A644}
\ No newline at end of file
index aade2fd..a256f31 100644 (file)
@@ -1,2 +1,2 @@
 /*theme 15 from twitter.com*/\r
-body{background:#022330 url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/themes/theme15/bg.png) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}.unconfirmed-email-banner{border-bottom:solid 1px #a8c7f7;}#side_base{border-left:1px solid #a8c7f7;background-color:#C0DFEC;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#C0DFEC!important;}#side .actions,#side .promo{border:1px solid #a8c7f7;}#side div.section-header h3{border-bottom:1px solid #a8c7f7;}#side p.sidebar-location{border-bottom:1px dotted #a8c7f7;}#side hr{background:#a8c7f7;color:#a8c7f7;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #a8c7f7;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #a8c7f7!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#0084B4;}
\ No newline at end of file
+body{background:#022330 url(http://s3.amazonaws.com/twitter_production/images/themes/theme15/bg.png) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}.unconfirmed-email-banner{border-bottom:solid 1px #a8c7f7}#side_base{border-left:1px solid #a8c7f7;background-color:#C0DFEC}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#C0DFEC!important}#side .actions,#side .promo{border:1px solid #a8c7f7}#side div.section-header h3{border-bottom:1px solid #a8c7f7}#side p.sidebar-location{border-bottom:1px dotted #a8c7f7}#side hr{background:#a8c7f7;color:#a8c7f7}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #a8c7f7}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #a8c7f7!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#0084B4}nav:hover{box-shadow:0 0 10px #0084B4;-webkit-box-shadow:0 0 10px #0084B4}
\ No newline at end of file
index c2f6ef7..46944ff 100644 (file)
@@ -1,2 +1,2 @@
 /*theme 18 from twitter.com*/\r
-body{background:#ACDED6 url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/themes/theme18/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333;}.unconfirmed-email-banner{border-bottom:solid 1px #EEE;}#side_base{border-left:1px solid #EEE;background-color:#F6F6F6;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#F6F6F6!important;}#side .actions,#side .promo{border:1px solid #EEE;}#side div.section-header h3{border-bottom:1px solid #EEE;}#side p.sidebar-location{border-bottom:1px dotted #EEE;}#side hr{background:#EEE;color:#EEE;}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important;}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important;}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important;}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top;}#side span.pipe{border-left:1px solid #EEE;}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0;}a.edit-list{border-right:1px solid #EEE!important;}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug{color:#038543;}
\ No newline at end of file
+body{background:#ACDED6 url(http://s3.amazonaws.com/twitter_production/images/themes/theme18/bg.gif) fixed no-repeat;background-position:0 0;padding-top:0!important;_padding-top:10px!important}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#333}.unconfirmed-email-banner{border-bottom:solid 1px #EEE}#side_base{border-left:1px solid #EEE;background-color:#F6F6F6}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:transparent}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover,.list-header-inner{background-color:#F6F6F6!important}#side .actions,#side .promo{border:1px solid #EEE}#side div.section-header h3{border-bottom:1px solid #EEE}#side p.sidebar-location{border-bottom:1px dotted #EEE}#side hr{background:#EEE;color:#EEE}ul.sidebar-menu li.loading a{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/spinner.gif) no-repeat 171px .5em!important}#side .collapsible h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_up_dark.png) no-repeat center right!important}#side .collapsible.collapsed h2.sidebar-title{background:transparent url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/toggle_down_dark.png) no-repeat center right!important}#side ul.lists-links li a em{background:url(https://s3.amazonaws.com/twitter_production/a/1265242857/images/arrow_right_dark.png) no-repeat left top}#side span.pipe{border-left:1px solid #EEE}#list_subscriptions span.view-all,#list_memberships span.view-all,#profile span.view-all,#profile_favorites span.view-all,#following span.view-all,#followers span.view-all{border-left:0}a.edit-list{border-right:1px solid #EEE!important}body#show #content .meta a.screen-name,#content .shared-content .screen-name,#content .meta .byline a,a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#local_trend_locations li a,.modal-content .list-slug,#side_name{color:#038543}nav:hover{box-shadow:0 0 10px #038543;-webkit-box-shadow:0 0 10px #038543}
\ No newline at end of file
index f6d0ce4..7834a04 100644 (file)
@@ -1,2 +1,2 @@
 /*Minimal Theme Inspired by @Ratoo*/\r
-body{background:#FFF}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover{color:#000;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#606060;}#side_base{border-left:1px solid gray;background-color:#FFF;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#F7F7F7;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#FFF!important;}#side .actions,#side .promo{border:1px solid gray;}#side div.section-header h3{border-bottom:1px solid gray;}#side hr{background:gray;color:gray;}
\ No newline at end of file
+body{background:#FFF}a,#content tr.hentry:hover a,body#profile #content div.hentry:hover a,#side .stats a:hover span.stats_count,#side div.user_icon a:hover,li.verified-profile a:hover,#side .promotion .definition strong,p.list-numbers a:hover,#side div.user_icon a:hover span,#content .tabMenu li a,.translator-profile a:hover,#side_name{color:#000;}body,ul#tabMenu li a,#side .section h1,#side .stat a,#side .stats a span.stats_count,#side div.section-header h1,#side div.user_icon a,#side div.user_icon a:hover,#side div.section-header h3.faq-header,ul.sidebar-menu a.active,li.verified-profile a,#side .promotion a,body #content .list-header h2,p.list-numbers a,.bar h3 label,body.timeline #content h1,.list-header h2 a span,#content .tabMenu li.active a,body#direct_messages #content .tabMenu #inbox_tab a,body#inbox #content .tabMenu #inbox_tab a,body#sent #content .tabMenu #sent_tab a,body#direct_messages #content .tabMenu #inbox_tab a,body#retweets_by_others #content .tabMenu #retweets_by_others_tab a,body#retweets #content .tabMenu #retweets_tab a,body#retweeted_by_others #content .tabMenu #retweeted_by_others_tab a,body#retweeted_of_mine #content .tabMenu #retweeted_of_mine_tab a,.translator-profile a,#owners_lists h2 a{color:#606060;}#side_base{border-left:1px solid gray;background-color:#FFF;}ul.sidebar-menu a.active,ul.sidebar-menu li a:hover,#side div#custom_search.active,#side .promotion,.notify div{background-color:#F7F7F7;}.list-header,.list-controls,ul.sidebar-list li.active a,ul.sidebar-list li a:hover{background-color:#FFF!important;}#side .actions,#side .promo{border:1px solid gray;}#side div.section-header h3{border-bottom:1px solid gray;}#side hr{background:gray;color:gray;}nav:hover{box-shadow:0 0 1px gray;-webkit-box-shadow:0 0 1px gray}
\ No newline at end of file
index 002d64d..3e9b6cb 100644 (file)
--- a/user.php
+++ b/user.php
-<?php \r
-       include ('lib/twitese.php');\r
-       $title = "{$_GET['id']}";\r
-       include ('inc/header.php');\r
-\r
-?>\r
-\r
-<script type="text/javascript" src="js/user.js?ver=2010031301"></script>\r
-\r
-<div id="statuses" class="column round-left">\r
-<?php \r
-       if (!loginStatus() || !isset($_GET['id'])) {\r
-               header('location: error.php');\r
-       }\r
-\r
-       $p = 1;\r
-       if (isset($_GET['p'])) {\r
-               $p = (int) $_GET['p'];\r
-               if ($p <= 0) $p = 1;\r
-       }\r
-\r
-       $t = getTwitter();\r
-       $userid = $_GET['id'];\r
-       $statuses = $t->userTimeline($p, $userid);\r
-\r
-       if ($statuses === false) {\r
-               header('location: error.php');\r
-       }\r
-       $isProtected = $statuses == 'protected';\r
-       $isFriend = $t->isFriend($t->username, $userid);\r
-       $isFollower = $t->isFriend($userid, $t->username);\r
-       $block_error = $t->isBlocked($userid)->error;\r
-       $isBlocked = !$block_error;\r
-\r
-       if (!$isProtected) {\r
-               $userinfo = array();\r
-               $userinfo['name'] = $statuses[0]->user->name;\r
-               $userinfo['screen_name'] = $statuses[0]->user->screen_name;\r
-               $userinfo['friends_count'] = $statuses[0]->user->friends_count;\r
-               $userinfo['statuses_count'] = $statuses[0]->user->statuses_count;\r
-               $userinfo['followers_count'] = $statuses[0]->user->followers_count;\r
-               $userinfo['url'] = $statuses[0]->user->url;\r
-               $userinfo['description'] = $statuses[0]->user->description;\r
-               $userinfo['location'] = $statuses[0]->user->location;\r
-               $userinfo['protected'] = $statuses[0]->user->url;\r
-               $userinfo['id'] = $statuses[0]->user->id;\r
-               $userinfo['image_url'] = getAvatar($statuses[0]->user->profile_image_url);\r
-\r
-\r
-?>\r
-       <div id="info_head" class="round">\r
-               <a href="https://twitter.com/<?php echo $userid ?>"><img id="info_headimg" src="<?php echo $userinfo['image_url'] ?>" /></a>\r
-               <div id="info_name"><?php echo $userid ?></div>\r
-               <?php if ($t->isFriend($userid, $t->username)) {?>\r
-               <span style="position: absolute; margin-left: 8px; font-size: 11px; margin-top: 10px;"><img style="margin: 0pt 5px 3px 0pt; vertical-align: middle;" src="img/yes.gif" alt="" class="icon"/><span>Following me</span></span>\r
-<?php \r
-               }\r
-               if($userid != $t->username){\r
-?>\r
-               <div id="info_relation">\r
-               <?php if ($isFriend) {?>\r
-                       <a id="info_block_btn" class="btn btn-red" href="a_relation.php?action=destory&id=<?php echo $userid ?>">Unfollow</a>\r
-               <?php } else { ?>\r
-                       <a id="info_follow_btn" class="btn btn-green" href="a_relation.php?action=create&id=<?php echo $userid ?>">Follow</a>\r
-               <?php } ?>\r
-               <?php if ($isFollowerr) {?>\r
-                       <a class="btn" id="info_send_btn" href="message.php?id=<?php echo $userid ?>">Send DM</a>\r
-               <?php } ?>\r
-<?php if($isBlocked){ ?>\r
-               <a class='btn' id='unblock_btn' href='javascript:void(0)'>Unblock</a>\r
-<?php }else{ ?>\r
-               <a class='btn' id='block_btn' href='javascript:void(0)'>Block</a>\r
-<?php } ?>\r
-                       <a class="btn" id="info_reply_btn" href="javascript:void(0)">Reply</a>\r
-                       <a class="btn" id="info_hide_btn" href="javascript:void(0)">Hide @</a>\r
-                       <a class="btn btn-mint" id="nexus_btn" href="nexus.php?target=<?php echo $userid ?>&source=<?php echo getEncryptCookie('twitese_name')?>">Nexus</a>\r
-               </div>\r
-<?php } ?>\r
-       </div>\r
-       <div class="clear"></div>\r
-<?php \r
-\r
-               $empty = count($statuses) == 0? true: false;\r
-               if ($empty) {\r
-                       echo "<div id=\"empty\">No tweet to display.</div>";\r
-               } else {\r
-                       $output = '<ol class="timeline" id="allTimeline">';\r
-\r
-                       foreach ($statuses as $status) {\r
-                               $user = $status->user;\r
-                               $date = formatDate($status->created_at);\r
-                               $text = formatText($status->text);\r
-\r
-                               $output .= "\r
-                                       <li>\r
-                                       <span class=\"info_status_body\">\r
-                                       <span class=\"status_id\">$status->id</span>\r
-                                       <span class=\"status_word\"><span class=\"tweet\"> $text </span></span>";\r
-                               if ($shorturl = unshortUrl($text)) $output .= "<span class=\"unshorturl\"><p>URL</p><a href=\"$shorturl\" target=\"_blank\" rel=\"noreferrer\">$shorturl</a></span>";\r
-                               $output .= "<span class=\"actions\">\r
-                                       <a class=\"replie_btn\" href=\"a_reply.php?id=$status->id\">Reply</a>\r
-                                       <a class=\"rt_btn\" href=\"a_rt.php?id=$status->id\">Retweet</a>\r
-                                       <a class=\"retw_btn\" title=\"New Retweet\" href=\"javascript:void(0);\">New Retweet</a>\r
-                                       <a class=\"favor_btn\" href=\"a_favor.php?id=$status->id\">Favorite</a>\r
-                                       <a class=\"trans_btn\" title=\"Translate\" href=\"javascript:void(0);\">Translate</a>\r
-                                       </span><span class=\"status_info\">\r
-                                       ";\r
-                               if ($status->in_reply_to_status_id) $output .= "<span class=\"in_reply_to\"> <a class=\"ajax_reply\" href=\"ajax/status.php?id=$status->in_reply_to_status_id&uid=$user->id \">in reply to $status->in_reply_to_screen_name</a></span>";\r
-\r
-                               $output .= "    \r
-                                       <span class=\"source\">from $status->source</span><span class=\"date\"><a href=\"/status.php?id=$status->id\">$date</a></span></span>\r
-                                       </span>\r
-                                       </li>\r
-                                       ";\r
-                       }\r
-\r
-                       $output .= "</ol><div id=\"pagination\">";\r
-\r
-                       if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"user.php?id=$userid&p=" . ($p-1) . "\">Back</a>";\r
-                       if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"user.php?id=$userid&p=" . ($p+1) . "\">Next</a>";\r
-\r
-\r
-                       $output .= "</div>";\r
-\r
-                       echo $output;\r
-               }\r
-       }//end of if(!$isProtected)\r
-       else {\r
-?>\r
-               <div id="info_head" class="round">\r
-                       <div id="info_name"><?php echo $userid ?></div>\r
-                       <div id="info_relation">\r
-                       <?php if ($isFriend) {?>\r
-                               <a id="info_block_btn" class="btn_hover" href="a_relation.php?action=destory&id=<?php echo $userid ?>">Unfollow</a>\r
-                       <?php } else { ?>\r
-                               <a id="info_follow_btn" class="btn" href="a_relation.php?action=create&id=<?php echo $userid ?>">Follow</a>\r
-                       <?php } ?>\r
-                       <?php if ($isFollower) {?>\r
-                               <a class="btn" id="info_send_btn" href="message.php?id=<?php echo $userid ?>">Send DM</a>\r
-                       <?php } ?>\r
-<?php if($isBlocked){ ?>\r
-               <a class='btn_hover' id='unblock_btn' href='javascript:void(0)'>Unblock</a>\r
-<?php }else{ ?>\r
-               <a class='btn' id='block_btn' href='javascript:void(0)'>Block</a>\r
-<?php } ?>\r
-                               <a class="btn" id="info_reply_btn" href="javascript:void(0)">Reply</a>\r
-                               <a class="btn" id="info_hide_btn" href="javascript:void(0)">Hide @</a>\r
-                       </div>\r
-               </div>\r
-               <div class="clear"></div>\r
-               <div id="empty">This user has been protected. You ought to follow before viewing this page.</div>\r
-<?php \r
-       }\r
-?>\r
-</div>\r
-\r
-<?php if (!$isProtected) {?>\r
-<td class="column round-right" id="side_base">\r
-<table>\r
-<tr>\r
-<td>\r
-<div id="side" class="round-right">\r
-       <ul id="user_info">\r
-               <li><span>Name</span> <?php echo $userinfo['name']?></li>\r
-               <?php if ($userinfo['location']) echo '<li><span>Location</span> ' . $userinfo['location'] . '</li>'; ?>\r
-               <?php if (($userinfo['url']) and (strlen($userinfo['url'])>20)) echo '<li><span>Web</span> <a href="' .$userinfo['url']. '" target="_blank">' .substr($userinfo['url'], 0, 20). '...</a></li>'; else if (($userinfo['url']) and (strlen($userinfo['url'])<=20)) echo '<li><span>Web</span> <a href="' .$userinfo['url']. '" target="_blank">' .$userinfo['url']. '</a></li>';?>\r
-               <?php  if ($userinfo['description']) echo "<li><span>Bio</span> " . $userinfo['description'] . "</li>"; ?>\r
-       </ul>\r
-       <ul id="user_stats" style="margin:0 0 10px;">\r
-               <li>\r
-                       <a href="friends.php?id=<?php echo $userid ?>">\r
-                               <span class="count"><?php echo $userinfo['friends_count'] ?></span>\r
-                               <span class="label">Following</span>\r
-                       </a>\r
-               </li>\r
-               <li>\r
-                       <a href="followers.php?id=<?php echo $userid ?>">\r
-                               <span class="count"><?php echo $userinfo['followers_count'] ?></span>\r
-                               <span class="label">Followers</span>\r
-                       </a>\r
-               </li>\r
-               <li>\r
-                       <a href="user.php?id=<?php echo $userid ?>">\r
-                               <span class="count"><?php echo $userinfo['statuses_count'] ?></span>\r
-                               <span class="label">Tweets</span>\r
-                       </a>\r
-               </li>\r
-       </ul>\r
-       <div class="clear"></div>\r
-       <ul id="primary_nav" class="sidebar-menu">\r
-       <li id="tweets_tab"><a class="in-page-link" href="user.php?id=<?php echo $userid ?>"><span>Tweets</span></a></li>\r
-       <li id="lists_tab"><a class="in-page-link" href="lists.php?id=<?php echo $userid ?>"><span>Lists</span></a></li>\r
-       </ul>\r
-       <div class="clear"></div>\r
-       <?php include ('inc/sidepost.php') ?>\r
-</div>\r
-</td>\r
-</tr>\r
-</table>\r
-<?php } else { \r
-               include ('inc/sidebar.php');\r
-}\r
-?>\r
-\r
-<?php \r
-       include ('inc/footer.php');\r
-?>\r
+<?php 
+       include ('lib/twitese.php');
+       $title = "{$_GET['id']}";
+       include ('inc/header.php');
+       include ('lib/timeline_format.php');
+
+?>
+
+<script src="js/user.js"></script>
+
+<div id="statuses" class="column round-left">
+<?php 
+       if (!loginStatus() || !isset($_GET['id'])) {
+               header('location: error.php');exit();
+       }
+
+       $p = 1;
+       if (isset($_GET['p'])) {
+               $p = (int) $_GET['p'];
+               if ($p <= 0) $p = 1;
+       }
+
+       $t = getTwitter();
+       $userid = $_GET['id'];
+       if (isset($_GET['fav'])) {
+               $statuses = $t->getFavorites($p, $userid);
+       } else {
+               $statuses = $t->userTimeline($p, $userid);
+       }
+       
+       if ($statuses === false) {
+               header('location: error.php');exit;
+       }
+       $user = $t->showUser($userid);
+       if (strcasecmp($userid,$t->username) == 0) {header('location: profile.php');exit();}
+
+       $isProtected = ($statuses == 'protected') || ($statuses->error == 'Not authorized');
+       $r = getRelationship($user->screen_name);
+       $isFriend = $r == 2 || $r == 1;
+       $isFollower = $r == 3 || $r == 1;
+       $isBlocked = $r == 4;
+
+       if (!$isProtected) {
+
+               $userinfo = array();
+               $userinfo['name'] = $user->name;
+               $userinfo['screen_name'] = $user->screen_name;
+               $userinfo['friends_count'] = $user->friends_count;
+               $userinfo['statuses_count'] = $user->statuses_count;
+               $userinfo['followers_count'] = $user->followers_count;
+               $userinfo['url'] = $user->url;
+               $userinfo['description'] = formatText($user->description);
+               $userinfo['location'] = $user->location;
+               $userinfo['date_joined'] = date('Y-m-d', format_time($user->created_at)); //from dabr
+               $userinfo['protected'] = $user->url;
+               $userinfo['id'] = $user->id;
+               $userinfo['image_url'] = getAvatar($user->profile_image_url);
+
+?>
+       <div id="info_head" class="round">
+               <a href="https://twitter.com/<?php echo $userid ?>"><img id="info_headimg" src="<?php echo $userinfo['image_url'] ?>" /></a>
+               <div id="info_name" style="display:inline-block"><?php echo $userid ?></div>
+               <?php if ($isFollower) {?>
+               <span id="following_me" style="display:inline!important"><img style="" src="img/yes.gif" alt="" class="icon"/><span>Following me</span></span>
+<?php 
+               }
+?>
+               <div id="info_relation">
+               <?php if ($isFriend) {?>
+                       <a id="info_block_btn" class="btn btn-red" href="#">Unfollow</a>
+               <?php } else { ?>
+                       <a id="info_follow_btn" class="btn btn-green" href="#">Follow</a>
+               <?php } ?>
+               <?php if ($isFollower) {?>
+                       <a class="btn" id="info_send_btn" href="message.php?id=<?php echo $userid ?>">DM</a>
+               <?php } ?>
+<?php if($isBlocked){ ?>
+               <a class='btn' id='unblock_btn' href='#'>Unblock</a>
+<?php }else{ ?>
+               <a class='btn' id='block_btn' href='#'>Block</a>
+<?php } ?>
+                       <a class="btn" id="info_reply_btn" href="#">Reply</a>
+                       <a class="btn" id="info_hide_btn" href="#">Hide @</a>
+                       <a class="btn " id="report_btn" href="#" style="color:#a22">Report Spam</a>
+               </div>
+       </div>
+       <div class="clear"></div>
+<?php 
+               $empty = count($statuses) == 0? true: false;
+               if ($empty) {
+                       echo "<div id=\"empty\">No tweet to display.</div>";
+               } else {
+                       $output = '<ol class="timeline" id="allTimeline">';
+                       foreach ($statuses as $status) {
+                               if (isset($status->retweeted_status)) {
+                                       $output .= format_retweet($status);
+                               } else { 
+                               $output .= format_timeline($status,$t->username);
+                               }
+                       }
+                       $output .= "</ol><div id=\"pagination\">";
+                       if ($_GET['fav'] == true) {
+                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"user.php?id=$userid&fav=true&p=" . ($p-1) . "\">Back</a>";
+                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"user.php?id=$userid&fav=true&p=" . ($p+1) . "\">Next</a>";
+                       } else {
+                               if ($p >1) $output .= "<a id=\"more\" class=\"round more\" style=\"float: left;\" href=\"user.php?id=$userid&p=" . ($p-1) . "\">Back</a>";
+                               if (!$empty) $output .= "<a id=\"more\" class=\"round more\" style=\"float: right;\" href=\"user.php?id=$userid&p=" . ($p+1) . "\">Next</a>";
+                       }
+                       $output .= "</div>";
+                       echo $output;
+               }
+       }//end of if(!$isProtected)
+       else {
+?>
+               <div id="info_head" class="round">
+                       <div id="info_name"><?php echo $userid ?></div>
+                       <div id="info_relation">
+                       <?php if ($isFriend) {?>
+                               <a id="info_block_btn" class="btn_hover" href="#">Unfollow</a>
+                       <?php } else { ?>
+                               <a id="info_follow_btn" class="btn" href="#">Follow</a>
+                       <?php } ?>
+                       <?php if ($isFollower) {?>
+                               <a class="btn" id="info_send_btn" href="message.php?id=<?php echo $userid ?>">Send DM</a>
+                       <?php } ?>
+<?php if($isBlocked){ ?>
+               <a class='btn_hover' id='unblock_btn' href='#'>Unblock</a>
+<?php }else{ ?>
+               <a class='btn' id='block_btn' href='#'>Block</a>
+<?php } ?>
+                               <a class="btn" id="info_reply_btn" href="#">Reply</a>
+                               <a class="btn" id="info_hide_btn" href="#">Hide @</a>
+                       </div>
+               </div>
+               <div class="clear"></div>
+               <div id="empty">This user has been protected. You ought to follow before viewing this page.</div>
+<?php 
+       }
+?>
+</div>
+
+<?php if (!$isProtected) {?>
+<td class="column round-right" id="side_base">
+<table>
+<tr>
+<td>
+<div id="side" class="round-right">
+       <ul id="user_info">
+               <li><span>Name</span> <?php echo $userinfo['name']?></li>
+               <?php if ($userinfo['location']) echo '<li><span>Location</span> ' . $userinfo['location'] . '</li>'; ?>
+               <?php if (($userinfo['url']) and (strlen($userinfo['url'])>20)) echo '<li><span>Web</span> <a href="' .$userinfo['url']. '" target="_blank">' .substr($userinfo['url'], 0, 20). '...</a></li>'; else if (($userinfo['url']) and (strlen($userinfo['url'])<=20)) echo '<li><span>Web</span> <a href="' .$userinfo['url']. '" target="_blank">' .$userinfo['url']. '</a></li>';?>
+               <?php  if ($userinfo['description']) echo "<li><span>Bio</span> " . $userinfo['description'] . "</li>"; ?>
+               <?php  echo "<li><span>Joined at</span> " . $userinfo['date_joined'] . "</li>"; ?>
+       </ul>
+       <ul id="user_stats" style="margin:0 0 10px;">
+               <li>
+                       <a href="friends.php?id=<?php echo $userid ?>">
+                               <span class="count"><?php echo $userinfo['friends_count'] ?></span>
+                               <span class="label">Following</span>
+                       </a>
+               </li>
+               <li>
+                       <a href="followers.php?id=<?php echo $userid ?>">
+                               <span class="count"><?php echo $userinfo['followers_count'] ?></span>
+                               <span class="label">Followers</span>
+                       </a>
+               </li>
+               <li>
+                       <a href="user.php?id=<?php echo $userid ?>">
+                               <span class="count"><?php echo $userinfo['statuses_count'] ?></span>
+                               <span class="label">Tweets</span>
+                       </a>
+               </li>
+       </ul>
+       <div class="clear"></div>
+       <ul id="primary_nav" class="sidebar-menu">
+       <li id="tweets_tab"><a class="in-page-link" href="user.php?id=<?php echo $userid ?>"><span>Tweets</span></a></li>
+       <li id="@_tab"><a class="in-page-link" href="search.php?q=@<?php echo $userid ?>"><span>@<?php echo $userid ?></span></a></li>
+       <li id="favs_tab"><a class="in-page-link" href="user.php?id=<?php echo $userid ?>&fav=true"><span>Favorites</span></a></li>
+       <li id="lists_tab"><a class="in-page-link" href="lists.php?id=<?php echo $userid ?>"><span>Lists</span></a></li>
+       </ul>
+       <div class="clear"></div>
+       <?php include ('inc/sidepost.php') ?>
+</div>
+</td>
+</tr>
+</table>
+<?php } else { 
+               include ('inc/sidebar.php');
+}
+
+       include ('inc/footer.php');
+?>