




if (typeof(disqus_iframe_css) == 'undefined') {
	disqus_iframe_css = '';
}
if (typeof(disqus_def_name) == 'undefined') {
	disqus_def_name = '';
}
if (typeof(disqus_def_email) == 'undefined') {
	disqus_def_email = '';
}
if (typeof(disqus_skip_auth) == 'undefined') {
	disqus_skip_auth = false;
}
if (typeof(disqus_default_text) == 'undefined') {
	disqus_default_text = 'Type your comment here.';
}

(function(){
	
	var ie = document.uniqueID
		&& document.compatMode
		&& !window.XMLHttpRequest
		&& document.execCommand ;

	try {
		if(!!ie) {
			document.execCommand("BackgroundImageCache", false, true);
		}
	} catch(e) {};
})();

var Dsq = new function() {
	this.container = document.getElementById('dsq-content');
	this.jsonData = {"reactions": [], "has_more_reactions": false, "users": {"45364c34db3e28e257050f77c167f6d1": {"username": "meechwings", "tumblr": "", "display_name": "meechwings", "url": "http://disqus.com/guest/45364c34db3e28e257050f77c167f6d1/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "bf3cd3dcac1a9a987c1221298819509e": {"username": "d2", "tumblr": "", "display_name": "d2", "url": "http://disqus.com/guest/bf3cd3dcac1a9a987c1221298819509e/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "7fe40be0bd642552a57444741828040c": {"username": "creativesage", "tumblr": "", "display_name": "creativesage", "url": "http://disqus.com/guest/7fe40be0bd642552a57444741828040c/", "registered": false, "linkedin": "", "blog": "http://creativesage.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/56/3506/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e8d0dde0c4b3d65b72a92bba1fee5aa7": {"username": "Chris", "tumblr": "", "display_name": "Chris", "url": "http://disqus.com/guest/e8d0dde0c4b3d65b72a92bba1fee5aa7/", "registered": false, "linkedin": "", "blog": "http://www.beercosoftware.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "40267a2ef2b56c42fbb808662a6b3332": {"username": "Scott Sigler", "tumblr": "", "display_name": "Scott Sigler", "url": "http://disqus.com/guest/40267a2ef2b56c42fbb808662a6b3332/", "registered": false, "linkedin": "", "blog": "http://www.scottsigler.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "354c8e19c039091c8c6532cadb446146": {"username": "Sam Jackson", "tumblr": "", "display_name": "Sam Jackson", "url": "http://disqus.com/guest/354c8e19c039091c8c6532cadb446146/", "registered": false, "linkedin": "", "blog": "http://www.samjackson.org/college", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/3658/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "78142166c19eefd8dce8ec9283e9c539": {"username": "Michael", "tumblr": "", "display_name": "Michael", "url": "http://disqus.com/guest/78142166c19eefd8dce8ec9283e9c539/", "registered": false, "linkedin": "", "blog": "http://www.mikel.org/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "036fa00478f3563f6e081004ee5981d4": {"username": "fred wilson", "tumblr": "", "display_name": "fred wilson", "url": "http://disqus.com/guest/036fa00478f3563f6e081004ee5981d4/", "registered": false, "linkedin": "", "blog": "http://avc.blogs.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/20/8326/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "2f357e9ee4d75cf12092bf9f23b13bae": {"username": "Chris Brogan...", "tumblr": "", "display_name": "Chris Brogan...", "url": "http://disqus.com/guest/2f357e9ee4d75cf12092bf9f23b13bae/", "registered": false, "linkedin": "", "blog": "http://chrisbrogan.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "88b9fd68472b21867efd8e0b666d07ab": {"username": "Petteri Koponen", "tumblr": "", "display_name": "Petteri Koponen", "url": "http://disqus.com/guest/88b9fd68472b21867efd8e0b666d07ab/", "registered": false, "linkedin": "", "blog": "http://www.jaiku.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3553f5e0db0fd1ec4e40a932a2d8f5b3": {"username": "Robert Scoble", "tumblr": "", "display_name": "Robert Scoble", "url": "http://disqus.com/guest/3553f5e0db0fd1ec4e40a932a2d8f5b3/", "registered": false, "linkedin": "", "blog": "http://scobleizer.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/4069/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "50f5c5337553cbb60499d174bb50a765": {"username": "Pete", "tumblr": "", "display_name": "Pete", "url": "http://disqus.com/guest/50f5c5337553cbb60499d174bb50a765/", "registered": false, "linkedin": "", "blog": "http://www.peteholiday.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "54ef0fb0248ef743bef6691deb2b4991": {"username": "GJD", "tumblr": "", "display_name": "GJD", "url": "http://disqus.com/guest/54ef0fb0248ef743bef6691deb2b4991/", "registered": false, "linkedin": "", "blog": "http://garyjday.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "d0f0fb6ac9472944ef2cd4a3009d5c98": {"username": "Douglas Karr", "tumblr": "", "display_name": "Douglas Karr", "url": "http://disqus.com/guest/d0f0fb6ac9472944ef2cd4a3009d5c98/", "registered": false, "linkedin": "", "blog": "http://www.douglaskarr.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/24/128/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e521312db0e2961857ac8912738d9559": {"username": "atmasphere", "tumblr": "", "display_name": "atmasphere", "url": "http://disqus.com/guest/e521312db0e2961857ac8912738d9559/", "registered": false, "linkedin": "", "blog": "http://atmasphere.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "29a430f78330d90ae4d6adb90157365a": {"username": "Jeremy Toeman", "tumblr": "", "display_name": "Jeremy Toeman", "url": "http://disqus.com/guest/29a430f78330d90ae4d6adb90157365a/", "registered": false, "linkedin": "", "blog": "http://www.livedigitally.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/1349/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5e1140855c47af5e6c5e548bec95a168": {"username": "shannonclark", "tumblr": "", "display_name": "shannonclark", "url": "http://disqus.com/guest/5e1140855c47af5e6c5e548bec95a168/", "registered": false, "linkedin": "", "blog": "http://shannonclark.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/173/3735/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "636cdc3b4413bea9d4947ed6c69ca649": {"username": "deirdrestraughan", "tumblr": "", "display_name": "deirdrestraughan", "url": "http://disqus.com/guest/636cdc3b4413bea9d4947ed6c69ca649/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b8fc4ea329c8cc89900169e19a34fdd8": {"username": "Amyloo", "tumblr": "", "display_name": "Amyloo", "url": "http://disqus.com/guest/b8fc4ea329c8cc89900169e19a34fdd8/", "registered": false, "linkedin": "", "blog": "http://blogs.opml.org/amyloo", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c70a5ef281cd8120d285e1980ae4d38f": {"username": "Nicola Mattina", "tumblr": "", "display_name": "Nicola Mattina", "url": "http://disqus.com/guest/c70a5ef281cd8120d285e1980ae4d38f/", "registered": false, "linkedin": "", "blog": "http://blog.nicolamattina.it/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "f4a4669d8a2c73581e46eeba4c04edf3": {"username": "Eduardo Sciammarella", "tumblr": "", "display_name": "Eduardo Sciammarella", "url": "http://disqus.com/guest/f4a4669d8a2c73581e46eeba4c04edf3/", "registered": false, "linkedin": "", "blog": "http://www.fidgt.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b4f04f9fd2de8730cda367d361178145": {"username": "Anonymous", "tumblr": "", "display_name": "Anonymous", "url": "http://disqus.com/guest/b4f04f9fd2de8730cda367d361178145/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "921cd42320062b50f0702dae283b4523": {"username": "Kevin Fox", "tumblr": "", "display_name": "Kevin Fox", "url": "http://disqus.com/guest/921cd42320062b50f0702dae283b4523/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "302028a74eb49881b3e6bc550ce514e5": {"username": "Jackson Fox", "tumblr": "", "display_name": "Jackson Fox", "url": "http://disqus.com/guest/302028a74eb49881b3e6bc550ce514e5/", "registered": false, "linkedin": "", "blog": "http://jacksonfox.org/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "692fe6b6650a907534b987bb661cde25": {"username": "Sally", "tumblr": "", "display_name": "Sally", "url": "http://disqus.com/guest/692fe6b6650a907534b987bb661cde25/", "registered": false, "linkedin": "", "blog": "http://www.astra-design.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9e21e55686d082898fb00a88c501400a": {"username": "Matt Eason", "tumblr": "", "display_name": "Matt Eason", "url": "http://disqus.com/guest/9e21e55686d082898fb00a88c501400a/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c247993707c3e429ebe02dcea45ae69c": {"username": "dperry1ma", "tumblr": "", "display_name": "dperry1ma", "url": "http://disqus.com/guest/c247993707c3e429ebe02dcea45ae69c/", "registered": false, "linkedin": "", "blog": "http://podsanity.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "0a5b413991ed9a58bb8845f7ecab7106": {"username": "Yan", "tumblr": "", "display_name": "Yan", "url": "http://disqus.com/guest/0a5b413991ed9a58bb8845f7ecab7106/", "registered": false, "linkedin": "", "blog": "http://planyp.us/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/26292/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5d489a27439e07229ce984387f1b7288": {"username": "Dan", "tumblr": "", "display_name": "Dan", "url": "http://disqus.com/guest/5d489a27439e07229ce984387f1b7288/", "registered": false, "linkedin": "", "blog": "http://sonnetoptics.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6a1b8ceb0b7aedd42b5fcc0802529f91": {"username": "blr bytes", "tumblr": "", "display_name": "blr bytes", "url": "http://disqus.com/guest/6a1b8ceb0b7aedd42b5fcc0802529f91/", "registered": false, "linkedin": "", "blog": "http://doesthisthat.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c143d0a90536bd45a78a911a38334be0": {"username": "Robert Dewey", "tumblr": "", "display_name": "Robert Dewey", "url": "http://disqus.com/guest/c143d0a90536bd45a78a911a38334be0/", "registered": false, "linkedin": "", "blog": "http://wantsy.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/118/5518/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "471b66f3a7578ff681246f22360be8d1": {"username": "Spin Martin", "tumblr": "", "display_name": "Spin Martin", "url": "http://disqus.com/guest/471b66f3a7578ff681246f22360be8d1/", "registered": false, "linkedin": "", "blog": "http://www.spinmartin.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6711fb4f704f4e8767c8960797722957": {"username": "Hanan Cohen", "tumblr": "", "display_name": "Hanan Cohen", "url": "http://disqus.com/guest/6711fb4f704f4e8767c8960797722957/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e74f77782e7ac25afb5f4a0e77468b21": {"username": "Tara Hunt", "tumblr": "", "display_name": "Tara Hunt", "url": "http://disqus.com/guest/e74f77782e7ac25afb5f4a0e77468b21/", "registered": false, "linkedin": "", "blog": "http://www.horsepigcow.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/11530/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "794f7c4672d371f64a1aa63013d38952": {"username": "Westy", "tumblr": "", "display_name": "Westy", "url": "http://disqus.com/guest/794f7c4672d371f64a1aa63013d38952/", "registered": false, "linkedin": "", "blog": "http://ijab.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "12e2d0745b90cd05c40dddf21d569588": {"username": "Susan Getgood", "tumblr": "", "display_name": "Susan Getgood", "url": "http://disqus.com/guest/12e2d0745b90cd05c40dddf21d569588/", "registered": false, "linkedin": "", "blog": "http://getgood.typepad.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/94/6604/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b1088dbd877c2d7d33e6b3b63ee38081": {"username": "Prokofy", "tumblr": "", "display_name": "Prokofy", "url": "http://disqus.com/guest/b1088dbd877c2d7d33e6b3b63ee38081/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "0ba465efa88b017a6a1d1f260d0465ed": {"username": "Baratunde Thurston", "tumblr": "", "display_name": "Baratunde Thurston", "url": "http://disqus.com/guest/0ba465efa88b017a6a1d1f260d0465ed/", "registered": false, "linkedin": "", "blog": "http://www.baratunde.com/blog", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "758cbbda9a16896a97481297f8e84fa3": {"username": "Pragati", "tumblr": "", "display_name": "Pragati", "url": "http://disqus.com/guest/758cbbda9a16896a97481297f8e84fa3/", "registered": false, "linkedin": "", "blog": "http://pragatiagarwal.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/26215/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "4913dafc7f618b2ee4774ce7b2291751": {"username": "Ivan Pope", "tumblr": "", "display_name": "Ivan Pope", "url": "http://disqus.com/guest/4913dafc7f618b2ee4774ce7b2291751/", "registered": false, "linkedin": "", "blog": "http://blog.snipperoo.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/23/9129/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "526ea2ca6604e421a8d286c885c6e5a4": {"username": "dan", "tumblr": "", "display_name": "dan", "url": "http://disqus.com/guest/526ea2ca6604e421a8d286c885c6e5a4/", "registered": false, "linkedin": "", "blog": "http://dyerweb.com/blog", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6b8838d8cfe36333788d1565c358b962": {"username": "Jonathan", "tumblr": "", "display_name": "Jonathan", "url": "http://disqus.com/guest/6b8838d8cfe36333788d1565c358b962/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "d81768961f2256f93033e491a076d745": {"username": "channing", "tumblr": "", "display_name": "channing", "url": "http://disqus.com/guest/d81768961f2256f93033e491a076d745/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c3e5ba3f30731cd7ab68192c9502ab3d": {"username": "Paul Cooper", "tumblr": "", "display_name": "Paul Cooper", "url": "http://disqus.com/guest/c3e5ba3f30731cd7ab68192c9502ab3d/", "registered": false, "linkedin": "", "blog": "http://www.devel.co.uk/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "258b71b5c90425700b9f9cc334133037": {"username": "ZW", "tumblr": "", "display_name": "ZW", "url": "http://disqus.com/guest/258b71b5c90425700b9f9cc334133037/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "75c7dae24bcd436235dd5ca728cef066": {"username": "Adam", "tumblr": "", "display_name": "Adam", "url": "http://disqus.com/guest/75c7dae24bcd436235dd5ca728cef066/", "registered": false, "linkedin": "", "blog": "http://www.bladam.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "1778d3a2eedaeb3e436de44c2bd5b6ac": {"username": "@runb@laj!", "tumblr": "", "display_name": "@runb@laj!", "url": "http://disqus.com/guest/1778d3a2eedaeb3e436de44c2bd5b6ac/", "registered": false, "linkedin": "", "blog": "http://www.rajarishi.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9bd751707b3a2a5fdf6a8d8bb6c5f669": {"username": "Nik Butler", "tumblr": "", "display_name": "Nik Butler", "url": "http://disqus.com/guest/9bd751707b3a2a5fdf6a8d8bb6c5f669/", "registered": false, "linkedin": "", "blog": "http://www.loudmouthman.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/38/9062/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "52b62156fdd45df7d86b9bc2be0fc8fe": {"username": "Aaron Fischer", "tumblr": "", "display_name": "Aaron Fischer", "url": "http://disqus.com/guest/52b62156fdd45df7d86b9bc2be0fc8fe/", "registered": false, "linkedin": "", "blog": "http://thisoldcode.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3e6f5e012434e96ee546c4ae47714931": {"username": "GL", "tumblr": "", "display_name": "GL", "url": "http://disqus.com/guest/3e6f5e012434e96ee546c4ae47714931/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "477f81635b646ba5b139d8a938ba6c05": {"username": "Jim Minatel", "tumblr": "", "display_name": "Jim Minatel", "url": "http://disqus.com/guest/477f81635b646ba5b139d8a938ba6c05/", "registered": false, "linkedin": "", "blog": "http://wroxblog.typepad.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e9bb8cb875d488853b6be71bbe13650f": {"username": "zephoria", "tumblr": "", "display_name": "zephoria", "url": "http://disqus.com/guest/e9bb8cb875d488853b6be71bbe13650f/", "registered": false, "linkedin": "", "blog": "http://www.zephoria.org/thoughts/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": true, "name": "Scobleizer", "streaming_realtime": true, "url": "scobleizer", "allow_anon_post": true, "reactions_enabled": true, "reply_position": 1, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": true, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "scobleizer", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-17_03:27:47", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": "locked"}, "realtime_paused": false, "posts": {"9682304": {"up_voted": false, "ip": "", "has_replies": false, "message": "Sam, turns out that if you log into Facebook on other devices or on the Web it'll log you out of your cell phone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-21_13:50:24", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682305": {"up_voted": false, "ip": "", "has_replies": false, "message": "You have it right on with this post.<br><br>The \"Network NAzi\" syndrome is alive and well<br><br>oh dan I will end up on the twitter blacklist for that one", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-06-03_13:47:24", "killed": false, "user_key": "5d489a27439e07229ce984387f1b7288", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682228": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think OpenID could be a technology that would ease your woes regarding not having a portable identity / address book  [...] The momentum of OpenID and fact that Facebook is working with Open Source companies like Six Apart certainly makes it plausible we could see Facebook support OpenID in the future. [...]", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-07-24_18:46:56", "killed": false, "user_key": "921cd42320062b50f0702dae283b4523", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682229": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's just a happy clappy way of protecting you from perverts and spammers I guess.<br>No biggy eh?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:00:12", "killed": false, "user_key": "54ef0fb0248ef743bef6691deb2b4991", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682230": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert: It seems that \"Spock\" may have some of the extensibility of contact tagging you are looking for, by treating the \"how are you related to this person/how do you know them\" as a tag, rather than a pre-defined set of choices. I haven't played with it enough to be sure yet.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:03:15", "killed": false, "user_key": "477f81635b646ba5b139d8a938ba6c05", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682231": {"up_voted": false, "ip": "", "has_replies": false, "message": "Facebook intentionally makes it hard to browse people and add contacts. They wanted to keep the site free from robots and fake profiles like MySpace. That's why so much data is not viewable from the web.<br>Spidering Facebook can be a real pain.<br><br>As for adding people without their approval, it would destroy the hierarchy of the FOAF concept as described in the friendster patent.<br><a href=\"http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;p=1&amp;u=%252Fnetahtml%252FPTO%252Fsearch-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;co1=AND&amp;d=PTXT&amp;s1=7%2C069%2C308.PN.&amp;OS=PN/7%2C069%2C308&amp;RS=PN/7%2C069%2C308\" rel=\"nofollow\">http://patft.uspto.gov/netacgi/nph-Parser?Sect1...</a><br><br>If that were allowed it would be a public contact manager and not a social network.<br>Most social networking sites will allow you to add people who did not approve you in favorites list.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:07:48", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682232": {"up_voted": false, "ip": "", "has_replies": false, "message": "GJD: to a guy like me it's a MAJOR biggie. I have more than 4,000 contacts over on Twitter.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:08:17", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682233": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yeah I guess that's a lot.<br>Glad I'm not you.<br>I have enough to do.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:10:56", "killed": false, "user_key": "54ef0fb0248ef743bef6691deb2b4991", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682234": {"up_voted": false, "ip": "", "has_replies": false, "message": "Chris: I know some of the reasons they do it, but it still adds up to bad behavior on their part. The fact it works is a pretty cool hack of human behavior (I'm sure that the person who ends up with 700 contacts in Facebook feels pretty proud of herself cause it took so much work).<br><br>If you could see my Outlook contacts you'd understand that THOSE are far tighter ties than any online social network.<br><br>The fact that you see them as different somehow explains just how bad these networks are. Now we're justifying THEIR bad designs to ourselves as \"FEATURES.\" And we don't even realize it!<br><br>Human beings are funny animals, that's for sure!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:11:48", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682235": {"up_voted": false, "ip": "", "has_replies": false, "message": "GJD: I have 6,000 business cards I've collected over the past six years too. And THOSE are really the best social contacts I have. I wish I could scan those into Facebook!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:12:36", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682236": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's even worse on myspace.  At least on Facebook there are categories for what school/company/area a person is affiliated with.<br>With myspace the only distinction is whether someone is your friend or not (though everyone is a part of your \"extended network\"...still haven't figured out what that's all about), and you can't even say how you know a particular person.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:15:52", "killed": false, "user_key": "45364c34db3e28e257050f77c167f6d1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682237": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Now we\u2019re justifying THEIR bad designs to ourselves as \u201cFEATURES.\u201d\"<br><br>Facebook was originally only for students. And to separate themselves from MySpace, they created super tight security in regards to keeping profiles private. To keep the .edu's not from community college feel like they were joining a respectful webstablishment.<br><br>When they went public, they simply kept the same format regardless of their new audience. It's not like they're going to code a whole new framework just for the new people.<br><br>The whole outlook integration you're looking for wreaks of Microsoft. You should check out <a href=\"http://spaces.msn.com\" rel=\"nofollow\">spaces.msn.com</a> if you want something that integrates into your MS products suite instead of Facebook, \"a 3rd party Windows app\". Kidding, but I'm sure Gates would describe it exactly that way.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:18:49", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682238": {"up_voted": false, "ip": "", "has_replies": false, "message": "Chris: Facebook should \"embrace and extend.\" Heheh.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:23:19", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682239": {"up_voted": false, "ip": "", "has_replies": false, "message": "Its a social network for friends,  If you want something else you can find a VC ;)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:27:13", "killed": false, "user_key": "52b62156fdd45df7d86b9bc2be0fc8fe", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682240": {"up_voted": false, "ip": "", "has_replies": false, "message": "Facebook is already worth a fortune. They don't have to do anything. They already have the user data and traffic that makes a social networking site worth something.<br><br>If you read Digg recently you would have seen an article on the front page about Micheal Moore supporting the piracy of his own movie(which is already on newsgroups). Why would he do that? He's already rich and doesn't worry about it. Facebook could make a windows tray monitor/importer/thingy to work with the Outlook API, but there is no reason for them to do so.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:29:49", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682241": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, quite correct, and for the record you  should remember me from Twitter in those days before Leo Leapt and Left ! No we havent met for a beer, and I havent swapped a corporate lunch with you  ( unless you hit Gatwick that is  ) but the occasional @scobleizer/@loudmouthman chat on twitter in my mind defines some level of connection.<br><br>Its topical that just last week I had a friend request from  person on Facebook whom I had never met, talked to or even shared a dialog of any sort with. They just were a friend of a friend. When I explained my choice for turning him down he was very very cool about it.<br><br>It did lead me to wonder though If I could not somehow segregate those networks into close, distant , work and  internet contacts.<br><br>The net is making celebrities without the usual grooming and profiling of the traditional media. Social networks are going to go a long way to help those advertisers find new models on which to define who best  represents them.<br><br>The first online social network to integrate friend connections with credibility and value will have the next adwords like  product and revenue generator on their hands for sure.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:30:19", "killed": false, "user_key": "9bd751707b3a2a5fdf6a8d8bb6c5f669", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682242": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's been a while since I added a friend on Facebook, but I don't remember *having* to enter how I knew them. Could've sworn there was a \"skip this question\" button or similar.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:35:14", "killed": false, "user_key": "9e21e55686d082898fb00a88c501400a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682243": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I, like Jon, hate that I have to enter in Facebook how I know Fred. I don\u2019t remember how I met Fred. It was a link from some blogger. I don\u2019t remember who. So, I just put down \u201cmet randomly.\u201d\"<br><br>But... you don't have to fill that info out at all.  I rarely do.  Look at the buttons at the bottom - I think one is called \"Skip this step\".  I could be wrong about the text on the button, but there's definitely an easy way of not filling out that information.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:40:37", "killed": false, "user_key": "3e6f5e012434e96ee546c4ae47714931", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682244": {"up_voted": false, "ip": "", "has_replies": false, "message": "Its really a simple answer, these services are not for you.  why should any of them have to \u201cembrace and extend\u201d to old people :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:43:17", "killed": false, "user_key": "bf3cd3dcac1a9a987c1221298819509e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682245": {"up_voted": false, "ip": "", "has_replies": false, "message": "As its been said above, you dont have to add anything.<br><br>But doing so adds another level of intricacy to your network.  Click on Friends &gt; Social Timeline to see an example of this.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:49:07", "killed": false, "user_key": "6b8838d8cfe36333788d1565c358b962", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682246": {"up_voted": false, "ip": "", "has_replies": false, "message": "They're clearly privileging a specific kind of relationship - relationships of a social nature between friends and acquaintances. Other relationships don't really fit, and I doubt they will ever fit. I think one of the things we've learned about such social networks is that there is no \"one network to rule them all.\" Features that are important - critical - for one kind of network would be damaging to others.<br><br>I think it's clearly a feature, not a bug, that Facebook makes it very difficult - compared to Orkut and some of the older ones as well as LinkedIn - to \"find\" new friends. I like that. I quit using those other systems because people's Friends' lists were worthless - I had NO confidence that person X actually has (or had) a relationship with person Y. They were more like contests to collect people than true reflections of people's social networks.<br><br>LinkedIn, on the other hand, would be worthless if you couldn't easily make new connections - but that only works if each person's contact list is free of chaff. Consequently, they have built a whole system around introductions and finding distant contacts while maintaining the integrity of the network and investing every user in that as well.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:49:45", "killed": false, "user_key": "78142166c19eefd8dce8ec9283e9c539", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682247": {"up_voted": false, "ip": "", "has_replies": false, "message": "You don't have to put down how you know/met the person - in fact 90% of people just click skip.  Should look into that.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:50:41", "killed": false, "user_key": "258b71b5c90425700b9f9cc334133037", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682248": {"up_voted": false, "ip": "", "has_replies": false, "message": "d2: if you look at my Facebook contacts (several hundred) you'll see that almost all of them are \"old folks.\" In fact my 13-year-old son tried to sign up for Facebook and it wouldn't let him.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:56:08", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682249": {"up_voted": false, "ip": "", "has_replies": false, "message": "Haha,<br>Robert Scoble You crack me up. I love how you openly confess feelings for your wife, rock on. I'm going to start a social network for couples just so I can send sweet nothings to my wife. Nah that's too much work, I'll just use email.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_13:57:19", "killed": false, "user_key": "526ea2ca6604e421a8d286c885c6e5a4", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682250": {"up_voted": false, "ip": "", "has_replies": false, "message": "I agree -- the how do you know this person clearly reflects FB's origins. How many business folks do you know who will indicate \"We hooked up?\" Assuming they actually understand what that means :-) The other drawback for business use is that it is difficult to find people if you don't know their email address. LinkedIn on the other hand, has that down cold, but lacks the social side of things. I wrote about this last week. Like one of your commenters above says, it's an oppty for a developer, either through FB's API or from learning from the conversation and developing a new aggregator that does what we want.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:05:57", "killed": false, "user_key": "12e2d0745b90cd05c40dddf21d569588", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682251": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>I agree - which is one reason why with my social app, NELA (Never Eat Lunch Alone) we are deliberately not focusing on building yet-another-social-network. Instead we are focusing on tools to help you manage and use your contacts in a richer manner (and not just for individuals - for companies as well).<br><br>Oh and we are working on putting together a solution for that pile of 6000 business cards as well (a for fee service to scan, enter, and even research those contacts resulting in a portable contact list importable into tools such as NELA, but also Outlook or gmail).<br><br>I think it is also really important for social network designers to think about context - and making it visible (and also not making it either/or) - i.e. I have one set of friends to whom I turn to for restaurant recommendations - with some exceptions they are not who I ask for an introduction to a VC or potential client. I know 1000's of people, the set of people who I would invite to my home for brunch while large, is not at all everyone I know.<br><br>And the set, as Nick Douglas amusing twittered from brunch at my place yesterday, with whom I might be interested romantically is smaller still.<br><br>From an application designer perspective, however, there are some serious complications in tying behaviors to arbitrary tags. I suspect the best case is some checklist of possible actions/access levels - and a mapping of them to your tags. But with some reasonably smart defaults which the majority of people would use (i.e. something like \"intimate friends\", \"family\", \"social friends\", \"business contacts\", \"public\" might be sufficient, perhaps even too many).<br><br>Shannon", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:07:34", "killed": false, "user_key": "5e1140855c47af5e6c5e548bec95a168", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682252": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Robert,<br><br>I agree with your comments on Facebook, having gone through this frustrating problem a number of times now when trying to add contacts. It seems that it would not be too difficult for them to tweak it just a little and add one or two questions:<br><br>- Is this person a business contact? (And then just let you add instead of asking where you met them)<br><br>- Did you \"meet\" this person online? (For Facebook's marketing info, they might ask where, but I would rather not have to answer that question.)<br><br>I think it's likely they'll make these changes eventually, hopefully sooner. BTW, I hope you'll add me as a \"friend\" on Facebook, since we have actually met in person now. :-)<br><br>On Ning, you have the option of creating a private group and having the separate option of adding friends who are not in that specific group (or not). You can create private groups on Facebook, but the whole contact thing needs to be easier, like Ning's is now.<br><br>Thanks for bringing this to Facebook's attention.<br><br>Cathryn Hrudicka, Chief Imagination Officer<br>Creative Sage", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:17:12", "killed": false, "user_key": "7fe40be0bd642552a57444741828040c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682253": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I, like Jon, hate that I have to enter in Facebook how I know Fred.\"<br><br>You \"have to\"?<br><br>How is that? Aren't you allowed to skip the step where that is asked? I've never been forced to define a relationship on Facebook. Is that a difference between the \"college\" accounts and the other \"networks\"?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:42:03", "killed": false, "user_key": "50f5c5337553cbb60499d174bb50a765", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682254": {"up_voted": false, "ip": "", "has_replies": false, "message": "Everyone Is Miscellaneous", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:43:05", "killed": false, "user_key": "6711fb4f704f4e8767c8960797722957", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682255": {"up_voted": false, "ip": "", "has_replies": false, "message": "Pete: I was scared of hitting \"skip this step.\" I thought it might do something nasty like relegate your contact into some sort of limbo or some sort of second-rate status. Or, even worse, I thought it might email you to tell you that I didn't even think enough of you to tell Facebook how we met.<br><br>Funny that on the mobile app it doesn't even have this choice. It just asks you to \"confirm\" when people ask you to add them to your Facebook.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:51:17", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682256": {"up_voted": false, "ip": "", "has_replies": false, "message": "I love the tags idea... it has special merit when you have multiple networks of people which overlap like Venn diagrams. It would be ideal to have social networks map more closely to reality...people can and do fit into multiple groups in your life.<br><br>If the feature isn't there to help you communicate with and build your networks, then what is it really there for?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:52:17", "killed": false, "user_key": "c247993707c3e429ebe02dcea45ae69c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682257": {"up_voted": false, "ip": "", "has_replies": false, "message": "Shannon: I hate checklists. They force me to choose something right away which is why Facebook tricked me into thinking something bad would happen by choosing \"skip this step.\"<br><br>I'd rather just \"confirm\" or \"deny\" and then later add tags about each person that I make up. You have no idea what I want to put into my social network about you. For you, for instance, I'd want to use these tags:<br><br>NICE<br>PROGRAMMER<br>SMART<br>RELIABLE<br>CONNECTOR<br>ENTREPRENEUR<br>PHOTOWALKER<br>SAN FRANCISCO<br>NELA.COM<br>THAI<br>COMPUTER HISTORY<br><br>Now, how many of those tags mean what you think they mean?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_14:55:41", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682258": {"up_voted": false, "ip": "", "has_replies": false, "message": "you've done it my twitter friend! very well articulated.<br><br>btw, in facebook you can skip the \"how do i know this person\" form", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:03:35", "killed": false, "user_key": "0ba465efa88b017a6a1d1f260d0465ed", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682259": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>What's important is that the tags mean what you thing they should mean....<br><br>Presumably, anyone networking through you should either understand enough about you to appreciate the context for your tags, or they should be willing to spend the time to investigate the connection.<br><br>Duncan", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:03:56", "killed": false, "user_key": "c247993707c3e429ebe02dcea45ae69c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682260": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's funny: Facebook is spreading in Italy and into the italian blogsphere there is a similar conversation: ie. someone wonders how is it possibile that there is not \"we met online\" option...<br>Managing social networks (i partecipate to Linkedin, Facebook, Ning, Flickr, Neurona, Twitter and others I do not even remember) means two thing: managing your identity and managing your contacts... These are very interesting topics :-)<br>Ciao... Nicola", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:11:44", "killed": false, "user_key": "c70a5ef281cd8120d285e1980ae4d38f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682261": {"up_voted": false, "ip": "", "has_replies": false, "message": "Imagine that. The problem is that this is over 3 years old.<br><a href=\"http://www.tagworld.com/\" rel=\"nofollow\">http://www.tagworld.com/</a><br><br>I had written back &amp; forth to the owner Evan. He's actually pretty cool BUT<br><a href=\"http://www.alexa.com/data/details/traffic_details?url=tagworld.com\" rel=\"nofollow\">http://www.alexa.com/data/details/traffic_detai...</a><br>Your idea didn't make it in the real world.<br><br>Sorry Scoble.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:24:17", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682262": {"up_voted": false, "ip": "", "has_replies": false, "message": "There used to be Tag clouds all over tagworld in 2005(just like the old Digg). They must have been so unpopular that they took them down. At any rate, that's why the site WAS called tagworld. Because it was a bunch of tag clouds to view profiles.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:26:53", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682263": {"up_voted": false, "ip": "", "has_replies": false, "message": "IDK, Chris.<br><br>TagWorld is just like every other social network... I think Robert is referring to something more along the lines of \"add-and-run\", where people can be within the network without even visiting it.<br><br>In other words, Geni, but for everyone you know.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:27:48", "killed": false, "user_key": "c143d0a90536bd45a78a911a38334be0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682264": {"up_voted": false, "ip": "", "has_replies": false, "message": "As for tags... simply attaching a tag to your contact is pretty useful. TagWorld used tags in a completely different way (I was a member there) that made tagging actually difficult.<br><br>I wanna input my friends e-mail address (or some point of contact) and tag him as \"lawyer\". If he doesn't visit the \"service\", no harm done - he's still \"in the grid\" :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:29:34", "killed": false, "user_key": "c143d0a90536bd45a78a911a38334be0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682265": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hmm... I tried to trackback ya, but it may have gotten speaten (eaten as spam).<br><br>Anyway, I just wanted to give you an overall thumbs up on your observations regarding friends (vs. connections, etc.) and also respectfully note that I wrote a similar rant a few weeks back:<br>\"<a href=\"http://www.bladam.com/main/entry/grouping-on-social-networks/\" rel=\"nofollow\">All \u201cfriends\u201d aren\u2019t created equal! (why we need better relationship marking in social networks)</a>.\"", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:31:14", "killed": false, "user_key": "75c7dae24bcd436235dd5ca728cef066", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682266": {"up_voted": false, "ip": "", "has_replies": false, "message": "Well. I am going to put this idea to the test. I am going to put up an install of FOSS mediawiki where users can create their own wiki, then link them all together as a social network. Using our SiteSpaces code base which is also PHP.<br><br>It should only take a day or so to modify the media wiki code and wire it into a fresh sitespaces install.<br><br>I think it's a dumb idea, but I'm always willing to make money off of anything.<br><br>What you're talking about is essentially a personal wiki.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_15:39:34", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682267": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert - good post, but I find your use of the term 'Nazi' here distressing.  It massively diminishes the term from what it is, aka \"brutal murderers\", into something else, like \"strict people\".<br><br>I know lots of people do this, and yes, I counter as many as I can.  The softer the term gets, the easier it gets to forget the atrocities.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_16:07:57", "killed": false, "user_key": "29a430f78330d90ae4d6adb90157365a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682268": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Dave Winer says that Facebook hasn\u2019t been designed with adults in mind. That certainly is true.\"<br><br>It certainly hasn't been designed with college students in mind either. I totally dislike it when that annoying window opens where I need to not only enter how I know that person, but also from where, when etc etc etc...hmmppff! Yes, there is a button that says \"Skip This Step\", but I don't want to click on it either. I am a lazy internet surfer! Zuckerburg, are you reading this?<br><br>There is this new \"application\" called \"Top Friends\" or \"star friends\"..something like that. I got a request today to add that application which enables me to quantify my friendship with someone. 4 stars, 3 stars etc. What if I don't know what star it is?! Why not be a little innovative and choose planets?<br><br>Another one- Fortune Cookie, Horoscope sharing etc. I think this application sharing madness will drive me insane. In fact, I log in much lesser now because I know that every time I log in, I'll have to deal with those \"add this application\" screens.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_16:24:22", "killed": false, "user_key": "758cbbda9a16896a97481297f8e84fa3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682269": {"up_voted": false, "ip": "", "has_replies": false, "message": "I'd like to add that one of my biggest frustrations with MySpace is that it fails at its basic communications function. If you have more than a few hundred friends, it is IMPOSSIBLE to find them and send them a message. I recently asked one of my friends (in real life) how he would send me a message through myspace. his response:<br><br>\"well, i'd go to a friend's page i knew we had in common and see if you commented on their page, then message you that way.\"<br><br>how ass backwards IS that? Stop trying to cram Fox TV shows down my throat and focus on the basics of what social networking actually is. LET ME NETWORK, SOCIALLY, and chill a bit on trying to be a \"media\" company<br><br>back to you Scoble, i LOVE your idea of tagging contacts within a social network, not just because it's distinct from the \"how do you know this person\" question but because those tags can change and grow over time as your life changes and grows.<br><br>I would tag some people SXSW for the past two years, but this year need to add a Gnomedex tag.<br><br>You should send your complaints to the facebook folken. they've listened in the past.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_16:33:17", "killed": false, "user_key": "0ba465efa88b017a6a1d1f260d0465ed", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682270": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Skip this step\" heh", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_16:50:16", "killed": false, "user_key": "471b66f3a7578ff681246f22360be8d1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682271": {"up_voted": false, "ip": "", "has_replies": false, "message": "My idea for the last few months has been that exactly this does happen.  Here's how I see [hope] it happens...<br><br>Facebook acquires LinkedIn and Geni.  You now can set whether someone is your family (Geni), a friend (Facebook), or a business associate (LinkedIn).  Just now all the options would be via one platform (Facebook, which would integrate the other networking sites).  You still have one contact list, but with different contact types.  Plus, you get the best features of the other networks (the Flash chart showing your family tree at Geni and the business savvy/networking of LinkedIn) and the social networking superiority of Facebook.<br><br>When you meet Mark, Robert, can you ask him if it's a possibility?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_16:53:23", "killed": false, "user_key": "794f7c4672d371f64a1aa63013d38952", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682272": {"up_voted": false, "ip": "", "has_replies": false, "message": "&gt; So, what do I want? I want a social network that just<br>&gt; lets me add contacts. Lets me add them for any reason.<br><br>What I would like is a way of defining contacts in my addressbook and then sharing that with the various sites (Facebook, LinkedIn, Twitter, etc) rather than importing / export N times and trying to keep it all in sync.<br><br>But it seems like Identity is like the Higgs boson of the internet - something we keep searching for but never quite finding.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_17:01:25", "killed": false, "user_key": "c3e5ba3f30731cd7ab68192c9502ab3d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682273": {"up_voted": false, "ip": "", "has_replies": false, "message": "The problem here is that everyone has different ways of defining their 'friends' online. You have 4,000 'friends' here and want to 'tag' everyone there? That's very different behaviour. Your 6,000 business cards? Those are friends? Man, I have bags full that I finally tossed. Anyone worth following up with, we usually followed up with immediately one way or another. That was probably about 1/10th of the cards. The number of people who shove their card under my nose with no follow up is astounding.<br><br>The problem with 'fixing' this issue is that it will 'fix' it for a handful, but break it for others.<br><br>I agree that Facebook has no options that ever work for me, so I generally choose the random option and type in a story. I find that useful to a degree (I am now at the point that I forget who is who...beyond about 150, I can't possibly keep track), but, you are right, it doesn't encompass adult relationships.<br><br>Have you ever seen the Microformat XFN? <a href=\"http://gmpg.org/xfn/\" rel=\"nofollow\">http://gmpg.org/xfn/</a><br><br>Wordpress uses this for links - and you can use combinations of types of relationships. For instance, Chris (factoryjoe) is:<br><br>friend, met, coworker, co-resident, sweetheart<br><br>It doesn't say how I met Chris, but it defines my current relationship with him.<br><br>How I met someone is very anecdotal and personal and has endless possibilities...and, you are right, this is where tagging can be very helpful.<br><br>So, if I link to Chris, I can say:<br><br>\"a href=\"http://www.factoryjoe.com/blog\" rel=\"friend, met, coworker, co-resident, sweetheart\" tag=\"designer, citizenagency, factoryjoe, sanfrancisco, talented, barcamp, coworking, microformats, openid, opensource\"\"<br><br>But our actual story is much more complex than that and can never be boiled down to a tag or a drop down. However, for someone I met at a conference, I can tag that person with that conference. If the relationship gets more complex, I may have to remove the conference reference as it becomes meaningless.<br><br>Personally, I agree with Jeremy Toeman regarding the misuse of the Nazi term (remember Godwin's Law: <a href=\"http://tinyurl.com/6h49c\" rel=\"nofollow\">http://tinyurl.com/6h49c</a>). Perhaps social networks haven't solved the issue very well. I agree. Personally, I like some of the boundaries these SNs set. I use them for what I use them. LinkedIn does my professional network stuff. Facebook helps me keep in contact with old friends. Twitter is my microblogging tool. I have slightly different networks for all of them and my relationships aren't all transferable.<br><br>Okay...so what I've said in a very long-winded comment is that the solution isn't simple. There are both positive and negative results from closed social networks. And there are ways in which people have already been discussing these issues for many years that are out there.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_17:25:12", "killed": false, "user_key": "e74f77782e7ac25afb5f4a0e77468b21", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682274": {"up_voted": false, "ip": "", "has_replies": false, "message": "I'm a joiner. It's part of what I do. But I'm getting to the point where it truly is fatigue, filling out yet another profile. Can't we just agree? This feels like multiple railroad gauges. Doesn't it? If this were locomotion, which it is not, but it still is the transport of goods and services, we'd have those crazy old railroad days, where everything was screwed by way of multiple gauges.<br><br>BTW, LinkedIN just got made because I tried to blanket invite all the folks from all the other various social networks. They're the only ones who 'penalize' me for trying to load up a bunch of friends.<br><br>Ah, social networks.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_17:33:04", "killed": false, "user_key": "2f357e9ee4d75cf12092bf9f23b13bae", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682275": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yeah I think as several people have mentioned, tagging to me is a very passable and usable solution to the 'friend for a reason' dillema. When I make plans on <a href=\"http://planyp.us\" rel=\"nofollow\">Planypus</a> I have friends who are tagged as \"fnd\" (friday night dinner) and friends tagged as \"sports\" or friends tagged as \"bloggers\" so that when I have events pertaining to any of those subsets, I can simply share my plans with them with one click. Pretty useful.<br><br>I don't know why twitter hasn't done this, and in fact this is the limiting factor that prevents me from using twitter as it is intended. Instead I've created a private twitter account for my Planypus coworkers so we can twitter in the office, and then I have another public twitter account. If twitter supported tags it would give me a quick and dirty way to twitter to a particular group of people (it could still default to public giving me the same functionality)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_17:40:53", "killed": false, "user_key": "0a5b413991ed9a58bb8845f7ecab7106", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682276": {"up_voted": false, "ip": "", "has_replies": false, "message": "The \"how you know someone\" feature of Facebook is highly optional - you can easily skip it and I think that at least half of Facebook's user base does.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_18:03:34", "killed": false, "user_key": "d81768961f2256f93033e491a076d745", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682277": {"up_voted": false, "ip": "", "has_replies": false, "message": "I could add simple tagging to our social networking software and it wouldn't change anything. It would be like TagWorld. People don't visit social networks for features.<br>I took out a domain, <a href=\"http://malliki.com\" rel=\"nofollow\">malliki.com</a>. As soon as the rest of our server gets here and I put it in the datacenter I'll make it live. But even with a cross between wikipedia and friendster, something that's new and pointless. I don't see people going to it.<br><br>If Scoble gave me either the best social networking software on earth or 5 real well known celebrity profiles including Paris Hilton. As somebody who wants to make money off of it, I would take the celebrities in a second. Ordinary people do not give a crap about the software.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_18:27:42", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682278": {"up_voted": false, "ip": "", "has_replies": false, "message": "While everybody is moaning that e-mail is dying, social network messaging is thriving, yet it's nearly identical to e-mail. Why is it doing so well, but e-mail isn't?<br><br>Because social network messaging is a multi-degreed form of communication and it's easy to access contacts (most of the time). The problem is that social network messaging can't scale because it's a closed network. How useful would Gmail be if you could only communicate with people on the Gmail domain?<br><br>Chris is right - people don't visit for features, they visit for communication. Why not take the Google approach of less is more? Stick to communication. Kill the profiles, use open protocols, make it easy to find needed contacts, and make the system opt-out versus opt-in.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_19:39:57", "killed": false, "user_key": "c143d0a90536bd45a78a911a38334be0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682279": {"up_voted": false, "ip": "", "has_replies": false, "message": "Chris, why wouldn't people go for it? First, if their friends use it, then they use it. Period. Doesn't matter. That's like me putting you in my address book - there isn't anything you can do about it.<br><br>I would say Plaxo is pretty successful with over 18 million users. Who would have thought that keeping your contact information up-to-date was so \"sexy\". As far as I'm concerned, Plaxo is \"address book 1.0\". We need \"address book 2.0\" that takes e-mail past the first-degree medium that it is.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_19:46:35", "killed": false, "user_key": "c143d0a90536bd45a78a911a38334be0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682280": {"up_voted": false, "ip": "", "has_replies": false, "message": "Can you just expound on the friend stories about Amsterdam? I bet there's a doosy or two in there ...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_19:53:31", "killed": false, "user_key": "40267a2ef2b56c42fbb808662a6b3332", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682281": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"It\u2019s what COULD Fred do for me in the future?\"<br><br>Is that what it's all about?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_20:26:16", "killed": false, "user_key": "b8fc4ea329c8cc89900169e19a34fdd8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682282": {"up_voted": false, "ip": "", "has_replies": false, "message": "Amyloo: a lot of it is, yes. You should look at LinkedIn. It's the ultimate of this kind of behavior. \"How do I use XXX to get my resume in front of YYY.\"", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_20:32:35", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682283": {"up_voted": false, "ip": "", "has_replies": false, "message": "Scott: want to go to Amsterdam? Then you'll be able to see just what happens. Some things will never get discussed online and are meant just for Face-to-Face meetings. :-)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_20:33:18", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682284": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I'm too old\"... you made me laugh out loud!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_21:00:57", "killed": false, "user_key": "d0f0fb6ac9472944ef2cd4a3009d5c98", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682285": {"up_voted": false, "ip": "", "has_replies": false, "message": "robert<br><br>lets go out for a beer and fix this problem. then we'll  be real friends!<br><br>fred", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_21:54:10", "killed": false, "user_key": "036fa00478f3563f6e081004ee5981d4", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682286": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Kill the profiles, use open protocols, make it easy to find needed contacts, and make the system opt-out versus opt-in.\"<br><br>I'm reposting this link so you can read it well.<br><a href=\"http://freemyspace.com/history.htm\" rel=\"nofollow\">http://freemyspace.com/history.htm</a><br><br>I've met some of the people behind these sites. They are not interested in rfc standards ect... They are not interested in the same goals as google.<br><a href=\"http://collect.myspace.com/misc/news.html\" rel=\"nofollow\">http://collect.myspace.com/misc/news.html</a><br><br>MySpace built up their membership not only by getting celebs, copying friendster ect.. But they had parties, physical parties in LA, and other places. Then they went and advertised on comcast channels.<br><br>Most of the people involved in Social networking are not interested in the technical details. Their programmers are not the best programmers because it's not something that you can say is an accomplishment really. No offense to Duc, he did a great job with the ugly mess that is cold fusion.<br><br>To understand why the sites are the way they are, you kind of have to have met some of the people or at least talked to them. They're not the Kevin Rose type for the most part. They're the Kevin Pereira type.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_21:57:17", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682287": {"up_voted": false, "ip": "", "has_replies": false, "message": "Fred: anytime! When will you be in San Francisco area soon?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_22:02:56", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682288": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's all about situational relevance -- you need to manage a large pool of professional contacts. I just want to keep in touch with my high school friends. Facebook doesn't need to support both of us, it's probably better that they don't. At the same time, if there isn't a site out there that meets your needs then there's a business opportunity.<br><br>Of course, there's the problem that my high school friends keep hopping networks, and I keep having to add them again and again. That's a real problem, and while I appreciate the ability to import my Gmail contacts into Facebook it isn't quite the same thing as importing my MySpace contacts.<br><br>Anyways, my point is that every SNS site has to choose: How will they model relationships? Will they try to support small networks or large networks? Will they encourage people to meet strangers or help people track down people they already know? Each of those decisions has implications in how the system can be used. Facebook made their decisions -- of course they might change their mind someday -- and those decisions lead to a system which might not work the way you want.<br><br>Honestly, it would suck if every SNS site worked the same way.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-18_22:11:52", "killed": false, "user_key": "302028a74eb49881b3e6bc550ce514e5", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682289": {"up_voted": false, "ip": "", "has_replies": false, "message": "No arguments here on your desires and issues with the friends bit.  A search would be great that worked on all the networks as well.<br><br>On the N95, you can actually save login details.  I've found it always works for username - though not always for password.  If you've saved the info, the way to call back your entry is by entering the first character and then pressing down, which will show your name.  You can select it and then your form info will fill.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_00:07:36", "killed": false, "user_key": "e521312db0e2961857ac8912738d9559", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682290": {"up_voted": false, "ip": "", "has_replies": false, "message": "You know, I've been writing to Facebook support regarding the constant signing in, and they suggested I \"...try clearing your mobile\u2019s cache and cookies,<br>then try logging into m.facebook.com.\"<br><br>It did help. Once. It's most frustrating.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_01:40:15", "killed": false, "user_key": "6a1b8ceb0b7aedd42b5fcc0802529f91", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682291": {"up_voted": false, "ip": "", "has_replies": false, "message": "People go apeshit about the feds being able to find out what book they checked out from the library but they'll freely populate a database with who all their friends are.<br><br>The line in the silicon stops a little short of that for me.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_01:52:18", "killed": false, "user_key": "b4f04f9fd2de8730cda367d361178145", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682292": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hey there Scoble, friendz 4-ever", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_03:48:52", "killed": false, "user_key": "b1088dbd877c2d7d33e6b3b63ee38081", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682293": {"up_voted": false, "ip": "", "has_replies": false, "message": "hi scoble,<br><br>never thought a phone call to u will lead to such a post<br><br>i really like you a lot<br><br>site name -RajaRishi.com where you the user rules us<br><br>gender-Anonymous,Man,Woman,gal,boy,couple,friends,group,gay,bi,lesbian,money lender,money seeker,govt official,any of above,dont wish to say<br><br>minimum age needed -1<br><br>registration starts at -1900<br><br>extensions currently allowed as pics -gif,jpg,jpeg,png,flv,fla,mpg,mp3<br><br>the only restriction that i have used is that u have to verify your email address at registration login_this is to ensure the safety of the site and to protect users and me&gt;the owner and the website host", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_10:11:48", "killed": false, "user_key": "1778d3a2eedaeb3e436de44c2bd5b6ac", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682294": {"up_voted": false, "ip": "", "has_replies": false, "message": "contd<br>--------------<br>this uses -php izabi - a open source social networking using php mysql script and runs on linux and any Linux apache php mysql(lamp) and any server using php mysql like iis etc  -users of my site can contribute code by sending code to me _raja_at_rajarishi.com or by contributing to the code base at <a href=\"http://www.phpizabi.net\" rel=\"nofollow\">www.phpizabi.net</a><br><br>it has been downloaded<br>---------<br>90,802 downloads totally that is<br>133.7 downloads per day<br><br>features that this script and which my website  currently has<br><br>New Features<br>    * Random members gender selection<br>    * Saved searches<br>Generic Features<br>    * Smileys support<br>    * Multilanguage support<br>    * Registration captcha<br>    * Mass mail support<br>    * Pictures cropping / proportions<br>    * Tell a friend<br>    * Invite a friend<br>    * Search and advanced search<br>    * Search by geographic distance<br>    * Contact us system<br>    * Bookmark link<br>    * Privacy and terms of use<br>    * Match search based on profile<br>    * Online / Offline status<br>    * Activity notification<br>    * Customizable genders<br>Users and Profiles<br>    * Customizable profile data<br>    * Customizable questionnaires<br>    * Email address confirmation<br>    * Automatic / Manual approval<br>    * Unique address check<br>    * Online status<br>    * Personal Gallery<br>    * Personal Blog<br>    * User settings panel<br>    * Ignore / Block users<br>    * New contacts notification<br>    * New mails notification<br>    * Favorite blogs<br>    * Recent profile views<br>    * Contacts list<br>    * Contacts categorization<br>    * Contacts management<br>    * Newsletter<br>    * Horoscope<br>    * Last login<br>    * Profile / pictures rating<br>    * Profile views<br>    * Private photo gallery<br>    * Nudges (kisses, slaps, ...)<br>    * Users comments<br>    * Events calendar<br>    * Personal events<br>    * Saved searches<br>Communication<br>    * Blogs<br>    * Internal messages system<br>    * Pages (notifications)<br>    * Forums (inkspot)<br>    * Chatrooms<br>    * Files sharing<br><br>script recommended by jessu@mail2.<br><br>so heres to anonymity<br><br>3 cheers to the new way to socialize -dont wish to say my name", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_10:13:00", "killed": false, "user_key": "1778d3a2eedaeb3e436de44c2bd5b6ac", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682295": {"up_voted": false, "ip": "", "has_replies": false, "message": "Remember: Friends don't ask Friends to be Friends.<br>Join the Social Hermits: <a href=\"http://hermits.ning.com\" rel=\"nofollow\">http://hermits.ning.com</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_10:34:59", "killed": false, "user_key": "4913dafc7f618b2ee4774ce7b2291751", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682296": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>Exactly. By checklist I meant in terms of defining the actions related to a tag - that's the biggest piece from a programming perspective - but you are right, the specific tags will be unique to each person (but I would still suggest that rather than a blank slate the network suggest a few standard types for people to start with if they don't want to go through the effort of customizing - i.e. you might then \"clone\" the privacy rules for \"family\" for the tag \"cafesinAmsterdam\"<br><br>Shannon", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_11:32:50", "killed": false, "user_key": "5e1140855c47af5e6c5e548bec95a168", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682297": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, thanks for picking on Jaiku as well :)<br><br>Your comment on not being able to see the people who have friended with you is a valid one and the feature is already on our roadmap. If you want to invite your existing contacts, check out <a href=\"http://jaiku.com/contacts/invite\" rel=\"nofollow\">http://jaiku.com/contacts/invite</a>. It is still limited in terms of services you can import from, but getting more complete.<br><br>Regarding the ability to make a difference between types of friends (\"school buddies\", \"colleagues\", ...), we'll soon introduce new channel functionality, which should take away part of the pain here. In addition, I've been selling the idea of people tagging for our team for some time, but let's see what happens there. I'd love to hear about your ideas of how the tags could be leveraged?<br><br>See you later today!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_16:01:18", "killed": false, "user_key": "88b9fd68472b21867efd8e0b666d07ab", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682298": {"up_voted": false, "ip": "", "has_replies": false, "message": "<a href=\"http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=120131288334\" rel=\"nofollow\">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&a...</a><br>Well, in retrospect I guess social networking isn't so bad. :)<br>You gotta love the internet!<br><br>BTW, My PSP also sold for 1/3 more than what the Microplay here wanted to give me for it.<br><a href=\"http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=120130279585\" rel=\"nofollow\">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&a...</a><br><br>Maybe the Scoble Wiki/Friendster Frankenstein will work after all. The new server should be here in a couple days so I can drive it down to the DC and find the hell out.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_20:54:30", "killed": false, "user_key": "e8d0dde0c4b3d65b72a92bba1fee5aa7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682299": {"up_voted": false, "ip": "", "has_replies": false, "message": "Scoble - are you aware of my article on friending?  You might appreciate it: <a href=\"http://www.firstmonday.org/issues/issue11_12/boyd/\" rel=\"nofollow\">http://www.firstmonday.org/issues/issue11_12/boyd/</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-19_23:37:40", "killed": false, "user_key": "e9bb8cb875d488853b6be71bbe13650f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682300": {"up_voted": false, "ip": "", "has_replies": false, "message": "So-called \"friends\" in internet and friends in real life differ and we have not to forget about it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-10-18_17:14:52", "killed": false, "user_key": "692fe6b6650a907534b987bb661cde25", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682301": {"up_voted": false, "ip": "", "has_replies": false, "message": "We think you are right. We are building a social network address book called Fidg't.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-20_12:46:29", "killed": false, "user_key": "f4a4669d8a2c73581e46eeba4c04edf3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682302": {"up_voted": false, "ip": "", "has_replies": false, "message": "Even worse in most online apps/Web 2.0 products I have worked with (and I've tried dozens, especially in the video hosting arena) is that they pay no attention to critical details like the login.<br><br>I am now forced to abandon Twitter because I tried to reset the password Monday (couldn't remember it, and needed it to try their Facebook widget), tried the reset function several times, and it just plain doesn't work. The form doesn't even align properly on the page when reloaded after a failure.<br><br>Emails to Twitter support, both via the form and direct email, have gone unanswered. Pity. I really liked Twitter, and have a lot of friends there. Now I'll have to see whether their competition does any better at handling the basics.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-21_12:25:05", "killed": false, "user_key": "636cdc3b4413bea9d4947ed6c69ca649", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9682303": {"up_voted": false, "ip": "", "has_replies": false, "message": "Really, you have those problems with FB mobile? I don't on my MotoQ IE--I'm logged in for weeks.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-06-21_13:19:26", "killed": false, "user_key": "354c8e19c039091c8c6532cadb446146", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": "", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "18349600", "user_id": "anonymous", "forum_id": "125200", "hash": 5258764186616230450}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 18349600, "num_posts": 78, "closed": true, "queued": false, "killed": false}, "reactions_limit": 10, "context": {"show_reply": false, "use_fb_connect": true, "forum_facebook_key": "faaf467d0f47abde553c3b8e0e1b3570", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

if(typeof DsqLocal == 'undefined') {
	DsqLocal = {};
}



/**
 * Dsq.Strings: UI strings
 */
Dsq.Strings = new function() {
	this.ADD_NEW_COMMENT = "Add New Comment";
	this.LOG_INTO_DISQUS = "Log into DISQUS";
	this.USE_MEDIA = "Use Media";
	this.LOGOUT = "Logout";
	this.SHARING_OPTIONS = "Sharing options";
	this.SHARE_ON = "Share on";
	this.TWEET_THIS_COMMENT = "Tweet this comment";
	this.SHARE_ON_NEWSFEED = "Share on news feed";
	this.SEND_UPDATE_TO_YAHOO = "Send update to Yahoo!";
	this.REBLOG_ON = "Reblog on";
	this.CONFIGURE_OPTIONS = "Configure options";
	this.POST_AS = "Post as";
	this.SORT_BY = "Sort by";
	this.SUBSCRIBE_BY_EMAIL = "Subscribe by email";
	this.SUBSCRIBE_BY_RSS = "Subscribe by RSS";
	this.POPULAR_NOW = "Popular now";
	this.BEST_RATING = "Best Rating";
	this.NEWEST_FIRST = "Newest first";
	this.OLDEST_FIRST = "Oldest first";
	this.HIGHLIGHTED = "Highlighted";
	this.UNSUBSCRIBE = "Unsubscribe";
	this.REQUIRED = "Required";
	this.OPTIONAL = "Optional";
	this.YOU_ARE_COMMENTING_AS_A = "You are commenting as a";
	this.LOGIN_BELOW = "Login below";
	this.PLEASE_LOGIN_BELOW_TO_COMMENT = "Please login below to comment.";
	this.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL = "Subscribe to all comments by email";
	this.DO_NOT_SUBSCRIBE_TO_COMMENTS = "Do not subscribe to comments";
	this.REALTIME_UPDATING_IS = "Real-time updating is";
	this.ENABLED = "enabled";
	this.PAUSED = "paused";
	this.PAUSE = "Pause";
	this.RESUME = "Resume";
	this.SHOW = "Show";
	this.JUST_NOW = "Just now";
	this.REPLY = "Reply";
	this.EDIT = "Edit";
	this.FLAG = "Flag";
	this.MODERATE = "Moderate";
	this.CANCEL = "Cancel";
	this.REPLYING_TO = "Replying to";
	this.REPORT_MISSING_REACTIONS = "Report missing reactions";
	this.POST_A_COMMENT = "Post a comment";
	this.FLAG_INAPPROPRIATE_COMMENT = "Flag inappropriate comment";
	this.FLAGGED = "Flagged";
	this.NO = "No";
	this.YES = "Yes";
	this.NEVER_MIND = "Never mind";
	this.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR = "Are you sure you would like to report this comment to a moderator";
	this.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION = "This will flag comments for moderators to take action";
	this.TO_RATE_PLEASE_LOG_IN = "To rate, please log in";
	this.JUST_A_MOMENT = "Just a moment...";
	this.GUEST = "Guest";
	this.NAME = "Name";
	this.EMAIL = "Email";
  this.WEBSITE = "Website";
  this.SETTINGS = "Settings";
  this.MODERATOR_OPTIONS = "Moderator options: ";
  this.MODERATE_OPTIONS = "Moderate Options";

  // Thread moderator actions
  this.CLOSE_THREAD = "Close thread";
  this.OPEN_THREAD = "Open thread";
  this.REMOVE_THREAD = "Remove thread";
  this.RESTORE_THREAD = "Restore thread";
  this.ACTIONS = "Actions";
};
// Dsq.Strings

/**
 * Dsq.FmtStrings: functions that return interpolated UI strings
 */
Dsq.FmtStrings = new function() {
	// Seems we have to use named interpolation for Django to translate. Investigate more.
	this.LOGGED_IN_AS = function(username) {
		return Dsq.Utils.interpolate('Logged in as %(username)s', {username:username});
	};

	this.LOGOUT_FROM = function(disqus) {
		return Dsq.Utils.interpolate('Logout from %(disqus)s', {disqus:disqus});
	};

	this.SHOWING_COMMENTS_FULL = function(total, num) {
		if (num === 1) {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> of <span id='dsq-total-posts'>%(total)s</span> comment", {num:num, total:total});
		} else {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> of <span id='dsq-total-posts'>%(total)s</span> comments", {num:num, total:total});
		}
	};

	this.SHOWING_COMMENTS_WITHOUT_PAGINATION = function(num) {
		if (num === 1) {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> comment", {num:num});
		} else {
			return Dsq.Utils.interpolate("Showing <span id='dsq-num-posts'>%(num)s</span> comments", {num:num});
		}
	};

	this.NUMBER_OF_COMMENTS = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s comment'
				: '%(num)s comments'
			), {num:num});
	};

	this.NUMBER_OF_LIKES = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s like'
				: '%(num)s likes'
			), {num:num});
	};

	this.NUMBER_OF_POINTS = function(num) {
		return Dsq.Utils.interpolate(
			(num == 1
				? '%(num)s point'
				: '%(num)s points'
			), {num:num});
	};
};
// Dsq.FmtStrings





