




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": {"e521312db0e2961857ac8912738d9559": {"username": "Jonathan Greene", "tumblr": "", "display_name": "Jonathan Greene", "url": "http://disqus.com/guest/e521312db0e2961857ac8912738d9559/", "registered": false, "linkedin": "", "blog": "http://www.atmasphere.net/wp", "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": ""}, "e52a0154583a624a9cd24dc5a95c912e": {"username": "Tony", "tumblr": "", "display_name": "Tony", "url": "http://disqus.com/guest/e52a0154583a624a9cd24dc5a95c912e/", "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": ""}, "a8dfb17f9483b5eb3b489e87578f7bbf": {"username": "cori schlegel", "tumblr": "", "display_name": "cori schlegel", "url": "http://disqus.com/guest/a8dfb17f9483b5eb3b489e87578f7bbf/", "registered": false, "linkedin": "", "blog": "http://cori.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": ""}, "bd60630eaa21ef10642601a53a2d47b2": {"username": "George Brisbin", "tumblr": "", "display_name": "George Brisbin", "url": "http://disqus.com/guest/bd60630eaa21ef10642601a53a2d47b2/", "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": ""}, "133b84c84209f21d0ea5b6fbc15ec240": {"username": "Joseph A. di Paolantonio", "tumblr": "", "display_name": "Joseph A. di Paolantonio", "url": "http://disqus.com/guest/133b84c84209f21d0ea5b6fbc15ec240/", "registered": false, "linkedin": "", "blog": "http://press.teleinteractive.net/cynasuralog", "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": ""}, "5f89d3df08b8dedac1a0fde900a586db": {"username": "Roger Benningfield", "tumblr": "", "display_name": "Roger Benningfield", "url": "http://disqus.com/guest/5f89d3df08b8dedac1a0fde900a586db/", "registered": false, "linkedin": "", "blog": "http://admin.support.journurl.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3553f5e0db0fd1ec4e40a932a2d8f5b3": {"username": "scobleizer", "tumblr": "", "display_name": "scobleizer", "url": "http://disqus.com/guest/3553f5e0db0fd1ec4e40a932a2d8f5b3/", "registered": false, "linkedin": "", "blog": "http://scobleizer.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/4069/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "70fe121c9172e9882762d7f28f233567": {"username": "Rogers Cadenhead", "tumblr": "", "display_name": "Rogers Cadenhead", "url": "http://disqus.com/guest/70fe121c9172e9882762d7f28f233567/", "registered": false, "linkedin": "", "blog": "http://www.cadenhead.org/workbench/", "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": ""}, "fd07ba5eabf3a6bdc4462405c5ecaf26": {"username": "Aaron", "tumblr": "", "display_name": "Aaron", "url": "http://disqus.com/guest/fd07ba5eabf3a6bdc4462405c5ecaf26/", "registered": false, "linkedin": "", "blog": "http://www.aaronintj.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": ""}, "f973a2d1b6d2bf8c242edc06811b5155": {"username": "Tim", "tumblr": "", "display_name": "Tim", "url": "http://disqus.com/guest/f973a2d1b6d2bf8c242edc06811b5155/", "registered": false, "linkedin": "", "blog": "http://www.mutantpop.net/radioclash/", "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": ""}, "2378b474e8eadf5da80e86c2bbc75a74": {"username": "Dave Winer", "tumblr": "", "display_name": "Dave Winer", "url": "http://disqus.com/guest/2378b474e8eadf5da80e86c2bbc75a74/", "registered": false, "linkedin": "", "blog": "http://www.scripting.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/636/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "a329ba9b39d1912ecd0469e59d443769": {"username": "John", "tumblr": "", "display_name": "John", "url": "http://disqus.com/guest/a329ba9b39d1912ecd0469e59d443769/", "registered": false, "linkedin": "", "blog": "http://www.syntagmamedia.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": ""}, "7ad3fce453e681c49da4529ea90b052b": {"username": "Matth Nortwan", "tumblr": "", "display_name": "Matth Nortwan", "url": "http://disqus.com/guest/7ad3fce453e681c49da4529ea90b052b/", "registered": false, "linkedin": "", "blog": "http://www.porn4sex.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ea49e2ad3afa78628f98e517d2c7f903": {"username": "Ervin", "tumblr": "", "display_name": "Ervin", "url": "http://disqus.com/guest/ea49e2ad3afa78628f98e517d2c7f903/", "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": ""}, "76d1e9dacfcaa3f786b517c41b2817f8": {"username": "Gary Potter", "tumblr": "", "display_name": "Gary Potter", "url": "http://disqus.com/guest/76d1e9dacfcaa3f786b517c41b2817f8/", "registered": false, "linkedin": "", "blog": "http://www.acemakr.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": ""}, "f055f13c44867e4c4c1fe25e0edb2338": {"username": "eddie", "tumblr": "", "display_name": "eddie", "url": "http://disqus.com/guest/f055f13c44867e4c4c1fe25e0edb2338/", "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": ""}, "d2ffa472b72f308b8b5b6cc8ea528e4a": {"username": "Ian Tyrrell", "tumblr": "", "display_name": "Ian Tyrrell", "url": "http://disqus.com/guest/d2ffa472b72f308b8b5b6cc8ea528e4a/", "registered": false, "linkedin": "", "blog": "http://home.exetel.com.au/rodeoclown/", "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": ""}, "941c459821ed87cd80360befed606837": {"username": "gorbett", "tumblr": "", "display_name": "gorbett", "url": "http://disqus.com/guest/941c459821ed87cd80360befed606837/", "registered": false, "linkedin": "", "blog": "http://www.briangorbett.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": ""}, "e59ff75c01e993021b88b551734f566d": {"username": "Steve", "tumblr": "", "display_name": "Steve", "url": "http://disqus.com/guest/e59ff75c01e993021b88b551734f566d/", "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": ""}, "81bac985d821a7b257d139d27711e386": {"username": "Rick", "tumblr": "", "display_name": "Rick", "url": "http://disqus.com/guest/81bac985d821a7b257d139d27711e386/", "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": ""}, "a3f613c225f7161209144b382c1ce6f2": {"username": "Jared", "tumblr": "", "display_name": "Jared", "url": "http://disqus.com/guest/a3f613c225f7161209144b382c1ce6f2/", "registered": false, "linkedin": "", "blog": "http://jared.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": ""}, "ee8a12eb57eff1e0b1960536df44f4dd": {"username": "Brad Gibson", "tumblr": "", "display_name": "Brad Gibson", "url": "http://disqus.com/guest/ee8a12eb57eff1e0b1960536df44f4dd/", "registered": false, "linkedin": "", "blog": "http://www.bradfordgibson.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c7b7720f31c54099b9447293a3c5f6cd": {"username": "Scott", "tumblr": "", "display_name": "Scott", "url": "http://disqus.com/guest/c7b7720f31c54099b9447293a3c5f6cd/", "registered": false, "linkedin": "", "blog": "http://www.lazycoder.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": ""}, "75c7dae24bcd436235dd5ca728cef066": {"username": "Adam", "tumblr": "", "display_name": "Adam", "url": "http://disqus.com/guest/75c7dae24bcd436235dd5ca728cef066/", "registered": false, "linkedin": "", "blog": "http://www.bladam.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "be73b6ce436e594cb6bd080a136cf6e5": {"username": "Patrick", "tumblr": "", "display_name": "Patrick", "url": "http://disqus.com/guest/be73b6ce436e594cb6bd080a136cf6e5/", "registered": false, "linkedin": "", "blog": "http://patrick.geek.nz/", "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": ""}, "42f5e33b2fc0b333ff3966763ef72377": {"username": "Brad", "tumblr": "", "display_name": "Brad", "url": "http://disqus.com/guest/42f5e33b2fc0b333ff3966763ef72377/", "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": ""}, "393eb9cc19620e824fc7889ae0030786": {"username": "Aaron", "tumblr": "", "display_name": "Aaron", "url": "http://disqus.com/guest/393eb9cc19620e824fc7889ae0030786/", "registered": false, "linkedin": "", "blog": "http://alarmless.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": ""}, "24973e5b118aedfb306dadb38c8c6305": {"username": "John Furrier", "tumblr": "", "display_name": "John Furrier", "url": "http://disqus.com/guest/24973e5b118aedfb306dadb38c8c6305/", "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": ""}, "dahowlett": {"username": "dahowlett", "tumblr": "", "display_name": "dahowlett", "url": "http://disqus.com/dahowlett/", "registered": true, "linkedin": "", "blog": "http://www.dahowlett.com", "remote_domain": null, "points": 2, "facebook": "http://www.facebook.com/dahowlett", "avatar": "http://media.disqus.com/uploads/users/1740/avatar92.jpg", "delicious": "dahowlett", "is_remote": false, "verified": true, "flickr": "dahowlett", "twitter": "", "remote_domain_name": ""}, "2ec837c752575a42d0708354345c45bb": {"username": "eu f\u00fchrerschein", "tumblr": "", "display_name": "eu f\u00fchrerschein", "url": "http://disqus.com/guest/2ec837c752575a42d0708354345c45bb/", "registered": false, "linkedin": "", "blog": "http://www.eu-fahrschulcenter.de/", "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": ""}, "2b6c1ba0915a97a81d59ca1e101e6d74": {"username": "Phil Ringnalda", "tumblr": "", "display_name": "Phil Ringnalda", "url": "http://disqus.com/guest/2b6c1ba0915a97a81d59ca1e101e6d74/", "registered": false, "linkedin": "", "blog": "http://weblog.philringnalda.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": ""}, "ae72cd7ad0ec9575cb386298ecfb3a06": {"username": "drumsnwhistles", "tumblr": "", "display_name": "drumsnwhistles", "url": "http://disqus.com/guest/ae72cd7ad0ec9575cb386298ecfb3a06/", "registered": false, "linkedin": "", "blog": "http://drumsnwhistles.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": ""}, "74aec0b2a8bbbf4e18377b7b3f8c268c": {"username": "weiyen", "tumblr": "", "display_name": "weiyen", "url": "http://disqus.com/guest/74aec0b2a8bbbf4e18377b7b3f8c268c/", "registered": false, "linkedin": "", "blog": "http://tcs01.no-ip.com/puregeekiness", "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": ""}, "4e5e6513d30020a0e8b7c050413b0c63": {"username": "Mark Napper", "tumblr": "", "display_name": "Mark Napper", "url": "http://disqus.com/guest/4e5e6513d30020a0e8b7c050413b0c63/", "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": ""}, "53f77b0bf3bd14623ac31bdb7276126d": {"username": "theh", "tumblr": "", "display_name": "theh", "url": "http://disqus.com/guest/53f77b0bf3bd14623ac31bdb7276126d/", "registered": false, "linkedin": "", "blog": "http://blog.searchofmp3.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": ""}, "d623d872703d870edcb68a1e8e429836": {"username": "Damon", "tumblr": "", "display_name": "Damon", "url": "http://disqus.com/guest/d623d872703d870edcb68a1e8e429836/", "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": ""}, "77c58f89de3f72d2bdeaf05e3365f34a": {"username": "Greg Caulder", "tumblr": "", "display_name": "Greg Caulder", "url": "http://disqus.com/guest/77c58f89de3f72d2bdeaf05e3365f34a/", "registered": false, "linkedin": "", "blog": "http://www.door2doortechsolutions.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": ""}, "a5635e0d885ff8e47de9adedf401856f": {"username": "Adrian", "tumblr": "", "display_name": "Adrian", "url": "http://disqus.com/guest/a5635e0d885ff8e47de9adedf401856f/", "registered": false, "linkedin": "", "blog": "http://quicksurf.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": ""}, "65b8691268a425b6b31f198ff830cc10": {"username": "Geodog", "tumblr": "", "display_name": "Geodog", "url": "http://disqus.com/guest/65b8691268a425b6b31f198ff830cc10/", "registered": false, "linkedin": "", "blog": "http://www.geodog.us/", "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": ""}, "ce83a8e239c0cfce3488d3fec4d5d8de": {"username": "Julian Bond", "tumblr": "", "display_name": "Julian Bond", "url": "http://disqus.com/guest/ce83a8e239c0cfce3488d3fec4d5d8de/", "registered": false, "linkedin": "", "blog": "http://www.ecademy.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": ""}, "97fe0d8faf4ab9a39145918b242a9d1b": {"username": "RedKite", "tumblr": "", "display_name": "RedKite", "url": "http://disqus.com/guest/97fe0d8faf4ab9a39145918b242a9d1b/", "registered": false, "linkedin": "", "blog": "http://www.qbitx.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": ""}, "9904b127bff836c939152dcd300ea9ea": {"username": "VxJasonxV", "tumblr": "", "display_name": "VxJasonxV", "url": "http://disqus.com/guest/9904b127bff836c939152dcd300ea9ea/", "registered": false, "linkedin": "", "blog": "http://vxjasonxv.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": ""}, "767fc9c115a1b989744c755db47feb60": {"username": "Matt", "tumblr": "", "display_name": "Matt", "url": "http://disqus.com/guest/767fc9c115a1b989744c755db47feb60/", "registered": false, "linkedin": "", "blog": "http://photomatt.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/3/8869/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "dba4734526207d4021754efc5ac357f1": {"username": "Patrick", "tumblr": "", "display_name": "Patrick", "url": "http://disqus.com/guest/dba4734526207d4021754efc5ac357f1/", "registered": false, "linkedin": "", "blog": "http://strangnet.se/blog", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/189/507/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "e98703af57389bb9e020d42b7ad1f60d": {"username": "Greg", "tumblr": "", "display_name": "Greg", "url": "http://disqus.com/guest/e98703af57389bb9e020d42b7ad1f60d/", "registered": false, "linkedin": "", "blog": "http://www.scamcity.co.uk/journal/", "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": ""}, "42c12c9fc1b5de2ae2a758a692bb521d": {"username": "Caius Durling", "tumblr": "", "display_name": "Caius Durling", "url": "http://disqus.com/guest/42c12c9fc1b5de2ae2a758a692bb521d/", "registered": false, "linkedin": "", "blog": "http://applemacfreak.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": ""}, "e4470062772a42731d6dcd4d916a478a": {"username": "domain", "tumblr": "", "display_name": "domain", "url": "http://disqus.com/guest/e4470062772a42731d6dcd4d916a478a/", "registered": false, "linkedin": "", "blog": "http://www.domainunion.de/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": true, "name": "Scobleizer", "streaming_realtime": true, "url": "scobleizer", "allow_anon_post": true, "reactions_enabled": true, "reply_position": 1, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": true, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "scobleizer", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-17_11:53:40", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": "locked"}, "realtime_paused": false, "posts": {"9619502": {"up_voted": false, "ip": "", "has_replies": false, "message": "i am just starting out blogging and have found that blogging services vary and wish they all were as cool as channel9. however, i have found one that is super cool and is really \"growing up\"... imeem (<a href=\"http://www.imeem.com\" rel=\"nofollow\">www.imeem.com</a>). it does not have all the web features yet, but the constant development really is encouraging.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_20:51:19", "killed": false, "user_key": "941c459821ed87cd80360befed606837", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619503": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, before the XML geeks swoop down and start picking this to death, the point is that, as a non-technical user, you're right to insist that RSS work well for your users. You want to provide them with full feeds, you want to be able to view your feed, and have some idea of what's going on when you look. That's what I get from your message. Weird things like CDATA, while they're valid and definitely not funky (in a technical sense) are confusing. I support you in what you want, although other techies will say there's no reason for the technology to be transparent to you, I disagree. People don't things they don't understand, and it's certainly possible to do it in a way that you can understand, without giving up any of the power and depth that geeks like so much. I'd also be happy to work with Matt to make you happy. I'm pretty sure I know what you want. Keep on truckin. Dave", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_20:54:08", "killed": false, "user_key": "2378b474e8eadf5da80e86c2bbc75a74", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619504": {"up_voted": false, "ip": "", "has_replies": false, "message": "Dave: yeah, I had 15,000 subscribers on NewsGator and 9,000 on Bloglines to my old Radio UserLand feed. I never had a complaint. So, what I want is my old feed. Don't mess with what works.<br><br>I'm cool with doing a super-dooper Atom feed too, but don't mess up my RSS feed. That MUST work like my old feed.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_20:57:14", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619505": {"up_voted": false, "ip": "", "has_replies": false, "message": "You could always shoot the feed through feedburner and have it take care of what you need.  You get tracking out of the deal as well which is a nice bonus.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:00:07", "killed": false, "user_key": "e521312db0e2961857ac8912738d9559", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619506": {"up_voted": false, "ip": "", "has_replies": false, "message": "Erm, I hate to point this out, but your feed does validate..<br><br><a href=\"http://feedvalidator.org/check?url=http://scobleizer.wordpress.com/feed/\" rel=\"nofollow\">http://feedvalidator.org/check?url=http://scobl...</a><br><br>And I get the full articles in NetNewsWire as well...<br><br>I got that feed from the big blue RSS button that pops up in the URL bar in safari.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:03:05", "killed": false, "user_key": "42c12c9fc1b5de2ae2a758a692bb521d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619507": {"up_voted": false, "ip": "", "has_replies": false, "message": "I use the feedburner plug-in for my Wordpress feeds.  Also, in the Control Panel under \"Reading\" there is an option to turn on full feeds.  It took me a couple of weeks to figure that one out -- My sense is that it should default to full feeds rather than an excerpt, but it is there.<br><br>I haven't had any trouble at all with Feedburner, and as far as I can tell, the feeds aren't 'funky' either.  You might want to give it a whirl.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:03:47", "killed": false, "user_key": "ae72cd7ad0ec9575cb386298ecfb3a06", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619508": {"up_voted": false, "ip": "", "has_replies": false, "message": "Caius: my feed did not validate just an hour ago. So, things are already changing. Which is why WordPress is getting the attention of bloggers (it was praised several times yesterday on stage).<br><br>Drumsnwhistles: you are giving up a LOT by going with Feedburner: control of your destiny. Here's something to think about: what if Feedburner goes out of business? You're screwed cause all your readers are on Feedburner.<br><br>Or, what if they decide to start putting ads in your feeds? You're screwed. I'm not ready to do that yet.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:08:56", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619509": {"up_voted": false, "ip": "", "has_replies": false, "message": "Point well taken -- I'll have to think on that some more....but you can still turn on full feeds in the WP control panel. :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:10:37", "killed": false, "user_key": "ae72cd7ad0ec9575cb386298ecfb3a06", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619510": {"up_voted": false, "ip": "", "has_replies": false, "message": "Your \"funky\" feed has been working perfectly well for me since Day 1 (in Bloglines), and to these eyes it's indistinguishable from your last feed. I'm not really clear on what the complaints are.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:15:17", "killed": false, "user_key": "81bac985d821a7b257d139d27711e386", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619511": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>IMHO, you're making a mountain out of a molehill with this.  Seems you like you have two very easy and effective solutions here:<br><br>1) Ditch RSS and go with Atom.  Seriously.  I can't think of a single major newsreader that can't handle Atom without blinking.<br><br>AND/OR<br><br>2) Go with Feedburner.  I LOVE this service.  Great tracking, easy to set up, and shows human readable xml feeds.<br><br>Frankly, I'd avoid going with a <a href=\"http://Wordpress.com\" rel=\"nofollow\">Wordpress.com</a> blog for the same reason I think a zillion others have noted in the past:  why tie you blog's stability, brand, and hamper your movability to a third party?  Heck, even Feedburner lets you use your own domain URL (albeit for a small extra fee).<br><br>Seriously, why would anyone with technical prowess want to go with <a href=\"http://somename.3rdpartysite.com\" rel=\"nofollow\">somename.3rdpartysite.com</a> when they can have <a href=\"http://somename.com\" rel=\"nofollow\">somename.com</a> or .net?  It just doesn't make any sense to me.  What possible value could you be deriving from a hosted Wordpress solution?<br><br>And no, I'm not trying to pick on Matt here.  I've not used WordPress, but I respect the tool and the people behind it... and I know it's a really fine blogging app.  I just don't get the hosted thing in your context.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:15:51", "killed": false, "user_key": "75c7dae24bcd436235dd5ca728cef066", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619512": {"up_voted": false, "ip": "", "has_replies": false, "message": "What possible value do I have from having a hosted Wordpress solution? Easy. I don't have to do any work.<br><br>There are TONS of people who don't want to do any work when starting up their blogs. I want to be more like the 98% than the 2%. By using the same services that other people will be using I will have something to say. And, I'll learn about those services in an intimate way.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:20:18", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619513": {"up_voted": false, "ip": "", "has_replies": false, "message": "Adam: I'm not making a moutain out of a molehill. My old feed worked. It had more than 25,000 people using it. Think about that sometime.<br><br>This new feed is getting complaints.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:21:40", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619514": {"up_voted": false, "ip": "", "has_replies": false, "message": "Understood, Robert, but if I understood you correctly, you noted that your Atom feed looks / works just fine.  Why not just do a redirect and then *voila*?  Unless (and I admit this could be a consideration) you're worried that there'd be problems you hadn't caught with the Atom feed, too.<br><br>So, yeah, I suppose that I was a bit too brusque to simply suggest that this wasn't a problem at all... but I stand by my assertion that it's likely to be easily solvable.<br><br>(and for the record... I use NewzCrawler, and I never noticed any problems at all with your WordPress feed)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:35:44", "killed": false, "user_key": "75c7dae24bcd436235dd5ca728cef066", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619515": {"up_voted": false, "ip": "", "has_replies": false, "message": "FWIW, I've never had a problem with your feed, using<br><br><a href=\"http://scobleizer.wordpress.com/feed/\" rel=\"nofollow\">http://scobleizer.wordpress.com/feed/</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:36:16", "killed": false, "user_key": "42f5e33b2fc0b333ff3966763ef72377", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619516": {"up_voted": false, "ip": "", "has_replies": false, "message": "&gt;your Atom feed looks / works just fine.<br><br>I don't know that to be the case. I don't use Atom feeds. I use RSS. I still don't understand what the Atom feed buys me that my old feed didn't. And, are you saying there is no aggregator out there that doesn't work with Atom? I think that's a pretty bold statement since there are hundreds of aggregators.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:37:32", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619517": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Robert,<br>Your feed has been working fine in my GreatNews reader (which you pointed out a few months ago - thanks btw :) ) and has been working fine since you moved to wordpress.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_21:58:04", "killed": false, "user_key": "d2ffa472b72f308b8b5b6cc8ea528e4a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619518": {"up_voted": false, "ip": "", "has_replies": false, "message": "The argument above about a hosted solution:<br><br>The problem is not you using a hosted solution, it's the .wordpress.com part. Why can't you use <a href=\"http://scobleizer.com\" rel=\"nofollow\">scobleizer.com</a>, and have it powered by wordpress.com? I just don't see why anyone who's serious about keeping your readers, which you seem to be, would tie yourself to a service.<br><br>Better point: what the hell is your problem with atom? You seem really anti it here. End users shouldn't care about which format it is. End users don't look at the source.<br><br>Those  things? It's all about keeping your text safe in the XML pipeline from your keyboard to the end users viewer. Think of it like a tag that says \"inside me you'll find no XML, so don't try parsing it as that\".<br><br>Even if you don't like feedburner itself, have a think about how they handle this: they put some javascript and an xslt stylesheet into the (atom or rss) feed, and magically the feed looks pretty in browses when clicked on. But really, if Internet Explorer just downloads the file, then that is Internet Explorers problem.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:13:34", "killed": false, "user_key": "be73b6ce436e594cb6bd080a136cf6e5", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619519": {"up_voted": false, "ip": "", "has_replies": false, "message": "Ok for me?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:14:16", "killed": false, "user_key": "dahowlett", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619520": {"up_voted": false, "ip": "", "has_replies": false, "message": "Need anyone point out that if maybe RSS was an actual SPEC, there would be a concrete definition for the way that the feeds should look? That's probably why the ATOM feed worked better.<br><br>\"you are giving up a LOT by going with Feedburner: control of your destiny. Here\u2019s something to think about: what if Feedburner goes out of business? \"<br><br>Wait a minute, so why aren't you hosting you blog on your own server at your house or at least at a professional hoster? Before you had a \"weblogs.com\" url. good thing you were friends with Dave when he shut off that server. (not that he didn't have good reasons, but if you weren' Doc or Scoble you were pretty bad off and had to move quick). Now you have a <a href=\"http://Wordpress.com\" rel=\"nofollow\">Wordpress.com</a> url. You can't even follow your own bad advice Robert. :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:16:47", "killed": false, "user_key": "c7b7720f31c54099b9447293a3c5f6cd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619521": {"up_voted": false, "ip": "", "has_replies": false, "message": "oh, for the record. Using NetNewsWire, I'm able to read the ATOM feed that Safari picks up by default when I browse to your page. So, ironically given your employer, all of your Mac readers are probably happy as clams with your feed. :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:19:25", "killed": false, "user_key": "c7b7720f31c54099b9447293a3c5f6cd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619522": {"up_voted": false, "ip": "", "has_replies": false, "message": "I am reading your feed in bloglines and it works great.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:30:21", "killed": false, "user_key": "f055f13c44867e4c4c1fe25e0edb2338", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619523": {"up_voted": false, "ip": "", "has_replies": false, "message": "Incase it hasnt been brought up, but <a href=\"http://scobleizer.wordpress.com/feed/rss2\" rel=\"nofollow\">http://scobleizer.wordpress.com/feed/rss2</a> has both descriptions and full text entries<br><br>With WordPress, you just gotta dig around for the RSS 2.0 feed", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:34:39", "killed": false, "user_key": "e98703af57389bb9e020d42b7ad1f60d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619524": {"up_voted": false, "ip": "", "has_replies": false, "message": "I haven't had any problems at all with your feeds, although <a href=\"http://wordpress.com\" rel=\"nofollow\">wordpress.com</a> is running with a deprecated version of Atom (0.3).<br><br>Regarding Atom it is a far more versatile and regulated standard than RSS has ever been and is supported by all major feedreaders out there - can you perhaps show one that doesn't support it? Atom is always my choice when choosing between it and RSS.<br><br>Why should you be able to read the contents of a feed in a web browser? How's that helping the technically illiterate out there?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_22:40:31", "killed": false, "user_key": "dba4734526207d4021754efc5ac357f1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619525": {"up_voted": false, "ip": "", "has_replies": false, "message": "Patrick: cause I'm a user and it'd make it more consistent. The Web got popular because of \"view source.\" RSS got popular because normal people who aren't rocket scientists can look at it and figure out what it's doing (and how to do it on their own sites).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:03:38", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619526": {"up_voted": false, "ip": "", "has_replies": false, "message": "Patrick: I love how geeks argue with users when they point out inconsistencies in user experiences. How is that focusing on making it easier?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:12:32", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619527": {"up_voted": false, "ip": "", "has_replies": false, "message": "Feed works fine in FeedDemon (and has worked fine since you started blogging over here).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:18:18", "killed": false, "user_key": "a3f613c225f7161209144b382c1ce6f2", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619528": {"up_voted": false, "ip": "", "has_replies": false, "message": "works well in Rojo", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:29:27", "killed": false, "user_key": "a8dfb17f9483b5eb3b489e87578f7bbf", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619529": {"up_voted": false, "ip": "", "has_replies": false, "message": "Works perfectly in Abilon.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:39:34", "killed": false, "user_key": "ea49e2ad3afa78628f98e517d2c7f903", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619530": {"up_voted": false, "ip": "", "has_replies": false, "message": "I've never had a problem with your feed (<a href=\"http://scobleizer.wordpress.com/feed/\" rel=\"nofollow\">http://scobleizer.wordpress.com/feed/</a>) using Newsgator Online.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-30_23:58:42", "killed": false, "user_key": "393eb9cc19620e824fc7889ae0030786", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619531": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>Need anyone point out that if maybe RSS was an actual SPEC, there would be a concrete definition for the way that the feeds should look? That\u2019s probably why the ATOM feed worked better.</i><br><br>WordPress corrected the problem and now produces valid RSS 2.0 feeds. Perhaps this has nothing to do with Atom vs. RSS, and is simply a matter of something invalid that needed to be corrected.<br><br><i>Before you had a \u201cweblogs.com\u201d url. good thing you were friends with Dave when he shut off that server. (not that he didn\u2019t have good reasons, but if you weren\u2019 Doc or Scoble you were pretty bad off and had to move quick).</i><br><br>No one was bad off. Weblogs.Com sites moved to <a href=\"http://www.buzzword.com/\" rel=\"nofollow\">Buzzword.Com</a> after a couple of days. Sheesh.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_00:06:24", "killed": false, "user_key": "70fe121c9172e9882762d7f28f233567", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619532": {"up_voted": false, "ip": "", "has_replies": false, "message": "This brings up one of my pet peeves... RSS feeds are too important to outsource.  Users need to have control over their feeds.  For me I had some bumps with Wordpress but they do provide the source code.. So have your son start coding :-)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_01:20:06", "killed": false, "user_key": "24973e5b118aedfb306dadb38c8c6305", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619533": {"up_voted": false, "ip": "", "has_replies": false, "message": "I have no idea if either of scoble's comments were directed at me (I signed my first comment as straight Patrick. Other Patrick, hey! I got here first on this post! :))<br><br>Patrick: cause I\u2019m a user and it\u2019d make it more consistent. The Web got popular because of \u201cview source.\u201d RSS got popular because normal people who aren\u2019t rocket scientists can look at it and figure out what it\u2019s doing (and how to do it on their own sites).<br><br>Uh. No. The web got popular because... well... it was pretty easy for anybody and everybody to setup a site. I dispute view source as being the main thing behind it. And for crying out loud, the source back then was not exactly what you'd call great, or consistent. Personally, if the [CDATA[] helps a newbie to put properly formed XML up, and have it work rather than randomly error, then that's all good.<br><br>RSS got popular because normal people who aren't rocket scientists have software that reads the feed and shows it to them all pretty like (be it netnewswire, yahoo's rss reader, or even my.netscape, back in the day), and they have software (like wordpress, or movabletype, or livejournal, etc.) that makes those RSS/Atom feeds for them.<br><br>Patrick: I love how geeks argue with users when they point out inconsistencies in user experiences. How is that focusing on making it easier?<br><br>What does the way the source code of an rss/atom/etc. feed look have anything to do with the user experience?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_02:18:52", "killed": false, "user_key": "be73b6ce436e594cb6bd080a136cf6e5", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619534": {"up_voted": false, "ip": "", "has_replies": false, "message": "Patrick: am I not a user?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_02:35:58", "killed": false, "user_key": "3553f5e0db0fd1ec4e40a932a2d8f5b3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619535": {"up_voted": false, "ip": "", "has_replies": false, "message": "The primary feed reader that I use is the open source RSSowl.  I also use NewsGator (Web and Outlook edition, though I've pretty much abandoned Outlook except for testing), AmphetaDesk, and Yahoo!RSS.<br><br>The <a href=\"http://scobleizer.wordpress.com/feed/\" rel=\"nofollow\">http://scobleizer.wordpress.com/feed/</a> stopped working on October 29 and began working again today.  I always got full text before the 29th and again today.<br><br>RSSwowl does give the error as to why a feed isn't validating.  Though, I'm afraid that I didn't note the error message at the time.<br><br>It does sometimes happen.  I would guess that very few users or sites hand generate the RSS, RDF or Atom XML for their feeds.  The author publishes the post, and some script generates the feed automagically for them.  Even SF Gate wasn't validating for a few hours this morning.  BBC screws up about once a week.  No doubt better script debugging is the answer.<br><br>Robert, glad to have you back in my RSSowl.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:00:26", "killed": false, "user_key": "133b84c84209f21d0ea5b6fbc15ec240", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619536": {"up_voted": false, "ip": "", "has_replies": false, "message": "On my blog I've left the terms RSS and Atom behind - I just kall them (news/web) feeds. For a visitor it's only really important that there are abilities to subscribe to the content and not what format they come wrapped in.<br><br>For the technically inclined it's easy to see that I serve all the feeds as Atom 1.0. I believe it's important to have that transparency - we don't go around and call web pages html-pages or even php-pages or asp.net-pages, do we?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:12:39", "killed": false, "user_key": "dba4734526207d4021754efc5ac357f1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619537": {"up_voted": false, "ip": "", "has_replies": false, "message": "Oh, and on the matter of services vs running your own.  Running your own can take work.  We do it.  Well over a year ago we started testing various open source blogware, including WordPress, b2evolution and plog.  Our web sites were on a shared server at XO at the time.  In addition to bandwidth and storage, XO uses a \"resource\" calculation to see what amount of CPU and RAM your using in the shared environment.  Our domain hosting costs shot up - and we were posting infrequently and only one friend read us.  After a few months, we settled on b2evolution [we needed the multi-blog, multi-author capabilities PLUS the community was much, much more responsive and helpful than WordPress], and we got a dedicated server from ServerBeach.<br><br>We use so little of the resources of the server, that we're running a hosting service: open source software for small businesses, including b2evolution.  ;-)  Hey, it's cheaper than what XO's additional \"resource units\" were costing us, but it's still a lot of money per month for the machine.<br><br>At any rate, my point is that unless you're willing to dedicate a lot of your time to maintaining the underlying software, a service, be it Typepad, LiveJournal, <a href=\"http://WordPress.com\" rel=\"nofollow\">WordPress.com</a>, ours, or any other can be fine.  Though, I do have to admit that I shudder whenever I want to pick up someone's feed, and my only option is feedburner.  Something just doesn't feel right there.  Also, a service should allow a user to have their own domain [or subdomain like blog(s).domainName.TLD], as well as an exit path that preserves their look and all archived posts if they should wish to move to another service or self-hoting.<br><br>Oh, and on the other point in these comments, I haven't seen a feed reader yet that doesn't support RSSv0.92, RSSv1 (a.k.a RDF), RSSv2 and Atom 0.3.  Few support Atom 1.x yet.<br><br>I do agree with <a href=\"//http://marc.blogs.it/\" rel=\"nofollow\">Marc Canter</a>: the user is best served when the services support as many standards as possible.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:17:36", "killed": false, "user_key": "133b84c84209f21d0ea5b6fbc15ec240", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619538": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yes, these sort of issues you raise have bothered me too. I have been a bit apathetic in the past towards these issues, but I do support your strong comments on this.<br><br>Availability of full-feeds is one of the most important issue to be addressed. After reading the comments I see there is a solution but I think it should be the default view in RSS readers if that's what the author intended.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:38:45", "killed": false, "user_key": "97fe0d8faf4ab9a39145918b242a9d1b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619539": {"up_voted": false, "ip": "", "has_replies": false, "message": "&gt; Also, a service should allow a user to have their own<br>&gt; domain [or subdomain like blog(s).domainName.TLD], as<br>&gt; well as an exit path that preserves their look and<br>&gt; all archived posts if they should wish to move to<br>&gt; another service or self-hoting.<br><br>1) Feedburner lets you (for a small fee) use yourdomain.com/feed or whatever (while still taking advantage of their cool services).<br><br>2) Even on free Feedburner accounts, if you decide to ditch FB, they'll kindly redirect accesses to your FB URL to whatever URL on your own server you'd like for 30 days (likely enough time for feedreaders to note the 301 redirect and react accordingly).<br><br>Note that I am not affiliated with FB in any way except as a happy user.<br><br>Oh, and Robert... it's certainly possible that there's SOME feed reader out there that can't handle Atom 0.3, just like there are still some browsers out there that can't handle proper CSS (and lots of other stuff), e.g., Netscape 4.  I don't know about you, but I gave up on those folks ages ago.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:38:54", "killed": false, "user_key": "75c7dae24bcd436235dd5ca728cef066", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619540": {"up_voted": false, "ip": "", "has_replies": false, "message": "Garrrh! I can't believe we're still doing this. Robert, you're absolutely right to complain and push wordpress into doing the right thing. Getting a non-validating RSS feed from a hosted service is unacceptable. And if the RSS feed doesn't provide the information you want to be in it, complain about that as well. And \"just use Feedburner\" is not an answer. You shouldn't *have to* use Feedburner. That should be a choice if you want to use their added value, not a requirement.<br><br>A few other thoughts:-<br>- We should be way past people handcoding RSS. It should be transparent and just work. If you need to read the XML to work out what's going on, then you can also read specs and do research.<br><br>- There's nothing funky about CDATA. It's a part of the XML spec and has been for years. It's one solution to the double encoded &amp; and it does just work.<br><br>- Your RSS feed doesn't have full text in the item.description and some html tags have been removed. Putting the full text into a content:encoded RSS2 extension tag is ok, but it assumes (wrongly) that most aggregators will be able to read it.<br><br>- Inventing new MIME types is a pain in the neck. (people who serve OPML and RDF-XML like this, please note). My browser has a perfectly good XML reader and it can handle stylesheets in XML. If I click on a link to an XML file I want to be able to read it. Not get some dialog forcing me to make a choice I may not understand.<br><br>- I'm not sure if you've started in MS word or used an MS system to cut and paste or what but you've got high order versions of ', \"\" and a few other characters in there. Character sets are a PITA, and while UTF-8 handles it, the feed may not end up in something that does. I do wish that when the content is basically aasci-7, all the systems involved would use aasci-7 for characters that exist in it. Microsoft please note, your smart quotes hurt developers because we frequently have to write code to convert them.<br><br>And finally, does anyone know who is reponsible for making &amp; a reserved character in XML? Because shooting is too kind. I want to poke them with pointy sticks for eternity! And the same goes for the person who chose \\ instead of / in Microsoft systems for folder path delimiters.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_03:52:44", "killed": false, "user_key": "ce83a8e239c0cfce3488d3fec4d5d8de", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619541": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yep, noticed your feed in Bloglines was down for a few days. Had to click on the main head to get through to your blog.<br><br>BTW I've had the same problem with RSS2 on my standard Wordpress blog (via Fantastico). I set it to full text, but nothing happened for a few days, then a partial feed arrived in tha aggregators. So it's a generic problem, not just <a href=\"http://Wordpress.com\" rel=\"nofollow\">Wordpress.com</a>.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_04:02:43", "killed": false, "user_key": "a329ba9b39d1912ecd0469e59d443769", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619542": {"up_voted": false, "ip": "", "has_replies": false, "message": "I've had discussion with Matt via Dave Winer about the WP RSS feeds, the implementation regarding enclosures and podcasting usability is terrible - it turns all links to files as enclosures - not just the first or one...great functionality if you need it; if not you can't turn it off or delete the extra enclosures...in a Douglas Adams way the 'delete' button just serves to make you feel better about your life, but doesn't actually delete. So I followed Ben over at Tracks up the Tree and intentionally 'broke' that function...not great, and I'm not the first to do or say this.<br><br>I seem to remmeber I had to do some hacking to get full posts in RSS2 - initially I kept getting the summaries, NOT the post. There are two different WP functions, one for summaries and the other for posts, never the twain shall meet.<br><br>It's annoying, and a shame because WP is a great blogging platform...but for podcasting and for out-the-box it's got a long way to go...atm I can't really tell non-techy types to go WP when I know techy people have issues - WP's loss is Blogger's gain, sadly.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_04:55:30", "killed": false, "user_key": "f973a2d1b6d2bf8c242edc06811b5155", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619543": {"up_voted": false, "ip": "", "has_replies": false, "message": "eek Monday morning and I'm a  bit slow..<br><br>Actually just checked my feed and I have the same issue - truncated post...I remember now I tried the full post WP function and got nada...it's very odd. Let us know if you find a solution...<br><br>It's odd because aggregated sites from my feed, such as Podcastalley et al show the full post? Curiouser and curiouser...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_04:59:52", "killed": false, "user_key": "f973a2d1b6d2bf8c242edc06811b5155", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619544": {"up_voted": false, "ip": "", "has_replies": false, "message": "I read your feed through SharpReader, and I've had no problems with it whatsoever...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_13:15:55", "killed": false, "user_key": "d623d872703d870edcb68a1e8e429836", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619545": {"up_voted": false, "ip": "", "has_replies": false, "message": "I don't know that sucks is correct, how about inconsistent? I've been online for the past seven hours and my reader just picked up this post along with 19 others. Sometimes they're timely, sometimes they're not.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_14:02:28", "killed": false, "user_key": "76d1e9dacfcaa3f786b517c41b2817f8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619546": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert: Hosted services have to pick reasonable defaults for all customers. The fact that the default doesn't suit your specific needs doesn't mean it \"sucks\".<br><br>You know this, of course. So I'm left wondering why you'd waste time with virtiol instead of simply asking how to tweak the default.<br><br>\"I just tried my Atom feed and I couldn\u2019t even get it to load up in the browser. That certainly is not good usability...\"<br><br>Agreed. That means your aggregator is broken.<br><br>When you request a properly-served Atom or RSS file, your desktop aggregator should launch and help you subscribe to it. Unless you use a web-based aggregator, in which case you should be clicking your autodiscovery bookmark instead of playing \"hunt the feed\".", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_14:33:09", "killed": false, "user_key": "5f89d3df08b8dedac1a0fde900a586db", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619547": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"I never got complaints\" isn't a perfect measure of how good something is: for a while, when I was using Bloglines, I set my subscriptions to show \"Summaries if Available\" so I could quickly skim through, opening interesting posts in a browser tab. Since your feed didn't have separate summaries and full content, I had to scroll past your whole posts when they were on something that didn't interest me, but since I knew you were using a tool that wouldn't produce more flexible RSS, I didn't complain.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_14:54:36", "killed": false, "user_key": "2b6c1ba0915a97a81d59ca1e101e6d74", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619548": {"up_voted": false, "ip": "", "has_replies": false, "message": "Works fine in Newsgator for outlook. Always has.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_15:19:21", "killed": false, "user_key": "4e5e6513d30020a0e8b7c050413b0c63", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619549": {"up_voted": false, "ip": "", "has_replies": false, "message": "always has worked in Feed Demon right from day 1.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_15:27:20", "killed": false, "user_key": "74aec0b2a8bbbf4e18377b7b3f8c268c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619550": {"up_voted": false, "ip": "", "has_replies": false, "message": "Feed has always worked great in RSS Bandit.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_16:08:23", "killed": false, "user_key": "fd07ba5eabf3a6bdc4462405c5ecaf26", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619551": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"No one was bad off. Weblogs.Com sites moved to Buzzword.Com after a couple of days. Sheesh.\"<br><br><br>Way to miss the point RC.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-10-31_18:18:07", "killed": false, "user_key": "c7b7720f31c54099b9447293a3c5f6cd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619552": {"up_voted": false, "ip": "", "has_replies": false, "message": "i read there is hacking to get full posts in RSS2 ?<br>is this true?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-01_00:38:49", "killed": false, "user_key": "e4470062772a42731d6dcd4d916a478a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619553": {"up_voted": false, "ip": "", "has_replies": false, "message": "@domain:<br>It's an open option in the Wordpress Admin Panel.<br>No hacking involved besides clicking a radio button, and clicking submit.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-01_07:39:59", "killed": false, "user_key": "9904b127bff836c939152dcd300ea9ea", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619554": {"up_voted": false, "ip": "", "has_replies": false, "message": "I use SharpReader, and since the switch I've been getting this error sporadically:<br><br>\"Error reading URL: The underlying connection was closed: The server committed an HTTP protocol violation.\"<br><br>I also run a WordPress-powered site but I have never seen this error on my own feed (mind you, I'm running WordPress on my own server, not as a hosted solution).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-01_12:17:50", "killed": false, "user_key": "e59ff75c01e993021b88b551734f566d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619555": {"up_voted": false, "ip": "", "has_replies": false, "message": "The RSS isn't broken Robert, it's just a little different than what you're expecting.  The description is your excerpt and the content encoded is your full post.  It's done this way so you can have characters embedded that rss itself doesn't support.  It also allows you to have the rich tagging in your post that rss doesn't necessarily support either.  Just about every feed reader I've used recognizes it and knows what to do with it, and it does validate.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-01_13:37:37", "killed": false, "user_key": "a5635e0d885ff8e47de9adedf401856f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619556": {"up_voted": false, "ip": "", "has_replies": false, "message": "If anyone is still following this thread I tried to summarize the responses a few days ago here, I just forgot to ping this entry directly:<br><br><a href=\"http://matt.wordpress.com/2005/10/31/scoble-sucks/\" rel=\"nofollow\">Scoble Sucks (and WordPress RSS)</a><br><br>(We don't think he sucks of course, just continuing the hyperbole.)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-02_00:09:18", "killed": false, "user_key": "767fc9c115a1b989744c755db47feb60", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619557": {"up_voted": false, "ip": "", "has_replies": false, "message": "You were a little mean, Scoble. You don't usually dis people this bad.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-02_03:27:13", "killed": false, "user_key": "65b8691268a425b6b31f198ff830cc10", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619558": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why does WordPress insist on putting the full text in  tags? Dave Winer's site has full text in  tags; so isn't that the right way to do it? I mean, come on, it's self-evident. Drupal does not see the full text because it is lookin at the  tags. Unless you go back to full text the way it use to be Robert, I will be pulling you out of my news feeds. Keep pushing WordPress", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-08_23:31:24", "killed": false, "user_key": "ee8a12eb57eff1e0b1960536df44f4dd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619559": {"up_voted": false, "ip": "", "has_replies": false, "message": "Oh man, look what happened to my comment! Thanks Wordpress if I wrap a word in a \"less than\" and a \"greater than\" symbol to denote a tag, the word disappears. Great.<br><br>Here is what the post is supposed to have said:<br>Why does WordPress insist on putting the full text in content:encoded tags? Dave Winer\u2019s site has full text in description tags; so isn\u2019t that the right way to do it? I mean, come on, it\u2019s self-evident. Drupal does not see the full text because it is looking at the description tags. Unless you go back to full text the way it use to be Robert, I will be pulling you out of my news feeds. Keep pushing WordPress", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-08_23:34:14", "killed": false, "user_key": "ee8a12eb57eff1e0b1960536df44f4dd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619560": {"up_voted": false, "ip": "", "has_replies": false, "message": "Your rss feed worked in Opera 8.5 with no problems", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2005-11-22_05:04:10", "killed": false, "user_key": "bd60630eaa21ef10642601a53a2d47b2", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619561": {"up_voted": false, "ip": "", "has_replies": false, "message": "The link for your old feed in the blob that is posted here is at <a href=\"http://radio.weblogs.com/0001011/rss.xml\" rel=\"nofollow\">http://radio.weblogs.com/0001011/rss.xml</a>, how did you get it to not cut off the description?<br><br>My feed is at <a href=\"http://www.door2doortechsolutions.com/blog/wp-rss2.php\" rel=\"nofollow\">http://www.door2doortechsolutions.com/blog/wp-r...</a><br><br>On mine it kuts off the description after a certian number of charters, it is somewere around 300 charters with spaces. I want ot use it so i can jsut update my blog, so i can grab that feed for my web page on my business.<br><br>Please email me back at <a href=\"http://salesdoor2doortechsolutions.com\" rel=\"nofollow\">salesdoor2doortechsolutions.com</a><br><br><br>Greg Caulder", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2006-01-05_22:55:38", "killed": false, "user_key": "77c58f89de3f72d2bdeaf05e3365f34a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "3 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619562": {"up_voted": false, "ip": "", "has_replies": false, "message": ":)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-04-03_03:16:34", "killed": false, "user_key": "53f77b0bf3bd14623ac31bdb7276126d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619563": {"up_voted": false, "ip": "", "has_replies": false, "message": "For those saying that their feed is cut off, read the comments here:<br><a href=\"http://wordpress.org/support/topic/113579\" rel=\"nofollow\">http://wordpress.org/support/topic/113579</a><br>There's a fix there that helped me - maybe it will work for you too.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-02-07_16:19:23", "killed": false, "user_key": "e52a0154583a624a9cd24dc5a95c912e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619564": {"up_voted": false, "ip": "", "has_replies": false, "message": "On mine it kuts off the description after a certian number of charters, it is somewere around 300 charters with spaces. I want ot use it so i can jsut update my blog, so i can grab that feed for my web page on my business.<br><br>Please email me back at <a href=\"http://salesdoor2doortechsolutions.com\" rel=\"nofollow\">salesdoor2doortechsolutions.com</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2007-10-07_17:25:45", "killed": false, "user_key": "2ec837c752575a42d0708354345c45bb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 years ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9619565": {"up_voted": false, "ip": "", "has_replies": false, "message": "but not instrested..", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-26_13:14:10", "killed": false, "user_key": "7ad3fce453e681c49da4529ea90b052b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": "", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "18359513", "user_id": "anonymous", "forum_id": "125200", "hash": -8212032330661611652}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "wordpresscom8217_rss_feeds_suck", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 18359513, "num_posts": 64, "closed": true, "queued": false, "killed": false}, "reactions_limit": 10, "context": {"show_reply": false, "use_fb_connect": true, "forum_facebook_key": "faaf467d0f47abde553c3b8e0e1b3570", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

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



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

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

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

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

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

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

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

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

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





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



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

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

	this._lastHash = null;

	this._accumMsg = '';

	this._lastSeqno = 0;

	this.MAX_DATA_LEN	= 1024;

	this.WAIT_TIME		= 10;

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

};

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

