"use strict";if(!this.JSON){this.JSON={};}
(function(){function f(n){return n<10?'0'+n:n;}
if(typeof Date.prototype.toJSON!=='function'){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+'-'+
f(this.getUTCMonth()+1)+'-'+
f(this.getUTCDate())+'T'+
f(this.getUTCHours())+':'+
f(this.getUTCMinutes())+':'+
f(this.getUTCSeconds())+'Z':null;};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf();};}
var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==='string'?c:'\\u'+('0000'+a.charCodeAt(0).toString(16)).slice(-4);})+'"':'"'+string+'"';}
function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==='object'&&typeof value.toJSON==='function'){value=value.toJSON(key);}
if(typeof rep==='function'){value=rep.call(holder,key,value);}
switch(typeof value){case'string':return quote(value);case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==='[object Array]'){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||'null';}
v=partial.length===0?'[]':gap?'[\n'+gap+
partial.join(',\n'+gap)+'\n'+
mind+']':'['+partial.join(',')+']';gap=mind;return v;}
if(rep&&typeof rep==='object'){length=rep.length;for(i=0;i<length;i+=1){k=rep[i];if(typeof k==='string'){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}else{for(k in value){if(Object.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?': ':':')+v);}}}}
v=partial.length===0?'{}':gap?'{\n'+gap+partial.join(',\n'+gap)+'\n'+
mind+'}':'{'+partial.join(',')+'}';gap=mind;return v;}}
if(typeof JSON.stringify!=='function'){JSON.stringify=function(value,replacer,space){var i;gap='';indent='';if(typeof space==='number'){for(i=0;i<space;i+=1){indent+=' ';}}else if(typeof space==='string'){indent=space;}
rep=replacer;if(replacer&&typeof replacer!=='function'&&(typeof replacer!=='object'||typeof replacer.length!=='number')){throw new Error('JSON.stringify');}
return str('',{'':value});};}
if(typeof JSON.parse!=='function'){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==='object'){for(k in value){if(Object.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v;}else{delete value[k];}}}}
return reviver.call(holder,key,value);}
cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return'\\u'+
('0000'+a.charCodeAt(0).toString(16)).slice(-4);});}
if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,'@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']').replace(/(?:^|:|,)(?:\s*\[)+/g,''))){j=eval('('+text+')');return typeof reviver==='function'?walk({'':j},''):j;}
throw new SyntaxError('JSON.parse');};}}());(function($){$.timeago=function(timestamp){if(timestamp instanceof Date)return inWords(timestamp);else if(typeof timestamp=="string")return inWords($.timeago.parse(timestamp));else return inWords($.timeago.parse($(timestamp).attr("title")));};var $t=$.timeago;$.extend($.timeago,{settings:{refreshMillis:60000,allowFuture:false,strings:{prefixAgo:null,prefixFromNow:null,suffixAgo:"ago",suffixFromNow:"from now",ago:null,fromNow:null,seconds:"less than a minute",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"}},inWords:function(distanceMillis){var $l=this.settings.strings;var prefix=$l.prefixAgo;var suffix=$l.suffixAgo||$l.ago;if(this.settings.allowFuture){if(distanceMillis<0){prefix=$l.prefixFromNow;suffix=$l.suffixFromNow||$l.fromNow;}
distanceMillis=Math.abs(distanceMillis);}
var seconds=distanceMillis/1000;var minutes=seconds/60;var hours=minutes/60;var days=hours/24;var years=days/365;var words=seconds<45&&substitute($l.seconds,Math.round(seconds))||seconds<90&&substitute($l.minute,1)||minutes<45&&substitute($l.minutes,Math.round(minutes))||minutes<90&&substitute($l.hour,1)||hours<24&&substitute($l.hours,Math.round(hours))||hours<48&&substitute($l.day,1)||days<30&&substitute($l.days,Math.floor(days))||days<60&&substitute($l.month,1)||days<365&&substitute($l.months,Math.floor(days/30))||years<2&&substitute($l.year,1)||substitute($l.years,Math.floor(years));return $.trim([prefix,words,suffix].join(" "));},parse:function(iso8601){var s=$.trim(iso8601);s=s.replace(/-/,"/").replace(/-/,"/");s=s.replace(/T/," ").replace(/Z/," UTC");s=s.replace(/([\+-]\d\d)\:?(\d\d)/," $1$2");return new Date(s);}});$.fn.timeago=function(){var self=this;self.each(refresh);var $s=$t.settings;if($s.refreshMillis>0){setInterval(function(){self.each(refresh);},$s.refreshMillis);}
return self;};function refresh(){var date=$t.parse(this.title);if(!isNaN(date)){$(this).text(inWords(date));}
return this;}
function inWords(date){return $t.inWords(distance(date));}
function distance(date){return(new Date().getTime()-date.getTime());}
function substitute(stringOrFunction,value){var string=$.isFunction(stringOrFunction)?stringOrFunction(value):stringOrFunction;return string.replace(/%d/i,value);}
document.createElement('abbr');})(jQuery);var Connector=(function(){Connector=function(){var connector=this;this.socket=new STOMPClient();this.initialized=false;this.socket.onopen=function(){};this.socket.onclose=function(c){DC.connection_lost(c);};this.socket.onconnectedframe=function(){connector.socket.subscribe("/topic/start-resp");connector.send("hi",'/topic/start-req');};this.socket.onmessageframe=function(msg){var parsed=JSON.parse(msg.body);connector.dispatch(parsed);};};Connector.prototype={connect:function(){this.socket.connect('localhost',61613);},send:function(msg,channel,data){data=data||{};this.socket.send(msg,channel,data);},dispatch:function(msg){var handler=this[msg.type];if(handler){handler.call(this,msg);}
else{console.log(msg);}},initial:function(msg){this.socket.unsubscribe("/topic/start-resp");if(!this.initialized){for(var i in msg.tweets){this.tweet(msg.tweets[i],true);}
this.socket.subscribe("/topic/djangocon");}
this.initialized=true;},tweet:function(msg){DC.tweet(msg);},talk:function(msg){DC.talk(msg);}};return new Connector();})();$(function(){$(window).unload(function(){Connector.disconnect();})});function linkify(msg){var matches=msg.match(/https?:\/\/\S+/g);if(!matches){return msg;}
while(matches.length>0){var url=matches.shift();msg=msg.replace(url,'<a target="_blank" href="'+url+'">'+url+'</a>');}
return msg;}
function twitterfy(msg){var matches=msg.match(/@[a-zA-Z0-9_]+/g);if(!matches){return msg;}
while(matches.length>0){var user=matches.shift();msg=msg.replace(user,'<a target="_blank" href="http://twitter.com/'+user.substring(1)+'">'+user+'</a>');}
return msg;}
function hashify(msg){var matches=msg.match(/ #[a-zA-Z0-9]{2,}/g);if(!matches){return msg;}
while(matches.length>0){var hash_tag=matches.shift();msg=msg.replace(hash_tag,'<a target="_blank" href="http://twitter.com/#search?q='+hash_tag.substring(1)+'">'+hash_tag+'</a>');}
return msg;}
var DC={connection_lost:function(c){$('h2.home small').text('(Updates in complex-time, you need to refresh)');$('h2.home small').addClass('red');},tweet:function(tweet,initial){var body=escape_html(tweet.text);for(var i in DC.filters){body=DC.filters[i].call(this,body);}
DC.add_item('<li class="new_item"><div class="line clearfix"><img src="'+tweet.user.profile_image_url
+'" width="40" height="40"></img> <strong>(by <a target="_blank" '
+'href="http://twitter.com/'+tweet.user.screen_name+'">'
+tweet.user.screen_name+'</a>)</strong> '+body
+' -- <a href="http://twitter.com/'+tweet.user.screen_name+'/status/'+tweet.id+'" target="_blank"><abbr class="timeago" title="'+tweet.iso8601+'">'+tweet.iso8601+'</abbr></a></div></li>',initial);},talk:function(talk){DC.add_item('<li class="django new_item"><div><strong>'+talk.name+'</strong> by '
+talk.speaker+' is coming up on '+talk.track+' at '
+talk.time+'</div></li>');},add_item:function(html,initial){$('.items').prepend(html);$('.new_item').each(function(){$(".timeago",this).timeago();if(!initial){$(this).fadeIn("slow");}
$(this).removeClass('new_item');});if($('.items li').length>200){$('.items li:last').remove();}
$('#ajax-loader').remove();},filters:[linkify,twitterfy,hashify]};function escape_html(html){return html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\"/g,'&quot;').replace(/'/g,'&#39;');}
$(function(){Connector.connect();});