Dsq.CSRF_TOKEN = 'a2d140c59df8cd4ce27a20e0829cacd8';
Dsq.COMMENTS_RE = /(<li.*?id="?dsq-comment-(\d+)"?.*?>)((?:.|\s)*?)(<\/li>)/gim;
Dsq.POST_RE = /(<div.*?id="?dsq-comment-header-(\d+)"?.*?>)((?:.|\s)*?)(<\/div>)\s*(<div.*?class="?dsq-comment-body"?.*?>)((?:.|\s)*)(<\/div>)/gim;
Dsq.POST_BODY_RE = /\s*(<div.*?id="?dsq-comment-message-(\d+)"?.*?>)((?:.|\s)*)(<\/div>)/gim;
// HACK: Safari ends with "-->" while other browsers end with "--&gt;" as expected.
Dsq.MEDIA_POST_RE = /&lt;!--\[(.*?)\]--(?:>|&gt;)/gim;



var FragmentPacket = function(reader, writer, writer_url, is_child, receiveCallback) {
	var that = this;
	this.reader = reader;
	this.writer = writer;
	this.writer_url = writer_url;

	this.is_child = is_child || false;
	this.receiveCallback = receiveCallback;

	this._lastHash = null;

	this._accumMsg = '';

	this._lastSeqno = 0;

	this.MAX_DATA_LEN	= 1024;

	this.WAIT_TIME		= 10;

	this.READY		= 0x1;
	this.WRITING	= 0x2;
	this.FIN		= 0x4;
	this.ACK		= 0x8;

};

FragmentPacket.prototype.createListener = function() {
	var that = this;
	var listener = function() {
		that.recv();
	};
	return window.setInterval(listener, 10);
};

FragmentPacket.prototype.log = function(msg) {



};

FragmentPacket.prototype.recv = function() {
	var hash;
	if (/MSIE/.test(navigator.userAgent)) {

		hash = this.reader.name;
	} else {

		var hashIndex = this.reader.location.href.indexOf('#');
		if (hashIndex == -1) {
			return;
		}
		hash = this.reader.location.href.substring(hashIndex+1);
	}
	var flags = parseInt(hash.substring(0, 4), 10);
	var seqno = parseInt(hash.substring(4, 24), 10);
	var data  = hash.substring(24);

	if (this._lastHash !== hash) {
		this._lastHash = hash;
		this.log('recv: ' + hash);

		this.log(' flags: ' + flags);
		this.log(' seqno: ' + seqno + ' len: ' + hash.substring(4, 24).length + ' (' + hash.substring(4, 24) + ')');
		this.log(' data: ' + data + ' len: ' + data.length);

		this._lastSeqno = seqno;

		if (flags & this.WRITING) {
			this._accumMsg += data;
			this.sendFlag(this.ACK, seqno);
			if (flags & this.FIN) {
				this.log('recv finished: ' + decodeURIComponent(this._accumMsg));
				this.receiveCallback(decodeURIComponent(this._accumMsg));

				this._accumMsg = '';

				this.sendFlag(this.READY | this.ACK, this._lastSeqno);
			}
		}
	}

	return {
		flags: flags,
		seqno: seqno,
		data: data
	};
};

FragmentPacket.prototype.sendRawPacket = function(packet) {
	if (/MSIE/.test(navigator.userAgent)) {
		this.writer.name = packet;
	} else {

		this.writer.location.href = this.writer_url + '#' + packet;
	}

};

FragmentPacket.prototype.sendFlag = function(flag, seqno) {
	this.sendRawPacket(this._zerofill(flag, 4) + this._zerofill(seqno, 20));
};

FragmentPacket.prototype.send = function(msg) {
	this._send(0, encodeURIComponent(msg));
};

FragmentPacket.prototype._send = function(packetNum, msg) {
	var that = this;
	var recvBuf = this.recv();

	if (packetNum === 0) {

		if (!(recvBuf.flags & this.READY)) {
			this.log('client is not ready, waiting...');
			window.setTimeout(function() { that._send(packetNum, msg); }, this.WAIT_TIME);
			return;
		}
	} else {

		if (!( (recvBuf.flags & this.ACK) && (recvBuf.seqno === this._lastSeqno) )) {
			this.log('waiting for ack from client...');
			window.setTimeout(function() { that._send(packetNum, msg); }, this.WAIT_TIME);
			return;
		} else {
			this.log('received ack: ' + this._lastSeqno + ' ' + recvBuf.seqno);
		}
	}

	var flags = this.WRITING;
	var num_packets = Math.ceil(msg.length / this.MAX_DATA_LEN);
	this.log('num_packets: ' + num_packets);

	if (num_packets === packetNum) {

		this.log('message successfully sent!');
		this.sendFlag(this.READY | this.ACK, this._lastSeqno);
		return true;
	}

	this._lastSeqno++;

	if (packetNum == num_packets-1) {
		flags |= this.FIN;
	}

	var data = msg.substring(packetNum * this.MAX_DATA_LEN, (packetNum+1) * this.MAX_DATA_LEN);
	var packet = this._zerofill(flags, 4) + this._zerofill(this._lastSeqno, 20) + data;

	this.log('sending raw packet: ' + packet);
	this.sendRawPacket(packet);

	return this._send(packetNum + 1, msg);
};

FragmentPacket.prototype._zerofill = function(num, width) {
	var retval = num.toString();
	var retval_len = retval.length;
	for (var i = 0; i < width - retval_len; i++) {
		retval = '0' + retval;
	}
	return retval;
};

var PostMessagePacket = function(receiver, receiveCallback, id, receiverId) {
	var that = this;
	this.receiver = receiver;
	this.receiveCallback = receiveCallback;
	this.id = id;


	this.receiverId = receiverId;
};

PostMessagePacket.prototype.createListener = function() {
	var that = this;

	var listener = function(e) {

		if (!that.id) {
			that.id = e.data;
			return;
		}


		var id = e.data.split(';')[0];
		if (id !== that.id) {
			return;
		}
		var data = e.data.substring(e.data.indexOf(';') + 1);

		that.receiveCallback(data);
	};

	if (typeof window.attachEvent == 'function') {
		window.attachEvent('onmessage', listener);
	} else if (typeof window.addEventListener == 'function') {
		window.addEventListener('message', listener, false);
	} else {
		throw new Error('No method found to create event listener for PostMessagePacket.');
	}
};

PostMessagePacket.prototype.send = function(msg) {



	var needs_reget = false;
	try {
		if (typeof this.receiver.id == 'undefined' || typeof this.receiver.postMessage == 'undefined') {
			needs_reget = true;
		}
	} catch(e) {


	}
	if (needs_reget && typeof this.receiverId != 'undefined') {
		this.receiver = document.getElementById(this.receiverId).contentWindow;
	}

	var packet;
	if (!msg) {

		packet = this.id;
	} else {
		packet = this.id + ';' + msg;
	}
	this.receiver.postMessage(packet, '*');
};

PostMessagePacket._last_unique_id = null;
PostMessagePacket._get_unique_id = function() {
	var id = (new Date()).getTime();
	if (id == PostMessagePacket._last_unique_id) {
		id++;
	}
	PostMessagePacket._last_unique_id = id;
	return id.toString();
};

var JsonRpc = function() {

	this.ids = {};

	this.objectToJSON = function(obj) {
		var json = '';
		var results = [];

		if (obj === undefined || obj === null) {
			return 'null';
		}

		switch (obj.constructor) {
			case Object:
				for (var property in obj) {
					if (obj.hasOwnProperty(property)) {
						results.push(this.objectToJSON(property) + ': ' + this.objectToJSON(obj[property]));
					}
				}
				json = '{' + results.join(', ') + '}';
				break;
			case Array:
				for (var i = 0; i < obj.length; i++) {
					results.push(this.objectToJSON(obj[i]));
				}
				json = '[' + results.join(', ') + ']';
				break;
			case Number:
			case Boolean:
				json = obj.toString();
				break;
			case String:

				var specialChars = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '\\': '\\\\'};

				json = obj.replace(/[\x00-\x1f\\]/g, function(match) {
					var ch = specialChars[match];
					return ch ? ch : '\\u00' + match.charCodeAt().toPaddedString(2, 16);
				});

				json = '"' + json.replace(/"/g, '\\"') + '"';
				break;
			default:

				json = 'null';
				break;
		}

		return json;
	};

	this.createHandler = function(send_func, registered_funcs) {
		var that = this;
		var handler = function(message) {

			try {
				var rpc = eval('(' + message + ')');
			} catch(e) {
				alert('bad JSON: ' + message);
				return;
			}
			if (rpc.method) {

				if (!registered_funcs[rpc.method]) {
					return;
				}

				var retval = registered_funcs[rpc.method].apply(null, rpc.params);
				if (rpc.id) {
					var response = {
						result: retval,
						error: null,	// TODO
						id: rpc.id
					};
					send_func(that.objectToJSON(response));
				}
			} else if(rpc.result) {

				if (!that.ids[rpc.id]) {
					return;
				}

				that.ids[rpc.id](rpc.result);
				delete that.ids[rpc.id];
			}
		};
		return handler;
	};

	this.execute = function(send_func, method, params, response_callback) {
		response_callback = response_callback || null;
		var id = (response_callback) ? (new Date()).getTime() : null;

		var request = {
			method: method,
			params: params,
			id: id
		};

		send_func(this.objectToJSON(request));

		if (id) {
			this.ids[id] = response_callback;
		}
	};
};
JsonRpc = new JsonRpc();

var ParentMessenger = function(childUrl, receiverUrl, container, receiveCallback) {


	if (navigator.userAgent.indexOf('Safari') >= 0 && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf('Version/') + 8), 10) == 3) {
		throw new Error("unsupported.");
	} else if (window.opera) {
		throw new Error("unsupported.");
	}



	if (!receiverUrl &&
		navigator.userAgent.indexOf('Gecko') >= 0 &&
		parseFloat(navigator.userAgent.slice(navigator.userAgent.indexOf('rv:') + 3, navigator.userAgent.indexOf('rv:') + 6)) < 1.9) {
		throw new Error("unsupported.");
	}


	if (/msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent)) {


		if (document.domain == window.location.hostname) {
			receiverUrl = '';
		}
	}

	var that = this;
	this.childUrl = childUrl;
	this.receiverUrl = receiverUrl;
	this.container = container || document.body;

	this.packetHandler = null;


	this._ready = false;
	this._error = false;


	var _createReceiverForFragmentPacket = function() {

		that.receiver = document.createElement('iframe');
		that.receiver.src = receiverUrl;
		that.receiver.id = 'receiver_' + (new Date()).getTime();
		that.receiver.name = that.receiver.id;

		that.receiver.frameBorder = '0';
		that.receiver.frameSpacing = '0';
		that.receiver.style.borderStyle = 'none';

		var receiver_onload = function() {
			var receiver = document.getElementById(that.receiver.id).contentWindow;

			try {
				receiver.document.body.innerHTML = '';
			} catch(e) {

				that._error = true;
			}
			receiver.document.body.style.padding = '0px';
			receiver.document.body.style.margin = '0px';

			var child = receiver.document.createElement('iframe');
			child.id = 'child';
			child.name = 'child';
			child.src = that.childUrl;

			child.frameBorder = '0';
			child.frameSpacing = '0';
			child.style.borderStyle = 'none';
			child.style.width = '100%';
			child.style.height = '100%';
			receiver.document.body.appendChild(child);

			that.child = receiver.document.getElementById('child').contentWindow;
			that.receiver = receiver;

			that.packetHandler = new FragmentPacket(that.receiver, that.child, that.childUrl, false, receiveCallback);

			that._listener = that.packetHandler.createListener();

			that.packetHandler.sendFlag(that.packetHandler.READY, 0);

			that._ready = true;
		};

		that.receiver.onreadystatechange = function() {
			if (this.readyState == 'complete') {
				receiver_onload();
			}
		};

		that.receiver.onload = receiver_onload;







		if (Dsq.Utils.ie) {
			if (that.container.clientWidth === 0) {

				var _waitForWidth = function() {
					if (that.container.clientWidth > 0) {
						Dsq.Utils.fixIframesIE(that.container.id);
					} else {
						window.setTimeout(_waitForWidth, 100);
					}
				};
				_waitForWidth();

				that._once = false;
				that.receiver.onresize = function() {
					if (!that._once) {
						Dsq.Utils.fixIframesIE(that.container.id);
					}
					that._once = true;
				};
			}
		}

		that.container.appendChild(that.receiver);
	};


	var _createReceiverForPostMessage = function() {

		var receiver_onload = function() {

			that.packetHandler.send();
			that._ready = true;
		};

		var id = PostMessagePacket._get_unique_id();
		var receiverId = 'child_' + id;


		ParentMessenger['_receiver_onload_' + receiverId] = receiver_onload;

		that.container.innerHTML += '<iframe ' +
			'src="' + childUrl + '" ' +
			'id="' + receiverId + '" ' +
			'name="' + receiverId + '" ' +
			'onload="ParentMessenger._receiver_onload_' + receiverId +'();" ' +
			'></iframe>';

		that.receiver = document.getElementById(receiverId).contentWindow;
		that.packetHandler = new PostMessagePacket(that.receiver, receiveCallback, id, receiverId);
		that._listener = that.packetHandler.createListener();
	};

	if (typeof window.postMessage == 'function') {
		_createReceiverForPostMessage();
	} else {
		_createReceiverForFragmentPacket();
	}

};