FragmentPacket.prototype.log = function(msg) {



};

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

		hash = this.reader.name;
	} else {

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

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

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

		this._lastSeqno = seqno;

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

				this._accumMsg = '';

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

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

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

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

};

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

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

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

	if (packetNum === 0) {

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

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

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

	if (num_packets === packetNum) {

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

	this._lastSeqno++;

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

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

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

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

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

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


	this.receiverId = receiverId;
};

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

	var listener = function(e) {

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


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

		that.receiveCallback(data);
	};

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

PostMessagePacket.prototype.send = function(msg) {



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


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

	var packet;
	if (!msg) {

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

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

var JsonRpc = function() {

	this.ids = {};

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

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

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

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

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

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

				json = 'null';
				break;
		}

		return json;
	};

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

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

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

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

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

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

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

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

		send_func(this.objectToJSON(request));

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

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


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



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


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


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

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

	this.packetHandler = null;


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


	var _createReceiverForFragmentPacket = function() {

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

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

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

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

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

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

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

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

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

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

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

			that._ready = true;
		};

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

		that.receiver.onload = receiver_onload;







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

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

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

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


	var _createReceiverForPostMessage = function() {

		var receiver_onload = function() {

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

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


		ParentMessenger['_receiver_onload_' + receiverId] = receiver_onload;

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

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

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

};

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

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

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

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

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

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

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

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

	var sendFunc = function(msg) {

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


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


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

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

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

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

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

		if (msg.username) {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	var handleSessionData = function(session) {

		var forum_url = Dsq.jsonData.forum.url;




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

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

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


	






Dsq.Themes = {};

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



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

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

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

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

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

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

		
		

		return html;

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

		html += Dsq.Templates.pagination();

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

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		


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

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

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

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

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

		return html;
	};

	this.postBox = function(post_id, use_fallback_iframe) {


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

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


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

		var _requestUserInfo = function() {
			var html;



			var user_has_email = false;

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

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

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


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



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

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




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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



	
	this.chooseSubscribe = function(post_id) {

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

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

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

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

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

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

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

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

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

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

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

		d = auth_data;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

				body.appendChild(edit_area);

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

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

		Dsq.Templates.toggleEdit(post_id);
	};

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

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

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

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

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

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

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

		}

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

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

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

		var extra_params = '';

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

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


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

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

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

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




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

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

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

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

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

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

		Dsq.Templates.setLoadingButton(false);
	};

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

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




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

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

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

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

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

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


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


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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

		return [windowWidth, windowHeight];
	}

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

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

		return [scrollWidth, scrollTop];
	}

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

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

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

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

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

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

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

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

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

				form.appendChild(input);
			}
		}

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

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

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

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

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

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

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

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

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

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

		return params;
	};

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

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

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

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

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

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

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

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

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

	};

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

};
// Dsq.Utils

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Dsq.Popup._closePopup(null, true);

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

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

		header = title;
		body = message;

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

	this.popAlert = this.popModal;

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

		popup.style.display = 'block';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			return ret;
		};
	};

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

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

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

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


			//

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

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

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

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

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

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

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

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


	this.header = function() {

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

		

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

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

		
			html += Dsq.Templates.authPost();
		

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		

		return html;
	};

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

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

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

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

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

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

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

		return html;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Post
	//

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Iframes
	//

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

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

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

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

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

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

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

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

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

	//
	// Menus
	//

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

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

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

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

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

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


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

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

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

	//
	// Popups
	//

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

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

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

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

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

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

		return this._popupGeneric(content);
	};

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

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

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

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

		return this._popupGeneric(content);
	};

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

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

		bodyHtml = message;

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

		return this._popupGeneric(content);
	};

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

	//
	// Actions
	//

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

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

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

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

		Dsq.Popup.popModal(message, title);

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

	//
	// Media
	//

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

	//
	// Callbacks
	//

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

		if(!openedMenu) {
			return;
		}

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

};
// Dsq.Post


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

	
	this.adminIsOn = false;

	
	
	

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}();

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

		if (isblank(openid_url)) {
			return;
		}

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

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

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

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

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

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

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

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

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

	return obj;
}();


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





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

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

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

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

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

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





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

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

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

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-9619502">\
	 <div id="dsq-comment-header-9619502" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619502" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619502" href="http://www.briangorbett.com/" target="_blank" rel="nofollow">gorbett</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619502" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619502" class="dsq-comment-message">i am just starting out blogging and have found that blogging services vary and wish they all were as cool as channel9. however, i have found one that is super cool and is really "growing up"... imeem (<a href="http://www.imeem.com" rel="nofollow">www.imeem.com</a>). it does not have all the web features yet, but the constant development really is encouraging.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619503">\
	 <div id="dsq-comment-header-9619503" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619503" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619503" href="http://www.scripting.com/" target="_blank" rel="nofollow">Dave Winer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619503" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619503" class="dsq-comment-message">Robert, before the XML geeks swoop down and start picking this to death, the point is that, as a non-technical user, you\'re right to insist that RSS work well for your users. You want to provide them with full feeds, you want to be able to view your feed, and have some idea of what\'s going on when you look. That\'s what I get from your message. Weird things like CDATA, while they\'re valid and definitely not funky (in a technical sense) are confusing. I support you in what you want, although other techies will say there\'s no reason for the technology to be transparent to you, I disagree. People don\'t things they don\'t understand, and it\'s certainly possible to do it in a way that you can understand, without giving up any of the power and depth that geeks like so much. I\'d also be happy to work with Matt to make you happy. I\'m pretty sure I know what you want. Keep on truckin. Dave</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619504">\
	 <div id="dsq-comment-header-9619504" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619504" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619504" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619504" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619504" class="dsq-comment-message">Dave: yeah, I had 15,000 subscribers on NewsGator and 9,000 on Bloglines to my old Radio UserLand feed. I never had a complaint. So, what I want is my old feed. Don\'t mess with what works.<br><br>I\'m cool with doing a super-dooper Atom feed too, but don\'t mess up my RSS feed. That MUST work like my old feed.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619505">\
	 <div id="dsq-comment-header-9619505" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619505" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619505" href="http://www.atmasphere.net/wp" target="_blank" rel="nofollow">Jonathan Greene</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619505" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619505" class="dsq-comment-message">You could always shoot the feed through feedburner and have it take care of what you need.  You get tracking out of the deal as well which is a nice bonus.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619506">\
	 <div id="dsq-comment-header-9619506" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619506" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619506" href="http://applemacfreak.com/" target="_blank" rel="nofollow">Caius Durling</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619506" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619506" class="dsq-comment-message">Erm, I hate to point this out, but your feed does validate..<br><br><a href="http://feedvalidator.org/check?url=http://scobleizer.wordpress.com/feed/" rel="nofollow">http://feedvalidator.org/check?url=http://scobl...</a><br><br>And I get the full articles in NetNewsWire as well...<br><br>I got that feed from the big blue RSS button that pops up in the URL bar in safari.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619507">\
	 <div id="dsq-comment-header-9619507" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619507" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619507" href="http://drumsnwhistles.com/" target="_blank" rel="nofollow">drumsnwhistles</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619507" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619507" class="dsq-comment-message">I use the feedburner plug-in for my Wordpress feeds.  Also, in the Control Panel under "Reading" there is an option to turn on full feeds.  It took me a couple of weeks to figure that one out -- My sense is that it should default to full feeds rather than an excerpt, but it is there.<br><br>I haven\'t had any trouble at all with Feedburner, and as far as I can tell, the feeds aren\'t \'funky\' either.  You might want to give it a whirl.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619508">\
	 <div id="dsq-comment-header-9619508" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619508" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619508" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619508" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619508" class="dsq-comment-message">Caius: my feed did not validate just an hour ago. So, things are already changing. Which is why WordPress is getting the attention of bloggers (it was praised several times yesterday on stage).<br><br>Drumsnwhistles: you are giving up a LOT by going with Feedburner: control of your destiny. Here\'s something to think about: what if Feedburner goes out of business? You\'re screwed cause all your readers are on Feedburner.<br><br>Or, what if they decide to start putting ads in your feeds? You\'re screwed. I\'m not ready to do that yet.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619509">\
	 <div id="dsq-comment-header-9619509" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619509" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619509" href="http://drumsnwhistles.com/" target="_blank" rel="nofollow">drumsnwhistles</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619509" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619509" class="dsq-comment-message">Point well taken -- I\'ll have to think on that some more....but you can still turn on full feeds in the WP control panel. :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619510">\
	 <div id="dsq-comment-header-9619510" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619510" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619510">Rick</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619510" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619510" class="dsq-comment-message">Your "funky" feed has been working perfectly well for me since Day 1 (in Bloglines), and to these eyes it\'s indistinguishable from your last feed. I\'m not really clear on what the complaints are.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619511">\
	 <div id="dsq-comment-header-9619511" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619511" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619511" href="http://www.bladam.com/" target="_blank" rel="nofollow">Adam</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619511" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619511" class="dsq-comment-message">Robert,<br><br>IMHO, you\'re making a mountain out of a molehill with this.  Seems you like you have two very easy and effective solutions here:<br><br>1) Ditch RSS and go with Atom.  Seriously.  I can\'t think of a single major newsreader that can\'t handle Atom without blinking.<br><br>AND/OR<br><br>2) Go with Feedburner.  I LOVE this service.  Great tracking, easy to set up, and shows human readable xml feeds.<br><br>Frankly, I\'d avoid going with a <a href="http://Wordpress.com" rel="nofollow">Wordpress.com</a> blog for the same reason I think a zillion others have noted in the past:  why tie you blog\'s stability, brand, and hamper your movability to a third party?  Heck, even Feedburner lets you use your own domain URL (albeit for a small extra fee).<br><br>Seriously, why would anyone with technical prowess want to go with <a href="http://somename.3rdpartysite.com" rel="nofollow">somename.3rdpartysite.com</a> when they can have <a href="http://somename.com" rel="nofollow">somename.com</a> or .net?  It just doesn\'t make any sense to me.  What possible value could you be deriving from a hosted Wordpress solution?<br><br>And no, I\'m not trying to pick on Matt here.  I\'ve not used WordPress, but I respect the tool and the people behind it... and I know it\'s a really fine blogging app.  I just don\'t get the hosted thing in your context.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619512">\
	 <div id="dsq-comment-header-9619512" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619512" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619512" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619512" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619512" class="dsq-comment-message">What possible value do I have from having a hosted Wordpress solution? Easy. I don\'t have to do any work.<br><br>There are TONS of people who don\'t want to do any work when starting up their blogs. I want to be more like the 98% than the 2%. By using the same services that other people will be using I will have something to say. And, I\'ll learn about those services in an intimate way.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619513">\
	 <div id="dsq-comment-header-9619513" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619513" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619513" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619513" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619513" class="dsq-comment-message">Adam: I\'m not making a moutain out of a molehill. My old feed worked. It had more than 25,000 people using it. Think about that sometime.<br><br>This new feed is getting complaints.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619514">\
	 <div id="dsq-comment-header-9619514" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619514" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619514" href="http://www.bladam.com/" target="_blank" rel="nofollow">Adam</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619514" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619514" class="dsq-comment-message">Understood, Robert, but if I understood you correctly, you noted that your Atom feed looks / works just fine.  Why not just do a redirect and then *voila*?  Unless (and I admit this could be a consideration) you\'re worried that there\'d be problems you hadn\'t caught with the Atom feed, too.<br><br>So, yeah, I suppose that I was a bit too brusque to simply suggest that this wasn\'t a problem at all... but I stand by my assertion that it\'s likely to be easily solvable.<br><br>(and for the record... I use NewzCrawler, and I never noticed any problems at all with your WordPress feed)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619515">\
	 <div id="dsq-comment-header-9619515" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619515" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619515">Brad</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619515" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619515" class="dsq-comment-message">FWIW, I\'ve never had a problem with your feed, using<br><br><a href="http://scobleizer.wordpress.com/feed/" rel="nofollow">http://scobleizer.wordpress.com/feed/</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619516">\
	 <div id="dsq-comment-header-9619516" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619516" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619516" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619516" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619516" class="dsq-comment-message">&gt;your Atom feed looks / works just fine.<br><br>I don\'t know that to be the case. I don\'t use Atom feeds. I use RSS. I still don\'t understand what the Atom feed buys me that my old feed didn\'t. And, are you saying there is no aggregator out there that doesn\'t work with Atom? I think that\'s a pretty bold statement since there are hundreds of aggregators.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619517">\
	 <div id="dsq-comment-header-9619517" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619517" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619517" href="http://home.exetel.com.au/rodeoclown/" target="_blank" rel="nofollow">Ian Tyrrell</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619517" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619517" class="dsq-comment-message">Hi Robert,<br>Your feed has been working fine in my GreatNews reader (which you pointed out a few months ago - thanks btw :) ) and has been working fine since you moved to wordpress.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619518">\
	 <div id="dsq-comment-header-9619518" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619518" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619518" href="http://patrick.geek.nz/" target="_blank" rel="nofollow">Patrick</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619518" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619518" class="dsq-comment-message">The argument above about a hosted solution:<br><br>The problem is not you using a hosted solution, it\'s the .wordpress.com part. Why can\'t you use <a href="http://scobleizer.com" rel="nofollow">scobleizer.com</a>, and have it powered by wordpress.com? I just don\'t see why anyone who\'s serious about keeping your readers, which you seem to be, would tie yourself to a service.<br><br>Better point: what the hell is your problem with atom? You seem really anti it here. End users shouldn\'t care about which format it is. End users don\'t look at the source.<br><br>Those  things? It\'s all about keeping your text safe in the XML pipeline from your keyboard to the end users viewer. Think of it like a tag that says "inside me you\'ll find no XML, so don\'t try parsing it as that".<br><br>Even if you don\'t like feedburner itself, have a think about how they handle this: they put some javascript and an xslt stylesheet into the (atom or rss) feed, and magically the feed looks pretty in browses when clicked on. But really, if Internet Explorer just downloads the file, then that is Internet Explorers problem.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619519">\
	 <div id="dsq-comment-header-9619519" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619519" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619519" href="http://www.dahowlett.com" target="_blank" rel="nofollow">dahowlett</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619519" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619519" class="dsq-comment-message">Ok for me?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619520">\
	 <div id="dsq-comment-header-9619520" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619520" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619520" href="http://www.lazycoder.com/" target="_blank" rel="nofollow">Scott</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619520" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619520" class="dsq-comment-message">Need anyone point out that if maybe RSS was an actual SPEC, there would be a concrete definition for the way that the feeds should look? That\'s probably why the ATOM feed worked better.<br><br>"you are giving up a LOT by going with Feedburner: control of your destiny. Here’s something to think about: what if Feedburner goes out of business? "<br><br>Wait a minute, so why aren\'t you hosting you blog on your own server at your house or at least at a professional hoster? Before you had a "weblogs.com" url. good thing you were friends with Dave when he shut off that server. (not that he didn\'t have good reasons, but if you weren\' Doc or Scoble you were pretty bad off and had to move quick). Now you have a <a href="http://Wordpress.com" rel="nofollow">Wordpress.com</a> url. You can\'t even follow your own bad advice Robert. :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619521">\
	 <div id="dsq-comment-header-9619521" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619521" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619521" href="http://www.lazycoder.com/" target="_blank" rel="nofollow">Scott</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619521" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619521" class="dsq-comment-message">oh, for the record. Using NetNewsWire, I\'m able to read the ATOM feed that Safari picks up by default when I browse to your page. So, ironically given your employer, all of your Mac readers are probably happy as clams with your feed. :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619522">\
	 <div id="dsq-comment-header-9619522" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619522" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619522">eddie</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619522" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619522" class="dsq-comment-message">I am reading your feed in bloglines and it works great.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619523">\
	 <div id="dsq-comment-header-9619523" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619523" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619523" href="http://www.scamcity.co.uk/journal/" target="_blank" rel="nofollow">Greg</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619523" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619523" class="dsq-comment-message">Incase it hasnt been brought up, but <a href="http://scobleizer.wordpress.com/feed/rss2" rel="nofollow">http://scobleizer.wordpress.com/feed/rss2</a> has both descriptions and full text entries<br><br>With WordPress, you just gotta dig around for the RSS 2.0 feed</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619524">\
	 <div id="dsq-comment-header-9619524" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619524" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619524" href="http://strangnet.se/blog" target="_blank" rel="nofollow">Patrick</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619524" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619524" class="dsq-comment-message">I haven\'t had any problems at all with your feeds, although <a href="http://wordpress.com" rel="nofollow">wordpress.com</a> is running with a deprecated version of Atom (0.3).<br><br>Regarding Atom it is a far more versatile and regulated standard than RSS has ever been and is supported by all major feedreaders out there - can you perhaps show one that doesn\'t support it? Atom is always my choice when choosing between it and RSS.<br><br>Why should you be able to read the contents of a feed in a web browser? How\'s that helping the technically illiterate out there?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619525">\
	 <div id="dsq-comment-header-9619525" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619525" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619525" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619525" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619525" class="dsq-comment-message">Patrick: cause I\'m a user and it\'d make it more consistent. The Web got popular because of "view source." RSS got popular because normal people who aren\'t rocket scientists can look at it and figure out what it\'s doing (and how to do it on their own sites).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619526">\
	 <div id="dsq-comment-header-9619526" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619526" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619526" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619526" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619526" class="dsq-comment-message">Patrick: I love how geeks argue with users when they point out inconsistencies in user experiences. How is that focusing on making it easier?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619527">\
	 <div id="dsq-comment-header-9619527" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619527" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619527" href="http://jared.wordpress.com/" target="_blank" rel="nofollow">Jared</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619527" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619527" class="dsq-comment-message">Feed works fine in FeedDemon (and has worked fine since you started blogging over here).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619528">\
	 <div id="dsq-comment-header-9619528" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619528" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619528" href="http://cori.wordpress.com/" target="_blank" rel="nofollow">cori schlegel</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619528" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619528" class="dsq-comment-message">works well in Rojo</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619529">\
	 <div id="dsq-comment-header-9619529" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619529" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619529">Ervin</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619529" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619529" class="dsq-comment-message">Works perfectly in Abilon.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619530">\
	 <div id="dsq-comment-header-9619530" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619530" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619530" href="http://alarmless.wordpress.com/" target="_blank" rel="nofollow">Aaron</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619530" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619530" class="dsq-comment-message">I\'ve never had a problem with your feed (<a href="http://scobleizer.wordpress.com/feed/" rel="nofollow">http://scobleizer.wordpress.com/feed/</a>) using Newsgator Online.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619531">\
	 <div id="dsq-comment-header-9619531" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619531" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619531" href="http://www.cadenhead.org/workbench/" target="_blank" rel="nofollow">Rogers Cadenhead</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619531" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619531" class="dsq-comment-message"><i>Need anyone point out that if maybe RSS was an actual SPEC, there would be a concrete definition for the way that the feeds should look? That’s probably why the ATOM feed worked better.</i><br><br>WordPress corrected the problem and now produces valid RSS 2.0 feeds. Perhaps this has nothing to do with Atom vs. RSS, and is simply a matter of something invalid that needed to be corrected.<br><br><i>Before you had a “weblogs.com” url. good thing you were friends with Dave when he shut off that server. (not that he didn’t have good reasons, but if you weren’ Doc or Scoble you were pretty bad off and had to move quick).</i><br><br>No one was bad off. Weblogs.Com sites moved to <a href="http://www.buzzword.com/" rel="nofollow">Buzzword.Com</a> after a couple of days. Sheesh.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619532">\
	 <div id="dsq-comment-header-9619532" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619532" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619532">John Furrier</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619532" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619532" class="dsq-comment-message">This brings up one of my pet peeves... RSS feeds are too important to outsource.  Users need to have control over their feeds.  For me I had some bumps with Wordpress but they do provide the source code.. So have your son start coding :-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619533">\
	 <div id="dsq-comment-header-9619533" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619533" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619533" href="http://patrick.geek.nz/" target="_blank" rel="nofollow">Patrick Q-G</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619533" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619533" class="dsq-comment-message">I have no idea if either of scoble\'s comments were directed at me (I signed my first comment as straight Patrick. Other Patrick, hey! I got here first on this post! :))<br><br>Patrick: cause I’m a user and it’d make it more consistent. The Web got popular because of “view source.” RSS got popular because normal people who aren’t rocket scientists can look at it and figure out what it’s doing (and how to do it on their own sites).<br><br>Uh. No. The web got popular because... well... it was pretty easy for anybody and everybody to setup a site. I dispute view source as being the main thing behind it. And for crying out loud, the source back then was not exactly what you\'d call great, or consistent. Personally, if the [CDATA[] helps a newbie to put properly formed XML up, and have it work rather than randomly error, then that\'s all good.<br><br>RSS got popular because normal people who aren\'t rocket scientists have software that reads the feed and shows it to them all pretty like (be it netnewswire, yahoo\'s rss reader, or even my.netscape, back in the day), and they have software (like wordpress, or movabletype, or livejournal, etc.) that makes those RSS/Atom feeds for them.<br><br>Patrick: I love how geeks argue with users when they point out inconsistencies in user experiences. How is that focusing on making it easier?<br><br>What does the way the source code of an rss/atom/etc. feed look have anything to do with the user experience?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619534">\
	 <div id="dsq-comment-header-9619534" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619534" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619534" href="http://scobleizer.wordpress.com/" target="_blank" rel="nofollow">scobleizer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619534" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619534" class="dsq-comment-message">Patrick: am I not a user?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619535">\
	 <div id="dsq-comment-header-9619535" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619535" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619535" href="http://press.teleinteractive.net/cynasuralog" target="_blank" rel="nofollow">Joseph A. di Paolantonio</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619535" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619535" class="dsq-comment-message">The primary feed reader that I use is the open source RSSowl.  I also use NewsGator (Web and Outlook edition, though I\'ve pretty much abandoned Outlook except for testing), AmphetaDesk, and Yahoo!RSS.<br><br>The <a href="http://scobleizer.wordpress.com/feed/" rel="nofollow">http://scobleizer.wordpress.com/feed/</a> stopped working on October 29 and began working again today.  I always got full text before the 29th and again today.<br><br>RSSwowl does give the error as to why a feed isn\'t validating.  Though, I\'m afraid that I didn\'t note the error message at the time.<br><br>It does sometimes happen.  I would guess that very few users or sites hand generate the RSS, RDF or Atom XML for their feeds.  The author publishes the post, and some script generates the feed automagically for them.  Even SF Gate wasn\'t validating for a few hours this morning.  BBC screws up about once a week.  No doubt better script debugging is the answer.<br><br>Robert, glad to have you back in my RSSowl.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619536">\
	 <div id="dsq-comment-header-9619536" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619536" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619536" href="http://strangnet.se/blog" target="_blank" rel="nofollow">Patrick S</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619536" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619536" class="dsq-comment-message">On my blog I\'ve left the terms RSS and Atom behind - I just kall them (news/web) feeds. For a visitor it\'s only really important that there are abilities to subscribe to the content and not what format they come wrapped in.<br><br>For the technically inclined it\'s easy to see that I serve all the feeds as Atom 1.0. I believe it\'s important to have that transparency - we don\'t go around and call web pages html-pages or even php-pages or asp.net-pages, do we?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619537">\
	 <div id="dsq-comment-header-9619537" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619537" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619537" href="http://press.teleinteractive.net/cynasuralog" target="_blank" rel="nofollow">Joseph A. di Paolantonio</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619537" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619537" class="dsq-comment-message">Oh, and on the matter of services vs running your own.  Running your own can take work.  We do it.  Well over a year ago we started testing various open source blogware, including WordPress, b2evolution and plog.  Our web sites were on a shared server at XO at the time.  In addition to bandwidth and storage, XO uses a "resource" calculation to see what amount of CPU and RAM your using in the shared environment.  Our domain hosting costs shot up - and we were posting infrequently and only one friend read us.  After a few months, we settled on b2evolution [we needed the multi-blog, multi-author capabilities PLUS the community was much, much more responsive and helpful than WordPress], and we got a dedicated server from ServerBeach.<br><br>We use so little of the resources of the server, that we\'re running a hosting service: open source software for small businesses, including b2evolution.  ;-)  Hey, it\'s cheaper than what XO\'s additional "resource units" were costing us, but it\'s still a lot of money per month for the machine.<br><br>At any rate, my point is that unless you\'re willing to dedicate a lot of your time to maintaining the underlying software, a service, be it Typepad, LiveJournal, <a href="http://WordPress.com" rel="nofollow">WordPress.com</a>, ours, or any other can be fine.  Though, I do have to admit that I shudder whenever I want to pick up someone\'s feed, and my only option is feedburner.  Something just doesn\'t feel right there.  Also, a service should allow a user to have their own domain [or subdomain like blog(s).domainName.TLD], as well as an exit path that preserves their look and all archived posts if they should wish to move to another service or self-hoting.<br><br>Oh, and on the other point in these comments, I haven\'t seen a feed reader yet that doesn\'t support RSSv0.92, RSSv1 (a.k.a RDF), RSSv2 and Atom 0.3.  Few support Atom 1.x yet.<br><br>I do agree with <a href="//http://marc.blogs.it/" rel="nofollow">Marc Canter</a>: the user is best served when the services support as many standards as possible.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619538">\
	 <div id="dsq-comment-header-9619538" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619538" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619538" href="http://www.qbitx.com/blog/" target="_blank" rel="nofollow">RedKite</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619538" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619538" class="dsq-comment-message">Yes, these sort of issues you raise have bothered me too. I have been a bit apathetic in the past towards these issues, but I do support your strong comments on this.<br><br>Availability of full-feeds is one of the most important issue to be addressed. After reading the comments I see there is a solution but I think it should be the default view in RSS readers if that\'s what the author intended.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619539">\
	 <div id="dsq-comment-header-9619539" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619539" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619539" href="http://www.bladam.com/" target="_blank" rel="nofollow">Adam</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619539" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619539" class="dsq-comment-message">&gt; Also, a service should allow a user to have their own<br>&gt; domain [or subdomain like blog(s).domainName.TLD], as<br>&gt; well as an exit path that preserves their look and<br>&gt; all archived posts if they should wish to move to<br>&gt; another service or self-hoting.<br><br>1) Feedburner lets you (for a small fee) use yourdomain.com/feed or whatever (while still taking advantage of their cool services).<br><br>2) Even on free Feedburner accounts, if you decide to ditch FB, they\'ll kindly redirect accesses to your FB URL to whatever URL on your own server you\'d like for 30 days (likely enough time for feedreaders to note the 301 redirect and react accordingly).<br><br>Note that I am not affiliated with FB in any way except as a happy user.<br><br>Oh, and Robert... it\'s certainly possible that there\'s SOME feed reader out there that can\'t handle Atom 0.3, just like there are still some browsers out there that can\'t handle proper CSS (and lots of other stuff), e.g., Netscape 4.  I don\'t know about you, but I gave up on those folks ages ago.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619540">\
	 <div id="dsq-comment-header-9619540" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619540" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619540" href="http://www.ecademy.com/" target="_blank" rel="nofollow">Julian Bond</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619540" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619540" class="dsq-comment-message">Garrrh! I can\'t believe we\'re still doing this. Robert, you\'re absolutely right to complain and push wordpress into doing the right thing. Getting a non-validating RSS feed from a hosted service is unacceptable. And if the RSS feed doesn\'t provide the information you want to be in it, complain about that as well. And "just use Feedburner" is not an answer. You shouldn\'t *have to* use Feedburner. That should be a choice if you want to use their added value, not a requirement.<br><br>A few other thoughts:-<br>- We should be way past people handcoding RSS. It should be transparent and just work. If you need to read the XML to work out what\'s going on, then you can also read specs and do research.<br><br>- There\'s nothing funky about CDATA. It\'s a part of the XML spec and has been for years. It\'s one solution to the double encoded &amp; and it does just work.<br><br>- Your RSS feed doesn\'t have full text in the item.description and some html tags have been removed. Putting the full text into a content:encoded RSS2 extension tag is ok, but it assumes (wrongly) that most aggregators will be able to read it.<br><br>- Inventing new MIME types is a pain in the neck. (people who serve OPML and RDF-XML like this, please note). My browser has a perfectly good XML reader and it can handle stylesheets in XML. If I click on a link to an XML file I want to be able to read it. Not get some dialog forcing me to make a choice I may not understand.<br><br>- I\'m not sure if you\'ve started in MS word or used an MS system to cut and paste or what but you\'ve got high order versions of \', "" and a few other characters in there. Character sets are a PITA, and while UTF-8 handles it, the feed may not end up in something that does. I do wish that when the content is basically aasci-7, all the systems involved would use aasci-7 for characters that exist in it. Microsoft please note, your smart quotes hurt developers because we frequently have to write code to convert them.<br><br>And finally, does anyone know who is reponsible for making &amp; a reserved character in XML? Because shooting is too kind. I want to poke them with pointy sticks for eternity! And the same goes for the person who chose \\ instead of / in Microsoft systems for folder path delimiters.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619541">\
	 <div id="dsq-comment-header-9619541" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619541" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619541" href="http://www.syntagmamedia.com/" target="_blank" rel="nofollow">John</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619541" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619541" class="dsq-comment-message">Yep, noticed your feed in Bloglines was down for a few days. Had to click on the main head to get through to your blog.<br><br>BTW I\'ve had the same problem with RSS2 on my standard Wordpress blog (via Fantastico). I set it to full text, but nothing happened for a few days, then a partial feed arrived in tha aggregators. So it\'s a generic problem, not just <a href="http://Wordpress.com" rel="nofollow">Wordpress.com</a>.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619542">\
	 <div id="dsq-comment-header-9619542" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619542" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619542" href="http://www.mutantpop.net/radioclash/" target="_blank" rel="nofollow">Tim</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619542" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619542" class="dsq-comment-message">I\'ve had discussion with Matt via Dave Winer about the WP RSS feeds, the implementation regarding enclosures and podcasting usability is terrible - it turns all links to files as enclosures - not just the first or one...great functionality if you need it; if not you can\'t turn it off or delete the extra enclosures...in a Douglas Adams way the \'delete\' button just serves to make you feel better about your life, but doesn\'t actually delete. So I followed Ben over at Tracks up the Tree and intentionally \'broke\' that function...not great, and I\'m not the first to do or say this.<br><br>I seem to remmeber I had to do some hacking to get full posts in RSS2 - initially I kept getting the summaries, NOT the post. There are two different WP functions, one for summaries and the other for posts, never the twain shall meet.<br><br>It\'s annoying, and a shame because WP is a great blogging platform...but for podcasting and for out-the-box it\'s got a long way to go...atm I can\'t really tell non-techy types to go WP when I know techy people have issues - WP\'s loss is Blogger\'s gain, sadly.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619543">\
	 <div id="dsq-comment-header-9619543" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619543" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619543" href="http://www.mutantpop.net/radioclash/" target="_blank" rel="nofollow">Tim</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619543" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619543" class="dsq-comment-message">eek Monday morning and I\'m a  bit slow..<br><br>Actually just checked my feed and I have the same issue - truncated post...I remember now I tried the full post WP function and got nada...it\'s very odd. Let us know if you find a solution...<br><br>It\'s odd because aggregated sites from my feed, such as Podcastalley et al show the full post? Curiouser and curiouser...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619544">\
	 <div id="dsq-comment-header-9619544" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619544" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619544">Damon</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619544" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619544" class="dsq-comment-message">I read your feed through SharpReader, and I\'ve had no problems with it whatsoever...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619545">\
	 <div id="dsq-comment-header-9619545" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619545" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619545" href="http://www.acemakr.com/" target="_blank" rel="nofollow">Gary Potter</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619545" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619545" class="dsq-comment-message">I don\'t know that sucks is correct, how about inconsistent? I\'ve been online for the past seven hours and my reader just picked up this post along with 19 others. Sometimes they\'re timely, sometimes they\'re not.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619546">\
	 <div id="dsq-comment-header-9619546" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619546" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619546" href="http://admin.support.journurl.com/" target="_blank" rel="nofollow">Roger Benningfield</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619546" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619546" class="dsq-comment-message">Robert: Hosted services have to pick reasonable defaults for all customers. The fact that the default doesn\'t suit your specific needs doesn\'t mean it "sucks".<br><br>You know this, of course. So I\'m left wondering why you\'d waste time with virtiol instead of simply asking how to tweak the default.<br><br>"I just tried my Atom feed and I couldn’t even get it to load up in the browser. That certainly is not good usability..."<br><br>Agreed. That means your aggregator is broken.<br><br>When you request a properly-served Atom or RSS file, your desktop aggregator should launch and help you subscribe to it. Unless you use a web-based aggregator, in which case you should be clicking your autodiscovery bookmark instead of playing "hunt the feed".</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619547">\
	 <div id="dsq-comment-header-9619547" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619547" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619547" href="http://weblog.philringnalda.com/" target="_blank" rel="nofollow">Phil Ringnalda</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619547" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619547" class="dsq-comment-message">"I never got complaints" isn\'t a perfect measure of how good something is: for a while, when I was using Bloglines, I set my subscriptions to show "Summaries if Available" so I could quickly skim through, opening interesting posts in a browser tab. Since your feed didn\'t have separate summaries and full content, I had to scroll past your whole posts when they were on something that didn\'t interest me, but since I knew you were using a tool that wouldn\'t produce more flexible RSS, I didn\'t complain.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619548">\
	 <div id="dsq-comment-header-9619548" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619548" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619548">Mark Napper</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619548" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619548" class="dsq-comment-message">Works fine in Newsgator for outlook. Always has.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619549">\
	 <div id="dsq-comment-header-9619549" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619549" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619549" href="http://tcs01.no-ip.com/puregeekiness" target="_blank" rel="nofollow">weiyen</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619549" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619549" class="dsq-comment-message">always has worked in Feed Demon right from day 1.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619550">\
	 <div id="dsq-comment-header-9619550" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619550" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619550" href="http://www.aaronintj.com/" target="_blank" rel="nofollow">Aaron</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619550" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619550" class="dsq-comment-message">Feed has always worked great in RSS Bandit.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619551">\
	 <div id="dsq-comment-header-9619551" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619551" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619551" href="http://lazycoder.com/" target="_blank" rel="nofollow">Scott</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619551" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619551" class="dsq-comment-message">"No one was bad off. Weblogs.Com sites moved to Buzzword.Com after a couple of days. Sheesh."<br><br><br>Way to miss the point RC.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619552">\
	 <div id="dsq-comment-header-9619552" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619552" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619552" href="http://www.domainunion.de/" target="_blank" rel="nofollow">domain</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619552" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619552" class="dsq-comment-message">i read there is hacking to get full posts in RSS2 ?<br>is this true?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619553">\
	 <div id="dsq-comment-header-9619553" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619553" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619553" href="http://vxjasonxv.wordpress.com/" target="_blank" rel="nofollow">VxJasonxV</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619553" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619553" class="dsq-comment-message">@domain:<br>It\'s an open option in the Wordpress Admin Panel.<br>No hacking involved besides clicking a radio button, and clicking submit.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619554">\
	 <div id="dsq-comment-header-9619554" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619554" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619554">Steve</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619554" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619554" class="dsq-comment-message">I use SharpReader, and since the switch I\'ve been getting this error sporadically:<br><br>"Error reading URL: The underlying connection was closed: The server committed an HTTP protocol violation."<br><br>I also run a WordPress-powered site but I have never seen this error on my own feed (mind you, I\'m running WordPress on my own server, not as a hosted solution).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619555">\
	 <div id="dsq-comment-header-9619555" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619555" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619555" href="http://quicksurf.com/" target="_blank" rel="nofollow">Adrian</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619555" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619555" class="dsq-comment-message">The RSS isn\'t broken Robert, it\'s just a little different than what you\'re expecting.  The description is your excerpt and the content encoded is your full post.  It\'s done this way so you can have characters embedded that rss itself doesn\'t support.  It also allows you to have the rich tagging in your post that rss doesn\'t necessarily support either.  Just about every feed reader I\'ve used recognizes it and knows what to do with it, and it does validate.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619556">\
	 <div id="dsq-comment-header-9619556" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619556" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619556" href="http://photomatt.net/" target="_blank" rel="nofollow">Matt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619556" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619556" class="dsq-comment-message">If anyone is still following this thread I tried to summarize the responses a few days ago here, I just forgot to ping this entry directly:<br><br><a href="http://matt.wordpress.com/2005/10/31/scoble-sucks/" rel="nofollow">Scoble Sucks (and WordPress RSS)</a><br><br>(We don\'t think he sucks of course, just continuing the hyperbole.)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619557">\
	 <div id="dsq-comment-header-9619557" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619557" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619557" href="http://www.geodog.us/" target="_blank" rel="nofollow">Geodog</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619557" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619557" class="dsq-comment-message">You were a little mean, Scoble. You don\'t usually dis people this bad.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619558">\
	 <div id="dsq-comment-header-9619558" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619558" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619558" href="http://www.bradfordgibson.net/" target="_blank" rel="nofollow">Brad Gibson</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619558" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619558" class="dsq-comment-message">Why does WordPress insist on putting the full text in  tags? Dave Winer\'s site has full text in  tags; so isn\'t that the right way to do it? I mean, come on, it\'s self-evident. Drupal does not see the full text because it is lookin at the  tags. Unless you go back to full text the way it use to be Robert, I will be pulling you out of my news feeds. Keep pushing WordPress</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619559">\
	 <div id="dsq-comment-header-9619559" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619559" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619559" href="http://www.bradfordgibson.net/" target="_blank" rel="nofollow">Brad Gibson</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619559" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619559" class="dsq-comment-message">Oh man, look what happened to my comment! Thanks Wordpress if I wrap a word in a "less than" and a "greater than" symbol to denote a tag, the word disappears. Great.<br><br>Here is what the post is supposed to have said:<br>Why does WordPress insist on putting the full text in content:encoded tags? Dave Winer’s site has full text in description tags; so isn’t that the right way to do it? I mean, come on, it’s self-evident. Drupal does not see the full text because it is looking at the description tags. Unless you go back to full text the way it use to be Robert, I will be pulling you out of my news feeds. Keep pushing WordPress</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619560">\
	 <div id="dsq-comment-header-9619560" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619560" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619560">George Brisbin</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619560" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619560" class="dsq-comment-message">Your rss feed worked in Opera 8.5 with no problems</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619561">\
	 <div id="dsq-comment-header-9619561" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619561" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619561" href="http://www.door2doortechsolutions.com/blog/" target="_blank" rel="nofollow">Greg Caulder</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619561" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619561" class="dsq-comment-message">The link for your old feed in the blob that is posted here is at <a href="http://radio.weblogs.com/0001011/rss.xml" rel="nofollow">http://radio.weblogs.com/0001011/rss.xml</a>, how did you get it to not cut off the description?<br><br>My feed is at <a href="http://www.door2doortechsolutions.com/blog/wp-rss2.php" rel="nofollow">http://www.door2doortechsolutions.com/blog/wp-r...</a><br><br>On mine it kuts off the description after a certian number of charters, it is somewere around 300 charters with spaces. I want ot use it so i can jsut update my blog, so i can grab that feed for my web page on my business.<br><br>Please email me back at <a href="http://salesdoor2doortechsolutions.com" rel="nofollow">salesdoor2doortechsolutions.com</a><br><br><br>Greg Caulder</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619562">\
	 <div id="dsq-comment-header-9619562" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619562" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619562" href="http://blog.searchofmp3.com/" target="_blank" rel="nofollow">theh</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619562" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619562" class="dsq-comment-message">:)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619564">\
	 <div id="dsq-comment-header-9619564" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619564" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619564" href="http://www.eu-fahrschulcenter.de/" target="_blank" rel="nofollow">eu führerschein</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619564" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619564" class="dsq-comment-message">On mine it kuts off the description after a certian number of charters, it is somewere around 300 charters with spaces. I want ot use it so i can jsut update my blog, so i can grab that feed for my web page on my business.<br><br>Please email me back at <a href="http://salesdoor2doortechsolutions.com" rel="nofollow">salesdoor2doortechsolutions.com</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619563">\
	 <div id="dsq-comment-header-9619563" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619563" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9619563">Tony</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619563" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619563" class="dsq-comment-message">For those saying that their feed is cut off, read the comments here:<br><a href="http://wordpress.org/support/topic/113579" rel="nofollow">http://wordpress.org/support/topic/113579</a><br>There\'s a fix there that helped me - maybe it will work for you too.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9619565">\
	 <div id="dsq-comment-header-9619565" class="dsq-comment-header">\
	 <cite id="dsq-cite-9619565" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9619565" href="http://www.porn4sex.net/" target="_blank" rel="nofollow">Matth Nortwan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9619565" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9619565" class="dsq-comment-message">but not instrested..</div>\
	 </div>\
	 </li>\
	 </ul>\
';

(function() {
	
	





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

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


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

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

	
	

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

	Dsq.Popup.showCookieMsgs();

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

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

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

	



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

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

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

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

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


	


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

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

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

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

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

})();




