




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": {"8eecf420226d34b9fc58eddc045eca81": {"username": "Gabriel Lopez", "tumblr": "", "display_name": "Gabriel Lopez", "url": "http://disqus.com/guest/8eecf420226d34b9fc58eddc045eca81/", "registered": false, "linkedin": "", "blog": "http://www.infocorp.com.uy", "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": ""}, "dentistglasgow": {"username": "dentistglasgow", "tumblr": "", "display_name": "dentistglasgow", "url": "http://disqus.com/dentistglasgow/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b1f94df0e7870616f8c65d61655868fd": {"username": "Dylan Tanaka", "tumblr": "", "display_name": "Dylan Tanaka", "url": "http://disqus.com/guest/b1f94df0e7870616f8c65d61655868fd/", "registered": false, "linkedin": "", "blog": "http://www.DylanTanaka.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": ""}, "69e298db04f729852cb9100f61218dc6": {"username": "Kyle Arteaga", "tumblr": "", "display_name": "Kyle Arteaga", "url": "http://disqus.com/guest/69e298db04f729852cb9100f61218dc6/", "registered": false, "linkedin": "", "blog": "http://www.serena.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": ""}, "0ea440a193de629ea650865061f59d9c": {"username": "David Loc", "tumblr": "", "display_name": "David Loc", "url": "http://disqus.com/guest/0ea440a193de629ea650865061f59d9c/", "registered": false, "linkedin": "", "blog": "http://windows-registry-cleaner-reviews.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": ""}, "01b7f94f6e0a8b00c449c5c39be3fd10": {"username": "Jordan Frank", "tumblr": "", "display_name": "Jordan Frank", "url": "http://disqus.com/guest/01b7f94f6e0a8b00c449c5c39be3fd10/", "registered": false, "linkedin": "", "blog": "http://www.tractionsoftware.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": ""}, "ec0cf53b840ed7722c28bf414c94d0b6": {"username": "Ken", "tumblr": "", "display_name": "Ken", "url": "http://disqus.com/guest/ec0cf53b840ed7722c28bf414c94d0b6/", "registered": false, "linkedin": "", "blog": "http://www.2hotdirectory.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": ""}, "4df642419e9fad79643d5ecc5240f566": {"username": "Dennis Howlett", "tumblr": "", "display_name": "Dennis Howlett", "url": "http://disqus.com/guest/4df642419e9fad79643d5ecc5240f566/", "registered": false, "linkedin": "", "blog": "http://blogs.zdnet.com/Howlett", "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": ""}, "f4480112f62a57d14b59f2c8a05f7160": {"username": "MBA Colleges", "tumblr": "", "display_name": "MBA Colleges", "url": "http://disqus.com/guest/f4480112f62a57d14b59f2c8a05f7160/", "registered": false, "linkedin": "", "blog": "http://mbacollegesinindia.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": ""}, "06012ffe4704b8f12d953e0f8de9c2cb": {"username": "Games", "tumblr": "", "display_name": "Games", "url": "http://disqus.com/guest/06012ffe4704b8f12d953e0f8de9c2cb/", "registered": false, "linkedin": "", "blog": "http://www.gamesnepal.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": ""}, "a14a50b2cad333f0d9a060ddbc60b1c7": {"username": "Gina Spadoni", "tumblr": "", "display_name": "Gina Spadoni", "url": "http://disqus.com/guest/a14a50b2cad333f0d9a060ddbc60b1c7/", "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": ""}, "9a45d628d5414f425774bb81eafed348": {"username": "Kin Lane", "tumblr": "", "display_name": "Kin Lane", "url": "http://disqus.com/guest/9a45d628d5414f425774bb81eafed348/", "registered": false, "linkedin": "", "blog": "http://www.kinlane.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": ""}, "1bf21ef6012177cef048234a18847691": {"username": "steven mandzik", "tumblr": "", "display_name": "steven mandzik", "url": "http://disqus.com/guest/1bf21ef6012177cef048234a18847691/", "registered": false, "linkedin": "", "blog": "http://www.swordplay.tv", "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": ""}, "c5febaf8a8161ec9fabbe868ad11cdb9": {"username": "Regim Hotelier", "tumblr": "", "display_name": "Regim Hotelier", "url": "http://disqus.com/guest/c5febaf8a8161ec9fabbe868ad11cdb9/", "registered": false, "linkedin": "", "blog": "http://www.regim-hotelier.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": ""}, "f2fb7c6003b660e15d19bcda8e232c3c": {"username": "Greg", "tumblr": "", "display_name": "Greg", "url": "http://disqus.com/guest/f2fb7c6003b660e15d19bcda8e232c3c/", "registered": false, "linkedin": "", "blog": "http://www.krystal.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": ""}, "d295f44087f19026f5e2633286bf7090": {"username": "Claus", "tumblr": "", "display_name": "Claus", "url": "http://disqus.com/guest/d295f44087f19026f5e2633286bf7090/", "registered": false, "linkedin": "", "blog": "http://www.clatoro.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": ""}, "4883cb0263357943ae675ce7c16bbf12": {"username": "Larry Bouthillier", "tumblr": "", "display_name": "Larry Bouthillier", "url": "http://disqus.com/guest/4883cb0263357943ae675ce7c16bbf12/", "registered": false, "linkedin": "", "blog": "http://www.learningapi.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": ""}, "13fe967fb6ac70efd1e80bdeb9ff9ac9": {"username": "Las Vegas Tourism", "tumblr": "", "display_name": "Las Vegas Tourism", "url": "http://disqus.com/guest/13fe967fb6ac70efd1e80bdeb9ff9ac9/", "registered": false, "linkedin": "", "blog": "http://www.lasvegastourismblog.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": ""}, "2cd71034fe7b936a571c4d88f72e08ca": {"username": "Stefan Waldherr", "tumblr": "", "display_name": "Stefan Waldherr", "url": "http://disqus.com/guest/2cd71034fe7b936a571c4d88f72e08ca/", "registered": false, "linkedin": "", "blog": "http://www.waldherr.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": ""}, "2b064e31361f1b7d94f2223b01c75022": {"username": "Dan Keldsen", "tumblr": "", "display_name": "Dan Keldsen", "url": "http://disqus.com/guest/2b064e31361f1b7d94f2223b01c75022/", "registered": false, "linkedin": "", "blog": "http://www.BizTechTalk.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": ""}, "1bf0b5767da1c9854772ba812fa45a4f": {"username": "Chris Bucchere", "tumblr": "", "display_name": "Chris Bucchere", "url": "http://disqus.com/guest/1bf0b5767da1c9854772ba812fa45a4f/", "registered": false, "linkedin": "", "blog": "http://thebdgway.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": ""}, "576e788f6a7569c867550ca2ad88e777": {"username": "Brian", "tumblr": "", "display_name": "Brian", "url": "http://disqus.com/guest/576e788f6a7569c867550ca2ad88e777/", "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": ""}, "d11e0fd57055564365d60b1826da8961": {"username": "Dimitri Lisitski", "tumblr": "", "display_name": "Dimitri Lisitski", "url": "http://disqus.com/guest/d11e0fd57055564365d60b1826da8961/", "registered": false, "linkedin": "", "blog": "http://enterprisewiki.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": ""}, "5447b367297bf74ad2c7f282a124ae1c": {"username": "bill benac", "tumblr": "", "display_name": "bill benac", "url": "http://disqus.com/guest/5447b367297bf74ad2c7f282a124ae1c/", "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": ""}, "63c6b9e06093b69125cf8f60966fc3ae": {"username": "Jane McConnell", "tumblr": "", "display_name": "Jane McConnell", "url": "http://disqus.com/guest/63c6b9e06093b69125cf8f60966fc3ae/", "registered": false, "linkedin": "", "blog": "http://netjmc.typepad.com/globally_local/", "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": ""}, "43f3c65d3252a0a75d2b70fcec05051e": {"username": "Jay Simons", "tumblr": "", "display_name": "Jay Simons", "url": "http://disqus.com/guest/43f3c65d3252a0a75d2b70fcec05051e/", "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": ""}, "f45eca69dd4f065221143e65f96a3bbb": {"username": "Bill Ives", "tumblr": "", "display_name": "Bill Ives", "url": "http://disqus.com/guest/f45eca69dd4f065221143e65f96a3bbb/", "registered": false, "linkedin": "", "blog": "http://billives.typepad.com/portals_and_km/", "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": ""}, "026ef1da85c7989c4761067202591f3d": {"username": "James Robertson", "tumblr": "", "display_name": "James Robertson", "url": "http://disqus.com/guest/026ef1da85c7989c4761067202591f3d/", "registered": false, "linkedin": "", "blog": "http://www.steptwo.com.au/columntwo", "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": ""}, "7776e4340c98d1f3fb3343b1f6c38e43": {"username": "document management", "tumblr": "", "display_name": "document management", "url": "http://disqus.com/guest/7776e4340c98d1f3fb3343b1f6c38e43/", "registered": false, "linkedin": "", "blog": "http://idoccorp.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/94/5836/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": false, "name": "Andrew McAfee&#39;s Blog", "streaming_realtime": false, "url": "andrewmcafee", "allow_anon_post": true, "reactions_enabled": true, "reply_position": 0, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": false, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 2, "forum": "andrewmcafee", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-01_17:48:22", "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": null}, "realtime_paused": false, "posts": {"7847186": {"up_voted": false, "ip": "", "has_replies": false, "message": "You had me thinking if we can trust those cheap platforms, thanks for keeping us aware of things, you're really good at it.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-04-04_23:13:43", "killed": false, "user_key": "7776e4340c98d1f3fb3343b1f6c38e43", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "04/04/2009 10:13 PM", "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}, "12571941": {"up_voted": false, "ip": "", "has_replies": false, "message": "Facebook is a nice option for good social networking.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-13_05:31:05", "killed": false, "user_key": "dentistglasgow", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "07/13/2009 04:31 AM", "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}, "5487188": {"up_voted": false, "ip": "", "has_replies": false, "message": "I can\u00c2\u2019t even imagine using Facebook as an Intranet. It is already pushing too far into our personal data already!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-12-04_07:04:19", "killed": false, "user_key": "c5febaf8a8161ec9fabbe868ad11cdb9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/04/2008 07:04 AM", "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}, "5487189": {"up_voted": false, "ip": "", "has_replies": false, "message": "Using facebook as an intranet is a great idea. I think that facebook has proven to give us much more than just connect with our friends.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-08-14_13:03:48", "killed": false, "user_key": "06012ffe4704b8f12d953e0f8de9c2cb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "08/14/2008 12:03 PM", "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}, "5487190": {"up_voted": false, "ip": "", "has_replies": false, "message": "I could see a tool like this increasing productivity, collaboration, and teamwork among employees who are not physically located within 20 ft of each other, but I can see the corporate/firm hostility to this technology as well.<br><br>Most of the people making the decisions about implementation of software for communication may likely see facebook as an application that is a waste of time with no useful application in the workplace.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-10-19_09:04:56", "killed": false, "user_key": "f4480112f62a57d14b59f2c8a05f7160", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10/19/2008 08:04 AM", "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}, "5487191": {"up_voted": false, "ip": "", "has_replies": false, "message": "A comment to James Robertson's first post<br><br>&gt;All of these problems can be addressed, but only &gt;through the addition of \u00c3\u00a2\u00c2\u20ac\u00c2\u0153intranet\u00c3\u00a2\u00c2\u20ac\u00c2\u009d approaches. &gt;Including establishing a centralised team with &gt;overall ownership of the site\u00c3\u00a2\u00c2\u20ac\u00c2\u2122s IA, search, &gt;strategy, etc, etc.<br><br>That reads like a demand for professional gardeners. A new role for the soon-to-be jobless intranet team?<br><br>-Stefan", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-29_09:16:34", "killed": false, "user_key": "2cd71034fe7b936a571c4d88f72e08ca", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/29/2007 09:16 AM", "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}, "5487192": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andres!<br><br>I am a computer engineer in Vietnam. With my knowledge about computer science, I thought that It's totally possible to integrate Facebook into Intranet, because Intranet use a protocol the same as Internet. So the problems with Facebook on Internet come with Facebook on Intranet, including security.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-01-10_21:06:26", "killed": false, "user_key": "0ea440a193de629ea650865061f59d9c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "01/10/2008 09:06 PM", "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}, "5487193": {"up_voted": false, "ip": "", "has_replies": false, "message": "I can't even imagine using Facebook as an Intranet. It is already pushing too far into our personal data already!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-01-07_07:40:47", "killed": false, "user_key": "f2fb7c6003b660e15d19bcda8e232c3c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "01/07/2008 07:40 AM", "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}, "5487194": {"up_voted": false, "ip": "", "has_replies": false, "message": "Andrew - A long delayed thanks for the kind comments on my Serena post. It is December 23 and I am still seeing new people arrive on my blog from your post. I should check my stats more often. I have been a long admirer of your blog and your work.  Bill Ives", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-23_08:08:39", "killed": false, "user_key": "f45eca69dd4f065221143e65f96a3bbb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/23/2007 08:08 AM", "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}, "5487195": {"up_voted": false, "ip": "", "has_replies": false, "message": "Facebook, or rather the facilities it has, are attractive as a means to fill one small slice of your intranet. Can it BE your intranet? Only as much as any other tool that lets you publish pages (pick up any blog or wiki). <br><br><a href=\"http://traction.tractionsoftware.com/traction/permalink/Public1205\" rel=\"nofollow\">National Health Service UK</a> built a Traction TeamPage based intranet, and also relied on newsgator. They organized it nicely around departments and areas of interest. When folks start to navigate for information - that's where they start, rather than starting with a human navigation approach. (that allows for following topics to people, not people to topics). <br><br>Facebook is good for what its best at: creating a personal profile and linking to people. The group model is not all too compelling so it doesn't make the grade for group collaboration. The messaging model is OK but confusing (I never have a clue as to whether messages I post to people will be public or private). <br><br>Is facebook good for enterprise? Maybe in some other form. Web 2.0 gives us a glimpse of what we may want for Enterprise 2.0 - but not the reality. In the enterprise, the processes, needs and use cases are different than you see in social nets on the web. <br><br>--- Jordan", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-21_14:42:13", "killed": false, "user_key": "01b7f94f6e0a8b00c449c5c39be3fd10", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/21/2007 02:42 PM", "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}, "5487196": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andy,<br><br>I agree with Brian above. There will be no stopping the  Chineese from hacking.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-16_23:18:56", "killed": false, "user_key": "b1f94df0e7870616f8c65d61655868fd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/16/2007 11:18 PM", "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}, "5487197": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hello Andrew, <br>I\u00c2\u2019m student from UK currently studying the internet business course in London. I found this post to be very helpful and would like to share it with the people in my course, hope that's ok with you.<br><br>This blog is bookmarked! Thank you", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-20_08:09:11", "killed": false, "user_key": "ec0cf53b840ed7722c28bf414c94d0b6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/20/2007 08:09 AM", "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}, "5487198": {"up_voted": false, "ip": "", "has_replies": false, "message": "Andrew,<br><br>Our company of 2200 people uses Confluence for intranet. Our division locally used SharePoint before Confluence. Everybody misses SharePoint to be honest. My recent experience was that it took 1 month to develop a survey on internal infrastructure, while it takes one hour to do the same job on SharePoint. This is just a simple example of what is missing.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-21_12:12:36", "killed": false, "user_key": "d11e0fd57055564365d60b1826da8961", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/21/2007 12:12 PM", "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}, "5487199": {"up_voted": false, "ip": "", "has_replies": false, "message": "Interesting idea to use Facebook as the Intranet. But Chris already mentioned the problems for an enterprise regarding data ownership and also the security of intellectual property.<br><br>Using Facebook as the basis for an Intranet is much more interesting, especially with an integration of e. g. del.icio.us. So the associates could organize themselves in different groups e. g. sales, engineering, quality etc. and than they can search within the favorites saved in del.icio.us for this specific group in Facebook. So everybody has easy and fast access to relevant information concerning his work.<br><br>The main problem is only, how to convince the associates to collaborate and to offer information to others, because sometimes it is their capital for the job in the enterprise.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-13_16:15:24", "killed": false, "user_key": "d295f44087f19026f5e2633286bf7090", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/13/2007 04:15 PM", "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}, "5487200": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andrew, I'm a new reader of your blog. I really enjoy reading your articles and I love your writing style.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-12_13:58:59", "killed": false, "user_key": "13fe967fb6ac70efd1e80bdeb9ff9ac9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/12/2007 01:58 PM", "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}, "5487201": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andy,<br><br>As someone who's been developing a Facebook application for a certain well-known university, I find an element of truth (with a caveat) to the notion that Facebook can be your Intranet platform.   Facebook is really great at connecting your Facebook social graph with your institutional identities (departments, locations, project teams, course enrollment, etc). <br><br>From that, you can drive traffic to your institutional applications that handle the real business.  Facebook will let you iFrame in limited views of these business apps, but the real value it provides is in connections and context, not content.  <br><br>In the end, I don't think Facebook replaces your intranet apps or even your portal, but it complements them.  Even more complementary will be open and <b>deeply integratable</b> social-graph platforms like OpenSocial, should they gain traction. <br><br>I've written a follow up on my blog, <a href=\"http://www.learningapi.com/blog/archives/000127.html\" rel=\"nofollow\">Facebook and Academic Institutions - Content or Context?</a><br><br>--Larry", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-13_10:00:15", "killed": false, "user_key": "4883cb0263357943ae675ce7c16bbf12", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/13/2007 10:00 AM", "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}, "5487202": {"up_voted": false, "ip": "", "has_replies": false, "message": "I have been reviewing a variety of search & content management solutions in my market intelligence role, and I have concluded that while there are some interesting entry-level solutions such as the Google mini and IBM's new OmniFind/Yahoo! edition software, the security in them just don't suffice and as you mention with Facebook, aren't scalable. <br><br>Furthermore, while we could theoretically embed those solutions into an existing Sharepoint site (as we all know their search isn't up to snuff, and from what I've read about their upcoming Express solution it still won't be), that cobbled- together result wouldn't be nearly as easy to use as a Facebook type solution.<br><br>What I settled on recommending was a Traction TeamPage FAST module solution, which has an amazingly easy to use interface with enterprise level security functionality, and it's relatively inexpensive to implement. Furthermore, it requires very little IT support, which is key to my non-profit business. I first discovered Traction at the April SCIP conference in NYC, and have been working to make a business justification ever since. <br><br>I think it is this type of product -- one that combines blog/wiki technologies with enterprise security needs that will ultimately \"win\" the content/knowledge management \"war.\" <br><br>I welcome any thoughts on Traction's solutions (<a href=\"http://traction.tractionsoftware.com/traction\" rel=\"nofollow\">http://traction.tractionsoftware.com/traction</a>). I have yet to know if it will pass my stakeholder's collective muster...but my fingers AND toes are crossed! <br><br>Thanks for the interesting entry!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-14_17:48:14", "killed": false, "user_key": "a14a50b2cad333f0d9a060ddbc60b1c7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/14/2007 05:48 PM", "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}, "5487203": {"up_voted": false, "ip": "", "has_replies": false, "message": "Andrew,<br><br>Serena is a company in the midst of significant change. To enable corporate transformation  we needed a platform to communicate and collaborate with employees (as well as customers, partners, suppliers, friends and family) easily and often. It just happens that technology exists today that goes a long way towards solving this issue. <br><br>We would be happy to speak further about how as an organization we are adapting to a new way of working.  <br><br>Kyle Arteaga<br>VP, Corporate Communications", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-14_18:30:47", "killed": false, "user_key": "69e298db04f729852cb9100f61218dc6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/14/2007 06:30 PM", "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}, "5487204": {"up_voted": false, "ip": "", "has_replies": false, "message": "Andy - thanks for the recognition. As a relative youngblood coming onto the scene. I think it is more about personal beliefs than any corporate issue. The benefits, scalabity, and ease of use stand on their own. <br><br>It reminds me of the party I just came from. At the party a friend had an amazing game all about music. To play it a laptop was needed. When asking for a laptop most of the party crowd were affronted, like \"leave work at work\". I was shocked, all of the parties i have been to since high school have had some sort of technology aspect to them. <br><br>It's like when I was a kid playing video games and trying to convince my parents that they were of value. I get that same sort of feeling nowadays. <br><br>Older folks just don't look at the web as a place for work. It is still the place for wasting time,  browsing, and shopping. Yet it seems to be the direction that work is going. I mean can anyone imagine a knowledge worker, ten years from now not being connected? <br><br>I don't think anyone can, but this generation of workers, baby boomers, and managers don't see that...<br><br><br>P.S. Intellipedia is the wiki and the other tools are stand alone tools incorporated into the broader Enterprise 2.0 suite. The <a href=\"http://en.wikipedia.org/wiki/Intellipedia\" rel=\"nofollow\">wikipedia page</a> covers it pretty well.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-09_02:32:14", "killed": false, "user_key": "1bf21ef6012177cef048234a18847691", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/09/2007 02:32 AM", "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}, "5487205": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andrew,<br><br>Great article -- I've been enjoying reading your stuff for the past six months or so but this is the first time I've commented.<br><br>I think it's really important to draw a distinction between using a Web 2.0 open source product (e.g. MediaWiki) as part of your corporate or government intranet vs. using Facebook, LinkedIn, Plaxo or some other public internet service *as* your intranet.<br><br>The fundamental difference is data ownership -- even though the internet makes the location of your data almost transparent, large corporations and the government need to *own* their data. For most corporations, this means putting it -- and keeping it -- behind the firewall. For some ulta-paranoid government agencies, it means actually restricting certain data to private, closed networks which can't even talk to their peer networks, let alone the internet.<br><br>What Serena is doing is the right idea, but the wrong execution. Same for any major company subject to SOX or HIPAA who uses Google documents -- this model just doesn't work. However, I strongly support using W2.0 open source software behind the firewall. It's really a case of apples and oranges here and your article doesn't draw a distinction between the two.<br><br>Now if only we had an \"enterprise\" edition of Facebook that you could install and run behind the firewall . . . then we could have the best of both worlds!<br><br>Best regards,<br><br>Chris Bucchere<br><a href=\"http://thebdgway.blogspot.com\" rel=\"nofollow\">http://thebdgway.blogspot.com</a>", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-08_22:37:55", "killed": false, "user_key": "1bf0b5767da1c9854772ba812fa45a4f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/08/2007 10:37 PM", "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}, "5487206": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"So what are the good reasons for continuing to invest in and forge ahead with 1.0 Intranets? This is a serious question, and I\u00c2\u2019d love to hear people\u00c2\u2019s experiences and opinions... Is it security? If so, could you please be as specific as possible about the nature of the security concerns?\"<br><br>Your argument loses some of its power here. There's a major security issue with using a public site such as Facebook as a company intranet in that most if its traffic (though not login) is trasmitted in cleartext over HTTP. It's relatively easy to snoop that data. Companies usually require secure VPN for remote access to the intranet so this problem is avoided. Further, if your competitor can accessing your intranet based on his knowledge of your login, and if he can use this from any comfortable location he chooses, then you have again a major security problem. This is why companies often use technologies like RSA's SecurID, so that no one can carry the authentication information in their head. <br><br>The case that the CIA uses open Web 2.0 software isn't related to the security concerns of the public internet. Though there are major governance issues to keep user-generated content appropriate in organizations.<br><br>Facebook is not a viable solution for mainline companies. Let them retool their offering for the corporation if that's what people are interested in (e.g. give companies their own url such as <a href=\"https://myco.facebook.com\" rel=\"nofollow\">https://myco.facebook.com</a>, let the corporate administrator manage who can log in, let the corporate admin manage who they can be friends with, what applications they can add, what types of information can get into their news feed, offer a SecureID feature, etc.). Until then, serious companies should stay away.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-08_20:09:25", "killed": false, "user_key": "5447b367297bf74ad2c7f282a124ae1c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/08/2007 08:09 PM", "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}, "5487207": {"up_voted": false, "ip": "", "has_replies": false, "message": "James brings up valid points, and after all, he has spent much of his career assisting organizations with their Intranets (known in some circles as \"The Intranet Guru\" or as mentioned in Aarhus, Denmark at a cmf2007 gathering about a month ago, \"The Intranet God\" [a lesser known Norse god?]).<br><br>His worries are, essentially, mine as well. Self-organization and \"emergence\" are fine and well, and CAN work wonders, but they don't ALWAYS do so.<br><br>Which is why (and yes, I beat this to death in my MOSS 2007 presentation James...), Intranets, whether 1.0, 2.0 or x.x, run a danger of the \"kudzu factor\" - where lack of information isn't the problem, but TOO MUCH, and without organization of any kind.<br><br>I believe *a* key of Enterprise 2.0 is the ability for intelligence and organizing aspects to emerge from the actions of people (the social aspect), but while we're providing that infrastructure, there is no good reason not to provide the OTHER and KNOWN TO WORK principles that drive sensible Information Architecture work.<br><br>Are traditional taxonomies slow to change, and (at times) painful to adapt? Yes, but stability = findability, and adding folksonomies/tagging supplements that with a more dynamic organizing mechanism, which can then be absorbed into the existing taxonomy (or more likely, loosely connected taxonomIES).<br><br>And while I appreciate that Facebook is becoming quite the platform, for many purposes, given \"BeaconGate\" and the amount of noise in general that is swarming onto the feed at Facebook, it might be hard (and potentially unsafe) to jump onto Facebook as your corporate intranet. Jump in if you like, but be aware of what you're getting into.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-10_12:41:41", "killed": false, "user_key": "2b064e31361f1b7d94f2223b01c75022", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/10/2007 12:41 PM", "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}, "5487208": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi, is it any wonder that the chinese are hacking the worlds DNI equivalent systesm if they are using the likes of Facebook?? Its a joke!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-06_07:11:49", "killed": false, "user_key": "576e788f6a7569c867550ca2ad88e777", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/06/2007 07:11 AM", "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}, "5487210": {"up_voted": false, "ip": "", "has_replies": false, "message": "Good question. Yes there's a general fear. In my Global Intranet Strategies Survey conducted from June through August 2007, in the 2.0 section, the primary reason that 2.0 was not being tested in enterprises was \"our culture is not ready\". 72% of the enterprises have implemented or are beginning to use 2.0 tools on intranets (out of 178 companies from around the world of all sizes from 1000 to over 100,000 employees). Out of 51 who responded to the question \"why not?\", 38 gave the answer I quoted above.<br>Working with very large organisations on their intranets for a number of years, I totally understand why they are not evolving en masse to using wikis and Facebook type tools. An intranet landscape serves many purposes and many types of employees across many cultures. They are a source of reference information, offer links to employee self service and business application among other things. Their use as a \"people-connecting tool\", and a place to build collaboration spaces can often be better served with 2.0 tools than traditional tools but migrating the whole intranet platform does not seem to be a realistic way to meet all needs in very large organisations. <br>That said, I think they would be doing much more if they realisd the potential. <br>One very large organisation has built an internal wikipedia which \"lies on top of\" the intranet, serving as a introductory layer of collective explanations and links to internal content and external content. It will be interesting to see if more and more content gradually moves to the wiki layer over time. <br>I presented a \"Intranet 2.0 Maturity\" - a summary of the 2.0 intranet data from my 2007 survey in a presentation I gave yesterday at Online Information in London. It can be downloaded from my web site in the documents section (<a href=\"http://www.netjmc.com/engl/doc001.html\" rel=\"nofollow\">www.netjmc.com/engl/doc001.html</a>. It provides an insight into which tools are being adopted by companies, based on 178 organisations. <br>Final note: one interesting finding is that organisations where the intranet is \"the way of working today\" are adopting the tools faster than those who say the intranet is a couple years or more away from being \"the way of working\".", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-06_02:22:12", "killed": false, "user_key": "63c6b9e06093b69125cf8f60966fc3ae", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/06/2007 02:22 AM", "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}, "5487211": {"up_voted": false, "ip": "", "has_replies": false, "message": "It depends on which E2.0 software we're talking about. Most wikis can be secured behind a firewall, which is what most companies want so it's not an issue. <br><br>You'd hardly call Facebook secure from an enterprise perspective if only because the company is selling the aggregated data for advertising purposes. There is no apparent distinction between data in private groups and that in the public gaze from that perspective.  <br><br>I said a while back that FB is a great metaphor for what might be used behind the firewall but so far the company has shown little interest in taking up that idea.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-05_23:31:49", "killed": false, "user_key": "4df642419e9fad79643d5ecc5240f566", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/05/2007 11:31 PM", "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}, "5487212": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think on the surface it is the traditional arguments of security, control, backups, reliability, etc.  All the usual concerns of a company.  <br><br>However deeper I think it is really and understanding of what is going on.  I think most management / executives / decision makers just barely understand the IT infrastructure they have and there is just too many unknowns to wrap their heads around with Enterprise IT 2.0.  <br><br>There will be a saturation time period that will need to happen before more top level management feels warm and fuzzy about it.<br><br>Just my 3 cents....", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-06_13:47:21", "killed": false, "user_key": "9a45d628d5414f425774bb81eafed348", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/06/2007 01:47 PM", "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}, "5487213": {"up_voted": false, "ip": "", "has_replies": false, "message": "What exactly does it mean for you to invest in 1.0 intranets? For all I know all major intranet software vendors are adopting 2.0 tools&practices;, and migrations are taking place. Is it in-house hosting 1.0 for you?<br><br>Btw one feature I would miss going with facebook-like solutions would be MS Office integration, that you naturally get out of the box with Sharepoint for example.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-06_19:44:01", "killed": false, "user_key": "8eecf420226d34b9fc58eddc045eca81", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/06/2007 07:44 PM", "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}, "5487214": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Andrew,<br><br>This is not an either-or situation.<br><br>Some of the confusion probably arises from the uncertainty around \"traditional\" intranets. While most organisations have them, there is little opportunity to share approaches, or to understand \"best practices\".<br><br>(This is something we've been doing a lot of writing on over the years.)<br><br>We're now seeing wikis and social networking tools used as an intranet. That is, as a store of corporate knowledge, alongside the more direct collaboration use-cases.<br><br>In these situations, all the same \"intranet\" challenges must be addressed. Staff must be able to find information, it must be written and communicated in a useful fashion, search must work well, content must be kept up to date, etc, etc.<br><br>For example, I had the pleasure of seeing the Avenue A | Razorfish intranet when I was recently in New York. It's great, and it's only going to get better and better.<br><br>For all that, however, it's already starting to feel crowded, confused and cluttered. There is a reliance on search, and as the volume of content grows, this will inevitably reduce in effectiveness. There is little information architecture, and this makes it hard to find key content.<br><br>All of these problems can be addressed, but only through the addition of \"intranet\" approaches. Including establishing a centralised team with overall ownership of the site's IA, search, strategy, etc, etc.<br><br>So it comes down to a more nuanced \"the more things change, the more they stay the same\", than just \"why would we still do intranet 1.0\".<br><br>Social tools will change everything. But they will also leave the same core corporate needs, that must be addressed through good management. The real challenge is pencilling in some boundaries, and making sure that there are good connections across these pencil lines.<br><br>Happy to continue this conversation...<br><br>Cheers,<br>James", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-05_19:41:20", "killed": false, "user_key": "026ef1da85c7989c4761067202591f3d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/05/2007 07:41 PM", "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}, "5487215": {"up_voted": false, "ip": "", "has_replies": false, "message": "What do they use for document-centric collaboration on Facebook? How are they managing payroll, staffing/recruiting, expense reimbursement? Is the product development organization running their product lifecycle processes through Facebook? I think a Facebook-like framework definitely has merit inside the firewall, and Facebook itself certainly has a more elegant approach to some things on traditional Intranets, but in many ways it's a round hole for a square peg. Easier to create your own facebook-like framework (or get one off-the-shelf from many of the vendors entering this space), than it is to rebuild many of the core services most Intranets provide on Facebook's platfrom, IMO. Bit of a red herring.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2007-12-07_21:03:46", "killed": false, "user_key": "43f3c65d3252a0a75d2b70fcec05051e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "12/07/2007 09:03 PM", "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": null, "theme": 1, "reply_position": false, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "10392537", "user_id": "anonymous", "forum_id": "78088", "hash": 8921974856537375633}, "thread": {"days_alive": 0, "slug": "facebook_on_the_intranet_no_8212_facebook_as_the_intranet", "paginate": false, "num_pages": 1, "num_posts": 29, "per_page": 0, "total_posts": 0, "realtime_paused": true, "id": 10392537, "queued": false}, "reactions_limit": 10, "context": {"show_reply": true, "use_fb_connect": false, "forum_facebook_key": "", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": true, "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: ";
};
// 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 = '21bc467119200cb06806902fa8e2f5b0';
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;