ParentMessenger.prototype.sendMessage = function(message) {
	var that = this;
	if (!this._ready) {

		window.setTimeout(function() { that.sendMessage(message); }, 10);
		return;
	}
	this.packetHandler.send(message);
	return true;
};

Dsq.NewFrames = function(url) {
	this.url = url;
};

Dsq.NewFrames.prototype.init = function(onFailure) {
	var that = this;

	try {
		this.messenger = new ParentMessenger(this.url, Dsq.jsonData.integration.receiver_url, this.container, this.receive_callback);
	} catch(e) {
		if (typeof onFailure == 'function') {
			onFailure();
		}
	}

	if (typeof onFailure == 'function') {
		var iId = window.setInterval(function() {
			if (typeof that.messenger == 'undefined') {
				window.clearInterval(iId);
				return;
			}
			if (that.messenger._ready) {
				window.clearInterval(iId);
			} else if (that.messenger._error) {
				window.clearInterval(iId);
				onFailure();
			}
		}, 10);
	}
};

Dsq.NewFrames.prototype._execute = function(method, args, callback) {
	var that = this;
	if (typeof that.messenger == 'undefined') {
		return false;
	}
	JsonRpc.execute(
		function(msg) { that.messenger.sendMessage(msg); },
		method,
		args || [],
		callback);
	return true;
};

Dsq.ReplyFrame = function(container, parent_post_id) {
	var that = this;
	this.container = container;
	this.parent_post_id = parent_post_id;

	var sendFunc = function(msg) {

		Dsq.Debug.log('Dsq.ReplyFrame.sendFunc');
		that.messenger.sendMessage(msg);
	};


	var postComment_onSuccess = function(response) {
		Dsq.jsonData.posts[response.message.id] = response.message.post_meta;
		if (!Dsq.jsonData.users[response.message.post_meta.user_key]) {
			Dsq.jsonData.users[response.message.post_meta.user_key] = response.message.user_meta;
		}


		var reply_position = (typeof(disqus_insert_wrt_sort) == 'undefined' 
			? (Dsq.jsonData.forum.reply_position ? -1 : null) 
			: (Dsq.jsonData.request.sort == 2 ? null : -1));
		
		if (response.message.post_meta.approved) {
			Dsq.Post.insert(response.message.post_meta.parent_post_id || reply_position, response.message.id, response.message.post_meta.message);
		}

		Dsq.Templates.postComment_onSuccess(response, parent_post_id, response.message.id);
	};

	var postComment_onFailure = function(response) {
		Dsq.Popup.popModal(response.message, 'Error');
		Dsq.Templates.postComment_onFailure(response, parent_post_id, response.message.id);
	};

	var editComment_onSuccess = function(response) {
		var post_id = parent_post_id;
		var message = Dsq.$('dsq-comment-message-' + post_id);
		
		message.innerHTML = response.message;
		Dsq.Templates.toggleEdit(post_id);
		Dsq.Templates.setLoadingButton(false);
	};
	
	var editComment_onFailure = function(response) {
		var post_id = parent_post_id;
		
		Dsq.Popup.popModal('Sorry, there was an error editing this comment.', 'Edit Error');
		Dsq.Templates.toggleEdit(post_id);
		Dsq.Templates.setLoadingButton(false);
	};

	var getUserByEmail_onSuccess = function(response) {
		var msg = response.message;
		var fields = Dsq.Templates.getFormFields(parent_post_id);

		if (msg.username) {

			Dsq.Templates.lightboxAuthenticate(parent_post_id, 'login', {
				'username': msg.username,
				'display_name': msg.display_name,
				'avatar_url': msg.avatar_url,
				'verified': msg.verified,
				'email': fields.email.value
			});
		} else {

			Dsq.Templates.lightboxAuthenticate(parent_post_id, 'register');
		}
	};

	var validateAuth_onSuccess = function(response, auth_choice) {
		Dsq.Templates.postComment(parent_post_id, null, true, auth_choice);
	};

	var validateAuth_onFailure = function(response, auth_choice) {
		var pid = parent_post_id ? '-' + parent_post_id : '';
		var msg = response.message;

		if (auth_choice == 'register') {
			var fields = ['email', 'username', 'password'];

			for (var i = 0; i < fields.length; i++) {
				var field = fields[i];
				var errorDiv = Dsq.$('dsq-' + field + '-errors' + pid);

				if (msg[field]) {
					errorDiv.innerHTML = msg[field];
				} else {
					errorDiv.innerHTML = '';
				}
			}
		} else if (auth_choice == 'login') {
			Dsq.$('dsq-lightbox-errors' + pid).innerHTML = '<p>We couldn\'t log you in. Please verify your login.</p>';
		}
		
		Dsq.Templates.setLoadingButton(false);
	};

	this.receive_callback = JsonRpc.createHandler(sendFunc, {
		'postComment.onSuccess': postComment_onSuccess,
		'postComment.onFailure': postComment_onFailure,
		'editComment.onSuccess': editComment_onSuccess,
		'editComment.onFailure': editComment_onFailure,		
		'getUserByEmail.onSuccess': getUserByEmail_onSuccess,
		'validateAuth.onSuccess': validateAuth_onSuccess,
		'validateAuth.onFailure': validateAuth_onFailure,
		'reload': function() { window.location.reload(); }
	});

	this.url = Dsq.Urls.REPLY +
		'?' + (new Date()).getTime() +
		'&f=scobleizer' +
		'&t=social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter' +
		'&ff=' + Dsq.Thread.ff +
		'&default_text=' + encodeURIComponent(disqus_default_text) +
		'&ifrs=' + encodeURIComponent(disqus_iframe_css);
	if (this.parent_post_id) {
		this.url += '&parent_post=' + this.parent_post_id;
	}
};

Dsq.ReplyFrame.prototype = new Dsq.NewFrames(Dsq.ReplyFrame.url);

Dsq.ReplyFrame.prototype.post = function(author_name, author_email, author_url, authenticate, sharing_services, subscribe) {
	this._execute('postComment', [author_name, author_email, author_url, authenticate, sharing_services, subscribe]);
};

Dsq.ReplyFrame.prototype.edit = function(post_id, message) {
	this._execute('editComment', [post_id, message]);
};

Dsq.ReplyFrame.prototype.setState = function(parent_post_id, depth) {
	this._execute('setState', [parent_post_id, depth]);
};

Dsq.ReplyFrame.prototype.getUserByEmail = function(email) {
	this._execute('getUserByEmail', [email]);
};

Dsq.ReplyFrame.prototype.validateAuth = function(auth_choice, email, username, password) {
	this._execute('validateAuth', [auth_choice, email, username, password]);
};

Dsq.ReplyFrame.prototype.authenticateFacebook = function(session, forum_url) {
	this._execute('authenticateFacebook', [session, forum_url]);
};

	Dsq.Facebook = function() {
	var that = this;

	var handleSessionData = function(session) {

		var forum_url = Dsq.jsonData.forum.url;




		if (typeof disqus_facebook_forum != 'undefined') {
			forum_url = disqus_facebook_forum;
		}
		Dsq.frames.reply_0.authenticateFacebook(session, forum_url);
	};

	var onLogin = function() {
		FB.Connect.getSignedPublicSessionData(handleSessionData);
	};

	this.login = function() {
		FB.Connect.requireSession(onLogin, true);
	};
};
Dsq.Facebook = new Dsq.Facebook();


	






Dsq.Themes = {};

Dsq.Themes.narcissus = new function() {
	this.addPostContainer = 'dsq-form-area';
	this.textareaContainer = 'dsq-textarea-wrapper';



	
	this.header = function() {
		var comments_count, total_posts, num_posts;
		var html = '';
		var missing_perm_tmpl;

		if (Dsq.jsonData.request.missing_perm) {
			missing_perm_tmpl = Dsq.Templates.missingPermissions();
			if (missing_perm_tmpl) {
				html += '<div class="dsq-missing-permissions">' + missing_perm_tmpl + '</div>';
			}
		}

		total_posts = Dsq.jsonData.thread.total_posts;
		num_posts = Dsq.jsonData.thread.num_posts;

		if (total_posts) {
			comments_count = Dsq.FmtStrings.SHOWING_COMMENTS_FULL(total_posts, num_posts);
		} else {
			comments_count = Dsq.FmtStrings.SHOWING_COMMENTS_WITHOUT_PAGINATION(num_posts);
		}

		html += ' \
		<div id="dsq-comments-title"> \
			<h3>' + comments_count + '</h3> \
		</div> \
		';

		html += ' \
		<div class="dsq-options"> \
			<span class="dsq-item-sort">'
				+ Dsq.Strings.SORT_BY + ' \
				<select id="dsq-sort-select" onchange="Dsq.Thread.sortBy(this.value);"> \
					<option value="hot" ' + (Dsq.jsonData.request.sort == 4 ? 'selected="selected"' : '') + '>' + Dsq.Strings.POPULAR_NOW + '</option> \
					<option value="best" ' + (Dsq.jsonData.request.sort == 3 ? 'selected="selected"' : '') + '>' + Dsq.Strings.BEST_RATING + '</option> \
					<option value="newest" ' + (Dsq.jsonData.request.sort == 2 ? 'selected="selected"' : '') + '>' + Dsq.Strings.NEWEST_FIRST + '</option> \
					<option value="oldest" ' + (Dsq.jsonData.request.sort == 1 ? 'selected="selected"' : '') + '>' + Dsq.Strings.OLDEST_FIRST + '</option> \
				</select> \
				&nbsp; \
			</span> \
			<span class="dsq-subscribe-email"> \
				<img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle"> \
				<span id="dsq-subscribe">'
					+ (Dsq.jsonData.context.subscribed
						? '<a href="#" onclick="Dsq.Thread.subscribe(0); return false">' + Dsq.Strings.UNSUBSCRIBE + '</a>'
						: '<a href="#" onclick="Dsq.Thread.subscribe(1); return false">' + Dsq.Strings.SUBSCRIBE_BY_EMAIL + '</a>')
				+ '</span> \
			</span> \
			<span class="dsq-subscribe-rss" style="width:12px;height:12px;vertical-align:middle"> \
				<img src="http://media.disqus.com/images/embed/bullet-feed.png" alt="" /> \
				<a href="http://scobleizer.disqus.com/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/latest.rss">' + Dsq.Strings.SUBSCRIBE_BY_RSS + '</a> \
			</span> \
		</div> \
		';

		
		

		return html;

	};
	
	this.footer = function() {
		var html = '';

		html += Dsq.Templates.pagination();

		
		
			html += Dsq.Templates.realtime();
			html += Dsq.Templates.showThreadSettings();
			html += Dsq.Templates.postBox();

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		


		if (Dsq.jsonData.request.is_global_moderator) {
 			html += ' \
				<div class="dsq-global-moderator-extras">'
					+ '<strong>shortname:</strong> ' + Dsq.jsonData.forum.url
					+ '<strong>thread id:</strong> ' + Dsq.jsonData.thread.id
					+ '<strong>thread slug:</strong> ' + Dsq.jsonData.thread.slug
				+ '</div> \
			';
		}

		return html;
	};
	
	this.realtime = function() {
		var html = '';
		
		if (Dsq.jsonData.realtime_enabled) {
			html += '<div id="dsq-realtime-options" class="dsq-options">'
					 + Dsq.Strings.REALTIME_UPDATING_IS + ' <strong id="dsq-realtime-status" style="text-transform: lowercase">' + Dsq.Strings.ENABLED + '</strong>. \
					 <a href="#" id="dsq-realtime-toggle" style="text-transform: capitalize"></a> \
					</div>';
		}

		if (!Dsq.jsonData.forum.streaming_realtime) {
			html += ' \
				<div style="display: none" id="dsq-realtime-alert" class="dsq-realtime-alert"><span id="dsq-realtime-queued"></span> <a href="#" id="dsq-realtime-show"></a></div> \
			';
		}
		
		return html;
	};

	this.showThreadSettings = function() {
		if (!Dsq.jsonData.request.is_moderator) {
			return '';
		}

		html = '<div id="dsq-thread-settings" class="dsq-thread-settings">' + Dsq.Strings.MODERATOR_OPTIONS;
		html += '<a href="#" onclick="Dsq.Thread.showSettings(); return false;">' + Dsq.Strings.SETTINGS + '</a>';
		html += '<a href="#" onclick="Dsq.Thread.showModeratorActions(); return false;">' + Dsq.Strings.MODERATE + '</a>';
		if (Dsq.jsonData.forum.reactions_enabled && Dsq.jsonData.reactions.length === 0) {
			html += '<a href="#" onclick="Dsq.Reaction.reportMissingReactions(); return false;">'
						+ Dsq.Strings.REPORT_MISSING_REACTIONS
						+ '</a>';
		}
		html +='</div>';

		return html;
	};

	this.postBox = function(post_id, use_fallback_iframe) {


		var html;
		var display_sharing_options = Dsq.jsonData.request.is_authenticated;

		if (!Dsq.jsonData.request.is_authenticated && Dsq.jsonData.forum.disqus_auth_disabled && !Dsq.jsonData.forum.allow_anon_post) {
			return '';
		}
		
		if (Dsq.jsonData.request.is_remote) {


			if (!Dsq.jsonData.request.sharing.hasOwnProperty(Dsq.jsonData.request.remote_domain)) {
				display_sharing_options = false;
			}
		}
		
		if (post_id) {
			var _meta = Dsq.jsonData.posts[post_id];
			var userData = Dsq.jsonData['users'][_meta.user_key];				
		}
		
		var pid = post_id ? '-' + post_id : '';

		var _requestUserInfo = function() {
			var html;



			var user_has_email = false;

			html = '<div class="dsq-request-user-info"> <!-- // If authenticated --> \
				<a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.LOGOUT + '?ctkn=' + Dsq.CSRF_TOKEN + '" class="dsq-request-user-logout">' + Dsq.Strings.LOGOUT + '</a> \
				<table> \
					<tr> \
						<td rowspan="2">'
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '<a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE + '">' : '')
								+ '<img src="' + Dsq.Urls.REQUEST_USER_AVATAR + '" width="48" height="48" class="dsq-request-user-avatar">'
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '</a>' : '')
						+ '</td> \
						<td class="dsq-request-user-name">'
								+ (Dsq.jsonData.request.is_remote
									 ? '<span class="dsq-badge-small dsq-badge-' + Dsq.jsonData.request.remote_domain + '">' + Dsq.jsonData.request.remote_domain + '</span>'
									 : (Dsq.jsonData.request.is_verified
											? '<span class="dsq-badge-small dsq-badge-verified">Verified</span>'
											: '<span class="dsq-badge-small dsq-badge-registered">Registered</span>'))
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? ' <a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE + '">' : '') 
								+ Dsq.jsonData.request.display_username 
							+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '</a>' : '')
							+  (Dsq.jsonData.request.is_remote && user_has_email ? ' <small>(<a href="#" onclick="Dsq.Popup.remoteAccountSettings(); return false;">change settings</a>)</small>' : '')
							+  (!Dsq.jsonData.request.is_remote && !Dsq.jsonData.forum.disqus_auth_disabled ? ' <small>(<a href="' + Dsq.jsonData.settings.disqus_url + '/profile/info/" target="_blank">change name</a> or <a href="' + Dsq.jsonData.settings.disqus_url + '/profile/avatar/" target="_blank">picture</a>)</small>' : '')
						+ '</td> \
					</tr> \
					<tr> \
						<td class="dsq-request-user-stats"> \
							<span><big>' + Dsq.jsonData.request.comments_count + '</big> ' + (Dsq.jsonData.request.comments_count == 1 ? 'comment' : 'comments') + '</span> \
							<span><big>' + Dsq.jsonData.request.likes_count + '</big> ' + (Dsq.jsonData.request.likes_count == 1 ? 'like' : 'likes') + '</span> \
							<span><big>' + Dsq.jsonData.request.points + '</big> ' + (Dsq.jsonData.request.points == 1 ? 'point' : 'points') + '</span> \
						</td> \
					</tr> \
				</table> \
			</div> \
			';
			return html;
		};

		var _loginOptions = function() {
			var html;
			html = ' \
			<div class="dsq-authenticate"> \
				<p class="dsq-autheneticate-copy">'
				+ (Dsq.jsonData.forum.allow_anon_post
					? Dsq.Strings.YOU_ARE_COMMENTING_AS_A + ' <a class="dsq-help" title="Click for more information" href="#" onclick="Dsq.Popup.helpBadges(); return false">Guest</a>. ' + Dsq.Strings.OPTIONAL + ': ' + Dsq.Strings.LOGIN_BELOW + '.'
					: Dsq.Strings.REQUIRED + ': ' + Dsq.Strings.PLEASE_LOGIN_BELOW_TO_COMMENT + '.')
				+ '</p> \
				<ul class="dsq-login-buttons">'
					+ (!Dsq.jsonData.forum.disqus_auth_disabled ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Popup.login(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-disqus.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_fb_connect ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Facebook.login(); return false;"><img src="http://media.disqus.com/images/themes/narcissus/login-facebook.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_twitter_signin ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Twitter.startTwitterConnect(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-twitter.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_openid ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.OpenID.requestURL(); return false" ><img src="http://media.disqus.com/images/themes/narcissus/login-openid.gif" /></a></li>' : '')
					+ (Dsq.jsonData.context.use_yahoo ? '<li class="dsq-login-button"><a href="#" onclick="Dsq.Yahoo.startYahooConnect(); return false"><img src="http://media.disqus.com/images/themes/narcissus/login-yahoo.gif" /></a></li>' : '')
				+ '</ul> \
			</div> \
			';
			return html;
		};

		if (!Dsq.jsonData.context.show_reply) {


			if (!Dsq.jsonData.request.is_authenticated) {



				return '<div id="dsq-form-area" style="display:none"><div id="dsq-textarea-wrapper"></div></div>' + _loginOptions();
			} else {
				return '';
			}
		}

		html = ' \
		<div id="' + (post_id 
			? 'dsq-reply-post-' + post_id
			: 'dsq-new-post')
		 	+ '" class="dsq-post-area"> \
			<div class="dsq-dc-logo"> \
				<a href="http://disqus.com/comments" target="_blank"><img src="http://media.disqus.com/images/themes/narcissus/disqus-logo.png"></a> \
			</div>'
			+ (post_id 
				? '<h3>' + Dsq.Strings.REPLYING_TO + ' ' + userData.display_name + '</h3>'
				: '<h3>' + Dsq.Strings.ADD_NEW_COMMENT + '</h3>')
			+ (Dsq.jsonData.request.is_authenticated 
				? _requestUserInfo()
				: _loginOptions() )
			+ '<div id="dsq-form-area' + pid + '">'
			+ '<div class="dsq-textarea"> \
				<div class="dsq-textarea-wrapper" id="dsq-textarea-wrapper' + pid + '"></div> \
			</div>'
			+ (!Dsq.jsonData.request.is_authenticated
			? ' \
			<div class="dsq-post-fields"> \
				<table> \
					<tr> \
						<td class="dsq-post-fields-left"><div class="dsq-input-wrapper"><input id="dsq-field-name' + pid + '" type="text" value="' + (disqus_def_name ? disqus_def_name : (Dsq.jsonData.session.name ? Dsq.jsonData.session.name : Dsq.Strings.NAME + '" class="dsq-placeholder')) + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'name\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'name\')" /></div></td> \
						<td class="dsq-post-fields-right"><div class="dsq-input-wrapper"><input id="dsq-field-website' + pid + '" type="text" value="' + (Dsq.jsonData.session.url ? Dsq.jsonData.session.url : Dsq.Strings.WEBSITE + ' (' + Dsq.Strings.OPTIONAL.toLowerCase() + ')" class="dsq-placeholder') + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'website\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'website\')" /></div></td> \
					</tr> \
					<tr> \
						<td class="dsq-post-fields-left"><div class="dsq-input-wrapper"><input id="dsq-field-email' + pid + '" type="text" value="' + (disqus_def_email ? disqus_def_email : (Dsq.jsonData.session.email ? Dsq.jsonData.session.email : Dsq.Strings.EMAIL + '" class="dsq-placeholder')) + '" onfocus="Dsq.Templates.handlePlaceholder(event, this, \'email\')" onblur="Dsq.Templates.handlePlaceholder(event, this, \'email\')" /></div></td> \
						<td class="dsq-post-fields-right"> \
							<div class="dsq-subscribe"> \
								<a href="#" onclick="Dsq.Templates.chooseSubscribe(' + post_id + '); return false" class="dsq-subscribe-menu"><span id="dsq-subscribe-select' + pid + '">' + (Dsq.jsonData.request.subscribe_on_post ? Dsq.Strings.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL : Dsq.Strings.DO_NOT_SUBSCRIBE_TO_COMMENTS) + '</span> <small>&#9660;</small></a> \
								<ul class="dsq-panel" id="dsq-subscribe-menu' + pid + '"> \
									<li><a href="#" onclick="Dsq.Templates.setSubscribe(2, this, ' + post_id + '); return false">' + Dsq.Strings.SUBSCRIBE_TO_ALL_COMMENTS_BY_EMAIL + '</a></li> \
									<li><a href="#" onclick="Dsq.Templates.setSubscribe(0, this, ' + post_id + '); return false">' + Dsq.Strings.DO_NOT_SUBSCRIBE_TO_COMMENTS + '</a></li> \
								</ul> \
								<input id="dsq-subscribe-on-post' + pid + '" type="hidden" value="' + Dsq.jsonData.request.subscribe_on_post + '" /> \
							</div> \
						</td> \
					</tr> \
				</table> \
			</div>'
			: '')
			+ '<div class="dsq-post-footer"> \
				<div class="dsq-sharing-options" ' + (!display_sharing_options ? 'style="display:none;"' : '') + '> \
					<button type="button" class="dsq-button-small" onfocus="document.getElementById(\'dsq-post-button' + pid + '\').focus();"><span>' + Dsq.Strings.SHARING_OPTIONS + ' <small>&#9660;</small></span></button> \
					<div class="dsq-panel"> '
						+ (Dsq.jsonData.request.sharing.twitter !== undefined
								&& Dsq.jsonData.request.sharing.twitter.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-twitter' + pid + '"'
								  + (Dsq.jsonData.request.sharing.twitter.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-twitter' + pid + '">' + Dsq.Strings.SHARE_ON + ' Twitter</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.facebook
								&& (Dsq.jsonData.request.sharing.facebook.enabled === true ||
										(Dsq.jsonData.request.is_remote && Dsq.jsonData.request.remote_domain == 'facebook'))
							? '<div><input type="checkbox" id="dsq-sharing-facebook' + pid + '"'
									+ (Dsq.jsonData.request.sharing.facebook.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-facebook' + pid + '">' + Dsq.Strings.SHARE_ON + ' Facebook</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.yahoo !== undefined
								&& Dsq.jsonData.request.sharing.yahoo.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-yahoo' + pid + '"'
									+ (Dsq.jsonData.request.sharing.yahoo.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-yahoo' + pid + '">' + Dsq.Strings.SHARE_ON + ' Yahoo!</label> \
								</div>'
							: '')
						+ (Dsq.jsonData.request.sharing.tumblr !== undefined
								&& Dsq.jsonData.request.sharing.tumblr.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-tumblr' + pid + '"'
									+ (Dsq.jsonData.request.sharing.tumblr.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-tumblr' + pid + '">' + Dsq.Strings.SHARE_ON + ' Tumblr</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.wordpress !== undefined
								&& Dsq.jsonData.request.sharing.wordpress.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-wordpress' + pid + '"'
									+ (Dsq.jsonData.request.sharing.wordpress.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-wordpress' + pid + '">' + Dsq.Strings.SHARE_ON + ' Wordpress</label> \
								 </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.movabletype !== undefined
							  && Dsq.jsonData.request.sharing.movabletype.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-movabletype' + pid + '"'
									+ (Dsq.jsonData.request.sharing.movabletype.auto === true ? 'checked=true' : '') + '/> \
									<label for="dsq-sharing-movabletype' + pid + '">' + Dsq.Strings.SHARE_ON + ' Movable Type</label> \
							   </div>'
							: '')
						+ (Dsq.jsonData.request.sharing.typepad !== undefined
							  && Dsq.jsonData.request.sharing.typepad.enabled === true
							? '<div><input type="checkbox" id="dsq-sharing-typepad' + pid + '"'
									+ (Dsq.jsonData.request.sharing.typepad.auto === true ? 'checked=true' : '') + '/> \
								  <label for="dsq-sharing-typepad' + pid + '">' + Dsq.Strings.SHARE_ON + ' TypePad</label> \
							   </div>'
							: '')
						+ '<div><a href="' + Dsq.jsonData.settings.disqus_url + '/profile/connections/" target="_blank" class="dsq-configure-options">' + Dsq.Strings.CONFIGURE_OPTIONS + '</a></div>'
					+ '</div> \
				</div>'
				+ '<button type="button" class="dsq-button" id="dsq-post-button' + pid + '" onclick="Dsq.Templates.postComment(' + post_id + ', this, false)"><span>' + Dsq.Strings.POST_AS + ' '
				+ (Dsq.jsonData.request.display_username
					? Dsq.jsonData.request.display_username
					: Dsq.Strings.GUEST)
				+ '</span></button>'
				+ (post_id
					? '<button type="button" class="dsq-button" id="dsq-cancel-button' + pid + '" onclick="Dsq.Post.toggleReply(' + post_id +', this)"><span>' + Dsq.Strings.CANCEL + '</span></button>'
					: '')
			+ '</div>'
			+ '</div>' // end dsq-form-area
		+ '</div> \
		';
		
		return html;
	};




	this.appendPost = function(post_id) {
		var html = '<div id="dsq-append-post-' + post_id + '"></div>';
		return html;
	};

	this.postPrependHeader = function(post_id) {
		var html;
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		
		html = ' \
		<table> \
			<tr> \
				<td id="dsq-header-avatar-' + post_id + '" class="dsq-header-avatar" onmouseover="Dsq.Post.dropProfile(' + post_id + ')"> \
					<a id="dsq-avatar-' + post_id + '" class="dsq-avatar" href="' + userData.url + '" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">'
					+ (Dsq.jsonData.forum.show_avatar
					? '<img src="' + Dsq.jsonData.users[_meta.user_key].avatar + '" alt="" />'
					: '')
				+ '</a> \
				</td> \
				<td class="dsq-comment-header-meta"> \
		';

		
		return html;
	};
	
	this.postAppendHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var html;
		var parent_display_name = '';
		
		if(_meta.parent_post_id) {

			var _parent_meta = Dsq.jsonData.posts[_meta.parent_post_id];

			if (_parent_meta) {
				var parentUserData = Dsq.jsonData['users'][_parent_meta.user_key];
				parent_display_name = parentUserData.display_name;
			}
		}

		html = ' \
		<img src="http://media.disqus.com/images/themes/narcissus/moderator.png" class="dsq-moderator-star" title="Moderator" /> \
		<span class="dsq-comment-header-time"><a href="#comment-' + post_id + '" onclick="Dsq.Popup.permalink(' + post_id + ')" title="Permalink">' + (_meta.is_realtime ? Dsq.Strings.JUST_NOW : _meta.date) + '</a></span> '
		+ (_meta.parent_post_id && parent_display_name
			? '<a href="#comment-' + _meta.parent_post_id + '" title="Jump to comment">in reply to ' + parent_display_name + '</a>'
			: '')
		+ '</td> \
		<td id="dsq-like-pts-' + post_id + '" class="dsq-comment-header-likes">'
		+ (_meta.points
			? _meta.points + Dsq.Utils.pluralize(_meta.points, ' person', ' people') + ' liked this.'
			: '')
		+ '</td> \
		</tr> \
		</table> \
		';
		return html;
	};

	this.preBody = function(post_id) {
		var html = '';
		return html;
	};

	this.postFooter = function(post_id) {
		var html;
		var _meta = Dsq.jsonData.posts[post_id];
		if(_meta.killed || !_meta.approved) { return ''; }
		
		html = ' \
		<div class="dsq-comment-footer" id="dsq-comment-footer-' + post_id + '"> \
			<div class="dsq-comment-footer-left">'
				+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator
					? '<a href="#" onclick="Dsq.Templates.moderateOptions(' + post_id+ '); return false">' + Dsq.Strings.MODERATE + '</a>'
					: '')
				+ '<a href="#" id="dsq-post-report-' + post_id + '" class="dsq-post-report" onclick="Dsq.Post.report(' + post_id + ', false); return false;">' + Dsq.Strings.FLAG + '</a> \
			</div> \
			<div class="dsq-comment-footer-right">'
				+ (_meta.votable 
					? '<span id="dsq-like-' + post_id + '" class="dsq-like">'
					+ (!_meta.up_voted
						? '<button type="button" class="dsq-button-small" onclick="Dsq.Post.rate(this, ' + post_id + ', 1)" >Like</button>'
						: 'You liked this.&nbsp;&nbsp;')
					+ '</span>'
					: '')
				+ (_meta.can_reply && !_meta.has_replies && _meta.from_request_user
					? '<button type="button" class="dsq-button-small dsq-post-edit" onclick="Dsq.Post.edit(this, ' + post_id + ')" >' + Dsq.Strings.EDIT + '</button>'
					: '')
				+ (_meta.can_reply
					? '<span class="dsq-comment-footer-reply" id="dsq-comment-footer-reply-' + post_id + '" onclick="Dsq.Post.toggleReply(' + post_id +', this)"> \
						<button type="button" class="dsq-button-small">' + Dsq.Strings.REPLY + '</button> \
						<button type="button" class="dsq-comment-footer-reply-tab">' + Dsq.Strings.REPLY + '</button><span></span> \
					</span>'
					: '')
			+ '</div> \
		</div> \
		';
		
		return html;
	};



	
	this.showRetweets = function(id, limit, element_id /* Optional */) {
		var source, html = '';

		for (var i = 0, reaction; reaction = Dsq.jsonData.reactions[i]; i++) {
			if (reaction.id === id) {
				source = reaction.retweets;
			}
		}

		if (source) {
			if (limit === 0) {
				limit = source.length;
			}

			for (var j = 0; j < limit; j++) {
				var rt = source[j];
				html += '<a href="' + rt.url + '">' + rt.author_name + '</a>'	+ ((j === (limit - 1)) ? '.' : ', ');
			}
		}

		if (element_id === undefined) {
			return html;
		}

		var element = document.getElementById(element_id);
		element.innerHTML = html;
		return element;
	};

	this.showMoreReactions = function(reactions, has_more, start, limit) {
		var link = document.getElementById('dsq-show-more-reactions');
		var container = link.parentNode;
		container.removeChild(link);

		for (var i = 0, reaction; reaction = reactions[i]; i++) {
			var el = Dsq.Templates.generateReactionHTML(reaction);
			if (el) {
				container.innerHTML += el;
			}
		}

		if (has_more) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = start;
			var l = limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			container.innerHTML += '<li id="dsq-show-more-reactions" class="dsq-show-more-reactions"><button type="button" class="dsq-button-small" onclick="' + handler + '">Show more reactions</button></li>';
		}
	};

	this.generateReactionHTML = function(reaction) {
		if (reaction.body === null || reaction.body == '') {
			return;
		}

		if (reaction.author_name === '') {
			reaction.author_name = '&nbsp;';
		}

		if (reaction.url === '') {
			reaction.url = reaction.get_service_url;
		}

		var item = '<li class="dsq-comment dsq-reaction" id="dsq-reaction-' + reaction.id + '">'
			+ '<div class="dsq-comment-header"> \
			<table> \
			<tr> \
			<td class="dsq-header-avatar"> \
			';

		if (reaction.author_url && reaction.author_url !== '') {
			item += '<a target="_blank" href="' + reaction.author_url +'" class="dsq-avatar">';
		}

		if (reaction.avatar_url && reaction.avatar_url !== '') {
			item += '<img src="' + reaction.avatar_url + '"/>';
		} else {

			item += '<img src="' + Dsq.jsonData.media_url + '/images/noavatar92.png"/>';
		}

		var service_icon = (reaction.get_service_name == 'trackback' || reaction.get_service_name == 'pingback' ? 'rss' : reaction.get_service_name.replace(' ', ''));
		item += (reaction.author_url && reaction.author_url !== ''
				? '</a>'
				: '')
			+ '</td>'
			+ '<td><cite class="dsq-comment-cite">' + reaction.author_name + '</cite> <span class="dsq-comment-header-time">' + reaction.date_created + '</span></td>'
			+ '<td class="dsq-comment-header-likes"></td>'
			+ '</tr></table></div>' // end dsq-comment-header
			+ '<div class="dsq-reaction-header" \
				<table> \
					<tr> \
						<td class="dsq-reaction-header-left">'
							+ '<img class="dsq-service-icon" src="' + Dsq.jsonData.media_url + '/images/reactions/services/' + service_icon + '.png" />'
							+ ' From <a class="dsq-service-name" target="_blank" href="' + reaction.url + '">' + reaction.get_service_name + '</a> '
							+ 'via <a href="' + reaction.source_url + '">' + (reaction.source == 'backtype' ? 'BackType' : 'UberVU') + '</a>'
						+ '</td>'
						+ '<td class="dsq-reaction-header-right">';

			if(reaction.retweets) {
				var num_retweets = reaction.retweets.length;
				if (num_retweets > 0) {
					if (num_retweets == 1) {
						item += 'One more retweet from <a href="' + reaction.retweets[0].url + '">'  + reaction.retweets[0].author_name + '</a>';
					} else {
						item += (num_retweets + ' more retweets from ');
						item += '<span id="dsq-reaction-retweets-' + reaction.id + '">';
						var n_tweets = (num_retweets > 3) ? 3 : num_retweets;
						item += Dsq.Templates.showRetweets(reaction.id, n_tweets);
						if (n_tweets != num_retweets) {
							item += '</span> <a onclick="Dsq.Templates.showRetweets(' + reaction.id + ', 0, \'dsq-reaction-retweets-' + reaction.id + '\');'
								+ 'this.parentNode.removeChild(this); return false;" href="#">Show all</a>';
						}
					}
				}
			}	
			item += '</td></tr> \
			</table> \
			</div>' // end dsq-reaction-header
			+ '<div class="dsq-comment-body"> \
				<div class="dsq-comment-message">' + reaction.body + '</div>'
			+ '</div> \
			<div class="dsq-comment-footer"> \
				<div class="dsq-comment-footer-left"> \
				</div>'
				+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator 
					? ' \
					<div class="dsq-comment-footer-right"> \
						<button type="button" class="dsq-button-small dsq-hide-reaction" onclick="Dsq.Reaction.hide(' + reaction.id + ')">Hide</button> \
					</div>'
					: '')
			+ '</div>'
		item += '</li>'; /* Reaction HTML ends */
		return item;
	};

	this.reactions = function() {
		var html, reaction;

		if (Dsq.jsonData.reactions === undefined || Dsq.jsonData.reactions.length === 0) {
			return '';
		}

		html = '';
		for (var i = 0; reaction = Dsq.jsonData.reactions[i]; i++) {
			var item = Dsq.Templates.generateReactionHTML(reaction);
			if (item) {
				html += item;
			}
		}

		if (Dsq.jsonData.has_more_reactions) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = Dsq.jsonData.reactions_start;
			var l = Dsq.jsonData.reactions_limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			html += '<li id="dsq-show-more-reactions" class="dsq-show-more-reactions"><button type="button" class="dsq-button-small" onclick="' + handler + '">Show more reactions</button></li>';
		}

		return '<h3 id="dsq-reactions-title" class="dsq-h3-reactions">Reactions</h3><ul id="dsq-reactions" class="dsq-reactions">' + html + '</ul>';
	};
	
	this._popupGeneric = function(content) {
		return ' \
		<div class="dsq-popup-container"> \
			<table> \
				<tbody> \
					<tr> \
						<td class="dsq-popup-tl"></td><td class="dsq-popup-b"></td><td class="dsq-popup-tr"></td> \
					</tr> \
					<tr> \
						<td class="dsq-popup-b"></td> \
						<td class="dsq-popup-body"> \
							<div class="dsq-popup-content"> \
								<div class="dsq-popup-title"> \
									<button type="button" class="dsq-button-small" style="float:right" onclick="Dsq.Popup._closePopup(null, true)">Close</button>'
									+ content['header'] 
								+ '</div>'
								+ content['body']
							+ '</div> \
							<div class="powered-by"><a href="http://disqus.com/comments/">Powered by <img src="http://media.disqus.com/images/embed/disqus-logo.png" alt="Disqus Comments" style="margin-bottom:-5px" /></a></div> \
						</td> \
						<td class="dsq-popup-b"></td> \
					</tr> \
					<tr> \
						<td class="dsq-popup-bl"></td><td class="dsq-popup-b"></td><td class="dsq-popup-br"></td> \
					</tr> \
				</tbody> \
			</table> \
		</div> \
		';
	};



	
	this.chooseSubscribe = function(post_id) {

		var pid = post_id ? '-' + post_id : '';
		var menu = Dsq.$('dsq-subscribe-menu' + pid);
		
		menu.style.display = menu.style.display == 'block' ? 'none' : 'block';
		
	};
	
	this.setSubscribe = function(value, el, post_id) {

		var pid = post_id ? '-' + post_id : '';
		var input = Dsq.$('dsq-subscribe-on-post' + pid);
		var select = Dsq.$('dsq-subscribe-select' + pid);
		var menu = Dsq.$('dsq-subscribe-menu' + pid);
		
		select.innerHTML = el.innerHTML;
		input.value = value;
		this.chooseSubscribe(post_id);
	};
	
	this.getFormFields = function(post_id) {

		var fields = {};
		var pid = post_id ? '-' + post_id : '';
		var name = Dsq.$('dsq-field-name' + pid);
		var email = Dsq.$('dsq-field-email' + pid);
		var website = Dsq.$('dsq-field-website' + pid);
		var username = Dsq.$('dsq-field-username' + pid);
		var password = Dsq.$('dsq-field-password' + pid);

		fields = {
			'name': name,
			'email': email,
			'website': website,
			'username': username,
			'password': password
		}
		
		return fields;
	}
	
	this.validateFields = function(post_id) {
		
		if(Dsq.jsonData.request.is_authenticated) { return true; }
		
		var fields = Dsq.Templates.getFormFields(post_id);
		
		var nameField = fields.name;
		var websiteField = fields.website;
		var emailField = fields.email;
		
		websiteField.value = (websiteField.value == Dsq.Templates.placeholder['website']) ? '' : websiteField.value;
		
		var v = [{

			validator: Dsq.Validators.name,
			value: nameField.value
		}, {

			validator: Dsq.Validators.email,
			value: emailField.value
		}, {

			validator: Dsq.Validators.url,
			value: websiteField.value
		}];
		
		return Dsq.Validators.validate(v, function(e) { Dsq.Popup.popModal(e, 'Oops...') } );
	};
	
	this.checkExistingUser = function(post_id) {
		var fields = Dsq.Templates.getFormFields(post_id);		
		Dsq.Popup.loading(post_id);
		
		if (post_id) {
			Dsq.frames['reply_' + post_id].getUserByEmail(fields.email.value);
		} else {
			Dsq.frames['reply_0'].getUserByEmail(fields.email.value);
		}
	};

	this.validateAuth = function(el_clicked, post_id, auth_choice) {
		var fields = Dsq.Templates.getFormFields(post_id);
		var email = fields.email ? fields.email.value : '';
		var username = fields.username ? fields.username.value : '';
		var password = fields.password ? fields.password.value : '';
		
		Dsq.Templates.setLoadingButton(el_clicked, post_id);
		
		if (post_id) {
			Dsq.frames['reply_' + post_id].validateAuth(auth_choice, email, username, password);
		} else {
			Dsq.frames['reply_0'].validateAuth(auth_choice, email, username, password);
		}
	};

	this.lightboxUpdateEmail = function(post_id, new_email) {
		var fields = Dsq.Templates.getFormFields(post_id);
		fields.email.value = new_email;
	};

	this.lightboxAuthenticate = function(post_id, auth_choice, auth_data) {
		var title, body;
		var pid = post_id ? '-' + post_id : '';

		if(typeof(auth_data) == 'undefined') {
			var auth_data = Dsq.Templates.getFormFields(post_id);
		}

		d = auth_data;

		switch(auth_choice) {
			case 'register':
				var suggestedUsername = d.name.value.replace(/[^a-zA-Z0-9-]/g,'').toLowerCase();
			
				title = Dsq.jsonData.forum.allow_anon_post ? 'Optional:' : 'Required:';
				title += ' Register a <img src="http://media.disqus.com/images/embed/disqus-profile.png" alt=Disqus Profile" />';

				body = ' \
				<ul class="dsq-lightbox-register-reasons"> \
				<li>Verify your comments</li> \
				<li>Edit and delete comments</li> \
				<li>Manage comments and replies</li> \
				</ul> \
				';

				body += ' \
				<div class="dsq-lightbox-auth-fields"> \
					<table> \
						<tr> \
							<td>Email</td> \
							<td><input type="text" value="' + d.email.value + '" onchange="Dsq.Templates.lightboxUpdateEmail(' + post_id + ', this.value)" /><div id="dsq-email-errors' + pid + '"></div></td> \
						</tr> \
						<tr> \
							<td>Username</td> \
							<td><input id="dsq-field-username' + pid + '" type="text" value="' + suggestedUsername + '"/><div id="dsq-username-errors' + pid + '"></div></td> \
						</tr> \
						<tr> \
							<td>Password</td> \
							<td><input id="dsq-field-password' + pid + '" type="password" /><div id="dsq-password-errors' + pid + '"></div></td> \
						</tr> \
					</table> \
					<div class="dsq-lightbox-switch-auth"><a href="#" onclick="Dsq.Templates.lightboxAuthenticate(' + post_id + ',\'login\'); return false">Login instead</a></div> \
				</div> \
				<div id="dsq-lightbox-errors' + pid + '" class="dsq-lightbox-errors"></div> \
				<div class="dsq-lightbox-submit"> \
					<div class="dsq-lightbox-auth-post"><button type="button" class="dsq-button" onclick="Dsq.Templates.validateAuth(this, ' + post_id + ',\'' + auth_choice + '\')">Register and Post comment</button></div>'
					+ (Dsq.jsonData.forum.allow_anon_post
						? '<div class="dsq-lightbox-auth-skip"><button type="button" class="dsq-button-small" onclick="Dsq.Templates.postComment(' + post_id + ', this, true)">Just post as a Guest</button></div>'
						: '')
				+ '</div> \
				';
				break;
			case 'login':
				title = Dsq.jsonData.forum.allow_anon_post ? 'Optional:' : 'Required:';
				title += ' Login to your <img src="http://media.disqus.com/images/embed/disqus-profile.png" alt=Disqus Profile" />';
				body = '';
				
				if(d.avatar_url) {
					body += '<div class="dsq-lightbox-recognized"><table><tr>';
					body += '<td><img src="' + d.avatar_url + '" alt="" /></td>';
					body += '<td><span class="dsq-badge ' + (d.verified ? 'dsq-badge-verified' : 'dsq-badge-registered') + '">' + (d.verified ? 'Verified' : 'Registered') + '</span></td>';
					body += '<td>Hey <strong>' + d.display_name + '</strong>, is that you? Login below to claim this comment.';
					body += '</tr></table></div>';
				}

				body += ' \
				<div class="dsq-lightbox-auth-fields"> \
					<table> \
						<tr> \
							<td>Username or Email</td> \
							<td><input id="dsq-field-username' + pid + '" type="text" value="' + (d.avatar_url ? d.username : '') + '" /></td> \
						</tr> \
						<tr> \
							<td>Password <a href="http://disqus.com/forgot" target="_blank">(cannot log in?)</a></td> \
							<td><input id="dsq-field-password' + pid + '" type="password" /></td> \
						</tr> \
					</table> \
					<div class="dsq-lightbox-switch-auth"><a href="#" onclick="Dsq.Templates.lightboxAuthenticate(' + post_id + ',\'register\'); return false">Register instead</a></div> \
				</div> \
				<div id="dsq-lightbox-errors' + pid + '" class="dsq-lightbox-errors"></div> \
				<div class="dsq-lightbox-submit"> \
					<div class="dsq-lightbox-auth-post"><button type="button" class="dsq-button" onclick="Dsq.Templates.validateAuth(this, ' + post_id + ',\'' + auth_choice + '\')">Login and Post comment</button></div>'
					+ (Dsq.jsonData.forum.allow_anon_post
						? '<div class="dsq-lightbox-auth-skip"><button type="button" class="dsq-button-small" onclick="Dsq.Templates.postComment(' + post_id + ', this, true)">Just post as a Guest</button></div>'
						: '')
				+ '</div> \
				';
				break;
			default:
				break;
		}
		Dsq.Popup.lightbox(body, title, post_id);
		Dsq.$('dsq-field-username' + pid).focus();
	};
	
	this.buttonsToRestore = [];
	this.setLoadingButton = function(btn, post_id) {
		var pid = post_id ? '-' + post_id : '';
		if (btn) {

			var loadingBtn = document.createElement('button');
			loadingBtn.id = btn.id + '-loading';
			loadingBtn.innerHTML = '<img src="http://media.disqus.com/images/loading-lite.gif" alt="" /> ' + Dsq.Strings.JUST_A_MOMENT;
			loadingBtn.className = btn.className + ' dsq-post-loading';
			btn.parentNode.appendChild(loadingBtn);
			btn.style.display = 'none';
			var cancelBtn = Dsq.$('dsq-cancel-button' + pid);
			if(cancelBtn) { cancelBtn.style.display = 'none'; this.buttonsToRestore.push(cancelBtn); }
			this.buttonsToRestore.push(btn);
		} else {

			var buttons = this.buttonsToRestore;
			for(var i = 0; i < buttons.length; i++) {
				buttons[i].style.display = 'inline';
				Dsq.Utils.deleteNode(Dsq.$(buttons[i].id + '-loading'));
			}
		}
		
	};

	this.postComment = function(post_id, el_clicked, force, auth_choice) {
		var append_id = post_id ? '-' + post_id : '';
		var fields = Dsq.Templates.getFormFields(post_id);

		if (Dsq.Templates.validateFields(post_id)) {

			if (!Dsq.jsonData.request.is_authenticated && !force &&
				((!Dsq.Utils.readCookie('skipped_auth') && !disqus_skip_auth && !Dsq.jsonData.forum.disqus_auth_disabled) || !Dsq.jsonData.forum.allow_anon_post)) {
				Dsq.Templates.checkExistingUser(post_id);
				return false;
			}
			var params = [];
			if (!Dsq.jsonData.request.is_authenticated) {
				params.push(fields.name.value,
					fields.email.value,
					fields.website.value);

				if (auth_choice == 'login' || auth_choice == 'register') {
					params.push({
						auth_choice: auth_choice,
						username: fields.username.value,
						password: fields.password.value,
						email: fields.email.value
					});
				} else {
					params.push(null);
				}

				params.push(null /* sharing options */, Dsq.$('dsq-subscribe-on-post' + append_id).value);
			} else {
				var service_checked = function(name) {
					var el = Dsq.$('dsq-sharing-' + name + append_id);
					return (el !== null && el.checked === true) ? '1' : '0';
				};
				params.push(null, null, null, null, {
					tw: service_checked('twitter'),
					fb: service_checked('facebook'),
					tr: service_checked('tumblr'),
					wp: service_checked('wordpress'),
					mt: service_checked('movabletype'),
					tp: service_checked('typepad'),
					yh: service_checked('yahoo')
				});
			}

			var frame = Dsq.frames['reply_' + (post_id ? post_id : 0)];
			frame.post.apply(frame, params);

			if (el_clicked) {
				Dsq.Templates.setLoadingButton(el_clicked, post_id);
			}
			
			if (force) {
				Dsq.Utils.createCookie('skipped_auth', true);	
			}
			
		} else {
			return false;
		}
	};

	this.editComment = function(el_clicked, post_id) {
		var edited_message = Dsq.$('dsq-edit-textarea-' + post_id).value;

		Dsq.Templates.setLoadingButton(el_clicked, post_id);
		Dsq.frames['edit_' + post_id].edit(post_id, edited_message);
	};

	this.toggleEdit = function(post_id) {
		var body = Dsq.$('dsq-comment-body-' + post_id);
		var message = Dsq.$('dsq-comment-message-' + post_id);

		if (!Dsq.Post.stateEditToggled[post_id]) {


			message.style.display = 'none';
			if (Dsq.$('dsq-edit-' + post_id)) {
				Dsq.$('dsq-edit-' + post_id).style.display = 'block';
			} else {

				var edit_area = document.createElement('div');
				edit_area.id = 'dsq-edit-' + post_id;
				edit_area.className = 'dsq-edit dsq-textarea';
				edit_area.innerHTML = ' \
				<div class="dsq-textarea-wrapper"> \
					<textarea class="dsq-edit-textarea" id="dsq-edit-textarea-' + post_id + '">' + message.innerHTML + '</textarea> \
				</div> \
				<div class="dsq-save-edit"> \
					<button type="button" onclick="Dsq.Templates.editComment(this, ' + post_id + ')" class="dsq-button-small">Save Edit</button> \
				</div> \
				<div id="dsq-edit-iframe-' + post_id + '" style="display: none"></div> \
				';

				body.appendChild(edit_area);

				if (!Dsq.frames['edit_' + post_id]) {
					var _meta = Dsq.jsonData.posts[post_id];
					Dsq.frames['edit_' + post_id] = new Dsq.ReplyFrame(Dsq.$('dsq-edit-iframe-' + post_id), post_id);
					Dsq.frames['edit_' + post_id].init();
					Dsq.frames['edit_' + post_id].setState(post_id, _meta.depth);
				}
			}
		} else {

			message.style.display = 'block';
			Dsq.$('dsq-edit-' + post_id).style.display = 'none';
		}
		
		Dsq.Post.stateEditToggled[post_id] = !Dsq.Post.stateEditToggled[post_id];
	};
	
	this.edit = function(el, post_id) {

		Dsq.Templates.toggleEdit(post_id);
	};

	this.toggleReply = function(post_id, button) {
		
		if(!this.stateReplyToggled[post_id]) {

			if (Dsq.$('dsq-reply-post-' + post_id)) {
				Dsq.$('dsq-append-post-' + post_id).style.display = 'block';
			} else {
				Dsq.$('dsq-append-post-' + post_id).innerHTML = Dsq.Templates.postBox(post_id);
				var container = Dsq.$('dsq-textarea-wrapper-' + post_id);
				if (!Dsq.frames['reply_' + post_id] && container) {
					var _meta = Dsq.jsonData.posts[post_id];
					Dsq.frames['reply_' + post_id] = new Dsq.ReplyFrame(container, post_id);
					Dsq.frames['reply_' + post_id].init(function() {

						Dsq.$('dsq-append-post-' + post_id).innerHTML = Dsq.Templates.postBox(post_id, true);
						Dsq.$('dsq-form-area-' + post_id).innerHTML = '';

						var theme = (typeof disqus_frame_theme == 'undefined') ? 'default' : disqus_frame_theme;
						Dsq.Iframes.showReplyIframeInContainer(Dsq.$('dsq-form-area-' + post_id), post_id, {theme: theme});

					});
					Dsq.frames['reply_' + post_id].setState(post_id, _meta.depth);
				}
			}
			Dsq.$('dsq-append-post-' + post_id).className = 'dsq-append-post';
			Dsq.$('dsq-comment-footer-reply-' + post_id).className = 'dsq-comment-footer-reply-active';
			
		} else {

			Dsq.$('dsq-append-post-' + post_id).style.display = 'none';
			Dsq.$('dsq-append-post-' + post_id).className = '';
			Dsq.$('dsq-comment-footer-reply-' + post_id).className = 'dsq-comment-footer-reply';
		}
		
		this.stateReplyToggled[post_id] = !this.stateReplyToggled[post_id];

		if(Dsq.Utils.ie && this.stateReplyToggled[post_id]) {

		}

		Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_TOGGLED, {
			postId: post_id,
			opened: this.stateReplyToggled[post_id]
		});
	};
	
	this.moderateOptions = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		
		if(!Dsq.jsonData.request.is_moderator && !Dsq.jsonData.request.is_global_moderator) { return false; }

		var html;
		
		html = ' \
		<div class="dsq-moderate-options"> \
		<table>'
		+ (_meta.email ? '<tr><td>Email</td><td>' + _meta.email + '</td></tr>' : '')
		+ (_meta.ip ? '<tr><td>IP address</td><td>' + _meta.ip + '</td></tr>' : '')
		+ '<tr> \
			<td>Actions</td> \
			<td><ul>'
			+ (Dsq.jsonData.request.moderator_can_edit
				? '<li><a href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); Dsq.Popup._closePopup(null, true); return false;">Edit Comment</a></li>'
				: '')
			+ '<li><a href="#" onclick="Dsq.Post.removePost(' + post_id + ', 1); Dsq.Popup._closePopup(null, true); return false;">Delete Comment</a></li> \
			<li><a href="#" onclick="Dsq.Post.reportSpam(' + post_id + '); Dsq.Popup._closePopup(null, true); return false;">Mark Spam</a></li> \
			<li><a href="#" onclick="Dsq.Popup.blacklist(' + post_id + '); return false">Block User</a></li> \
			</ul></td> \
			</table> \
		</div> \
		';
		
		html += '<p>Go to the full <a href="http://disqus.com/comments/moderate/" target="_blank">moderate panel</a> for more options.</p>';
		
		return Dsq.Popup.popModal(html, 'Moderate Options', post_id);
	};
	
	this.placeholder = {
		'class': 'dsq-placeholder',
		'name': Dsq.Strings.NAME,
		'email': Dsq.Strings.EMAIL,
		'website': Dsq.Strings.WEBSITE + ' (' + Dsq.Strings.OPTIONAL.toLowerCase() + ')'
	};
	
	this.handlePlaceholder = function(evt, el, key) {
		var placeholder = Dsq.Templates.placeholder[key];
		var className = Dsq.Templates.placeholder['class'];
		
		switch(evt.type) {
			case 'focus':
				if(el.value == placeholder) {
					el.value = '';
					el.className = '';
				}
				break;

			case 'blur':
				if(el.value == '') {
					el.value = placeholder;
					el.className = className;
				}
				break;
			default:
				break;
		}
	};
	
	this.paginate = function(page, el_clicked) {

		var extra_params = '';

		if(typeof disqus_per_page != 'undefined') {
			extra_params += '&per_page=' + disqus_per_page;
		}
		if(typeof disqus_sort != 'undefined') {
			extra_params += '&sort=' + disqus_sort;
		}

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			Dsq.Templates.setLoadingButton(el_clicked);
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter'
			+ '&p='		+ page
			+ extra_params);
	};
	
	
	this.rate = function(el, id, vote) {


		if(Dsq.jsonData.request.is_authenticated || Dsq.jsonData.forum.allow_anon_votes) {
			if(vote == 1) {
				Dsq.$('dsq-like-' + id).innerHTML = '<img src="http://media.disqus.com/images/loading-small.gif">';
			}
			Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/vote.js'
				+ '?post_id='    + id
				+ '&vote='        + vote);
		} else {
			Dsq.Popup.login('To rate, please log in');
		}
	};

	this.voted = function(post_id, points, vote) {

		Dsq.$('dsq-like-pts-' + post_id).innerHTML = points + Dsq.Utils.pluralize(points, ' person', ' people') + ' liked this.';

		if(vote) {
			Dsq.$('dsq-like-' + post_id).innerHTML = 'You liked this.&nbsp;&nbsp;';
		}
	};




	this.postComment_onSuccess = function(response, parent_post_id, post_id) {
		var approved = response.message.post_meta.approved;

		if (parent_post_id) {
			Dsq.Post.toggleReply(parent_post_id);
		}

		Dsq.Popup._closePopup(null, true);
		
		if (approved) {
			Dsq.Post.incrementPostCount();
			Dsq.Post.outlineComment(post_id);
		} else {			
			var unapproved_msg = 'Thanks for posting!\
	 Your comment must be approved by a moderator before appearing here.\
			';
			Dsq.Popup.popModal(unapproved_msg, 'Comment awaiting approval', post_id);
		}

		var sharing_results = response.message.sharing_results;
		var sharing_errors = '';
		for (var service in sharing_results) {
			if (sharing_results.hasOwnProperty(service) === true) {
				if (sharing_results[service].error === true) {
					sharing_errors += service + ', ';
				}
			}
		}

		if (sharing_results.facebook && sharing_results.facebook.callback) {
			FB.ensureInit(function() {
				FB.Connect.streamPublish('', sharing_results.facebook.attachment);
			});
		}

		if (sharing_errors !== '') {
			var message = 'Your comment was posted, but there were errors sharing with the following connections: ';
			message += sharing_errors.replace(/,\s$/, '');
			message += '<p><a href="' + Dsq.jsonData.settings.disqus_url + '/profile/connections" target="_blank">Configure your connections here</a></p>'
			Dsq.Popup.popModal(message, 'Sharing options');
		}

		Dsq.Templates.setLoadingButton(false);
	};

	this.postComment_onFailure = function(response, parent_post_id, post_id) {

		Dsq.Templates.setLoadingButton(false);
	};
};




