From: Jiang Date: Wed, 19 Nov 2014 08:31:21 +0000 (+0800) Subject: embrj X-Git-Url: http://git.osdn.net/view?p=embrj%2Fmaster.git;a=commitdiff_plain;h=8f0dd3ab0b2af541e891e92b6a986c98dda32a26 embrj --- diff --git a/.htaccess b/.htaccess index bf2a7a6..d05ed1e 100644 --- a/.htaccess +++ b/.htaccess @@ -1,10 +1,10 @@ -RewriteEngine On -RewriteRule ^([a-zA-Z0-9_]+)$ user.php?id=$1 [L,QSA] -RewriteRule ^(\d+)$ status.php?id=$1 [L,QSA] - -ExpiresActive On -ExpiresByType image/gif A2592000 -ExpiresByType image/png A2592000 -ExpiresByType text/css A2592000 -ExpiresByType application/x-javascript A2592000 +RewriteEngine On +RewriteRule ^([a-zA-Z0-9_]+)$ user.php?id=$1 [L,QSA] +RewriteRule ^(\d+)$ status.php?id=$1 [L,QSA] + +ExpiresActive On +ExpiresByType image/gif A2592000 +ExpiresByType image/png A2592000 +ExpiresByType text/css A2592000 +ExpiresByType application/x-javascript A2592000 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7df6ef1 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +How to Install +-------- +The installation of embrj is pretty much the same with embr's, you just need to get the source, rename `config.sample.php` in `/lib` to `config.php`, edit it with your own app information and upload it to your hosting directory. + +And here are some tips you may want to know: + + * embrj requires `php-curl` and `php-bcmath` + * while not necessarily required, `php-mcrypt` is recommended + * embrj is compatible with PHP from version 5.2 to 5.5, we didn't test it on 5.1 or older versions + +Installing in sub-directory +-------- +If you need to install embrj in a sub-directory of your website, say, in `/embrj`, you'll need to adjust the `.htaccess` file with `/embrj/user.php` and `/embrj/status.php` instead of `/user.php` and `/status.php`. + +nginx +-------- +For nginx users, you'll need to add these lines to your nginx config file: + + location / { + if (!-f $request_filename) { + rewrite ^/(\d+)$ /status.php?id=$1 last; + rewrite ^/(\w+)$ /user.php?id=$1 last; + break; + } + } +And of course, adjust it if you are in a sub-directory. diff --git a/ajax/addMembersToList.php b/ajax/addMembersToList.php new file mode 100644 index 0000000..aa71ce9 --- /dev/null +++ b/ajax/addMembersToList.php @@ -0,0 +1,18 @@ +addListMember($listId, $id, $members); + if ($result) { + $ret = 'Followers: '.$result->subsriber_count.'  '; + $ret .= 'Members: '.$result->member_count.'  '; + $ret .= $result->mode == "private" ? "Private" : "Public"; + echo $ret; + } else + echo 'error'; +?> diff --git a/ajax/apiQuota.php b/ajax/apiQuota.php index 0b9a962..bb1ff75 100644 --- a/ajax/apiQuota.php +++ b/ajax/apiQuota.php @@ -4,11 +4,18 @@ 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; + $limit = get_object_vars($t->ratelimit()->resources->statuses); + $timeline_limit = $limit["/statuses/home_timeline"]; + $mentions_limit = $limit['/statuses/mentions_timeline']; + $timeline_reset = intval($timeline_limit->reset - $_SERVER['REQUEST_TIME']); + $mentions_reset = intval($mentions_limit->reset - $_SERVER['REQUEST_TIME']); + $timeline_remaining = $timeline_limit->remaining < 0 ? 0 : $timeline_limit->remaining; + $mentions_remaining = $mentions_limit->remaining < 0 ? 0 : $mentions_limit->remaining; + $timeline_qlimit = $timeline_limit->limit; + $mentions_qlimit = $mentions_limit->limit; header('Content-Type: text/html'); - echo "
  • API: $remaining/$hourly
  • -
  • Reset in $reset min(s)
  • "; + echo "
  • Timeline API remains: $timeline_remaining/$timeline_qlimit
  • +
  • Reset in $timeline_reset sec(s)
  • +
  • Mentions API remains: $mentions_remaining/$mentions_qlimit
  • +
  • Reset in $mentions_reset sec(s)
  • "; ?> diff --git a/ajax/delete.php b/ajax/delete.php index f9e21ae..8a5abe9 100644 --- a/ajax/delete.php +++ b/ajax/delete.php @@ -19,14 +19,13 @@ if ($result) echo 'success'; else echo 'error'; } - elseif ( isset($_POST['list_id']) ) { - $result = $t->deleteList($_POST['list_id']); + elseif ( isset($_POST['list_slug']) ) { + $result = $t->deleteList($_POST['list_slug']); 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']); + $result = $t->deleteListMember($_POST['slug'], $_POST['owner'], $_POST['list_member']); if ($result) echo 'success'; else echo 'error'; } diff --git a/ajax/expand.php b/ajax/expand.php new file mode 100644 index 0000000..502d17a --- /dev/null +++ b/ajax/expand.php @@ -0,0 +1,29 @@ + diff --git a/ajax/getRelationship.php b/ajax/getRelationship.php deleted file mode 100644 index b10ee35..0000000 --- a/ajax/getRelationship.php +++ /dev/null @@ -1,49 +0,0 @@ -username; - if($target == '' || $source == ''){ - echo "error"; - exit; - } - $analysis = getRelationship($target, $source); - switch($analysis){ - case 1: - $result = '

    They\'re following each other. How sweet!

    '; - break; - case 2: - $result = '

    - @'.$source.' is following @'.$target.' -

    -

    - @'.$target.' is NOT following @'.$source.' -

    '; - break; - case 3: - $result = '

    - @'.$target.' is following @'.$source.' -

    -

    - @'.$source.' is NOT following @'.$target.' -

    '; - break; - case 4: - $result = '

    - @'.$source.' is blocking @'.$target.' -

    '; - break; - case 9: - $result = '

    It seems that they don\'t know each other!

    '; - break; - } - $html = $result; - echo $html; -?> \ No newline at end of file diff --git a/ajax/modifyList.php b/ajax/modifyList.php new file mode 100644 index 0000000..8fa8e41 --- /dev/null +++ b/ajax/modifyList.php @@ -0,0 +1,26 @@ +editList($_POST['slug'], $name, $description, $mode); + } + else { + $result = $t->createList($name, $description, $mode); + } + if ($result) { + $ret = '{"result": "success"'; + $ret .= ',"username":"'.$t->username.'"'; + $ret .= ',"imgurl":"'.getAvatar($result->user->profile_image_url).'"'; + $ret .= ',"contentid":"list'.$result->id_str.'"'; + $ret .= ',"listuri":"'.substr($result->uri,1).'"'; + $ret .= '}'; + echo $ret; + } + else echo '{"result": "error"}'; +?> diff --git a/ajax/retweet.php b/ajax/retweet.php index 6099d33..4f50de6 100644 --- a/ajax/retweet.php +++ b/ajax/retweet.php @@ -3,7 +3,7 @@ session_start(); } include('../lib/twitese.php'); - include('timeline_format.php'); + include('../lib/timeline_format.php'); $t = getTwitter(); if(isset($_POST['status_id'])){ $id = trim($_POST['status_id']); diff --git a/ajax/savedSearches.php b/ajax/savedSearches.php new file mode 100644 index 0000000..65b95a8 --- /dev/null +++ b/ajax/savedSearches.php @@ -0,0 +1,42 @@ +savedSearches(); + $answer = '['; + $firsts = true; + + foreach($ss as $onesearch){ + if (!$firsts){ + $answer .= ','; + } + else{ + $firsts = false; + } + $answer .= '["'.$onesearch->id_str.'", "'.$onesearch->query.'"]'; + } + + $answer .=']'; + echo $answer; + } + else if ($_GET['method'] == "delete") { + $ssid = $_GET['ssid']; + $dss = $t->deleteSavedSearch($ssid); + if (isset($dss->query)) + echo "success"; + else + echo "error"; + } + else if ($_GET['method'] == "save") { + $query = $_GET['query']; + $ss = $t->saveSearch($query); + if (isset($ss->query)) + echo '["'.$ss->id_str.'", "'.$ss->query.'"]'; + else + echo "error"; + } +?> + diff --git a/ajax/status.php b/ajax/status.php index 5b8a1d0..5ca32f6 100644 --- a/ajax/status.php +++ b/ajax/status.php @@ -40,7 +40,7 @@ '.$status_id.' - '.$user->screen_name.' '.$text.' + '.($_COOKIE['shownick']=='true' ? $user->name : $user->screen_name).' '.$text.' '; if($end && isset($status->in_reply_to_user_id)){ $html .= ' in reply to '.$status->in_reply_to_screen_name.''; diff --git a/ajax/timeline_format.php b/ajax/timeline_format.php deleted file mode 100644 index dd0d97d..0000000 --- a/ajax/timeline_format.php +++ /dev/null @@ -1,172 +0,0 @@ -user; - $rt_status = $status->retweeted_status; - $status_owner = $rt_status->user; - $date = formatDate($status->created_at); - $text = formatText($rt_status->text); - $html = '
  • - '.initShortcutMenu($status_owner).' - - - - - '.$status->id.' - - '.$status_owner->screen_name.' '.$text.''; - $html .= recoverShortens($text); - $html .= ' - Reply - Retweet'; - if($retweetByMe != true){ - $html .= 'New Retweet'; - } - $html .= 'Favorite - Translate'; - if($retweetByMe == true){ - $html .= ''; - } - $html .=' - Retweeted by '.$retweeter->screen_name.' from '.$status->source.' - '.$date.' - - -
  • '; - return $html; - } - - function format_retweet_of_me($status){ - $status_owner = $status->user; - $date = formatDate($status->created_at); - $text = formatText($status->text); - $html = '
  • - - - - - - '.$status->id.' - - '.$status_owner->screen_name.' '.$text.''; - $html .= recoverShortens($text); - $html .= ' - Reply - Retweet - Favorite - Translate - Delete - - from '.$status->source.' - '.$date.' - - -
  • '; - return $html; - } - - function getRetweeters($id, $count = 20){ - $t = getTwitter(); - $retweeters = $t->getRetweeters($id); - $html = ''; - foreach($retweeters as $retweeter){ - $user = $retweeter->user; - $html .= ' - '.$user->name.' - '; - } - $html .= ""; - return $html; - } - - // $updateStatus 标识是否为发推, 是则应用指定 css - function format_timeline($status, $screen_name, $updateStatus = false){ - $user = $status->user; - $date = formatDate($status->created_at); - $text = formatText($status->text); - - if(preg_match('/^\@'.getTwitter()->username.'/i', $text) == 1){ - $output = "
  • "; - }elseif($updateStatus == true){ - $output = "
  • "; - }else{ - $output = "
  • "; - } - - $output .= "".initShortcutMenu($user)." - screen_name\" target=\"_blank\">profile_image_url)."\" title=\"$user->screen_name\" /> - - - $status->id - screen_name\">$user->screen_name $text "; - $output .= recoverShortens($text); - $output .= " - id\">回复 - id\">回推"; - if($user->screen_name != $screen_name){ - $output .= "New Retweet"; - } - $output .= "id\">Favorite - Translate"; - if ($user->screen_name == $screen_name) $output .= "id&t=s\">Delete"; - $output .= ""; - if ($status->in_reply_to_status_id) $output .= " in_reply_to_status_id&uid=$user->id \">in reply to $status->in_reply_to_screen_name "; - $output .= "from $status->source - id\" title=\"".date('Y-m-d H:i:s', strtotime($status->created_at))."\" target=\"_blank\">$date - - -
  • "; - return $output; - } - - /* ---------- Sorting timeline ---------- */ - function cmp($a, $b) - { - $a_date = strtotime($a->created_at); - $b_date = strtotime($b->created_at); - if ($a_date == $b_date) { - return 0; - } - return ($a_date > $b_date) ? -1 : 1; - } - - function sort_timeline($timeline, $retweet){ - $status = array_merge($timeline, $retweet); - usort($status, "cmp"); - return $status; - } - - /* ---------- Restore shortened urls ---------- */ - function initShortcutMenu($user = false){ - return ''; - if(!$user && !isset($user->screen_name)){ - return ''; - } - - $username = getEncryptCookie('twitese_name'); - if($user->screen_name == $username){ - return ''; - } - $relationship = getRelationship($user->screen_name, $username); - - $mention = $dm = $unfollow = $follow = $block = $spam = ''; - $mention = '
  • Mention '.$user->screen_name.'
  • '; - if($relationship == 1){ - $dm = '
  • Direct message '.$user->screen_name.'
  • '; - } - if($relationship == 1 || $relationship == 2){ - $unfollow = '
  • Unfollow '.$user->screen_name.'
  • '; - } - if($relationship == 3 || $relationship == 4 || $relationship == 9){ - $follow = '
  • Follow '.$user->screen_name.'
  • '; - } - if($relationship == 4){ - $block = '
  • Unblock '.$user->screen_name.'
  • '; - }else{ - $block = '
  • Block '.$user->screen_name.'
  • '; - } - $spam = '
  • Report '.$user->screen_name.' for spam
  • '; - $html = '
      '.$mention.$dm.$unfollow.$follow.$block.$spam.'
    '; - return $html; - } - -?> \ No newline at end of file diff --git a/ajax/updateFollowing.php b/ajax/updateFollowing.php index 4c2eb74..b8b7060 100644 --- a/ajax/updateFollowing.php +++ b/ajax/updateFollowing.php @@ -5,8 +5,8 @@ include('../lib/twitese.php'); $t = getTwitter(); - $MAX_COUNT = 36; - $friends = $t->friends(false, false, $MAX_COUNT)->users; + $skip_status = false; + $friends = $t->friends(false, false, $skip_status)->users; $html = ''; foreach($friends as $friend){ $html .= ' diff --git a/ajax/updateList.php b/ajax/updateList.php index bfa7941..1d135f8 100644 --- a/ajax/updateList.php +++ b/ajax/updateList.php @@ -6,7 +6,7 @@ $t = getTwitter(); if ( isset($_GET['since_id']) && isset($_GET['id'])) { - $statuses = $t->listStatus($_GET['id'], false, $_GET['since_id']); + $statuses = $t->listStatus($_GET['id'], $_GET['since_id']); $empty = count($statuses) == 0? true: false; @@ -33,12 +33,12 @@ $status->id_str - screen_name\">$user->screen_name $text + screen_name\" id=\"$user->screen_name\">".($_COOKIE['shownick']=='true' ? $user->name : $user->screen_name)." $text id_str\">Reply id_str\">RT id_str\">Favor"; - if ($user->screen_name == $t->username) $output .= "id_str&t=s\">删除"; + if ($user->screen_name == $t->username) $output .= "id_str&t=s\">Delete"; $output .= ""; if ($status->in_reply_to_status_id_str) $output .= " in_reply_to_status_id_str&uid=$user->id \">in reply to $status->in_reply_to_screen_name"; $output .= "via $status->source diff --git a/ajax/updateMessage.php b/ajax/updateMessage.php index 632720d..cf05d61 100644 --- a/ajax/updateMessage.php +++ b/ajax/updateMessage.php @@ -7,7 +7,7 @@ $t = getTwitter(); if ( isset($_GET['since_id']) ) { - $messages = $t->directMessages(false, $_GET['since_id']); + $messages = $t->directMessages($_GET['since_id']); $count = count($messages); if ($count == 0) { echo "empty"; diff --git a/ajax/updateReplies.php b/ajax/updateReplies.php index 9083748..bf553bf 100644 --- a/ajax/updateReplies.php +++ b/ajax/updateReplies.php @@ -7,7 +7,7 @@ $t = getTwitter(); if ( isset($_GET['since_id']) ) { - $statuses = $t->replies(false, $_GET['since_id']); + $statuses = $t->replies($_GET['since_id']); $count = count($statuses); if ($count == 0) { echo "empty"; diff --git a/ajax/updateTimeline.php b/ajax/updateTimeline.php index 397a200..cf4ac20 100644 --- a/ajax/updateTimeline.php +++ b/ajax/updateTimeline.php @@ -6,7 +6,7 @@ include('../lib/timeline_format.php'); $t = getTwitter(); if ( isset($_GET['since_id']) ) { - $statuses = $t->homeTimeline(false, $_GET['since_id']); + $statuses = $t->homeTimeline($_GET['since_id']); $count = count($statuses); $html = ""; if ($count <= 0) { diff --git a/ajax/uploadImage.php b/ajax/uploadImage.php index 002b4a2..655a845 100644 --- a/ajax/uploadImage.php +++ b/ajax/uploadImage.php @@ -1,29 +1,48 @@ -url)) { - echo '{"result": "success" , "url" : "' . $result->url . '"}'; - } else { - echo '{"result": "error"}'; - } - break; - case 'profile': - $t = getTwitter(); - $skip_status = $_POST['skip_status']; - $result = $t->updateProfileImage($image,$skip_status); - if ($t->http_code == 200) { - echo '{"result": "success"}'; - } else { - echo '{"result": "error"}'; - } - break; - } - } -?> +url)) { + echo '{"result": "success" , "url" : "' . $result->url . '"}'; + } else { + echo '{"result": "error"}'; + } + break; + case 'profile': + if (!isset($_FILES['image'])) break; + $image = file_get_contents($_FILES['image']['tmp_name']); + $image = base64_encode($image); + $t = getTwitter(); + $skip_status = $_POST['skip_status']; + $result = $t->updateProfileImage($image,$skip_status); + if ($t->http_code == 200) { + echo '{"result": "success"}'; + } else { + echo '{"result": "error"}'; + } + break; + case 'background': + $t = getTwitter(); + if (isset($_POST['tile'])) { + $tile = $_POST['tile']; + $result = $t->updateProfileBackground(false, $tile); + } + else { + $image = file_get_contents($_FILES['image']['tmp_name']); + $image = base64_encode($image); + $result = $t->updateProfileBackground($image); + } + if ($t->http_code == 200) { + echo '{"result": "success", "url": "'. getAvatar($result->profile_background_image_url) .'", "tile": "'. ($result->profile_background_tile ? "true" : "false") .'"}'; + } else { + echo '{"result": "error"}'; + } + break; + } +?> diff --git a/ajax/uploadPhoto.php b/ajax/uploadPhoto.php deleted file mode 100644 index f7c0bf7..0000000 --- a/ajax/uploadPhoto.php +++ /dev/null @@ -1,17 +0,0 @@ -imglyUpload($image); - if (isset($result->mediaurl)) { - echo '{"result": "success" , "url" : "' . $result->mediaurl . '"}'; - } else { - echo '{"result": "error"}'; - } - } - -?> diff --git a/all.php b/all.php index ce21752..0b21f86 100644 --- a/all.php +++ b/all.php @@ -1,85 +1,91 @@ - -
    - - - - -homeTimeline(); - if ($statuses === false) { - header('location: error.php');exit(); - } - $empty = count($statuses) == 0? true: false; - if ($empty) { - echo "
    No tweet to display
    "; - } else { - $output = '
      '; - foreach ($statuses as $status) { - if(isset($status->retweeted_status)){ - $output .= format_retweet($status); - }else{ - $output .= format_timeline($status, $t->username); - } - } - - $output .= "
    "; - - echo $output; - } - - $statuses = $t->replies(); - if ($statuses === false) { - header('location: error.php');exit(); - } - $empty = count($statuses) == 0? true: false; - if ($empty) { - echo "
    No tweet to display
    "; - } else { - $output = '
      '; - - foreach ($statuses as $status) { - $output .= format_timeline($status, $t->username); - } - - $output .= "
    "; - - echo $output; - } - - - $messages = $t->directMessages(); - if ($messages === false) { - header('location: error.php');exit(); - } - $empty = count($messages) == 0? true: false; - if ($empty) { - echo "
    No tweet to display
    "; - } else { - $output = '
      '; - - foreach ($messages as $message) { - $output .= format_message($message); - } - - $output .= "
    "; - echo $output; - } -?> -
    - - + +
    + + + + +homeTimeline(); + if ($statuses === false) { + header('location: error.php');exit(); + } + $empty = count($statuses) == 0? true: false; + if ($empty) { + echo "
    No tweet to display
    "; + } else if ($t->http_code == 429) { + echo "
    API quota is used out, please wait for a moment before next refresh.
    "; + } else { + $output = '
      '; + foreach ($statuses as $status) { + if(isset($status->retweeted_status)){ + $output .= format_retweet($status); + }else{ + $output .= format_timeline($status, $t->username); + } + } + + $output .= "
    "; + + echo $output; + } + + $statuses = $t->replies(); + if ($statuses === false) { + header('location: error.php');exit(); + } + $empty = count($statuses) == 0? true: false; + if ($empty) { + echo "
    No tweet to display
    "; + } else if ($t->http_code == 429) { + echo "
    API quota is used out, please wait for a moment before next refresh.
    "; + } else { + $output = '
      '; + + foreach ($statuses as $status) { + $output .= format_timeline($status, $t->username); + } + + $output .= "
    "; + + echo $output; + } + + + $messages = $t->directMessages(); + if ($messages === false) { + header('location: error.php');exit(); + } + $empty = count($messages) == 0? true: false; + if ($empty) { + echo "
    No tweet to display
    "; + } else if ($t->http_code == 429) { + echo "
    API quota is used out, please wait for a moment before next refresh.
    "; + } else { + $output = '
      '; + + foreach ($messages as $message) { + $output .= format_message($message); + } + + $output .= "
    "; + echo $output; + } +?> +
    + + diff --git a/authorize.php b/authorize.php index 65dbcdf..d39c8d5 100644 --- a/authorize.php +++ b/authorize.php @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/basic_auth.php b/basic_auth.php deleted file mode 100644 index 822bfd9..0000000 --- a/basic_auth.php +++ /dev/null @@ -1,43 +0,0 @@ -1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1); - $data = array(); - preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER); - foreach ($matches as $m) { - $data[$m[1]] = $m[2] ? $m[2] : $m[3]; - unset($needed_parts[$m[1]]); - } - return $needed_parts ? false : $data; -} -?> \ No newline at end of file diff --git a/block.php b/block.php index d92d1c8..655e488 100644 --- a/block.php +++ b/block.php @@ -1,12 +1,12 @@ - + diff --git a/browse.php b/browse.php deleted file mode 100644 index d91bbbf..0000000 --- a/browse.php +++ /dev/null @@ -1,58 +0,0 @@ - - - - -
    -

    See what people are saying about…

    -
    - - search($browse_seed, $p, 50); - $resultCount = count($statuses->results); - if ($resultCount <= 0) { - echo "
    No tweet to display.
    "; - } else { - include_once('lib/timeline_format.php'); - $output = '
      '; - 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 .= "
    "; - - if ($p >1) $output .= "Back"; - if (!$empty) $output .= "Next"; - - $output .= "
    "; - echo $output; - } - ?> -
    - - diff --git a/css/main.css b/css/main.css index 5d2d3c8..f79369a 100644 --- a/css/main.css +++ b/css/main.css @@ -239,7 +239,8 @@ td.column,#side .stats td{padding:0;vertical-align:top} #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} +#trend_entries, #apiquota_list{display:none;width:177px;float:left;margin-top:5px!important} +#trend_entries li{word-break:break-all} #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} @@ -315,14 +316,15 @@ footer li img{border:0 none;margin:-3px;padding:0} /*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} +.ss_delete_btn{display:inline-block;height:16px;width:21px;overflow:hidden;text-indent:-9999em;float:right} .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} +.ss_delete_btn,.delete_btn,.msg_delete_btn{background:url("../img/sprite_icons.png") no-repeat scroll 0 -47px transparent} +.ss_delete_btn:hover,.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} @@ -463,4 +465,4 @@ fieldset.common-form td[colspan=2]{text-align:right} .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 +.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} diff --git a/error.php b/error.php index c4f9779..f6d2621 100644 --- a/error.php +++ b/error.php @@ -1,29 +1,25 @@ - - -
    -
    - Fail to connect Twitter right now. Please go back or sign in minutes later.

    '; - if(loginStatus()) - { - echo '

    The API will reset in '.intval((format_time(getTwitter()->ratelimit()->reset_time) - time())/60).' min(s).'; - break; - } - default: - echo '

    Ooops, an unknown error occured. Please go back or sign in again.

    '; - } - } else{ - echo '

    Ooops, an unknown error occured. Please go back or sign in again.

    '; - } - ?> -
    -
    - - + + +
    +
    + Fail to connect Twitter right now. Please go back or sign in minutes later.

    '; + break; + default: + echo '

    Ooops, an unknown error occured. Please go back or sign in again.

    '; + } + } else{ + echo '

    Ooops, an unknown error occured. Please go back or sign in again.

    '; + } + ?> +
    +
    + + diff --git a/favicon.gif b/favicon.gif deleted file mode 100644 index e69de29..0000000 diff --git a/favicon.ico b/favicon.ico deleted file mode 100644 index 379f3cd..0000000 Binary files a/favicon.ico and /dev/null differ diff --git a/favor.php b/favor.php index a0d16ed..08ae8b9 100644 --- a/favor.php +++ b/favor.php @@ -1,55 +1,61 @@ - - - - -
    - - - -getFavorites($p); - if ($statuses === false) { - header('location: error.php');exit(); - } - $empty = count($statuses) == 0? true: false; - if ($empty) { - echo "
    No tweet to display.
    "; - } else { - $output = '
      '; - include('lib/timeline_format.php'); - foreach ($statuses as $status) { - if (isset($status->retweeted_status)) { - $output .= format_retweet($status); - } else { - $output .= format_timeline($status,$t->username); - } - } - - $output .= "
    "; - - if ($p >1) $output .= "Back"; - if (!$empty) $output .= "Next"; - - $output .= "
    "; - - echo $output; - } -?> -
    - - + + + + +
    + + + +getFavorites($user_id, $since_id, $max_id); + if ($statuses === false) { + header('location: error.php');exit(); + } + $empty = count($statuses) == 0 ? true : false; + if ($empty) { + echo "
    No tweet to display.
    "; + } else if ($t->http_code == 429) { + echo "
    API quota is used out, please wait for a moment before next refresh.
    "; + } else { + $output = '
      '; + include('lib/timeline_format.php'); + $firstid = false; + $lastid = false; + foreach ($statuses as $status) { + if (isset($status->retweeted_status)) { + $output .= format_retweet($status); + } else { + $output .= format_timeline($status,$t->username); + } + if(!$firstid) + $firstid = $status->id_str; + $lastid = $status->id_str; + } + $lastid = bcsub($lastid, "1"); + + $output .= "
    "; + + $output .= "Back"; + $output .= "Next"; + + $output .= "
    "; + + echo $output; + } +?> +
    + + diff --git a/followers.php b/followers.php index a4a866a..0c9f6c2 100644 --- a/followers.php +++ b/followers.php @@ -1,11 +1,11 @@ - + diff --git a/friends.php b/friends.php index 1e5094c..344dab1 100644 --- a/friends.php +++ b/friends.php @@ -1,10 +1,10 @@ - + diff --git a/img/3.gif b/img/3.gif deleted file mode 100644 index 03cf895..0000000 Binary files a/img/3.gif and /dev/null differ diff --git a/img/bg-front.gif b/img/bg-front.gif deleted file mode 100644 index f0ad699..0000000 Binary files a/img/bg-front.gif and /dev/null differ diff --git a/img/bg_faux.png b/img/bg_faux.png deleted file mode 100644 index 51c15d9..0000000 Binary files a/img/bg_faux.png and /dev/null differ diff --git a/img/bird.png b/img/bird.png deleted file mode 100644 index 24df7c3..0000000 Binary files a/img/bird.png and /dev/null differ diff --git a/img/faved.png b/img/faved.png deleted file mode 100644 index e6ff4c4..0000000 Binary files a/img/faved.png and /dev/null differ diff --git a/img/nexus_intro.png b/img/nexus_intro.png deleted file mode 100644 index 1f36c1f..0000000 Binary files a/img/nexus_intro.png and /dev/null differ diff --git a/img/nexus_logo.png b/img/nexus_logo.png deleted file mode 100644 index 5e1c25a..0000000 Binary files a/img/nexus_logo.png and /dev/null differ diff --git a/img/rabr_cry.gif b/img/rabr_cry.gif deleted file mode 100644 index cacb63f..0000000 Binary files a/img/rabr_cry.gif and /dev/null differ diff --git a/img/rabr_login.jpg b/img/rabr_login.jpg deleted file mode 100644 index 2ae53cb..0000000 Binary files a/img/rabr_login.jpg and /dev/null differ diff --git a/img/rabr_logo.png b/img/rabr_logo.png deleted file mode 100644 index e272759..0000000 Binary files a/img/rabr_logo.png and /dev/null differ diff --git a/inc/followingWall.php b/inc/followingWall.php deleted file mode 100644 index 67b8730..0000000 --- a/inc/followingWall.php +++ /dev/null @@ -1,18 +0,0 @@ -friends()->users; - $html = '
    '; - foreach($friends as $friend){ - $html .= ' - - '.$friend->name.' - - '; - } - echo $html.'
    '; -?> diff --git a/inc/footer.php b/inc/footer.php index 7958d65..ccafcd8 100644 --- a/inc/footer.php +++ b/inc/footer.php @@ -1,19 +1,19 @@ - - - -
    - - - - - - + + + +
    + + + + + + \ No newline at end of file diff --git a/inc/header.php b/inc/header.php index 1be5161..636809e 100644 --- a/inc/header.php +++ b/inc/header.php @@ -1,72 +1,71 @@ - - - - - - - - - - -Embr / <?php echo $title ?> - - - - - - - - - -
    - -
    -
    -
    -
    - - - + + + + + + + + + + +Embr / <?php echo $title ?> + + + + + + + + + +
    + +
    +
    +
    +
    +
    + +
    \ No newline at end of file diff --git a/inc/onlineUsers.php b/inc/onlineUsers.php deleted file mode 100644 index b6dfbd3..0000000 --- a/inc/onlineUsers.php +++ /dev/null @@ -1,25 +0,0 @@ -time())){ -array_push($temp,$entry[0].",".$entry[1]."\n"); -} -} -array_push($temp,getenv('REMOTE_ADDR').",".(time()+($timeout))."\n"); -$users_online=count($temp); -$entries=implode("",$temp); -$fp=fopen($online_log,"w"); -flock($fp,LOCK_EX); -fputs($fp,$entries); -flock($fp,LOCK_UN); -fclose($fp); -if($users_online==1){ -echo "Just you online!"; -}else{ -echo $users_online." Users Online"; -} -?> \ No newline at end of file diff --git a/inc/sidebar.php b/inc/sidebar.php index 7f8b2c9..ecc90e2 100644 --- a/inc/sidebar.php +++ b/inc/sidebar.php @@ -11,11 +11,12 @@ showUser(); + $expanded_url = $user->entities->url->urls[0]->expanded_url ? $user->entities->url->urls[0]->expanded_url : $user->url; ?> diff --git a/inc/sidepost.php b/inc/sidepost.php index 6604a96..e706631 100644 --- a/inc/sidepost.php +++ b/inc/sidepost.php @@ -26,7 +26,6 @@
    - +
    +
    +

    Version: 0.6.2 (f-99)

    +
    @@ -46,4 +48,4 @@
    - \ No newline at end of file + diff --git a/inc/symbols.inc b/inc/symbols.inc index 5776966..2211138 100644 --- a/inc/symbols.inc +++ b/inc/symbols.inc @@ -1,490 +1,490 @@ -╮(╯_╰)╭ -┗|`O′|┛ -o(°▽、°o)....+(( ̄﹏ ̄m ) -槑槑槑槑呆槑槑槑槑槑槑槑槑…… -~o(▽` o) =3 =3 =3 -<铃铃铃~ヾ( ̄  ̄*)==3=3=3 -ヽ( ̄︿ ̄ )—C<(/;◇;)/ -ヾ( ┬o┬)┌θθθθ(;;_ _).o○ -o((>ω< ))o -o(≧口≦)o -╮( ̄▽ ̄")╭ -m(_ _)m -ヾ( ̄▽ ̄)Bye~Bye~ -▄︻┻┳═一…… ☆(>○<) -o(*≧▽≦)ツ -ヾ(≧▽≦*)o -o(≧口≦)o -(o゜▽゜)o☆ -( ̄ ‘i  ̄;) -( ̄ ii  ̄;) ( ̄" ̄;) -(⊙x⊙;) -(*^ ^*)(^ *) -(◎_x) -o( ̄┰ ̄*)ゞ -°.°·(((p(≧□≦)q)))·°.°。 -X﹏X 惨了! -q(≧▽≦q) -( ̄ c ̄)y▂ξ。。。 -<(  ̄^ ̄)(θ(θ☆( >_< -( ̄△ ̄;) -( ̄旦 ̄;) -━┳━ ━┳━ -Σ(`д′*ノ)ノ -Σ(っ °Д °;)っ -~( ̄▽ ̄~)(~ ̄▽ ̄)~ -<( ̄ˇ ̄)/ -┬┴┤_·) -("▔□▔) -(⊙﹏⊙) --________-'' -o(` · ~ · ′。)o -______λ......_____ -λ…λλ…λ…λλλ… -○| ̄|_ =3 -(╯′□`)╯ ┫:·'∵:.┻┻:·'.:┣∵·:. ┳┳☆ -(╯‵□′)╯""┻━┻☆))>○<) -┻━┻︵╰(‵□′)╯︵┻━┻ -︿( ̄︶ ̄)︿ -ヾ(≧奋≦)〃 -French (* ̄( ̄ *) Kiss! -( ̄ˇ ̄)v -fufu~ ^u^ -( σ'ω')σ -o(>O<;; )σ -┳G┻┳F┳┻W┫ -(┘ ̄︶ ̄)┘└( ̄︶ ̄└) -<( ̄︶ ̄)↗ -<( ̄OO, ̄)/ -Good! o( ̄▽ ̄)d -______λ......_____ -( ̄┰ ̄*) -(#°Д°) -O口O! -Σ(⊙▽⊙"a... -o(*≧▽≦)ツ -( ̄_ ̄|||) -( ̄▽ ̄") -(寒 ̄ii ̄)彡…彡…彡 -o(* ̄▽ ̄*)o -【】\(·ω·`)o -o(* ̄▽ ̄*)ゞ -( -з) -(;′⌒`) -(ε- ) -o( ̄ヘ ̄o#) -( ̄▽ ̄") -o(* ̄▽ ̄*)o -^-^ -^O^ -Hi~ o(* ̄▽ ̄*)ブ -( ·_·)ノ_·)ノ_·)ノ_·)ノ_·)ノ -○( ^皿^)っHiahiahia.... -( ̄y▽ ̄)╭ Ohohoho..... -hoho ^O^ -(_ _)。゜zzZ -Σ( ° △ °|||)︴ -Σ(`д′*ノ)ノ -Σ(っ °Д °;)っ -┗|*`0′*|┛ -( -'`-; ) -o(′益`)o -(  ̄ー ̄)人(^▽^ ) -n(*≧▽≦*)n -(°°)~ (°°)~ (°°)~ (°°)~ - (* ̄( ̄ *) -ˋ( ° ▽、° ) 口水ing... - ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)> -m( =∩王∩= )m -(┳_┳)... -/(ㄒoㄒ)/~~ -卐~%?…,# *'☆&℃$︿★? -o(* ̄︶ ̄*)o -o( ̄ˇ ̄)o -o( =·ω·= )m -o(=·ェ·=)m -MIN■■■■■□□MAX -(/ ̄ˇ ̄)/ -(。人。) -mmm...f('︶︿︶)o -mmm..... -Capricorn -mua! (*╯3╰) ---\(˙<>˙)/-- -~( ̄▽ ̄)~* -(#‵′) -(o#゜ 曲゜)o -MIN■■■■■□□MAX(╯‵□′)╯︵┻━┻ -ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)ノ -(⊙o⊙)? -Oh~ no!!!! -Oh yeah!\(^&^)/ -OK -λ…λλ…λ…入λλ… -ε = = (づ′▽`)づ -ε=ε=ε=(~ ̄▽ ̄)~ -ヾ(*′▽`*)ノ彡☆ノヽノヽノヽ -ヾ(′▽`* )ノ~ -( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///) -Pia!(o ‵-′)ノ”(ノ﹏<。) -(~ ̄▽ ̄)~ -(~o ̄3 ̄)~ -.....((/- -)/ -▄︻┻┳═一…… -(ˉ▽ ̄~) 切~~ -( ^ ^) _U~~ -(╬ ̄皿 ̄)=○#( ̄#)3 ̄) -(Д゜(○=(゜ 皿゜)=○)゜Д゜) -<(-︿-)> -shy~ o(*////▽////*)q -( ′ 3`) sigh~ -三三三三三三三三三4(o|o ) - (o ‵-′)ノ”(ノ_<。) -<(  ̄^ ̄)(θ(θ☆( >_< -╮( ╯ 3 ╰ )╭ -╮( ̄▽ ̄")╭ -╮(╯-╰)╭ -ㄟ( ▔, ▔ )ㄏ -ε=ε=┏( >_<)┛ -ε=ε=ε=┏(゜ロ゜;)┛ -ε=ε=ε=ε=ヽ(* ̄o ̄)ノ -o(≧∩≦)o -o(TヘTo) -☆⌒(*^-゜)v THX!! -|壁|_☆) -┬┴┤_·) -n(→_←)┛ -o( >﹏<。)┛ -0^)吞! -( ̄┰ ̄*) -(PД`q。)·。'゜ -<( ̄▽ ̄)/ -∥wc∥ o(- -o) =з =з =з -(﹁"﹁) -╥﹏╥... -σ(⌒ー⌒) -@/" -wow~⊙o⊙ -ㄟ( ▔, ▔ )ㄏ -( ﹁ ﹁ ) ~→ -( ̄. ̄)+ -(﹁"﹁) -...ψ(。。 ) -o(* ̄▽ ̄*)o -(* ̄(エ) ̄) -(+(工)+╬) -o(*////▽////*)q -p(# ̄▽ ̄#)o -卐~%?…,# *'☆&℃$︿★?…… -╳╳○○ -(* ̄︶ ̄)y -(* ̄▽ ̄)y -^_^)y -━┳━ ━┳━ -ag108lau -Yes,sir! <( ̄O ̄)/ -╭(′▽`)╭(′▽`)╯ -ヽ( ̄ω ̄( ̄ω ̄〃)ゝ -(^U^)ノ~YO ->°)))>彡 -(((φ(◎ロ◎;)φ))) -Σ[ ◎ ]} -<( ̄ ﹌  ̄)@m -^(* ̄(oo) ̄)^ -W( ̄_ ̄)W -┳G┻F┳W┫☆(ノ﹏<。) ---==≡≡〈〈《( / ̄皿 ̄)=O));>o<)/ -ZZzz…(。-ω-)..ooO((【·:*:~夢~:*:·】)) -( ̄y▽, ̄)╭ - o(* ̄▽ ̄*)ブ -(o|o) -ヾ(≧O≦)〃 -(o|o) -(-人-) -(^人^) -ヾ(′▽`*)ゝ -ヾ(′▽`*)ゝ -━((*′ ▽`)爻(′▽`*))━!!! -━((*′д`)爻(′д`*))━!!!! -\( ̄︶ ̄)/ -\( ̄︶ ̄*\)) -(′゜c_,゜` ) -╭∩╮(︶︿︶)╭∩╮ -(  ̄  ̄)σ…( _ _)ノ| -(  ̄  ̄)σ…( _ _)ノ| -ノ ̄ー ̄)ノ ⌒ >┼○"☆|| -o(′益`)o -§(* ̄▽ ̄*)§ -<( ̄3 ̄)> -______λ......___丬 -(* ̄︿ ̄) -(PД`q。)·。'゜ -(*  ̄3)(ε ̄ *) -( *^-^)ρ(*╯^╰) -(@_@;)? -(* ̄︿ ̄) -ㄟ( ▔, ▔ )ㄏ -( ̄_, ̄ ) -(ノへ ̄、) -(o′┏▽┓`o) -( ·ェ·)(·ェ· ) -(*≧︶≦))( ̄▽ ̄* )ゞ -( * ̄▽ ̄)((≧︶≦*) -<)。(> -ε~( ~( ~ ( 卍 )\( ̄▽ ̄ \) -(# ̄□ ̄)o―∈‥oo━━━━━━━☆ -●┻┓⌒ Σ┌┘車└┐=3 =3 =3 -.....(((((ヾ( o=^·ェ·)o ┏━┓ -( `0‘)ノ~~~~~~~~~ν -(。>︿<)_θ -___*\(  ̄皿 ̄)/#____ -( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) -(ノへ ̄、) -(ノへ ̄、) -Pia!(o ‵-′)ノ” -ε=ε┣G┻F┳ε=ヽ(* ̄▽ ̄)ノ┻W┫ -→)╥﹏╥) -( * ̄▽ ̄)o ─═≡※:☆▆▅▄▃▂_ -(_ _)( - . - )(~O~) ……( - . - ) -(′台` ) - ━┳━ ━┳━ -━━( ̄ー ̄*|||━━ -<(ˉ^ˉ)> -(-_-メ) -...(* ̄0 ̄)ノ - (#`-_ゝ-) -(。﹏。) -(。_。) -( ̄ー ̄(_ _( ̄ー ̄(_ _ -(┬_┬)↘ -d=====( ̄▽ ̄*)b -!!!(  ̄O ̄)ノノ……∞∞OOO))) -!!!(  ̄O ̄)ノノ……∞∞OOO))) -o((⊙﹏⊙))o. -o( ̄ε ̄*) -(○` 3′○) - <(_ _)> -(ˉ▽ˉ;) -σ(-_-メ) -(╯‵□′)╯︵┻━┻ -(((\( ̄一 ̄)/))) - ||Φ|(|T|Д|T|)|Φ|| - (* ̄3 ̄)╭ ->( ̄▽ ̄ =  ̄︿ ̄)< - (/-_-)/ξ ξ ξ ξ ξ ξ (+_+ /)/~~~ -乀ˉεˉ乀... -(-@y@) -(-@y@) -...:.;::..;::: .:.;::….;: ̄)…:.;:□ ̄)( ̄□ ̄*) -.<{=.... -( ̄▽ ̄)~■□~( ̄▽ ̄) -~( ̄▽ ̄)~* -o(*≧▽≦*)m -(* ̄▽)u┌┐ d(▽ ̄*) -(′д`σ)σ -╰( ̄▽ ̄)╭ -U·ェ·*U -U·ェ·U -””\\( ̄ー ̄) ( ̄ー ̄)//”” -└( ̄  ̄└)(┘ ̄  ̄)┘ -o(*^@^*)o -……~(~o ̄▽ ̄)~o 。。。……o~(_△_o~) ~。。。 -(ToT)/~~~ -o(*^▽^*)o -╮╯-╰╭" -( >﹏<) -(╯▽╰ ) -(o゜▽゜)o☆ -( ′Д`)彡 -( ̄。。 ̄) - ┌(_Д_┌ )┐ - ┌(_Д_┌ )┐ -ε=( ̄。 ̄;A -(/0 ̄)o - ~( TロT)σ -((( ̄( ̄( ̄( ̄ー ̄) ̄) ̄) ̄))) -(@^^)/~~~ -(* ̄皿 ̄)=Σ口>=Σ口>=Σ口> -ヾ( ̄ー ̄)X(^▽^)ゞ -(〃 ̄︶ ̄)人( ̄︶ ̄〃) -o^^oo^^o - (o^~^)尸" -||┣(—_\) -<( ̄ ﹌  ̄)@m - (@゜▽゜) - (@`д′) -o(*^▽^*)┛ -┗( T﹏T )┛ -( ̄~ ̄) - ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)′ -(°ー°〃) -(@^0^) -( ‵▽′)ノ'卍卍卍卍卍卍 Σ(゜д゜;) - ( `д′) ->< - ( -'`-; ) -┗(`o′)┓哼┏(`○′)┛哼┏(`o′)┓哈┗(`O′)┛兮!! -(o-ωq)).oO -...φ(0 ̄*)_φ(* ̄0 ̄)> -(~o ̄▽ ̄)~o ~。。。 -(o ;′Д`)ノ゛ -(  ̄ー ̄) -(*/ω\*) -(*/ω\*) -(*ˉ﹃ˉ)_☆☆ -(* ̄^ ̄(* ̄^ ̄(* ̄^ ̄) -☆{{{Д}}} ☆!! -(· ·)nnn -╮( ̄▽ ̄")╭ -||o(*°ω°*)o|Ю -ο(=·ω<=)ρ⌒☆ -(一-一) -o( =∩ω∩= )m ->▽< -<(* ̄▽ ̄*)/ -( ̄_, ̄ ) -ε(┬┬﹏┬┬)3 -(~ ̄▽ ̄)ノ -╰( ̄ω ̄o) -_| ̄|○ → _|\○_ → _/\○_ → ____○_ -┏┛墓┗┓...(((m -__-)m -(/// ̄皿 ̄)○~ -(﹁ ﹁ )σ -ヾ(≧へ≦)〃 -o( ̄︶ ̄)n -o(* ̄▽ ̄*)o -Σ(  ̄д ̄;) -ヾ(^▽^*))) - ~( TロT)σ - ~( TロT)σ -゜゜┌┴o゜゜゜゜° - ( -人-)···-~=~≡~≡ ((+o+))) -((( (-h-) ))) -……(((\( ̄一 ̄)/))) -<( ‵□′)>───Cε(┬﹏┬)3 -ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)/ -_( ̄0 ̄)_ -((o_ _)'彡☆ -━((*′д`)爻(′д`*))━!!!! -└( ̄  ̄└)(┘ ̄  ̄)┘ -””\\( ̄ー ̄) ( ̄ー ̄)//”” -o(*≧▽≦)ツ┏━┓ -︿( ̄︶ ̄)︿ -( ^o)ρ┳┻┳°σ(o^ ) - (☆▽☆) -(o ̄Д ̄)<起床! ※=○☆(__*)Zzz -( *′д)/o(_ _)ozzZZ… -( ﹁ ﹁ ) ~~~ -o(* ̄3 ̄)o -(*  ̄)( ̄▽ ̄*)ゞ -(づ ̄ 3 ̄)づ... -∥WC||_·)╯ - ( ̄人 ̄)( ̄人:.;:…( ̄...:.;::..;::: .:;.…::;.:..:;.:... -( ̄▽ ̄)o∠※PAN!=.:*:'☆.:*:'★':* -*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 -▄︻┻┳═一∵∴∷∶∵ (∵_,∵)>>>> -( ▼▼)/鹵〈 巛巛巛 ( ◎_x)/ -(* ̄▽ ̄)( ̄▽:;.…::;.:.:::;..::;.:... -(;′⌒`) -z(-_-z)).....((s-_-)s -(  ̄ー ̄)——)-=======>-->> -\( ̄0 ̄)/ -(。_。) -━━∑( ̄□ ̄*|||━━化 -(ˉ▽ˉ;)... -┫♀旦 ̄)σ(呃……) -(σ`д′)σ -(σ`д′)σ -σ~ (`′メ  -(~ ̄▽ ̄)→))* ̄▽ ̄*)o -o( ̄▽ ̄*)ゞ)) ̄▽ ̄*)o -(′д` )…彡…彡 -(:D)┼─┤ -……o((≧▽≦o) -ヽ(*。>Д<)o゜ -\("▔□▔)/\("▔□▔)/ -( *︾▽︾) -(ノω<。)ノ))☆.。 -ヾ(   )ノ゛ヾ( °д)ノ゛ヾ(°д°)ノ゛ヾ(д° )ノ゛ヾ(  )ノ゛ - ヾ(*′▽`*)彡 -<(* ̄ー ̄)ゞ来呀~ -<(* ̄ー ̄)ゞ来啊~ -(/ω\*)……… (/ω·\*) -(/ω·\*) -Σ[ ◎ ]}ー′) -凸艹皿艹 -凸゜皿゜メ -( >ρ < ”) -(o ̄ω ̄)○))o(__*)Zzz -ヽ(゜▽゜ )-C<(/;◇;)/~ -o((≧▽≦o) 太好笑了!! -Σ(⊙▽⊙"a... - (* ̄rǒ ̄) -*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 -(← ← ) -( → →) -…〒_〒…‵o′-一┳═┻︻▄ -(#`O′) -( *^-^)ρ(^0^* ) -(* ̄;( ̄ *) -σ(· ·?) -(/▽\) -(。﹏。*) -||ヽ(* ̄▽ ̄*)ノミ|Ю -(~ ̄▽ ̄)~ -o(-"-;) -|(·_·) |·_·) |_·) |·) | ) -o( ̄ヘ ̄o* ) -o( ̄ヘ ̄o#) -( >﹏<。)~ -↑↑↓↓←→←→BA...┗( -o-)┛ -( ‵Д′)=○))~~~~~~Ю))>o<)/ -ヽ(ヽ `д′)ヽ`д′)ヽ`д′)┌┛┌┛┌┛★)`з゜)y -<( ‵□′)───C<─___-)|| -(o  ̄3)==@))゜ロ゜((@==(′ε′ )o  -(o  ̄3)==@))゜ロ゜((@==(′ε′ )o -((≧(≧▽(≧▽≦(≧▽≦)≧▽≦)▽≦)≦))) - ( _ _)ノ|壁 -╮(╯-╰)╭ -<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) -<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) -(╯▽╰ ) -(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... -<( ̄︶ ̄)↗ -( ‵▽′)ψ -☆⌒(*^-゜)v -(゜゜ )(。。)(゜゜ )(。。) -( ╯▽╰) -不>( ̄ε ̄ =  ̄3 ̄)< -( *⊙~⊙) -( *⊙~⊙) -(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... -( ̄ム ̄) -(9 ̄^ ̄)9 -(o゜▽゜)o☆ -||o(*°▽°*)o|Ю - -o(一︿一+)o -╔囧╗╔囧╝╚囧╝╚囧╗ -@o@" -X﹏X - o(* ̄▽ ̄*)ブ -(~ ̄(OO) ̄)ブ -(╯‵□′)╯···*~● -ˋ( ° ▽、° ) (o( ̄▽ ̄/// -( ̄︶ ̄)↗ --______-" - o(〃'▽'〃)o -( `o′){ ···-=≡)) -( `o′){ ···-=≡)) -(o>ε(o>u(≧∩≦) -━━(o_ _)o━━(o―_―)o━━(9 ̄ー ̄)9 -( ゜,_ゝ゜) -(-"-) -o((>ω< ))o -o(>@<)o -( · ·)L☆ .....○ 冂 -ヨロ (*~▽~)ノ ヨロ ヽ(~▽~*)ヨロ (*~▽~)―〇 ☆ バシ ))>口<) -

    © 2010 @ag108lau
    Thanks @OnlyTiny
    -Last Update: 2010-11-13 +╮(╯_╰)╭ +┗|`O′|┛ +o(°▽、°o)....+(( ̄﹏ ̄m ) +槑槑槑槑呆槑槑槑槑槑槑槑槑…… +~o(▽` o) =3 =3 =3 +<铃铃铃~ヾ( ̄  ̄*)==3=3=3 +ヽ( ̄︿ ̄ )—C<(/;◇;)/ +ヾ( ┬o┬)┌θθθθ(;;_ _).o○ +o((>ω< ))o +o(≧口≦)o +╮( ̄▽ ̄")╭ +m(_ _)m +ヾ( ̄▽ ̄)Bye~Bye~ +▄︻┻┳═一…… ☆(>○<) +o(*≧▽≦)ツ +ヾ(≧▽≦*)o +o(≧口≦)o +(o゜▽゜)o☆ +( ̄ ‘i  ̄;) +( ̄ ii  ̄;) ( ̄" ̄;) +(⊙x⊙;) +(*^ ^*)(^ *) +(◎_x) +o( ̄┰ ̄*)ゞ +°.°·(((p(≧□≦)q)))·°.°。 +X﹏X 惨了! +q(≧▽≦q) +( ̄ c ̄)y▂ξ。。。 +<(  ̄^ ̄)(θ(θ☆( >_< +( ̄△ ̄;) +( ̄旦 ̄;) +━┳━ ━┳━ +Σ(`д′*ノ)ノ +Σ(っ °Д °;)っ +~( ̄▽ ̄~)(~ ̄▽ ̄)~ +<( ̄ˇ ̄)/ +┬┴┤_·) +("▔□▔) +(⊙﹏⊙) +-________-'' +o(` · ~ · ′。)o +______λ......_____ +λ…λλ…λ…λλλ… +○| ̄|_ =3 +(╯′□`)╯ ┫:·'∵:.┻┻:·'.:┣∵·:. ┳┳☆ +(╯‵□′)╯""┻━┻☆))>○<) +┻━┻︵╰(‵□′)╯︵┻━┻ +︿( ̄︶ ̄)︿ +ヾ(≧奋≦)〃 +French (* ̄( ̄ *) Kiss! +( ̄ˇ ̄)v +fufu~ ^u^ +( σ'ω')σ +o(>O<;; )σ +┳G┻┳F┳┻W┫ +(┘ ̄︶ ̄)┘└( ̄︶ ̄└) +<( ̄︶ ̄)↗ +<( ̄OO, ̄)/ +Good! o( ̄▽ ̄)d +______λ......_____ +( ̄┰ ̄*) +(#°Д°) +O口O! +Σ(⊙▽⊙"a... +o(*≧▽≦)ツ +( ̄_ ̄|||) +( ̄▽ ̄") +(寒 ̄ii ̄)彡…彡…彡 +o(* ̄▽ ̄*)o +【】\(·ω·`)o +o(* ̄▽ ̄*)ゞ +( -з) +(;′⌒`) +(ε- ) +o( ̄ヘ ̄o#) +( ̄▽ ̄") +o(* ̄▽ ̄*)o +^-^ +^O^ +Hi~ o(* ̄▽ ̄*)ブ +( ·_·)ノ_·)ノ_·)ノ_·)ノ_·)ノ +○( ^皿^)っHiahiahia.... +( ̄y▽ ̄)╭ Ohohoho..... +hoho ^O^ +(_ _)。゜zzZ +Σ( ° △ °|||)︴ +Σ(`д′*ノ)ノ +Σ(っ °Д °;)っ +┗|*`0′*|┛ +( -'`-; ) +o(′益`)o +(  ̄ー ̄)人(^▽^ ) +n(*≧▽≦*)n +(°°)~ (°°)~ (°°)~ (°°)~ + (* ̄( ̄ *) +ˋ( ° ▽、° ) 口水ing... + ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)> +m( =∩王∩= )m +(┳_┳)... +/(ㄒoㄒ)/~~ +卐~%?…,# *'☆&℃$︿★? +o(* ̄︶ ̄*)o +o( ̄ˇ ̄)o +o( =·ω·= )m +o(=·ェ·=)m +MIN■■■■■□□MAX +(/ ̄ˇ ̄)/ +(。人。) +mmm...f('︶︿︶)o +mmm..... +Capricorn +mua! (*╯3╰) +--\(˙<>˙)/-- +~( ̄▽ ̄)~* +(#‵′) +(o#゜ 曲゜)o +MIN■■■■■□□MAX(╯‵□′)╯︵┻━┻ +ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)ノ +(⊙o⊙)? +Oh~ no!!!! +Oh yeah!\(^&^)/ +OK +λ…λλ…λ…入λλ… +ε = = (づ′▽`)づ +ε=ε=ε=(~ ̄▽ ̄)~ +ヾ(*′▽`*)ノ彡☆ノヽノヽノヽ +ヾ(′▽`* )ノ~ +( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///) +Pia!(o ‵-′)ノ”(ノ﹏<。) +(~ ̄▽ ̄)~ +(~o ̄3 ̄)~ +.....((/- -)/ +▄︻┻┳═一…… +(ˉ▽ ̄~) 切~~ +( ^ ^) _U~~ +(╬ ̄皿 ̄)=○#( ̄#)3 ̄) +(Д゜(○=(゜ 皿゜)=○)゜Д゜) +<(-︿-)> +shy~ o(*////▽////*)q +( ′ 3`) sigh~ +三三三三三三三三三4(o|o ) + (o ‵-′)ノ”(ノ_<。) +<(  ̄^ ̄)(θ(θ☆( >_< +╮( ╯ 3 ╰ )╭ +╮( ̄▽ ̄")╭ +╮(╯-╰)╭ +ㄟ( ▔, ▔ )ㄏ +ε=ε=┏( >_<)┛ +ε=ε=ε=┏(゜ロ゜;)┛ +ε=ε=ε=ε=ヽ(* ̄o ̄)ノ +o(≧∩≦)o +o(TヘTo) +☆⌒(*^-゜)v THX!! +|壁|_☆) +┬┴┤_·) +n(→_←)┛ +o( >﹏<。)┛ +0^)吞! +( ̄┰ ̄*) +(PД`q。)·。'゜ +<( ̄▽ ̄)/ +∥wc∥ o(- -o) =з =з =з +(﹁"﹁) +╥﹏╥... +σ(⌒ー⌒) +@/" +wow~⊙o⊙ +ㄟ( ▔, ▔ )ㄏ +( ﹁ ﹁ ) ~→ +( ̄. ̄)+ +(﹁"﹁) +...ψ(。。 ) +o(* ̄▽ ̄*)o +(* ̄(エ) ̄) +(+(工)+╬) +o(*////▽////*)q +p(# ̄▽ ̄#)o +卐~%?…,# *'☆&℃$︿★?…… +╳╳○○ +(* ̄︶ ̄)y +(* ̄▽ ̄)y +^_^)y +━┳━ ━┳━ +ag108lau +Yes,sir! <( ̄O ̄)/ +╭(′▽`)╭(′▽`)╯ +ヽ( ̄ω ̄( ̄ω ̄〃)ゝ +(^U^)ノ~YO +>°)))>彡 +(((φ(◎ロ◎;)φ))) +Σ[ ◎ ]} +<( ̄ ﹌  ̄)@m +^(* ̄(oo) ̄)^ +W( ̄_ ̄)W +┳G┻F┳W┫☆(ノ﹏<。) +--==≡≡〈〈《( / ̄皿 ̄)=O));>o<)/ +ZZzz…(。-ω-)..ooO((【·:*:~夢~:*:·】)) +( ̄y▽, ̄)╭ + o(* ̄▽ ̄*)ブ +(o|o) +ヾ(≧O≦)〃 +(o|o) +(-人-) +(^人^) +ヾ(′▽`*)ゝ +ヾ(′▽`*)ゝ +━((*′ ▽`)爻(′▽`*))━!!! +━((*′д`)爻(′д`*))━!!!! +\( ̄︶ ̄)/ +\( ̄︶ ̄*\)) +(′゜c_,゜` ) +╭∩╮(︶︿︶)╭∩╮ +(  ̄  ̄)σ…( _ _)ノ| +(  ̄  ̄)σ…( _ _)ノ| +ノ ̄ー ̄)ノ ⌒ >┼○"☆|| +o(′益`)o +§(* ̄▽ ̄*)§ +<( ̄3 ̄)> +______λ......___丬 +(* ̄︿ ̄) +(PД`q。)·。'゜ +(*  ̄3)(ε ̄ *) +( *^-^)ρ(*╯^╰) +(@_@;)? +(* ̄︿ ̄) +ㄟ( ▔, ▔ )ㄏ +( ̄_, ̄ ) +(ノへ ̄、) +(o′┏▽┓`o) +( ·ェ·)(·ェ· ) +(*≧︶≦))( ̄▽ ̄* )ゞ +( * ̄▽ ̄)((≧︶≦*) +<)。(> +ε~( ~( ~ ( 卍 )\( ̄▽ ̄ \) +(# ̄□ ̄)o―∈‥oo━━━━━━━☆ +●┻┓⌒ Σ┌┘車└┐=3 =3 =3 +.....(((((ヾ( o=^·ェ·)o ┏━┓ +( `0‘)ノ~~~~~~~~~ν +(。>︿<)_θ +___*\(  ̄皿 ̄)/#____ +( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) +(ノへ ̄、) +(ノへ ̄、) +Pia!(o ‵-′)ノ” +ε=ε┣G┻F┳ε=ヽ(* ̄▽ ̄)ノ┻W┫ +→)╥﹏╥) +( * ̄▽ ̄)o ─═≡※:☆▆▅▄▃▂_ +(_ _)( - . - )(~O~) ……( - . - ) +(′台` ) + ━┳━ ━┳━ +━━( ̄ー ̄*|||━━ +<(ˉ^ˉ)> +(-_-メ) +...(* ̄0 ̄)ノ + (#`-_ゝ-) +(。﹏。) +(。_。) +( ̄ー ̄(_ _( ̄ー ̄(_ _ +(┬_┬)↘ +d=====( ̄▽ ̄*)b +!!!(  ̄O ̄)ノノ……∞∞OOO))) +!!!(  ̄O ̄)ノノ……∞∞OOO))) +o((⊙﹏⊙))o. +o( ̄ε ̄*) +(○` 3′○) + <(_ _)> +(ˉ▽ˉ;) +σ(-_-メ) +(╯‵□′)╯︵┻━┻ +(((\( ̄一 ̄)/))) + ||Φ|(|T|Д|T|)|Φ|| + (* ̄3 ̄)╭ +>( ̄▽ ̄ =  ̄︿ ̄)< + (/-_-)/ξ ξ ξ ξ ξ ξ (+_+ /)/~~~ +乀ˉεˉ乀... +(-@y@) +(-@y@) +...:.;::..;::: .:.;::….;: ̄)…:.;:□ ̄)( ̄□ ̄*) +.<{=.... +( ̄▽ ̄)~■□~( ̄▽ ̄) +~( ̄▽ ̄)~* +o(*≧▽≦*)m +(* ̄▽)u┌┐ d(▽ ̄*) +(′д`σ)σ +╰( ̄▽ ̄)╭ +U·ェ·*U +U·ェ·U +””\\( ̄ー ̄) ( ̄ー ̄)//”” +└( ̄  ̄└)(┘ ̄  ̄)┘ +o(*^@^*)o +……~(~o ̄▽ ̄)~o 。。。……o~(_△_o~) ~。。。 +(ToT)/~~~ +o(*^▽^*)o +╮╯-╰╭" +( >﹏<) +(╯▽╰ ) +(o゜▽゜)o☆ +( ′Д`)彡 +( ̄。。 ̄) + ┌(_Д_┌ )┐ + ┌(_Д_┌ )┐ +ε=( ̄。 ̄;A +(/0 ̄)o + ~( TロT)σ +((( ̄( ̄( ̄( ̄ー ̄) ̄) ̄) ̄))) +(@^^)/~~~ +(* ̄皿 ̄)=Σ口>=Σ口>=Σ口> +ヾ( ̄ー ̄)X(^▽^)ゞ +(〃 ̄︶ ̄)人( ̄︶ ̄〃) +o^^oo^^o + (o^~^)尸" +||┣(—_\) +<( ̄ ﹌  ̄)@m + (@゜▽゜) + (@`д′) +o(*^▽^*)┛ +┗( T﹏T )┛ +( ̄~ ̄) + ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)′ +(°ー°〃) +(@^0^) +( ‵▽′)ノ'卍卍卍卍卍卍 Σ(゜д゜;) + ( `д′) +>< + ( -'`-; ) +┗(`o′)┓哼┏(`○′)┛哼┏(`o′)┓哈┗(`O′)┛兮!! +(o-ωq)).oO +...φ(0 ̄*)_φ(* ̄0 ̄)> +(~o ̄▽ ̄)~o ~。。。 +(o ;′Д`)ノ゛ +(  ̄ー ̄) +(*/ω\*) +(*/ω\*) +(*ˉ﹃ˉ)_☆☆ +(* ̄^ ̄(* ̄^ ̄(* ̄^ ̄) +☆{{{Д}}} ☆!! +(· ·)nnn +╮( ̄▽ ̄")╭ +||o(*°ω°*)o|Ю +ο(=·ω<=)ρ⌒☆ +(一-一) +o( =∩ω∩= )m +>▽< +<(* ̄▽ ̄*)/ +( ̄_, ̄ ) +ε(┬┬﹏┬┬)3 +(~ ̄▽ ̄)ノ +╰( ̄ω ̄o) +_| ̄|○ → _|\○_ → _/\○_ → ____○_ +┏┛墓┗┓...(((m -__-)m +(/// ̄皿 ̄)○~ +(﹁ ﹁ )σ +ヾ(≧へ≦)〃 +o( ̄︶ ̄)n +o(* ̄▽ ̄*)o +Σ(  ̄д ̄;) +ヾ(^▽^*))) + ~( TロT)σ + ~( TロT)σ +゜゜┌┴o゜゜゜゜° + ( -人-)···-~=~≡~≡ ((+o+))) +((( (-h-) ))) +……(((\( ̄一 ̄)/))) +<( ‵□′)>───Cε(┬﹏┬)3 +ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)/ +_( ̄0 ̄)_ +((o_ _)'彡☆ +━((*′д`)爻(′д`*))━!!!! +└( ̄  ̄└)(┘ ̄  ̄)┘ +””\\( ̄ー ̄) ( ̄ー ̄)//”” +o(*≧▽≦)ツ┏━┓ +︿( ̄︶ ̄)︿ +( ^o)ρ┳┻┳°σ(o^ ) + (☆▽☆) +(o ̄Д ̄)<起床! ※=○☆(__*)Zzz +( *′д)/o(_ _)ozzZZ… +( ﹁ ﹁ ) ~~~ +o(* ̄3 ̄)o +(*  ̄)( ̄▽ ̄*)ゞ +(づ ̄ 3 ̄)づ... +∥WC||_·)╯ + ( ̄人 ̄)( ̄人:.;:…( ̄...:.;::..;::: .:;.…::;.:..:;.:... +( ̄▽ ̄)o∠※PAN!=.:*:'☆.:*:'★':* +*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 +▄︻┻┳═一∵∴∷∶∵ (∵_,∵)>>>> +( ▼▼)/鹵〈 巛巛巛 ( ◎_x)/ +(* ̄▽ ̄)( ̄▽:;.…::;.:.:::;..::;.:... +(;′⌒`) +z(-_-z)).....((s-_-)s +(  ̄ー ̄)——)-=======>-->> +\( ̄0 ̄)/ +(。_。) +━━∑( ̄□ ̄*|||━━化 +(ˉ▽ˉ;)... +┫♀旦 ̄)σ(呃……) +(σ`д′)σ +(σ`д′)σ +σ~ (`′メ  +(~ ̄▽ ̄)→))* ̄▽ ̄*)o +o( ̄▽ ̄*)ゞ)) ̄▽ ̄*)o +(′д` )…彡…彡 +(:D)┼─┤ +……o((≧▽≦o) +ヽ(*。>Д<)o゜ +\("▔□▔)/\("▔□▔)/ +( *︾▽︾) +(ノω<。)ノ))☆.。 +ヾ(   )ノ゛ヾ( °д)ノ゛ヾ(°д°)ノ゛ヾ(д° )ノ゛ヾ(  )ノ゛ + ヾ(*′▽`*)彡 +<(* ̄ー ̄)ゞ来呀~ +<(* ̄ー ̄)ゞ来啊~ +(/ω\*)……… (/ω·\*) +(/ω·\*) +Σ[ ◎ ]}ー′) +凸艹皿艹 +凸゜皿゜メ +( >ρ < ”) +(o ̄ω ̄)○))o(__*)Zzz +ヽ(゜▽゜ )-C<(/;◇;)/~ +o((≧▽≦o) 太好笑了!! +Σ(⊙▽⊙"a... + (* ̄rǒ ̄) +*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 +(← ← ) +( → →) +…〒_〒…‵o′-一┳═┻︻▄ +(#`O′) +( *^-^)ρ(^0^* ) +(* ̄;( ̄ *) +σ(· ·?) +(/▽\) +(。﹏。*) +||ヽ(* ̄▽ ̄*)ノミ|Ю +(~ ̄▽ ̄)~ +o(-"-;) +|(·_·) |·_·) |_·) |·) | ) +o( ̄ヘ ̄o* ) +o( ̄ヘ ̄o#) +( >﹏<。)~ +↑↑↓↓←→←→BA...┗( -o-)┛ +( ‵Д′)=○))~~~~~~Ю))>o<)/ +ヽ(ヽ `д′)ヽ`д′)ヽ`д′)┌┛┌┛┌┛★)`з゜)y +<( ‵□′)───C<─___-)|| +(o  ̄3)==@))゜ロ゜((@==(′ε′ )o  +(o  ̄3)==@))゜ロ゜((@==(′ε′ )o +((≧(≧▽(≧▽≦(≧▽≦)≧▽≦)▽≦)≦))) + ( _ _)ノ|壁 +╮(╯-╰)╭ +<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) +<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) +(╯▽╰ ) +(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... +<( ̄︶ ̄)↗ +( ‵▽′)ψ +☆⌒(*^-゜)v +(゜゜ )(。。)(゜゜ )(。。) +( ╯▽╰) +不>( ̄ε ̄ =  ̄3 ̄)< +( *⊙~⊙) +( *⊙~⊙) +(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... +( ̄ム ̄) +(9 ̄^ ̄)9 +(o゜▽゜)o☆ +||o(*°▽°*)o|Ю + +o(一︿一+)o +╔囧╗╔囧╝╚囧╝╚囧╗ +@o@" +X﹏X + o(* ̄▽ ̄*)ブ +(~ ̄(OO) ̄)ブ +(╯‵□′)╯···*~● +ˋ( ° ▽、° ) (o( ̄▽ ̄/// +( ̄︶ ̄)↗ +-______-" + o(〃'▽'〃)o +( `o′){ ···-=≡)) +( `o′){ ···-=≡)) +(o>ε(o>u(≧∩≦) +━━(o_ _)o━━(o―_―)o━━(9 ̄ー ̄)9 +( ゜,_ゝ゜) +(-"-) +o((>ω< ))o +o(>@<)o +( · ·)L☆ .....○ 冂 +ヨロ (*~▽~)ノ ヨロ ヽ(~▽~*)ヨロ (*~▽~)―〇 ☆ バシ ))>口<) +

    © 2010 @ag108lau
    Thanks @OnlyTiny
    +Last Update: 2010-11-13

    \ No newline at end of file diff --git a/inc/symbols.php b/inc/symbols.php deleted file mode 100644 index 60959dd..0000000 --- a/inc/symbols.php +++ /dev/null @@ -1,489 +0,0 @@ -┗|`O′|┛ -o(°▽、°o)....+(( ̄﹏ ̄m ) -槑槑槑槑呆槑槑槑槑槑槑槑槑…… -~o(▽` o) =3 =3 =3 -<铃铃铃~ヾ( ̄  ̄*)==3=3=3 -ヽ( ̄︿ ̄ )—C<(/;◇;)/ -ヾ( ┬o┬)┌θθθθ(;;_ _).o○ -o((>ω< ))o -o(≧口≦)o -╮( ̄▽ ̄")╭ -m(_ _)m -ヾ( ̄▽ ̄)Bye~Bye~ -▄︻┻┳═一…… ☆(>○<) -o(*≧▽≦)ツ -ヾ(≧▽≦*)o -o(≧口≦)o -(o゜▽゜)o☆ -( ̄ ‘i  ̄;) -( ̄ ii  ̄;) ( ̄" ̄;) -(⊙x⊙;) -(*^ ^*)(^ *) -(◎_x) -o( ̄┰ ̄*)ゞ -°.°·(((p(≧□≦)q)))·°.°。 -X﹏X 惨了! -q(≧▽≦q) -( ̄ c ̄)y▂ξ。。。 -<(  ̄^ ̄)(θ(θ☆( >_< -( ̄△ ̄;) -( ̄旦 ̄;) -━┳━ ━┳━ -Σ(`д′*ノ)ノ -Σ(っ °Д °;)っ -~( ̄▽ ̄~)(~ ̄▽ ̄)~ -<( ̄ˇ ̄)/ -┬┴┤_·) -("▔□▔) -(⊙﹏⊙) --________-'' -o(` · ~ · ′。)o -______λ......_____ -λ…λλ…λ…λλλ… -○| ̄|_ =3 -(╯′□`)╯ ┫:·'∵:.┻┻:·'.:┣∵·:. ┳┳☆ -(╯‵□′)╯""┻━┻☆))>○<) -┻━┻︵╰(‵□′)╯︵┻━┻ -︿( ̄︶ ̄)︿ -ヾ(≧奋≦)〃 -French (* ̄( ̄ *) Kiss! -( ̄ˇ ̄)v -fufu~ ^u^ -( σ'ω')σ -o(>O<;; )σ -┳G┻┳F┳┻W┫ -(┘ ̄︶ ̄)┘└( ̄︶ ̄└) -<( ̄︶ ̄)↗ -<( ̄OO, ̄)/ -Good! o( ̄▽ ̄)d -______λ......_____ -( ̄┰ ̄*) -(#°Д°) -O口O! -Σ(⊙▽⊙"a... -o(*≧▽≦)ツ -( ̄_ ̄|||) -( ̄▽ ̄") -(寒 ̄ii ̄)彡…彡…彡 -o(* ̄▽ ̄*)o -【】\(·ω·`)o -o(* ̄▽ ̄*)ゞ -( -з) -(;′⌒`) -(ε- ) -o( ̄ヘ ̄o#) -( ̄▽ ̄") -o(* ̄▽ ̄*)o -^-^ -^O^ -Hi~ o(* ̄▽ ̄*)ブ -( ·_·)ノ_·)ノ_·)ノ_·)ノ_·)ノ -○( ^皿^)っHiahiahia.... -( ̄y▽ ̄)╭ Ohohoho..... -hoho ^O^ -(_ _)。゜zzZ -Σ( ° △ °|||)︴ -Σ(`д′*ノ)ノ -Σ(っ °Д °;)っ -┗|*`0′*|┛ -( -'`-; ) -o(′益`)o -(  ̄ー ̄)人(^▽^ ) -n(*≧▽≦*)n -(°°)~ (°°)~ (°°)~ (°°)~ - (* ̄( ̄ *) -ˋ( ° ▽、° ) 口水ing... - ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)> -m( =∩王∩= )m -(┳_┳)... -/(ㄒoㄒ)/~~ -卐~%?…,# *'☆&℃$︿★? -o(* ̄︶ ̄*)o -o( ̄ˇ ̄)o -o( =·ω·= )m -o(=·ェ·=)m -MIN■■■■■□□MAX -(/ ̄ˇ ̄)/ -(。人。) -mmm...f('︶︿︶)o -mmm..... -Capricorn -mua! (*╯3╰) ---\(˙<>˙)/-- -~( ̄▽ ̄)~* -(#‵′) -(o#゜ 曲゜)o -MIN■■■■■□□MAX(╯‵□′)╯︵┻━┻ -ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)ノ -(⊙o⊙)? -Oh~ no!!!! -Oh yeah!\(^&^)/ -OK -λ…λλ…λ…入λλ… -ε = = (づ′▽`)づ -ε=ε=ε=(~ ̄▽ ̄)~ -ヾ(*′▽`*)ノ彡☆ノヽノヽノヽ -ヾ(′▽`* )ノ~ -( ̄ε(# ̄)☆╰╮o( ̄▽ ̄///) -Pia!(o ‵-′)ノ”(ノ﹏<。) -(~ ̄▽ ̄)~ -(~o ̄3 ̄)~ -.....((/- -)/ -▄︻┻┳═一…… -(ˉ▽ ̄~) 切~~ -( ^ ^) _U~~ -(╬ ̄皿 ̄)=○#( ̄#)3 ̄) -(Д゜(○=(゜ 皿゜)=○)゜Д゜) -<(-︿-)> -shy~ o(*////▽////*)q -( ′ 3`) sigh~ -三三三三三三三三三4(o|o ) - (o ‵-′)ノ”(ノ_<。) -<(  ̄^ ̄)(θ(θ☆( >_< -╮( ╯ 3 ╰ )╭ -╮( ̄▽ ̄")╭ -╮(╯-╰)╭ -ㄟ( ▔, ▔ )ㄏ -ε=ε=┏( >_<)┛ -ε=ε=ε=┏(゜ロ゜;)┛ -ε=ε=ε=ε=ヽ(* ̄o ̄)ノ -o(≧∩≦)o -o(TヘTo) -☆⌒(*^-゜)v THX!! -|壁|_☆) -┬┴┤_·) -n(→_←)┛ -o( >﹏<。)┛ -0^)吞! -( ̄┰ ̄*) -(PД`q。)·。'゜ -<( ̄▽ ̄)/ -∥wc∥ o(- -o) =з =з =з -(﹁"﹁) -╥﹏╥... -σ(⌒ー⌒) -@/" -wow~⊙o⊙ -ㄟ( ▔, ▔ )ㄏ -( ﹁ ﹁ ) ~→ -( ̄. ̄)+ -(﹁"﹁) -...ψ(。。 ) -o(* ̄▽ ̄*)o -(* ̄(エ) ̄) -(+(工)+╬) -o(*////▽////*)q -p(# ̄▽ ̄#)o -卐~%?…,# *'☆&℃$︿★?…… -╳╳○○ -(* ̄︶ ̄)y -(* ̄▽ ̄)y -^_^)y -━┳━ ━┳━ -ag108lau -Yes,sir! <( ̄O ̄)/ -╭(′▽`)╭(′▽`)╯ -ヽ( ̄ω ̄( ̄ω ̄〃)ゝ -(^U^)ノ~YO ->°)))>彡 -(((φ(◎ロ◎;)φ))) -Σ[ ◎ ]} -<( ̄ ﹌  ̄)@m -^(* ̄(oo) ̄)^ -W( ̄_ ̄)W -┳G┻F┳W┫☆(ノ﹏<。) ---==≡≡〈〈《( / ̄皿 ̄)=O));>o<)/ -ZZzz…(。-ω-)..ooO((【·:*:~夢~:*:·】)) -( ̄y▽, ̄)╭ - o(* ̄▽ ̄*)ブ -(o|o) -ヾ(≧O≦)〃 -(o|o) -(-人-) -(^人^) -ヾ(′▽`*)ゝ -ヾ(′▽`*)ゝ -━((*′ ▽`)爻(′▽`*))━!!! -━((*′д`)爻(′д`*))━!!!! -\( ̄︶ ̄)/ -\( ̄︶ ̄*\)) -(′゜c_,゜` ) -╭∩╮(︶︿︶)╭∩╮ -(  ̄  ̄)σ…( _ _)ノ| -(  ̄  ̄)σ…( _ _)ノ| -ノ ̄ー ̄)ノ ⌒ >┼○"☆|| -o(′益`)o -§(* ̄▽ ̄*)§ -<( ̄3 ̄)> -______λ......___丬 -(* ̄︿ ̄) -(PД`q。)·。'゜ -(*  ̄3)(ε ̄ *) -( *^-^)ρ(*╯^╰) -(@_@;)? -(* ̄︿ ̄) -ㄟ( ▔, ▔ )ㄏ -( ̄_, ̄ ) -(ノへ ̄、) -(o′┏▽┓`o) -( ·ェ·)(·ェ· ) -(*≧︶≦))( ̄▽ ̄* )ゞ -( * ̄▽ ̄)((≧︶≦*) -<)。(> -ε~( ~( ~ ( 卍 )\( ̄▽ ̄ \) -(# ̄□ ̄)o―∈‥oo━━━━━━━☆ -●┻┓⌒ Σ┌┘車└┐=3 =3 =3 -.....(((((ヾ( o=^·ェ·)o ┏━┓ -( `0‘)ノ~~~~~~~~~ν -(。>︿<)_θ -___*\(  ̄皿 ̄)/#____ -( ̄ε(# ̄)☆╰╮( ̄▽ ̄///) -(ノへ ̄、) -(ノへ ̄、) -Pia!(o ‵-′)ノ” -ε=ε┣G┻F┳ε=ヽ(* ̄▽ ̄)ノ┻W┫ -→)╥﹏╥) -( * ̄▽ ̄)o ─═≡※:☆▆▅▄▃▂_ -(_ _)( - . - )(~O~) ……( - . - ) -(′台` ) - ━┳━ ━┳━ -━━( ̄ー ̄*|||━━ -<(ˉ^ˉ)> -(-_-メ) -...(* ̄0 ̄)ノ - (#`-_ゝ-) -(。﹏。) -(。_。) -( ̄ー ̄(_ _( ̄ー ̄(_ _ -(┬_┬)↘ -d=====( ̄▽ ̄*)b -!!!(  ̄O ̄)ノノ……∞∞OOO))) -!!!(  ̄O ̄)ノノ……∞∞OOO))) -o((⊙﹏⊙))o. -o( ̄ε ̄*) -(○` 3′○) - <(_ _)> -(ˉ▽ˉ;) -σ(-_-メ) -(╯‵□′)╯︵┻━┻ -(((\( ̄一 ̄)/))) - ||Φ|(|T|Д|T|)|Φ|| - (* ̄3 ̄)╭ ->( ̄▽ ̄ =  ̄︿ ̄)< - (/-_-)/ξ ξ ξ ξ ξ ξ (+_+ /)/~~~ -乀ˉεˉ乀... -(-@y@) -(-@y@) -...:.;::..;::: .:.;::….;: ̄)…:.;:□ ̄)( ̄□ ̄*) -.<{=.... -( ̄▽ ̄)~■□~( ̄▽ ̄) -~( ̄▽ ̄)~* -o(*≧▽≦*)m -(* ̄▽)u┌┐ d(▽ ̄*) -(′д`σ)σ -╰( ̄▽ ̄)╭ -U·ェ·*U -U·ェ·U -””\\( ̄ー ̄) ( ̄ー ̄)//”” -└( ̄  ̄└)(┘ ̄  ̄)┘ -o(*^@^*)o -……~(~o ̄▽ ̄)~o 。。。……o~(_△_o~) ~。。。 -(ToT)/~~~ -o(*^▽^*)o -╮╯-╰╭" -( >﹏<) -(╯▽╰ ) -(o゜▽゜)o☆ -( ′Д`)彡 -( ̄。。 ̄) - ┌(_Д_┌ )┐ - ┌(_Д_┌ )┐ -ε=( ̄。 ̄;A -(/0 ̄)o - ~( TロT)σ -((( ̄( ̄( ̄( ̄ー ̄) ̄) ̄) ̄))) -(@^^)/~~~ -(* ̄皿 ̄)=Σ口>=Σ口>=Σ口> -ヾ( ̄ー ̄)X(^▽^)ゞ -(〃 ̄︶ ̄)人( ̄︶ ̄〃) -o^^oo^^o - (o^~^)尸" -||┣(—_\) -<( ̄ ﹌  ̄)@m - (@゜▽゜) - (@`д′) -o(*^▽^*)┛ -┗( T﹏T )┛ -( ̄~ ̄) - ...φ(0 ̄*)啦啦啦_φ(* ̄0 ̄)′ -(°ー°〃) -(@^0^) -( ‵▽′)ノ'卍卍卍卍卍卍 Σ(゜д゜;) - ( `д′) ->< - ( -'`-; ) -┗(`o′)┓哼┏(`○′)┛哼┏(`o′)┓哈┗(`O′)┛兮!! -(o-ωq)).oO -...φ(0 ̄*)_φ(* ̄0 ̄)> -(~o ̄▽ ̄)~o ~。。。 -(o ;′Д`)ノ゛ -(  ̄ー ̄) -(*/ω\*) -(*/ω\*) -(*ˉ﹃ˉ)_☆☆ -(* ̄^ ̄(* ̄^ ̄(* ̄^ ̄) -☆{{{Д}}} ☆!! -(· ·)nnn -╮( ̄▽ ̄")╭ -||o(*°ω°*)o|Ю -ο(=·ω<=)ρ⌒☆ -(一-一) -o( =∩ω∩= )m ->▽< -<(* ̄▽ ̄*)/ -( ̄_, ̄ ) -ε(┬┬﹏┬┬)3 -(~ ̄▽ ̄)ノ -╰( ̄ω ̄o) -_| ̄|○ → _|\○_ → _/\○_ → ____○_ -┏┛墓┗┓...(((m -__-)m -(/// ̄皿 ̄)○~ -(﹁ ﹁ )σ -ヾ(≧へ≦)〃 -o( ̄︶ ̄)n -o(* ̄▽ ̄*)o -Σ(  ̄д ̄;) -ヾ(^▽^*))) - ~( TロT)σ - ~( TロT)σ -゜゜┌┴o゜゜゜゜° - ( -人-)···-~=~≡~≡ ((+o+))) -((( (-h-) ))) -……(((\( ̄一 ̄)/))) -<( ‵□′)>───Cε(┬﹏┬)3 -ε=怒ε=怒ε=怒ε=怒ε=( o`ω′)/ -_( ̄0 ̄)_ -((o_ _)'彡☆ -━((*′д`)爻(′д`*))━!!!! -└( ̄  ̄└)(┘ ̄  ̄)┘ -””\\( ̄ー ̄) ( ̄ー ̄)//”” -o(*≧▽≦)ツ┏━┓ -︿( ̄︶ ̄)︿ -( ^o)ρ┳┻┳°σ(o^ ) - (☆▽☆) -(o ̄Д ̄)<起床! ※=○☆(__*)Zzz -( *′д)/o(_ _)ozzZZ… -( ﹁ ﹁ ) ~~~ -o(* ̄3 ̄)o -(*  ̄)( ̄▽ ̄*)ゞ -(づ ̄ 3 ̄)づ... -∥WC||_·)╯ - ( ̄人 ̄)( ̄人:.;:…( ̄...:.;::..;::: .:;.…::;.:..:;.:... -( ̄▽ ̄)o∠※PAN!=.:*:'☆.:*:'★':* -*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 -▄︻┻┳═一∵∴∷∶∵ (∵_,∵)>>>> -( ▼▼)/鹵〈 巛巛巛 ( ◎_x)/ -(* ̄▽ ̄)( ̄▽:;.…::;.:.:::;..::;.:... -(;′⌒`) -z(-_-z)).....((s-_-)s -(  ̄ー ̄)——)-=======>-->> -\( ̄0 ̄)/ -(。_。) -━━∑( ̄□ ̄*|||━━化 -(ˉ▽ˉ;)... -┫♀旦 ̄)σ(呃……) -(σ`д′)σ -(σ`д′)σ -σ~ (`′メ  -(~ ̄▽ ̄)→))* ̄▽ ̄*)o -o( ̄▽ ̄*)ゞ)) ̄▽ ̄*)o -(′д` )…彡…彡 -(:D)┼─┤ -……o((≧▽≦o) -ヽ(*。>Д<)o゜ -\("▔□▔)/\("▔□▔)/ -( *︾▽︾) -(ノω<。)ノ))☆.。 -ヾ(   )ノ゛ヾ( °д)ノ゛ヾ(°д°)ノ゛ヾ(д° )ノ゛ヾ(  )ノ゛ - ヾ(*′▽`*)彡 -<(* ̄ー ̄)ゞ来呀~ -<(* ̄ー ̄)ゞ来啊~ -(/ω\*)……… (/ω·\*) -(/ω·\*) -Σ[ ◎ ]}ー′) -凸艹皿艹 -凸゜皿゜メ -( >ρ < ”) -(o ̄ω ̄)○))o(__*)Zzz -ヽ(゜▽゜ )-C<(/;◇;)/~ -o((≧▽≦o) 太好笑了!! -Σ(⊙▽⊙"a... - (* ̄rǒ ̄) -*★,°*:.☆\( ̄▽ ̄)/$:*.°★* 。 -(← ← ) -( → →) -…〒_〒…‵o′-一┳═┻︻▄ -(#`O′) -( *^-^)ρ(^0^* ) -(* ̄;( ̄ *) -σ(· ·?) -(/▽\) -(。﹏。*) -||ヽ(* ̄▽ ̄*)ノミ|Ю -(~ ̄▽ ̄)~ -o(-"-;) -|(·_·) |·_·) |_·) |·) | ) -o( ̄ヘ ̄o* ) -o( ̄ヘ ̄o#) -( >﹏<。)~ -↑↑↓↓←→←→BA...┗( -o-)┛ -( ‵Д′)=○))~~~~~~Ю))>o<)/ -ヽ(ヽ `д′)ヽ`д′)ヽ`д′)┌┛┌┛┌┛★)`з゜)y -<( ‵□′)───C<─___-)|| -(o  ̄3)==@))゜ロ゜((@==(′ε′ )o  -(o  ̄3)==@))゜ロ゜((@==(′ε′ )o -((≧(≧▽(≧▽≦(≧▽≦)≧▽≦)▽≦)≦))) - ( _ _)ノ|壁 -╮(╯-╰)╭ -<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) -<(  ̄︿ ̄)︵θ︵θ︵θ︵θ︵☆(>口<-) -(╯▽╰ ) -(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... -<( ̄︶ ̄)↗ -( ‵▽′)ψ -☆⌒(*^-゜)v -(゜゜ )(。。)(゜゜ )(。。) -( ╯▽╰) -不>( ̄ε ̄ =  ̄3 ̄)< -( *⊙~⊙) -( *⊙~⊙) -(* ̄□ ̄)( ̄□:;.…::;.:.:::;..::;.:... -( ̄ム ̄) -(9 ̄^ ̄)9 -(o゜▽゜)o☆ -||o(*°▽°*)o|Ю - -o(一︿一+)o -╔囧╗╔囧╝╚囧╝╚囧╗ -@o@" -X﹏X - o(* ̄▽ ̄*)ブ -(~ ̄(OO) ̄)ブ -(╯‵□′)╯···*~● -ˋ( ° ▽、° ) (o( ̄▽ ̄/// -( ̄︶ ̄)↗ --______-" - o(〃'▽'〃)o -( `o′){ ···-=≡)) -( `o′){ ···-=≡)) -(o>ε(o>u(≧∩≦) -━━(o_ _)o━━(o―_―)o━━(9 ̄ー ̄)9 -( ゜,_ゝ゜) -(-"-) -o((>ω< ))o -o(>@<)o -( · ·)L☆ .....○ 冂 -ヨロ (*~▽~)ノ ヨロ ヽ(~▽~*)ヨロ (*~▽~)―〇 ☆ バシ ))>口<) -

    © 2010 @ag108lau
    Thanks @OnlyTiny
    -Last Update: 2010-03-12 -

    \ No newline at end of file diff --git a/inc/trends.php b/inc/trends.php index 8e767db..8a9b6cf 100644 --- a/inc/trends.php +++ b/inc/trends.php @@ -1,29 +1,29 @@ -trends)){ - return false; - } - $html = ''; - foreach ($trends->trends as $trend) { - $li = ' -
  • - '.$trend->name.' -
  • - '; - $html .= $li; - } - - return $html; - } -?> +trends)){ + return false; + } + $html = ''; + foreach ($trends->trends as $trend) { + $li = ' +
  • + '.$trend->name.' +
  • + '; + $html .= $li; + } + + return $html; + } +?> diff --git a/inc/userlist.php b/inc/userlist.php index 34b9af8..c75edb6 100644 --- a/inc/userlist.php +++ b/inc/userlist.php @@ -93,24 +93,23 @@ } echo '
    '; - $p = -1; switch ($type) { case 'blocks': $userlist = $t->blockingList($id, $p); - $next_page = $userlist->next_cursor; - $previous_page = $userlist->previous_cursor; + $next_page = $userlist->next_cursor_str; + $previous_page = $userlist->previous_cursor_str; $userlist = $userlist->users; break; case 'friends': $userlist = $t->friends($id, $p); - $next_page = $userlist->next_cursor; - $previous_page = $userlist->previous_cursor; + $next_page = $userlist->next_cursor_str; + $previous_page = $userlist->previous_cursor_str; $userlist = $userlist->users; break; case 'followers': $userlist = $t->followers($id, $p); - $next_page = $userlist->next_cursor; - $previous_page = $userlist->previous_cursor; + $next_page = $userlist->next_cursor_str; + $previous_page = $userlist->previous_cursor_str; $userlist = $userlist->users; break; case 'list_members': @@ -129,7 +128,7 @@ $userlist = $t->followers($id, $p); break; } - $empty = count($userlist) == 0? true: false; + $empty = count($userlist) == 0 ? true : false; if ($empty) { echo "
    No user to display.
    "; } else { @@ -154,18 +153,18 @@ } $output .= "
    "; if ($type == 'list_members' || $type == 'list_followers' || $type == 'blocks') { - if ($prelist != 0) $output .= "Back"; + if ($prelist != 0) $output .= "Back"; if ($nextlist != 0) $output .= "Next"; } else { if ($id) { - if ($p >0) - $output .= "Back"; - if ($next_page != 0) + if ($previous_page !== "0") + $output .= "Back"; + if ($next_page !== "0") $output .= "Next"; } else { - if ($p >0) - $output .= "Back"; - if ($next_page != 0) + if ($previous_page !== "0") + $output .= "Back"; + if ($next_page !== "0") $output .= "Next"; } } diff --git a/index.php b/index.php index ed9dc2c..1b5efad 100644 --- a/index.php +++ b/index.php @@ -31,31 +31,31 @@ homeTimeline($p); + $statuses = $t->homeTimeline($since_id, $max_id); if ($statuses == false) { header('location: error.php');exit(); } $count = count($statuses); - $empty = $count == 0 ? true: false; + $empty = $count == 0 ? true : false; if ($empty) { echo "
    No tweet to display.
    "; - } - else - { + } else if ($t->http_code == 429) { + echo "
    API quota is used out, please wait for a moment before next refresh.
    "; + } else { $output = '
      '; include('lib/timeline_format.php'); $maxid = isset($_COOKIE['maxid']) ? $_COOKIE['maxid'] : ''; + $firstid = false; + $lastid = false; foreach ($statuses as $status) { + if (!$firstid) $firstid = $status->id_str; + $lastid = $status->id_str; if($maxid == '' || $p == 1 || strcmp($status->id_str,$maxid) < 0) { if (isset($status->retweeted_status)) { $output .= format_retweet($status); @@ -64,18 +64,19 @@ } } } + $lastid = bcsub($lastid, "1"); $output .= "
    "; $time = $_SERVER['REQUEST_TIME']+3600; setcookie('maxid',$statuses[$count-1]->id_str,$time,'/'); - if ($p >1) $output .= "Back"; - if (!$empty) $output .= "Next"; + $output .= "Back"; + $output .= "Next"; + $output .= "
    "; echo $output; } ?>
    -
    '); - if (typeof uri == 'boolean') { - io.src = 'javascript:false'; - } - else if (typeof uri == 'string') { - io.src = uri; - } - } - else { - var io = document.createElement('iframe'); - io.id = frameId; - io.name = frameId; - } - io.style.position = 'absolute'; - io.style.top = '-1000px'; - io.style.left = '-1000px'; - document.body.appendChild(io); - return io - }, - createUploadForm: function (id, fileElementId) { - //create form - var formId = 'jUploadForm' + id; - var fileId = 'jUploadFile' + id; - var form = $('
    '); - var oldElement = $('#' + fileElementId); - var newElement = $(oldElement).clone(); - $(oldElement).attr('id', fileId); - $(oldElement).before(newElement); - $(oldElement).appendTo(form); - //set attributes - $(form).css('position', 'absolute'); - $(form).css('top', '-1200px'); - $(form).css('left', '-1200px'); - $(form).appendTo('body'); - return form; - }, - ajaxFileUpload: function (s) { - // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout - s = jQuery.extend({}, jQuery.ajaxSettings, s); - var id = new Date().getTime() - var form = jQuery.createUploadForm(id, s.fileElementId); - var io = jQuery.createUploadIframe(id, s.secureuri); - var frameId = 'jUploadFrame' + id; - var formId = 'jUploadForm' + id; - // Watch for a new set of requests - if (s.global && !jQuery.active++) { - jQuery.event.trigger("ajaxStart"); - } - var requestDone = false; - // Create the request object - var xml = {} - if (s.global) jQuery.event.trigger("ajaxSend", [xml, s]); - // Wait for a response to come back - var uploadCallback = function (isTimeout) { - var io = document.getElementById(frameId); - try { - if (io.contentWindow) { - xml.responseText = io.contentWindow.document.body ? io.contentWindow.document.body.innerHTML : null; - xml.responseXML = io.contentWindow.document.XMLDocument ? io.contentWindow.document.XMLDocument : io.contentWindow.document; - } else if (io.contentDocument) { - xml.responseText = io.contentDocument.document.body ? io.contentDocument.document.body.innerHTML : null; - xml.responseXML = io.contentDocument.document.XMLDocument ? io.contentDocument.document.XMLDocument : io.contentDocument.document; - } - } catch (e) { - jQuery.handleError(s, xml, null, e); - } - if (xml || isTimeout == "timeout") { - requestDone = true; - var status; - try { - status = isTimeout != "timeout" ? "success" : "error"; - // Make sure that the request was successful or notmodified - if (status != "error") { - // process the data (runs the xml through httpData regardless of callback) - var data = jQuery.uploadHttpData(xml, s.dataType); - // If a local callback was specified, fire it and pass it the data - if (s.success) s.success(data, status); - // Fire the global callback - if (s.global) jQuery.event.trigger("ajaxSuccess", [xml, s]); - } else jQuery.handleError(s, xml, status); - } catch (e) { - status = "error"; - jQuery.handleError(s, xml, status, e); - } - // The request was completed - if (s.global) jQuery.event.trigger("ajaxComplete", [xml, s]); - // Handle the global AJAX counter - if (s.global && !--jQuery.active) jQuery.event.trigger("ajaxStop"); - // Process result - if (s.complete) s.complete(xml, status); - jQuery(io).unbind() - setTimeout(function () { - try { - $(io).remove(); - $(form).remove(); - } catch (e) { - jQuery.handleError(s, xml, null, e); - } - }, 100) - xml = null - } - } - // Timeout checker - if (s.timeout > 0) { - setTimeout(function () { - // Check to see if the request is still happening - if (!requestDone) uploadCallback("timeout"); - }, s.timeout); - } - try { - // var io = $('#' + frameId); - var form = $('#' + formId); - $(form).attr('action', s.url); - $(form).attr('method', 'POST'); - $(form).attr('target', frameId); - if (form.encoding) { - form.encoding = 'multipart/form-data'; - } - else { - form.enctype = 'multipart/form-data'; - } - $(form).submit(); - } catch (e) { - jQuery.handleError(s, xml, null, e); - } - if (window.attachEvent) { - document.getElementById(frameId).attachEvent('onload', uploadCallback); - } - else { - document.getElementById(frameId).addEventListener('load', uploadCallback, false); - } - return { - abort: function () {} - }; - }, - uploadHttpData: function (r, type) { - var data = !type; - data = type == "xml" || data ? r.responseXML : r.responseText; - // If the type is "script", eval it in global context - if (type == "script") jQuery.globalEval(data); - // Get the JavaScript object, if JSON is used. - if (type == "json") eval("data = " + data); - // evaluate scripts within html - if (type == "html") jQuery("
    ").html(data).evalScripts(); - return data; - } -}) \ No newline at end of file diff --git a/js/btns.js b/js/btns.js index 663fdc7..004d12b 100644 --- a/js/btns.js +++ b/js/btns.js @@ -1,50 +1,50 @@ -$(function(){ - formFunc(); - $("ol.timeline").live("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': - case 'unrt_btn': - e.preventDefault(); - onUndoRt($this); - break; - case 'msg_replie_btn': - e.preventDefault(); - onReplieDM($this); - break; - case 'msg_delete_btn': - e.preventDefault(); - onDeleteMsg($this); - break; - } - }); - $("#submit_btn").click(function(e){ - updateStatus(); - e.preventDefault(); - }); - }); +$(function(){ + formFunc(); + $("ol.timeline").live("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': + case 'unrt_btn': + e.preventDefault(); + onUndoRt($this); + break; + case 'msg_replie_btn': + e.preventDefault(); + onReplieDM($this); + break; + case 'msg_delete_btn': + e.preventDefault(); + onDeleteMsg($this); + break; + } + }); + $("#submit_btn").click(function(e){ + updateStatus(); + e.preventDefault(); + }); + }); diff --git a/js/colorpicker3.js b/js/colorpicker3.js deleted file mode 100644 index 99b48ec..0000000 --- a/js/colorpicker3.js +++ /dev/null @@ -1,484 +0,0 @@ -/** - * - * Color picker - * Author: Stefan Petre www.eyecon.ro - * - * Dual licensed under the MIT and GPL licenses - * - */ -(function ($) { - var ColorPicker = function () { - var - ids = {}, - inAction, - charMin = 65, - visible, - tpl = '
    ', - defaults = { - eventName: 'click', - onShow: function () {}, - onBeforeShow: function(){}, - onHide: function () {}, - onChange: function () {}, - onSubmit: function () {}, - color: 'ff0000', - livePreview: true, - flat: false - }, - fillRGBFields = function (hsb, cal) { - var rgb = HSBToRGB(hsb); - $(cal).data('colorpicker').fields - .eq(1).val(rgb.r).end() - .eq(2).val(rgb.g).end() - .eq(3).val(rgb.b).end(); - }, - fillHSBFields = function (hsb, cal) { - $(cal).data('colorpicker').fields - .eq(4).val(hsb.h).end() - .eq(5).val(hsb.s).end() - .eq(6).val(hsb.b).end(); - }, - fillHexFields = function (hsb, cal) { - $(cal).data('colorpicker').fields - .eq(0).val(HSBToHex(hsb)).end(); - }, - setSelector = function (hsb, cal) { - $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100})); - $(cal).data('colorpicker').selectorIndic.css({ - left: parseInt(150 * hsb.s/100, 10), - top: parseInt(150 * (100-hsb.b)/100, 10) - }); - }, - setHue = function (hsb, cal) { - $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10)); - }, - setCurrentColor = function (hsb, cal) { - $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb)); - }, - setNewColor = function (hsb, cal) { - $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb)); - }, - keyDown = function (ev) { - var pressedKey = ev.charCode || ev.keyCode || -1; - if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) { - return false; - } - var cal = $(this).parent().parent(); - if (cal.data('colorpicker').livePreview === true) { - change.apply(this); - } - }, - change = function (ev) { - var cal = $(this).parent().parent(), col; - if (this.parentNode.className.indexOf('_hex') > 0) { - cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value)); - } else if (this.parentNode.className.indexOf('_hsb') > 0) { - cal.data('colorpicker').color = col = fixHSB({ - h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10), - s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10), - b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10) - }); - } else { - cal.data('colorpicker').color = col = RGBToHSB(fixRGB({ - r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10), - g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10), - b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10) - })); - } - if (ev) { - fillRGBFields(col, cal.get(0)); - fillHexFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - } - setSelector(col, cal.get(0)); - setHue(col, cal.get(0)); - setNewColor(col, cal.get(0)); - cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); - }, - blur = function (ev) { - var cal = $(this).parent().parent(); - cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus'); - }, - focus = function () { - charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65; - $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus'); - $(this).parent().addClass('colorpicker_focus'); - }, - downIncrement = function (ev) { - var field = $(this).parent().find('input').focus(); - var current = { - el: $(this).parent().addClass('colorpicker_slider'), - max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), - y: ev.pageY, - field: field, - val: parseInt(field.val(), 10), - preview: $(this).parent().parent().data('colorpicker').livePreview - }; - $(document).bind('mouseup', current, upIncrement); - $(document).bind('mousemove', current, moveIncrement); - }, - moveIncrement = function (ev) { - ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10)))); - if (ev.data.preview) { - change.apply(ev.data.field.get(0), [true]); - } - return false; - }, - upIncrement = function (ev) { - change.apply(ev.data.field.get(0), [true]); - ev.data.el.removeClass('colorpicker_slider').find('input').focus(); - $(document).unbind('mouseup', upIncrement); - $(document).unbind('mousemove', moveIncrement); - return false; - }, - downHue = function (ev) { - var current = { - cal: $(this).parent(), - y: $(this).offset().top - }; - current.preview = current.cal.data('colorpicker').livePreview; - $(document).bind('mouseup', current, upHue); - $(document).bind('mousemove', current, moveHue); - }, - moveHue = function (ev) { - change.apply( - ev.data.cal.data('colorpicker') - .fields - .eq(4) - .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10)) - .get(0), - [ev.data.preview] - ); - return false; - }, - upHue = function (ev) { - fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); - fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); - $(document).unbind('mouseup', upHue); - $(document).unbind('mousemove', moveHue); - return false; - }, - downSelector = function (ev) { - var current = { - cal: $(this).parent(), - pos: $(this).offset() - }; - current.preview = current.cal.data('colorpicker').livePreview; - $(document).bind('mouseup', current, upSelector); - $(document).bind('mousemove', current, moveSelector); - }, - moveSelector = function (ev) { - change.apply( - ev.data.cal.data('colorpicker') - .fields - .eq(6) - .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10)) - .end() - .eq(5) - .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10)) - .get(0), - [ev.data.preview] - ); - return false; - }, - upSelector = function (ev) { - fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); - fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); - $(document).unbind('mouseup', upSelector); - $(document).unbind('mousemove', moveSelector); - return false; - }, - enterSubmit = function (ev) { - $(this).addClass('colorpicker_focus'); - }, - leaveSubmit = function (ev) { - $(this).removeClass('colorpicker_focus'); - }, - clickSubmit = function (ev) { - var cal = $(this).parent(); - var col = cal.data('colorpicker').color; - cal.data('colorpicker').origColor = col; - setCurrentColor(col, cal.get(0)); - cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el); - }, - show = function (ev) { - var cal = $('#' + $(this).data('colorpickerId')); - cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]); - var pos = $(this).offset(); - var viewPort = getViewport(); - var top = pos.top + this.offsetHeight; - var left = pos.left; - if (top + 176 > viewPort.t + viewPort.h) { - top -= this.offsetHeight + 176; - } - if (left + 356 > viewPort.l + viewPort.w) { - left -= 356; - } - cal.css({left: left + 'px', top: top + 'px'}); - if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { - cal.show(); - } - $(document).bind('mousedown', {cal: cal}, hide); - return false; - }, - hide = function (ev) { - if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) { - if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) { - ev.data.cal.hide(); - } - $(document).unbind('mousedown', hide); - } - }, - isChildOf = function(parentEl, el, container) { - if (parentEl == el) { - return true; - } - if (parentEl.contains) { - return parentEl.contains(el); - } - if ( parentEl.compareDocumentPosition ) { - return !!(parentEl.compareDocumentPosition(el) & 16); - } - var prEl = el.parentNode; - while(prEl && prEl != container) { - if (prEl == parentEl) - return true; - prEl = prEl.parentNode; - } - return false; - }, - getViewport = function () { - var m = document.compatMode == 'CSS1Compat'; - return { - l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), - t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop), - w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth), - h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight) - }; - }, - fixHSB = function (hsb) { - return { - h: Math.min(360, Math.max(0, hsb.h)), - s: Math.min(100, Math.max(0, hsb.s)), - b: Math.min(100, Math.max(0, hsb.b)) - }; - }, - fixRGB = function (rgb) { - return { - r: Math.min(255, Math.max(0, rgb.r)), - g: Math.min(255, Math.max(0, rgb.g)), - b: Math.min(255, Math.max(0, rgb.b)) - }; - }, - fixHex = function (hex) { - var len = 6 - hex.length; - if (len > 0) { - var o = []; - for (var i=0; i -1) ? hex.substring(1) : hex), 16); - return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; - }, - HexToHSB = function (hex) { - return RGBToHSB(HexToRGB(hex)); - }, - RGBToHSB = function (rgb) { - var hsb = { - h: 0, - s: 0, - b: 0 - }; - var min = Math.min(rgb.r, rgb.g, rgb.b); - var max = Math.max(rgb.r, rgb.g, rgb.b); - var delta = max - min; - hsb.b = max; - if (max != 0) { - - } - hsb.s = max != 0 ? 255 * delta / max : 0; - if (hsb.s != 0) { - if (rgb.r == max) { - hsb.h = (rgb.g - rgb.b) / delta; - } else if (rgb.g == max) { - hsb.h = 2 + (rgb.b - rgb.r) / delta; - } else { - hsb.h = 4 + (rgb.r - rgb.g) / delta; - } - } else { - hsb.h = -1; - } - hsb.h *= 60; - if (hsb.h < 0) { - hsb.h += 360; - } - hsb.s *= 100/255; - hsb.b *= 100/255; - return hsb; - }, - HSBToRGB = function (hsb) { - var rgb = {}; - var h = Math.round(hsb.h); - var s = Math.round(hsb.s*255/100); - var v = Math.round(hsb.b*255/100); - if(s == 0) { - rgb.r = rgb.g = rgb.b = v; - } else { - var t1 = v; - var t2 = (255-s)*v/255; - var t3 = (t1-t2)*(h%60)/60; - if(h==360) h = 0; - if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} - else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} - else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} - else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} - else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} - else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} - else {rgb.r=0; rgb.g=0; rgb.b=0} - } - return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; - }, - RGBToHex = function (rgb) { - var hex = [ - rgb.r.toString(16), - rgb.g.toString(16), - rgb.b.toString(16) - ]; - $.each(hex, function (nr, val) { - if (val.length == 1) { - hex[nr] = '0' + val; - } - }); - return hex.join(''); - }, - HSBToHex = function (hsb) { - return RGBToHex(HSBToRGB(hsb)); - }, - restoreOriginal = function () { - var cal = $(this).parent(); - var col = cal.data('colorpicker').origColor; - cal.data('colorpicker').color = col; - fillRGBFields(col, cal.get(0)); - fillHexFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - setSelector(col, cal.get(0)); - setHue(col, cal.get(0)); - setNewColor(col, cal.get(0)); - }; - return { - init: function (opt) { - opt = $.extend({}, defaults, opt||{}); - if (typeof opt.color == 'string') { - opt.color = HexToHSB(opt.color); - } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) { - opt.color = RGBToHSB(opt.color); - } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) { - opt.color = fixHSB(opt.color); - } else { - return this; - } - return this.each(function () { - if (!$(this).data('colorpickerId')) { - var options = $.extend({}, opt); - options.origColor = opt.color; - var id = 'collorpicker_' + parseInt(Math.random() * 1000); - $(this).data('colorpickerId', id); - var cal = $(tpl).attr('id', id); - if (options.flat) { - cal.appendTo(this).show(); - } else { - cal.appendTo(document.body); - } - options.fields = cal - .find('input') - .bind('keyup', keyDown) - .bind('change', change) - .bind('blur', blur) - .bind('focus', focus); - cal - .find('span').bind('mousedown', downIncrement).end() - .find('>div.colorpicker_current_color').bind('click', restoreOriginal); - options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector); - options.selectorIndic = options.selector.find('div div'); - options.el = this; - options.hue = cal.find('div.colorpicker_hue div'); - cal.find('div.colorpicker_hue').bind('mousedown', downHue); - options.newColor = cal.find('div.colorpicker_new_color'); - options.currentColor = cal.find('div.colorpicker_current_color'); - cal.data('colorpicker', options); - cal.find('div.colorpicker_submit') - .bind('mouseenter', enterSubmit) - .bind('mouseleave', leaveSubmit) - .bind('click', clickSubmit); - fillRGBFields(options.color, cal.get(0)); - fillHSBFields(options.color, cal.get(0)); - fillHexFields(options.color, cal.get(0)); - setHue(options.color, cal.get(0)); - setSelector(options.color, cal.get(0)); - setCurrentColor(options.color, cal.get(0)); - setNewColor(options.color, cal.get(0)); - if (options.flat) { - cal.css({ - position: 'relative', - display: 'block' - }); - } else { - $(this).bind(options.eventName, show); - } - } - }); - }, - showPicker: function() { - return this.each( function () { - if ($(this).data('colorpickerId')) { - show.apply(this); - } - }); - }, - hidePicker: function() { - return this.each( function () { - if ($(this).data('colorpickerId')) { - $('#' + $(this).data('colorpickerId')).hide(); - } - }); - }, - setColor: function(col) { - if (typeof col == 'string') { - col = HexToHSB(col); - } else if (col.r != undefined && col.g != undefined && col.b != undefined) { - col = RGBToHSB(col); - } else if (col.h != undefined && col.s != undefined && col.b != undefined) { - col = fixHSB(col); - } else { - return this; - } - return this.each(function(){ - if ($(this).data('colorpickerId')) { - var cal = $('#' + $(this).data('colorpickerId')); - cal.data('colorpicker').color = col; - cal.data('colorpicker').origColor = col; - fillRGBFields(col, cal.get(0)); - fillHSBFields(col, cal.get(0)); - fillHexFields(col, cal.get(0)); - setHue(col, cal.get(0)); - setSelector(col, cal.get(0)); - setCurrentColor(col, cal.get(0)); - setNewColor(col, cal.get(0)); - } - }); - } - }; - }(); - $.fn.extend({ - ColorPicker: ColorPicker.init, - ColorPickerHide: ColorPicker.hidePicker, - ColorPickerShow: ColorPicker.showPicker, - ColorPickerSetColor: ColorPicker.setColor - }); -})(jQuery) \ No newline at end of file diff --git a/js/favor.js b/js/favor.js deleted file mode 100644 index e8930ba..0000000 --- a/js/favor.js +++ /dev/null @@ -1,19 +0,0 @@ -$(function(){ - formFunc(); - $(".rt_btn").live("click", function(e){ - e.preventDefault(); - onRT($(this)); - }); - $(".replie_btn").live("click", function(e){ - e.preventDefault(); - onReplie($(this)); - }); - $(".delete_btn").click(function(e){ - e.preventDefault(); - onDelete($(this), "收藏"); - }); - $(".retw_btn").live("click", function(e){ - e.preventDefault(); - onNwRT($(this)); - }); -}); diff --git a/js/formfunc.js b/js/formfunc.js index 501e549..ac1e6ef 100644 --- a/js/formfunc.js +++ b/js/formfunc.js @@ -114,6 +114,7 @@ $(function (){ updateSentTip("Your image has been uploaded!", 3e3, "success"); $("#photoArea").slideToggle(100); }else{ + console.log(data); updateSentTip("Failed to upload, please try again.", 3e3, "failure"); $("#photoArea").slideToggle(100); } @@ -121,6 +122,7 @@ $(function (){ error: function (data, status, e){ updateSentTip("Failed to upload, please try again.", 3e3, "failure"); $("#photoArea").slideToggle(100); + console.log(data); } }) return false; diff --git a/js/jquery.js b/js/jquery.js index bb67c85..2f8f845 100644 --- a/js/jquery.js +++ b/js/jquery.js @@ -29,11 +29,718 @@ jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options //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("").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(""):a("
    ");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-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('
  • Loading... '+m.loadingText+"
  • ");(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); +/* + -------------------------------- + Infinite Scroll + -------------------------------- + + https://github.com/paulirish/infinite-scroll + + version 2.0b2.111027 + + Copyright 2011 Paul Irish & Luke Shumard + + Licensed under the MIT license + + + Documentation: http://infinite-scroll.com/ + +*/ + +(function (window, $, undefined) { + + $.infinitescroll = function infscr(options, callback, element) { + + this.element = $(element); + this._create(options, callback); + + }; + + $.infinitescroll.defaults = { + loading: { + finished: undefined, + finishedMsg: "Congratulations, you've reached the edge of the timeline.", + img: "img/square.gif", + msg: null, + msgText: "Loading more tweets...", + selector: null, + speed: 'fast', + start: undefined + }, + state: { + isDuringAjax: false, + isInvalidPage: false, + isDestroyed: false, + isDone: false, // For when it goes all the way through the archive. + isPaused: false, + currPage: 1 + }, + callback: undefined, + debug: false, + behavior: undefined, + binder: $(window), // used to cache the selector + nextSelector: "div.navigation a:first", + navSelector: "div.navigation", + contentSelector: null, // rename to pageFragment + extraScrollPx: 150, + itemSelector: "div.post", + animate: false, + pathParse: undefined, + dataType: 'html', + appendCallback: true, + bufferPx: 40, + errorCallback: function () { }, + infid: 0, //Instance ID + pixelsFromNavToBottom: undefined, + path: undefined + }; + + + $.infinitescroll.prototype = { + + /* + ---------------------------- + Private methods + ---------------------------- + */ + + // Bind or unbind from scroll + _binding: function infscr_binding(binding) { + + var instance = this, + opts = instance.options; + + opts.v = '2.0b2.111027'; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_binding_'+opts.behavior] !== undefined) { + this['_binding_'+opts.behavior].call(this); + return; + } + + if (binding !== 'bind' && binding !== 'unbind') { + this._debug('Binding value ' + binding + ' not valid') + return false; + } + + if (binding == 'unbind') { + + (this.options.binder).unbind('smartscroll.infscr.' + instance.options.infid); + + } else { + + (this.options.binder)[binding]('smartscroll.infscr.' + instance.options.infid, function () { + instance.scroll(); + }); + + }; + + this._debug('Binding', binding); + + }, + + // Fundamental aspects of the plugin are initialized + _create: function infscr_create(options, callback) { + + // If selectors from options aren't valid, return false + if (!this._validate(options)) { return false; } + // Define options and shorthand + var opts = this.options = $.extend(true, {}, $.infinitescroll.defaults, options), + // get the relative URL - everything past the domain name. + relurl = /(.*?\/\/).*?(\/.*)/, + path = $(opts.nextSelector).attr('href'); + + // contentSelector is 'page fragment' option for .load() / .ajax() calls + opts.contentSelector = opts.contentSelector || this.element; + + // loading.selector - if we want to place the load message in a specific selector, defaulted to the contentSelector + opts.loading.selector = opts.loading.selector || opts.contentSelector; + + // if there's not path, return + if (!path) { this._debug('Navigation selector not found'); return; } + + // Set the path to be a relative URL from root. + opts.path = this._determinepath(path); + + // Define loading.msg + opts.loading.msg = $('
    Loading...
    ' + opts.loading.msgText + '
    '); + + // Preload loading.img + (new Image()).src = opts.loading.img; + + // distance from nav links to bottom + // computed as: height of the document + top offset of container - top offset of nav link + opts.pixelsFromNavToBottom = $(document).height() - $(opts.navSelector).offset().top; + + // determine loading.start actions + opts.loading.start = opts.loading.start || function() { + + $(opts.navSelector).hide(); + opts.loading.msg + .appendTo(opts.loading.selector) + .show(opts.loading.speed, function () { + beginAjax(opts); + }); + }; + + // determine loading.finished actions + opts.loading.finished = opts.loading.finished || function() { + opts.loading.msg.fadeOut('normal'); + }; + + // callback loading + opts.callback = function(instance,data) { + if (!!opts.behavior && instance['_callback_'+opts.behavior] !== undefined) { + instance['_callback_'+opts.behavior].call($(opts.contentSelector)[0], data); + } + if (callback) { + callback.call($(opts.contentSelector)[0], data, opts); + } + }; + + this._setup(); + + }, + + // Console log wrapper + _debug: function infscr_debug() { + + if (this.options && this.options.debug) { + return window.console && console.log.call(console, arguments); + } + + }, + + // find the number to increment in the path. + _determinepath: function infscr_determinepath(path) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_determinepath_'+opts.behavior] !== undefined) { + this['_determinepath_'+opts.behavior].call(this,path); + return; + } + + if (!!opts.pathParse) { + + this._debug('pathParse manual'); + return opts.pathParse(path, this.options.state.currPage+1); + + } else if (path.match(/^(.*?)\b2\b(.*?$)/)) { + path = path.match(/^(.*?)\b2\b(.*?$)/).slice(1); + + // if there is any 2 in the url at all. + } else if (path.match(/^(.*?)2(.*?$)/)) { + + // page= is used in django: + // http://www.infinite-scroll.com/changelog/comment-page-1/#comment-127 + if (path.match(/^(.*?page=)2(\/.*|$)/)) { + path = path.match(/^(.*?page=)2(\/.*|$)/).slice(1); + return path; + } + + path = path.match(/^(.*?)2(.*?$)/).slice(1); + + } else { + + // page= is used in drupal too but second page is page=1 not page=2: + // thx Jerod Fritz, vladikoff + if (path.match(/^(.*?page=)1(\/.*|$)/)) { + path = path.match(/^(.*?page=)1(\/.*|$)/).slice(1); + return path; + } else { + this._debug('Sorry, we couldn\'t parse your Next (Previous Posts) URL. Verify your the css selector points to the correct A tag. If you still get this error: yell, scream, and kindly ask for help at infinite-scroll.com.'); + // Get rid of isInvalidPage to allow permalink to state + opts.state.isInvalidPage = true; //prevent it from running on this page. + } + } + this._debug('determinePath', path); + return path; + + }, + + // Custom error + _error: function infscr_error(xhr) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_error_'+opts.behavior] !== undefined) { + this['_error_'+opts.behavior].call(this,xhr); + return; + } + + if (xhr !== 'destroy' && xhr !== 'end') { + xhr = 'unknown'; + } + + this._debug('Error', xhr); + + if (xhr == 'end') { + this._showdonemsg(); + } + + opts.state.isDone = true; + opts.state.currPage = 1; // if you need to go back to this instance + opts.state.isPaused = false; + this._binding('unbind'); + + }, + + // Load Callback + _loadcallback: function infscr_loadcallback(box, data) { + + var opts = this.options, + callback = this.options.callback, // GLOBAL OBJECT FOR CALLBACK + result = (opts.state.isDone) ? 'done' : (!opts.appendCallback) ? 'no-append' : 'append', + frag; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_loadcallback_'+opts.behavior] !== undefined) { + this['_loadcallback_'+opts.behavior].call(this,box,data); + return; + } + + switch (result) { + + case 'done': + + this._showdonemsg(); + return false; + + break; + + case 'no-append': + + if (opts.dataType == 'html') { + data = '
    ' + data + '
    '; + data = $(data).find(opts.itemSelector); + }; + + break; + + case 'append': + + var children = box.children(); + + // if it didn't return anything + if (children.length == 0) { + return this._error('end'); + } + + // added by esmizzle 2012-01-26 - update the path to the link for the next set of elements + var nexturl = $(data).find(opts.nextSelector).attr('href'); + this._debug('nexturl: '+ nexturl) + this.options.path[0] = nexturl; + this.options.path[1] = '#pathcomplete'; + + // use a documentFragment because it works when content is going into a table or UL + frag = document.createDocumentFragment(); + while (box[0].firstChild) { + frag.appendChild(box[0].firstChild); + } + + this._debug('contentSelector', $(opts.contentSelector)[0]) + $(opts.contentSelector)[0].appendChild(frag); + // previously, we would pass in the new DOM element as context for the callback + // however we're now using a documentfragment, which doesnt havent parents or children, + // so the context is the contentContainer guy, and we pass in an array + // of the elements collected as the first argument. + + data = children.get(); + + + break; + + } + + // loadingEnd function + opts.loading.finished.call($(opts.contentSelector)[0],opts) + + + // smooth scroll to ease in the new content + if (opts.animate) { + var scrollTo = $(window).scrollTop() + $('#infscr-loading').height() + opts.extraScrollPx + 'px'; + $('html,body').animate({ scrollTop: scrollTo }, 800, function () { opts.state.isDuringAjax = false; }); + } + + if (!opts.animate) opts.state.isDuringAjax = false; // once the call is done, we can allow it again. + + callback(this,data); + + }, + + _nearbottom: function infscr_nearbottom() { + + var opts = this.options, + pixelsFromWindowBottomToBottom = 0 + $(document).height() - (opts.binder.scrollTop()) - $(window).height(); + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_nearbottom_'+opts.behavior] !== undefined) { + return this['_nearbottom_'+opts.behavior].call(this); + } + + this._debug('math:', pixelsFromWindowBottomToBottom, opts.pixelsFromNavToBottom); + + // if distance remaining in the scroll (including buffer) is less than the orignal nav to bottom.... + return (pixelsFromWindowBottomToBottom - opts.bufferPx < opts.pixelsFromNavToBottom); + + }, + + // Pause / temporarily disable plugin from firing + _pausing: function infscr_pausing(pause) { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_pausing_'+opts.behavior] !== undefined) { + this['_pausing_'+opts.behavior].call(this,pause); + return; + } + + // If pause is not 'pause' or 'resume', toggle it's value + if (pause !== 'pause' && pause !== 'resume' && pause !== null) { + this._debug('Invalid argument. Toggling pause value instead'); + }; + + pause = (pause && (pause == 'pause' || pause == 'resume')) ? pause : 'toggle'; + + switch (pause) { + case 'pause': + opts.state.isPaused = true; + break; + + case 'resume': + opts.state.isPaused = false; + break; + + case 'toggle': + opts.state.isPaused = !opts.state.isPaused; + break; + } + + this._debug('Paused', opts.state.isPaused); + return false; + + }, + + // Behavior is determined + // If the behavior option is undefined, it will set to default and bind to scroll + _setup: function infscr_setup() { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_setup_'+opts.behavior] !== undefined) { + this['_setup_'+opts.behavior].call(this); + return; + } + + this._binding('bind'); + + return false; + + }, + + // Show done message + _showdonemsg: function infscr_showdonemsg() { + + var opts = this.options; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['_showdonemsg_'+opts.behavior] !== undefined) { + this['_showdonemsg_'+opts.behavior].call(this); + return; + } + + opts.loading.msg + .find('img') + .hide() + .parent() + .find('div').html(opts.loading.finishedMsg).animate({ opacity: 1 }, 2000, function () { + $(this).parent().fadeOut('normal'); + }); + + // user provided callback when done + opts.errorCallback.call($(opts.contentSelector)[0],'done'); + + }, + + // grab each selector option and see if any fail + _validate: function infscr_validate(opts) { + + for (var key in opts) { + if (key.indexOf && key.indexOf('Selector') > -1 && $(opts[key]).length === 0) { + this._debug('Your ' + key + ' found no elements.'); + return false; + } + return true; + } + + }, + + /* + ---------------------------- + Public methods + ---------------------------- + */ + + // Bind to scroll + bind: function infscr_bind() { + this._binding('bind'); + }, + + // Destroy current instance of plugin + destroy: function infscr_destroy() { + + this.options.state.isDestroyed = true; + return this._error('destroy'); + + }, + + // Set pause value to false + pause: function infscr_pause() { + this._pausing('pause'); + }, + + // Set pause value to false + resume: function infscr_resume() { + this._pausing('resume'); + }, + + // Retrieve next set of content items + retrieve: function infscr_retrieve(pageNum) { + + var instance = this, + opts = instance.options, + path = opts.path, + box, frag, desturl, method, condition, + pageNum = pageNum || null, + getPage = (!!pageNum) ? pageNum : opts.state.currPage; + beginAjax = function infscr_ajax(opts) { + + // increment the URL bit. e.g. /page/3/ + opts.state.currPage++; + + instance._debug('heading into ajax', path); + + // if we're dealing with a table we can't use DIVs + box = $(opts.contentSelector).is('table') ? $('') : $('
    '); + + desturl = (path[1] == '#pathcomplete') ? path[0] : path.join(opts.state.currPage); // only throw the currPage in there if we need it + instance._debug('desturl: '+desturl); + + method = (opts.dataType == 'html' || opts.dataType == 'json') ? opts.dataType : 'html+callback'; + if (opts.appendCallback && opts.dataType == 'html') method += '+callback' + + switch (method) { + + case 'html+callback': + instance._debug('Using HTML via .load() method'); + box.load(desturl + ' ' + opts.itemSelector, null, function infscr_ajax_callback(responseText) { + instance._loadcallback(box, responseText); + }); + + break; + + case 'html': + case 'json': + + instance._debug('Using ' + (method.toUpperCase()) + ' via $.ajax() method'); + $.ajax({ + // params + url: desturl, + dataType: opts.dataType, + complete: function infscr_ajax_callback(jqXHR, textStatus) { + condition = (typeof (jqXHR.isResolved) !== 'undefined') ? (jqXHR.isResolved()) : (textStatus === "success" || textStatus === "notmodified"); + (condition) ? instance._loadcallback(box, jqXHR.responseText) : instance._error('end'); + } + }); + + break; + } + }; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['retrieve_'+opts.behavior] !== undefined) { + this['retrieve_'+opts.behavior].call(this,pageNum); + return; + } + + + // for manual triggers, if destroyed, get out of here + if (opts.state.isDestroyed) { + this._debug('Instance is destroyed'); + return false; + }; + + // we dont want to fire the ajax multiple times + opts.state.isDuringAjax = true; + + opts.loading.start.call($(opts.contentSelector)[0],opts); + + }, + + // Check to see next page is needed + scroll: function infscr_scroll() { + + var opts = this.options, + state = opts.state; + + // if behavior is defined and this function is extended, call that instead of default + if (!!opts.behavior && this['scroll_'+opts.behavior] !== undefined) { + this['scroll_'+opts.behavior].call(this); + return; + } + + if (state.isDuringAjax || state.isInvalidPage || state.isDone || state.isDestroyed || state.isPaused) return; + + if (!this._nearbottom()) return; + + this.retrieve(); + + }, + + // Toggle pause value + toggle: function infscr_toggle() { + this._pausing(); + }, + + // Unbind from scroll + unbind: function infscr_unbind() { + this._binding('unbind'); + }, + + // update options + update: function infscr_options(key) { + if ($.isPlainObject(key)) { + this.options = $.extend(true,this.options,key); + } + } + + } + + + /* + ---------------------------- + Infinite Scroll function + ---------------------------- + + Borrowed logic from the following... + + jQuery UI + - https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.widget.js + + jCarousel + - https://github.com/jsor/jcarousel/blob/master/lib/jquery.jcarousel.js + + Masonry + - https://github.com/desandro/masonry/blob/master/jquery.masonry.js + + */ + + $.fn.infinitescroll = function infscr_init(options, callback) { + + + var thisCall = typeof options; + + switch (thisCall) { + + // method + case 'string': + + var args = Array.prototype.slice.call(arguments, 1); + + this.each(function () { + + var instance = $.data(this, 'infinitescroll'); + + if (!instance) { + // not setup yet + // return $.error('Method ' + options + ' cannot be called until Infinite Scroll is setup'); + return false; + } + if (!$.isFunction(instance[options]) || options.charAt(0) === "_") { + // return $.error('No such method ' + options + ' for Infinite Scroll'); + return false; + } + + // no errors! + instance[options].apply(instance, args); + + }); + + break; + + // creation + case 'object': + + this.each(function () { + + var instance = $.data(this, 'infinitescroll'); + + if (instance) { + + // update options of current instance + instance.update(options); + + } else { + + // initialize new instance + $.data(this, 'infinitescroll', new $.infinitescroll(options, callback, this)); + + } + + }); + + break; + + } + + return this; + + }; + + + + /* + * smartscroll: debounced scroll event for jQuery * + * https://github.com/lukeshumard/smartscroll + * Based on smartresize by @louis_remi: https://github.com/lrbabe/jquery.smartresize.js * + * Copyright 2011 Louis-Remi & Luke Shumard * Licensed under the MIT license. * + */ + + var event = $.event, + scrollTimeout; + + event.special.smartscroll = { + setup: function () { + $(this).bind("scroll", event.special.smartscroll.handler); + }, + teardown: function () { + $(this).unbind("scroll", event.special.smartscroll.handler); + }, + handler: function (event, execAsap) { + // Save the context + var context = this, + args = arguments; + + // set correct event type + event.type = "smartscroll"; + + if (scrollTimeout) { clearTimeout(scrollTimeout); } + scrollTimeout = setTimeout(function () { + $.event.handle.apply(context, args); + }, execAsap === "execAsap" ? 0 : 100); + } + }; + + $.fn.smartscroll = function (fn) { + return fn ? this.bind("smartscroll", fn) : this.trigger("smartscroll", ["execAsap"]); + }; + + +})(window, 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;f0){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;f1?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"),"$1")},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;eb.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").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=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").hide().addClass(b.resultsClass).css("position","absolute").appendTo(document.body);m=a("
      ").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); +(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;f0){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;f1?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"),"$1")},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;eb.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").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=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").hide().addClass(b.resultsClass).css("position","absolute").appendTo(document.body);m=a("
        ").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){b.preventDefault();a(o(b)).addClass(f.ACTIVE);d();c.focus()}).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); @@ -42,4 +749,4 @@ jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options (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(bb)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='