// 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://disqus.com/forums/andrewmcafee/facebook_on_the_intranet_no_8212_facebook_as_the_intranet/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 {
			return parseInt(chunks[chunks.length-1]);
		}
	};

	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 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/andrewmcafee/_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">29</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://disqus.com/forums/andrewmcafee/facebook_on_the_intranet_no_8212_facebook_as_the_intranet/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" >Popular now</option>\
	 <option value="best" >Best Rating</option>\
	 <option value="newest" selected="selected">Newest first</option>\
	 <option value="oldest" >Oldest first</option>\
	 </select>\
	 &nbsp;\
	 </span>\
	 <span class="dsq-item-cp"><a href="http://disqus.com/forums/andrewmcafee/facebook_on_the_intranet_no_8212_facebook_as_the_intranet/">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">\
	 </div>\
		';

		
			html = Dsq.Templates.authPost() + html;
		

		
		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.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 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://disqus.com/forums/andrewmcafee/facebook_on_the_intranet_no_8212_facebook_as_the_intranet/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 ' + (reaction.source == 'backtype' ? '<a href="http://backtype.com/">BackType</a>' : '<a href="' + reaction.source_url + '">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 '';
	};

	//
	// 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 Andrew McAfee&#39;s Blog" 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:10392537" onclick="Dsq.Popup.login(); return false">Login</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> \
								 \
								&nbsp;or&nbsp; \
									 <img src="http://media.disqus.com/images/openid-login-icon.png" alt="" /> \
									 <a href="#" onclick="Dsq.OpenID.requestURL(); return false">OpenID</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'				: 'andrewmcafee',
			't'				: 'facebook_on_the_intranet_no_8212_facebook_as_the_intranet',
			// 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/andrewmcafee/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/andrewmcafee/facebook_on_the_intranet_no_8212_facebook_as_the_intranet/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 onclick="Dsq.Popup._closePopup(null, true)"><strong>' + Dsq.Strings.NO + '</strong>, ' + Dsq.Strings.NEVER_MIND + '</button>&nbsp;&nbsp;&nbsp;<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/andrewmcafee/thread.js'
			+ '?slug='	+ 'facebook_on_the_intranet_no_8212_facebook_as_the_intranet'
			+ '&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/andrewmcafee/thread.js'
			+ '?slug='	+ 'facebook_on_the_intranet_no_8212_facebook_as_the_intranet'
			+ '&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/andrewmcafee/subscribe.js'
				+'?status=' 	+ status
				+ '&slug='		+ 'facebook_on_the_intranet_no_8212_facebook_as_the_intranet'
				+ '&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 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 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.updateDaysAlive = function() {
		var days = Dsq.$('dsq-thread-days-alive').value;
		var status = Dsq.$('dsq-thread-settings-status');
		Dsq.Utils.postToUrl('http://disqus.com/forums/andrewmcafee/update_days_alive.js', {days:days,thread:Dsq.jsonData.thread.id});
		status.innerHTML = 'Saved!';
		window.setTimeout(function() { status.innerHTML = ''; }, 1000);
	};
};
// 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/10392537/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/andrewmcafee/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/andrewmcafee/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;
		});
	})();
}