// TODO: It might be faster to use string methods to find all <li (...) </li> blocks and pass to Dsq.PostHandler manually.
Dsq.CommentsHandler = function(str, head, post_id, content, tail, offset, s) {
	var prepend_post = Dsq.Templates.prependPost(post_id);
	var append_post = Dsq.Templates.appendPost(post_id);

	content = content.replace(Dsq.POST_RE, Dsq.PostHandler);
	Dsq.Templates.postLoopCounter++;
	head = Dsq.Templates.Filters.commentContainer(post_id, head);
	return prepend_post + head + content + tail + append_post;
};

Dsq.PostHandler = function(str, h_head, post_id, h_content, h_tail, b_head, b_content, b_tail, offset, s) {
	var prepend_header = Dsq.Templates.postPrependHeader(post_id);
	var append_header = Dsq.Templates.postAppendHeader(post_id);
	var prepend_body = Dsq.Templates.preBody(post_id);
	var append_body = Dsq.Templates.postBody(post_id);
	var append_footer = Dsq.Templates.postFooter(post_id);

	b_content = b_content.replace(Dsq.POST_BODY_RE, Dsq.PostBodyHandler);
	return h_head + prepend_header + h_content + append_header + h_tail + b_head + prepend_body + b_content + append_body + b_tail + append_footer;
};

Dsq.PostBodyHandler = function(str, head, post_id, content, tail, offset, s) {
	content = Dsq.Templates.Filters.commentContent(post_id, content);
	return head + content + tail;
};

Dsq.MediaPostHandler = function(str, args, offset, s) {
	args = args.split(' ');
	if(args[0] == 'seesmic') {
		return '<br />' + Dsq.Templates.mediaSeesmic(args[1], args[2]);
	}
	return '';
};


/**
 * Shorcuts
 */
Dsq.$ = function(element) { return document.getElementById(element); };
Dsq.$b = document.body || document.getElementsByTagName('body')[0];


/**
 * Dsq.Debug: Logging functions.
 */

Dsq.Debug = new function() {this.log=function(s){};this.profile=function(f){if(typeof f == 'function')return f();else return eval(f);};};


/**
 * Dsq.Urls: URL paths
 */
Dsq.Urls = new function() {
	this.LOGIN = '/profile/login/';
	this.LOGOUT = '/logout/';
	this.REPLY = 'http://scobleizer.disqus.com/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/reply.html';
	this.REQUEST_USER_PROFILE = '/AnonymousUser/';
	this.REQUEST_USER_AVATAR = 'http://media.disqus.com/images/noavatar92.png';
};
// Dsq.Urls

/**
 * Dsq.Validators: Validation for form fields
 */
Dsq.Validators = new function() {
	this.VALID_EMAIL_RE = /^[a-z0-9\-\_\+]+(\.[a-z0-9\-\_\+]+)*\@(([a-z0-9\-\_\+]+(\.[a-z0-9\-\_\+]+)*)+\.[a-z]{2,}|([0-9]+\.){3}[0-9]+)$/i;
	this.name = function(name) {
		var error = false;

		if(typeof Dsq.Templates.placeholder !== 'undefined' &&
		   name == Dsq.Templates.placeholder.name) {
			error = true;
		}
		if(name.length <= 1) {
			error = true;
		}

		if(error) {
			return "Please enter a name to comment.";
		} else {
			return true;
		}
	};
	this.email = function(addr) {
		if(Dsq.Validators.VALID_EMAIL_RE.test(addr)) {
			return true;
		} else {
			return "Please enter a valid email to comment.";
		}
	};
	this.url = function(addr) {
		if(!addr || addr.indexOf('.') != -1) {
			return true;
		} else {
			return "Please check your website URL (this field is optional).";
		}
	};

	this.validate = function(bulk_validation, failure_callback) {
		failure_callback = failure_callback || function(e){ alert(e); };

		for(var i = 0; i < bulk_validation.length; i++) {
			v = bulk_validation[i];
			ret = v.validator(v.value);
			if(ret !== true) {
				failure_callback(ret);
				return false;
			}
		}
		return true;
	};
};

/**
 * Dsq.Utils: Generic utility functions.
 */
