/*
 * Copyright 2011 Roman Nurik
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

(function(){function h(){if(!h._loading){h._loading=true;$("#stream").empty();$('<div class="loading">').appendTo("body");var a={friendfeed:false,twitter:false,plus:false},e=[],b=function(b){return function(c){a[b]=true;e=e.concat(c);var c=true,j;for(j in a)if(!a[j]){c=false;break}if(c&&h._loading)h._loading=false,n(e)}};q(b("friendfeed"));r(b("twitter"));s(b("plus"));window.setTimeout(function(){if(h._loading){var b=h._loading=false,c;for(c in a)if(a[c]){b=true;break}b?n(e):($(".loading").remove(),
$("<p>").text("The stream is currently down.").appendTo("#stream"))}},1E4)}}function r(a){$.ajax({url:"http://api.twitter.com/1/statuses/user_timeline.json",data:{screen_name:o,exclude_replies:"true",include_rts:"true",trim_user:"true",include_entities:"true",count:40},dataType:"jsonp",success:function(e){for(var b=[],d=0;d<e.length;d++){var c=e[d],c={via:{name:"Twitter",url:"http://twitter.com/"+o+"/status/"+c.id_str},body:f(c.text,c.entities||[]),date:new Date(c.created_at.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,
"$1 $2 $4 $3 UTC")),retweets:c.retweet_count};b.push(c)}a(b)}})}function f(a,e){var b=[],d;for(d in e)if(d in f._entityTypes)for(var c=0;c<e[d].length;c++)e[d][c].entityType=f._entityTypes[d],b.push(e[d][c]);b.sort(function(a,b){return a.indices[0]-b.indices[0]});d=[];for(var j=0,c=0;c<b.length;c++){var g=b[c];d.push(a.substr(j,g.indices[0]-j));switch(g.entityType){case f._TYPE_MENTION:entityHtml='<a href="http://twitter.com/'+g.screen_name+'">@'+g.screen_name+"</a>";break;case f._TYPE_HASHTAG:entityHtml=
'<a href="http://twitter.com/search/%23'+g.text+'">#'+g.text+"</a>";break;case f._TYPE_URL:entityHtml='<a href="'+g.url+'">'+g.display_url+"</a>"}d.push(entityHtml);j=g.indices[1]}d.push(a.substr(j));return d.join("")}function s(a){$.ajax({url:"https://www.googleapis.com/plus/v1/people/"+t+"/activities/public",data:{key:p},dataType:"jsonp",success:function(e){if(e.error)a([]),console&&console.error&&console.error("Error loading Google+ stream.",e.error);else{for(var b=[],d=0;d<e.items.length;d++){var c=
e.items[d],j=c.object||{},g=[c.title];g.push(' <b><a href="'+c.url+'">Read post &raquo;</a>');for(var f=[],i=j.attachments||[],h=0;h<i.length;h++){var k=i[h];switch(k.objectType){case "photo":f.push({url:k.image.url,link:k.fullImage.url});break;case "video":f.push({url:k.image.url,link:k.url});break;case "article":g.push('<div class="link-attachment"><a href="'+k.url+'">'+k.displayName+"</a>"),k.content&&g.push("<br>"+k.content+""),g.push("</div>")}}g=g.join("");c={via:{name:"Google+",url:c.url},
body:g,date:l(c.updated),reshares:(j.resharers||{}).totalItems,plusones:(j.plusoners||{}).totalItems,comments:(j.replies||{}).totalItems,thumbnails:f};b.push(c)}a(b)}}})}function q(a){$.ajax({url:"http://friendfeed-api.com/v2/feed/"+u,dataType:"jsonp",success:function(e){for(var b=0;b<e.entries.length;b++){var d=e.entries[b];d.date=l(d.date);if(!d.via)d.via={name:"FriendFeed",url:d.url}}a(e.entries)}})}function n(a){a=a||[];a.sort(function(a,b){return b.date-a.date});$(".loading").remove();for(var e=
0;e<a.length;e++){var b=a[e],d=$("<li>").addClass(b.via.name).html(b.body),c=m(b.via.url).domain.match(/plus\.google/)?"images/plus-favicon.png":"http://www.google.com/s2/favicons?domain="+m(b.via.url).domain;$('<img class="icon">').attr("src",c).appendTo(d);if(b.thumbnails&&b.thumbnails.length)for(var c=$('<ul class="thumbnails">').appendTo(d),f=0;f<b.thumbnails.length;f++){var g=b.thumbnails[f],h=$("<li>").appendTo(c);g.link&&(h=$("<a>").attr("href",g.link).appendTo(h));$("<img>").attr({src:g.url}).appendTo(h)}c=
$('<div class="meta">').appendTo(d);$('<span class="from">').html('<a href="'+b.via.url+'">'+i(b.date-new Date)+"</a> from "+b.via.name).appendTo(c);b.plusones&&$('<span class="small-numeric-meta">').text("+"+b.plusones).appendTo(c);b.reshares&&$('<span class="small-numeric-meta">').text(b.reshares+" reshare"+(b.reshares==1?"":"s")).appendTo(c);b.retweets&&$('<span class="small-numeric-meta">').text(b.retweets+" retweet"+(b.retweets==1?"":"s")).appendTo(c);b.comments&&$('<span class="small-numeric-meta">').text(b.comments+
" comment"+(b.comments==1?"":"s")).appendTo(c);d.appendTo("#stream")}}function l(a){a=l._RFC_3339_DATE_RE.exec(a||"");if(!a)return null;var a={year:parseInt(a[1],10),month:parseInt(a[2],10),day:parseInt(a[3],10),hour:parseInt(a[4],10),minute:parseInt(a[5],10),second:parseInt(a[6]||0,10),tz:{exists:!(!a[7]&&!a[8]),Z:a[7],hrs:parseInt(a[8]||0,10),mins:parseInt(a[9]||0,10)}},e=new Date(a.year,a.month-1,a.day,a.hour,a.minute,a.second);if(a.tz.exists){var b=e.getTime();b-=e.getTimezoneOffset()*6E4;a.tz.hrs&&
(b+=(a.tz.hrs*60+a.tz.mins)*6E4);e=new Date(b)}window.foo=a;return e}function i(a){if(!i._plural)i._plural=function(a,b,d,c){b=b?"round":"floor";return Math[b](a)==1?d+" "+c:Math[b](a)+" "+c+"s"};a=Math.abs(a);return a<1E3?"under a second ago":(a/=1E3)<60?i._plural(a,false,"a","second")+" ago":(a/=60)<60?i._plural(a,false,"a","minute")+" ago":(a/=60)<24?i._plural(a,false,"an","hour")+" ago":(a/=24)<7?i._plural(a,false,"a","day")+" ago":a<30?i._plural(a/7,true,"a","week")+" ago":a<365?i._plural(a/
30,true,"a","month")+" ago":(a/=365)<10?i._plural(a,true,"a","year")+" ago":"a long, long time ago"}function m(a){a=m._URL_RE.exec(a||"");return!a?null:{scheme:a[1],domain:a[2],port:a[3]?parseInt(a[3],10):null,path:a[4]||null,query:a[5]||null,hash:a[6]||null}}var o="aygul",u="aygul",t="101697775213251991950",p="AIzaSyAZhxhfugRKv2Iaq5wL0YaIcTtMSSqhNIE";p=="__INSERT_YOUR_API_KEY_HERE__"&&alert("Don't forget to add a Google+ API key! (see http://code.google.com/apis/console)");$(document).ready(h);f._TYPE_MENTION=
1;f._TYPE_HASHTAG=2;f._TYPE_URL=3;f._entityTypes={user_mentions:f._TYPE_MENTION,hashtags:f._TYPE_HASHTAG,urls:f._TYPE_URL};l._RFC_3339_DATE_RE=/^(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})(?:\:(\d{2}(?:\.\d+)?))?(?:(Z)|([+-]\d{2})(\d{2}))?$/i;window.humanizeTimeDelta=i;m._URL_RE=/^(\w+\:(?:\/\/)?)([\w.]+)(?:\:(\d+))?(\/[^?#]*)?(?:\?([^#]*))?(?:#(.*))?$/i})();
