




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": {"raythemoneyman": {"username": "raythemoneyman", "tumblr": "", "display_name": "Crude Oil Trader", "url": "http://disqus.com/raythemoneyman/", "registered": true, "linkedin": "", "blog": "http://crudeoiltrader.blogspot.com", "remote_domain": null, "points": 68, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/11/5226/avatar32.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b226de60031dcd1ab41b8ec1d850bdd6": {"username": "benjie t.", "tumblr": "", "display_name": "benjie t.", "url": "http://disqus.com/guest/b226de60031dcd1ab41b8ec1d850bdd6/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "pebird": {"username": "pebird", "tumblr": "", "display_name": "pebird", "url": "http://disqus.com/pebird/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 5, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "billbrown": {"username": "billbrown", "tumblr": "", "display_name": "billbrown", "url": "http://disqus.com/billbrown/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 2, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "gregorylent": {"username": "gregorylent", "tumblr": "", "display_name": "gregorylent", "url": "http://disqus.com/gregorylent/", "registered": true, "linkedin": "", "blog": "http://www.postlinearity.com", "remote_domain": null, "points": 23, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/30710/avatar32.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "RHondo": {"username": "RHondo", "tumblr": "", "display_name": "RHondo", "url": "http://disqus.com/RHondo/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 7, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "rossgreenspan": {"username": "rossgreenspan", "tumblr": "", "display_name": "rossgreenspan", "url": "http://disqus.com/rossgreenspan/", "registered": true, "linkedin": "in/rossgreenspan", "blog": "http://www.rossgreenspan.com", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/12588/avatar32.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "29dbfa4b0d61984a47946dff84033ad7": {"username": "wagelaborer", "tumblr": "", "display_name": "wagelaborer", "url": "http://disqus.com/guest/29dbfa4b0d61984a47946dff84033ad7/", "registered": false, "linkedin": "", "blog": "http://wagelaborer.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "steve_from_virginia": {"username": "steve_from_virginia", "tumblr": "", "display_name": "steve_from_virginia", "url": "http://disqus.com/steve_from_virginia/", "registered": true, "linkedin": "", "blog": "http://economic-undertow.blogspot.com", "remote_domain": null, "points": 8, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/29/56/avatar32.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "gregordotus": {"username": "gregordotus", "tumblr": "", "display_name": "gregor.us", "url": "http://disqus.com/gregordotus/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 8, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/10/204/avatar32.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "joshfactor": {"username": "joshfactor", "tumblr": "", "display_name": "joshfactor", "url": "http://disqus.com/joshfactor/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ohgod": {"username": "ohgod", "tumblr": "", "display_name": "ohgod", "url": "http://disqus.com/ohgod/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "f62ab4c140bbaa1879dd521e9424c712": {"username": "edvaard", "tumblr": "", "display_name": "edvaard", "url": "http://disqus.com/guest/f62ab4c140bbaa1879dd521e9424c712/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "8baf7d26e03e4302b9d61c5ec89bce92": {"username": "mrmeercat", "tumblr": "", "display_name": "mrmeercat", "url": "http://disqus.com/guest/8baf7d26e03e4302b9d61c5ec89bce92/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "81352546452f2b363286b255bd2c74d4": {"username": "Toby", "tumblr": "", "display_name": "Toby", "url": "http://disqus.com/guest/81352546452f2b363286b255bd2c74d4/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b75b85a553e2e6598e98c50ca7211854": {"username": "Jonathan Ryshpan", "tumblr": "", "display_name": "Jonathan Ryshpan", "url": "http://disqus.com/guest/b75b85a553e2e6598e98c50ca7211854/", "registered": false, "linkedin": "", "blog": "http://jonsrandomthoughts.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ericcb": {"username": "ericcb", "tumblr": "", "display_name": "ericcb", "url": "http://disqus.com/ericcb/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "inegoveritas": {"username": "inegoveritas", "tumblr": "", "display_name": "inegoveritas", "url": "http://disqus.com/inegoveritas/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "TJGodel": {"username": "TJGodel", "tumblr": "", "display_name": "TJGodel", "url": "http://disqus.com/TJGodel/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "13e18356c7e44e47a189e87b1b23db45": {"username": "Chris", "tumblr": "", "display_name": "Chris", "url": "http://disqus.com/guest/13e18356c7e44e47a189e87b1b23db45/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ericgarland": {"username": "ericgarland", "tumblr": "", "display_name": "ericgarland", "url": "http://disqus.com/ericgarland/", "registered": true, "linkedin": "", "blog": "http://www.competitivefutures.com/blog", "remote_domain": null, "points": 2, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/40/8797/avatar32.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "BrianMc": {"username": "BrianMc", "tumblr": "", "display_name": "BrianMc", "url": "http://disqus.com/BrianMc/", "registered": true, "linkedin": "in/brianmccaffrey", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "IRON100": {"username": "IRON100", "tumblr": "", "display_name": "IRON100", "url": "http://disqus.com/IRON100/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 3, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar32.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": false, "name": "Gregor.us", "streaming_realtime": false, "url": "gregorus", "allow_anon_post": true, "reactions_enabled": false, "reply_position": 0, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": false, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "gregorus", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-11-30_19:52:53", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": null}, "realtime_paused": false, "posts": {"12674049": {"up_voted": false, "ip": "", "has_replies": true, "message": "There may be no quick answers, but there IS an easy answer:  Americans need to produce more.  Americans need to work harder, make more goods more productively and stop wasting things.  Unfortunately, many people don't know what waste and production are.  For example, bottled water is a pure dead loss to society.  A glass of tap water costs society $0.0005 (5/100 of a cent) while the same amount of tap water costs society $0.10 to $0.25 depending on the market.  \"Producing\" bottled water is really tearing down the economy.<br><br>The recession is helping reacquaint people with what true savings and true waste are.  This is important because they were forgetting.  If you bail out California, and other states, they will never learn, and things will get much worse than they are now.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_23:01:48", "killed": false, "user_key": "8baf7d26e03e4302b9d61c5ec89bce92", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": 12636634, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12713990": {"up_voted": false, "ip": "", "has_replies": false, "message": "WOW!! I makes total sense to me. We have to \"produce\" something besides securitized assets.  I knew most of what is said in this post, but somehow here it worst.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_16:48:31", "killed": false, "user_key": "TJGodel", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months 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}, "12698125": {"up_voted": false, "ip": "", "has_replies": true, "message": "I do think it will be interesting should we get far enough down this road, that Californians become more aware of the revenue balance between Sacto and DC. This dynamic is definately on my mind.<br><br>As for transport systems, the proper way to analyze their economic benefit or liability goes way, way beyond fare revenues. My position now is that the California Freeway system is a bigger productivity and liability sink, than any CA public transport. You have to look at all-in costs. Take a look at what the state has to spend to maintain the very inefficient highway transport system.<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:21:33", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 4, "is_first_child": true, "email": "", "parent_post_id": 12682734, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12636559": {"up_voted": false, "ip": "", "has_replies": false, "message": "That was rather dastardly of me, wasn't it? I couldn't resist. Cheers.<br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_10:52:48", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12634470, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12695824": {"up_voted": false, "ip": "", "has_replies": false, "message": "On a purely human behavior and psyh. level, I remain fascinated that Sanford took a big political stand against spending largesse and called upon the ethos of restraint, given what was occuring in his personal life. As a general point, we know that sex and money are two areas where human behavior can get, uhm, very unrestrained. You know, the whole issue of human Appetites, in general.<br><br>More importantly, and more to your point, it would be a shame of this crisis does not force a radical shift in spending behavior in government(s). It will have been a waste if we don't finally confront the age-old achilles heel of democracy--which is that eventually the electorate votes itself tax cuts and spending increases--to ruin.<br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:13:40", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12671610, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12636689": {"up_voted": false, "ip": "", "has_replies": false, "message": "It is indeed getting more difficult to see how this ever resolves, without some sort of social dislocation that at least mirrors in shape (if not size) the systemic dislocation seen already. Generally, a crisis is not really a crisis unless the old order is swept away.<br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_10:56:30", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12635425, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12695187": {"up_voted": false, "ip": "", "has_replies": false, "message": "See the posts from BrianMC upthread. <br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_10:58:15", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12644918, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12682734": {"up_voted": false, "ip": "", "has_replies": true, "message": "I disagree on the necessity of state bailouts. Bloated, rich state bureaucracies are the very ones that need the job cuts that the prospect of no bailout brings.<br><br>Did you know that the big mass transit systems in CA have budgets about 10 times ticket sales?<br>Amtrack is about 3.5x, last I looked. Since CA residents and business pay more in Fed taxes than they get in return, Federal money may cost residents 5% more than CA receives.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_08:00:19", "killed": false, "user_key": "81352546452f2b363286b255bd2c74d4", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 5, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12704790": {"up_voted": false, "ip": "", "has_replies": false, "message": "@rewealth is doing great work on this. Check <a href=\"http://www.placestoinvest.com\" rel=\"nofollow\">www.placestoinvest.com</a> - He has an actual methodology for assessing which places (not necessarily states or countries) are most likely to be revitalized in the coming years. We all need to go bowling or something and talk this out.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:54:03", "killed": false, "user_key": "ericgarland", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12704179, "depth": 4, "points": 0, "author_is_creator": false, "is_realtime": false}, "12708888": {"up_voted": false, "ip": "", "has_replies": false, "message": "Just what we knew all along. The Fed is a (cheap) money- laundering operation. All that is missing is harlots.<br><br>Ironically, the big underlying problem isn't the broadly nationalized credit but high energy prices. The bubble disguised the need for extremely cheap inputs, importantly crude at rock bottom - sub $40 - prices. It's @ $60 now ...<br><br>OUCH!<br><br>Credit here is irrelevant since money cannot put more oil into the ground, only make it disappear faster above it. Self- defeating hardly describes the situation. Uhhhh ... er, where's the leadership?<br><br>As for Obama, is he for real?<br><br><a href=\"http://economic-undertow.blogspot.com/2009/07/whacky-conspiracy-theories.html\" rel=\"nofollow\">http://economic-undertow.blogspot.com/2009/07/w...</a>", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_14:33:08", "killed": false, "user_key": "steve_from_virginia", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12695324, "depth": 4, "points": 0, "author_is_creator": false, "is_realtime": false}, "12704411": {"up_voted": false, "ip": "", "has_replies": true, "message": "I hope that you always include, and don't erase, your quips from your pulbic presentations because they are very sharp, funny, and nearly always make your point.<br><br>Sarcasm is the new Analysis, baby!<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:45:05", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": 12703389, "depth": 6, "points": 1, "author_is_creator": true, "is_realtime": false}, "12695324": {"up_voted": false, "ip": "", "has_replies": true, "message": "Hamilton: <a href=\"http://www.econbrowser.com/archives/2009/07/concerns_about_1.html\" rel=\"nofollow\">Concerns about the Fed's New Balance Sheet</a>.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:01:35", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": 12642130, "depth": 3, "points": 0, "author_is_creator": true, "is_realtime": false}, "12695325": {"up_voted": false, "ip": "", "has_replies": false, "message": "I would point people to the various articles and research that suggests no combination of tax increases, or growth, can possibly catch the debt now. The debt has reached escape velocity.<br><br>Hamilton at UCSD alludes to the likelihood that we can't catch the debt now.<br><br><a href=\"http://www.econbrowser.com/archives/2009/07/concerns_about_1.html\" rel=\"nofollow\">Concerns about the Fed's New Balance Sheet</a>.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:01:37", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12674049, "depth": 3, "points": 0, "author_is_creator": true, "is_realtime": false}, "12704024": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yikes.", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:34:22", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12702372, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12635425": {"up_voted": false, "ip": "", "has_replies": true, "message": "Adding the state's debts to the federal total is the final nail in the coffin to our republic.  There is no one left to stand up to Washington after that, just a long (well less long than I ever imagined I'd see in my lifetime) march to totalitarianism.   Take the crisis now, or take a worse crisis later, make no mistake, the American Social Contract is broken, and the crisis will come.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_10:21:27", "killed": false, "user_key": "BrianMc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12642211": {"up_voted": false, "ip": "", "has_replies": false, "message": "But it's more likely that California voters will insist on no more bailouts for large corporations than on a bailout for themselves.  If they get their way in this, as is likely, the results are not easy to see.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_13:17:36", "killed": false, "user_key": "b75b85a553e2e6598e98c50ca7211854", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months 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}, "12702372": {"up_voted": false, "ip": "", "has_replies": true, "message": "Topical, in that it's another \"big state\" in a heap of fiscal and underlying economic distress ... coincidentally, also lead by a Republican governor (although circumstance would be no different if another party was in-charge) ...<br><br>** Tuesday, July 14, 2009, 2:16pm EDT  |  Modified: Tuesday, July 14, 2009, 2:32pm **<br><br>** REPORT:  Florida \u2018a state in trouble\u2019 **<br>South Florida Business Journal<br><br>On Monday, we learned that the number of millionaires in Florida had fallen dramatically. Now, a report finds that the economic future of the Sunshine State\u2019s residents is not very bright.<br><br>The report of key economic indicators from the Florida Center for Fiscal and Economic Policy's (FCFEP) finds that per person, income growth in Florida has fallen behind the rest of the nation and that the gap in income between the most affluent and those on the bottom rung of the economic ladder is among the widest in the nation \u2013 and getting wider.<br><br>In addition to having one of the nation\u2019s highest unemployment rates \u2013 in June, it hit 9.5 percent \u2013 many of Florida\u2019s jobs are low paying. The national average annual earnings for all occupations were $42,270 as of May 2008. Florida\u2019s average was almost 10 percent less, at $38,470.<br><br>\"These key indicators point to a state in trouble,\" FCFEP Executive Director John Hall said in a news release. <br><br>\"As Florida makes decisions about how much to spend, what to spend it on and how to raise the needed revenues, the economic realities detailed in this report need to be kept uppermost in the minds of policymakers.\u201d<br><br>The report noted these signs of trouble:<br><br>* Florida's population growth, which has driven the state's economy since World War II, is stagnant.<br>Florida's rate of income growth has fallen to 45th in the country.<br><br>* The real rate of growth in gross state product \u2013 the value of goods and services the state produces \u2013 has fallen to 47th in the nation.<br><br>* With a poverty rate of 12.5 percent, the number of people living in poverty in Florida has increased by 180,000 in one year.<br><br>* About 1.9 million Florida residents \u2013 about one in 10 \u2013 receive food stamps.<br><br>* Foreclosures in Florida have quadrupled over the last three years. In the first four months of this year, new Florida foreclosure filings totaled 198,880, according to RealtyTrac.<br><br>Per-capita state government spending is 44th in the nation, and Florida spends proportionately more of its budget on corrections than all but two states and a smaller share on education than most states.<br><br>The FCFEP is a Tallahassee-based nonprofit organization that conducts independent research.<br><br>Improving these trends will require \u201cwise choices on both the spending and revenue sides of the Florida budget,\u201d Hall said.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:51:36", "killed": false, "user_key": "billbrown", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12674472": {"up_voted": false, "ip": "", "has_replies": true, "message": "California is showing the symptoms of a much bigger disease. So much of our national economy has been based on abstraction and extraction. Abstract dot-com feelgood stock price increases were supposed to somehow finance the awesome needs of the Baby Boomer retirement. When that turned out to be fraud, we juiced the system with abstract securitized mortgage fakery. Meanwhile, we sent our skilled jobs to India, built our suburbs in the least energy-efficient way possible, and began extracting value out of every ecosystem, company, brand, and person possible.<br><br>I'm on Gregor's side. This is the end. The end of a value-destroying system, one that abhors connection and culture and iterative wealth creation. The beginning, however painful, of a return to smaller, more limited, more human-scale endeavor that will actually produce value for people.<br><br>But first, the pain of dismantling the old institutions, at the end of their life cycle.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_23:23:46", "killed": false, "user_key": "ericgarland", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12690739": {"up_voted": false, "ip": "", "has_replies": true, "message": "But it seems California legislature claims to be in \"agreement in principle\" on all but $400MM of the budget deficit.  However incredulous that appears on the surface, and no doubt it is accomplished through massive accounting sleight of hand and kicking the payment of today's expensees into outlier years, along with massive cuts in previously sort-of-sacred cow spending, if they can accomplish this for the current deficit, it ... buys us just enough time (one more cycle) for this to simply get that much worse :(", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_10:06:11", "killed": false, "user_key": "billbrown", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12691498": {"up_voted": false, "ip": "", "has_replies": true, "message": "FWIW, BART (Bay Area Rapid Transit) rider fares are about 50% of revenues - not 10%.  If you added up the cost of highways, you would find a very similar public subsidy to private ground transportation, along with a higher cost per passenger mile.<br><br>Regardless, there is no doubt there exists a moral hazard problem with state bailouts - you would think some combination of painful cuts and temporary federal assistance would make sense.  But we live in a different world.<br><br>I think the message Arnie got from Obama was their ain't gonna be much more print available.  The banks got there first and O's political capital is being spent quickly.<br><br>The stimulus is completely ineffective - it doesn't matter how much funding is passed by Congress if the money isn't spent.  The debt ceiling is at 12.1 trillion and total debt at 11.5 - can't stuff 700 billion (plus health care) in there unless the ceiling is raised - Congress won't do it yet.  So that's why the current stimulus is spent slowly, making it worthless.  If the government wants to spend fast, they can spend fast - just ask Cheney.<br><br>I think there is certainly the realization within the Administration that this is different kind of crisis and they are hamstrung with regard to options - hence lots of PR campaigns (green shoots, prosperity is around the corner, ...) - just buying time and hoping.  Considering that was the campaign theme, we shouldn't be too surprised.<br><br>Maybe the next campaign theme will be \"FORE\" - I want a poster with that printed on it.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_10:11:19", "killed": false, "user_key": "pebird", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12705963": {"up_voted": false, "ip": "", "has_replies": false, "message": "i do like something in the phrase \"federal power will decline amidst this severe economic recession\" ... seems like a boon in some ways ...", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_13:23:48", "killed": false, "user_key": "gregorylent", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months 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}, "12637868": {"up_voted": false, "ip": "", "has_replies": true, "message": "Where we are at now seemed outrageous in 2006, don't discount an idea on such flimsy conventional wisdom.   The crisis is coming, no way to avoid it, the old order will be swept away.  The trillion dollar question is what will replace it, and how far into the abyss will we sink before winter turns to spring? Debt Jubilee is on one end of the spectrum, neo-feudalism the other.  Ancient Athens saw the majority of its population become serfs before Solon was able to bring about Seisachtheia.  In our last crisis it took a massive depression and total global war to normalize the division of income and get the elites to remember that they need to share or everything breaks down.  I hope that it doesn't have to come to that this time around, but national income is more skewed to the elites than it was at the onset of the last crisis, so that hope is faint.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_11:26:30", "killed": false, "user_key": "BrianMc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 5, "is_first_child": false, "email": "", "parent_post_id": 12636634, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12706861": {"up_voted": false, "ip": "", "has_replies": false, "message": "my take on this ... managing public expectations has been the sole goal of all economic actions in the usa for a year now ... \"everybody knows the dice are loaded\", to quote leonard cohen ...", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_13:44:11", "killed": false, "user_key": "gregorylent", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12699463, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12703389": {"up_voted": false, "ip": "", "has_replies": true, "message": "\"We\" got paid in a vast wealth of increasingly-Asian made consumer goods, falsely-inflated real estate, and slightly enhanced salaries, from which we paid lower inflation-adjusted income and the highest worker productivity and least leisure time in history.<br><br>\"They\" got paid in cash, real estate titles, and stock, the fastest concentration of wealth in history.<br><br>But hey, the iPhone is COOL. It's worth reducing paid maternity leave down to six hours, am I right?", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:17:07", "killed": false, "user_key": "ericgarland", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": 12645878, "depth": 5, "points": 0, "author_is_creator": false, "is_realtime": false}, "12704179": {"up_voted": false, "ip": "", "has_replies": true, "message": "I have an ongoing conversation with @nelderini about which constraints to solve for, when gauging which States in the union might be best for making one's home. A kaleidescope of answers are continually spit out, from this dialogue, depending on whether one solves for: Water, Arable Land, Transportation, city sizes that actually allow for decisions to get made/to get things done, Oil and NG resources, Days of Heating/Cooling, Access to Waterways, Education Levels, Balance Sheets.<br><br>Perhaps we should plug you in, to the next call.<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:39:23", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": 12703565, "depth": 3, "points": 0, "author_is_creator": true, "is_realtime": false}, "12644918": {"up_voted": false, "ip": "", "has_replies": true, "message": "What is the catalyst for social dislocation? Partial international loss of confidence in the dollar? <br><br>Do you see a crisis of confidence in the USD if the government starts back-stopping the states with newly printed money?<br><br>General consensus among the Unwashed seems to be a wait for the turn, trust the Government. What is going to be the signal for people that this is not garden variety recession, but a type of economic collapse?", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_14:26:14", "killed": false, "user_key": "rossgreenspan", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12711864": {"up_voted": false, "ip": "", "has_replies": false, "message": "Gregor: <br><br>Your comment recently about the Portlands (OR: recently blue) Denvers (CO: newly blue) and Austins (TX: watch this space!) of the USA struck me.  I'm quite interested in hearing more of your thoughts on this sort of thing, particularly how the legacy political baggage shapes the range of futures.  Boston, Albany and Sacramento seem fated to gridlock at this point, don't they?<br><br>-benjie t.", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_15:48:33", "killed": false, "user_key": "b226de60031dcd1ab41b8ec1d850bdd6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12704179, "depth": 4, "points": 0, "author_is_creator": false, "is_realtime": false}, "12816315": {"up_voted": false, "ip": "", "has_replies": false, "message": "I will have to quote [hopefully with your blessing].....Sarcasm is the new  analysis. Love it!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-17_11:46:27", "killed": false, "user_key": "raythemoneyman", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12704411, "depth": 7, "points": 0, "author_is_creator": false, "is_realtime": false}, "12812606": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think that you hit the nail on the head in pointing out that too much \"production\" is simply leveraging past production.  Not sure about this though: <br><br>\"savings currently is little more than debt service.\"<br><br>On a typical $60k household income, the current 7% savings rate has $4200 annual run rate.  I believe this is after debt service expense.  So there is  considerable precautionary savings being built.  As well there should as high unemployment looks to be with us a while.<br><br>How do you arrive at the statement that savings is little more than debt service?  Maybe I am misinterpreting it.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-17_10:13:07", "killed": false, "user_key": "13e18356c7e44e47a189e87b1b23db45", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months 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}, "12744511": {"up_voted": false, "ip": "", "has_replies": false, "message": "sorry but a federal bailout is the wrong answer to a well described problem. It allows states to continue to pass the buck of runaway public costs down the road for a harder day of reckoning. its true that the country needs substantial infrastructure & education investment to build for the future. but there is no future when mega corporations ship professional US jobs overseas, hire illegal immigrants instead of american labor for blue collar jobs, health care insurers gouge businesses & deny coverage to the sick, wall street banks gouge consumers on their credit cards, create a derivatives bomb & pass it to the taxpayers, & public sector costs are inflated by public employee unions. Not to mention the powerful lobbies who have more power than presidents to effect changes in the law. There are a lot of problems to fix, & more deficit spending is not a solution, but a problem in of itself. Obama will have to beat very powerful interests who are making these problems, & so far we do not see the gumption in him to do so, as evidenced by the mortgage bankruptcy reform defeat.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-16_11:23:02", "killed": false, "user_key": "joshfactor", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months 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}, "12702276": {"up_voted": false, "ip": "", "has_replies": false, "message": "What the hell happened such that petroleum industry analysts, venture capitalists, and competitive intelligence dudes started sounding like the College Anarchists Society? But hey, when nothing works in an even remotely rational sense, what else can you think?<br><br>Seriously though, how long has it been like this? Was stuff this messed up in the 80s and 90s and I didn't notice?", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:49:01", "killed": false, "user_key": "ericgarland", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12696139, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12699463": {"up_voted": false, "ip": "", "has_replies": true, "message": "Good comment. Readers of my blog will know I am very much in agreement with you on all-in cost accounting of freeways and roads vs public transport. Also, as far as the new admin's approach to solving our current problems, it's getting harder for me to accept that they really are so dumb, and I wonder that they are cynical. Not a comforting thought. For now, I will go with the smidiot explanation--highly educated people overconfident in their solutions.<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:25:49", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": true, "email": "", "parent_post_id": 12691498, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12643656": {"up_voted": false, "ip": "", "has_replies": true, "message": "It is not just the elites' income that went up. We went and demanded and got paid ourselves a lot, decided not to work (and collect unemployment insurance, welfare etc.) when we were not getting the asking and instead became the masters of the illegal immigrants. It all made sense when we were on top of the world; can dictate how much each country should charge for their natural resources and man-made goods; how much their currency should be worth (through IMF etc.) and what the interest rate in those countries should be. In that process we became too fat (figuratively speaking) and arrogant and thought the God owes us everything. Just as one example, how on earth one could have the privilege of a 30 year mortgage at a guaranteed interest rate (which has been very low and subsidized by the foreign elite who steal from their countries) and at the same time get out of it with no penalty (does not make sense from a business perspective). Of course, we did not pay off our loans to get out of the mortgage (in that case the elite bankers would not have given us that provision), but simply rolled it into a new mortgage with higher loan that made us spend like rich and the elite pocketed the fees (Did anyone question for example the idea of paying for title insurance which they already had before refinancing?)! The foreign elite provided (and to certain extent, they still) us our good times that we had so far by keeping their stolen wealth in dollars and it can't go on for ever. Our children and their children are going to pay for our greed.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_13:52:59", "killed": false, "user_key": "ohgod", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 4, "is_first_child": false, "email": "", "parent_post_id": 12637868, "depth": 3, "points": 0, "author_is_creator": false, "is_realtime": false}, "12696139": {"up_voted": false, "ip": "", "has_replies": true, "message": "I suspect the crisis will not complete, until the old order is swept away. Alot has to fall. Products, practices, ideas, and the clownish and cynical people who run so many of the nation's institutions. It's not just govt and business. It's media, and academia too. <br><br>I think the proper stance to take now is as follows, to say : \"Your ideas suck, your solutions suck, your products suck, your media and your writing suck, your beliefs suck, your infrastructure sucks, and your priorities suck.\"<br><br>Heh. Get yer revoution on. (so to speak)<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:17:36", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": true, "email": "", "parent_post_id": 12674472, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12703565": {"up_voted": false, "ip": "", "has_replies": true, "message": "What do you think of the future of states like Vermont (my home state) which are addicted to Federal money, shedding jobs as fast as they can, and making zero plans for the future? <br><br>They will soon be just as broke as California, with no industry, and an a median age in some counties of 61 YEARS OLD.<br><br>If California can't do it with surging, young, dynamic populations and lots of talent, how will the others fare?", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_12:21:31", "killed": false, "user_key": "ericgarland", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 3, "is_first_child": false, "email": "", "parent_post_id": 12698125, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12642640": {"up_voted": false, "ip": "", "has_replies": true, "message": "One option out there I am seeing but is rarely discussed in the media is a massive cut in the defence budget. Get out of Iraq and Afghanistan first. Then, cut the defence budget by half (it would still be more than any country) effectively putting some of the US military power in hibernation. Bail out the states and any other urgent matters with the extra money. It is time to make the military-industrial complex pay its share of the tab. During the hibernation, the US would have to lean more on the international community for its peace keeping operation. There are plenty of ways to do this but it wouldn't be relevant to discuss then here.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_13:27:07", "killed": false, "user_key": "inegoveritas", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12642130": {"up_voted": false, "ip": "", "has_replies": true, "message": "\" ... and wonder that the only escape is some sort of mass debt forgiveness.\"<br><br>Which could only take place after loans are manifestly uncollectible, anyway.<br><br>The establishment would always remain in control - a devaluation or series of them would accomplish much the same thing. To a quadrillion- dollar economy, ten or twenty - or a hundred trillion in obligations is a bagatelle. The trick is to jump from the current exponential situation to a generally logarithmic background - a steady state qradrillion dollar economy. <br><br>The obstacle would be energy costs and the downstream effects of devaluation (Saudi Arabia's dollar reserves would be .1 cent reserves and I doubt if they would like that very much. Beggar thy neighbor! They would have to sell to us, anyway but $1,000 of oil would become $1,000,000 (and probably much more) oil. The debts can be erased but the ongoing erosion of commerce would be unaffected because of the steady and ongoing increase in relative energy costs.<br><br>I recall an article in the Wall Street Journal opining about using two distinct US currencies in parallel. I thought this was pretty radical thinking for the WSJ, but with the California 'Obama' on the horizon ... why not?<br><br><a href=\"http://economistsview.typepad.com/economistsview/2009/07/money-monopoly.html\" rel=\"nofollow\">http://economistsview.typepad.com/economistsvie...</a><br><br>Take a cue from GM bankruptcy 'procedure' and have a 'Bad' dollar, to be used for all debts past and present and a 'Good' dollar to be used for everything else. Godspeed, bad dollar!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_13:16:00", "killed": false, "user_key": "steve_from_virginia", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": 12636634, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12998243": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's not called debt forgiveness.   It's called bankruptcy, and it's the usual end to speculation and bubbles.  Citigroup, Bank of America, etc., are overextended and should be allowed to fail.  Instead, taxpayers are bailing them out.<br>This is unprecedented.  The dot-com bubble wasn't bailed out.  The railroad bubble wasn't bailed out. The Wall St bubble of the 20s wasn't bailed out.<br>I get that allowing bankruptcy will collapse the economy.  But those of us on the bottom are screwed either way.", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-21_10:53:38", "killed": false, "user_key": "29dbfa4b0d61984a47946dff84033ad7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12636634, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "13354055": {"up_voted": false, "ip": "", "has_replies": false, "message": "In 2006 I was asked how bad it could get. My answer made people choke. Here was my answer.<br>If it is bad, you will pimp out your wife.<br>If it is worse, you pimp your sister.<br>If it is really bad,you pimp your daughter.<br>But you probably won't be pimping your mother.<br>Notice the wife goes first.<br><br>The first to go will likely be young women to the middle east on Emirates Airlines -- they just got the A380. If this isn't a reality for you as the Russians what happend 15 years ago.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-26_12:12:29", "killed": false, "user_key": "f62ab4c140bbaa1879dd521e9424c712", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months 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}, "12695637": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yes. A 150K for every tax paying adult. Then combine it with new federal limits on credit creation, fractional reserve banking, and limits on personal credit extension. It would be like a mass, societal mea culpa. And then we move into a Slow Growth era. And just as you say, those not in debt get 150K too. But again, restraints would be needed to discourage consumption. Under this type of plan, public policy would move down the spectrum towards Savings. That would be a huge change to American culture.<br><br>I am open-minded on this stuff, and largely neutral. Generally I advocate ideas that will work and reduce suffering. I'm not big on moral hectoring and making people pay too much for their mistakes. However, on the other side of that equation, I agree that chaos and hazard increase if people are trained that their mistakes will have few penalties.<br><br>It's a mess. All the solutions so far are a mess. I would at least like to see a discussion of a debt jubilee, with a 150K credit to all, and then new onerous credit creation restrictions, and balanced budget laws both at Federal and State levels. <br><br>Bottom line though is that I have few solutions.<br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:09:08", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12652526, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12636634": {"up_voted": false, "ip": "", "has_replies": true, "message": "There are no good answers. Currently I am working on a mass debt jubilee idea which even I find outrageous. But, I do have to probe forward and wonder that the only escape is some sort of mass debt forgiveness. <br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_10:54:44", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 12, "is_first_child": true, "email": "", "parent_post_id": 12636401, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12644835": {"up_voted": false, "ip": "", "has_replies": false, "message": "I didn't quite suggest this but I did predict it, earlier this Winter. Of course, there is a potential Keynesian problem in that if one reduces defense spending now, it simply adds up to more contraction in the economy. But, we might as well suck it up. I agree that we are probably long since past the time when the US military budget, which frankly seems like it's still carried at post-war scale, could use some downsizing. Better to do it voluntarily than have to do it by necessity in further financial crisis.<br><br>G", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_14:24:03", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": true, "email": "", "parent_post_id": 12642640, "depth": 1, "points": 0, "author_is_creator": true, "is_realtime": false}, "12634470": {"up_voted": false, "ip": "", "has_replies": true, "message": "Gregor, never have I seen a more apt demonstration of \"a picture is worth a thousand words\" than that Obama picture and its juxtaposition in this post.  Well chosen.<br><br>-benjie t.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_09:54:00", "killed": false, "user_key": "b226de60031dcd1ab41b8ec1d850bdd6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12702162": {"up_voted": false, "ip": "", "has_replies": false, "message": "There's a story in today's LAT that discusses it ... Governor's office doesn't sound convinced, either ...", "is_last_child": true, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:46:07", "killed": false, "user_key": "billbrown", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 12698515, "depth": 2, "points": 0, "author_is_creator": false, "is_realtime": false}, "12652526": {"up_voted": false, "ip": "", "has_replies": true, "message": "Well, the quick and easy way is to get cheap energy to heal the system.  Regular gas here in SE Pa is still at about 2.50 per gallon.  They get it below a buck and the consumer will drive more and be able to spend more.  The state tax systems are built around consumption.  Liquid fuel tax, sales tax on dining out etc.  The Feds giving to the states is just taking from one pucket and putting it in another.  Won't solve a thing in the long run.  I prefer a variation of your debt forgiveness thing Gregor.  Give every taxpayer 150K in stead of just debtors.  Us guys who saw this coming and got/stayed out of debt deserve something too.  Everybody gets to spend his 150K how he wants.  Pay down debt, buy stuff to stimulate the economy, put it in the bank.  I'll be the guy standing behind you at the precious metals counter buying gold. lol", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_17:20:39", "killed": false, "user_key": "ericcb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12636401": {"up_voted": false, "ip": "", "has_replies": true, "message": "Another variation on the theme of debt. What can Washington really do? Conjure more debt itself; that game is also 'wearing thin'.<br><br>The outcome cannot be 'good' in the sense that any kind of normalcy - in the 'Leave It To Beaver' sense of the term, only a tremendous dislocation. This is inevitable. Federal intervention is a charade. <br><br>It the 'change' government would really think outside the box, by embracing small and reining in the banks - and take back its power to create money from the Federal Reserve and other banks, the transition would be useful. There would be pain ... but this is unavoidable.<br><br>The outcome of a society built on waste ... is what we are experiencing right now. Let the deleveraging begin!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_10:48:09", "killed": false, "user_key": "steve_from_virginia", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 13, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "12698515": {"up_voted": false, "ip": "", "has_replies": true, "message": "That's interesting. 26B is such a huge gap. I just don't see how they close it. But yes I fully expect amortization tricks.<br><br>G", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-15_11:22:46", "killed": false, "user_key": "gregordotus", "has_been_anonymized": false, "edited": false, "author_is_moderator": true, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": true, "email": "", "parent_post_id": 12690739, "depth": 1, "points": 1, "author_is_creator": true, "is_realtime": false}, "12759325": {"up_voted": false, "ip": "", "has_replies": false, "message": "I don't believe the federal government will use taxpayers dollars to bail out or maintain the standard of living that Californians enjoy.  The fact that they don't want to pay for that standard themselves and wish the nation to pick up the tab says a lot about how far we have fallen.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-16_14:11:21", "killed": false, "user_key": "RHondo", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months 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}, "12645878": {"up_voted": false, "ip": "", "has_replies": true, "message": "\"It is not just the elites' income that went up. We went and demanded and got paid ourselves a lot\"<br><br>This is incorrect.  (I'll never understand the part of the human psyche that hates itself and roots for its enemies, but I digress)  The top 10% of US earners now take ~50% of the National Income, that is more than even 1929! Real wages for the middle class have declined or remained flat every year for more than a generation.  Per capita GDP is higher now than ever before, the problem is the distribution. <br><br>Macro economists, who are nothing more than well paid academic shills for the establishment call it a failure of effective demand, in English that can be translated to: everyone is broke because a small subset of the population is driven to acquire and hoard wealth to the detriment of everyone, including themselves.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_14:53:07", "killed": false, "user_key": "BrianMc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 3, "is_first_child": false, "email": "", "parent_post_id": 12643656, "depth": 4, "points": 0, "author_is_creator": false, "is_realtime": false}, "12671610": {"up_voted": false, "ip": "", "has_replies": true, "message": "Great piece. Even SC has a debt crisis, so much so that Gov. Sanford who used such bravado fighting the stimulus payment acceptance, knew the SC Supreme Court would overrule him and said BEFORE the ruling that he would not fight it at the Supreme Court level. He simply was more worried about an Argentine love interest than he was holding a  convention to end the overwhelming dominance of the legislature brought about by the Reconstruction-era rewriting of the state constitution. His true effect on state spending has been nil, and no one in power now cares. They are too busy spending this little state into oblivion just like California's legislature is.<br><br>SC is exploding government expense at 13 percent per annum on the back of bloated state workers' and teachers' pensions and every state representatives pet projects that no representative can turn down. As there is neither an effective executive branch of state government to stop it nor a judicial branch of government that has not been bought off to stop it, the inevitable train wreck is going to occur.<br><br>I still believe that individuals within their states need to fight the pork that its legislatures continue to profligate, but that may only slightly dampen the damage that is coming to the value of our currency.<br>I am afraid the population is far too addicted to spending to end it.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-14_21:17:41", "killed": false, "user_key": "IRON100", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 1, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": null, "theme": 4, "reply_position": false, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "25381349", "user_id": "anonymous", "forum_id": "40145", "hash": 7417205243942862125}, "thread": {"days_alive": 0, "slug": "washington8217s_dilemma", "paginate": false, "num_pages": 1, "num_posts": 50, "per_page": 0, "total_posts": 0, "realtime_paused": true, "id": 25381349, "queued": false}, "reactions_limit": 10, "context": {"show_reply": true, "use_fb_connect": false, "forum_facebook_key": null, "use_yahoo": false, "subscribed": false, "use_twitter_signin": false, "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: ";
};
// 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 = '4f0bfca82e06c976a1efdd7c783a5fd0';
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=gregorus' +
		'&t=washington8217s_dilemma' +
		'&ff=' + Dsq.Thread.ff +
		'&default_text=' + 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://disqus.com/forums/gregorus/washington8217s_dilemma/latest.rss">' + Dsq.Strings.SUBSCRIBE_BY_RSS + '</a> \
			</span> \
		</div> \
		';

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

		
		

		return html;

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

		html += Dsq.Templates.pagination();


		html += Dsq.Templates.reactions();

		


		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>';
		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>'))
							+ ' <a href="' + Dsq.jsonData.settings.disqus_url + Dsq.Urls.REQUEST_USER_PROFILE + '">' + Dsq.jsonData.request.display_username + '</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"> \
				<form action="." method="GET" onsubmit="Dsq.Templates.postComment(' + post_id + ', this, false); return false;"> \
				<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">Subscribe to all comments by email</a></li> \
									<li><a href="#" onclick="Dsq.Templates.setSubscribe(0, this, ' + post_id + '); return false">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> \
				</form> \
			</div>'
			: '')
			+ '<div class="dsq-post-footer"> \
				<div class="dsq-sharing-options" ' + (!display_sharing_options ? 'style="display:none;"' : '') + '> \
					<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 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 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 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 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 class="dsq-button-small">' + Dsq.Strings.REPLY + '</button> \
						<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 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 ' + (reaction.source == 'backtype' ? '<a href="http://backtype.com/">BackType</a>' : '<a href="' + reaction.source_url + '">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 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 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 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 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 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 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 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="" /> 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 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/gregorus/thread.js'
			+ '?slug='	+ 'washington8217s_dilemma'
			+ '&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/gregorus/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://disqus.com/forums/gregorus/washington8217s_dilemma/reply.html';
	this.REQUEST_USER_PROFILE = '/AnonymousUser/';
	this.REQUEST_USER_AVATAR = 'http://media.disqus.com/images/noavatar92.png';
};
// Dsq.Urls

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

		return [windowWidth, windowHeight];
	}

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

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

		return [scrollWidth, scrollTop];
	}

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

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

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

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

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

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

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

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

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

				form.appendChild(input);
			}
		}

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

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

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

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

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

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

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

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

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

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

		return params;
	};

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

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

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

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

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

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

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

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

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

	};

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

};
// Dsq.Utils

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

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

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

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

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

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

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

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

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

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

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

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

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

	this.remoteAccountSettings = function() {
		var body = '';
		// Set up IFrame.
		var params = {};
		var base_url = 'http://disqus.com/forums/gregorus/_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 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">50</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://disqus.com/forums/gregorus/washington8217s_dilemma/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://disqus.com/forums/gregorus/washington8217s_dilemma/">Community Page</a>&nbsp;&nbsp;&nbsp;</span>\
	 <span class="dsq-item-subscribe">\
	 <img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle">\
	 <span id="dsq-subscribe">\
	 <a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a>\
	 </span>\
	 </span>\
	 </div>\
	 <div id="dsq-alerts">\
	 </div>\
		';

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

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

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

		

		html += Dsq.Templates.reactions();

		

		return html;
	};

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

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

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

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

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

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

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

		return html;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		return '<h3 class="dsq-h3-reactions">Reactions</h3><ul id="dsq-reactions" class="dsq-reactions">' + html + '</ul>';
	};
	
	this.missingPermissions = function() {
		return '';
	};

	//
	// Post
	//

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

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

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

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

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

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

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

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

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

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

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

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

		return ' \
			<div class="dsq-comment-footer" id="dsq-comment-footer-' + post_id + '"> \
				<div id="dsq-points-' + post_id + '" class="dsq-likedtxt">'
				+ (_meta.points
					? _meta.points + Dsq.Utils.pluralize(_meta.points, ' person', ' people') + ' liked this comment.'
					: '')
				+ '</div>'
				+ '<ul class="dsq-comment-options dsq-list-style">'
				+ (_meta.votable
					? '<li class="dsq-list-first dsq-rate" id="dsq-rate-cont-' + post_id + '">'
					+ (!_meta.up_voted
						? '<a href="#" onclick="Dsq.Post.rate(this, ' + post_id + ', 1); return false;">Like</a>'
						: 'You liked this.') + '</li>'
					: '')
				+ '<li class="dsq-report' + (!_meta.votable ? ' dsq-list-first' : '') + '" id="dsq-post-report-' + post_id + '"><a href="#" class="dsq-post-report" onclick="Dsq.Post.report(' + post_id + ', false); return false;">Report</a></li> \
				</ul> \
				<ul class="dsq-list-style">'
				+ (_meta.can_reply
					? '<li class="dsq-list-first"><a href="#" id="dsq-reply-link-' + post_id +'" onclick="Dsq.Post.toggleReply(this, ' + post_id +'); return false;">Reply</a></li>'
					: '')
				+ (_meta.can_reply && !_meta.has_replies && _meta.from_request_user
					? '<li id="dsq-edit-el-' + post_id + '"><a id="dsq-edit-link-' + post_id + '" href="#" onclick="Dsq.Post.edit(this, ' + post_id + '); return false;">Edit</a></li>'
					: '')
				+ '<li class="' + (!_meta.can_reply ? 'dsq-list-first' : '') + '" id="dsq-more-el-' + post_id + '"><a id="dsq-more-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'more\'); return false">More <small>&#9660;</small></a></li>'
				+ (Dsq.jsonData.forum.use_media
					? '<li id="dsq-media-el-' + post_id +'" style="display:none"><a id="dsq-media-link-' + post_id + '" href="#" onclick="Dsq.Post.showMenu(this, ' + post_id + ', \'media\'); return false">Use Media <small>&#9660;</small></a></li>'
					: '')
				+ '</ul>'
				+ '<div id="dsq-reply-bar-' + post_id + '" class="dsq-reply-bar" style="display:none"> \
						<div id="dsq-reply-bar-items-' + post_id + '" class="dsq-reply-bar-items"> \
						</div> \
						<div id="dsq-reply-bar-auth-' + post_id + '" class="dsq-reply-bar-auth"> \
							 \
								 \
								 	<a href="#" class="dsq-help dsq-reply-req-opt" title="You are commenting as a Guest. You may choose to log into an existing DISQUS Profile, your Facebook, Twitter or OpenID account to comment on Gregor.us" 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:25381349" onclick="Dsq.Popup.login(); return false">Login</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'				: 'gregorus',
			't'				: 'washington8217s_dilemma',
			// 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/gregorus/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/gregorus/washington8217s_dilemma/post_report/', {'post_id': id});
			Dsq.Popup.popModal('Thank you. This comment has been flagged for moderator attention.', 'Successfully flagged');
			Dsq.Utils.deleteNode(Dsq.$('dsq-post-report-' + id));
		} else {
			var title = Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT;
			var message = Dsq.Strings.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR + '? \
			<br /><br /> \
			<button onclick="Dsq.Popup._closePopup(null, true)"><strong>' + Dsq.Strings.NO + '</strong>, ' + Dsq.Strings.NEVER_MIND + '</button>&nbsp;&nbsp;&nbsp;<button onclick="Dsq.Post.report(' + id + ', true);"><strong>' + Dsq.Strings.YES + '</strong>, ' + Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT + '</button><br /><br />'
			+ Dsq.Strings.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION + '. \
			';

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



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

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

};
// Dsq.Post


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

	
	this.adminIsOn = false;

	
	
	

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

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

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

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

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

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

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

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

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

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

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


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

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

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

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			el_clicked.style.display = 'none';
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/gregorus/thread.js'
			+ '?slug='	+ 'washington8217s_dilemma'
			+ '&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/gregorus/thread.js'
			+ '?slug='	+ 'washington8217s_dilemma'
			+ '&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/gregorus/subscribe.js'
				+'?status=' 	+ status
				+ '&slug='		+ 'washington8217s_dilemma'
				+ '&email=' 	+ encodeURIComponent(email));

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

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

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

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

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

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

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

	this.check = function() {
		if (!ongoing_request && Dsq.jsonData.realtime_enabled) {
			if (prev_script) {
				prev_script.parentNode.removeChild(prev_script);
			}
			ongoing_request = true;
			prev_script = Dsq.Utils.execScript('http://disqus.com/forums/25381349/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/gregorus/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/gregorus/queueurl.js');
	};
};

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

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

	return obj;
}();


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









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

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

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

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-12634470">\
	 <div id="dsq-comment-header-12634470" class="dsq-comment-header">\
	 <cite id="dsq-cite-12634470" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12634470">benjie t.</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12634470" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12634470" class="dsq-comment-message">Gregor, never have I seen a more apt demonstration of "a picture is worth a thousand words" than that Obama picture and its juxtaposition in this post.  Well chosen.<br><br>-benjie t.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12636559">\
	 <div id="dsq-comment-header-12636559" class="dsq-comment-header">\
	 <cite id="dsq-cite-12636559" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12636559">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12636559" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12636559" class="dsq-comment-message">That was rather dastardly of me, wasn\'t it? I couldn\'t resist. Cheers.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12635425">\
	 <div id="dsq-comment-header-12635425" class="dsq-comment-header">\
	 <cite id="dsq-cite-12635425" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12635425">BrianMc</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12635425" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12635425" class="dsq-comment-message">Adding the state\'s debts to the federal total is the final nail in the coffin to our republic.  There is no one left to stand up to Washington after that, just a long (well less long than I ever imagined I\'d see in my lifetime) march to totalitarianism.   Take the crisis now, or take a worse crisis later, make no mistake, the American Social Contract is broken, and the crisis will come.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12636689">\
	 <div id="dsq-comment-header-12636689" class="dsq-comment-header">\
	 <cite id="dsq-cite-12636689" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12636689">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12636689" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12636689" class="dsq-comment-message">It is indeed getting more difficult to see how this ever resolves, without some sort of social dislocation that at least mirrors in shape (if not size) the systemic dislocation seen already. Generally, a crisis is not really a crisis unless the old order is swept away.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12636401">\
	 <div id="dsq-comment-header-12636401" class="dsq-comment-header">\
	 <cite id="dsq-cite-12636401" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12636401" href="http://economic-undertow.blogspot.com" target="_blank" rel="nofollow">steve_from_virginia</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12636401" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12636401" class="dsq-comment-message">Another variation on the theme of debt. What can Washington really do? Conjure more debt itself; that game is also \'wearing thin\'.<br><br>The outcome cannot be \'good\' in the sense that any kind of normalcy - in the \'Leave It To Beaver\' sense of the term, only a tremendous dislocation. This is inevitable. Federal intervention is a charade. <br><br>It the \'change\' government would really think outside the box, by embracing small and reining in the banks - and take back its power to create money from the Federal Reserve and other banks, the transition would be useful. There would be pain ... but this is unavoidable.<br><br>The outcome of a society built on waste ... is what we are experiencing right now. Let the deleveraging begin!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12636634">\
	 <div id="dsq-comment-header-12636634" class="dsq-comment-header">\
	 <cite id="dsq-cite-12636634" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12636634">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12636634" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12636634" class="dsq-comment-message">There are no good answers. Currently I am working on a mass debt jubilee idea which even I find outrageous. But, I do have to probe forward and wonder that the only escape is some sort of mass debt forgiveness. <br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12637868">\
	 <div id="dsq-comment-header-12637868" class="dsq-comment-header">\
	 <cite id="dsq-cite-12637868" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12637868">BrianMc</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12637868" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12637868" class="dsq-comment-message">Where we are at now seemed outrageous in 2006, don\'t discount an idea on such flimsy conventional wisdom.   The crisis is coming, no way to avoid it, the old order will be swept away.  The trillion dollar question is what will replace it, and how far into the abyss will we sink before winter turns to spring? Debt Jubilee is on one end of the spectrum, neo-feudalism the other.  Ancient Athens saw the majority of its population become serfs before Solon was able to bring about Seisachtheia.  In our last crisis it took a massive depression and total global war to normalize the division of income and get the elites to remember that they need to share or everything breaks down.  I hope that it doesn\'t have to come to that this time around, but national income is more skewed to the elites than it was at the onset of the last crisis, so that hope is faint.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12643656">\
	 <div id="dsq-comment-header-12643656" class="dsq-comment-header">\
	 <cite id="dsq-cite-12643656" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12643656">ohgod</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12643656" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12643656" class="dsq-comment-message">It is not just the elites\' income that went up. We went and demanded and got paid ourselves a lot, decided not to work (and collect unemployment insurance, welfare etc.) when we were not getting the asking and instead became the masters of the illegal immigrants. It all made sense when we were on top of the world; can dictate how much each country should charge for their natural resources and man-made goods; how much their currency should be worth (through IMF etc.) and what the interest rate in those countries should be. In that process we became too fat (figuratively speaking) and arrogant and thought the God owes us everything. Just as one example, how on earth one could have the privilege of a 30 year mortgage at a guaranteed interest rate (which has been very low and subsidized by the foreign elite who steal from their countries) and at the same time get out of it with no penalty (does not make sense from a business perspective). Of course, we did not pay off our loans to get out of the mortgage (in that case the elite bankers would not have given us that provision), but simply rolled it into a new mortgage with higher loan that made us spend like rich and the elite pocketed the fees (Did anyone question for example the idea of paying for title insurance which they already had before refinancing?)! The foreign elite provided (and to certain extent, they still) us our good times that we had so far by keeping their stolen wealth in dollars and it can\'t go on for ever. Our children and their children are going to pay for our greed.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12645878">\
	 <div id="dsq-comment-header-12645878" class="dsq-comment-header">\
	 <cite id="dsq-cite-12645878" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12645878">BrianMc</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12645878" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12645878" class="dsq-comment-message">"It is not just the elites\' income that went up. We went and demanded and got paid ourselves a lot"<br><br>This is incorrect.  (I\'ll never understand the part of the human psyche that hates itself and roots for its enemies, but I digress)  The top 10% of US earners now take ~50% of the National Income, that is more than even 1929! Real wages for the middle class have declined or remained flat every year for more than a generation.  Per capita GDP is higher now than ever before, the problem is the distribution. <br><br>Macro economists, who are nothing more than well paid academic shills for the establishment call it a failure of effective demand, in English that can be translated to: everyone is broke because a small subset of the population is driven to acquire and hoard wealth to the detriment of everyone, including themselves.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12703389">\
	 <div id="dsq-comment-header-12703389" class="dsq-comment-header">\
	 <cite id="dsq-cite-12703389" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12703389" href="http://www.competitivefutures.com/blog" target="_blank" rel="nofollow">ericgarland</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12703389" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12703389" class="dsq-comment-message">"We" got paid in a vast wealth of increasingly-Asian made consumer goods, falsely-inflated real estate, and slightly enhanced salaries, from which we paid lower inflation-adjusted income and the highest worker productivity and least leisure time in history.<br><br>"They" got paid in cash, real estate titles, and stock, the fastest concentration of wealth in history.<br><br>But hey, the iPhone is COOL. It\'s worth reducing paid maternity leave down to six hours, am I right?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12704411">\
	 <div id="dsq-comment-header-12704411" class="dsq-comment-header">\
	 <cite id="dsq-cite-12704411" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12704411">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12704411" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12704411" class="dsq-comment-message">I hope that you always include, and don\'t erase, your quips from your pulbic presentations because they are very sharp, funny, and nearly always make your point.<br><br>Sarcasm is the new Analysis, baby!<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12816315">\
	 <div id="dsq-comment-header-12816315" class="dsq-comment-header">\
	 <cite id="dsq-cite-12816315" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12816315" href="http://crudeoiltrader.blogspot.com" target="_blank" rel="nofollow">Crude Oil Trader</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12816315" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12816315" class="dsq-comment-message">I will have to quote [hopefully with your blessing].....Sarcasm is the new  analysis. Love it!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12642130">\
	 <div id="dsq-comment-header-12642130" class="dsq-comment-header">\
	 <cite id="dsq-cite-12642130" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12642130" href="http://economic-undertow.blogspot.com" target="_blank" rel="nofollow">steve_from_virginia</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12642130" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12642130" class="dsq-comment-message">" ... and wonder that the only escape is some sort of mass debt forgiveness."<br><br>Which could only take place after loans are manifestly uncollectible, anyway.<br><br>The establishment would always remain in control - a devaluation or series of them would accomplish much the same thing. To a quadrillion- dollar economy, ten or twenty - or a hundred trillion in obligations is a bagatelle. The trick is to jump from the current exponential situation to a generally logarithmic background - a steady state qradrillion dollar economy. <br><br>The obstacle would be energy costs and the downstream effects of devaluation (Saudi Arabia\'s dollar reserves would be .1 cent reserves and I doubt if they would like that very much. Beggar thy neighbor! They would have to sell to us, anyway but $1,000 of oil would become $1,000,000 (and probably much more) oil. The debts can be erased but the ongoing erosion of commerce would be unaffected because of the steady and ongoing increase in relative energy costs.<br><br>I recall an article in the Wall Street Journal opining about using two distinct US currencies in parallel. I thought this was pretty radical thinking for the WSJ, but with the California \'Obama\' on the horizon ... why not?<br><br><a href="http://economistsview.typepad.com/economistsview/2009/07/money-monopoly.html" rel="nofollow">http://economistsview.typepad.com/economistsvie...</a><br><br>Take a cue from GM bankruptcy \'procedure\' and have a \'Bad\' dollar, to be used for all debts past and present and a \'Good\' dollar to be used for everything else. Godspeed, bad dollar!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12695324">\
	 <div id="dsq-comment-header-12695324" class="dsq-comment-header">\
	 <cite id="dsq-cite-12695324" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12695324">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12695324" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12695324" class="dsq-comment-message">Hamilton: <a href="http://www.econbrowser.com/archives/2009/07/concerns_about_1.html" rel="nofollow">Concerns about the Fed\'s New Balance Sheet</a>.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12708888">\
	 <div id="dsq-comment-header-12708888" class="dsq-comment-header">\
	 <cite id="dsq-cite-12708888" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12708888" href="http://economic-undertow.blogspot.com" target="_blank" rel="nofollow">steve_from_virginia</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12708888" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12708888" class="dsq-comment-message">Just what we knew all along. The Fed is a (cheap) money- laundering operation. All that is missing is harlots.<br><br>Ironically, the big underlying problem isn\'t the broadly nationalized credit but high energy prices. The bubble disguised the need for extremely cheap inputs, importantly crude at rock bottom - sub $40 - prices. It\'s @ $60 now ...<br><br>OUCH!<br><br>Credit here is irrelevant since money cannot put more oil into the ground, only make it disappear faster above it. Self- defeating hardly describes the situation. Uhhhh ... er, where\'s the leadership?<br><br>As for Obama, is he for real?<br><br><a href="http://economic-undertow.blogspot.com/2009/07/whacky-conspiracy-theories.html" rel="nofollow">http://economic-undertow.blogspot.com/2009/07/w...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12674049">\
	 <div id="dsq-comment-header-12674049" class="dsq-comment-header">\
	 <cite id="dsq-cite-12674049" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12674049">mrmeercat</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12674049" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12674049" class="dsq-comment-message">There may be no quick answers, but there IS an easy answer:  Americans need to produce more.  Americans need to work harder, make more goods more productively and stop wasting things.  Unfortunately, many people don\'t know what waste and production are.  For example, bottled water is a pure dead loss to society.  A glass of tap water costs society $0.0005 (5/100 of a cent) while the same amount of tap water costs society $0.10 to $0.25 depending on the market.  "Producing" bottled water is really tearing down the economy.<br><br>The recession is helping reacquaint people with what true savings and true waste are.  This is important because they were forgetting.  If you bail out California, and other states, they will never learn, and things will get much worse than they are now.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12695325">\
	 <div id="dsq-comment-header-12695325" class="dsq-comment-header">\
	 <cite id="dsq-cite-12695325" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12695325">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12695325" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12695325" class="dsq-comment-message">I would point people to the various articles and research that suggests no combination of tax increases, or growth, can possibly catch the debt now. The debt has reached escape velocity.<br><br>Hamilton at UCSD alludes to the likelihood that we can\'t catch the debt now.<br><br><a href="http://www.econbrowser.com/archives/2009/07/concerns_about_1.html" rel="nofollow">Concerns about the Fed\'s New Balance Sheet</a>.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12998243">\
	 <div id="dsq-comment-header-12998243" class="dsq-comment-header">\
	 <cite id="dsq-cite-12998243" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12998243" href="http://wagelaborer.blogspot.com/" target="_blank" rel="nofollow">wagelaborer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12998243" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12998243" class="dsq-comment-message">It\'s not called debt forgiveness.   It\'s called bankruptcy, and it\'s the usual end to speculation and bubbles.  Citigroup, Bank of America, etc., are overextended and should be allowed to fail.  Instead, taxpayers are bailing them out.<br>This is unprecedented.  The dot-com bubble wasn\'t bailed out.  The railroad bubble wasn\'t bailed out. The Wall St bubble of the 20s wasn\'t bailed out.<br>I get that allowing bankruptcy will collapse the economy.  But those of us on the bottom are screwed either way.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12642211">\
	 <div id="dsq-comment-header-12642211" class="dsq-comment-header">\
	 <cite id="dsq-cite-12642211" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12642211" href="http://jonsrandomthoughts.blogspot.com/" target="_blank" rel="nofollow">Jonathan Ryshpan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12642211" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12642211" class="dsq-comment-message">But it\'s more likely that California voters will insist on no more bailouts for large corporations than on a bailout for themselves.  If they get their way in this, as is likely, the results are not easy to see.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12642640">\
	 <div id="dsq-comment-header-12642640" class="dsq-comment-header">\
	 <cite id="dsq-cite-12642640" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12642640">inegoveritas</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12642640" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12642640" class="dsq-comment-message">One option out there I am seeing but is rarely discussed in the media is a massive cut in the defence budget. Get out of Iraq and Afghanistan first. Then, cut the defence budget by half (it would still be more than any country) effectively putting some of the US military power in hibernation. Bail out the states and any other urgent matters with the extra money. It is time to make the military-industrial complex pay its share of the tab. During the hibernation, the US would have to lean more on the international community for its peace keeping operation. There are plenty of ways to do this but it wouldn\'t be relevant to discuss then here.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12644835">\
	 <div id="dsq-comment-header-12644835" class="dsq-comment-header">\
	 <cite id="dsq-cite-12644835" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12644835">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12644835" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12644835" class="dsq-comment-message">I didn\'t quite suggest this but I did predict it, earlier this Winter. Of course, there is a potential Keynesian problem in that if one reduces defense spending now, it simply adds up to more contraction in the economy. But, we might as well suck it up. I agree that we are probably long since past the time when the US military budget, which frankly seems like it\'s still carried at post-war scale, could use some downsizing. Better to do it voluntarily than have to do it by necessity in further financial crisis.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12644918">\
	 <div id="dsq-comment-header-12644918" class="dsq-comment-header">\
	 <cite id="dsq-cite-12644918" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12644918" href="http://www.rossgreenspan.com" target="_blank" rel="nofollow">rossgreenspan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12644918" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12644918" class="dsq-comment-message">What is the catalyst for social dislocation? Partial international loss of confidence in the dollar? <br><br>Do you see a crisis of confidence in the USD if the government starts back-stopping the states with newly printed money?<br><br>General consensus among the Unwashed seems to be a wait for the turn, trust the Government. What is going to be the signal for people that this is not garden variety recession, but a type of economic collapse?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12695187">\
	 <div id="dsq-comment-header-12695187" class="dsq-comment-header">\
	 <cite id="dsq-cite-12695187" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12695187">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12695187" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12695187" class="dsq-comment-message">See the posts from BrianMC upthread. <br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12652526">\
	 <div id="dsq-comment-header-12652526" class="dsq-comment-header">\
	 <cite id="dsq-cite-12652526" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12652526">ericcb</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12652526" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12652526" class="dsq-comment-message">Well, the quick and easy way is to get cheap energy to heal the system.  Regular gas here in SE Pa is still at about 2.50 per gallon.  They get it below a buck and the consumer will drive more and be able to spend more.  The state tax systems are built around consumption.  Liquid fuel tax, sales tax on dining out etc.  The Feds giving to the states is just taking from one pucket and putting it in another.  Won\'t solve a thing in the long run.  I prefer a variation of your debt forgiveness thing Gregor.  Give every taxpayer 150K in stead of just debtors.  Us guys who saw this coming and got/stayed out of debt deserve something too.  Everybody gets to spend his 150K how he wants.  Pay down debt, buy stuff to stimulate the economy, put it in the bank.  I\'ll be the guy standing behind you at the precious metals counter buying gold. lol</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12695637">\
	 <div id="dsq-comment-header-12695637" class="dsq-comment-header">\
	 <cite id="dsq-cite-12695637" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12695637">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12695637" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12695637" class="dsq-comment-message">Yes. A 150K for every tax paying adult. Then combine it with new federal limits on credit creation, fractional reserve banking, and limits on personal credit extension. It would be like a mass, societal mea culpa. And then we move into a Slow Growth era. And just as you say, those not in debt get 150K too. But again, restraints would be needed to discourage consumption. Under this type of plan, public policy would move down the spectrum towards Savings. That would be a huge change to American culture.<br><br>I am open-minded on this stuff, and largely neutral. Generally I advocate ideas that will work and reduce suffering. I\'m not big on moral hectoring and making people pay too much for their mistakes. However, on the other side of that equation, I agree that chaos and hazard increase if people are trained that their mistakes will have few penalties.<br><br>It\'s a mess. All the solutions so far are a mess. I would at least like to see a discussion of a debt jubilee, with a 150K credit to all, and then new onerous credit creation restrictions, and balanced budget laws both at Federal and State levels. <br><br>Bottom line though is that I have few solutions.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12671610">\
	 <div id="dsq-comment-header-12671610" class="dsq-comment-header">\
	 <cite id="dsq-cite-12671610" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12671610">IRON100</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12671610" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12671610" class="dsq-comment-message">Great piece. Even SC has a debt crisis, so much so that Gov. Sanford who used such bravado fighting the stimulus payment acceptance, knew the SC Supreme Court would overrule him and said BEFORE the ruling that he would not fight it at the Supreme Court level. He simply was more worried about an Argentine love interest than he was holding a  convention to end the overwhelming dominance of the legislature brought about by the Reconstruction-era rewriting of the state constitution. His true effect on state spending has been nil, and no one in power now cares. They are too busy spending this little state into oblivion just like California\'s legislature is.<br><br>SC is exploding government expense at 13 percent per annum on the back of bloated state workers\' and teachers\' pensions and every state representatives pet projects that no representative can turn down. As there is neither an effective executive branch of state government to stop it nor a judicial branch of government that has not been bought off to stop it, the inevitable train wreck is going to occur.<br><br>I still believe that individuals within their states need to fight the pork that its legislatures continue to profligate, but that may only slightly dampen the damage that is coming to the value of our currency.<br>I am afraid the population is far too addicted to spending to end it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12695824">\
	 <div id="dsq-comment-header-12695824" class="dsq-comment-header">\
	 <cite id="dsq-cite-12695824" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12695824">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12695824" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12695824" class="dsq-comment-message">On a purely human behavior and psyh. level, I remain fascinated that Sanford took a big political stand against spending largesse and called upon the ethos of restraint, given what was occuring in his personal life. As a general point, we know that sex and money are two areas where human behavior can get, uhm, very unrestrained. You know, the whole issue of human Appetites, in general.<br><br>More importantly, and more to your point, it would be a shame of this crisis does not force a radical shift in spending behavior in government(s). It will have been a waste if we don\'t finally confront the age-old achilles heel of democracy--which is that eventually the electorate votes itself tax cuts and spending increases--to ruin.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12674472">\
	 <div id="dsq-comment-header-12674472" class="dsq-comment-header">\
	 <cite id="dsq-cite-12674472" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12674472" href="http://www.competitivefutures.com/blog" target="_blank" rel="nofollow">ericgarland</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12674472" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12674472" class="dsq-comment-message">California is showing the symptoms of a much bigger disease. So much of our national economy has been based on abstraction and extraction. Abstract dot-com feelgood stock price increases were supposed to somehow finance the awesome needs of the Baby Boomer retirement. When that turned out to be fraud, we juiced the system with abstract securitized mortgage fakery. Meanwhile, we sent our skilled jobs to India, built our suburbs in the least energy-efficient way possible, and began extracting value out of every ecosystem, company, brand, and person possible.<br><br>I\'m on Gregor\'s side. This is the end. The end of a value-destroying system, one that abhors connection and culture and iterative wealth creation. The beginning, however painful, of a return to smaller, more limited, more human-scale endeavor that will actually produce value for people.<br><br>But first, the pain of dismantling the old institutions, at the end of their life cycle.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12696139">\
	 <div id="dsq-comment-header-12696139" class="dsq-comment-header">\
	 <cite id="dsq-cite-12696139" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12696139">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12696139" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12696139" class="dsq-comment-message">I suspect the crisis will not complete, until the old order is swept away. Alot has to fall. Products, practices, ideas, and the clownish and cynical people who run so many of the nation\'s institutions. It\'s not just govt and business. It\'s media, and academia too. <br><br>I think the proper stance to take now is as follows, to say : "Your ideas suck, your solutions suck, your products suck, your media and your writing suck, your beliefs suck, your infrastructure sucks, and your priorities suck."<br><br>Heh. Get yer revoution on. (so to speak)<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12702276">\
	 <div id="dsq-comment-header-12702276" class="dsq-comment-header">\
	 <cite id="dsq-cite-12702276" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12702276" href="http://www.competitivefutures.com/blog" target="_blank" rel="nofollow">ericgarland</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12702276" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12702276" class="dsq-comment-message">What the hell happened such that petroleum industry analysts, venture capitalists, and competitive intelligence dudes started sounding like the College Anarchists Society? But hey, when nothing works in an even remotely rational sense, what else can you think?<br><br>Seriously though, how long has it been like this? Was stuff this messed up in the 80s and 90s and I didn\'t notice?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12682734">\
	 <div id="dsq-comment-header-12682734" class="dsq-comment-header">\
	 <cite id="dsq-cite-12682734" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12682734">Toby</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12682734" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12682734" class="dsq-comment-message">I disagree on the necessity of state bailouts. Bloated, rich state bureaucracies are the very ones that need the job cuts that the prospect of no bailout brings.<br><br>Did you know that the big mass transit systems in CA have budgets about 10 times ticket sales?<br>Amtrack is about 3.5x, last I looked. Since CA residents and business pay more in Fed taxes than they get in return, Federal money may cost residents 5% more than CA receives.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12698125">\
	 <div id="dsq-comment-header-12698125" class="dsq-comment-header">\
	 <cite id="dsq-cite-12698125" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12698125">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12698125" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12698125" class="dsq-comment-message">I do think it will be interesting should we get far enough down this road, that Californians become more aware of the revenue balance between Sacto and DC. This dynamic is definately on my mind.<br><br>As for transport systems, the proper way to analyze their economic benefit or liability goes way, way beyond fare revenues. My position now is that the California Freeway system is a bigger productivity and liability sink, than any CA public transport. You have to look at all-in costs. Take a look at what the state has to spend to maintain the very inefficient highway transport system.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12703565">\
	 <div id="dsq-comment-header-12703565" class="dsq-comment-header">\
	 <cite id="dsq-cite-12703565" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12703565" href="http://www.competitivefutures.com/blog" target="_blank" rel="nofollow">ericgarland</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12703565" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12703565" class="dsq-comment-message">What do you think of the future of states like Vermont (my home state) which are addicted to Federal money, shedding jobs as fast as they can, and making zero plans for the future? <br><br>They will soon be just as broke as California, with no industry, and an a median age in some counties of 61 YEARS OLD.<br><br>If California can\'t do it with surging, young, dynamic populations and lots of talent, how will the others fare?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12704179">\
	 <div id="dsq-comment-header-12704179" class="dsq-comment-header">\
	 <cite id="dsq-cite-12704179" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12704179">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12704179" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12704179" class="dsq-comment-message">I have an ongoing conversation with @nelderini about which constraints to solve for, when gauging which States in the union might be best for making one\'s home. A kaleidescope of answers are continually spit out, from this dialogue, depending on whether one solves for: Water, Arable Land, Transportation, city sizes that actually allow for decisions to get made/to get things done, Oil and NG resources, Days of Heating/Cooling, Access to Waterways, Education Levels, Balance Sheets.<br><br>Perhaps we should plug you in, to the next call.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12704790">\
	 <div id="dsq-comment-header-12704790" class="dsq-comment-header">\
	 <cite id="dsq-cite-12704790" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12704790" href="http://www.competitivefutures.com/blog" target="_blank" rel="nofollow">ericgarland</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12704790" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12704790" class="dsq-comment-message">@rewealth is doing great work on this. Check <a href="http://www.placestoinvest.com" rel="nofollow">www.placestoinvest.com</a> - He has an actual methodology for assessing which places (not necessarily states or countries) are most likely to be revitalized in the coming years. We all need to go bowling or something and talk this out.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12711864">\
	 <div id="dsq-comment-header-12711864" class="dsq-comment-header">\
	 <cite id="dsq-cite-12711864" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12711864">benjie t.</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12711864" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12711864" class="dsq-comment-message">Gregor: <br><br>Your comment recently about the Portlands (OR: recently blue) Denvers (CO: newly blue) and Austins (TX: watch this space!) of the USA struck me.  I\'m quite interested in hearing more of your thoughts on this sort of thing, particularly how the legacy political baggage shapes the range of futures.  Boston, Albany and Sacramento seem fated to gridlock at this point, don\'t they?<br><br>-benjie t.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12690739">\
	 <div id="dsq-comment-header-12690739" class="dsq-comment-header">\
	 <cite id="dsq-cite-12690739" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12690739">billbrown</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12690739" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12690739" class="dsq-comment-message">But it seems California legislature claims to be in "agreement in principle" on all but $400MM of the budget deficit.  However incredulous that appears on the surface, and no doubt it is accomplished through massive accounting sleight of hand and kicking the payment of today\'s expensees into outlier years, along with massive cuts in previously sort-of-sacred cow spending, if they can accomplish this for the current deficit, it ... buys us just enough time (one more cycle) for this to simply get that much worse :(</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12698515">\
	 <div id="dsq-comment-header-12698515" class="dsq-comment-header">\
	 <cite id="dsq-cite-12698515" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12698515">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12698515" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12698515" class="dsq-comment-message">That\'s interesting. 26B is such a huge gap. I just don\'t see how they close it. But yes I fully expect amortization tricks.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12702162">\
	 <div id="dsq-comment-header-12702162" class="dsq-comment-header">\
	 <cite id="dsq-cite-12702162" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12702162">billbrown</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12702162" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12702162" class="dsq-comment-message">There\'s a story in today\'s LAT that discusses it ... Governor\'s office doesn\'t sound convinced, either ...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12691498">\
	 <div id="dsq-comment-header-12691498" class="dsq-comment-header">\
	 <cite id="dsq-cite-12691498" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12691498">pebird</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12691498" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12691498" class="dsq-comment-message">FWIW, BART (Bay Area Rapid Transit) rider fares are about 50% of revenues - not 10%.  If you added up the cost of highways, you would find a very similar public subsidy to private ground transportation, along with a higher cost per passenger mile.<br><br>Regardless, there is no doubt there exists a moral hazard problem with state bailouts - you would think some combination of painful cuts and temporary federal assistance would make sense.  But we live in a different world.<br><br>I think the message Arnie got from Obama was their ain\'t gonna be much more print available.  The banks got there first and O\'s political capital is being spent quickly.<br><br>The stimulus is completely ineffective - it doesn\'t matter how much funding is passed by Congress if the money isn\'t spent.  The debt ceiling is at 12.1 trillion and total debt at 11.5 - can\'t stuff 700 billion (plus health care) in there unless the ceiling is raised - Congress won\'t do it yet.  So that\'s why the current stimulus is spent slowly, making it worthless.  If the government wants to spend fast, they can spend fast - just ask Cheney.<br><br>I think there is certainly the realization within the Administration that this is different kind of crisis and they are hamstrung with regard to options - hence lots of PR campaigns (green shoots, prosperity is around the corner, ...) - just buying time and hoping.  Considering that was the campaign theme, we shouldn\'t be too surprised.<br><br>Maybe the next campaign theme will be "FORE" - I want a poster with that printed on it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12699463">\
	 <div id="dsq-comment-header-12699463" class="dsq-comment-header">\
	 <cite id="dsq-cite-12699463" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12699463">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12699463" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12699463" class="dsq-comment-message">Good comment. Readers of my blog will know I am very much in agreement with you on all-in cost accounting of freeways and roads vs public transport. Also, as far as the new admin\'s approach to solving our current problems, it\'s getting harder for me to accept that they really are so dumb, and I wonder that they are cynical. Not a comforting thought. For now, I will go with the smidiot explanation--highly educated people overconfident in their solutions.<br><br>G</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12706861">\
	 <div id="dsq-comment-header-12706861" class="dsq-comment-header">\
	 <cite id="dsq-cite-12706861" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12706861" href="http://www.postlinearity.com" target="_blank" rel="nofollow">gregorylent</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12706861" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12706861" class="dsq-comment-message">my take on this ... managing public expectations has been the sole goal of all economic actions in the usa for a year now ... "everybody knows the dice are loaded", to quote leonard cohen ...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12702372">\
	 <div id="dsq-comment-header-12702372" class="dsq-comment-header">\
	 <cite id="dsq-cite-12702372" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12702372">billbrown</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12702372" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12702372" class="dsq-comment-message">Topical, in that it\'s another "big state" in a heap of fiscal and underlying economic distress ... coincidentally, also lead by a Republican governor (although circumstance would be no different if another party was in-charge) ...<br><br>** Tuesday, July 14, 2009, 2:16pm EDT  |  Modified: Tuesday, July 14, 2009, 2:32pm **<br><br>** REPORT:  Florida ‘a state in trouble’ **<br>South Florida Business Journal<br><br>On Monday, we learned that the number of millionaires in Florida had fallen dramatically. Now, a report finds that the economic future of the Sunshine State’s residents is not very bright.<br><br>The report of key economic indicators from the Florida Center for Fiscal and Economic Policy\'s (FCFEP) finds that per person, income growth in Florida has fallen behind the rest of the nation and that the gap in income between the most affluent and those on the bottom rung of the economic ladder is among the widest in the nation – and getting wider.<br><br>In addition to having one of the nation’s highest unemployment rates – in June, it hit 9.5 percent – many of Florida’s jobs are low paying. The national average annual earnings for all occupations were $42,270 as of May 2008. Florida’s average was almost 10 percent less, at $38,470.<br><br>"These key indicators point to a state in trouble," FCFEP Executive Director John Hall said in a news release. <br><br>"As Florida makes decisions about how much to spend, what to spend it on and how to raise the needed revenues, the economic realities detailed in this report need to be kept uppermost in the minds of policymakers.”<br><br>The report noted these signs of trouble:<br><br>* Florida\'s population growth, which has driven the state\'s economy since World War II, is stagnant.<br>Florida\'s rate of income growth has fallen to 45th in the country.<br><br>* The real rate of growth in gross state product – the value of goods and services the state produces – has fallen to 47th in the nation.<br><br>* With a poverty rate of 12.5 percent, the number of people living in poverty in Florida has increased by 180,000 in one year.<br><br>* About 1.9 million Florida residents – about one in 10 – receive food stamps.<br><br>* Foreclosures in Florida have quadrupled over the last three years. In the first four months of this year, new Florida foreclosure filings totaled 198,880, according to RealtyTrac.<br><br>Per-capita state government spending is 44th in the nation, and Florida spends proportionately more of its budget on corrections than all but two states and a smaller share on education than most states.<br><br>The FCFEP is a Tallahassee-based nonprofit organization that conducts independent research.<br><br>Improving these trends will require “wise choices on both the spending and revenue sides of the Florida budget,” Hall said.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12704024">\
	 <div id="dsq-comment-header-12704024" class="dsq-comment-header">\
	 <cite id="dsq-cite-12704024" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12704024">gregor.us</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12704024" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12704024" class="dsq-comment-message">Yikes.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12705963">\
	 <div id="dsq-comment-header-12705963" class="dsq-comment-header">\
	 <cite id="dsq-cite-12705963" class="dsq-comment-cite">\
	 <a id="dsq-author-user-12705963" href="http://www.postlinearity.com" target="_blank" rel="nofollow">gregorylent</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12705963" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12705963" class="dsq-comment-message">i do like something in the phrase "federal power will decline amidst this severe economic recession" ... seems like a boon in some ways ...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12713990">\
	 <div id="dsq-comment-header-12713990" class="dsq-comment-header">\
	 <cite id="dsq-cite-12713990" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12713990">TJGodel</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12713990" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12713990" class="dsq-comment-message">WOW!! I makes total sense to me. We have to "produce" something besides securitized assets.  I knew most of what is said in this post, but somehow here it worst.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12744511">\
	 <div id="dsq-comment-header-12744511" class="dsq-comment-header">\
	 <cite id="dsq-cite-12744511" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12744511">joshfactor</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12744511" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12744511" class="dsq-comment-message">sorry but a federal bailout is the wrong answer to a well described problem. It allows states to continue to pass the buck of runaway public costs down the road for a harder day of reckoning. its true that the country needs substantial infrastructure & education investment to build for the future. but there is no future when mega corporations ship professional US jobs overseas, hire illegal immigrants instead of american labor for blue collar jobs, health care insurers gouge businesses & deny coverage to the sick, wall street banks gouge consumers on their credit cards, create a derivatives bomb & pass it to the taxpayers, & public sector costs are inflated by public employee unions. Not to mention the powerful lobbies who have more power than presidents to effect changes in the law. There are a lot of problems to fix, & more deficit spending is not a solution, but a problem in of itself. Obama will have to beat very powerful interests who are making these problems, & so far we do not see the gumption in him to do so, as evidenced by the mortgage bankruptcy reform defeat.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12759325">\
	 <div id="dsq-comment-header-12759325" class="dsq-comment-header">\
	 <cite id="dsq-cite-12759325" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12759325">RHondo</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12759325" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12759325" class="dsq-comment-message">I don\'t believe the federal government will use taxpayers dollars to bail out or maintain the standard of living that Californians enjoy.  The fact that they don\'t want to pay for that standard themselves and wish the nation to pick up the tab says a lot about how far we have fallen.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-12812606">\
	 <div id="dsq-comment-header-12812606" class="dsq-comment-header">\
	 <cite id="dsq-cite-12812606" class="dsq-comment-cite">\
	 <span id="dsq-author-user-12812606">Chris</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-12812606" class="dsq-comment-body">\
	 <div id="dsq-comment-message-12812606" class="dsq-comment-message">I think that you hit the nail on the head in pointing out that too much "production" is simply leveraging past production.  Not sure about this though: <br><br>"savings currently is little more than debt service."<br><br>On a typical $60k household income, the current 7% savings rate has $4200 annual run rate.  I believe this is after debt service expense.  So there is  considerable precautionary savings being built.  As well there should as high unemployment looks to be with us a while.<br><br>How do you arrive at the statement that savings is little more than debt service?  Maybe I am misinterpreting it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-13354055">\
	 <div id="dsq-comment-header-13354055" class="dsq-comment-header">\
	 <cite id="dsq-cite-13354055" class="dsq-comment-cite">\
	 <span id="dsq-author-user-13354055">edvaard</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-13354055" class="dsq-comment-body">\
	 <div id="dsq-comment-message-13354055" class="dsq-comment-message">In 2006 I was asked how bad it could get. My answer made people choke. Here was my answer.<br>If it is bad, you will pimp out your wife.<br>If it is worse, you pimp your sister.<br>If it is really bad,you pimp your daughter.<br>But you probably won\'t be pimping your mother.<br>Notice the wife goes first.<br><br>The first to go will likely be young women to the middle east on Emirates Airlines -- they just got the A380. If this isn\'t a reality for you as the Russians what happend 15 years ago.</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=gregorus&t=washington8217s_dilemma&to_redirect=' + encodeURIComponent(window.location) + '&ifrs=' + encodeURIComponent(disqus_iframe_css);
			}
		}
	}

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

	




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

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

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

})();