Dsq.Utils = new function() {
	this.ie = /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
	this.ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
	this.ie6 = (!window.XMLHttpRequest) ? true: false;
	this.webkit = navigator.userAgent.indexOf('AppleWebKit/') >= 0;
	this.gebiFromElementCollectionCache = {};
	this._styleSheet = null;

	this.gebiFromElement = function(el, id, tag) {
		// This only method only helps IE.
		if(!this.ie) {
			return Dsq.$(id);
		} else {
			var cacheKey = el.id + '-' + tag;
			tag = tag || 'div';
			if(typeof this.gebiFromElementCollectionCache[cacheKey] != 'undefined') {
				collection = this.gebiFromElementCollectionCache[cacheKey];
			} else {
				collection = el.getElementsByTagName(tag);
				this.gebiFromElementCollectionCache[cacheKey] = collection;
			}

			for(var i = 0; i < collection.length; i++) {
				if(collection[i].id == id) {
					return collection[i];
				}
			}
			return null;
		}
	};

	this.execOnReady = function(func) {
		var node = document.createElement('document:ready');
		try {
			node.doScroll('left');
			func();
			node = null;
		} catch(err) {
			setTimeout(function() { Dsq.Utils.execOnReady(func); }, 10);
		}
	};


	// Courtesy of http://www.quirksmode.org/js/cookies.html
	this.createCookie = function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	};

	this.readCookie = function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	};

	this.eraseCookie = function(name) {
		Dsq.Utils.createCookie(name,"",-1);
	};

	this.deleteNode = function(node) {
		if(node) {
			this.deleteChildren(node);
			if(typeof node.outerHTML != 'undefined') { node.outerHTML = ''; }
			else if(node.parentNode) { node.parentNode.removeChild(node); }
			delete node;
		}
	};

	this.deleteChildren = function(node) {
		if(node) {
			for(var x = node.childNodes.length-1; x >= 0; x--) {
				var childNode = node.childNodes[x];
				if(childNode.hasChildNodes()) { this.deleteChildren(childNode); }
				if(typeof childNode.outerHTML != 'undefined') { childNode.outerHTML = ''; }
				else node.removeChild(childNode);
				delete childNode;
			}
		}
	};

	this.findPos = function(obj) {
		var curleft = 0;
		var curtop = 0;
		if (obj.offsetParent) {
			do {
				curleft += obj.offsetLeft;
				curtop += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		return [curleft,curtop];
	};

	this.getWindowSize = function() {
		var windowWidth = -1;
		var windowHeight = -1;

		if(typeof(window.innerWidth) == 'number') { //Non-IE
			windowWidth = window.innerWidth;
			windowHeight = window.innerHeight;
		} else if(document.documentElement) { // IE 6+ in 'standards compliant mode'
			windowWidth = document.documentElement.clientWidth || document.body.clientWidth;
			windowHeight = document.documentElement.clientHeight || document.body.clientHeight;
		}

		return [windowWidth, windowHeight];
	}

	this.getScrollPos = function() {
		var scrollWidth, scrollTop;

		if(document.documentElement && (document.documentElement.scrollTop || document.documentElement.scrollWidth)) {
			scrollWidth = document.documentElement.scrollWidth;
			// IE is weird here.  If no doctype is provided, document.body.scrollTop is 0,
			// otherwise document.documentElement.scrollTop is 0.
			scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
		} else if(document.body.scrollTop && document.body.scrollWidth) {
			scrollWidth = document.body.scrollWidth;
			scrollTop = document.body.scrollTop;
		}

		return [scrollWidth, scrollTop];
	}

	this.addEventListener = function(instance, eventName, listener) {
		var listenerFn = listener;
		if (instance.addEventListener) {
			instance.addEventListener(eventName, listenerFn, false);
		} else if (instance.attachEvent) {
			listenerFn = function() {
				listener(window.event);
			};
			instance.attachEvent("on" + eventName, listenerFn);
		} else {
			throw new Error("Event registration not supported");
		}
		return {
			instance: instance,
			name: eventName,
			listener: listenerFn
		};
	};

	this.removeEventListener = function(event) {
		var instance = event.instance;
		if (instance.removeEventListener) {
			instance.removeEventListener(event.name, event.listener, false);
		} else if (instance.detachEvent) {
			instance.detachEvent("on" + event.name, event.listener);
		}
	};

	this.fixIframesIE = function(id) {
		var disqusThread = Dsq.$(disqus_container_id);
		var iframes = disqusThread.getElementsByTagName('iframe');

		if(id) {
			var container = Dsq.$(id);
		} else {
			var container = Dsq.$('dsq-content');
		}

		for(i = 0; i < iframes.length; i++) {
			if (container) {
				iframes[i].style.width = container.offsetWidth;
			}
		}
	};

	this.getElementsByClassName = function(oElm, strTagName, strClassName) {
	/* Credit: Jonathan Snook [http://www.snook.ca/jonathan], Robert Nyman [http://www.robertnyman.com] */
		var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
		var arrReturnElements = new Array();
		strClassName = strClassName.replace(/\-/g, "\\-");
		var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
		var oElement;
		for(var i = 0; i < arrElements.length; i++) {
			oElement = arrElements[i];
			if(oRegExp.test(oElement.className)) {
				arrReturnElements.push(oElement);
			}
		}
		return (arrReturnElements);
	};

	this.postToUrl = function(url, post_data, opt_redirect) {
		var form = document.createElement('form');
		var iframe_container = document.createElement('div');
		var id = 'dsq-temp-iframe-' + (new Date()).getTime();

		form.method = 'POST';
		form.action = url;
		if (!opt_redirect) {
			form.target = id;
		}
		iframe_container.innerHTML = '<iframe style="display:none" name="' + id + '" id="' + id + '"></iframe>';

		for(var key in post_data) {
			if(post_data.hasOwnProperty(key)) {
				var input = document.createElement('input');
				input.name = key;
				input.type = 'hidden';
				input.value = post_data[key];

				form.appendChild(input);
			}
		}

		Dsq.$b.appendChild(iframe_container);
		Dsq.$b.appendChild(form);
		form.submit();
	};

	// Strips integer id from id of element in the form ('some-id-###')
	this.extractId = function(e) {
		var chunks = e.id.split('-');
		if(chunks.length <= 1) {
			return 0;
		} else {
			var retval = parseInt(chunks[chunks.length-1]);
			return !isNaN(retval) ? retval : null;
		}
	};

	this.getStyle = function(el, styleProp) {
		if(el.currentStyle) {
			var y = el.currentStyle[styleProp];
		} else if(window.getComputedStyle) {
			var y = document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
		}

		if(y == 'transparent' || y == '') {
			this.getStyle(el.parentNode, styleProp);
		} else {
			return y;
		}
	};

	this.execScript = function(url, append_qs, container) {
		var script = document.createElement('script');
		append_qs = typeof append_qs == 'undefined' ? true : append_qs;
		container = container || Dsq.container;

		if(append_qs) {
			var j = (url.indexOf('?') >= 0) ? '&' : '?';
			url += j + (new Date()).getTime();
		}
		script.type = 'text/javascript';
		script.charset = 'UTF-8';
		script.src = url;
		container.appendChild(script);
		return script;
	};

	this.pluralize = function(num, singular, plural) {
		return (num != 1) ? plural || 's' : singular || '';
	};

	this.getRequestParams = function(queryString /* optional */) {
		var pairs, tuple;
		var params = {};

		queryString = queryString || window.location.search.substring(1);
		pairs = queryString.split('&');

		for (var i = 0, pair; pair = pairs[i]; i++) {
			tuple = pair.split('=');
			params[tuple[0]] = (tuple[1] || true);
		}

		return params;
	};

	this.addCssRule = function(selector, styleText, index) {
		var stylesheet;
		index = index || 0;

		if(!this._styleSheet) {
			var styleEl = document.createElement('style');
			document.getElementsByTagName('head')[0].appendChild(styleEl);
			this._styleSheet = styleEl.sheet;
			if(!this._styleSheet) {
				// IE does not like our newly created stylesheet.
				this._styleSheet = document.styleSheets[document.styleSheets.length-1];
			}
		}
		stylesheet = this._styleSheet;

		if(stylesheet.insertRule) {
			var ruleText = selector + ' { ' + styleText + ' }';
			if(index == -1) {
				index = stylesheet.cssRules.length;
			}
			stylesheet.insertRule(ruleText, index);
		} else if(stylesheet.addRule) {
			stylesheet.addRule(selector, styleText, index);
		}
	};

	this.forEachIn = function(obj, callback) {
		for(var key in obj) {
			if(obj.hasOwnProperty(key)) {
				callback(key, obj[key]);
			}
		}
	};

	this._interpolateGlobalContext = {
		// values that get used a lot and are global to the request
		'profile_url': Dsq.Urls.REQUEST_USER_PROFILE,

		'disqus_url': Dsq.jsonData.settings.disqus_url,
		'media_url': Dsq.jsonData.settings.media_url,
		'request_username': Dsq.jsonData.request.username,
		'request_display_username': Dsq.jsonData.request.display_username,
		'forum_name': Dsq.jsonData.forum.name
	};

	this.renderFromContextStack = function(key, contexts) {
		// Returns the first instance of `key` in the array of objects `contexts` or else ''
		for (var i=0; i<contexts.length; i++) {
			if (contexts[i][key] !== undefined) {
				return String(contexts[i][key]);
			}
		}
		throw new Error('key ' + key + ' not found in context');
	};

	var that = this;
	this.interpolate = function(fmt, opt_localContext) {
		// Interpolate `fmt` named-format string with an assumed global context.
		// Based on `interpolate` in django.views.i18n
		var contextStack = [opt_localContext || {}, that._interpolateGlobalContext];
		return fmt.replace(/%\(\w+\)s/g, function(match){
			return that.renderFromContextStack(match.slice(2,-2), contextStack);
		});
	};

	this.stripTags = function(s) {
		// Removes HTML tags from `s`
		return s.replace(/(<([^>]+)>)/g,"");

	};

	this.assert = function(b) {
		if (!b) {
			throw new Error('Assertion error.');
		}
	};

};
// Dsq.Utils

/**
 * Dsq.Popup: Popup helper functions.
 */
Dsq.Popup = new function() {
	this.timeHide = new Array();
	this.timeShow = new Array();
	this.activePopup = {};
	this.profileCache = {};
	this.statusCache = {};

	this.showTimer = function(post_id) {
		// clear the hide timer
		clearTimeout(this.timeHide[post_id]);

		// start the timer
		if(!Dsq.Popup.profileIsOn && !Dsq.Thread.adminIsOn) {
			this.timeShow[post_id] = setTimeout("Dsq.Popup.popProfile(\"" + post_id + "\")", 400);
		}
	};

	this.hideTimer = function(post_id) {
		// clear the show timer
		clearTimeout(this.timeShow[post_id]);
	};

	this.updateProfile = function(username) {
		// Callback from /embed/profile.js
		if (this.statusCache[username]) {
			var statusEl = Dsq.$('dsq-profile-status-' + username);
			statusEl.innerHTML = this.statusCache[username];
			statusEl.style.display = 'block';
		}

		if (this.profileCache[username]) {
			var _cache = this.profileCache[username];

			var _genhtml = function(text) { return '<span><big>' + text + '</big></span>'; };
			var _no_comments = _genhtml(Dsq.FmtStrings.NUMBER_OF_COMMENTS(_cache.comments_count));
			var _no_likes = _genhtml(Dsq.FmtStrings.NUMBER_OF_LIKES(_cache.likes_count));
			var _no_points = _genhtml(Dsq.FmtStrings.NUMBER_OF_POINTS(_cache.points));

			var statsEl = Dsq.$('dsq-popup-profile-user-stats-' + username);
			statsEl.innerHTML = '';

			if (Dsq.jsonData.users[username].registered) {
				statsEl.innerHTML = _no_comments + _no_likes;
			}
			statsEl.innerHTML += _no_points;

			var activeSites = '';
			for (var i = 0; i < _cache.active_sites.length; i++) {
				var site = _cache.active_sites[i];
				activeSites += '<li><a href="' + site.url + '"> \
					<img src="' + site.favicon + '"/ width="16" height="16"/></a>\
					<a href="' + site.url + '">' + site.name + '</a></li>';
			}
			if (activeSites !== '') {
				Dsq.$('dsq-popup-profile-active-sites-' + username).innerHTML = activeSites;
			} else {
				Dsq.$('dsq-popup-profile-active-sites-' + username).innerHTML = 'This site.';
			}

			var moderatedSites = '';
			for (var i = 0; i < _cache.moderated_sites.length; i++) {
				var site = _cache.moderated_sites[i];
				moderatedSites += '<li><a href="' + site.url + '"> \
					<img src="' + site.favicon + '"/ width="16" height="16"/></a>\
					<a href="' + site.url + '">' + site.name + '</a></li>';
			}
			if (moderatedSites !== '') {
				Dsq.$('dsq-popup-profile-moderated-' + username).innerHTML = moderatedSites;
			} else {
				Dsq.$('dsq-popup-profile-moderated-wrapper-' + username).innerHTML = '';
			}
		}

		// Reposition popup after full HTML is rendered
		if(Dsq.Popup.activePopup && Dsq.Popup.activePopup.el) {
			Dsq.Popup.initPopup(Dsq.Popup.activePopup.el, Dsq.Popup.activePopup.id, Dsq.Popup.activePopup.type);
		}

	};

	this.showCookieMsgs = function() {
		var title = '';
		var message = '';
		var numAlerts = 0;

		Dsq.Utils.forEachIn(Dsq.jsonData.cookie_messages, function(k, v) {
			if (!v) return;

			switch(k) {
				// Cookie: Twitter
				case 'post_twitter':
					if (v === 'error') {
						title = 'Twitter Error!';
						message += '<li id="dsq-msg-twitter-error">Oops, we couldn\'t tweet this comment. Please check your <a href="http://disqus.com/account/services">account settings</a>.</li>';
					} else {
						var _msg = v.split(':');
						title = 'Tweeted!';
						message += '<li id="dsq-msg-twitter-success">Your comment was successfully tweeted. <a href="http://twitter.com/' + _msg[0] + '/status/' + _msg[1] + '">Click here to view the tweet</a>.</li>';
					}
					break;
				// Cookie: Unapproved Post
				case 'post_not_approved':
					title = 'Comment awaiting approval by a moderator';
					message += '<li id="dsq-msg-post-not-approved">Your comment must be approved by a moderator before appearing here.</li>';
					break;
				// Cookie: Profile Found
				case 'post_has_profile':
					title = 'Use your existing commenter profile';
					message += '<li id="dsq-msg-post-has-profile">You have just posted your commment as a <span class="dsq-badge-guest">Guest</span>, but you may already have a <span class="logo-disqus">Disqus</span> Profile.<br /><br /><a href="http://disqus.com/claim">Log in and claim this comment!</a></li>';
					break;
				case 'user_created':
					var _data = v.split(':');
					title = 'Profile created!';
					message += '<li id="dsq-msg-user-created">You have just created a <span class="logo-disqus">Disqus</span> Profile, the best way to claim, manage, and track your comments all over the web. \
					<br /><br />A confirmation is being sent to <strong>' + _data[1] + '</strong>. Please check for this email in order to verify your profile. \
					<ul class="dsq-list-tick"> \
						<li>Your username is <strong>' + _data[0] +'</strong>. <a href="http://disqus.com/people/' + _data[0] + '/" target="_blank">Click here to view your public profile</a>.</li> \
						<li>Be sure to set your profile picture, as well as connect your <span class="dsq-badge-facebook">Facebook</span> and <span class="dsq-badge-twitter">Twitter</span> accounts. <a href="http://disqus.com/account/" target="_blank">Click here for account settings</a>.</li> \
					</ul> \
					</li>'
					break;
				default:
					break;
			}
			numAlerts++;
		});

		if(numAlerts > 1) {
			message = '<ul class="dsq-list-bluebullet">' + message;
			message += '</ul>';
			title = 'Thanks for posting!';
		}
		if(numAlerts > 0) {
			if(typeof(disqus_cookie_msgs) == 'function') {
				disqus_cookie_msgs(message, title);
			} else {
				Dsq.Popup.popModal(message, title);
			}
		}
	};

	this.helpBadges = function(post_id) {
		var html = ' \
			<ul class="dsq-popup-help"> \
				<li><span class="dsq-badge dsq-badge-verified">Verified</span> has a <span class="logo-disqus">Disqus</span> Profile with a confirmed email address.</li> \
				<li><span class="dsq-badge dsq-badge-registered">Registered</span> has a <span class="logo-disqus">Disqus</span> Profile, but has not yet confirmed his or her email address.</li> \
				<li><span class="dsq-badge dsq-badge-guest">Guest</span> is not logged in with any account and has not claimed his or her comments.</li> \
				<li class="dsq-help-otheraccts">Other accounts</li> \
				<li><span class="dsq-badge dsq-badge-facebook">Facebook</span> is using his or her Facebook profile via Facebook Connect.</li> \
				<li><span class="dsq-badge dsq-badge-twitter">Twitter</span> is using his or her Twitter profile via Twitter Sign-in.</li> \
				<li><span class="dsq-badge dsq-badge-openid">OpenID</span> is using his or her OpenID.</li> \
			</ul> \
		';

		this.popModal(html, 'Help: Types of Commenters', post_id);
		return;
	};

	this.permalink = function(post_id) {
		var header = 'Link to this comment';
		var body = '<strong>You are anchored to</strong>:<br />' + document.location.protocol + '//' + document.location.host + document.location.pathname + document.location.search + '#comment-' + post_id;

		this.popModal(body, header, post_id);
	};

	this.login = function(header, body) {
		var h = header || 'Login or Register';
		var b = body || '';
		b += Dsq.Templates.frameLogin({id: 'dsq-popup-login'});
		b += '</iframe>'; // HACK: Sometimes there is something funky with the IFRAME SRC that causes no end tag
		this.popModal(b, h, null, true, 'dsq-popup-login');
	};

	this.blacklist = function(id) {
		var _meta = Dsq.jsonData.posts[id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		var title = 'Add to Blacklist';
		var message = ' \
		Adding this person to the blacklist will block him or her from commenting on this site. Check the following types that you would like to add to the blacklist:'
		+ (userData['registered'] ?
			'<div class="dsq-blacklist-option"> \
				<input id="dsq-blacklist-username" type="checkbox" checked> \
				<label for="dsq-blacklist-username"><strong>Username</strong>: ' + userData['username'] + '</label> \
			</div>'
			: '')
		+ (_meta.email ?
			'<div class="dsq-blacklist-option"> \
				<input id="dsq-blacklist-email" type="checkbox" checked> \
				<label for="dsq-blacklist-email"><strong>Email address</strong>: ' + _meta.email + '</label> \
			</div>'
			: '')
		+ '<div class="dsq-blacklist-option"> \
			<input id="dsq-blacklist-ip" type="checkbox" onclick="Dsq.$(\'dsq-blacklist-ip-warning\').style.display=\'block\'"> \
			<label for="dsq-blacklist-ip"><strong>IP address</strong>: ' + _meta.ip + '</label> \
		</div> \
		';

		message += ' \
			<p id="dsq-blacklist-ip-warning" style="display:none">	\
				Note: Blocking this person\'s IP address may also unintentionally prevent others, who share his/her IP address, from commenting on this site. \
				This may include people who are sharing the same computer, living in the same house, or using the same Internet provider. Only block an IP address as a last resort. \
			</p> \
		';

		message += ' \
			<p style="text-align:center"><button type="button" onclick="Dsq.Post.blockUser(' + id + '); this.disabled=true; this.innerHTML=\'Just one moment...\'">Add to Blacklist</button></p> \
		';

		Dsq.Popup.popModal(message, title);
	};

	this.remoteAccountSettings = function() {
		var body = '';
		// Set up IFrame.
		var params = {};
		var base_url = 'http://disqus.com/forums/scobleizer/_auth/embed/remote_settings/';
		var attributes = {id: 'dsq-popup-account-settings'};
		if (typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}

		body = Dsq.Templates._frameGeneric(base_url, params, attributes);
		this.popModal(body, 'Account Settings', null, true, 'dsq-popup-account-settings');
	};

	this.popModal = function(message, title, post_id, use_listener, extra_classes) {
		var container = document.createElement('div');
		var header, body;

		Dsq.Popup._closePopup(null, true);

		if(typeof(title) == 'undefined') { title = ''; }
		if(typeof(use_listener) == 'undefined') { use_listener = true; }

		if(post_id) {
			container.id = 'dsq-popup-message-' + post_id;
		} else {
			container.id = 'dsq-popup-message';
		}

		header = title;
		body = message;

		container.innerHTML = Dsq.Templates.popupModal(header, body);
		Dsq.Popup.initPopup(container, post_id, 'message', extra_classes);
		if(use_listener) {
			Dsq.Popup.popupListener = Dsq.Utils.addEventListener(document, 'mouseup', Dsq.Popup._closePopup);
		}
	};

	this.popAlert = this.popModal;

	this.loading = function(post_id) {
		var title = Dsq.Strings.JUST_A_MOMENT;
		var body = '<div style="text-align:center; padding: 5px 0 10px 0"><img src="http://media.disqus.com/images/loading.gif" alt="" /></div>'
		Dsq.Popup.lightbox(body, title, post_id);
	};

	this.lightbox = function(message, title, post_id) {
		// Wraps Dsq.Popup.popModal

		var overlay = document.createElement('div');
		overlay.id = 'dsq-overlay';
		overlay.className = 'dsq-overlay';
		Dsq.$b.appendChild(overlay);
		
		Dsq.Popup.popModal(message, title, post_id, false, 'dsq-lightbox');
	};

	this.popProfile = function(post_id, userKey) {
		var post = Dsq.jsonData['posts'][post_id];
		if (post && post.has_been_anonymized) {
			Dsq.Popup.popModal('This message was anonymized by its previous owner.', 'Anonymized', post_id);
			return;
		}

		if(post_id) {
			userKey = Dsq.jsonData['posts'][post_id].user_key;	
		}
		var userData = Dsq.jsonData['users'][userKey];
		var elId = 'dsq-popup-profile-' + userKey;
		var container = document.createElement('div');

		if(this.activePopup.el) {
			this._closePopup(null, true);
			if(this.activePopup.linkClicked) {
				this.activePopup.linkClicked = false;
				return;
			}
		}

		container.id = elId;
		container.innerHTML = Dsq.Templates.popupProfile(userKey);

		this.initPopup(container, post_id, 'profile');
		this.popupListener = Dsq.Utils.addEventListener(document, 'mouseup', this._closePopup);

		if(!this.profileCache[userKey]) {
			Dsq.Utils.execScript('http://disqus.com/embed/profile.js'
				+ '?username=' + userKey
				+ '&anon=' + (userData['registered'] ? 0 : 1)
				+ '&f=' + Dsq.jsonData['request'].forum);
		} else {
			this.updateProfile(userKey);
		}
	};

	this._closePopup = function(e, force) {
		var activePopup = Dsq.Popup.activePopup.el;
		var id = Dsq.Popup.activePopup.id;
		var link = 'dsq-avatar-' + id; // HACK: Specific to profile toggle target

		// HACK: This event should be gone if there is no active popup.
		if(!activePopup) {
			return;
		}
		if(force || !Dsq.Popup.isClicked(e, activePopup.id)) {
			// TODO: This is breaking iE?
			if(Dsq.Popup.popupListener) {
				Dsq.Utils.removeEventListener(Dsq.Popup.popupListener);
			}
			
			// Kill overlay
			var overlay = Dsq.$('dsq-overlay');
			if(overlay) { Dsq.Utils.deleteNode(overlay); }
			
			try {
				Dsq.Utils.deleteNode(activePopup);
			} catch(e) {
				// HACK: IE6 throws an error when using deleteNode() with a node containing a <table> in the html.
				activePopup.parentNode.removeChild(activePopup);
			}
			Dsq.Popup.activePopup = {};
		}

		if(!force && Dsq.Popup.isClicked(e, link)) {
 			Dsq.Popup.activePopup.linkClicked = true;
		}

	};

	this.initPopup = function(popup, post_id, type, extra_classes) {
		popup.className = 'dsq-popup dsq-popup-' + type + ' ' + (extra_classes ? extra_classes : '');
		if(Dsq.Utils.ie6 || Dsq.Utils.ie7) {
			// HACK: We can't modify the body before it's ready, so we need
			//       to use an IE-safe "DOMReady" workaround before loading
			//       our popup.
			Dsq.Utils.execOnReady(function() {Dsq.$b.appendChild(popup); });
		} else {
			Dsq.$b.appendChild(popup);
		}

		popup.style.display = 'block';

		var xPos = (Dsq.Utils.getWindowSize()[0] - popup.offsetWidth) / 2;
		var yPos = (Dsq.Utils.getWindowSize()[1] - popup.offsetHeight) / 2;

		if(Dsq.Utils.ie6) {
			yPos += Dsq.Utils.getScrollPos()[1];
		}

		popup.style.left = xPos + 'px';
		popup.style.top = yPos + 'px';

		Dsq.Popup.activePopup = {
			'el' : popup,
			'id' : post_id,
			'type': type,
			'linkClicked' : false
		};
	};

	this.isClicked = function(e, id) {
		var t = e.target || e.srcElement;
		while(t && t.parentNode) {
			if(t.id == id) {
				return true;
			}

			t = t.parentNode;
		}
		return false;
	};
};
// Dsq.Popup

/**
 * Dsq.Templates
 */
Dsq.Templates = new function() {
	/*
	 * Counter keeping track of the number of posts iterated over.
	 */
	this.postLoopCounter = 0;
	this.filters = {};
	this.addPostContainer = 'dsq-post-add';
	this.textareaContainer = 'dsq-post-add';

	this.registerTemplate = function(name, func) {
		this['$$_' + name] = func;

		if(typeof DsqLocal.Filters != 'undefined'
		&& typeof DsqLocal.Filters[name] == 'function') {
			// Push filters to this.filters to unify code.
			this.filters[name] = this.filters[name] || [];
			this.filters[name].push(DsqLocal.Filters[name]);
		}

		this[name] = function() {
			var ret;

			if(typeof DsqLocal.Templates != 'undefined'
			&& typeof DsqLocal.Templates[name] == 'function') {
				ret = DsqLocal.Templates[name].apply(this, arguments);
			}

			if(ret === undefined) {
				ret = this['$$_' + name].apply(this, arguments);
			}

			if(this.filters[name]) {
				var args = [ret];

				args.push.apply(args, arguments);
				for(var i = 0; i < this.filters[name].length; i++) {
					ret = this.filters[name][i].apply(this, args);
				}
			}

			return ret;
		};
	};

	this.registerFilter = function(name, func) {
		this.filters[name] = this.filters[name] || [];
		this.filters[name].push(func);
	};

	/**
	 * Dsq.Templates.Filters
	 */
	this.Filters = new function() {
		this.commentContainer = function(post_id, s) {
			var _meta = Dsq.jsonData.posts[post_id];
			var classes = [];
			if(Dsq.jsonData.request.page > 1) {
				classes.push('dsq-append');
			}

			//
			// Extra classes used for custom themes
			//

			if(_meta.depth) {
				classes.push('dsq-comment-child', 'dsq-depth-' + _meta.depth, 'dsq-parent-is-' + _meta.parent_post_id);
			}


			//

			if(_meta.author_is_creator) {
				// TODO: We need to deprecate the "special" class since it is not properly prefixed.
				classes.push('special', 'dsq-special');
			}
			if(_meta.author_is_moderator) {
				classes.push('dsq-moderator');
			}
			classes.push(['dsq-odd', 'dsq-even'][Dsq.Templates.postLoopCounter % 2]);

			s = s.substring(0, s.lastIndexOf('>'));
			return s + ' class="dsq-comment ' + classes.join(' ') + '" style="margin-left:' + _meta.depth*30 + 'px">';
		};

		this.commentContent = function(post_id, s) {
			var _meta = Dsq.jsonData.posts[post_id];
			if (_meta.killed) {
				return '<em>Comment removed.</em>';
			} else if (!_meta.approved) {
				return '<em>This comment was flagged for review.</em>';
			}

			s = s.replace(Dsq.MEDIA_POST_RE, Dsq.MediaPostHandler);
			return s;
		};
	};

	//
	// Thread
	//
	// TODO: These need to be stripped of all Django template tags.

	this.authPost = function() {
		if (!Dsq.jsonData.context.show_reply) {
			return '';
		}
		var result = [];
		result = result.concat([
				'<div id="dsq-auth"',
						Dsq.jsonData.integration.reply_position ? 'class="dsq-auth-bottom"' : '',
						'>',
					'<div class="dsq-by">',
						'<a href="http://disqus.com" target="_blank">',
							(Dsq.jsonData.integration.disqus_logo ?
								Dsq.Utils.interpolate('<img src="%(media_url)s/images/embed/by-disqus.png" alt="discussion by DISQUS">') :
								Dsq.Utils.interpolate('<img src="%(media_url)s/images/embed/dsq-button-120x19.png" alt="discussion by DISQUS">')
							),
						'</a>',
					'</div>',
					'<div class="dsq-auth-header">',
						'<h3 id="dsq-add-new-comment" class="dsq-h3-addcomment">',
								Dsq.Strings.ADD_NEW_COMMENT,
						'</h3>',
						'<div id="dsq-login">',
						(!Dsq.jsonData.request.is_authenticated && Dsq.jsonData.forum.allow_anon_post
								? '<p class="dsq-login-message" id="dsq-login-message">You are commenting as a <a class="dsq-help" title="Click for more information" href="#" onclick="Dsq.Popup.helpBadges(); return false">Guest</a>. You may select one to log into:</p>'
								: '')
		]);
		if (!Dsq.jsonData.request.is_authenticated) {
			result = result.concat([
							Dsq.Utils.interpolate(
								'<a id="dsq-login-toggle" href="%(disqus_url)s%(login_url)s?next=article:%(thread_id)s" onclick="Dsq.Popup.login(); return false"><img class="dsq-login-icon" src="%(media_url)s/images/dsq-profile-btn.png" title="%(log_into)s" alt="%(log_into)s"/></a>',
								{login_url: Dsq.Urls.LOGIN, thread_id: Dsq.jsonData.thread.id, log_into: Dsq.Strings.LOG_INTO_DISQUS}
								),
							'&nbsp; ',
							(Dsq.jsonData.context.use_fb_connect ?
								'<div id="dsq-fbc-login" onlogin="DisqusFbcParentController.onLogin()" size="medium" background="light" length="short" style="display:inline; margin-right:7px"></div>' :
								''
							),
							(Dsq.jsonData.context.use_twitter_signin ?
								Dsq.Utils.interpolate(
									'<div id="dsq-twitter-login" class="dsq-twitter-login" onclick="Dsq.Twitter.startTwitterConnect();" style="display:inline; cursor: pointer"><img src="%(media_url)s/images/twitter-signin-short.png" style="margin-right:7px" /></div>', {}) : ''),
							(Dsq.jsonData.context.use_openid ?
								Dsq.Utils.interpolate(
									'<div id="dsq-openid-login" class="dsq-openid-login" onclick="Dsq.OpenID.requestURL();" style="display:inline; cursor:pointer;"><img src="%(media_url)s/images/openid-login-button.png"/></div>', {}
								) : '')
			]);
		}
		result = result.concat([
						'</div>', // dsq-login
					'</div>', // dsq-auth-header
					'<div id="dsq-authenticated" class="dsq-authenticated" ',
						Dsq.jsonData.request.is_authenticated ? 'style="display:block"' : '',
						'>',
						'<div class="dsq-authenticated-pic">',
								Dsq.Utils.interpolate('<a href="%(url)s" title="%(request_display_username)s">' +
																			'<img class="dsq-post-avatar" src="%(avatar_url)s" alt="" /></a>',
																			{avatar_url: Dsq.Urls.REQUEST_USER_AVATAR,
																			url: (Dsq.jsonData.request.is_remote
																					 ? Dsq.jsonData.request.url
																					 : Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE) }),
						'</div>',
						'<div class="dsq-authenticated-info">',
							'<ul>',
								'<li>',
									(Dsq.jsonData.request.is_remote
										? Dsq.FmtStrings.LOGGED_IN_AS(
												Dsq.Utils.interpolate('<a href="%(url)s" title="%(request_display_username)s">%(request_display_username)s</a>', {url:Dsq.jsonData.request.url})
										  )
										: Dsq.FmtStrings.LOGGED_IN_AS(
												Dsq.Utils.interpolate('<a href="%(disqus_url)s%(profile_url)s" title="%(request_display_username)s">%(request_display_username)s</a>')
											)
									),
								'</li>',
								'<li class="logout">',
									(!Dsq.jsonData.request.is_remote
										? Dsq.Utils.interpolate('<img class="dsq-login-icon" src="%(media_url)s/images/dsqicon12.png" alt="%(logged_in_as)s"/>&nbsp',
											{logged_in_as: Dsq.FmtStrings.LOGGED_IN_AS(Dsq.jsonData.request.display_username)})
										: ''),

									(!Dsq.jsonData.request.is_remote
										? Dsq.Utils.interpolate('<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="%(logout_from_disqus)s">',
											{logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN, logout_from_disqus: Dsq.FmtStrings.LOGOUT_FROM('DISQUS')})
										: ((Dsq.jsonData.request.remote_domain == 'twitter')
												? Dsq.Utils.interpolate('using Twitter (<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="Logout">Logout</a>)',
												 {logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN})
												: ((Dsq.jsonData.request.remote_domain == 'openid')
													 ? Dsq.Utils.interpolate('using OpenID (<a href="%(disqus_url)s%(logout_url)s?ctkn=%(csrf_token)s" title="Logout">Logout</a>)',
													 {logout_url: Dsq.Urls.LOGOUT, csrf_token: Dsq.CSRF_TOKEN})
													 : ''
													)
											)
									),

									(!Dsq.jsonData.request.is_remote ? Dsq.FmtStrings.LOGOUT_FROM('<span class="logo-disqus">DISQUS</span>') : ''),
									'</a>',
								'</li>',
							'</ul>',
						'</div>',
					'</div>'
		]);
		if (Dsq.jsonData.context.use_fb_connect) {
			result = result.concat([
					'<div id="dsq-fbc-authenticated" class="dsq-authenticated">',
						'<div id="dsq-fbc-profilepic" class="dsq-authenticated-pic" uid="loggedinuser" type="FB.XFBML.ProfilePic" size="square" facebook-logo="true"></div>',
						'<div class="dsq-authenticated-info">',
							'<ul>',
								'<li>',
									'Logged in as <span id="dsq-fbc-name" uid="loggedinuser" type="FB.XFBML.Name" linked="true" useyou="false"></span>',
								'</li>',
								'<li class="logout">using Facebook Connect <a href="#" onclick="javascript:DisqusFbcParentController.logout();return false;">(Logout)</a></li>',
							'</ul>',
						'</div>',
					'</div>'
			]);
		}
		result = result.concat([
				'</div>', // dsq-auth
				'<div id="dsq-toolbar-items">',
				'</div>'
		]);
		result = result.concat([
					//
					//
					//
				((!Dsq.jsonData.forum.allow_anon_post && !Dsq.jsonData.request.is_authenticated) ?
					// Needs to be translated:
					('<p id="dsq-no-anon-msg">Required: Please log into <span class="logo-disqus">Disqus</span> ' +
					(Dsq.jsonData.context.use_fb_connect ? 'or connect with Facebook ' : '') +
					(Dsq.jsonData.context.use_twitter_signin ? 'or sign in with Twitter ' : '') +
					(Dsq.jsonData.context.use_openid ? 'or sign in using OpenID ' : '') +
					Dsq.Utils.interpolate('to comment on <strong>%(forum_name)s</strong>.</p>')) :
					''
				),
				'<div id="dsq-post-add"></div>',
				'<div style="margin:10px 0">',
				((Dsq.jsonData.forum.use_media) ?
						'<a href="#" id="dsq-media-link" onclick="Dsq.Post.showMenu(this, false, \'media\'); return false">' + Dsq.Strings.USE_MEDIA + ' <small>&#9660;</small></a>' :
						''),
				'</div>'
		]);
		return result.join('');
	};


	this.header = function() {

		var html = '\<h3 id="dsq-comments-count" class="dsq-h3-commentcount">\
	 <span id="dsq-num-posts">78</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://scobleizer.disqus.com/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/latest.rss"><img src="http://media.disqus.com/images/embed/bullet-feed.png"></a>\
	 </span>\
	 </h3>\
	 <div id="dsq-options" style="margin:15px 0">\
	 <span class="dsq-item-sort">\
	 Sort by\
	 <select id="dsq-sort-select" onchange="Dsq.Thread.sortBy(this.value);">\
	 <option value="hot" selected="selected">Popular now</option>\
	 <option value="best" >Best Rating</option>\
	 <option value="newest" >Newest first</option>\
	 <option value="oldest" >Oldest first</option>\
	 </select>\
	 &nbsp;\
	 </span>\
	 <span class="dsq-item-cp"><a href="http://scobleizer.disqus.com/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/">Community Page</a>&nbsp;&nbsp;&nbsp;</span>\
	 <span class="dsq-item-subscribe">\
	 <img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle">\
	 <span id="dsq-subscribe">\
	 <a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a>\
	 </span>\
	 </span>\
	 </div>\
	 <div id="dsq-alerts">\
	 <p>Comments for this page are closed.</p>\
	 </div>\
		';

		

		
		if (Dsq.jsonData.request.is_moderator) { 
			html = ' \
			<div class="dsq-alert-message dsq-upgrade-message"> \
				<strong>Disqus upgrade available.</strong> Hi ' + Dsq.jsonData.request.display_username + ', this message is being displayed to you because you are a moderator of this site. <a href="#" onclick="Dsq.$(\'dsq-upgrade-message\').style.display=\'block\';this.style.display=\'none\';return false">Click here for details.</a> \
				<div style="display:none; margin-top:10px;" id="dsq-upgrade-message"> \
					A new theme is available with added features. <a href="http://disqus.com/comments/settings/' + Dsq.jsonData.forum.url + '/?p=customize">To change your theme, click here</a> and choose the theme Narcissus. \
					If you do not upgrade, you are missing out on features such as: real-time commenting, new sign-in integrations, and an upgrade interface. \
					<strong>This message will automatically go away in one week.</strong> \
				</div> \
			</div> \
			' + html; 
		}
		return html;
	};

	this.footer = function() {
		var html = Dsq.Templates.pagination();

		
			html += Dsq.Templates.authPost();
		

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		

		return html;
	};

	this.pagination = function() {
		var html = '';
		
		if (Dsq.$('dsq-pagination')) { Dsq.$('dsq-pagination').innerHTML = ''; }
		if (!Dsq.jsonData.thread.paginate) { return ''; }

		//
		// TODO: num_paginator still uses the template tag for pagination, 
		// 		while append_paginator does it all in JavaScript.
		//		This should all be in JavaScript.
		//

		if (Dsq.jsonData.thread.num_pages > 1 && Dsq.jsonData.request.page < Dsq.jsonData.thread.num_pages) {
			html = ' \<a class="dsq-paginate-append-text" href="#" onclick="Dsq.Thread.paginate(Dsq.jsonData.request.page + 1, this); return false">Show more comments...</a>\
	 <button type="button" class="dsq-button-small dsq-paginate-append-button" onclick="Dsq.Thread.paginate(Dsq.jsonData.request.page + 1, this);">Load more comments</button>\
			';
		}
		
		if (Dsq.$('dsq-pagination')) {
			Dsq.$('dsq-pagination').innerHTML = html;
			return '';
		} else {
			return '<div id="dsq-pagination" class="dsq-pagination">' + html + '</div>';
		}
	};

	this.trackbacks = function() {
		var html = '';

		if(typeof DsqLocal != 'undefined' && DsqLocal.trackback_url && DsqLocal.trackbacks) {
			var trackbacks = DsqLocal.trackbacks;
			var trackback_url = DsqLocal.trackback_url;
		} else {
			var trackbacks = [
			
			
			];
			var trackback_url = 'http://scobleizer.disqus.com/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/trackback/';
		}

		html += '<div class="dsq-item-trackback">Trackback URL&nbsp;&nbsp;<input class="dsq-trackback-url" onclick="this.select()" readonly="true" value="' + trackback_url + '"></div>';

		if(trackbacks.length) {
			html += '<ul id="dsq-references">'
			for(var i = 0; i < trackbacks.length; i++) {
				var trackback = trackbacks[i];
				html += '<li><cite><a href="' + trackback.author_url + '" rel="nofollow">' + trackback.author_name + '</a></cite> \
						<p class="dsq-meta">' + trackback.date + '</p> \
						<p class="dsq-content">' + trackback.excerpt + '</p></li>';
			}
			html += '</ul>';
			html = '<h3 class="dsq-h3-trackbacks">Trackbacks</h3>' + html;
		}

		return html;
	}

	this.showRetweets = function(id, limit, element_id /* Optional */) {
		var source, html = '';

		for (var i = 0, reaction; reaction = Dsq.jsonData.reactions[i]; i++) {
			if (reaction.id === id) {
				source = reaction.retweets;
			}
		}

		if (source) {
			if (limit === 0) {
				limit = source.length;
			}

			for (var j = 0; j < limit; j++) {
				var rt = source[j];
				html += '<a href="' + rt.url + '">' + rt.author_name + '</a>'	+ ((j === (limit - 1)) ? '.' : ', ');
			}
		}

		if (element_id === undefined) {
			return html;
		}

		var element = document.getElementById(element_id);
		element.innerHTML = html;
		return element;
	};

	this.showMoreReactions = function(reactions, has_more, start, limit) {
		var link = document.getElementById('dsq-show-more-reactions');
		var container = link.parentNode;
		container.removeChild(link);

		for (var i = 0, reaction; reaction = reactions[i]; i++) {
			var el = Dsq.Templates.generateReactionHTML(reaction);
			if (el) {
				container.innerHTML += el;
			}
		}

		if (has_more) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = start;
			var l = limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			container.innerHTML += '<li id="dsq-show-more-reactions"><a href="#" onclick="' + handler + '">Show more reactions</a></li>';
		}
	};

	this.generateReactionHTML = function(reaction) {
		if (reaction.body === null || reaction.body == '') {
			return;
		}

		if (reaction.author_name === '') {
			reaction.author_name = '&nbsp;';
		}

		if (reaction.url === '') {
			reaction.url = reaction.get_service_url;
		}

		/* Reaction HTML begins */
		var item = '<li class="dsq-reaction" id="dsq-reaction-' + reaction.id + '">'
			+ '<div class="dsq-reaction-header">'
			+ '<div class="dsq-header-avatar">';

		if (reaction.author_url && reaction.author_url !== '') {
			item += '<a target="_blank" href="' + reaction.author_url +'">';
		} else {
			item += '<a target="_blank" href="#" onclick="return false;">';
		}

		if (reaction.avatar_url && reaction.avatar_url !== '') {
			item += '<img src="' + reaction.avatar_url + '"/>';
		} else {
			item += '<img src="' + Dsq.jsonData.media_url + '/images/noavatar32.png"/>';
		}

		var service_icon = (reaction.get_service_name == 'trackback' || reaction.get_service_name == 'pingback' ? 'rss' : reaction.get_service_name.replace(' ', ''));
		item += '<img class="dsq-service-icon" src="' + Dsq.jsonData.media_url + '/images/reactions/services/' + service_icon + '.png"/>'
			+ '</a></div>'
			+ '<cite><span>' + reaction.author_name + '</span></cite>'
			+ '<span class="dsq-header-meta"><a class="dsq-header-time">' + reaction.date_created + '</a></span>'
			+ '</div><div class="dsq-reaction-body">'
			+ '<div class="dsq-reaction-message">' + reaction.body + '</div>'
			+ '<div class="dsq-reaction-footer">From <a class="dsq-service-name" target="_blank" href="' + reaction.url + '">' + reaction.get_service_name + '</a> '
			+ 'via <a href="' + reaction.source_url + '">' + (reaction.source == 'backtype' ? 'BackType' : 'UberVU') + '</a>'
			+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator ? '&nbsp;&bull;&nbsp;<a class="dsq-hide-reaction" href="#" onclick="Dsq.Reaction.hide(' + reaction.id + '); return false;">Hide</a>' : '') + '</div></div>';

		if(reaction.retweets) {
			var num_retweets = reaction.retweets.length;
			if (num_retweets > 0) {
				item += '<div class="dsq-reaction-retweets">';
				if (num_retweets == 1) {
					item += 'One more retweet from <a href="' + reaction.retweets[0].url + '">'  + reaction.retweets[0].author_name + '</a>';
				} else {
					item += (num_retweets + ' more retweets from ');

					item += '<span id="dsq-reaction-retweets-' + reaction.id + '">';
					var n_tweets = (num_retweets > 15) ? 15 : num_retweets;
					item += Dsq.Templates.showRetweets(reaction.id, n_tweets);

					if (n_tweets != num_retweets) {
						item += '</span> <a onclick="Dsq.Templates.showRetweets(' + reaction.id + ', 0, \'dsq-reaction-retweets-' + reaction.id + '\');'
							+ 'this.parentNode.removeChild(this); return false;" href="#">Show all</a>';
					}
				}
				item += '</div>';
			}
		}

		item += '</li>'; /* Reaction HTML ends */
		return item;
	};

	this.reactions = function() {
		var html, reaction;

		if (Dsq.jsonData.reactions === undefined || Dsq.jsonData.reactions.length === 0) {
			return '';
		}

		html = '';
		for (var i = 0; reaction = Dsq.jsonData.reactions[i]; i++) {
			var item = Dsq.Templates.generateReactionHTML(reaction);
			if (item) {
				html += item;
			}
		}

		if (Dsq.jsonData.has_more_reactions) {
			var d = Dsq.jsonData.settings.disqus_url;
			var f = Dsq.jsonData.forum.url;
			var t = Dsq.jsonData.thread.id;
			var s = Dsq.jsonData.reactions_start;
			var l = Dsq.jsonData.reactions_limit;

			var handler = 'Dsq.Utils.execScript(\'' + d + '/forums/' + f + '/more_reactions.js?t=' + t + '&s=' + s + '&l=' + l + '\', true); return false;';
			html += '<li id="dsq-show-more-reactions"><a href="#" onclick="' + handler + '">Show more reactions</a></li>';
		}

		return '<h3 class="dsq-h3-reactions">Reactions</h3><ul id="dsq-reactions" class="dsq-reactions">' + html + '</ul>';
	};
	
	this.missingPermissions = function() {
		return '	<p>Comments for this page are closed.</p>\n';
	};

	//
	// Post
	//

	this.prependPost = function(post_id) {
		var html = '<div id="comment-' + post_id + '"></div>';
		return html;
	};

	this.appendPost = function(post_id) {
		var html = '<div id="dsq-comment-reply-' + post_id + '"></div>';
		return html;
	};

	this.postPrependHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];

		var _includeServices = function() {
			var userServices = Dsq.Post.getUserServices(null, post_id);
			var html = '';
			var hiddenThreshold = 3; // Define # of services to show before stuffing them in hidden div

			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == hiddenThreshold
					? '<li id="dsq-drop-hidden-' + post_id +'" class="dsq-drop-hidden"><ul>'
					: '')
				+ '<li class="dsq-drop-services"> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank"> \
						<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '">'
					+ userServices[i].name
					+ '</a> \
				</li>';
			}

			if(i >= hiddenThreshold) {
				html += '</ul></li> \
				<li id="dsq-drop-more-' + post_id + '" class="dsq-drop-more"><a href="#" onclick="Dsq.Post.dropProfileMore(this, '+ post_id + '); return false"><small>&#9660;</small></a></li> \
				';
			}
			return html;
		};

		return ' \
			<div class="dsq-header-avatar" id="dsq-header-avatar-' + post_id + '" onmouseover="Dsq.Post.dropProfile(' + post_id + ')"> \
				<a id="dsq-avatar-' + post_id + '" class="dsq-avatar" href="' + userData.url + '" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">'
			+ (Dsq.jsonData.forum.show_avatar
				? '<img src="' + Dsq.jsonData.users[_meta.user_key].avatar + '" alt="" />'
				: '')
			+ '</a>'
			+ '</div> \
		';
	};

	this.postAppendHeader = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];

		return ''
			+ (_meta.author_is_moderator
				? '<img class="dsq-mod-star" src="http://media.disqus.com/images/bullet-star.png" title="Moderator" alt="" />'
				: '')
			+ '<span class="dsq-header-meta"> \
				<a id="dsq-time-' + post_id + '" class="dsq-header-time" href="#comment-' + post_id + '" title="Permalink">' + _meta.date + '</a> \
			</span>';
	};

	this.preBody = function(post_id) {
		return '';
	}

	this.postBody = function(post_id) {
		// TODO: Deprecate flagging conditional
		var _meta = Dsq.jsonData.posts[post_id];
		return ''
			+ (_meta.edited
				? '<p class="dsq-editedtxt">(Edited by a moderator)</p>'
				: '')
			;
	};

	this.postFooter = function(post_id) {
		// TODO: Use media should be conditional
		var _meta = Dsq.jsonData.posts[post_id];
		if(_meta.killed) { return ''; }

		return ' \
			<div class="dsq-comment-footer" id="dsq-comment-footer-' + post_id + '"> \
				<div id="dsq-points-' + post_id + '" class="dsq-likedtxt">'
				+ (_meta.points
					? _meta.points + Dsq.Utils.pluralize(_meta.points, ' person', ' people') + ' liked this comment.'
					: '')
				+ '</div>'
				+ '<ul class="dsq-comment-options dsq-list-style">'
				+ (_meta.votable
					? '<li class="dsq-list-first dsq-rate" id="dsq-rate-cont-' + post_id + '">'
					+ (!_meta.up_voted
						? '<a href="#" onclick="Dsq.Post.rate(this, ' + post_id + ', 1); return false;">Like</a>'
						: 'You liked this.') + '</li>'
					: '')
				+ '<li class="dsq-report' + (!_meta.votable ? ' dsq-list-first' : '') + '" id="dsq-post-report-' + post_id + '"><a href="#" class="dsq-post-report" onclick="Dsq.Post.report(' + post_id + ', false); return false;">Report</a></li> \
				</ul> \
				<ul class="dsq-list-style">'
				+ (_meta.can_reply
					? '<li class="dsq-list-first"><a href="#" id="dsq-reply-link-' + post_id +'" onclick="Dsq.Post.toggleReply(this, ' + post_id +'); return false;">Reply</a></li>'
					: '')
				+ (_meta.can_reply && !_meta.has_replies && _meta.from_request_user
					? '<li id="dsq-edit-el-' + post_id + '"><a id="dsq-edit-link-' + post_id + '" href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); return false;">Edit</a></li>'
					: '')
				+ '<li class="' + (!_meta.can_reply ? 'dsq-list-first' : '') + '" id="dsq-more-el-' + post_id + '"><a id="dsq-more-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'more\'); return false">More <small>&#9660;</small></a></li>'
				+ (Dsq.jsonData.forum.use_media
					? '<li id="dsq-media-el-' + post_id +'" style="display:none"><a id="dsq-media-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'media\'); return false">Use Media <small>&#9660;</small></a></li>'
					: '')
				+ '</ul>'
				+ '<div id="dsq-reply-bar-' + post_id + '" class="dsq-reply-bar" style="display:none"> \
						<div id="dsq-reply-bar-items-' + post_id + '" class="dsq-reply-bar-items"> \
						</div> \
						<div id="dsq-reply-bar-auth-' + post_id + '" class="dsq-reply-bar-auth"> \
							 \
								 \
								 	<a href="#" class="dsq-help dsq-reply-req-opt" title="You are commenting as a Guest. You may choose to log into an existing DISQUS Profile, your Facebook, Twitter or OpenID account to comment on Scobleizer" onclick="Dsq.Popup.helpBadges(); return false">Optional:</a> \
								 \
								<img class="dsq-login-icon" src="http://media.disqus.com/images/dsq-favicon-16x16.png" alt="" /> \
								<a id="dsq-reply-login-' + post_id + '" href="http://disqus.com/profile/login/?next=article:18349600" onclick="Dsq.Popup.login(); return false">Login</a> \
								 \
									&nbsp;or&nbsp; \
									<img class="fb_login_image" src="http://static.ak.fbcdn.net/images/fbconnect/login-buttons/connect_light_small_short.gif" alt="Facebook Connect"/> \
									<a href="#" onclick="FB.Connect.requireSession(DisqusFbcParentController.onLogin); return false;">Connect</a> \
								 \
								&nbsp;or&nbsp; \
									<img src="http://media.disqus.com/images/twitter-signin-icon.png" alt="" /> \
									<a href="#" onclick="Dsq.Twitter.startTwitterConnect(); return false">Sign-in</a> \
								 \
								 \
							 \
						</div> \
					</div> \
					<div id="dsq-reply-' + post_id + '"></div> \
			</div> \
		';
	};

	//
	// Iframes
	//

	this._makeAttributes = function(attributes) {
		// Makes a tag attributes string out of an object.
		// Caller is responsible for making sure nothing needs to be escaped.
		var result = [];
		for (key in attributes) {
			result.push(' ' + key + '="' + attributes[key] + '"');
		}
		result = result.join('');
		return result;
	};

	this._frameGeneric = function(base_url, params, attributes) {
		if(typeof(disqus_callback_params) == 'undefined') {
			disqus_callback_params = '';
		}

		var default_params = {
			// TODO: These should be moved to Dsq.jsonData.
			'f'				: 'scobleizer',
			't'				: 'social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter',
			// Do we need encodeURIComponent here?
			'ifrs'			: encodeURIComponent(disqus_iframe_css),
			'to_redirect'	: encodeURIComponent(window.location),
			'cbp'			: disqus_callback_params,
			'ff'			: Dsq.Thread.ff,
			'fc'			: Dsq.Thread.fc,
			'ac'			: Dsq.Thread.ac,
			'default_text'	: disqus_default_text
		};

		base_url += '?' + (new Date()).getTime();
		// Add params to default_params.
		if(params) {
			for(var key in params) {
				if(params.hasOwnProperty(key)) {
					default_params[key] = encodeURIComponent(params[key]);
				}
			}
		}
		// Build querystring.
		for(var key in default_params) {
			if(default_params[key] && default_params.hasOwnProperty(key)) {
				base_url += '&' + key + '=' + default_params[key];
			}
		}

		return [
			'<iframe marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0"',
			(' allowtransparency="true" src="' + base_url + '"'),
			this._makeAttributes(attributes),
			'</iframe>'].join('');
	};

	this.frameLogin = function(opt_attributes) {
		var params = {};
		var base_url = 'http://disqus.com/embed/login.html';
		var attributes = opt_attributes || {};
		attributes['class'] = 'dsq-post-login';

		if(typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}
		return this._frameGeneric(base_url, params, attributes);
	};

	this.frameReply = function(post_id, extra_params, attributes) {
		// Returns the HTML for a reply iframe. Called by Dsq.Iframes.setReplyIframeToContainer
		var _meta = (typeof post_id != 'undefined') ? Dsq.jsonData.posts[post_id] : false;
		var base_url = Dsq.Urls.REPLY;
		var params = {
			'def_email'		: disqus_def_email,
			'def_name'		: disqus_def_name
		};
		if(extra_params) {
			for(var key in extra_params) {
				if(extra_params.hasOwnProperty(key)) {
					params[key] = extra_params[key];
				}
			}
		}
		if(_meta) {
			params['parent_post'] = post_id;
		}
		if(typeof disqus_per_page != 'undefined') {
			params['per_page'] = disqus_per_page;
		}
		if(typeof disqus_frame_theme != 'undefined') {
			params['theme'] = disqus_frame_theme;
		}
		if(Dsq.jsonData.request.is_authenticated) {
			attributes['class'] += '-authenticated';
		}
		return this._frameGeneric(base_url, params, attributes);
	};

	this.frameEdit = function(post_id) {
		var _meta = (typeof post_id != 'undefined') ? Dsq.jsonData.posts[post_id] : false;
		var base_url = 'http://disqus.com/embed/edit.html';
		var params = {
			'p' : post_id
		};
		return this._frameGeneric(base_url, params, {'class': 'dsq-post-edit', 'name': 'dsq-edit_' + post_id + '-frame'});
	};

	//
	// Menus
	//

	this.menuMore = function(post_id) {
		// TODO: "Remove post" button should hide menu.
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];
		return ' \
			<li><a href="#comment-' + post_id + '" onclick="Dsq.Popup.permalink(' + post_id + ')">Link</a></li> \
			<li><a href="#" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">Profile</a></li>'
	+ (Dsq.jsonData.request.is_moderator || Dsq.jsonData.request.is_global_moderator
		? '	<li class="dsq-menu-sep"></li>' + (_meta.email ? '<li class="dsq-admin-email">' + _meta.email + '</li>' : '')
		+ '	<li class="dsq-admin-ip">' + _meta.ip + '</li> \
			<li class="dsq-menu-sep"></li>'
		+ (Dsq.jsonData.request.moderator_can_edit
			? ' <li class="dsq-admin-edit"><a href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); return false;">Edit Comment</a></li>'
			: '')
		+ ' <li class="dsq-remove"><a href="#" onclick="Dsq.Post.removePost(' + post_id + ', 1); return false;">Remove Comment</a></li> \
			<li class="dsq-report-spam"><a href="#" onclick="Dsq.Post.reportSpam(' + post_id + '); return false;">Mark Spam</a></li> \
			<li class="dsq-block-user"><a href="#" onclick="Dsq.Popup.blacklist(' + post_id + '); return false">Block User</a></li>'
		: '');
	};

	this.menuMedia = function(post_id) {
		return ' \
			<li><a href="#" onclick="Dsq.Post.toggleMediaReply(this, ' + post_id + ', \'seesmic\'); return false;">Record video</a></li> \
		';
	};

	this.dropProfile = function(post_id) {
		var _meta = Dsq.jsonData.posts[post_id];
		var userData = Dsq.jsonData['users'][_meta.user_key];

		var _includeServices = function() {
			var userServices = Dsq.Post.getUserServices(null, post_id);
			var html = '';
			var hiddenThreshold = 3; // Define # of services to show before stuffing them in hidden div

			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == hiddenThreshold
					? '<li id="dsq-drop-hidden-' + post_id +'" class="dsq-drop-hidden"><ul>'
					: '')
				+ '<li class="dsq-drop-services"> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank"> \
						<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '">'
					+ userServices[i].name
					+ '</a> \
				</li>';
			}

			if(i >= hiddenThreshold) {
				html += '</ul></li> \
				<li id="dsq-drop-more-' + post_id + '" class="dsq-drop-more"><a href="#" onclick="Dsq.Post.dropProfileMore(this, '+ post_id + '); return false"><small>&#9660;</small></a></li> \
				';
			}
			return html;
		};


		var menu = '<li class="dsq-drop-showlnk"><a href="#" onclick="Dsq.Popup.popProfile(' + post_id + '); return false;">Expand &#8663;</a></li>';
		var pointsMessage = '';
		if (userData['registered']) {
			pointsMessage = 'with ' + userData['points'] + ' points (more points are better).';
		}

		if (userData['is_remote']) {
			var domain = userData['remote_domain_name'];
			menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' is a ' + domain + ' user ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
			menu += '<span class="dsq-badge-' + domain.toLowerCase() + '">' + domain + '</span></li>';
		} else if (userData['registered']) {
			if (userData['verified']) {
				menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has a verified commenter profile ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
				menu += '<span class="dsq-badge-verified">Verified</span></li>';
			} else {
				menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has a registered, but unverified, commenter profile ' + pointsMessage + '" onclick="Dsq.Popup.helpBadges()">';
				menu += '<span class="dsq-badge-registered">Registered</span></li>';
			}
		} else {
			menu += '<li class="dsq-drop-badge" title="' + userData['display_name'] + ' has not claimed this commenter profile." onclick="Dsq.Popup.helpBadges()"><span class="dsq-badge-guest">Guest</span></li>';
		}

		menu += _includeServices();
		return menu;
	};

	//
	// Popups
	//

	this._popupGeneric = function(content) {
		return ' \
		<div class="dsq-popup-content"> \
			<div class="dsq-popup-top"></div> \
			<div class="dsq-popup-body" class="clearfix"> \
				<div class="dsq-popup-body-padding"> \
					<div class="dsq-popup-header"> \
						<a class="dsq-close-link" href="#" onclick="Dsq.Popup._closePopup(null, true); return false"><img src="http://media.disqus.com/images/modal-close.png" alt="" /></a>'
						+ content['header']
					+ '</div>'
					+ content['body']
					+ '<div class="powered-by"><a href="http://disqus.com/comments/">Powered by <img src="http://media.disqus.com/images/embed/disqus-logo.png" alt="Disqus Comments" style="margin-bottom:-5px" /></a></div> \
				</div> <!-- padding --> \
			</div> <!-- body --> \
			<div class="dsq-popup-bottom"></div> \
		</div> \
		';
	};

	this.popupProfile = function(user_key) {
		var userServices = Dsq.Post.getUserServices(user_key, null);
		var userData = Dsq.jsonData['users'][user_key];
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		var _includeServices = function() {
			var html = '';
			for(var i = 0; i < userServices.length; i++) {
				html +=
				(i == 0
					? '<h4>Connections</h4><ul>'
					: '')
				+ '<li> \
					<img src="' + Dsq.jsonData.media_url + '/images/embed/services/' + userServices[i].name.toLowerCase() + '.png" alt="' + userServices[i].name.toLowerCase() + '" title="' + userServices[i].name.toLowerCase() + '" /> \
					<a class="dsq-service-' + userServices[i].name.toLowerCase() + '" href="' + userServices[i].url + '" target="_blank">'
					+ userServices[i].name
					+ '</a> \
				</li>'
				+ (i+1 == userServices.length ? '</ul>' : '');
			}
			return html;
		};

		headerHtml = ' \
			<table> \
				<tr> \
					<td> \
						<a class="dsq-profile-userurl" href="' + userData.url + '"><img class="dsq-popup-profile-avatar" src="' + userData['avatar'] + '" alt="" /></a> \
					</td> \
					<td> \
						<div class="dsq-popup-profile-user"> \
							<h3>' + userData['display_name'] + '</h3> \
							<div class="dsq-popup-profile-user-stats" id="dsq-popup-profile-user-stats-' + user_key + '">Loading...</div> \
						</div> \
					</td> \
				</tr> \
			</table> \
		';

		bodyHtml = ' \
			<div class="dsq-popup-profile-state"> \
				This is a&nbsp;<span class="'
					+ (userData['registered']
						? (userData['verified']
							? ' dsq-badge-verified'
							: (userData['is_remote']
								? ' dsq-badge-' + userData['remote_domain_name'].toLowerCase()
								: ' dsq-badge-registered')
							)
							: ' dsq-badge-guest') + '">'
			+ (userData['registered']
				? (userData['verified']
					? 'Verified'
					: (userData['is_remote']
						 ? userData['remote_domain_name']
						 : 'Registered')
					)
				: 'Guest')
			+ '</span>&nbsp;commenter profile.'
			+ '&nbsp;<a class="dsq-profile-userurl" href="' + userData.url + '"><strong>View more comments </strong></a>'
			+ (!userData['points']
				? '<p class="dsq-popup-notice">If this is you, <a href="http://disqus.com/profile" target="_blank">claim it now</a> to manage your comments.</p>'
				: '')
			+ ((userData['registered'] && !userData['verified'] && (Dsq.jsonData.request.username && (Dsq.jsonData.request.username == userData['username'])) && !userData['is_remote'])
				? '<p class="dsq-popup-notice"><strong>Alert</strong>: You have not verified this account. <a href="http://disqus.com/verify">Verify it now.</a></p>'
				: '')
			+ '</div> \
			<div id="dsq-profile-status-' + user_key + '" class="dsq-popup-profile-status" style="display:none"></div> \
			<div class="dsq-popup-profile-snapshot"> \
				<table> \
					<tr> \
						<td> \
							<div id="dsq-popup-profile-active-sites-wrapper-' + user_key + '"> \
								<h4>Most active sites</h4> \
								<ul id="dsq-popup-profile-active-sites-' + user_key + '"> \
									<li>Loading...</li> \
								</ul> \
							</div> \
						</td> \
						<td>'
							+ _includeServices()
							+ '<div id="dsq-popup-profile-moderated-wrapper-' + user_key + '"> \
								<h4>Moderator of</h4> \
								<ul id="dsq-popup-profile-moderated-' + user_key + '"> \
									<li>Loading...</li> \
								</ul> \
							</div> \
						</td> \
					</tr> \
				</table> \
			</div> \
			';

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.popupReblog = function() {
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		headerHtml = ' \
			<cite><span>Reblog this comment</span></cite> \
		';

		bodyHtml = ' \
			<div id="dsq-reblog-form" class="dsq-reblog-form"> \
			</div> \
		';

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.popupModal = function(title, message) {
		var headerHtml = '';
		var bodyHtml = '';
		var content = {};

		headerHtml = ' \
			<h3>' + title + '</h3> \
		';

		bodyHtml = message;

		content = {
			'header': headerHtml,
			'body': bodyHtml
		};

		return this._popupGeneric(content);
	};

	this.alertContent = function(name, post_id) {
		var alert = {
			'post_not_approved': {
				'title': 'Comment awaiting approval by a moderator',
				'message': 'Thanks for posting. Your comment must be approved by a moderator before appearing here.'
			},
			'post_has_profile': {
				'title': 'Use your existing commenter profile',
				'message': 'You have just posted your commment as a <span class="dsq-badge dsq-badge-guest">Guest</span>, but you may already have a <span class="dsq-badge dsq-badge-registered">Registered</span> commenter profile.<br /><br /><a href="http://disqus.com/claim">Log in and claim this comment!</a>'
			}
		};
		return alert[name] || false;
	};

	//
	// Actions
	//

	this.voted = function(post_id, points, vote) {
		// Update number of points
		Dsq.$('dsq-points-' + post_id).innerHTML = points + Dsq.Utils.pluralize(points, ' person', ' people') + ' liked this comment.';

		// Update link text
		if(vote) {
			Dsq.$('dsq-rate-cont-' + post_id).innerHTML = 'You liked this.';
		}
	};

	this.subscribed = function(status) {
		var title, message;

		if(status) {
			title = 'Subscribed!';
			message = 'You have subscribed to this comment thread. New comments will be sent directly to your email inbox, where you may read and respond by email.';
			Dsq.$('dsq-subscribe').innerHTML = ' \
				<a href="#" onclick="Dsq.Thread.subscribe(0); return false">Unsubscribe</a> \
			';
		} else {
			title = 'Unsubscribed';
			message = 'You have unsubscribed to this comment thread. New comments will no longer be sent to your email inbox.';
			Dsq.$('dsq-subscribe').innerHTML = ' \
				<a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a> \
			';
		}

		Dsq.Popup.popModal(message, title);

	};
	
	this.highlighted = function() {
		Dsq.Popup.popModal('This comment has been highlighted.', 'Highlighted comment');
	};

	//
	// Media
	//

	this.mediaSeesmic = function(id, thumb) {
		return ' \
			<div id="dsq-seesmic-' + id + '_preview" class="dsq-seesmic-preview"><a href="http://www.seesmic.com/video/' + id + '" target="_blank" class="see_link">&nbsp;</a> \
				<div style="display:block;width:160px; height:120px; border:none; background-image:url(http://t.seesmic.com/thumbnail/' + thumb + ')"> \
					<div id="dsq-seesmic-' + id + '_hide" class="seePlayOverlay" style="display:none;"><img onclick="see_play_video(\'' + id + '\',false)" src="http://media.disqus.com/images/seesmic/stopOverlay.png" width="50" height="50" style="cursor:pointer; cursor:hand; padding-top: 30px; padding-left: 50px" alt="" /></div> \
					<div id="dsq-seesmic-' + id + '_show" class="seePlayOverlay"><img onclick="see_play_video(\'' + id + '\',true)" src="http://media.disqus.com/images/seesmic/playOverlay.png" width="50" height="50" style="cursor:pointer; cursor:hand; border:none; padding-top: 30px; padding-left: 50px" alt="" /></div> \
				</div> \
			</div> \
			<div id="' + id + '_content" style="display:block; width:100%; padding-top:5px"></div> \
		';
	};

	//
	// Callbacks
	//

	this.postComment_onSuccess = function(parent_post_id) {
		// Increment post count
		var num_posts = Dsq.$('dsq-num-posts');
		var total_posts = Dsq.$('dsq-total-posts');
		
		if (num_posts) { 
			num_posts.innerHTML = parseInt(num_posts.innerHTML) + 1;
		}
		if (total_posts) { 
			total_posts.innerHTML = parseInt(total_posts.innerHTML) + 1;
		}
	};
};
// Dsq.Templates


/**
 * Dsq.Post
 */
Dsq.Post = new function() {
	this.openedMenu = {};
	this.menuEventListener = null;
	this.stateReplyToggled = {};
	this.stateEditToggled = {};
	this.stateRecordLink = {};

	/**
	 * Inserts a new post into the document.
	 *
	 * @param after_id {Number}	Insert a post before specified id.  If after_id
	 *							evaluates to false, then post in the front.  If
	 *							after_id is -1, post at the end.
	 */
	this.insert = function(after_id, id, message, author) {
		// Skeleton template from thread_posts.html.
		var skeleton = ' \
			<li id="dsq-comment-%(id)s"> \
				<div id="dsq-comment-header-%(id)s" class="dsq-comment-header"> \
					<cite id="dsq-cite-%(id)s" class="dsq-comment-cite"> \
						<a id="dsq-author-user-%(id)s" href="%(author_url)s" target="_blank" rel="nofollow">%(author_name)s</a> \
					</cite> \
				</div> \
				<div id="dsq-comment-body-%(id)s" class="dsq-comment-body"> \
					<div id="dsq-comment-message-%(id)s" class="dsq-comment-message">%(message)s</div> \
				</div> \
			</li> \
		';
		var _meta = Dsq.jsonData.posts[id];
		var _user_meta = Dsq.jsonData.users[_meta.user_key];
		var markup = Dsq.Utils.interpolate(skeleton, {
			id: id,
			message: message,
			author_url: _user_meta.blog,
			author_name: _user_meta.display_name
		});
		var div = document.createElement('div');
		markup = markup.replace(Dsq.COMMENTS_RE, Dsq.CommentsHandler);
		div.innerHTML = markup;

		if (after_id === -1) {
			Dsq.$('dsq-comments').appendChild(div);
		} else if (!after_id) {
			Dsq.$('dsq-comments').insertBefore(div, Dsq.$('dsq-comments').firstChild);
		} else if (Dsq.$('dsq-comment-' + after_id)) {
			// Get next node after "after_id", so we can insert before it.
			// If "after_id" is the last comment, the target node is the
			// last node.
			
			// var append_post_id = Dsq.Templates.appendPost(after_id).replace('<div id="','').replace('"></div>', '');
			var append_post_id = 'dsq-append-post-' + after_id;
			var node = Dsq.$(append_post_id);
			while (node = node.nextSibling) {
				if (!node || node.nodeType == 1) { // 1 == Node.ELEMENT_NODE
					break;
				}
			}
			if (!node) {
				node = Dsq.$(append_post_id);
			}
			node.parentNode.insertBefore(div, node);
		}
	};

	this.incrementPostCount = function() {
		
		var num_posts = Dsq.$('dsq-num-posts');
		var total_posts = Dsq.$('dsq-total-posts');

		if (num_posts) {
			num_posts.innerHTML = parseInt(num_posts.innerHTML, 10) + 1;
		}
		if (total_posts) {
			total_posts.innerHTML = parseInt(total_posts.innerHTML, 10) + 1;
		}
	}
	
	this.outlineComment = function(post_id) {
		Dsq.$('dsq-comment-' + post_id).className += ' dsq-comment-outline';
		setTimeout("(function () { Dsq.Post.clearOutlineComment(" + post_id + ") })()", 3000);
	};
	
	this.clearOutlineComment = function(post_id) {
		Dsq.$('dsq-comment-' + post_id).className = Dsq.$('dsq-comment-' + post_id).className.replace('dsq-comment-outline', '');
	};

	this.showMenu = function(el, id, name) {
		var anchorPos = Dsq.Utils.findPos(el);
		var menu = document.createElement('ul');

		if(this.openedMenu) {
			if(this.openedMenu.linkClicked) {
				this.openedMenu.linkClicked = false;
				return;
			}
		}

		switch(name) {
			case 'more':
				menu.innerHTML = Dsq.Templates.menuMore(id);
				break;
			case 'media':
				menu.innerHTML = Dsq.Templates.menuMedia(id);
				break;
			default:
				break;
		}

		// Add menu to document body
		menu.id = 'dsq-menu-' + id;
		menu.className = 'dsq-menu';
		Dsq.$b.appendChild(menu);

		// Position and show
		anchorPos[1] += 15;
		menu.style.left = anchorPos[0] + 'px';
		menu.style.top = anchorPos[1] + 'px';
		menu.style.display = 'block';

		// Set global reference
		this.openedMenu = {
			'el' : menu,
			'id' : id,
			'name' : name,
			'linkClicked' : false
		};

		// Set listener
		this.menuEventListener = Dsq.Utils.addEventListener(document, 'mouseup', this._hideMenu);
	};

	this._hideMenu = function(e) {
		var el = e.target || e.srcElement;
		var openedMenu = Dsq.Post.openedMenu.el;
		var id = Dsq.Post.openedMenu.id;

		if(!id) {
			var link = 'dsq-' + Dsq.Post.openedMenu.name + '-link';
		} else {
			var link = 'dsq-' + Dsq.Post.openedMenu.name + '-link-' + id;
		}

		if(!openedMenu) {
			return;
		}

		if(!Dsq.Popup.isClicked(e, openedMenu.id)) {
			openedMenu.style.display = 'none';
			Dsq.Utils.removeEventListener(Dsq.Post.menuEventListener);
			Dsq.Utils.deleteNode(openedMenu);

		} else {
			// Hide the menu if a link was clicked inside the menu.  We can't
			// completely remove the menu until the onclick event on the link
			// fires, but the menuEventListener will prevent multiple menus
			// from polluting the DOM.
			if(el && typeof el.href != 'undefined') {
				openedMenu.style.display = 'none';
				Dsq.Post.openedMenu.el = null;
			}
		}

		if(Dsq.Popup.isClicked(e, link)) {
 			Dsq.Post.openedMenu.linkClicked = true;
		}
	};


	this.getUserServices = function(user_key, id) {
		if(!user_key && id) {
			var _meta = Dsq.jsonData.posts[id];
			user_key = _meta.user_key;
		}
		var userData = Dsq.jsonData['users'][user_key];
		var userServices = [];

		// Keep a full list of supported services. This is the order they will display in the drop-profile.
		// Each service must have a corresponding case in _buildServiceUrl()
		var supportedServices = ['blog', 'twitter', 'facebook', 'tumblr'];

		function _buildServiceUrl(serviceName) {
			var data = userData[serviceName];
			var services = {
				blog:		function(d) { return d; },
				twitter:	function(d) { return d; },
				facebook:	function(d) { return d; },
				tumblr:		function(d) { return 'http://' + d + '.tumblr.com'; }
			};
			return services[serviceName](data);
		}

		for(var i = 0; i < supportedServices.length; i++) {
			if(userData[supportedServices[i]]) {
				var serviceUrl = _buildServiceUrl(supportedServices[i]);
				userServices.push({'name' : supportedServices[i], 'url' : serviceUrl});
			}
		}
		return userServices;
	}

	this.dropProfile = function(id) {
		var dp = Dsq.$('dsq-drop-profile-' + id);

		// IE6 needs JS to display/hide. All other browsers use CSS.
		if(dp) {
			if(Dsq.Utils.ie6) dp.style.display = (dp.style.display == 'inline') ? 'none' : 'inline';
			return false;
		} else {
			dp = document.createElement('ul');
		}

		dp.id = 'dsq-drop-profile-' + id;
		dp.className = 'dsq-drop-profile';

		if(Dsq.Utils.ie6) { dp.style.display = 'inline'; }

		var container = Dsq.$('dsq-header-avatar-' + id);
		dp.innerHTML = Dsq.Templates.dropProfile(id);
		container.appendChild(dp);
	};

	this.dropProfileMore = function(el, id) {
		var hiddenItems = Dsq.$('dsq-drop-hidden-' + id);

		hiddenItems.style.display = 'inline';
		el.parentNode.style.display = 'none';
	};

	this._updateReplyLinks = function(el, id) {
		// Update "reply / cancel" links based on state.
		var displayDict = {};

		if(id) {
			if(this.stateReplyToggled[id]) {
				el.innerHTML = 'Cancel';
				displayDict['media'] = 'inline';
				displayDict['edit'] = 'none';
			} else {
				el.innerHTML = 'Reply';
				displayDict['media'] = 'none';
				displayDict['edit'] = 'inline';
			}
		}

		for(var key in displayDict) {
			if(displayDict.hasOwnProperty(key)) {
				var	linkEl = Dsq.$('dsq-' + key + '-el-' + id),
					spacer = Dsq.$('dsq-' + key + '-spacer-' + id);

				if(linkEl) {
					linkEl.style.display = displayDict[key];
					if(spacer) spacer.style.display = displayDict[key];
				}
			}
		}
	};

	this._updateMediaLinks = function(el, id) {
		// Update "use media / cancel" links based on state.
		var appendId = (id) ? ('-' + id) : '';
		var link = Dsq.$('dsq-media-link' + appendId);

		if(this.stateRecordLink[id]) {
			link.innerHTML = 'Cancel Media';
			link.onclick = function() { Dsq.Post.toggleMediaReply(link, id); return false; };
		} else {
			link.innerHTML = 'Use Media <small>&#9660;</small>';
			link.onclick = function() { Dsq.Post.showMenu(link, id, 'media'); return false; };
		}
	};

	this.toggleReply = function(el, id) {
		// Create reply IFrame
		if (window.disqus_use_postmessage) {
			if (!this.stateReplyToggled[id]) {
				Dsq.$('dsq-reply-' + id).style.display = 'block';
				Dsq.$('dsq-reply-bar-' + id).style.display = 'block';
				// Create IFrame if it doesn't exist.
				if (!Dsq.frames['reply_' + id]) {
					var _meta = Dsq.jsonData.posts[id];
					Dsq.frames['reply_' + id] = new Dsq.ReplyFrame(Dsq.$('dsq-reply-frame-' + id), id);
					Dsq.frames['reply_' + id].init();
					Dsq.frames['reply_' + id].setState(id, _meta.depth);
				}
			} else {
				Dsq.$('dsq-reply-' + id).style.display = 'none';
				Dsq.$('dsq-reply-bar-' + id).style.display = 'none';
			}
		} else {
			// DEPRECATED
			if(!this.stateReplyToggled[id]) {
				// Reply toolbar
				Dsq.$('dsq-reply-bar-' + id).style.display = 'block';
				Dsq.Iframes.showReplyIframeInContainerIfAllowed(Dsq.$('dsq-reply-' + id), id);
			} else {
				Dsq.$('dsq-reply-bar-' + id).style.display = 'none';
				Dsq.Iframes.hideAllInContainer(Dsq.$('dsq-reply-' + id));
				if(this.stateRecordLink[id]) {
					// HACK: Cancel media before canceling self.
					this.toggleMediaReply(Dsq.$('dsq-media-link-' + id), id);
				}
			}
		}

		this.stateReplyToggled[id] = !this.stateReplyToggled[id];
		this._updateReplyLinks(el, id);

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE('dsq-reply-' + id); }

		Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_TOGGLED, {
			postId: id,
			opened: this.stateReplyToggled[id]
		});
	};

	this.toggleMediaReply = function(el, id, xtype) {
		id = id || 0;
		if(id) {
			var container = Dsq.$('dsq-reply-' + id);
		} else {
			var container = Dsq.$('dsq-post-add');
		}

		if(!this.stateRecordLink[id]) {
			Dsq.Iframes.showReplyIframeInContainer(container, id, {xtype:xtype}, 'dsq-post-video');
		} else {
			Dsq.Iframes.showReplyIframeInContainer(container, id);
		}
		this.stateRecordLink[id] = !this.stateRecordLink[id];
		this._updateMediaLinks(el, id);

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
	};

	this.edit = function(el, id) {
		Dsq.$('dsq-comment-message-' + id).innerHTML = Dsq.Templates.frameEdit(id);
		el.parentNode.style.display = 'none';
		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE('dsq-comment-message-' + id); }
	};

    this.rate = function(el, id, vote) {
		if(Dsq.jsonData.request.is_authenticated || Dsq.jsonData.forum.allow_anon_votes) {
			if(vote == 1) {
                Dsq.$('dsq-rate-cont-' + id).innerHTML = '<img src="http://media.disqus.com/images/loading-small.gif">';
            }

            Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/vote.js'
                + '?post_id='    + id
                + '&vote='        + vote);

		} else {
			Dsq.Popup.login(Dsq.Strings.TO_RATE_PLEASE_LOG_IN);
		}
    };

	this.report = function(id, confirmed) {
		if(confirmed) {
			Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter/post_report/', {'post_id': id});
			Dsq.Popup.popModal('Thank you. This comment has been flagged for moderator attention.', 'Successfully flagged');
			Dsq.Utils.deleteNode(Dsq.$('dsq-post-report-' + id));
		} else {
			var title = Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT;
			var message = Dsq.Strings.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR + '? \
			<br /><br /> \
			<button type="button" onclick="Dsq.Popup._closePopup(null, true)"><strong>' + Dsq.Strings.NO + '</strong>, ' + Dsq.Strings.NEVER_MIND + '</button>&nbsp;&nbsp;&nbsp;<button type="button" onclick="Dsq.Post.report(' + id + ', true);"><strong>' + Dsq.Strings.YES + '</strong>, ' + Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT + '</button><br /><br />'
			+ Dsq.Strings.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION + '. \
			';

			Dsq.Popup.popModal(message, title, id);
		}
	};



	this.showAlert = function(id, msg) {
		var msgEl = Dsq.$('dsq-comment-message-' + id);
		var alert = '<div class="dsq-comment-alert">' + msg + '</div>';

		msgEl.innerHTML = alert + msgEl.innerHTML;
	};

};
// Dsq.Post