(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-12571941">\
	 <div id="dsq-comment-header-12571941" class="dsq-comment-header">\
	 <cite id="dsq-cite-12571941" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12571941">dentistglasgow</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12571941" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12571941" class="dsq-comment-message">Facebook is a nice option for good social networking.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7847186">\
	 <div id="dsq-comment-header-7847186" class="dsq-comment-header">\
	 <cite id="dsq-cite-7847186" class="dsq-comment-cite">\
	 <a id="dsq-author-user-7847186" href="http://idoccorp.com/" target="_blank" rel="nofollow">document management</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7847186" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7847186" class="dsq-comment-message">You had me thinking if we can trust those cheap platforms, thanks for keeping us aware of things, you\'re really good at it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487188">\
	 <div id="dsq-comment-header-5487188" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487188" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487188" href="http://www.regim-hotelier.com" target="_blank" rel="nofollow">Regim Hotelier</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487188" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487188" class="dsq-comment-message">I canÂ’t even imagine using Facebook as an Intranet. It is already pushing too far into our personal data already!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487190">\
	 <div id="dsq-comment-header-5487190" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487190" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487190" href="http://mbacollegesinindia.blogspot.com/" target="_blank" rel="nofollow">MBA Colleges</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487190" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487190" class="dsq-comment-message">I could see a tool like this increasing productivity, collaboration, and teamwork among employees who are not physically located within 20 ft of each other, but I can see the corporate/firm hostility to this technology as well.<br><br>Most of the people making the decisions about implementation of software for communication may likely see facebook as an application that is a waste of time with no useful application in the workplace.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487189">\
	 <div id="dsq-comment-header-5487189" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487189" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487189" href="http://www.gamesnepal.com" target="_blank" rel="nofollow">Games</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487189" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487189" class="dsq-comment-message">Using facebook as an intranet is a great idea. I think that facebook has proven to give us much more than just connect with our friends.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487192">\
	 <div id="dsq-comment-header-5487192" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487192" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487192" href="http://windows-registry-cleaner-reviews.com/" target="_blank" rel="nofollow">David Loc</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487192" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487192" class="dsq-comment-message">Hi Andres!<br><br>I am a computer engineer in Vietnam. With my knowledge about computer science, I thought that It\'s totally possible to integrate Facebook into Intranet, because Intranet use a protocol the same as Internet. So the problems with Facebook on Internet come with Facebook on Intranet, including security.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487193">\
	 <div id="dsq-comment-header-5487193" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487193" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487193" href="http://www.krystal.co.uk" target="_blank" rel="nofollow">Greg</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487193" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487193" class="dsq-comment-message">I can\'t even imagine using Facebook as an Intranet. It is already pushing too far into our personal data already!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487191">\
	 <div id="dsq-comment-header-5487191" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487191" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487191" href="http://www.waldherr.org" target="_blank" rel="nofollow">Stefan Waldherr</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487191" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487191" class="dsq-comment-message">A comment to James Robertson\'s first post<br><br>&gt;All of these problems can be addressed, but only &gt;through the addition of Ã¢Â€ÂœintranetÃ¢Â€Â approaches. &gt;Including establishing a centralised team with &gt;overall ownership of the siteÃ¢Â€Â™s IA, search, &gt;strategy, etc, etc.<br><br>That reads like a demand for professional gardeners. A new role for the soon-to-be jobless intranet team?<br><br>-Stefan</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487194">\
	 <div id="dsq-comment-header-5487194" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487194" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487194" href="http://billives.typepad.com/portals_and_km/" target="_blank" rel="nofollow">Bill Ives</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487194" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487194" class="dsq-comment-message">Andrew - A long delayed thanks for the kind comments on my Serena post. It is December 23 and I am still seeing new people arrive on my blog from your post. I should check my stats more often. I have been a long admirer of your blog and your work.  Bill Ives</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487195">\
	 <div id="dsq-comment-header-5487195" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487195" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487195" href="http://www.tractionsoftware.com" target="_blank" rel="nofollow">Jordan Frank</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487195" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487195" class="dsq-comment-message">Facebook, or rather the facilities it has, are attractive as a means to fill one small slice of your intranet. Can it BE your intranet? Only as much as any other tool that lets you publish pages (pick up any blog or wiki). <br><br><a href="http://traction.tractionsoftware.com/traction/permalink/Public1205" rel="nofollow">National Health Service UK</a> built a Traction TeamPage based intranet, and also relied on newsgator. They organized it nicely around departments and areas of interest. When folks start to navigate for information - that\'s where they start, rather than starting with a human navigation approach. (that allows for following topics to people, not people to topics). <br><br>Facebook is good for what its best at: creating a personal profile and linking to people. The group model is not all too compelling so it doesn\'t make the grade for group collaboration. The messaging model is OK but confusing (I never have a clue as to whether messages I post to people will be public or private). <br><br>Is facebook good for enterprise? Maybe in some other form. Web 2.0 gives us a glimpse of what we may want for Enterprise 2.0 - but not the reality. In the enterprise, the processes, needs and use cases are different than you see in social nets on the web. <br><br>--- Jordan</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487198">\
	 <div id="dsq-comment-header-5487198" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487198" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487198" href="http://enterprisewiki.wordpress.com" target="_blank" rel="nofollow">Dimitri Lisitski</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487198" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487198" class="dsq-comment-message">Andrew,<br><br>Our company of 2200 people uses Confluence for intranet. Our division locally used SharePoint before Confluence. Everybody misses SharePoint to be honest. My recent experience was that it took 1 month to develop a survey on internal infrastructure, while it takes one hour to do the same job on SharePoint. This is just a simple example of what is missing.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487197">\
	 <div id="dsq-comment-header-5487197" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487197" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487197" href="http://www.2hotdirectory.com" target="_blank" rel="nofollow">Ken</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487197" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487197" class="dsq-comment-message">Hello Andrew, <br>IÂ’m student from UK currently studying the internet business course in London. I found this post to be very helpful and would like to share it with the people in my course, hope that\'s ok with you.<br><br>This blog is bookmarked! Thank you</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487196">\
	 <div id="dsq-comment-header-5487196" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487196" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487196" href="http://www.DylanTanaka.com" target="_blank" rel="nofollow">Dylan Tanaka</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487196" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487196" class="dsq-comment-message">Hi Andy,<br><br>I agree with Brian above. There will be no stopping the  Chineese from hacking.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487203">\
	 <div id="dsq-comment-header-5487203" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487203" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487203" href="http://www.serena.com" target="_blank" rel="nofollow">Kyle Arteaga</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487203" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487203" class="dsq-comment-message">Andrew,<br><br>Serena is a company in the midst of significant change. To enable corporate transformation  we needed a platform to communicate and collaborate with employees (as well as customers, partners, suppliers, friends and family) easily and often. It just happens that technology exists today that goes a long way towards solving this issue. <br><br>We would be happy to speak further about how as an organization we are adapting to a new way of working.  <br><br>Kyle Arteaga<br>VP, Corporate Communications</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487202">\
	 <div id="dsq-comment-header-5487202" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487202" class="dsq-comment-cite">\
	 <span id="dsq-author-user-5487202">Gina Spadoni</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487202" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487202" class="dsq-comment-message">I have been reviewing a variety of search & content management solutions in my market intelligence role, and I have concluded that while there are some interesting entry-level solutions such as the Google mini and IBM\'s new OmniFind/Yahoo! edition software, the security in them just don\'t suffice and as you mention with Facebook, aren\'t scalable. <br><br>Furthermore, while we could theoretically embed those solutions into an existing Sharepoint site (as we all know their search isn\'t up to snuff, and from what I\'ve read about their upcoming Express solution it still won\'t be), that cobbled- together result wouldn\'t be nearly as easy to use as a Facebook type solution.<br><br>What I settled on recommending was a Traction TeamPage FAST module solution, which has an amazingly easy to use interface with enterprise level security functionality, and it\'s relatively inexpensive to implement. Furthermore, it requires very little IT support, which is key to my non-profit business. I first discovered Traction at the April SCIP conference in NYC, and have been working to make a business justification ever since. <br><br>I think it is this type of product -- one that combines blog/wiki technologies with enterprise security needs that will ultimately "win" the content/knowledge management "war." <br><br>I welcome any thoughts on Traction\'s solutions (<a href="http://traction.tractionsoftware.com/traction" rel="nofollow">http://traction.tractionsoftware.com/traction</a>). I have yet to know if it will pass my stakeholder\'s collective muster...but my fingers AND toes are crossed! <br><br>Thanks for the interesting entry!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487199">\
	 <div id="dsq-comment-header-5487199" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487199" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487199" href="http://www.clatoro.com" target="_blank" rel="nofollow">Claus</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487199" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487199" class="dsq-comment-message">Interesting idea to use Facebook as the Intranet. But Chris already mentioned the problems for an enterprise regarding data ownership and also the security of intellectual property.<br><br>Using Facebook as the basis for an Intranet is much more interesting, especially with an integration of e. g. del.icio.us. So the associates could organize themselves in different groups e. g. sales, engineering, quality etc. and than they can search within the favorites saved in del.icio.us for this specific group in Facebook. So everybody has easy and fast access to relevant information concerning his work.<br><br>The main problem is only, how to convince the associates to collaborate and to offer information to others, because sometimes it is their capital for the job in the enterprise.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487201">\
	 <div id="dsq-comment-header-5487201" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487201" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487201" href="http://www.learningapi.com/blog" target="_blank" rel="nofollow">Larry Bouthillier</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487201" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487201" class="dsq-comment-message">Hi Andy,<br><br>As someone who\'s been developing a Facebook application for a certain well-known university, I find an element of truth (with a caveat) to the notion that Facebook can be your Intranet platform.   Facebook is really great at connecting your Facebook social graph with your institutional identities (departments, locations, project teams, course enrollment, etc). <br><br>From that, you can drive traffic to your institutional applications that handle the real business.  Facebook will let you iFrame in limited views of these business apps, but the real value it provides is in connections and context, not content.  <br><br>In the end, I don\'t think Facebook replaces your intranet apps or even your portal, but it complements them.  Even more complementary will be open and <b>deeply integratable</b> social-graph platforms like OpenSocial, should they gain traction. <br><br>I\'ve written a follow up on my blog, <a href="http://www.learningapi.com/blog/archives/000127.html" rel="nofollow">Facebook and Academic Institutions - Content or Context?</a><br><br>--Larry</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487200">\
	 <div id="dsq-comment-header-5487200" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487200" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487200" href="http://www.lasvegastourismblog.com" target="_blank" rel="nofollow">Las Vegas Tourism</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487200" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487200" class="dsq-comment-message">Hi Andrew, I\'m a new reader of your blog. I really enjoy reading your articles and I love your writing style.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487207">\
	 <div id="dsq-comment-header-5487207" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487207" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487207" href="http://www.BizTechTalk.com/" target="_blank" rel="nofollow">Dan Keldsen</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487207" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487207" class="dsq-comment-message">James brings up valid points, and after all, he has spent much of his career assisting organizations with their Intranets (known in some circles as "The Intranet Guru" or as mentioned in Aarhus, Denmark at a cmf2007 gathering about a month ago, "The Intranet God" [a lesser known Norse god?]).<br><br>His worries are, essentially, mine as well. Self-organization and "emergence" are fine and well, and CAN work wonders, but they don\'t ALWAYS do so.<br><br>Which is why (and yes, I beat this to death in my MOSS 2007 presentation James...), Intranets, whether 1.0, 2.0 or x.x, run a danger of the "kudzu factor" - where lack of information isn\'t the problem, but TOO MUCH, and without organization of any kind.<br><br>I believe *a* key of Enterprise 2.0 is the ability for intelligence and organizing aspects to emerge from the actions of people (the social aspect), but while we\'re providing that infrastructure, there is no good reason not to provide the OTHER and KNOWN TO WORK principles that drive sensible Information Architecture work.<br><br>Are traditional taxonomies slow to change, and (at times) painful to adapt? Yes, but stability = findability, and adding folksonomies/tagging supplements that with a more dynamic organizing mechanism, which can then be absorbed into the existing taxonomy (or more likely, loosely connected taxonomIES).<br><br>And while I appreciate that Facebook is becoming quite the platform, for many purposes, given "BeaconGate" and the amount of noise in general that is swarming onto the feed at Facebook, it might be hard (and potentially unsafe) to jump onto Facebook as your corporate intranet. Jump in if you like, but be aware of what you\'re getting into.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487204">\
	 <div id="dsq-comment-header-5487204" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487204" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487204" href="http://www.swordplay.tv" target="_blank" rel="nofollow">steven mandzik</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487204" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487204" class="dsq-comment-message">Andy - thanks for the recognition. As a relative youngblood coming onto the scene. I think it is more about personal beliefs than any corporate issue. The benefits, scalabity, and ease of use stand on their own. <br><br>It reminds me of the party I just came from. At the party a friend had an amazing game all about music. To play it a laptop was needed. When asking for a laptop most of the party crowd were affronted, like "leave work at work". I was shocked, all of the parties i have been to since high school have had some sort of technology aspect to them. <br><br>It\'s like when I was a kid playing video games and trying to convince my parents that they were of value. I get that same sort of feeling nowadays. <br><br>Older folks just don\'t look at the web as a place for work. It is still the place for wasting time,  browsing, and shopping. Yet it seems to be the direction that work is going. I mean can anyone imagine a knowledge worker, ten years from now not being connected? <br><br>I don\'t think anyone can, but this generation of workers, baby boomers, and managers don\'t see that...<br><br><br>P.S. Intellipedia is the wiki and the other tools are stand alone tools incorporated into the broader Enterprise 2.0 suite. The <a href="http://en.wikipedia.org/wiki/Intellipedia" rel="nofollow">wikipedia page</a> covers it pretty well.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487205">\
	 <div id="dsq-comment-header-5487205" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487205" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487205" href="http://thebdgway.blogspot.com" target="_blank" rel="nofollow">Chris Bucchere</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487205" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487205" class="dsq-comment-message">Hi Andrew,<br><br>Great article -- I\'ve been enjoying reading your stuff for the past six months or so but this is the first time I\'ve commented.<br><br>I think it\'s really important to draw a distinction between using a Web 2.0 open source product (e.g. MediaWiki) as part of your corporate or government intranet vs. using Facebook, LinkedIn, Plaxo or some other public internet service *as* your intranet.<br><br>The fundamental difference is data ownership -- even though the internet makes the location of your data almost transparent, large corporations and the government need to *own* their data. For most corporations, this means putting it -- and keeping it -- behind the firewall. For some ulta-paranoid government agencies, it means actually restricting certain data to private, closed networks which can\'t even talk to their peer networks, let alone the internet.<br><br>What Serena is doing is the right idea, but the wrong execution. Same for any major company subject to SOX or HIPAA who uses Google documents -- this model just doesn\'t work. However, I strongly support using W2.0 open source software behind the firewall. It\'s really a case of apples and oranges here and your article doesn\'t draw a distinction between the two.<br><br>Now if only we had an "enterprise" edition of Facebook that you could install and run behind the firewall . . . then we could have the best of both worlds!<br><br>Best regards,<br><br>Chris Bucchere<br><a href="http://thebdgway.blogspot.com" rel="nofollow">http://thebdgway.blogspot.com</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487206">\
	 <div id="dsq-comment-header-5487206" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487206" class="dsq-comment-cite">\
	 <span id="dsq-author-user-5487206">bill benac</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487206" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487206" class="dsq-comment-message">"So what are the good reasons for continuing to invest in and forge ahead with 1.0 Intranets? This is a serious question, and IÂ’d love to hear peopleÂ’s experiences and opinions... Is it security? If so, could you please be as specific as possible about the nature of the security concerns?"<br><br>Your argument loses some of its power here. There\'s a major security issue with using a public site such as Facebook as a company intranet in that most if its traffic (though not login) is trasmitted in cleartext over HTTP. It\'s relatively easy to snoop that data. Companies usually require secure VPN for remote access to the intranet so this problem is avoided. Further, if your competitor can accessing your intranet based on his knowledge of your login, and if he can use this from any comfortable location he chooses, then you have again a major security problem. This is why companies often use technologies like RSA\'s SecurID, so that no one can carry the authentication information in their head. <br><br>The case that the CIA uses open Web 2.0 software isn\'t related to the security concerns of the public internet. Though there are major governance issues to keep user-generated content appropriate in organizations.<br><br>Facebook is not a viable solution for mainline companies. Let them retool their offering for the corporation if that\'s what people are interested in (e.g. give companies their own url such as <a href="https://myco.facebook.com" rel="nofollow">https://myco.facebook.com</a>, let the corporate administrator manage who can log in, let the corporate admin manage who they can be friends with, what applications they can add, what types of information can get into their news feed, offer a SecureID feature, etc.). Until then, serious companies should stay away.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487215">\
	 <div id="dsq-comment-header-5487215" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487215" class="dsq-comment-cite">\
	 <span id="dsq-author-user-5487215">Jay Simons</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487215" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487215" class="dsq-comment-message">What do they use for document-centric collaboration on Facebook? How are they managing payroll, staffing/recruiting, expense reimbursement? Is the product development organization running their product lifecycle processes through Facebook? I think a Facebook-like framework definitely has merit inside the firewall, and Facebook itself certainly has a more elegant approach to some things on traditional Intranets, but in many ways it\'s a round hole for a square peg. Easier to create your own facebook-like framework (or get one off-the-shelf from many of the vendors entering this space), than it is to rebuild many of the core services most Intranets provide on Facebook\'s platfrom, IMO. Bit of a red herring.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487213">\
	 <div id="dsq-comment-header-5487213" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487213" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487213" href="http://www.infocorp.com.uy" target="_blank" rel="nofollow">Gabriel Lopez</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487213" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487213" class="dsq-comment-message">What exactly does it mean for you to invest in 1.0 intranets? For all I know all major intranet software vendors are adopting 2.0 tools&practices;, and migrations are taking place. Is it in-house hosting 1.0 for you?<br><br>Btw one feature I would miss going with facebook-like solutions would be MS Office integration, that you naturally get out of the box with Sharepoint for example.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487212">\
	 <div id="dsq-comment-header-5487212" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487212" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487212" href="http://www.kinlane.com" target="_blank" rel="nofollow">Kin Lane</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487212" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487212" class="dsq-comment-message">I think on the surface it is the traditional arguments of security, control, backups, reliability, etc.  All the usual concerns of a company.  <br><br>However deeper I think it is really and understanding of what is going on.  I think most management / executives / decision makers just barely understand the IT infrastructure they have and there is just too many unknowns to wrap their heads around with Enterprise IT 2.0.  <br><br>There will be a saturation time period that will need to happen before more top level management feels warm and fuzzy about it.<br><br>Just my 3 cents....</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487208">\
	 <div id="dsq-comment-header-5487208" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487208" class="dsq-comment-cite">\
	 <span id="dsq-author-user-5487208">Brian</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487208" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487208" class="dsq-comment-message">Hi, is it any wonder that the chinese are hacking the worlds DNI equivalent systesm if they are using the likes of Facebook?? Its a joke!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487210">\
	 <div id="dsq-comment-header-5487210" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487210" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487210" href="http://netjmc.typepad.com/globally_local/" target="_blank" rel="nofollow">Jane McConnell</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487210" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487210" class="dsq-comment-message">Good question. Yes there\'s a general fear. In my Global Intranet Strategies Survey conducted from June through August 2007, in the 2.0 section, the primary reason that 2.0 was not being tested in enterprises was "our culture is not ready". 72% of the enterprises have implemented or are beginning to use 2.0 tools on intranets (out of 178 companies from around the world of all sizes from 1000 to over 100,000 employees). Out of 51 who responded to the question "why not?", 38 gave the answer I quoted above.<br>Working with very large organisations on their intranets for a number of years, I totally understand why they are not evolving en masse to using wikis and Facebook type tools. An intranet landscape serves many purposes and many types of employees across many cultures. They are a source of reference information, offer links to employee self service and business application among other things. Their use as a "people-connecting tool", and a place to build collaboration spaces can often be better served with 2.0 tools than traditional tools but migrating the whole intranet platform does not seem to be a realistic way to meet all needs in very large organisations. <br>That said, I think they would be doing much more if they realisd the potential. <br>One very large organisation has built an internal wikipedia which "lies on top of" the intranet, serving as a introductory layer of collective explanations and links to internal content and external content. It will be interesting to see if more and more content gradually moves to the wiki layer over time. <br>I presented a "Intranet 2.0 Maturity" - a summary of the 2.0 intranet data from my 2007 survey in a presentation I gave yesterday at Online Information in London. It can be downloaded from my web site in the documents section (<a href="http://www.netjmc.com/engl/doc001.html" rel="nofollow">www.netjmc.com/engl/doc001.html</a>. It provides an insight into which tools are being adopted by companies, based on 178 organisations. <br>Final note: one interesting finding is that organisations where the intranet is "the way of working today" are adopting the tools faster than those who say the intranet is a couple years or more away from being "the way of working".</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487211">\
	 <div id="dsq-comment-header-5487211" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487211" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487211" href="http://blogs.zdnet.com/Howlett" target="_blank" rel="nofollow">Dennis Howlett</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487211" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487211" class="dsq-comment-message">It depends on which E2.0 software we\'re talking about. Most wikis can be secured behind a firewall, which is what most companies want so it\'s not an issue. <br><br>You\'d hardly call Facebook secure from an enterprise perspective if only because the company is selling the aggregated data for advertising purposes. There is no apparent distinction between data in private groups and that in the public gaze from that perspective.  <br><br>I said a while back that FB is a great metaphor for what might be used behind the firewall but so far the company has shown little interest in taking up that idea.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5487214">\
	 <div id="dsq-comment-header-5487214" class="dsq-comment-header">\
	 <cite id="dsq-cite-5487214" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5487214" href="http://www.steptwo.com.au/columntwo" target="_blank" rel="nofollow">James Robertson</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5487214" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5487214" class="dsq-comment-message">Hi Andrew,<br><br>This is not an either-or situation.<br><br>Some of the confusion probably arises from the uncertainty around "traditional" intranets. While most organisations have them, there is little opportunity to share approaches, or to understand "best practices".<br><br>(This is something we\'ve been doing a lot of writing on over the years.)<br><br>We\'re now seeing wikis and social networking tools used as an intranet. That is, as a store of corporate knowledge, alongside the more direct collaboration use-cases.<br><br>In these situations, all the same "intranet" challenges must be addressed. Staff must be able to find information, it must be written and communicated in a useful fashion, search must work well, content must be kept up to date, etc, etc.<br><br>For example, I had the pleasure of seeing the Avenue A | Razorfish intranet when I was recently in New York. It\'s great, and it\'s only going to get better and better.<br><br>For all that, however, it\'s already starting to feel crowded, confused and cluttered. There is a reliance on search, and as the volume of content grows, this will inevitably reduce in effectiveness. There is little information architecture, and this makes it hard to find key content.<br><br>All of these problems can be addressed, but only through the addition of "intranet" approaches. Including establishing a centralised team with overall ownership of the site\'s IA, search, strategy, etc, etc.<br><br>So it comes down to a more nuanced "the more things change, the more they stay the same", than just "why would we still do intranet 1.0".<br><br>Social tools will change everything. But they will also leave the same core corporate needs, that must be addressed through good management. The real challenge is pencilling in some boundaries, and making sure that there are good connections across these pencil lines.<br><br>Happy to continue this conversation...<br><br>Cheers,<br>James</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=andrewmcafee&t=facebook_on_the_intranet_no_8212_facebook_as_the_intranet&to_redirect=' + encodeURIComponent(window.location) + '&ifrs=' + encodeURIComponent(disqus_iframe_css);
			}
		}
	}

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

	




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');
}

})();