/**
 * Dsq.Thread
 */
Dsq.Thread = new function() {
	this.fc = null;
	this.ff = null;
	this.ac = null;

	
	this.adminIsOn = false;

	
	
	

	this.hlComment = null;
	this.hlCommentClass = null;

	this.getNextComment = function(el) {
		var start_id = el.id;
		while(el = el.nextSibling) {
			if(el.id && el.id.indexOf('dsq-comment-') != -1 && el.id != start_id) {
				return el;
			}
		}
		return null;
	};

	this.getActiveCommentId = function() {
		if (document.URL.indexOf('#comment-') >= 0) {
			var anchor = document.URL.slice(document.URL.indexOf('#') + 1);
			return anchor.replace('comment-', '');
		}
		return null;
	};

	this.highlightAnchor = function() {
		var i = this.getActiveCommentId();
		if (i == null) return false;
		var id = 'dsq-comment-' + i;
		var hash = window.location.hash;

		// Toggle the hash incase the comment isn't available when the page loads
		// for WebKit-based browsers.
		if (Dsq.Utils.webkit) {
			window.location.hash = '';
			window.location.hash = hash;
		}

		this.hlComment = Dsq.$(id);
		// Adding this conditional guard pending #289
		if (!this.hlComment) {
			return;
		}
		this.hlCommentClass = this.hlComment.className;
		this.hlComment.className += ' dsq-hl-anchor';

		setTimeout("Dsq.Thread.highlightClear()", 3000);
	};

	this.highlightClear = function() {
		if (!this.hlComment) {
			return;
		}
		this.hlComment.className = this.hlCommentClass;
	};

	this.login = function(toggle) {
		// toggle id is #dsq-reply-login-[id]
		var postId;
		if(toggle.id.indexOf('dsq-reply-login') != -1) {
			postId = toggle.id.slice(16);
			var container = Dsq.$('dsq-reply-' + postId);
		} else {
			var container = Dsq.$('dsq-post-add');
		}

		if(toggle) {
			if(toggle.className == 'dsq-login-active') {
				Dsq.Iframes.showReplyIframeInContainerIfAllowed(container, postId);
				toggle.className = '';
			} else {
				Dsq.Iframes.showLoginIframeInContainer(container, postId);
				toggle.className = 'dsq-login-active';
			}
		} else {
			Dsq.Iframes.showLoginIframeInContainer(container, postId);
		}

		if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
	};


	this.paginate = function(page, el_clicked, per_page) {
		// Use extra_params to pass any override parameters that we need to persist.
		var extra_params = '';

		// "Per page" can either be overriden by providing it as an argument
		// (per-call) or setting the disqus_per_page override variable (global).
		if(typeof per_page == 'undefined') {
			per_page = null;
		}
		if(typeof disqus_per_page != 'undefined' && per_page === null) {
			per_page = disqus_per_page;
		}

		if(typeof disqus_sort != 'undefined') {
			extra_params += '&sort=' + disqus_sort;
		}
		if(per_page !== null) {
			extra_params += '&per_page=' + per_page;
		}

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			el_clicked.style.display = 'none';
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter'
			+ '&p='		+ page
			+ extra_params);
	};

	this.sortBy = function(sort) {
		var disqus_script = document.createElement('script');
		var disqus_date = new Date();

		if (location.hash != '') {
			location.hash = '#disqus_thread';
		}

		if(typeof(disqus_url) == 'undefined') {
			disqus_url = disqus_href;
		}
		disqus_script.type = 'text/javascript';
		disqus_script.src = 'http://disqus.com/forums/scobleizer/thread.js'
			+ '?slug='	+ 'social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter'
			+ '&sort='	+ sort
			+ '&title='
			+ '&'		+ disqus_date.getTime();

		Dsq.$('dsq-comments').innerHTML = '<img src="http://media.disqus.com/images/loading.gif">';
		Dsq.container.appendChild(disqus_script);
	};

	this.subscribe = function(status, email) {
		// `status` is an int -- 1 to subscribe, 0 to unsubscribe
		if(Dsq.jsonData.request.is_authenticated || email) {
			// If authenticated user OR anonymous email provided

			if(email) {
				Dsq.Popup._closePopup(null, true);
			}

			Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/subscribe.js'
				+'?status=' 	+ status
				+ '&slug='		+ 'social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter'
				+ '&email=' 	+ encodeURIComponent(email));

		} else if(!email) {
			// If anonymous user and no email has been provided yet, prompt for email

			var title = 'Subscribe to this comment thread';
			var message = ' \
				New comments will be sent directly to your email inbox! \
				<div class="dsq-subscribe-submit"> \
					<p><strong>Enter your email address below.</strong></p> \
					<input type="text" id="dsq-subscribe-email"> \
					<button type="button" onclick="Dsq.Thread.subscribe(1, Dsq.$(\'dsq-subscribe-email\').value)">Subscribe</button> \
				</div> \
			';

			Dsq.Popup.popModal(message, title);
		}
	};

	this.showSettings = function() {
		if (!Dsq.jsonData.request.is_moderator) {
			return;
		}

		/* The form has to be re-designed when more options will come out. */
		var html = 'Automatically close comments after <input size="3" id="dsq-thread-days-alive" value="' + Dsq.jsonData.thread.days_alive + '" type="text" /> days. Existing comments will still be displayed.<br /><br />(Using 0 days will disable this feature)<br /><br />'
								 + '<button type="button" onclick="Dsq.Thread.updateDaysAlive();" class="dsq-button-small"><span>Save</span></button>'
								 + '<span id="dsq-thread-settings-status" class="dsq-options-status"></span>';

		Dsq.Popup.popModal(html, 'Settings');
	};

  this.showModeratorActions = function() {
      if (!Dsq.jsonData.request.is_moderator) {
          return;
      }

      var html = '<div class="dsq-moderate-options"><table><tr>' +
                 '<td>' + Dsq.Strings.ACTIONS + '</td><td><ul>';
      html += '<li><a href="#" onclick="Dsq.Thread.toggleClosed(); return false;">' +
              (Dsq.jsonData.thread.closed ? Dsq.Strings.OPEN_THREAD : Dsq.Strings.CLOSE_THREAD) +
              '</a></li>';
      html += '<li><a href="#" onclick="Dsq.Thread.toggleKilled(); return false;">' +
              (Dsq.jsonData.thread.killed ? Dsq.Strings.RESTORE_THREAD : Dsq.Strings.REMOVE_THREAD) +
              '</a></li>';
      html += '</ul></td></tr></table></div>' +
              '<p>Go to the full <a href="http://disqus.com/comments/moderate-threads/" target="_blank">moderate panel</a> for more options.</p>';
      Dsq.Popup.popModal(html, Dsq.Strings.MODERATE_OPTIONS);
  };

	this.updateDaysAlive = function() {
		  var days = Dsq.$('dsq-thread-days-alive').value;
		  var status = Dsq.$('dsq-thread-settings-status');
		  Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/update_days_alive.js', {days:days,thread:Dsq.jsonData.thread.id});
		  status.innerHTML = 'Saved!';
		  window.setTimeout(function() { status.innerHTML = ''; }, 1000);
	};

  this.toggleClosed = function() {
      Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/toggle_thread_closed.js', {thread:Dsq.jsonData.thread.id});
      window.setTimeout(function() { window.location.reload(); }, 500);
  };

  this.toggleKilled = function() {
      Dsq.Utils.postToUrl('http://disqus.com/forums/scobleizer/toggle_thread_killed.js', {thread:Dsq.jsonData.thread.id});
      window.setTimeout(function() { window.location.reload(); }, 500);
  };
};
// Dsq.Thread

Dsq.Events = function() {
	var obj = {};

	// Private
	var handlers = {};
	var getHandlers = function(event) {
		if (handlers[event] === undefined) {
			handlers[event] = [];
		}
		return handlers[event];
	};

	// Public
	// Value keys : postId, node, xtype
	obj.REPLY_IFRAME_CREATED = 1;
	// Value keys : postId, opened
	obj.REPLY_IFRAME_TOGGLED = 2;
	obj.fire = function(event, opt_value) {
		if (!event) {
			throw new Error('Unknown event');
		}
		var value = opt_value || {};
		for (var i=0; i<getHandlers(event).length; i++) {
			getHandlers(event)[i](value);
		}
	};
	obj.addHandler = function(event, callback) {
		getHandlers(event).push(callback);
	};

	return obj;
}();

/**
 * Dsq.Realtime
 */
Dsq.Realtime = new function() {
	var initialized = false;
	var interval = null;
	var last_checked = Dsq.jsonData.request.timestamp;
	var new_posts = [];
	var ongoing_request = false;
	var prev_script = null;

	function updateNewPostCount() {
		Dsq.$('dsq-realtime-alert').style.display = new_posts.length ? 'block' : 'none';

		Dsq.$('dsq-realtime-queued').innerHTML = new_posts.length
		+ ' new '
		+ Dsq.Utils.pluralize(new_posts.length, 'comment', 'comments')
		+ Dsq.Utils.pluralize(new_posts.length, ' was', ' were')
		+ ' just posted.';

		Dsq.$('dsq-realtime-show').innerHTML = '(' + Dsq.Strings.SHOW + ')';
	}

	function insertNewPosts() {
		var post_id = null;
		var after_id = Dsq.$('dsq-sort-select').value === 'oldest' ? -1 : null;

		for (var i=0; i<new_posts.length; i++) {
			post_id = new_posts[i];
			Dsq.Post.insert(after_id, post_id, Dsq.jsonData.posts[post_id].message);
			Dsq.Post.incrementPostCount();
			Dsq.Post.outlineComment(post_id);
		}
		new_posts = [];
	}

	this.enableInterval = function() {
		interval = setInterval(Dsq.Realtime.check, Dsq.jsonData.context.realtime_speed);
		Dsq.$('dsq-realtime-status').innerHTML = Dsq.Strings.ENABLED;
		Dsq.$('dsq-realtime-toggle').innerHTML = '(' + Dsq.Strings.PAUSE + ')';
	}

	this.disableInterval = function() {
		if (interval) {
			clearInterval(interval);
			interval = null;
		}
		Dsq.$('dsq-realtime-status').innerHTML = Dsq.Strings.PAUSED;
		Dsq.$('dsq-realtime-toggle').innerHTML = '(' + Dsq.Strings.RESUME + ')';
	}

	this.toggleInterval = function() {
		if (!interval) {
			Dsq.Realtime.enableInterval();
		} else {
			Dsq.Realtime.disableInterval();
		}
		return false;
	}

	this.initialize = function() {
		if (!initialized) {
			initialized = true;
			Dsq.$('dsq-realtime-toggle').onclick = this.toggleInterval;
			if (!Dsq.jsonData.forum.streaming_realtime) {
				Dsq.$('dsq-realtime-show').onclick = this.show;
				updateNewPostCount();
			}
			if (Dsq.jsonData.thread.realtime_paused) {
				Dsq.Realtime.disableInterval();
			} else {
				Dsq.Realtime.enableInterval();
			}
		}
	}

	this.show = function() {
		insertNewPosts();
		updateNewPostCount();
		return false;
	}

	this.check = function() {
		if (!ongoing_request && Dsq.jsonData.realtime_enabled) {
			if (prev_script) {
				prev_script.parentNode.removeChild(prev_script);
			}
			ongoing_request = true;
			prev_script = Dsq.Utils.execScript('http://disqus.com/forums/18349600/realtime.js?timestamp=' + last_checked);
		}
	};

	this.update = function(timestamp, posts, users) {
		ongoing_request = false;
		last_checked = timestamp;

		if (users) {
			for (var user_id in users) {
				if (users.hasOwnProperty(user_id)) {
					if (!Dsq.jsonData.users[user_id]) {
						Dsq.jsonData.users[user_id] = users[user_id];
					}
				}
			}
		}

		if (posts) {
			for (var post_id in posts) {
				if (posts.hasOwnProperty(post_id)) {
					if (!Dsq.jsonData.posts[post_id]) {
						Dsq.jsonData.posts[post_id] = posts[post_id];
						new_posts.push(post_id);
					}
				}
			}

			if (Dsq.jsonData.forum.streaming_realtime) {
				insertNewPosts();
			} else {
				updateNewPostCount();
			}
		}
	};

}();

// DEPRECATED
Dsq.Iframes = function() {
	// Different style of object from the above. Hoping to switch to this for some reason.
	var obj = {};

	// Private
	var showIframeInContainer = function(container, id, markup) {
		// Look through container for iframes, hiding them, except show one that matches id
		// If none of them matched id, create a new iframe using markup and insert it.
		// Returns the iframe node if and only if it was newly created.
		var found = false;
		for (var i=0; i<container.childNodes.length; i++) {
			var child = container.childNodes[i];
			if (child.nodeName == 'IFRAME') {
				if (child.id == id) {
					child.style.display = 'block';
					found = true;
				} else {
					child.style.display = 'none';
				}
			}
		}
		if (found) {
			return;
		}
		// The iframe wasn't found, so construct it and add it to the container.
		// Don't use innerHTML because it might reload iframes
		var div = document.createElement('div');
		div.innerHTML = markup;
		var iframe = div.childNodes[0];
		div.removeChild(iframe);
		container.appendChild(iframe);
		return iframe;
	};

	// Public
	obj.makeReplyIframeId = function(opt_postId, opt_xtype) {
		var id = 'dsq-post-add-iframe';
		if (opt_xtype) {
			id += '-' + opt_xtype;
		}
		if (opt_postId) {
			id += '-' + opt_postId;
		}
		return id;
	};
	obj.makeLoginIframeId = function(opt_postId) {
		if (!opt_postId) {
			return 'dsq-login-iframe';
		}
		return 'dsq-login-iframe-' + opt_postId;
	};
	obj.makeReplyIframeName = function(opt_postId, opt_xtype) {
		var name = 'dsq-reply-frame';
		if (opt_xtype) {
			name += '-' + opt_xtype;
		}
		if (opt_postId) {
			name += '-' + opt_postId;
		}
		return name;
	};
	obj.showReplyIframeInContainer = function(container, opt_postId, opt_extraParams, opt_className) {
		// Construct the id so we can check if it's already present.
		// Hide any other iframes we find, and show this one if it's found.
		var params = opt_extraParams || {};
		// use xtype in the id and name so we can distinguish media replies from text replies:
		var id = Dsq.Iframes.makeReplyIframeId(opt_postId, params.xtype);
		var name = Dsq.Iframes.makeReplyIframeName(opt_postId, params.xtype);
		var attributes = {
			'id': id,
			'name': name,
			'class': opt_className || 'dsq-post-reply'
			};
		var markup = Dsq.Templates.frameReply(opt_postId, opt_extraParams, attributes);
		var iframe = showIframeInContainer(container, id, markup);
		// It was newly created
		if (iframe) {
			Dsq.Events.fire(Dsq.Events.REPLY_IFRAME_CREATED, {
				postId: opt_postId,
				node: iframe,
				xtype: params.xtype
			});
		}
	};
	obj.showLoginIframeInContainer = function(container, opt_postId) {
		var id = Dsq.Iframes.makeLoginIframeId(opt_postId);
		var markup = Dsq.Templates.frameLogin({id: id});
		showIframeInContainer(container, id, markup);
	};
	obj.showReplyIframeInContainerIfAllowed = function(container, opt_postId) {
		if (Dsq.jsonData.context.show_reply) {
			obj.showReplyIframeInContainer(container, opt_postId);
		} else {
			obj.hideAllInContainer(container);
		}
	};
	obj.hideAllInContainer = function(container) {
		for (var i=0; i<container.childNodes.length; i++) {
			var child = container.childNodes[i];
			if (child.nodeName == 'IFRAME') {
				child.style.display = 'none';
			}
		}
	};

	return obj;
}();

Dsq.Twitter = new function() {
	var that = this;

	this.startTwitterConnect = function() {
		var popupParams = 'location=0,status=0,width=800,height=400';
		that._twitterWindow = window.open(Dsq.jsonData.settings.disqus_url + '/_ax/twitter/begin/', 'twitterWindow', popupParams);
		that._twitterInterval = window.setInterval(that.completeTwitterConnect, 1000);
	};

	this.completeTwitterConnect = function() {
		if (that._twitterWindow.closed) {
			window.clearInterval(that._twitterInterval);
			window.location.reload();
		}
	};
};

Dsq.Yahoo = new function() {
	var that = this;

	this.startYahooConnect = function() {
		var popupParams = 'location=0,status=0,width=800,height=400';
		that._yahooWindow = window.open(Dsq.jsonData.settings.disqus_url + '/_ax/yahoo/begin/', 'yahooWindow', popupParams);
		that._yahooInterval = window.setInterval(that.completeYahooConnect, 1000);
	};

	this.completeYahooConnect = function() {
		if (that._yahooWindow.closed) {
			window.clearInterval(that._yahooInterval);
			window.location.reload();
		}
	};
};

Dsq.OpenID = new function() {
	var that = this;

	this.requestURL = function() {
		var message = '<table class="dsq-openid-form"><tr><td style="vertical-align:top;" rowspan="2"><img src="' + Dsq.jsonData.settings.media_url + '/images/openid-icon-100x100.png" /></td>';
		message += '<td><label for="dsq-openid-url">OpenID URL:</label></td><td><input type="text" id="dsq-openid-url" /></td></tr>';
		message += '<tr><td><label for="dsq-openid-username">Display name:</label></td><td><input type="text" id="dsq-openid-username" /></td></tr>';
		message += '<tr><td class="dsq-openid-submit" colspan="3"><input type="button" value="Sign in" onclick="Dsq.OpenID.startConnect();" /></td></tr>';
		message += "</table>";

		Dsq.Popup.popModal(message, 'Sign in using OpenID');
	};

	this.startConnect = function() {
		var isblank = function(str) {
			return /^\s*$/.test(str);
		};

		var openid_url = Dsq.$('dsq-openid-url').value;
		var username = Dsq.$('dsq-openid-username').value;

		if (isblank(openid_url)) {
			return;
		}

		var popupParams = 'location=0,status=0,width=800,height=500';
		var url = Dsq.jsonData.settings.disqus_url + '/_ax/openid/begin/' + '?url=' + encodeURIComponent(openid_url) + '&username=' + encodeURIComponent(username);
		that._openidWindow = window.open(url, 'openidWindow', popupParams);
		that._openidInterval = window.setInterval(that.completeConnect, 1000);
	};

	this.completeConnect = function() {
		if (that._openidWindow.closed) {
			window.clearInterval(that._openidInterval);
			window.location.reload();
		}
	};
};

Dsq.Reaction = new function() {
	var that = this;

	this.hide = function(id) {
		Dsq.Utils.execScript('http://disqus.com/forums/scobleizer/hidereaction.js?' + 'reaction_id=' + id);
	};

	this.reportMissingReactions = function() {
		if (!Dsq.jsonData.request.is_moderator || !Dsq.jsonData.forum.reactions_enabled) {
			return;
		}

		if (Dsq.jsonData.thread.queued) {
			Dsq.Popup.popModal('Your report has been received. The system will automatically search for new reactions; if any are found, they will be displayed on this comment thread.<br/><br/>Thank&nbsp;you.',
												 'Reported missing reactions');
			return;
		}

		Dsq.Utils.execScript(Dsq.jsonData.settings.disqus_url + '/forums/scobleizer/queueurl.js');
	};
};

Dsq.CNN = function() {
	var obj = {};

	obj.authenticate = function() {
		var url = Dsq.jsonData.settings.disqus_url + "/saml/cnn/try/";
		Dsq.Utils.postToUrl(url, {'target': document.location}, true);
	};

	return obj;
}();


if(Dsq.Utils.ie6) {
	(function() {
		DSQ_HEADER_AVATAR_RE = /<div class="dsq-header-avatar"(.*?)>/gim;
		Dsq.Templates.registerFilter('postPrependHeader', function(html, post_id) {
			// Add "onmouseout" for dsq-header-avatar for dropProfile
			// functionality since IE6 cannot use :hover.
			function _headerAvatarReplace(content, inner, _unused, html) {
				return '<div class="dsq-header-avatar" '
					+ inner
					+ ' onmouseout="Dsq.Post.dropProfile(' + post_id + ')">';
			}
			html = html.replace(DSQ_HEADER_AVATAR_RE, _headerAvatarReplace);
			return html;
		});
	})();
}





	// TODO: Move Seesmic code outside of the main script.  Don't let this script clobber the global namespace.
	if(typeof seesmic == 'undefined') { var seesmic = {}; }
	seesmic.widget = new function () {
		this.callback = function (data) {
			playerVersion = data.disqusplayer;
		};
	};

	
	var scriptEl = document.createElement('script');
	scriptEl.setAttribute('type', 'text/javascript');
	scriptEl.setAttribute('src', 'http://seesmic.com/version.js?callback=seesmic.widget.callback');
	document.getElementsByTagName('head')[0].appendChild(scriptEl);

	
	var scriptEl = document.createElement('script');
	scriptEl.setAttribute('type', 'text/javascript');
	scriptEl.setAttribute('src', 'http://media.disqus.com/javascript/library/swfobject.js');
	document.getElementsByTagName('head')[0].appendChild(scriptEl);

	function see_play_video(_videoUri, _add) {
		var swf = !!playerVersion ? playerVersion : 'http://seesmic.com/embeds/StandalonePlayer.swf';

		flashcontentDiv = Dsq.$(_videoUri + '_content');
		previewDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_preview');
		hideDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_hide');
		showDiv = Dsq.$('dsq-seesmic-' + _videoUri + '_show');
		if(_add) {
			// push flash widget
			var so = new SWFObject(swf, 'sotester', '300', '270', '9', '#000000');
			so.addVariable('video', _videoUri);
			so.addParam('allowFullScreen', 'true');
			so.addParam('allowScriptAccess','always');
			so.useExpressInstall('swfobject/expressinstall.swf');
			so.write(_videoUri + '_content');

			previewDiv.style.display = 'none';
			hideDiv.style.display = 'block';
			showDiv.style.display = 'none';
		}
		else {
			flashcontentDiv.innerHTML = '';
			previewDiv.style.display = 'block';
			hideDiv.style.display = 'none';
			showDiv.style.display = 'block';
		}
	};





(function() {
	//
	// Load theme.  This overrides the base templates with template functions
	// from the respective themes.
	//
	if (Dsq.jsonData.integration.theme == 4) {
		var theme = 'narcissus';
		// HACK: Set variable on window to use post message.
		window.disqus_use_postmessage = true;

		
		for(var prop in Dsq.Themes[theme]) {
			if(Dsq.Themes[theme] && Dsq.Themes[theme].hasOwnProperty(prop)) {
				Dsq.Templates[prop] = Dsq.Themes[theme][prop];
			}
		}
		
		for(var prop in Dsq.Post) {
			if(Dsq.Themes[theme] && Dsq.Themes[theme].hasOwnProperty(prop)) {
				Dsq.Post[prop] = Dsq.Themes[theme][prop];
			}
		}
	}

	//
	// Register templates.  This must be done after all themes are loaded.
	//
	Dsq.Templates.registerTemplate('authPost', Dsq.Templates.authPost);
	Dsq.Templates.registerTemplate('header', Dsq.Templates.header);
	Dsq.Templates.registerTemplate('footer', Dsq.Templates.footer);
	Dsq.Templates.registerTemplate('trackbacks', Dsq.Templates.trackbacks);
	Dsq.Templates.registerTemplate('reactions', Dsq.Templates.reactions);
	Dsq.Templates.registerTemplate('prependPost', Dsq.Templates.prependPost);
	Dsq.Templates.registerTemplate('appendPost', Dsq.Templates.appendPost);
	Dsq.Templates.registerTemplate('postPrependHeader', Dsq.Templates.postPrependHeader);
	Dsq.Templates.registerTemplate('postAppendHeader', Dsq.Templates.postAppendHeader);
	Dsq.Templates.registerTemplate('preBody', Dsq.Templates.preBody);
	Dsq.Templates.registerTemplate('postBody', Dsq.Templates.postBody);
	Dsq.Templates.registerTemplate('postFooter', Dsq.Templates.postFooter);
	Dsq.Templates.registerTemplate('_popupGeneric', Dsq.Templates._popupGeneric);
	Dsq.Templates.registerTemplate('voted', Dsq.Templates.voted);
	Dsq.Templates.registerTemplate('popupProfile', Dsq.Templates.popupProfile);
	Dsq.Templates.registerTemplate('postBox', Dsq.Templates.postBox);
	Dsq.Templates.registerTemplate('pagination', Dsq.Templates.pagination);
	Dsq.Templates.registerTemplate('postComment_onSuccess', Dsq.Templates.postComment_onSuccess);

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-9682229">\
	 <div id="dsq-comment-header-9682229" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682229" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682229" href="http://garyjday.net/" target="_blank" rel="nofollow">GJD</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682229" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682229" class="dsq-comment-message">It\'s just a happy clappy way of protecting you from perverts and spammers I guess.<br>No biggy eh?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682230">\
	 <div id="dsq-comment-header-9682230" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682230" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682230" href="http://wroxblog.typepad.com/" target="_blank" rel="nofollow">Jim Minatel</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682230" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682230" class="dsq-comment-message">Robert: It seems that "Spock" may have some of the extensibility of contact tagging you are looking for, by treating the "how are you related to this person/how do you know them" as a tag, rather than a pre-defined set of choices. I haven\'t played with it enough to be sure yet.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682231">\
	 <div id="dsq-comment-header-9682231" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682231" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682231" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682231" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682231" class="dsq-comment-message">Facebook intentionally makes it hard to browse people and add contacts. They wanted to keep the site free from robots and fake profiles like MySpace. That\'s why so much data is not viewable from the web.<br>Spidering Facebook can be a real pain.<br><br>As for adding people without their approval, it would destroy the hierarchy of the FOAF concept as described in the friendster patent.<br><a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&amp;Sect2=HITOFF&amp;p=1&amp;u=%252Fnetahtml%252FPTO%252Fsearch-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;co1=AND&amp;d=PTXT&amp;s1=7%2C069%2C308.PN.&amp;OS=PN/7%2C069%2C308&amp;RS=PN/7%2C069%2C308" rel="nofollow">http://patft.uspto.gov/netacgi/nph-Parser?Sect1...</a><br><br>If that were allowed it would be a public contact manager and not a social network.<br>Most social networking sites will allow you to add people who did not approve you in favorites list.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682232">\
	 <div id="dsq-comment-header-9682232" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682232" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682232" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682232" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682232" class="dsq-comment-message">GJD: to a guy like me it\'s a MAJOR biggie. I have more than 4,000 contacts over on Twitter.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682233">\
	 <div id="dsq-comment-header-9682233" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682233" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682233" href="http://garyjday.net/" target="_blank" rel="nofollow">GJD</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682233" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682233" class="dsq-comment-message">Yeah I guess that\'s a lot.<br>Glad I\'m not you.<br>I have enough to do.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682234">\
	 <div id="dsq-comment-header-9682234" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682234" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682234" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682234" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682234" class="dsq-comment-message">Chris: I know some of the reasons they do it, but it still adds up to bad behavior on their part. The fact it works is a pretty cool hack of human behavior (I\'m sure that the person who ends up with 700 contacts in Facebook feels pretty proud of herself cause it took so much work).<br><br>If you could see my Outlook contacts you\'d understand that THOSE are far tighter ties than any online social network.<br><br>The fact that you see them as different somehow explains just how bad these networks are. Now we\'re justifying THEIR bad designs to ourselves as "FEATURES." And we don\'t even realize it!<br><br>Human beings are funny animals, that\'s for sure!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682235">\
	 <div id="dsq-comment-header-9682235" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682235" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682235" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682235" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682235" class="dsq-comment-message">GJD: I have 6,000 business cards I\'ve collected over the past six years too. And THOSE are really the best social contacts I have. I wish I could scan those into Facebook!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682236">\
	 <div id="dsq-comment-header-9682236" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682236" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682236">meechwings</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682236" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682236" class="dsq-comment-message">It\'s even worse on myspace.  At least on Facebook there are categories for what school/company/area a person is affiliated with.<br>With myspace the only distinction is whether someone is your friend or not (though everyone is a part of your "extended network"...still haven\'t figured out what that\'s all about), and you can\'t even say how you know a particular person.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682237">\
	 <div id="dsq-comment-header-9682237" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682237" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682237" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682237" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682237" class="dsq-comment-message">"Now we’re justifying THEIR bad designs to ourselves as “FEATURES.”"<br><br>Facebook was originally only for students. And to separate themselves from MySpace, they created super tight security in regards to keeping profiles private. To keep the .edu\'s not from community college feel like they were joining a respectful webstablishment.<br><br>When they went public, they simply kept the same format regardless of their new audience. It\'s not like they\'re going to code a whole new framework just for the new people.<br><br>The whole outlook integration you\'re looking for wreaks of Microsoft. You should check out <a href="http://spaces.msn.com" rel="nofollow">spaces.msn.com</a> if you want something that integrates into your MS products suite instead of Facebook, "a 3rd party Windows app". Kidding, but I\'m sure Gates would describe it exactly that way.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682238">\
	 <div id="dsq-comment-header-9682238" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682238" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682238" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682238" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682238" class="dsq-comment-message">Chris: Facebook should "embrace and extend." Heheh.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682239">\
	 <div id="dsq-comment-header-9682239" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682239" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682239" href="http://thisoldcode.net/" target="_blank" rel="nofollow">Aaron Fischer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682239" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682239" class="dsq-comment-message">Its a social network for friends,  If you want something else you can find a VC ;)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682240">\
	 <div id="dsq-comment-header-9682240" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682240" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682240" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682240" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682240" class="dsq-comment-message">Facebook is already worth a fortune. They don\'t have to do anything. They already have the user data and traffic that makes a social networking site worth something.<br><br>If you read Digg recently you would have seen an article on the front page about Micheal Moore supporting the piracy of his own movie(which is already on newsgroups). Why would he do that? He\'s already rich and doesn\'t worry about it. Facebook could make a windows tray monitor/importer/thingy to work with the Outlook API, but there is no reason for them to do so.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682241">\
	 <div id="dsq-comment-header-9682241" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682241" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682241" href="http://www.loudmouthman.com/" target="_blank" rel="nofollow">Nik Butler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682241" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682241" class="dsq-comment-message">Robert, quite correct, and for the record you  should remember me from Twitter in those days before Leo Leapt and Left ! No we havent met for a beer, and I havent swapped a corporate lunch with you  ( unless you hit Gatwick that is  ) but the occasional @scobleizer/@loudmouthman chat on twitter in my mind defines some level of connection.<br><br>Its topical that just last week I had a friend request from  person on Facebook whom I had never met, talked to or even shared a dialog of any sort with. They just were a friend of a friend. When I explained my choice for turning him down he was very very cool about it.<br><br>It did lead me to wonder though If I could not somehow segregate those networks into close, distant , work and  internet contacts.<br><br>The net is making celebrities without the usual grooming and profiling of the traditional media. Social networks are going to go a long way to help those advertisers find new models on which to define who best  represents them.<br><br>The first online social network to integrate friend connections with credibility and value will have the next adwords like  product and revenue generator on their hands for sure.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682242">\
	 <div id="dsq-comment-header-9682242" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682242" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682242">Matt Eason</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682242" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682242" class="dsq-comment-message">It\'s been a while since I added a friend on Facebook, but I don\'t remember *having* to enter how I knew them. Could\'ve sworn there was a "skip this question" button or similar.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682243">\
	 <div id="dsq-comment-header-9682243" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682243" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682243">GL</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682243" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682243" class="dsq-comment-message">"I, like Jon, hate that I have to enter in Facebook how I know Fred. I don’t remember how I met Fred. It was a link from some blogger. I don’t remember who. So, I just put down “met randomly.”"<br><br>But... you don\'t have to fill that info out at all.  I rarely do.  Look at the buttons at the bottom - I think one is called "Skip this step".  I could be wrong about the text on the button, but there\'s definitely an easy way of not filling out that information.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682244">\
	 <div id="dsq-comment-header-9682244" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682244" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682244">d2</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682244" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682244" class="dsq-comment-message">Its really a simple answer, these services are not for you.  why should any of them have to “embrace and extend” to old people :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682245">\
	 <div id="dsq-comment-header-9682245" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682245" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682245">Jonathan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682245" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682245" class="dsq-comment-message">As its been said above, you dont have to add anything.<br><br>But doing so adds another level of intricacy to your network.  Click on Friends &gt; Social Timeline to see an example of this.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682246">\
	 <div id="dsq-comment-header-9682246" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682246" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682246" href="http://www.mikel.org/" target="_blank" rel="nofollow">Michael</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682246" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682246" class="dsq-comment-message">They\'re clearly privileging a specific kind of relationship - relationships of a social nature between friends and acquaintances. Other relationships don\'t really fit, and I doubt they will ever fit. I think one of the things we\'ve learned about such social networks is that there is no "one network to rule them all." Features that are important - critical - for one kind of network would be damaging to others.<br><br>I think it\'s clearly a feature, not a bug, that Facebook makes it very difficult - compared to Orkut and some of the older ones as well as LinkedIn - to "find" new friends. I like that. I quit using those other systems because people\'s Friends\' lists were worthless - I had NO confidence that person X actually has (or had) a relationship with person Y. They were more like contests to collect people than true reflections of people\'s social networks.<br><br>LinkedIn, on the other hand, would be worthless if you couldn\'t easily make new connections - but that only works if each person\'s contact list is free of chaff. Consequently, they have built a whole system around introductions and finding distant contacts while maintaining the integrity of the network and investing every user in that as well.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682247">\
	 <div id="dsq-comment-header-9682247" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682247" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682247">ZW</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682247" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682247" class="dsq-comment-message">You don\'t have to put down how you know/met the person - in fact 90% of people just click skip.  Should look into that.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682248">\
	 <div id="dsq-comment-header-9682248" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682248" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682248" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682248" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682248" class="dsq-comment-message">d2: if you look at my Facebook contacts (several hundred) you\'ll see that almost all of them are "old folks." In fact my 13-year-old son tried to sign up for Facebook and it wouldn\'t let him.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682249">\
	 <div id="dsq-comment-header-9682249" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682249" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682249" href="http://dyerweb.com/blog" target="_blank" rel="nofollow">dan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682249" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682249" class="dsq-comment-message">Haha,<br>Robert Scoble You crack me up. I love how you openly confess feelings for your wife, rock on. I\'m going to start a social network for couples just so I can send sweet nothings to my wife. Nah that\'s too much work, I\'ll just use email.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682250">\
	 <div id="dsq-comment-header-9682250" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682250" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682250" href="http://getgood.typepad.com/" target="_blank" rel="nofollow">Susan Getgood</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682250" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682250" class="dsq-comment-message">I agree -- the how do you know this person clearly reflects FB\'s origins. How many business folks do you know who will indicate "We hooked up?" Assuming they actually understand what that means :-) The other drawback for business use is that it is difficult to find people if you don\'t know their email address. LinkedIn on the other hand, has that down cold, but lacks the social side of things. I wrote about this last week. Like one of your commenters above says, it\'s an oppty for a developer, either through FB\'s API or from learning from the conversation and developing a new aggregator that does what we want.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682251">\
	 <div id="dsq-comment-header-9682251" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682251" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682251" href="http://shannonclark.wordpress.com/" target="_blank" rel="nofollow">shannonclark</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682251" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682251" class="dsq-comment-message">Robert,<br><br>I agree - which is one reason why with my social app, NELA (Never Eat Lunch Alone) we are deliberately not focusing on building yet-another-social-network. Instead we are focusing on tools to help you manage and use your contacts in a richer manner (and not just for individuals - for companies as well).<br><br>Oh and we are working on putting together a solution for that pile of 6000 business cards as well (a for fee service to scan, enter, and even research those contacts resulting in a portable contact list importable into tools such as NELA, but also Outlook or gmail).<br><br>I think it is also really important for social network designers to think about context - and making it visible (and also not making it either/or) - i.e. I have one set of friends to whom I turn to for restaurant recommendations - with some exceptions they are not who I ask for an introduction to a VC or potential client. I know 1000\'s of people, the set of people who I would invite to my home for brunch while large, is not at all everyone I know.<br><br>And the set, as Nick Douglas amusing twittered from brunch at my place yesterday, with whom I might be interested romantically is smaller still.<br><br>From an application designer perspective, however, there are some serious complications in tying behaviors to arbitrary tags. I suspect the best case is some checklist of possible actions/access levels - and a mapping of them to your tags. But with some reasonably smart defaults which the majority of people would use (i.e. something like "intimate friends", "family", "social friends", "business contacts", "public" might be sufficient, perhaps even too many).<br><br>Shannon</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682252">\
	 <div id="dsq-comment-header-9682252" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682252" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682252" href="http://creativesage.wordpress.com/" target="_blank" rel="nofollow">creativesage</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682252" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682252" class="dsq-comment-message">Hi Robert,<br><br>I agree with your comments on Facebook, having gone through this frustrating problem a number of times now when trying to add contacts. It seems that it would not be too difficult for them to tweak it just a little and add one or two questions:<br><br>- Is this person a business contact? (And then just let you add instead of asking where you met them)<br><br>- Did you "meet" this person online? (For Facebook\'s marketing info, they might ask where, but I would rather not have to answer that question.)<br><br>I think it\'s likely they\'ll make these changes eventually, hopefully sooner. BTW, I hope you\'ll add me as a "friend" on Facebook, since we have actually met in person now. :-)<br><br>On Ning, you have the option of creating a private group and having the separate option of adding friends who are not in that specific group (or not). You can create private groups on Facebook, but the whole contact thing needs to be easier, like Ning\'s is now.<br><br>Thanks for bringing this to Facebook\'s attention.<br><br>Cathryn Hrudicka, Chief Imagination Officer<br>Creative Sage</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682253">\
	 <div id="dsq-comment-header-9682253" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682253" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682253" href="http://www.peteholiday.com/" target="_blank" rel="nofollow">Pete</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682253" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682253" class="dsq-comment-message">"I, like Jon, hate that I have to enter in Facebook how I know Fred."<br><br>You "have to"?<br><br>How is that? Aren\'t you allowed to skip the step where that is asked? I\'ve never been forced to define a relationship on Facebook. Is that a difference between the "college" accounts and the other "networks"?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682254">\
	 <div id="dsq-comment-header-9682254" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682254" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682254">Hanan Cohen</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682254" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682254" class="dsq-comment-message">Everyone Is Miscellaneous</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682255">\
	 <div id="dsq-comment-header-9682255" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682255" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682255" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682255" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682255" class="dsq-comment-message">Pete: I was scared of hitting "skip this step." I thought it might do something nasty like relegate your contact into some sort of limbo or some sort of second-rate status. Or, even worse, I thought it might email you to tell you that I didn\'t even think enough of you to tell Facebook how we met.<br><br>Funny that on the mobile app it doesn\'t even have this choice. It just asks you to "confirm" when people ask you to add them to your Facebook.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682256">\
	 <div id="dsq-comment-header-9682256" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682256" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682256" href="http://podsanity.wordpress.com/" target="_blank" rel="nofollow">dperry1ma</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682256" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682256" class="dsq-comment-message">I love the tags idea... it has special merit when you have multiple networks of people which overlap like Venn diagrams. It would be ideal to have social networks map more closely to reality...people can and do fit into multiple groups in your life.<br><br>If the feature isn\'t there to help you communicate with and build your networks, then what is it really there for?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682257">\
	 <div id="dsq-comment-header-9682257" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682257" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682257" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682257" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682257" class="dsq-comment-message">Shannon: I hate checklists. They force me to choose something right away which is why Facebook tricked me into thinking something bad would happen by choosing "skip this step."<br><br>I\'d rather just "confirm" or "deny" and then later add tags about each person that I make up. You have no idea what I want to put into my social network about you. For you, for instance, I\'d want to use these tags:<br><br>NICE<br>PROGRAMMER<br>SMART<br>RELIABLE<br>CONNECTOR<br>ENTREPRENEUR<br>PHOTOWALKER<br>SAN FRANCISCO<br>NELA.COM<br>THAI<br>COMPUTER HISTORY<br><br>Now, how many of those tags mean what you think they mean?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682258">\
	 <div id="dsq-comment-header-9682258" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682258" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682258" href="http://www.baratunde.com/blog" target="_blank" rel="nofollow">Baratunde Thurston</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682258" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682258" class="dsq-comment-message">you\'ve done it my twitter friend! very well articulated.<br><br>btw, in facebook you can skip the "how do i know this person" form</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682259">\
	 <div id="dsq-comment-header-9682259" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682259" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682259" href="http://podsanity.wordpress.com/" target="_blank" rel="nofollow">dperry1ma</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682259" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682259" class="dsq-comment-message">Robert,<br><br>What\'s important is that the tags mean what you thing they should mean....<br><br>Presumably, anyone networking through you should either understand enough about you to appreciate the context for your tags, or they should be willing to spend the time to investigate the connection.<br><br>Duncan</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682260">\
	 <div id="dsq-comment-header-9682260" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682260" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682260" href="http://blog.nicolamattina.it/" target="_blank" rel="nofollow">Nicola Mattina</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682260" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682260" class="dsq-comment-message">It\'s funny: Facebook is spreading in Italy and into the italian blogsphere there is a similar conversation: ie. someone wonders how is it possibile that there is not "we met online" option...<br>Managing social networks (i partecipate to Linkedin, Facebook, Ning, Flickr, Neurona, Twitter and others I do not even remember) means two thing: managing your identity and managing your contacts... These are very interesting topics :-)<br>Ciao... Nicola</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682261">\
	 <div id="dsq-comment-header-9682261" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682261" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682261" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682261" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682261" class="dsq-comment-message">Imagine that. The problem is that this is over 3 years old.<br><a href="http://www.tagworld.com/" rel="nofollow">http://www.tagworld.com/</a><br><br>I had written back &amp; forth to the owner Evan. He\'s actually pretty cool BUT<br><a href="http://www.alexa.com/data/details/traffic_details?url=tagworld.com" rel="nofollow">http://www.alexa.com/data/details/traffic_detai...</a><br>Your idea didn\'t make it in the real world.<br><br>Sorry Scoble.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682262">\
	 <div id="dsq-comment-header-9682262" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682262" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682262" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682262" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682262" class="dsq-comment-message">There used to be Tag clouds all over tagworld in 2005(just like the old Digg). They must have been so unpopular that they took them down. At any rate, that\'s why the site WAS called tagworld. Because it was a bunch of tag clouds to view profiles.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682263">\
	 <div id="dsq-comment-header-9682263" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682263" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682263" href="http://wantsy.blogspot.com/" target="_blank" rel="nofollow">Robert Dewey</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682263" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682263" class="dsq-comment-message">IDK, Chris.<br><br>TagWorld is just like every other social network... I think Robert is referring to something more along the lines of "add-and-run", where people can be within the network without even visiting it.<br><br>In other words, Geni, but for everyone you know.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682264">\
	 <div id="dsq-comment-header-9682264" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682264" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682264" href="http://wantsy.blogspot.com/" target="_blank" rel="nofollow">Robert Dewey</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682264" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682264" class="dsq-comment-message">As for tags... simply attaching a tag to your contact is pretty useful. TagWorld used tags in a completely different way (I was a member there) that made tagging actually difficult.<br><br>I wanna input my friends e-mail address (or some point of contact) and tag him as "lawyer". If he doesn\'t visit the "service", no harm done - he\'s still "in the grid" :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682265">\
	 <div id="dsq-comment-header-9682265" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682265" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682265" href="http://www.bladam.com/" target="_blank" rel="nofollow">Adam</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682265" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682265" class="dsq-comment-message">Hmm... I tried to trackback ya, but it may have gotten speaten (eaten as spam).<br><br>Anyway, I just wanted to give you an overall thumbs up on your observations regarding friends (vs. connections, etc.) and also respectfully note that I wrote a similar rant a few weeks back:<br>"<a href="http://www.bladam.com/main/entry/grouping-on-social-networks/" rel="nofollow">All “friends” aren’t created equal! (why we need better relationship marking in social networks)</a>."</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682266">\
	 <div id="dsq-comment-header-9682266" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682266" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682266" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682266" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682266" class="dsq-comment-message">Well. I am going to put this idea to the test. I am going to put up an install of FOSS mediawiki where users can create their own wiki, then link them all together as a social network. Using our SiteSpaces code base which is also PHP.<br><br>It should only take a day or so to modify the media wiki code and wire it into a fresh sitespaces install.<br><br>I think it\'s a dumb idea, but I\'m always willing to make money off of anything.<br><br>What you\'re talking about is essentially a personal wiki.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682267">\
	 <div id="dsq-comment-header-9682267" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682267" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682267" href="http://www.livedigitally.com/" target="_blank" rel="nofollow">Jeremy Toeman</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682267" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682267" class="dsq-comment-message">Robert - good post, but I find your use of the term \'Nazi\' here distressing.  It massively diminishes the term from what it is, aka "brutal murderers", into something else, like "strict people".<br><br>I know lots of people do this, and yes, I counter as many as I can.  The softer the term gets, the easier it gets to forget the atrocities.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682268">\
	 <div id="dsq-comment-header-9682268" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682268" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682268" href="http://pragatiagarwal.wordpress.com/" target="_blank" rel="nofollow">Pragati</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682268" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682268" class="dsq-comment-message">"Dave Winer says that Facebook hasn’t been designed with adults in mind. That certainly is true."<br><br>It certainly hasn\'t been designed with college students in mind either. I totally dislike it when that annoying window opens where I need to not only enter how I know that person, but also from where, when etc etc etc...hmmppff! Yes, there is a button that says "Skip This Step", but I don\'t want to click on it either. I am a lazy internet surfer! Zuckerburg, are you reading this?<br><br>There is this new "application" called "Top Friends" or "star friends"..something like that. I got a request today to add that application which enables me to quantify my friendship with someone. 4 stars, 3 stars etc. What if I don\'t know what star it is?! Why not be a little innovative and choose planets?<br><br>Another one- Fortune Cookie, Horoscope sharing etc. I think this application sharing madness will drive me insane. In fact, I log in much lesser now because I know that every time I log in, I\'ll have to deal with those "add this application" screens.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682269">\
	 <div id="dsq-comment-header-9682269" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682269" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682269" href="http://www.baratunde.com/blog" target="_blank" rel="nofollow">Baratunde Thurston</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682269" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682269" class="dsq-comment-message">I\'d like to add that one of my biggest frustrations with MySpace is that it fails at its basic communications function. If you have more than a few hundred friends, it is IMPOSSIBLE to find them and send them a message. I recently asked one of my friends (in real life) how he would send me a message through myspace. his response:<br><br>"well, i\'d go to a friend\'s page i knew we had in common and see if you commented on their page, then message you that way."<br><br>how ass backwards IS that? Stop trying to cram Fox TV shows down my throat and focus on the basics of what social networking actually is. LET ME NETWORK, SOCIALLY, and chill a bit on trying to be a "media" company<br><br>back to you Scoble, i LOVE your idea of tagging contacts within a social network, not just because it\'s distinct from the "how do you know this person" question but because those tags can change and grow over time as your life changes and grows.<br><br>I would tag some people SXSW for the past two years, but this year need to add a Gnomedex tag.<br><br>You should send your complaints to the facebook folken. they\'ve listened in the past.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682270">\
	 <div id="dsq-comment-header-9682270" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682270" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682270" href="http://www.spinmartin.com/" target="_blank" rel="nofollow">Spin Martin</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682270" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682270" class="dsq-comment-message">"Skip this step" heh</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682271">\
	 <div id="dsq-comment-header-9682271" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682271" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682271" href="http://ijab.blogspot.com/" target="_blank" rel="nofollow">Westy</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682271" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682271" class="dsq-comment-message">My idea for the last few months has been that exactly this does happen.  Here\'s how I see [hope] it happens...<br><br>Facebook acquires LinkedIn and Geni.  You now can set whether someone is your family (Geni), a friend (Facebook), or a business associate (LinkedIn).  Just now all the options would be via one platform (Facebook, which would integrate the other networking sites).  You still have one contact list, but with different contact types.  Plus, you get the best features of the other networks (the Flash chart showing your family tree at Geni and the business savvy/networking of LinkedIn) and the social networking superiority of Facebook.<br><br>When you meet Mark, Robert, can you ask him if it\'s a possibility?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682272">\
	 <div id="dsq-comment-header-9682272" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682272" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682272" href="http://www.devel.co.uk/" target="_blank" rel="nofollow">Paul Cooper</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682272" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682272" class="dsq-comment-message">&gt; So, what do I want? I want a social network that just<br>&gt; lets me add contacts. Lets me add them for any reason.<br><br>What I would like is a way of defining contacts in my addressbook and then sharing that with the various sites (Facebook, LinkedIn, Twitter, etc) rather than importing / export N times and trying to keep it all in sync.<br><br>But it seems like Identity is like the Higgs boson of the internet - something we keep searching for but never quite finding.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682273">\
	 <div id="dsq-comment-header-9682273" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682273" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682273" href="http://www.horsepigcow.com/" target="_blank" rel="nofollow">Tara Hunt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682273" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682273" class="dsq-comment-message">The problem here is that everyone has different ways of defining their \'friends\' online. You have 4,000 \'friends\' here and want to \'tag\' everyone there? That\'s very different behaviour. Your 6,000 business cards? Those are friends? Man, I have bags full that I finally tossed. Anyone worth following up with, we usually followed up with immediately one way or another. That was probably about 1/10th of the cards. The number of people who shove their card under my nose with no follow up is astounding.<br><br>The problem with \'fixing\' this issue is that it will \'fix\' it for a handful, but break it for others.<br><br>I agree that Facebook has no options that ever work for me, so I generally choose the random option and type in a story. I find that useful to a degree (I am now at the point that I forget who is who...beyond about 150, I can\'t possibly keep track), but, you are right, it doesn\'t encompass adult relationships.<br><br>Have you ever seen the Microformat XFN? <a href="http://gmpg.org/xfn/" rel="nofollow">http://gmpg.org/xfn/</a><br><br>Wordpress uses this for links - and you can use combinations of types of relationships. For instance, Chris (factoryjoe) is:<br><br>friend, met, coworker, co-resident, sweetheart<br><br>It doesn\'t say how I met Chris, but it defines my current relationship with him.<br><br>How I met someone is very anecdotal and personal and has endless possibilities...and, you are right, this is where tagging can be very helpful.<br><br>So, if I link to Chris, I can say:<br><br>"a href="http://www.factoryjoe.com/blog" rel="friend, met, coworker, co-resident, sweetheart" tag="designer, citizenagency, factoryjoe, sanfrancisco, talented, barcamp, coworking, microformats, openid, opensource""<br><br>But our actual story is much more complex than that and can never be boiled down to a tag or a drop down. However, for someone I met at a conference, I can tag that person with that conference. If the relationship gets more complex, I may have to remove the conference reference as it becomes meaningless.<br><br>Personally, I agree with Jeremy Toeman regarding the misuse of the Nazi term (remember Godwin\'s Law: <a href="http://tinyurl.com/6h49c" rel="nofollow">http://tinyurl.com/6h49c</a>). Perhaps social networks haven\'t solved the issue very well. I agree. Personally, I like some of the boundaries these SNs set. I use them for what I use them. LinkedIn does my professional network stuff. Facebook helps me keep in contact with old friends. Twitter is my microblogging tool. I have slightly different networks for all of them and my relationships aren\'t all transferable.<br><br>Okay...so what I\'ve said in a very long-winded comment is that the solution isn\'t simple. There are both positive and negative results from closed social networks. And there are ways in which people have already been discussing these issues for many years that are out there.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682274">\
	 <div id="dsq-comment-header-9682274" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682274" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682274" href="http://chrisbrogan.com/" target="_blank" rel="nofollow">Chris Brogan...</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682274" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682274" class="dsq-comment-message">I\'m a joiner. It\'s part of what I do. But I\'m getting to the point where it truly is fatigue, filling out yet another profile. Can\'t we just agree? This feels like multiple railroad gauges. Doesn\'t it? If this were locomotion, which it is not, but it still is the transport of goods and services, we\'d have those crazy old railroad days, where everything was screwed by way of multiple gauges.<br><br>BTW, LinkedIN just got made because I tried to blanket invite all the folks from all the other various social networks. They\'re the only ones who \'penalize\' me for trying to load up a bunch of friends.<br><br>Ah, social networks.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682275">\
	 <div id="dsq-comment-header-9682275" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682275" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682275" href="http://planyp.us/" target="_blank" rel="nofollow">Yan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682275" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682275" class="dsq-comment-message">Yeah I think as several people have mentioned, tagging to me is a very passable and usable solution to the \'friend for a reason\' dillema. When I make plans on <a href="http://planyp.us" rel="nofollow">Planypus</a> I have friends who are tagged as "fnd" (friday night dinner) and friends tagged as "sports" or friends tagged as "bloggers" so that when I have events pertaining to any of those subsets, I can simply share my plans with them with one click. Pretty useful.<br><br>I don\'t know why twitter hasn\'t done this, and in fact this is the limiting factor that prevents me from using twitter as it is intended. Instead I\'ve created a private twitter account for my Planypus coworkers so we can twitter in the office, and then I have another public twitter account. If twitter supported tags it would give me a quick and dirty way to twitter to a particular group of people (it could still default to public giving me the same functionality)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682276">\
	 <div id="dsq-comment-header-9682276" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682276" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682276">channing</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682276" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682276" class="dsq-comment-message">The "how you know someone" feature of Facebook is highly optional - you can easily skip it and I think that at least half of Facebook\'s user base does.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682277">\
	 <div id="dsq-comment-header-9682277" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682277" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682277" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682277" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682277" class="dsq-comment-message">I could add simple tagging to our social networking software and it wouldn\'t change anything. It would be like TagWorld. People don\'t visit social networks for features.<br>I took out a domain, <a href="http://malliki.com" rel="nofollow">malliki.com</a>. As soon as the rest of our server gets here and I put it in the datacenter I\'ll make it live. But even with a cross between wikipedia and friendster, something that\'s new and pointless. I don\'t see people going to it.<br><br>If Scoble gave me either the best social networking software on earth or 5 real well known celebrity profiles including Paris Hilton. As somebody who wants to make money off of it, I would take the celebrities in a second. Ordinary people do not give a crap about the software.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682278">\
	 <div id="dsq-comment-header-9682278" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682278" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682278" href="http://wantsy.blogspot.com/" target="_blank" rel="nofollow">Robert Dewey</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682278" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682278" class="dsq-comment-message">While everybody is moaning that e-mail is dying, social network messaging is thriving, yet it\'s nearly identical to e-mail. Why is it doing so well, but e-mail isn\'t?<br><br>Because social network messaging is a multi-degreed form of communication and it\'s easy to access contacts (most of the time). The problem is that social network messaging can\'t scale because it\'s a closed network. How useful would Gmail be if you could only communicate with people on the Gmail domain?<br><br>Chris is right - people don\'t visit for features, they visit for communication. Why not take the Google approach of less is more? Stick to communication. Kill the profiles, use open protocols, make it easy to find needed contacts, and make the system opt-out versus opt-in.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682279">\
	 <div id="dsq-comment-header-9682279" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682279" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682279" href="http://wantsy.blogspot.com/" target="_blank" rel="nofollow">Robert Dewey</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682279" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682279" class="dsq-comment-message">Chris, why wouldn\'t people go for it? First, if their friends use it, then they use it. Period. Doesn\'t matter. That\'s like me putting you in my address book - there isn\'t anything you can do about it.<br><br>I would say Plaxo is pretty successful with over 18 million users. Who would have thought that keeping your contact information up-to-date was so "sexy". As far as I\'m concerned, Plaxo is "address book 1.0". We need "address book 2.0" that takes e-mail past the first-degree medium that it is.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682280">\
	 <div id="dsq-comment-header-9682280" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682280" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682280" href="http://www.scottsigler.net/" target="_blank" rel="nofollow">Scott Sigler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682280" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682280" class="dsq-comment-message">Can you just expound on the friend stories about Amsterdam? I bet there\'s a doosy or two in there ...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682281">\
	 <div id="dsq-comment-header-9682281" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682281" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682281" href="http://blogs.opml.org/amyloo" target="_blank" rel="nofollow">Amyloo</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682281" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682281" class="dsq-comment-message">"It’s what COULD Fred do for me in the future?"<br><br>Is that what it\'s all about?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682282">\
	 <div id="dsq-comment-header-9682282" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682282" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682282" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682282" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682282" class="dsq-comment-message">Amyloo: a lot of it is, yes. You should look at LinkedIn. It\'s the ultimate of this kind of behavior. "How do I use XXX to get my resume in front of YYY."</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682283">\
	 <div id="dsq-comment-header-9682283" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682283" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682283" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682283" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682283" class="dsq-comment-message">Scott: want to go to Amsterdam? Then you\'ll be able to see just what happens. Some things will never get discussed online and are meant just for Face-to-Face meetings. :-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682284">\
	 <div id="dsq-comment-header-9682284" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682284" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682284" href="http://www.douglaskarr.com/" target="_blank" rel="nofollow">Douglas Karr</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682284" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682284" class="dsq-comment-message">"I\'m too old"... you made me laugh out loud!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682285">\
	 <div id="dsq-comment-header-9682285" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682285" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682285" href="http://avc.blogs.com/" target="_blank" rel="nofollow">fred wilson</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682285" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682285" class="dsq-comment-message">robert<br><br>lets go out for a beer and fix this problem. then we\'ll  be real friends!<br><br>fred</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682286">\
	 <div id="dsq-comment-header-9682286" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682286" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682286" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682286" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682286" class="dsq-comment-message">"Kill the profiles, use open protocols, make it easy to find needed contacts, and make the system opt-out versus opt-in."<br><br>I\'m reposting this link so you can read it well.<br><a href="http://freemyspace.com/history.htm" rel="nofollow">http://freemyspace.com/history.htm</a><br><br>I\'ve met some of the people behind these sites. They are not interested in rfc standards ect... They are not interested in the same goals as google.<br><a href="http://collect.myspace.com/misc/news.html" rel="nofollow">http://collect.myspace.com/misc/news.html</a><br><br>MySpace built up their membership not only by getting celebs, copying friendster ect.. But they had parties, physical parties in LA, and other places. Then they went and advertised on comcast channels.<br><br>Most of the people involved in Social networking are not interested in the technical details. Their programmers are not the best programmers because it\'s not something that you can say is an accomplishment really. No offense to Duc, he did a great job with the ugly mess that is cold fusion.<br><br>To understand why the sites are the way they are, you kind of have to have met some of the people or at least talked to them. They\'re not the Kevin Rose type for the most part. They\'re the Kevin Pereira type.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682287">\
	 <div id="dsq-comment-header-9682287" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682287" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682287" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682287" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682287" class="dsq-comment-message">Fred: anytime! When will you be in San Francisco area soon?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682288">\
	 <div id="dsq-comment-header-9682288" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682288" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682288" href="http://jacksonfox.org/" target="_blank" rel="nofollow">Jackson Fox</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682288" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682288" class="dsq-comment-message">It\'s all about situational relevance -- you need to manage a large pool of professional contacts. I just want to keep in touch with my high school friends. Facebook doesn\'t need to support both of us, it\'s probably better that they don\'t. At the same time, if there isn\'t a site out there that meets your needs then there\'s a business opportunity.<br><br>Of course, there\'s the problem that my high school friends keep hopping networks, and I keep having to add them again and again. That\'s a real problem, and while I appreciate the ability to import my Gmail contacts into Facebook it isn\'t quite the same thing as importing my MySpace contacts.<br><br>Anyways, my point is that every SNS site has to choose: How will they model relationships? Will they try to support small networks or large networks? Will they encourage people to meet strangers or help people track down people they already know? Each of those decisions has implications in how the system can be used. Facebook made their decisions -- of course they might change their mind someday -- and those decisions lead to a system which might not work the way you want.<br><br>Honestly, it would suck if every SNS site worked the same way.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682289">\
	 <div id="dsq-comment-header-9682289" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682289" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682289" href="http://atmasphere.wordpress.com/" target="_blank" rel="nofollow">atmasphere</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682289" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682289" class="dsq-comment-message">No arguments here on your desires and issues with the friends bit.  A search would be great that worked on all the networks as well.<br><br>On the N95, you can actually save login details.  I\'ve found it always works for username - though not always for password.  If you\'ve saved the info, the way to call back your entry is by entering the first character and then pressing down, which will show your name.  You can select it and then your form info will fill.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682290">\
	 <div id="dsq-comment-header-9682290" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682290" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682290" href="http://doesthisthat.blogspot.com/" target="_blank" rel="nofollow">blr bytes</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682290" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682290" class="dsq-comment-message">You know, I\'ve been writing to Facebook support regarding the constant signing in, and they suggested I "...try clearing your mobile’s cache and cookies,<br>then try logging into m.facebook.com."<br><br>It did help. Once. It\'s most frustrating.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682291">\
	 <div id="dsq-comment-header-9682291" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682291" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682291">Anonymous</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682291" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682291" class="dsq-comment-message">People go apeshit about the feds being able to find out what book they checked out from the library but they\'ll freely populate a database with who all their friends are.<br><br>The line in the silicon stops a little short of that for me.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682292">\
	 <div id="dsq-comment-header-9682292" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682292" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682292">Prokofy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682292" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682292" class="dsq-comment-message">Hey there Scoble, friendz 4-ever</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682293">\
	 <div id="dsq-comment-header-9682293" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682293" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682293" href="http://www.rajarishi.com/" target="_blank" rel="nofollow">@runb@laj!</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682293" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682293" class="dsq-comment-message">hi scoble,<br><br>never thought a phone call to u will lead to such a post<br><br>i really like you a lot<br><br>site name -RajaRishi.com where you the user rules us<br><br>gender-Anonymous,Man,Woman,gal,boy,couple,friends,group,gay,bi,lesbian,money lender,money seeker,govt official,any of above,dont wish to say<br><br>minimum age needed -1<br><br>registration starts at -1900<br><br>extensions currently allowed as pics -gif,jpg,jpeg,png,flv,fla,mpg,mp3<br><br>the only restriction that i have used is that u have to verify your email address at registration login_this is to ensure the safety of the site and to protect users and me&gt;the owner and the website host</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682294">\
	 <div id="dsq-comment-header-9682294" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682294" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682294" href="http://www.rajarishi.com/" target="_blank" rel="nofollow">@runb@laj!</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682294" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682294" class="dsq-comment-message">contd<br>--------------<br>this uses -php izabi - a open source social networking using php mysql script and runs on linux and any Linux apache php mysql(lamp) and any server using php mysql like iis etc  -users of my site can contribute code by sending code to me _raja_at_rajarishi.com or by contributing to the code base at <a href="http://www.phpizabi.net" rel="nofollow">www.phpizabi.net</a><br><br>it has been downloaded<br>---------<br>90,802 downloads totally that is<br>133.7 downloads per day<br><br>features that this script and which my website  currently has<br><br>New Features<br>    * Random members gender selection<br>    * Saved searches<br>Generic Features<br>    * Smileys support<br>    * Multilanguage support<br>    * Registration captcha<br>    * Mass mail support<br>    * Pictures cropping / proportions<br>    * Tell a friend<br>    * Invite a friend<br>    * Search and advanced search<br>    * Search by geographic distance<br>    * Contact us system<br>    * Bookmark link<br>    * Privacy and terms of use<br>    * Match search based on profile<br>    * Online / Offline status<br>    * Activity notification<br>    * Customizable genders<br>Users and Profiles<br>    * Customizable profile data<br>    * Customizable questionnaires<br>    * Email address confirmation<br>    * Automatic / Manual approval<br>    * Unique address check<br>    * Online status<br>    * Personal Gallery<br>    * Personal Blog<br>    * User settings panel<br>    * Ignore / Block users<br>    * New contacts notification<br>    * New mails notification<br>    * Favorite blogs<br>    * Recent profile views<br>    * Contacts list<br>    * Contacts categorization<br>    * Contacts management<br>    * Newsletter<br>    * Horoscope<br>    * Last login<br>    * Profile / pictures rating<br>    * Profile views<br>    * Private photo gallery<br>    * Nudges (kisses, slaps, ...)<br>    * Users comments<br>    * Events calendar<br>    * Personal events<br>    * Saved searches<br>Communication<br>    * Blogs<br>    * Internal messages system<br>    * Pages (notifications)<br>    * Forums (inkspot)<br>    * Chatrooms<br>    * Files sharing<br><br>script recommended by jessu@mail2.<br><br>so heres to anonymity<br><br>3 cheers to the new way to socialize -dont wish to say my name</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682295">\
	 <div id="dsq-comment-header-9682295" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682295" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682295" href="http://blog.snipperoo.com/" target="_blank" rel="nofollow">Ivan Pope</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682295" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682295" class="dsq-comment-message">Remember: Friends don\'t ask Friends to be Friends.<br>Join the Social Hermits: <a href="http://hermits.ning.com" rel="nofollow">http://hermits.ning.com</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682296">\
	 <div id="dsq-comment-header-9682296" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682296" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682296" href="http://shannonclark.wordpress.com/" target="_blank" rel="nofollow">shannonclark</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682296" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682296" class="dsq-comment-message">Robert,<br><br>Exactly. By checklist I meant in terms of defining the actions related to a tag - that\'s the biggest piece from a programming perspective - but you are right, the specific tags will be unique to each person (but I would still suggest that rather than a blank slate the network suggest a few standard types for people to start with if they don\'t want to go through the effort of customizing - i.e. you might then "clone" the privacy rules for "family" for the tag "cafesinAmsterdam"<br><br>Shannon</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682297">\
	 <div id="dsq-comment-header-9682297" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682297" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682297" href="http://www.jaiku.com/" target="_blank" rel="nofollow">Petteri Koponen</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682297" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682297" class="dsq-comment-message">Robert, thanks for picking on Jaiku as well :)<br><br>Your comment on not being able to see the people who have friended with you is a valid one and the feature is already on our roadmap. If you want to invite your existing contacts, check out <a href="http://jaiku.com/contacts/invite" rel="nofollow">http://jaiku.com/contacts/invite</a>. It is still limited in terms of services you can import from, but getting more complete.<br><br>Regarding the ability to make a difference between types of friends ("school buddies", "colleagues", ...), we\'ll soon introduce new channel functionality, which should take away part of the pain here. In addition, I\'ve been selling the idea of people tagging for our team for some time, but let\'s see what happens there. I\'d love to hear about your ideas of how the tags could be leveraged?<br><br>See you later today!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682298">\
	 <div id="dsq-comment-header-9682298" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682298" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682298" href="http://www.beercosoftware.com/" target="_blank" rel="nofollow">Chris</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682298" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682298" class="dsq-comment-message"><a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=120131288334" rel="nofollow">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&a...</a><br>Well, in retrospect I guess social networking isn\'t so bad. :)<br>You gotta love the internet!<br><br>BTW, My PSP also sold for 1/3 more than what the Microplay here wanted to give me for it.<br><a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;item=120130279585" rel="nofollow">http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&a...</a><br><br>Maybe the Scoble Wiki/Friendster Frankenstein will work after all. The new server should be here in a couple days so I can drive it down to the DC and find the hell out.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682299">\
	 <div id="dsq-comment-header-9682299" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682299" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682299" href="http://www.zephoria.org/thoughts/" target="_blank" rel="nofollow">zephoria</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682299" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682299" class="dsq-comment-message">Scoble - are you aware of my article on friending?  You might appreciate it: <a href="http://www.firstmonday.org/issues/issue11_12/boyd/" rel="nofollow">http://www.firstmonday.org/issues/issue11_12/boyd/</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682301">\
	 <div id="dsq-comment-header-9682301" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682301" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682301" href="http://www.fidgt.com/" target="_blank" rel="nofollow">Eduardo Sciammarella</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682301" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682301" class="dsq-comment-message">We think you are right. We are building a social network address book called Fidg\'t.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682302">\
	 <div id="dsq-comment-header-9682302" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682302" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682302">deirdrestraughan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682302" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682302" class="dsq-comment-message">Even worse in most online apps/Web 2.0 products I have worked with (and I\'ve tried dozens, especially in the video hosting arena) is that they pay no attention to critical details like the login.<br><br>I am now forced to abandon Twitter because I tried to reset the password Monday (couldn\'t remember it, and needed it to try their Facebook widget), tried the reset function several times, and it just plain doesn\'t work. The form doesn\'t even align properly on the page when reloaded after a failure.<br><br>Emails to Twitter support, both via the form and direct email, have gone unanswered. Pity. I really liked Twitter, and have a lot of friends there. Now I\'ll have to see whether their competition does any better at handling the basics.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682303">\
	 <div id="dsq-comment-header-9682303" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682303" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682303" href="http://www.samjackson.org/college" target="_blank" rel="nofollow">Sam Jackson</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682303" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682303" class="dsq-comment-message">Really, you have those problems with FB mobile? I don\'t on my MotoQ IE--I\'m logged in for weeks.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682304">\
	 <div id="dsq-comment-header-9682304" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682304" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682304" href="http://scobleizer.com/" target="_blank" rel="nofollow">Robert Scoble</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682304" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682304" class="dsq-comment-message">Sam, turns out that if you log into Facebook on other devices or on the Web it\'ll log you out of your cell phone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682228">\
	 <div id="dsq-comment-header-9682228" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682228" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9682228">Kevin Fox</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682228" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682228" class="dsq-comment-message">I think OpenID could be a technology that would ease your woes regarding not having a portable identity / address book  [...] The momentum of OpenID and fact that Facebook is working with Open Source companies like Six Apart certainly makes it plausible we could see Facebook support OpenID in the future. [...]</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682300">\
	 <div id="dsq-comment-header-9682300" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682300" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682300" href="http://www.astra-design.com/" target="_blank" rel="nofollow">Sally</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682300" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682300" class="dsq-comment-message">So-called "friends" in internet and friends in real life differ and we have not to forget about it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9682305">\
	 <div id="dsq-comment-header-9682305" class="dsq-comment-header">\
	 <cite id="dsq-cite-9682305" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9682305" href="http://sonnetoptics.net/" target="_blank" rel="nofollow">Dan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9682305" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9682305" class="dsq-comment-message">You have it right on with this post.<br><br>The "Network NAzi" syndrome is alive and well<br><br>oh dan I will end up on the twitter blacklist for that one</div>\
	 </div>\
	 </li>\
	 </ul>\
';

(function() {
	
	





Dsq.Debug.profile(function() {
	if(Dsq.jsonData.request.page == 1 && Dsq.jsonData.request.is_initial_load) {
		Dsq.container.innerHTML = Dsq.Templates.header() + Dsq.container.innerHTML + Dsq.Templates.footer();
	}
	Dsq.$(Dsq.curPageId).innerHTML = Dsq.$(Dsq.curPageId).innerHTML.replace(Dsq.COMMENTS_RE, Dsq.CommentsHandler);
}); // Dsq.Debug.Profile

// HACK: Resetting cache because we're done with.
Dsq.Utils.gebiFromElementCollectionCache = null;


	
	
	var dsq_styleEl = document.getElementById(disqus_container_id);
	var dsq_anchorEl = document.getElementsByTagName('a')[0];
	
	Dsq.Thread.fc = Dsq.Utils.getStyle(dsq_styleEl, 'color');
	if(dsq_anchorEl) { Dsq.Thread.ac = Dsq.Utils.getStyle(dsq_anchorEl, 'color'); }
	Dsq.Thread.ff = Dsq.Utils.getStyle(dsq_styleEl, (Dsq.Utils.ie || window.opera ? 'fontFamily' : 'font-family'));
	// For Safari / Opera: strip quotes.
	Dsq.Thread.ff = Dsq.Thread.ff.replace(/['"]/g, '');
	Dsq.Thread.fc = encodeURIComponent(Dsq.Thread.fc);
	Dsq.Thread.ac = encodeURIComponent(Dsq.Thread.ac);
	Dsq.Thread.ff = encodeURIComponent(Dsq.Thread.ff);

	
	
	
	if(Dsq.$(Dsq.Templates.addPostContainer)) {
		// TODO: Check to see if theme uses postmessage.
		if (window.disqus_use_postmessage) {
			Dsq.frames['reply_0'] = new Dsq.ReplyFrame(Dsq.$(Dsq.Templates.textareaContainer));
			Dsq.frames['reply_0'].init(function() {
				// Use fallback iframe
				Dsq.$(Dsq.Templates.addPostContainer).innerHTML = '';
				var theme = (typeof disqus_frame_theme == 'undefined') ? 'default' : disqus_frame_theme;
				Dsq.Iframes.showReplyIframeInContainer(Dsq.$(Dsq.Templates.addPostContainer), null, {theme: theme});
				// if(Dsq.Utils.ie) { Dsq.Utils.fixIframesIE(); }
			});
		} else {
			// DEPRECATED
			Dsq.Iframes.showReplyIframeInContainer(Dsq.$('dsq-post-add'));
		}
	}

	
	

	
	if(document.location.hash != '') {
		document.location.hash = document.location.hash.substring(1);
	}

	Dsq.Popup.showCookieMsgs();

	
	if(document.location.search != '' && location.hash != '#disqus_thread') {
		var reply_id = Dsq.Utils.getRequestParams().dsq;
		if(reply_id) { document.location.hash = 'comment-' + reply_id; }
	}

	
	if((typeof OB_Script != 'undefined') && (typeof OB_versionNum != 'undefined')) {
		if(navigator.userAgent.indexOf("Firefox") != -1) {
			if(window.frames['dsq-reply-frame']) {
				window.frames['dsq-reply-frame'].location = Dsq.Urls.REPLY + (new Date()).getTime() + '&f=scobleizer&t=social_networks_as_8220friend8221_nazi_design_flaws_in_facebook_jaiku_twitter&to_redirect=' + encodeURIComponent(window.location) + '&ifrs=' + encodeURIComponent(disqus_iframe_css);
			}
		}
	}

	if (Dsq.jsonData.integration.theme == 4) {
		if (Dsq.jsonData.realtime_enabled) {
			Dsq.Realtime.initialize();
		}
	}

	



	window.ExecuteWhen = (function () {
	var obj = {}
	
	// Private
	var running = false;
	var timer = null;
	var pending = [];
	var startTimer = function() {
		running = true;
		timer = setInterval(obj.heartBeat, 100);
	};
	var stopTimer = function() {
		running = false;
		clearInterval(timer);
	};
	
	// Public
	obj.add = function (condition, code) {
		pending.push([condition,code]);
		this.heartBeat(); //!
		if (!running) {
			startTimer();
		}
	};
	obj.heartBeat = function() {
		if (!pending.length) {
			stopTimer();
		}
		var newPending = [];
		for (var i=0; i<pending.length; i++) {
			var cond = pending[i][0];
			var code = pending[i][1];
			// FIXME: if cond or code throw an error, they never get removed from pending
			if (cond()){
				code();
			}
			else {
				newPending.push([cond, code]);
			}
		}
		pending = newPending;
	};
	return obj;
})();

// also used in embed_thread.js:
window.fbIsReady = function () {return window.FB && FB.init;};
// NOTE: This script gets executed again without threadEl
//       set when we are loaded again as the fbc_receiver.
//       In this case, we don't need the hidden container.

if(!window.FB || !FB.init) {
	if(window.Dsq && Dsq.container) {
		// container is not present when init.js is loaded from an xd-receiver iframe; in this case,
		// we don't need the FB_HiddenContainer anyway.
		var fbDiv = document.createElement('div');
		fbDiv.id = "FB_HiddenContainer";	// Required or else FeatureLoader will execute a document.write.
		fbDiv.style.position = 'absolute';	// This is intentionally not setting display to none as this breaks
		fbDiv.style.top = '-10000px';		// Flash in Safari.
		fbDiv.style.left = '-10000px';
		fbDiv.style.width = '0px';
		fbDiv.style.height = '0px';
		Dsq.container.appendChild(fbDiv);
	}
	var fbJS = document.createElement('script');
	fbJS.type = "text/javascript";
	fbJS.src = "http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php";
	document.getElementsByTagName('head')[0].appendChild(fbJS);

	ExecuteWhen.add(window.fbIsReady,
		function () {
			// HACK: This is a workaround FBC's single domain limitation by
			//		 allowing sites to create multiple forums with different
			//		 Facebook API keys.  This must be used in conjunction with
			//		 disqus_facebook_forum (see authenticateFacebook).
			var facebook_api_key = 'faaf467d0f47abde553c3b8e0e1b3570';
			if (typeof disqus_facebook_api_key != 'undefined') {
				facebook_api_key = disqus_facebook_api_key;
			}

			FB.init(facebook_api_key, window.facebookXdReceiverPath || null,
				{fetchSignedPublicSessionData: true});
		});
}


	


if(typeof(disqus_callback) == 'function') {
	var callback_params = Dsq.Utils.getRequestParams()['dsq_cbp'] || null;

	// We don't care about any errors in third-party code
	try {
		disqus_callback(callback_params);
	} catch (x) {
		if (typeof(console) != 'undefined' && typeof(console.log) == 'function') {
			// But it would be nice to let developers know about them
			console.log(x);
		}
		// pass
	}

	// HACK: We don't know if the callback wraps our container, which may
	// possibly result in a new DOM element.
	Dsq.container = document.getElementById('dsq-content');
}

// Global event handler for narcissus.
if (Dsq.jsonData.integration.theme == 4) {
	var g = Dsq.Utils.ie ? document : window;
	Dsq.Utils.addEventListener(g, 'keydown', function(event) {
		// Handle "enter" key on input for post box.
		if ((event.keyCode || event.which) == 13) {
			var target = Dsq.Utils.ie ? event.srcElement : event.target;
			// For Safari bug, detect text node.
			if (target.nodeType == 3) {
				target = target.parentNode;
			}

			if (target.nodeName == 'INPUT' &&
				target.parentNode.className == 'dsq-input-wrapper') {
				var postId = Dsq.Utils.extractId(target);
				Dsq.Templates.postComment(postId, this, false);
			}
		}
	});
}

})();




