




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": {"Neo": {"username": "Neo", "tumblr": "", "display_name": "Neo", "url": "http://disqus.com/Neo/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 25, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/3313/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "shaun": {"username": "shaun", "tumblr": "", "display_name": "shaun", "url": "http://disqus.com/shaun/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 87, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/5760/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "alik": {"username": "alik", "tumblr": "", "display_name": "alik", "url": "http://disqus.com/alik/", "registered": true, "linkedin": "", "blog": "http://www.zydamax.com", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/15/5825/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "aba23": {"username": "aba23", "tumblr": "", "display_name": "aba23", "url": "http://disqus.com/aba23/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 9, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "domajot": {"username": "domajot", "tumblr": "", "display_name": "domajot", "url": "http://disqus.com/domajot/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 11, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "Marlowecan": {"username": "Marlowecan", "tumblr": "", "display_name": "Marlowecan", "url": "http://disqus.com/Marlowecan/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 47, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/14889/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "superdestroyer": {"username": "superdestroyer", "tumblr": "", "display_name": "superdestroyer", "url": "http://disqus.com/superdestroyer/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 63, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/5792/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "DLS": {"username": "DLS", "tumblr": "", "display_name": "DLS", "url": "http://disqus.com/DLS/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 690, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "Whocares": {"username": "Whocares", "tumblr": "", "display_name": "Whocares", "url": "http://disqus.com/Whocares/", "registered": true, "linkedin": "", "blog": "http://bobaggins.wordpress.com/", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "Christines": {"username": "Christines", "tumblr": "", "display_name": "Christines", "url": "http://disqus.com/Christines/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "Slamfu": {"username": "Slamfu", "tumblr": "", "display_name": "Slamfu", "url": "http://disqus.com/Slamfu/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 64, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "kuru": {"username": "kuru", "tumblr": "", "display_name": "kuru", "url": "http://disqus.com/kuru/", "registered": true, "linkedin": "", "blog": "http://www.spitrekop.com", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "Creole": {"username": "Creole", "tumblr": "", "display_name": "Creole", "url": "http://disqus.com/Creole/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/forums/2724//avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": false, "name": "The Moderate Voice", "streaming_realtime": false, "url": "themoderatevoice", "allow_anon_post": false, "reactions_enabled": true, "reply_position": 1, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": false, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "themoderatevoice", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-18_21:30:59", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": "locked"}, "realtime_paused": false, "posts": {"243890": {"up_voted": false, "ip": "", "has_replies": false, "message": "Now there is the \"<i>Obama-Wright escape</i>\" clause for those embarrassing situations where you can now say .. \"<b>I can no more likely renounce him/her than Obama could renounce Rev. Wright.</b>\"<br><br>Wow. Doesn't that make the world a better place ?<br><br>Or .. <b>I would like to invoke my \"<i>Obama-Wright escape</i>\" clause rights.</b><br><br>Ranks right up there with the 5th amendment.<br><br>Perhaps we should all automatically consider this response the next time we think of demanding a repudiation of someone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_09:39:31", "killed": false, "user_key": "Neo", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243974": {"up_voted": false, "ip": "", "has_replies": false, "message": "It is obvious that one can draw a host of widely varying conclusions from the speech, but I am curious whether people perceive it to be insincere. (Clearly Marlowecan would fall in this camp; presumably not Whocares.)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_10:04:36", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "250156": {"up_voted": false, "ip": "", "has_replies": false, "message": "?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-20_21:03:02", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 250151, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "5466124": {"up_voted": false, "ip": "", "has_replies": false, "message": "it was definately a success", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-01-22_12:17:50", "killed": false, "user_key": "kuru", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "11 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}, "243673": {"up_voted": false, "ip": "", "has_replies": false, "message": "Domajot makes a huge point.  It is one that superdestroyer and other right-wing sycophants cannot wish away even given their understanding-free inability to walk in others' shoes.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_07:15:46", "killed": false, "user_key": "shaun", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "246171": {"up_voted": false, "ip": "", "has_replies": false, "message": "Lib-Dems (the party's left wing) prefer Obama.<br><br><a href=\"http://www.usnews.com/articles/news/campaign-2008/2008/03/19/liberal-democrats-overwhelmingly-choose-obama-over-clinton-in-straw-poll.html\" rel=\"nofollow\">http://www.usnews.com/articles/news/campaign-20...</a><br><br><a href=\"http://www.politico.com/news/stories/0308/9125.html\" rel=\"nofollow\">http://www.politico.com/news/stories/0308/9125....</a><br><br><a href=\"http://thecaucus.blogs.nytimes.com/2008/03/19/liberals-aim-to-win/\" rel=\"nofollow\">http://thecaucus.blogs.nytimes.com/2008/03/19/l...</a><br><br><a href=\"http://www.ourfuture.org/\" rel=\"nofollow\">http://www.ourfuture.org/</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_21:52:27", "killed": false, "user_key": "DLS", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "244764": {"up_voted": false, "ip": "", "has_replies": true, "message": "Where the possible insincerity comes in is the disingenuous handling of his Wright problem.  He had already tried various not-forthright, not-candid, manipulative ways around it.  Back against the wall, he deftly minimizes Wright and consequently gives himself a pass, allowing him to avoid addressing the hard questions but instead to change the focus.  He could have educated us on his 20-year transformation, providing a roadmap of turning away from the politics of hate to the politics of inclusive change.  Instead he essentially said, \"The guy isn't that bad, I've told you enough, trust me, move on.\"  The audience was given what it wanted to hear.  If one buys into his Wright explanation,  with no problem with how he makes that argument (the \"no more than I could disown the black community or my own grandmother\"), then it is judged a sincere effort to rise above and move the dialog forward.  If one does not, then it is judged a calculated diversion with the questions left unanswered and enhanced suspicions over why he took this approach.<br><br>EDIT:  No sooner had I posted the above, than I spotted this, which goes straight to where the division in response to the speech comes from:<br><br><a href=\"http://www.boston.com/bostonglobe/editorial_opinion/oped/articles/2008/03/19/its_still_a_question_of_wright_and_wrong/\" rel=\"nofollow\">http://www.boston.com/bostonglobe/editorial_opi...</a><br><br>and this:<br><br><a href=\"http://www.realclearpolitics.com/articles/2008/03/new_wright.html\" rel=\"nofollow\">http://www.realclearpolitics.com/articles/2008/...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_13:48:25", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 12, "is_first_child": false, "email": "", "parent_post_id": 244566, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "5514288": {"up_voted": false, "ip": "", "has_replies": false, "message": "all in all, it was a succes.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-01-24_06:49:40", "killed": false, "user_key": "alik", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "10 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}, "250151": {"up_voted": false, "ip": "", "has_replies": true, "message": "I promise I'll let it go after this, and I do thank you again for sharing your thoughts and the discussion generally. I read the Myers op-ed you linked to, but I confess I find his position to be extremely unrealistic. The idea that we mustn't look at the past to see where we are (and who we are) and how we might go forward is one I, Obama, and William Faulkner all object to. Yes, we all know that race is largely a construct, but that doesn't make it or the effects of its perceived importance to some any less \"real.\" <br><br>Again, I don't know enough about Obama's church. Maybe you know that this church was one that regularly and continuously poisoned minds as you describe. Here's what I find interesting: As you say, even these clips came from videos that were widely available. If they are all so inflammatory, why have we only seen 1 min. and 45 sec. of them? More generally, why do I not know more of the unspeakable things they're up to?--there's nothing secret about it; the congregation numbers in the thousands from what I understand (and Wright has spoken at hundreds of other churches and schools). If there's smoke, there's fire, but what if there isn't all that much smoke? Then, do we really need to make up our minds so quickly?<br><br>Finally, Black Power is not Black Supremacy.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-20_21:01:04", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 2, "is_first_child": false, "email": "", "parent_post_id": 248796, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "246440": {"up_voted": false, "ip": "", "has_replies": false, "message": "?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_23:37:02", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 245940, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "244010": {"up_voted": false, "ip": "", "has_replies": false, "message": "Speechs do not set us free Domajot.  Even though this is the message that Barak Obama has been trying to instill. He is trying to emulate the late great dr. Martin Luther King but when all is said and done Barak Obama is missing one very serious ingredient to greatness.  <br><br>Action.  Deeds.  <br><br>Nothing changed.  You do not change mans hearts with flowery speechs but with deeds that back up words.  <br><br>IF as you claim that the words are transcendent then it is the words that are spoken that have intrinsic value and as such we must pay even MORE attention to the Rev. Wrights sermon because it is his words that you choose to pay more homage to then his deeds.<br><br>For I find in his actions nothing that leaped from the pages of his sermons.  I find no marches of \"Hate America\".  Yet Domajot in your haste to defend Obama and his Reverend you and so many others are failing to grasp the difference between words and deeds.<br><br>Pretty speeches do not change America.  John Kennedy said lets go to the moon and the world looked at him like he was nuts.  Then he was shot.  It was the action that brought about the results of the flowery speech.  Had this action not occurred then perhaps we would be talking about the Russians being the first to land on the moon.<br><br>Speechs yes.  But as the bible preaches to us.  Words without deeds are dead.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_10:18:37", "killed": false, "user_key": "Whocares", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243545": {"up_voted": false, "ip": "", "has_replies": false, "message": "I keep wondering what would/will happen if someone finds a video clip of Rev. Wright ranting against homosexuals or feminist.  I doubt that the verbal gymnastics that virtually all of the left is willing to accept in excusing the racism of Rev. Wright will have the same effect. <br><br>Either Senator Obama is certain that it does not exist or he is just hoping that the media will move on and stop going over what is on all of the videos of Rev. Wright.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_04:42:15", "killed": false, "user_key": "superdestroyer", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243757": {"up_voted": false, "ip": "", "has_replies": false, "message": "It was a brilliant political speech, as Sen. Obama managed to contradict (cough...revise) his previous admission on Wright with no one noticing:<br><br>Friday: \"None of these statements were ones that I had heard myself personally in the pews.\"<br><br>Yesterday: \"Did I ever hear him make remarks that could be considered controversial while I sat in church? Yes\"<br><br>The other day Obama's defenders here at TMV were crowing at Kristol, and saying you can't prove nothing.  He was never there when Wright was ranting.  Seems Obama was wiser...and knew (unlike his defenders) that he was there, and video would probably turn up.<br><br>Superdestroyer is right.  Logic would suggest that, in 20 years, there must be video putting Obama in the pews while Wright was ranting against whites or Jews or someone.<br><br>Why else would Obama change his story?<br><br>Clearly, a brilliant political speech.  It succeeded in allowing Shaun and other Obama defenders -- who were damning McCain to hell for the Hagee connection just a few days ago -- to happily give Obama a pass for 20 years of close association with Wright.   <br><br>Had the parties been reversed, and McCain embraced the legacy of a wacko right-wing evangelical while distancing himself from his words, I rather doubt Shaun would be so forgiving.<br><br>Also note that the speech implicitly equated Ferraro with Wright.  That was nasty and very political.  Brilliant slam at HRC.<br><br>Note the reference to white as well as black grievance (in reference to Affirmative Action in university placings, no less).  And the reference to class.  Brilliant. <br><br>The Ashley segment at the end was shite.  \"Human interest\" pablum - end on a human story folks can relate to - straight from Communications 101.  Not on a level with the political brilliance of the rest of the speech. <br><br>On the whole, I thought this a brilliant - even Machiavellian - political speech. <br><br>I had not considered Sen Obama ruthless enough...or politically devious enough...to be presidential material.  This speech has forced me to revise that view. <br><br>Wright will still come back to haunt him.  But he was was brilliant, without doubt.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_08:33:18", "killed": false, "user_key": "Marlowecan", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245550": {"up_voted": false, "ip": "", "has_replies": true, "message": "aba23,<br><br>Re \"speaking sincerely, whether he believes . . . \"  Not an easy question.  I don't think there is one answer to that.  One has to look at phrasing and context throughout.  I think there have been a number of balanced pieces that have done that, e.g., Joan Walsh in Salon.<br><br>There are clearly observations that are true, in terms of the racist behaviors both white and black.  I think he is sincere in recognizing some of the illegitimate, and legitimate, reasons for grievance.  And his appeal to us to have an open national discussion, I would think to be sincere; that it helps his campaign, doesn't make it less so.<br><br>On the other hand, some of how he describes the plight of the black community, I hope that this is not what he sincerely believes, because it relies too heavily on the cause being external, the broader American society.  That's a watered down version of Wright, and  doesn't place sufficient responsibility on the collapse of responsibility, accountability, culture, and family in that community.  I would have like to hear him talk like Cosby about this.  But in fairness, one has to consider his primary audience - which were Democrats yet to vote in the primary, and the superdelegates, and he has to consider his core constituency.<br><br>Some was clearly calculated to deal with his Wright problem (this is the area of the hard questions I was referring to).  He did this by minimizing Wright through comparisons to his grandmother and Ferraro, pointing out his military service and good social works.  I don't think he sincerely believes that this explains his association; he is simply trapped in that and no amount of changing the conversation changes that fact.  I think there is an explanation, but it would not be politically acceptable.  So he has to put the best face on it he can, and shift the conversation. <br><br>He also diverted into the anti-trade and anti-corporate populism he and HRC have used in Ohio and now Pennsylvania.  As we saw in the Nafta flap in Ohio, he says one thing but believes another.  That was for his core audience.<br><br>So, it's a mix of sincerity, exhortation, campaign, and disingenuous damage control.<br><br>The catalyst for this speech was the Wright problem.  It's nice that he turned this into an inspirational call to come together, but very disturbing that he not only didn't address the issue completely, but how he tried to work around it.  It leaves us wondering what and how he really thinks, because for sure 20 yrs ago he embraced Wright's views and now he rejects at least some of the most egregious.  But there is no way that he doesn't carry some of that forward; why else would he continue to work with Wright as he has until now?  Something is missing from this picture.<br><br>On my a-e:  I'll give you (a); I worded that poorly and what I had in mind doesn't matter enough.  (b) is I think supported by Obama's choice of words, comparisons, and implications.  (d) I'm surprised you would disagree with; this was a major thrust of his speech, his problem definition, the reason we need to do something.  (e) that's implicit, why else would he be speaking if its not about demonstrating his leadership towards addressing the race issues he framed?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_17:32:37", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 9, "is_first_child": false, "email": "", "parent_post_id": 244963, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245424": {"up_voted": false, "ip": "", "has_replies": false, "message": "?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_16:41:02", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 244963, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "246450": {"up_voted": false, "ip": "", "has_replies": true, "message": "aba23,<br><br>Thanks for your thoughtful reply, in turn.<br><br>To (d), I think we are getting at the same thing, just different words.  Your explanation is more expansive.  I was simply referring to his urging a national discussion of the underlying causes.<br><br>Also, in the speech while he did point to lack of sufficient responsibility in the black community, I felt, like some others do, that it was not proportionate, didn't scale to other points he was making.  This is not a big thing, though.<br><br>Where you and I will disagree is on (b), which is the heart of the matter; it was,  after all, the catalyst for the speech.  The problem is that while he definitely condemned what the public has seen from Wright, as you point out, at the same time he minimized it.  (Note Slamfu's pro-Obama post below, precisely because Obama \"stuck up for his pastor.\")  As he has before, Obama suggested that the videos were cherry-picked \"snippets\", were uncharacteristic of the total man and an unfair representation of 40 yrs of good works, asks that we \"understand his roots.\"  And then, and has been noted by quite a few analysts, he disingenuously compares Wright to Ferraro (which isn't remotely true), and compares disowning Wright as tantamount to rejecting the entire black community and his occasionally errant grandmother - even some who've written about this speech in glowing terms saw this to be ugly and misleading.  And why make such a stretch?  Because he hasn't an adequate answer.   <br><br>For reasons I describe in my reply below, I find his failure to reject Wright totally, his decision to have had a continued close association with such an individual, to have included him in his campaign, to be entirely inexcusable and unacceptable.  Were it another candidate, this would not be tolerated - including by Obama.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_23:39:24", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 6, "is_first_child": false, "email": "", "parent_post_id": 245940, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245940": {"up_voted": false, "ip": "", "has_replies": true, "message": "Thanks for the thoughtful reply. It goes some way to providing your perspective on the question I wondered about. <br><br>To clean up on the message points: to me, (b) rankled because I don't think Obama would consider the reaction to Wright's extreme comments as being \"unfairly overstated\"--quite the contrary, he condemned these statements as \"unacceptable,\" which is a pretty high level for a speech act, if you think about it. (d) I will give you only if it's placed in context, and even then not wholly. First, by placing in context I mean the context of a discussion of the race issue. I think that misrepresents his viewpoint because it emphasizes race as the focal point, and that's how his brand of political action differs, it appears, from Wrights--Obama's focus, as stated in the speech (and as demonstrated in his career), is on ensuring that ALL Americans have ample opportunity to succeed. Further, in this speech (and repeatedly on the campaign trail), he DID point to both legacy and irresponsibility, as you also suggest, as contributing to problems in the black community.<br><br>Finally, and perhaps most importantly, as to (e), he never claimed that HE will be able to bring us all together to fix whatever. His constant message is that this is his approach, but it is not top-down; it is not something he can do for us. Rather, it is up to us to do for us.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_20:24:19", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 8, "is_first_child": false, "email": "", "parent_post_id": 245550, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "264492": {"up_voted": false, "ip": "", "has_replies": false, "message": "The Wall Street Journal has some interesting answers to his speech and why he stayed with Pastor Wright and the Trinity United Church  for 20 years!<br><br><br>\t<br>OPINION<br>DOW JONES REPRINTS<br><br><br>This copy is for your personal, non-commercial use only. To order presentation-ready copies for distribution to your colleagues, clients or customers, use the Order Reprints tool at the bottom of any article or visit:<br><a href=\"http://www.djreprints.com\" rel=\"nofollow\">www.djreprints.com</a>.<br><br>\u2022 See a sample reprint in PDF format.<br>\u2022 Order a reprint of this article now.<br><br>The Obama Bargain<br>By SHELBY STEELE<br>March 18, 2008; Page A23<br>Geraldine Ferraro may have had sinister motives when she said that Barack Obama would not be \"in his position\" as a frontrunner but for his race. Possibly she was acting as Hillary Clinton's surrogate. Or maybe she was simply befuddled by this new reality -- in which blackness could constitute a political advantage.<br><br><br>AP<br>Jesse Jackson and Barack Obama, June 4, 2007.<br>But whatever her motives, she was right: \"If Obama was a white man, he would not be in this position.\" Barack Obama is, of course, a very talented politician with a first-rate political organization at his back. But it does not detract from his merit to say that his race is also a large part of his prominence. And it is undeniable that something extremely powerful in the body politic, a force quite apart from the man himself, has pulled Obama forward. This force is about race and nothing else.<br><br>The novelty of Barack Obama is more his cross-racial appeal than his talent. Jesse Jackson displayed considerable political talent in his presidential runs back in the 1980s. But there was a distinct limit to his white support. Mr. Obama's broad appeal to whites makes him the first plausible black presidential candidate in American history. And it was Mr. Obama's genius to understand this. Though he likes to claim that his race was a liability to be overcome, he also surely knew that his race could give him just the edge he needed -- an edge that would never be available to a white, not even a white woman.<br><br>How to turn one's blackness to advantage?<br><br>The answer is that one \"bargains.\" Bargaining is a mask that blacks can wear in the American mainstream, one that enables them to put whites at their ease. This mask diffuses the anxiety that goes along with being white in a multiracial society. Bargainers make the subliminal promise to whites not to shame them with America's history of racism, on the condition that they will not hold the bargainer's race against him. And whites love this bargain -- and feel affection for the bargainer -- because it gives them racial innocence in a society where whites live under constant threat of being stigmatized as racist. So the bargainer presents himself as an opportunity for whites to experience racial innocence.<br><br>This is how Mr. Obama has turned his blackness into his great political advantage, and also into a kind of personal charisma. Bargainers are conduits of white innocence, and they are as popular as the need for white innocence is strong. Mr. Obama's extraordinary dash to the forefront of American politics is less a measure of the man than of the hunger in white America for racial innocence.<br><br>His actual policy positions are little more than Democratic Party boilerplate and hardly a tick different from Hillary's positions. He espouses no galvanizing political idea. He is unable to say what he means by \"change\" or \"hope\" or \"the future.\" And he has failed to say how he would actually be a \"unifier.\" By the evidence of his slight political record (130 \"present\" votes in the Illinois state legislature, little achievement in the U.S. Senate) Barack Obama stacks up as something of a mediocrity. None of this matters much.<br><br>Race helps Mr. Obama in another way -- it lifts his political campaign to the level of allegory, making it the stuff of a far higher drama than budget deficits and education reform. His dark skin, with its powerful evocations of America's tortured racial past, frames the political contest as a morality play. Will his victory mean America's redemption from its racist past? Will his defeat show an America morally unevolved? Is his campaign a story of black overcoming, an echo of the civil rights movement? Or is it a passing-of-the-torch story, of one generation displacing another?<br><br>Because he is black, there is a sense that profound questions stand to be resolved in the unfolding of his political destiny. And, as the Clintons have discovered, it is hard in the real world to run against a candidate of destiny. For many Americans -- black and white -- Barack Obama is simply too good (and too rare) an opportunity to pass up. For whites, here is the opportunity to document their deliverance from the shames of their forbearers. And for blacks, here is the chance to document the end of inferiority. So the Clintons have found themselves running more against America's very highest possibilities than against a man. And the press, normally happy to dispel every political pretension, has all but quivered before Mr. Obama. They, too, have feared being on the wrong side of destiny.<br><br>And yet, in the end, Barack Obama's candidacy is not qualitatively different from Al Sharpton's or Jesse Jackson's. Like these more irascible of his forbearers, Mr. Obama's run at the presidency is based more on the manipulation of white guilt than on substance. Messrs. Sharpton and Jackson were \"challengers,\" not bargainers. They intimidated whites and demanded, in the name of historical justice, that they be brought forward. Mr. Obama flatters whites, grants them racial innocence, and hopes to ascend on the back of their gratitude. Two sides of the same coin.<br><br>But bargainers have an Achilles heel. They succeed as conduits of white innocence only as long as they are largely invisible as complex human beings. They hope to become icons that can be identified with rather than seen, and their individual complexity gets in the way of this. So bargainers are always laboring to stay invisible. (We don't know the real politics or convictions of Tiger Woods or Michael Jordan or Oprah Winfrey, bargainers all.) Mr. Obama has said of himself, \"I serve as a blank screen on which people of vastly different political stripes project their own views . . .\" And so, human visibility is Mr. Obama's Achilles heel. If we see the real man, his contradictions and bents of character, he will be ruined as an icon, as a \"blank screen.\"<br><br>Thus, nothing could be more dangerous to Mr. Obama's political aspirations than the revelation that he, the son of a white woman, sat Sunday after Sunday -- for 20 years -- in an Afrocentric, black nationalist church in which his own mother, not to mention other whites, could never feel comfortable. His pastor, Rev. Jeremiah Wright, is a challenger who goes far past Al Sharpton and Jesse Jackson in his anti-American outrage (\"God damn America\").<br><br>How does one \"transcend\" race in this church? The fact is that Barack Obama has fellow-traveled with a hate-filled, anti-American black nationalism all his adult life, failing to stand and challenge an ideology that would have no place for his own mother. And what portent of presidential judgment is it to have exposed his two daughters for their entire lives to what is, at the very least, a subtext of anti-white vitriol?<br><br>What could he have been thinking? Of course he wasn't thinking. He was driven by insecurity, by a need to \"be black\" despite his biracial background. And so fellow-traveling with a little race hatred seemed a small price to pay for a more secure racial identity. And anyway, wasn't this hatred more rhetorical than real?<br><br>But now the floodlight of a presidential campaign has trained on this usually hidden corner of contemporary black life: a mindless indulgence in a rhetorical anti-Americanism as a way of bonding and of asserting one's blackness. Yet Jeremiah Wright, splashed across America's television screens, has shown us that there is no real difference between rhetorical hatred and real hatred.<br><br>No matter his ultimate political fate, there is already enough pathos in Barack Obama to make him a cautionary tale. His public persona thrives on a manipulation of whites (bargaining), and his private sense of racial identity demands both self-betrayal and duplicity. His is the story of a man who flew so high, yet neglected to become himself.<br><br>Mr. Steele, a research fellow at Stanford University's Hoover Institution and the author of \"A Bound Man: Why We Are Excited About Obama and Why He Can't Win\" (Free Press, 2007).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-25_20:40:59", "killed": false, "user_key": "Christines", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243917": {"up_voted": false, "ip": "", "has_replies": false, "message": "Marlowecan-<br><br>Yes, Obama is a politician,. not a divine prophet.  He is a flawed human being like the rest of us.  So was Lincoln.  So was Jefferson.  Yet, their words  live on. to  inspire generation after generation.<br><br>In  the rush to pick over the man and  rifle through the speech for something that can be used like a political club, you are trampling the flowers and saplings while you search for weeds.<br><br>Kristol was criticized, so in good old political fashion, Obama deserves a revenge criticism?     Or is it poker:  I'l  see your Hagee and raise you a Wright?  <br><br>The beauty of the speech was that it  transcended the laying of blame stage in racial and political relations and in peron-to-person relationships.  It stressed the need to understand where we are , with all the complex emotional baggage we allcarry, so that we can shake free of the mess and  aim to do better.<br><br>The author of the speech and his political future   matter infiniely less than the message of the speech.  It truly breaks my heart to see Americans are so hell bent on destroying each other that they can't pause from today's battles long enough to safeguard their future.<br><br>This truly breaks my heart.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_09:49:29", "killed": false, "user_key": "domajot", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245455": {"up_voted": false, "ip": "", "has_replies": true, "message": "\"The problem is the contradiction between the fundamental message of the Obama campaign about bringing America together and Wright\u2019s hate-filled, divisive message.\"<br><br>Way to miss the entire point which is that as a leader of millions you have to bring everyone together even while they disagree.   Its not about sorting out the people you agree with from the ones you don't.   I'm off to bang my head against a brick wall.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_16:51:07", "killed": false, "user_key": "Slamfu", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year 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}, "247376": {"up_voted": false, "ip": "", "has_replies": true, "message": "I fully understand that having Wright be at all associated with his campaign makes a persuasive point against Obama's judgment. (I think his failure to loosen ties from Mr. Rezko at the first hint of Rezko's improrieties is even more damning.)  <br><br>His long-time personal association with his pastor is something I don't feel qualified to comment on.  I know too little about it; it could cut either way for me if I knew more about the church, the pastor, the nature of their relationship and numerous other factors. <br><br>Now, I have little use for religion, but there's a lot of good in Christianity, and in my opinion to cite his failure to \"reject Wright totally\" as \"inexcusable and unacceptable\" is not only to ask him to betray a basic tenet of his faith, but also to act completely contrary to what he seems to believe about effectuating constructive change.  <br><br>You also wrote: \"So when the world has grown so complex that we more than ever need to see leadership that can prove its mettle, can survive a cauldron on the order of a Firing Line debate, we instead get . . . fantastic marketing.\"<br><br>Again, I don't disagree that there's a lot of spin inherent to the workings of any successful politician, including this one, but I support Obama's candidacy exactly because I believe his primary motive--more than any other politician in my lifetime--is to try to attack the democracy-killing cancer endemic to our \"age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor.\"  (I also think he will ask more of the American people than any of his opponents, and that is crucial to the long-term economic health and both the short- and long-term influence of the nation.)<br><br>I'm sorry you find it more attributable to fantastic marketing, but it's too bad (from my perspective) that we'll likely never know.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-20_09:59:02", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 5, "is_first_child": false, "email": "", "parent_post_id": 246450, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "246353": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"he stuck up for both his and his pastor's points of view\"  But that is the crux of the problem, isn't it?  <br><br>Unless I misread you, seems you take the same 'not that big a deal' approach.  \"Made me think about where they come from and also reminded us that we all have folks in our lives we may not agree with.\"  Meaning exactly what?  They had tough breaks, a really tough time?  Made some mistakes in judgment?  Had some indiscretions?  We're all imperfect?<br><br>Let me share something.  I was an anti-war activist in SF/Oakland in '69.  I saw Black Power born,  along with  - in Cone's words, it's \"theological arm\" - Black Liberation Theology, the \"basis\" for Wright's teachings and the TUCC.  I've sat in the pews.  I've not only heard the message, but seen its effects first hand.  This cannot be scaled down to the \"we're all imperfect, we all make mistakes level.\"  Contrary to Obama's statement that these clips were \"cherry-picked\" snippets not representative of Wright, and the insinuation that we are not properly factoring in his yrs of good works, etc. - these are snapshots of a continuum of hate that has continued for 40 yrs right up to the present. <br><br>Consider that children in that congregation have been taught from early age to view everything about America - in Wright's words, its \"entire reality\" - through the prism of a conspiracy of white supremacy.  Accusations of America that put it on a par with the Nazis.  Does this church teach pride of self and one's heritage?  Yes.  Do good social works?  Yes.  Exhort personal responsibility?  Yes.  Promote devotion to family?  Yes.  But is it also a virulent form of anti-Americanism, does it promote separatism, is it anti-Semitic, does it judge whites as hopelessly unable to see their pervasive racism, does it drive a divisive wedge between its member and their neighbors?  Yes to all.<br><br>If this isn't enough to unequivocally condemn and disassociate from, then what is?   Is this what we really want to hear Obama \"stick up for\"?<br><br>And if another candidate had spent the past 20 years in close association with such a church, consulting with someone like Wright before making any \"bold political moves\", bringing an individual like Wright into his campaign, what would Obama say?   We know the answer to that.  There would be no excuses allowed.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_23:05:50", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 245623, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243795": {"up_voted": false, "ip": "", "has_replies": false, "message": "We know that Barak Obama comes from the far left.  His vote tells us so.  We know that Barak Obama hangs with far left as his friends tell us so.  We know that the far left has endorsed his candidacy as <a href=\"http://Moveon.org\" rel=\"nofollow\">Moveon.org</a> has announced it so.<br><br>Now Barak Obama is simply having to defend his friends, his family and his associates.  We as Americans demand nothing less.  He has chosen his friends, church, associates.  We did not choose them for him.  He voted the way he did.  We did not hold a gun to his head and make him do it.<br><br>Now America is simply asking for answers from the man.  Its politics.  Its reality.  When my daughters went on a date we got the information we needed.  Who, what, where, when and why.   Thats all this nation is asking.  <br><br>How he responds will define him in a crisis.  So far from what I see he will put George W. Bush to shame when it comes to personal loyalty.   Yet I understand his loyalty because as a nightly commenter on Cable said last night \"The Democrats are stuck with this guy aren't they.\"  Barak Obama has won the nomination.  He is speaking as someone who is the partys next nomination.  He is speaking with the voice of you will hear when he is in the White House.<br><br><br>Now we have some insight into the man.  The speech is inconsequential.  His actions are what speak louder then words.  His actions are what have been missing from his resume.  Now we have some actions in which to base an opinion and what many of us are seeing is not a pretty sight.<br><br>This more then anything is what the Rev. Wright episode represents.  Hillary has endured these for 20 years.  McCain has endured them.  Barak Obama has not.  Now its his turn.  I believe we must be prepared for a barrage of these coming at Barak Obama.  He is after all a Politician.  Not a saint.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_08:59:37", "killed": false, "user_key": "Whocares", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245588": {"up_voted": false, "ip": "", "has_replies": false, "message": "Slamfu,<br><br>Great name!  Is that Joe Bob language?<br><br>Anyway . . . you make a fair point, but so is the other one.  A whole lot of people have observed this.  Let's keep in mind that this speech was not in the game plan until the Wright flap.  Obviously, he saw that he couldn't any longer dismiss Wright, he had to do something.  This was not like an inaugural speech laying out a vision, this was a defensive move he had to make.  And remember that he started his campaign with an inclusive message that transcends race; when radical racism gets associated with him over a long duration, it's not unreasonable that people ask for that to be reconciled.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_17:43:50", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 245455, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "244566": {"up_voted": false, "ip": "", "has_replies": true, "message": "Without doubt, the speech was political; I wouldn't claim any action taken by a candidate for the presidency was not done without consideration of the political ramifications. <br><br>But what I'm curious about is how many people consider what he said to be an insincere reflection of what the man believes. Marlowecan said that Obama \"changed his story\" about what he heard in church (I don't happen to find a contradiction in the two comments offered, but I understand the inference). Based on that, I assume that Marlowecan finds at least some of the speech to be insincere--that is, again, saying something that he doesn't actually believe.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_12:46:54", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year 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}, "244697": {"up_voted": false, "ip": "", "has_replies": false, "message": "Of course it was calculatingly political.  He had boxed himself in, through a succession of denying or lawyerly dodging.  But Wright's words were simply too egregious to ignore.  This wasn't a speech given because he wanted to - he had to do it to stop the Wright hemorrhaging.  He would much rather it all had just gone away.<br><br>So his central message essentially was (a) it's your fault that we are here and (b) Wright's errors are being unfairly overstated and besides he's done many good works, so (c) while I strongly disagree with Wright, still he's not bad enough to break away from, (d) the real problem here is the underlying injustices of the past and the present, which (e) I am the one who can bring us together to fix.<br><br>The majority of people always believe what they want to believe.  All the more so in an age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor.  So when the world has grown so complex that we more than ever need to see leadership that can prove its mettle, can survive a cauldron on the order of a Firing Line debate, we instead get . . . fantastic marketing.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_13:22:47", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "248796": {"up_voted": false, "ip": "", "has_replies": true, "message": "aba23,<br><br>It was nice you took time to make another reply.  And I thank you especially for your constructive and respectful tone.  I hope that my responses have met that standard.<br><br>After I wrote the following, which I'll leave here fwiw, I came across a piece written by a black fellow with the New York Civil Rights Coalition and formerly the NAACP.  I'm guessing that you too will find this highly interesting and insightful . . .<br><br><a href=\"http://www.latimes.com/news/printedition/opinion/la-oew-meyers20mar20%2C1%2C5615767.story?track=rss\" rel=\"nofollow\">http://www.latimes.com/news/printedition/opinio...</a><br><br>I must comment on your thought re Obama's faith and not rejecting Wright.  Like yourself, I have little use for religion, at least the organized variety (I do like the Dalai Lama).  If you scan down the page you will see a post I made in ref to what is taught in Obama's church and by Rev Wright, and its origins.  I think if you take a closer look, you will find that the organizing principle is hatred of America as being \"white supremacist\" in its \"entire reality.\"  This is why in the church's bookstore, prominently displayed are the works of Farrakahn, Malcolm X, and former Black Panthers.  The church is based on a belief system its founder (a mentor of Wright) describes as the \"theological arm of Black Power.\"  The videos which caused the uproar, leading to Obama speech Tues, are not \"snippets\" taken out of context as Obama implies, they are representative of the message delivered in this church for 40 yrs.<br><br>I voted for Obama in the primary.  But when I learned that he had attended a Black Power church like this for 20 yrs, that Wright was a mentor and still advisor to his campaign . . . well, I was just dumbfounded and so depressed.  I cannot reconcile Obama making these choices.  I cannot understand his minimizing something so egregious.  I cannot understand why he is not telling us how he stood up to Wright, grappled with Wright, worked to change the poison - and failing that, why he did not leave.  There are after all plenty of other choices.  <br><br>Perhaps I have this viewpoint because I have seen first hand the results of this poison.  When people are taught from early childhood that everything around them, that all they encounter, is part of a vicious plot to destroy them - no wonder it results in a complex of victim hood and grievance.  Obama had a wonderful opportunity Tuesday to take this head on.  But I guess he could not because the more he would have exposed Wright for all that he is, the more difficult the questions would have become about his sustained involvement.  I guess we'll never hear the full truth about the why.<br><br>As far as my marketing comment, I'm showing my disillusionment again.  The other thing I learned after voting for Obama was that his campaign is virtually a mirror image of what David Axelrod - whose consulting firm specializes in political advertising - put together for Deval Patrick's campaign in Massachusetts.  He's used these themes and messages in other campaigns as well.  The inspirational \"yes, we can\" and \"you are the change\" etc. was all pre-packaged.  I guess that doesn't mean Obama doesn't believe it all the same, but it was discouraging to learn that it wasn't original, wasn't really his.<br><br>Take care.  And thanks again for the dialog.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-20_15:17:56", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 3, "is_first_child": false, "email": "", "parent_post_id": 247376, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "246241": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"The Ashley segment at the end was shite. 'Human interest' pablum \"<br><br>The first response would be, what would you expect? for after all, this is a Dem speaking to Dems and likely Dem-voting leaners.<br><br>But what you can really say is that it's hardly imaginative -- it is aping Bush.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_22:16:06", "killed": false, "user_key": "DLS", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "244963": {"up_voted": false, "ip": "", "has_replies": true, "message": "Creole, your response addresses how he handled the \"Wright problem.\" It posits that he may have been evasive, may not have wanted to address it, also that he seeks to minimize it, give himself a pass, avoid \"the hard questions.\"  You also say that he provided an \"explanation\" that one can choose to buy into or not.  <br><br>All of that may be true.  These are all plausible conclusions (as are many others).  What I'm curious about--in all the hundreds of posts I've read on the speech in the last 24 hours, from both those with favorable and unfavorable reactions--is whether people think he was speaking sincerely, that is, whether he believes what he wrote and said in that speech.  (Incidently, I do not think that if the answer is yes for someone, then that person could not share your opinions nevertheless.)<br><br>You raise another point I'm curious about though--what is the \"hard question\" he hasn't answered (and what is the \"right\" answer)?<br><br>(Personally, I'm afraid I disagree with your earlier post as to what his central message was, at least in terms of (a), (b), (d), and (e) to some, or considerable, extent. And if you genuinely want to find out more about his relationship with his faith, you might try his memoirs.)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_14:39:10", "killed": false, "user_key": "aba23", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 11, "is_first_child": false, "email": "", "parent_post_id": 244764, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "251625": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hey,<br><br>My last reply as well.  But this info may be of interest, in answer to your questions.<br><br>(Btw re Myers, I just thought, given his background, that it was interesting.  Different.  Something  to think about.  That's all.)  <br><br>There are simple answers to your questions.  The clips are outtakes of entire sermons, and admittedly pieces that are most controversial, but do not distort the message.  The sermons have been avail from the TUCC bookstore.  Interestingly, there are only a limited number of sermons sold in this media, but these are among them.  Also prominently displayed in the book store, along with Obama's book, are books by Malcolm X, Farrakhan, and leaders of the former Black Panthers.  I don't know if Cone and Hopkins books are sold there - Cone is the father of BLT and Wright's mentor.  I've seen a TV clip where Wright essentially says that if you haven't read Cone or Hopkins you don't know Wright and the TUCC, and he's right.  The diff basis for my perspective vis-a-vis yourself and most others, is my familiarity with Cone.  I was there when this was born.  At that time I was very active politically in Berkeley and also taking Comparative Theology at college.  Most activists were not surprised by BLT's political bent, as it was derived from the Marxist Liberation Theology developed by radical Catholic priests in S. America (judged heretical by the Vatican), which we were very familiar with.  But with BLT, God, Jesus, all Christian theology was placed in an exclusive black framework; the New Testament is a large black allegory thru which to inform the entire American experience.  What was shocking was how, like its cousin the Panthers, it was so vehemently and uncompromisingly anti-white and anti-American.  It isn't black supremacist per se, but that is implied, because whites are characterized as so hopelessly racist that they cannot be changed.  (A reprint of a Wright sermon in 2006 in TUCC's Trumpet makes this case.)  I sat in a pew one day with other activists that had supported the black cause since MLK, listening to epithets hurled at us and being blamed along with all of white America for everything wrong.  It was the antithesis of MLK; it was a religious version of Malcolm X.  It was a lighter version of Farrakhan, but  \"Christian\".<br><br>Obama knows all of this well.  He talks about it in Dreams of My Father.  His under-grad associations were primarily black activists, Marxist profs, Farrakhan followers (with whom he writes that he shared their sentiments, but not their methods).  Of course Obama has had to deny not hearing the incendiary rhetoric in those specific sermons, but anyone who knows BLT and Wright knows you can't be a close associate (esp for 20 yrs) and not know this stuff.  This is what defines who Wright is.<br><br>Why isn't more known about BLT?  Because it was legitimized by Liberal theological academia in the 70's.   A lot of theological studies have been radicalized for a long time.  You may have read how Wright is a prominent theologian, widely respected.  And he is.  And among black churches, a non-trivial number (albeit certainly a minority) subscribe to BLT.  There are many churches like the TUCC.  You may find them in the United Church of Christ, like TUCC, because the UCC is the most Liberal major denomination.  But many are non-denominational.  Whites simply don't know this (or more to the point, don't care).  Secular media certainly is ignorant about it.  It's important to note, too - you'll hear this repeatedly in defenses of TUCC - that through the Liberal perspective, it is the good social works that are what's important.  The longer-term effects of political grievance and anti-white separatism are downplayed.  For that matter, many higher-educated Liberals essentially agree with BLT's anti-American views; you hear this often as well in TUCC's defense.  While most black churches disagree with BLT, teaching the traditional color-blind theology, the good works that TUCC does plus black solidarity keeps many mum.  But again, no one is paying attention; there are also plenty of black pastors (esp in the South) to preach intensely against Wright and BLT.<br><br>As a final note:  Do I think that Obama shares Wright's extreme views?  No, I don't.  In a way, that only adds to the question of why he did not speak out while he was there.  Obama needs to be candid with the voters about this major part of his past and be clear about what about it he considered sufficiently unobjectionable that it justified his continued participation.  I saw a piece in the L.A. Times by an activist young woman who knows him from the TUCC, and she was frustrated that he has not been more candid with the \"progressive\" views he espoused there - policies which are distinctly aligned to the socialist dimension of BLT.  This may be what kept Obama in the TUCC, i.e., it's ideological bent.  We need to know.<br><br>Thanks again for all of your time and thoughts.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-21_10:59:23", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 250151, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "244078": {"up_voted": false, "ip": "", "has_replies": false, "message": "aba23 said:  \"...but I am curious whether people perceive it to be insincere. (Clearly Marlowecan would fall in this camp....\"<br><br>I suppose I see politics as a craft.  Domajot is an idealist, and I respect that view and even wish I could feel like that sometimes.  <br><br>Obama's speech was overtly political, for the obvious reasons I noted above.  This is not necessarily a bad thing.  <br><br>If you know your Shakespeare:  contrast the Henry IV & V plays - focusing on the brilliant  Machiavellian Prince Hall - with the Henry VI plays, focusing on the saintly failure of Henry VI.  Shakespeare knew this lesson well.<br><br>It was not worthy of Lincoln...who drafted his \"First Inaugural\" (\"the better angels of our natures\") for a political purpose, yet somehow rose above it in an broad and very sincere appeal to preserve the republic.  I cite as one example: Senator Obama's swipe at Ferraro (Lincoln notably did not lash out at any particular secessionist). <br><br>But Senator Obama's speech was undeniably successful.   Better than anything Bill Clinton delivered, I would argue.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_10:34:29", "killed": false, "user_key": "Marlowecan", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "245623": {"up_voted": false, "ip": "", "has_replies": true, "message": "\"Obviously, he saw that he couldn't any longer dismiss Wright, he had to do something.\"<br><br>Exactly, he had to do something.  But unlike every other candidate telling me how much different things are going to be, he did something different.   Instead of throwing him under a bus and spouting talking points we've heard a million times before he stuck up for both his and his pastor's points of view, made me think about where they come from and also reminded us that we all have folks in our lives we may not agree with.    Many of them a lot closer to us than our spiritual advisors.  <br><br>Someone else was commenting here saying they were sick of candidates apologizing for what other people say.    I think we all are, and I am also sick of them doing it with canned phrases and platitudes.    The man just gets it.    He's got brains, balls, and a spine connecting them which is way more than I can say for pretty much any other politician.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_17:56:36", "killed": false, "user_key": "Slamfu", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year 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}, "245753": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"an age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor\"<br><br>You know, I've disputed Superdestroyer's contention that the USA will become a one-party Democratic nation someday but the facts you list above are fuel for his contention.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_18:52:26", "killed": false, "user_key": "DLS", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "243578": {"up_voted": false, "ip": "", "has_replies": false, "message": "The reaction is truly depresing, though inevitable..   Everyyone is parsing it in purely political terms and running to the polls to gauge the impact.<br><br>The  true value  of the speech can only be assessed  if you can imagive it being delivered away from a political podium.  It's a courageously honest  and  realistic assessnebt of where we are on the race relations curve  and a hopeful statement about the direction in which we should go.<br><br>The speech is a gem that may not be truly  valued until long after its political context has been forgotten.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-19_05:25:38", "killed": false, "user_key": "domajot", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 1, "author_is_creator": false, "is_realtime": false}, "249341": {"up_voted": false, "ip": "", "has_replies": false, "message": "?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-20_17:07:02", "killed": false, "user_key": "Creole", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": 247376, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": "http://themoderatevoice.com/disqus-blank.html", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "309668", "user_id": "anonymous", "forum_id": "2724", "hash": 6982006631842443670}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "the_obama_racial_division_speech_success_or_failure_with_reaction_roundup", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 309668, "num_posts": 35, "closed": true, "queued": false, "killed": false}, "reactions_limit": 10, "context": {"show_reply": false, "use_fb_connect": true, "forum_facebook_key": "8e626a1cbe92745e5f4435bb28791555", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

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



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

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

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

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

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

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

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

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

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





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



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

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

	this._lastHash = null;

	this._accumMsg = '';

	this._lastSeqno = 0;

	this.MAX_DATA_LEN	= 1024;

	this.WAIT_TIME		= 10;

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

};

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

FragmentPacket.prototype.log = function(msg) {



};

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

		hash = this.reader.name;
	} else {

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

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

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

		this._lastSeqno = seqno;

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

				this._accumMsg = '';

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

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

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

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

};

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

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

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

	if (packetNum === 0) {

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

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

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

	if (num_packets === packetNum) {

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

	this._lastSeqno++;

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

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

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

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

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

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


	this.receiverId = receiverId;
};

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

	var listener = function(e) {

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


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

		that.receiveCallback(data);
	};

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

PostMessagePacket.prototype.send = function(msg) {



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


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

	var packet;
	if (!msg) {

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

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

var JsonRpc = function() {

	this.ids = {};

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

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

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

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

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

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

				json = 'null';
				break;
		}

		return json;
	};

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

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

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

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

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

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

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

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

		send_func(this.objectToJSON(request));

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

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


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



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


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


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

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

	this.packetHandler = null;


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


	var _createReceiverForFragmentPacket = function() {

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

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

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

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

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

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

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

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

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

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

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

			that._ready = true;
		};

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

		that.receiver.onload = receiver_onload;







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

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

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

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


	var _createReceiverForPostMessage = function() {

		var receiver_onload = function() {

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

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


		ParentMessenger['_receiver_onload_' + receiverId] = receiver_onload;

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

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

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

};

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

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

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

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

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

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

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

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

	var sendFunc = function(msg) {

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


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


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

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

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

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

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

		if (msg.username) {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	var handleSessionData = function(session) {

		var forum_url = Dsq.jsonData.forum.url;




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

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

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


	






Dsq.Themes = {};

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



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

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

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

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

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

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

		
		

		return html;

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

		html += Dsq.Templates.pagination();

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

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		


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

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

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

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

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

		return html;
	};

	this.postBox = function(post_id, use_fallback_iframe) {


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

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


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

		var _requestUserInfo = function() {
			var html;



			var user_has_email = false;

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

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

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


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



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

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




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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



	
	this.chooseSubscribe = function(post_id) {

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

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

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

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

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

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

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

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

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

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

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

		d = auth_data;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

				body.appendChild(edit_area);

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

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

		Dsq.Templates.toggleEdit(post_id);
	};

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

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

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

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

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

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

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

		}

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

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

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

		var extra_params = '';

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

		Dsq.$('dsq-pagination').innerHTML += '<img src="http://media.disqus.com/images/loading-small.gif">';
		
		if(el_clicked) {
			Dsq.Templates.setLoadingButton(el_clicked);
		}
		
		Dsq.Utils.execScript('http://disqus.com/forums/themoderatevoice/thread.js'
			+ '?slug='	+ 'the_obama_racial_division_speech_success_or_failure_with_reaction_roundup'
			+ '&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/themoderatevoice/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://themoderatevoice.disqus.com/the_obama_racial_division_speech_success_or_failure_with_reaction_roundup/reply.html';
	this.REQUEST_USER_PROFILE = '/AnonymousUser/';
	this.REQUEST_USER_AVATAR = 'http://media.disqus.com/uploads/forums/2724//avatar92.jpg';
};
// Dsq.Urls

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

		return [windowWidth, windowHeight];
	}

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

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

		return [scrollWidth, scrollTop];
	}

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

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

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

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

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

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

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

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

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

				form.appendChild(input);
			}
		}

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

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

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

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

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

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

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

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

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

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

		return params;
	};

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

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

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

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

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

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

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

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

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

	};

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

};
// Dsq.Utils

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Dsq.Popup._closePopup(null, true);

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

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

		header = title;
		body = message;

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

	this.popAlert = this.popModal;

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

		popup.style.display = 'block';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			return ret;
		};
	};

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

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

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

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


			//

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

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

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

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

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

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

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

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


	this.header = function() {

		var html = '\<h3 id="dsq-comments-count" class="dsq-h3-commentcount">\
	 <span id="dsq-num-posts">35</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://themoderatevoice.disqus.com/the_obama_racial_division_speech_success_or_failure_with_reaction_roundup/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://themoderatevoice.disqus.com/the_obama_racial_division_speech_success_or_failure_with_reaction_roundup/">Community Page</a>&nbsp;&nbsp;&nbsp;</span>\
	 <span class="dsq-item-subscribe">\
	 <img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle">\
	 <span id="dsq-subscribe">\
	 <a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a>\
	 </span>\
	 </span>\
	 </div>\
	 <div id="dsq-alerts">\
	 <p>Comments for this page are closed.</p>\
	 </div>\
		';

		

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

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

		
			html += Dsq.Templates.authPost();
		

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		

		return html;
	};

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

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

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

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

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

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

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

		return html;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Post
	//

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Iframes
	//

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

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

		var default_params = {
			// TODO: These should be moved to Dsq.jsonData.
			'f'				: 'themoderatevoice',
			't'				: 'the_obama_racial_division_speech_success_or_failure_with_reaction_roundup',
			// 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/themoderatevoice/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/themoderatevoice/the_obama_racial_division_speech_success_or_failure_with_reaction_roundup/post_report/', {'post_id': id});
			Dsq.Popup.popModal('Thank you. This comment has been flagged for moderator attention.', 'Successfully flagged');
			Dsq.Utils.deleteNode(Dsq.$('dsq-post-report-' + id));
		} else {
			var title = Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT;
			var message = Dsq.Strings.ARE_YOU_SURE_YOU_WOULD_LIKE_TO_REPORT_THIS_COMMENT_TO_A_MODERATOR + '? \
			<br /><br /> \
			<button type="button" onclick="Dsq.Popup._closePopup(null, true)"><strong>' + Dsq.Strings.NO + '</strong>, ' + Dsq.Strings.NEVER_MIND + '</button>&nbsp;&nbsp;&nbsp;<button type="button" onclick="Dsq.Post.report(' + id + ', true);"><strong>' + Dsq.Strings.YES + '</strong>, ' + Dsq.Strings.FLAG_INAPPROPRIATE_COMMENT + '</button><br /><br />'
			+ Dsq.Strings.THIS_WILL_FLAG_COMMENTS_FOR_MODERATORS_TO_TAKE_ACTION + '. \
			';

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



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

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

};
// Dsq.Post


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

	
	this.adminIsOn = false;

	
	
	

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

	this.check = function() {
		if (!ongoing_request && Dsq.jsonData.realtime_enabled) {
			if (prev_script) {
				prev_script.parentNode.removeChild(prev_script);
			}
			ongoing_request = true;
			prev_script = Dsq.Utils.execScript('http://disqus.com/forums/309668/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/themoderatevoice/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/themoderatevoice/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-243578">\
	 <div id="dsq-comment-header-243578" class="dsq-comment-header">\
	 <cite id="dsq-cite-243578" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243578">domajot</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243578" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243578" class="dsq-comment-message">The reaction is truly depresing, though inevitable..   Everyyone is parsing it in purely political terms and running to the polls to gauge the impact.<br><br>The  true value  of the speech can only be assessed  if you can imagive it being delivered away from a political podium.  It\'s a courageously honest  and  realistic assessnebt of where we are on the race relations curve  and a hopeful statement about the direction in which we should go.<br><br>The speech is a gem that may not be truly  valued until long after its political context has been forgotten.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243545">\
	 <div id="dsq-comment-header-243545" class="dsq-comment-header">\
	 <cite id="dsq-cite-243545" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243545">superdestroyer</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243545" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243545" class="dsq-comment-message">I keep wondering what would/will happen if someone finds a video clip of Rev. Wright ranting against homosexuals or feminist.  I doubt that the verbal gymnastics that virtually all of the left is willing to accept in excusing the racism of Rev. Wright will have the same effect. <br><br>Either Senator Obama is certain that it does not exist or he is just hoping that the media will move on and stop going over what is on all of the videos of Rev. Wright.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243673">\
	 <div id="dsq-comment-header-243673" class="dsq-comment-header">\
	 <cite id="dsq-cite-243673" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243673">shaun</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243673" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243673" class="dsq-comment-message">Domajot makes a huge point.  It is one that superdestroyer and other right-wing sycophants cannot wish away even given their understanding-free inability to walk in others\' shoes.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243757">\
	 <div id="dsq-comment-header-243757" class="dsq-comment-header">\
	 <cite id="dsq-cite-243757" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243757">Marlowecan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243757" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243757" class="dsq-comment-message">It was a brilliant political speech, as Sen. Obama managed to contradict (cough...revise) his previous admission on Wright with no one noticing:<br><br>Friday: "None of these statements were ones that I had heard myself personally in the pews."<br><br>Yesterday: "Did I ever hear him make remarks that could be considered controversial while I sat in church? Yes"<br><br>The other day Obama\'s defenders here at TMV were crowing at Kristol, and saying you can\'t prove nothing.  He was never there when Wright was ranting.  Seems Obama was wiser...and knew (unlike his defenders) that he was there, and video would probably turn up.<br><br>Superdestroyer is right.  Logic would suggest that, in 20 years, there must be video putting Obama in the pews while Wright was ranting against whites or Jews or someone.<br><br>Why else would Obama change his story?<br><br>Clearly, a brilliant political speech.  It succeeded in allowing Shaun and other Obama defenders -- who were damning McCain to hell for the Hagee connection just a few days ago -- to happily give Obama a pass for 20 years of close association with Wright.   <br><br>Had the parties been reversed, and McCain embraced the legacy of a wacko right-wing evangelical while distancing himself from his words, I rather doubt Shaun would be so forgiving.<br><br>Also note that the speech implicitly equated Ferraro with Wright.  That was nasty and very political.  Brilliant slam at HRC.<br><br>Note the reference to white as well as black grievance (in reference to Affirmative Action in university placings, no less).  And the reference to class.  Brilliant. <br><br>The Ashley segment at the end was shite.  "Human interest" pablum - end on a human story folks can relate to - straight from Communications 101.  Not on a level with the political brilliance of the rest of the speech. <br><br>On the whole, I thought this a brilliant - even Machiavellian - political speech. <br><br>I had not considered Sen Obama ruthless enough...or politically devious enough...to be presidential material.  This speech has forced me to revise that view. <br><br>Wright will still come back to haunt him.  But he was was brilliant, without doubt.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243795">\
	 <div id="dsq-comment-header-243795" class="dsq-comment-header">\
	 <cite id="dsq-cite-243795" class="dsq-comment-cite">\
	 <a id="dsq-author-user-243795" href="http://bobaggins.wordpress.com/" target="_blank" rel="nofollow">Whocares</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243795" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243795" class="dsq-comment-message">We know that Barak Obama comes from the far left.  His vote tells us so.  We know that Barak Obama hangs with far left as his friends tell us so.  We know that the far left has endorsed his candidacy as <a href="http://Moveon.org" rel="nofollow">Moveon.org</a> has announced it so.<br><br>Now Barak Obama is simply having to defend his friends, his family and his associates.  We as Americans demand nothing less.  He has chosen his friends, church, associates.  We did not choose them for him.  He voted the way he did.  We did not hold a gun to his head and make him do it.<br><br>Now America is simply asking for answers from the man.  Its politics.  Its reality.  When my daughters went on a date we got the information we needed.  Who, what, where, when and why.   Thats all this nation is asking.  <br><br>How he responds will define him in a crisis.  So far from what I see he will put George W. Bush to shame when it comes to personal loyalty.   Yet I understand his loyalty because as a nightly commenter on Cable said last night "The Democrats are stuck with this guy aren\'t they."  Barak Obama has won the nomination.  He is speaking as someone who is the partys next nomination.  He is speaking with the voice of you will hear when he is in the White House.<br><br><br>Now we have some insight into the man.  The speech is inconsequential.  His actions are what speak louder then words.  His actions are what have been missing from his resume.  Now we have some actions in which to base an opinion and what many of us are seeing is not a pretty sight.<br><br>This more then anything is what the Rev. Wright episode represents.  Hillary has endured these for 20 years.  McCain has endured them.  Barak Obama has not.  Now its his turn.  I believe we must be prepared for a barrage of these coming at Barak Obama.  He is after all a Politician.  Not a saint.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243917">\
	 <div id="dsq-comment-header-243917" class="dsq-comment-header">\
	 <cite id="dsq-cite-243917" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243917">domajot</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243917" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243917" class="dsq-comment-message">Marlowecan-<br><br>Yes, Obama is a politician,. not a divine prophet.  He is a flawed human being like the rest of us.  So was Lincoln.  So was Jefferson.  Yet, their words  live on. to  inspire generation after generation.<br><br>In  the rush to pick over the man and  rifle through the speech for something that can be used like a political club, you are trampling the flowers and saplings while you search for weeds.<br><br>Kristol was criticized, so in good old political fashion, Obama deserves a revenge criticism?     Or is it poker:  I\'l  see your Hagee and raise you a Wright?  <br><br>The beauty of the speech was that it  transcended the laying of blame stage in racial and political relations and in peron-to-person relationships.  It stressed the need to understand where we are , with all the complex emotional baggage we allcarry, so that we can shake free of the mess and  aim to do better.<br><br>The author of the speech and his political future   matter infiniely less than the message of the speech.  It truly breaks my heart to see Americans are so hell bent on destroying each other that they can\'t pause from today\'s battles long enough to safeguard their future.<br><br>This truly breaks my heart.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243974">\
	 <div id="dsq-comment-header-243974" class="dsq-comment-header">\
	 <cite id="dsq-cite-243974" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243974">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243974" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243974" class="dsq-comment-message">It is obvious that one can draw a host of widely varying conclusions from the speech, but I am curious whether people perceive it to be insincere. (Clearly Marlowecan would fall in this camp; presumably not Whocares.)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244010">\
	 <div id="dsq-comment-header-244010" class="dsq-comment-header">\
	 <cite id="dsq-cite-244010" class="dsq-comment-cite">\
	 <a id="dsq-author-user-244010" href="http://bobaggins.wordpress.com/" target="_blank" rel="nofollow">Whocares</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244010" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244010" class="dsq-comment-message">Speechs do not set us free Domajot.  Even though this is the message that Barak Obama has been trying to instill. He is trying to emulate the late great dr. Martin Luther King but when all is said and done Barak Obama is missing one very serious ingredient to greatness.  <br><br>Action.  Deeds.  <br><br>Nothing changed.  You do not change mans hearts with flowery speechs but with deeds that back up words.  <br><br>IF as you claim that the words are transcendent then it is the words that are spoken that have intrinsic value and as such we must pay even MORE attention to the Rev. Wrights sermon because it is his words that you choose to pay more homage to then his deeds.<br><br>For I find in his actions nothing that leaped from the pages of his sermons.  I find no marches of "Hate America".  Yet Domajot in your haste to defend Obama and his Reverend you and so many others are failing to grasp the difference between words and deeds.<br><br>Pretty speeches do not change America.  John Kennedy said lets go to the moon and the world looked at him like he was nuts.  Then he was shot.  It was the action that brought about the results of the flowery speech.  Had this action not occurred then perhaps we would be talking about the Russians being the first to land on the moon.<br><br>Speechs yes.  But as the bible preaches to us.  Words without deeds are dead.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244078">\
	 <div id="dsq-comment-header-244078" class="dsq-comment-header">\
	 <cite id="dsq-cite-244078" class="dsq-comment-cite">\
	 <span id="dsq-author-user-244078">Marlowecan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244078" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244078" class="dsq-comment-message">aba23 said:  "...but I am curious whether people perceive it to be insincere. (Clearly Marlowecan would fall in this camp...."<br><br>I suppose I see politics as a craft.  Domajot is an idealist, and I respect that view and even wish I could feel like that sometimes.  <br><br>Obama\'s speech was overtly political, for the obvious reasons I noted above.  This is not necessarily a bad thing.  <br><br>If you know your Shakespeare:  contrast the Henry IV & V plays - focusing on the brilliant  Machiavellian Prince Hall - with the Henry VI plays, focusing on the saintly failure of Henry VI.  Shakespeare knew this lesson well.<br><br>It was not worthy of Lincoln...who drafted his "First Inaugural" ("the better angels of our natures") for a political purpose, yet somehow rose above it in an broad and very sincere appeal to preserve the republic.  I cite as one example: Senator Obama\'s swipe at Ferraro (Lincoln notably did not lash out at any particular secessionist). <br><br>But Senator Obama\'s speech was undeniably successful.   Better than anything Bill Clinton delivered, I would argue.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244566">\
	 <div id="dsq-comment-header-244566" class="dsq-comment-header">\
	 <cite id="dsq-cite-244566" class="dsq-comment-cite">\
	 <span id="dsq-author-user-244566">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244566" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244566" class="dsq-comment-message">Without doubt, the speech was political; I wouldn\'t claim any action taken by a candidate for the presidency was not done without consideration of the political ramifications. <br><br>But what I\'m curious about is how many people consider what he said to be an insincere reflection of what the man believes. Marlowecan said that Obama "changed his story" about what he heard in church (I don\'t happen to find a contradiction in the two comments offered, but I understand the inference). Based on that, I assume that Marlowecan finds at least some of the speech to be insincere--that is, again, saying something that he doesn\'t actually believe.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244697">\
	 <div id="dsq-comment-header-244697" class="dsq-comment-header">\
	 <cite id="dsq-cite-244697" class="dsq-comment-cite">\
	 <span id="dsq-author-user-244697">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244697" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244697" class="dsq-comment-message">Of course it was calculatingly political.  He had boxed himself in, through a succession of denying or lawyerly dodging.  But Wright\'s words were simply too egregious to ignore.  This wasn\'t a speech given because he wanted to - he had to do it to stop the Wright hemorrhaging.  He would much rather it all had just gone away.<br><br>So his central message essentially was (a) it\'s your fault that we are here and (b) Wright\'s errors are being unfairly overstated and besides he\'s done many good works, so (c) while I strongly disagree with Wright, still he\'s not bad enough to break away from, (d) the real problem here is the underlying injustices of the past and the present, which (e) I am the one who can bring us together to fix.<br><br>The majority of people always believe what they want to believe.  All the more so in an age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor.  So when the world has grown so complex that we more than ever need to see leadership that can prove its mettle, can survive a cauldron on the order of a Firing Line debate, we instead get . . . fantastic marketing.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244764">\
	 <div id="dsq-comment-header-244764" class="dsq-comment-header">\
	 <cite id="dsq-cite-244764" class="dsq-comment-cite">\
	 <span id="dsq-author-user-244764">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244764" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244764" class="dsq-comment-message">Where the possible insincerity comes in is the disingenuous handling of his Wright problem.  He had already tried various not-forthright, not-candid, manipulative ways around it.  Back against the wall, he deftly minimizes Wright and consequently gives himself a pass, allowing him to avoid addressing the hard questions but instead to change the focus.  He could have educated us on his 20-year transformation, providing a roadmap of turning away from the politics of hate to the politics of inclusive change.  Instead he essentially said, "The guy isn\'t that bad, I\'ve told you enough, trust me, move on."  The audience was given what it wanted to hear.  If one buys into his Wright explanation,  with no problem with how he makes that argument (the "no more than I could disown the black community or my own grandmother"), then it is judged a sincere effort to rise above and move the dialog forward.  If one does not, then it is judged a calculated diversion with the questions left unanswered and enhanced suspicions over why he took this approach.<br><br>EDIT:  No sooner had I posted the above, than I spotted this, which goes straight to where the division in response to the speech comes from:<br><br><a href="http://www.boston.com/bostonglobe/editorial_opinion/oped/articles/2008/03/19/its_still_a_question_of_wright_and_wrong/" rel="nofollow">http://www.boston.com/bostonglobe/editorial_opi...</a><br><br>and this:<br><br><a href="http://www.realclearpolitics.com/articles/2008/03/new_wright.html" rel="nofollow">http://www.realclearpolitics.com/articles/2008/...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-244963">\
	 <div id="dsq-comment-header-244963" class="dsq-comment-header">\
	 <cite id="dsq-cite-244963" class="dsq-comment-cite">\
	 <span id="dsq-author-user-244963">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-244963" class="dsq-comment-body">\
	 <div id="dsq-comment-message-244963" class="dsq-comment-message">Creole, your response addresses how he handled the "Wright problem." It posits that he may have been evasive, may not have wanted to address it, also that he seeks to minimize it, give himself a pass, avoid "the hard questions."  You also say that he provided an "explanation" that one can choose to buy into or not.  <br><br>All of that may be true.  These are all plausible conclusions (as are many others).  What I\'m curious about--in all the hundreds of posts I\'ve read on the speech in the last 24 hours, from both those with favorable and unfavorable reactions--is whether people think he was speaking sincerely, that is, whether he believes what he wrote and said in that speech.  (Incidently, I do not think that if the answer is yes for someone, then that person could not share your opinions nevertheless.)<br><br>You raise another point I\'m curious about though--what is the "hard question" he hasn\'t answered (and what is the "right" answer)?<br><br>(Personally, I\'m afraid I disagree with your earlier post as to what his central message was, at least in terms of (a), (b), (d), and (e) to some, or considerable, extent. And if you genuinely want to find out more about his relationship with his faith, you might try his memoirs.)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245424">\
	 <div id="dsq-comment-header-245424" class="dsq-comment-header">\
	 <cite id="dsq-cite-245424" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245424">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245424" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245424" class="dsq-comment-message">?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245455">\
	 <div id="dsq-comment-header-245455" class="dsq-comment-header">\
	 <cite id="dsq-cite-245455" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245455">Slamfu</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245455" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245455" class="dsq-comment-message">"The problem is the contradiction between the fundamental message of the Obama campaign about bringing America together and Wright’s hate-filled, divisive message."<br><br>Way to miss the entire point which is that as a leader of millions you have to bring everyone together even while they disagree.   Its not about sorting out the people you agree with from the ones you don\'t.   I\'m off to bang my head against a brick wall.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245550">\
	 <div id="dsq-comment-header-245550" class="dsq-comment-header">\
	 <cite id="dsq-cite-245550" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245550">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245550" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245550" class="dsq-comment-message">aba23,<br><br>Re "speaking sincerely, whether he believes . . . "  Not an easy question.  I don\'t think there is one answer to that.  One has to look at phrasing and context throughout.  I think there have been a number of balanced pieces that have done that, e.g., Joan Walsh in Salon.<br><br>There are clearly observations that are true, in terms of the racist behaviors both white and black.  I think he is sincere in recognizing some of the illegitimate, and legitimate, reasons for grievance.  And his appeal to us to have an open national discussion, I would think to be sincere; that it helps his campaign, doesn\'t make it less so.<br><br>On the other hand, some of how he describes the plight of the black community, I hope that this is not what he sincerely believes, because it relies too heavily on the cause being external, the broader American society.  That\'s a watered down version of Wright, and  doesn\'t place sufficient responsibility on the collapse of responsibility, accountability, culture, and family in that community.  I would have like to hear him talk like Cosby about this.  But in fairness, one has to consider his primary audience - which were Democrats yet to vote in the primary, and the superdelegates, and he has to consider his core constituency.<br><br>Some was clearly calculated to deal with his Wright problem (this is the area of the hard questions I was referring to).  He did this by minimizing Wright through comparisons to his grandmother and Ferraro, pointing out his military service and good social works.  I don\'t think he sincerely believes that this explains his association; he is simply trapped in that and no amount of changing the conversation changes that fact.  I think there is an explanation, but it would not be politically acceptable.  So he has to put the best face on it he can, and shift the conversation. <br><br>He also diverted into the anti-trade and anti-corporate populism he and HRC have used in Ohio and now Pennsylvania.  As we saw in the Nafta flap in Ohio, he says one thing but believes another.  That was for his core audience.<br><br>So, it\'s a mix of sincerity, exhortation, campaign, and disingenuous damage control.<br><br>The catalyst for this speech was the Wright problem.  It\'s nice that he turned this into an inspirational call to come together, but very disturbing that he not only didn\'t address the issue completely, but how he tried to work around it.  It leaves us wondering what and how he really thinks, because for sure 20 yrs ago he embraced Wright\'s views and now he rejects at least some of the most egregious.  But there is no way that he doesn\'t carry some of that forward; why else would he continue to work with Wright as he has until now?  Something is missing from this picture.<br><br>On my a-e:  I\'ll give you (a); I worded that poorly and what I had in mind doesn\'t matter enough.  (b) is I think supported by Obama\'s choice of words, comparisons, and implications.  (d) I\'m surprised you would disagree with; this was a major thrust of his speech, his problem definition, the reason we need to do something.  (e) that\'s implicit, why else would he be speaking if its not about demonstrating his leadership towards addressing the race issues he framed?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245588">\
	 <div id="dsq-comment-header-245588" class="dsq-comment-header">\
	 <cite id="dsq-cite-245588" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245588">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245588" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245588" class="dsq-comment-message">Slamfu,<br><br>Great name!  Is that Joe Bob language?<br><br>Anyway . . . you make a fair point, but so is the other one.  A whole lot of people have observed this.  Let\'s keep in mind that this speech was not in the game plan until the Wright flap.  Obviously, he saw that he couldn\'t any longer dismiss Wright, he had to do something.  This was not like an inaugural speech laying out a vision, this was a defensive move he had to make.  And remember that he started his campaign with an inclusive message that transcends race; when radical racism gets associated with him over a long duration, it\'s not unreasonable that people ask for that to be reconciled.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245623">\
	 <div id="dsq-comment-header-245623" class="dsq-comment-header">\
	 <cite id="dsq-cite-245623" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245623">Slamfu</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245623" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245623" class="dsq-comment-message">"Obviously, he saw that he couldn\'t any longer dismiss Wright, he had to do something."<br><br>Exactly, he had to do something.  But unlike every other candidate telling me how much different things are going to be, he did something different.   Instead of throwing him under a bus and spouting talking points we\'ve heard a million times before he stuck up for both his and his pastor\'s points of view, made me think about where they come from and also reminded us that we all have folks in our lives we may not agree with.    Many of them a lot closer to us than our spiritual advisors.  <br><br>Someone else was commenting here saying they were sick of candidates apologizing for what other people say.    I think we all are, and I am also sick of them doing it with canned phrases and platitudes.    The man just gets it.    He\'s got brains, balls, and a spine connecting them which is way more than I can say for pretty much any other politician.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245753">\
	 <div id="dsq-comment-header-245753" class="dsq-comment-header">\
	 <cite id="dsq-cite-245753" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245753">DLS</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245753" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245753" class="dsq-comment-message">"an age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor"<br><br>You know, I\'ve disputed Superdestroyer\'s contention that the USA will become a one-party Democratic nation someday but the facts you list above are fuel for his contention.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-245940">\
	 <div id="dsq-comment-header-245940" class="dsq-comment-header">\
	 <cite id="dsq-cite-245940" class="dsq-comment-cite">\
	 <span id="dsq-author-user-245940">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-245940" class="dsq-comment-body">\
	 <div id="dsq-comment-message-245940" class="dsq-comment-message">Thanks for the thoughtful reply. It goes some way to providing your perspective on the question I wondered about. <br><br>To clean up on the message points: to me, (b) rankled because I don\'t think Obama would consider the reaction to Wright\'s extreme comments as being "unfairly overstated"--quite the contrary, he condemned these statements as "unacceptable," which is a pretty high level for a speech act, if you think about it. (d) I will give you only if it\'s placed in context, and even then not wholly. First, by placing in context I mean the context of a discussion of the race issue. I think that misrepresents his viewpoint because it emphasizes race as the focal point, and that\'s how his brand of political action differs, it appears, from Wrights--Obama\'s focus, as stated in the speech (and as demonstrated in his career), is on ensuring that ALL Americans have ample opportunity to succeed. Further, in this speech (and repeatedly on the campaign trail), he DID point to both legacy and irresponsibility, as you also suggest, as contributing to problems in the black community.<br><br>Finally, and perhaps most importantly, as to (e), he never claimed that HE will be able to bring us all together to fix whatever. His constant message is that this is his approach, but it is not top-down; it is not something he can do for us. Rather, it is up to us to do for us.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-246171">\
	 <div id="dsq-comment-header-246171" class="dsq-comment-header">\
	 <cite id="dsq-cite-246171" class="dsq-comment-cite">\
	 <span id="dsq-author-user-246171">DLS</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-246171" class="dsq-comment-body">\
	 <div id="dsq-comment-message-246171" class="dsq-comment-message">Lib-Dems (the party\'s left wing) prefer Obama.<br><br><a href="http://www.usnews.com/articles/news/campaign-2008/2008/03/19/liberal-democrats-overwhelmingly-choose-obama-over-clinton-in-straw-poll.html" rel="nofollow">http://www.usnews.com/articles/news/campaign-20...</a><br><br><a href="http://www.politico.com/news/stories/0308/9125.html" rel="nofollow">http://www.politico.com/news/stories/0308/9125....</a><br><br><a href="http://thecaucus.blogs.nytimes.com/2008/03/19/liberals-aim-to-win/" rel="nofollow">http://thecaucus.blogs.nytimes.com/2008/03/19/l...</a><br><br><a href="http://www.ourfuture.org/" rel="nofollow">http://www.ourfuture.org/</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-246241">\
	 <div id="dsq-comment-header-246241" class="dsq-comment-header">\
	 <cite id="dsq-cite-246241" class="dsq-comment-cite">\
	 <span id="dsq-author-user-246241">DLS</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-246241" class="dsq-comment-body">\
	 <div id="dsq-comment-message-246241" class="dsq-comment-message">"The Ashley segment at the end was shite. \'Human interest\' pablum "<br><br>The first response would be, what would you expect? for after all, this is a Dem speaking to Dems and likely Dem-voting leaners.<br><br>But what you can really say is that it\'s hardly imaginative -- it is aping Bush.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-246353">\
	 <div id="dsq-comment-header-246353" class="dsq-comment-header">\
	 <cite id="dsq-cite-246353" class="dsq-comment-cite">\
	 <span id="dsq-author-user-246353">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-246353" class="dsq-comment-body">\
	 <div id="dsq-comment-message-246353" class="dsq-comment-message">"he stuck up for both his and his pastor\'s points of view"  But that is the crux of the problem, isn\'t it?  <br><br>Unless I misread you, seems you take the same \'not that big a deal\' approach.  "Made me think about where they come from and also reminded us that we all have folks in our lives we may not agree with."  Meaning exactly what?  They had tough breaks, a really tough time?  Made some mistakes in judgment?  Had some indiscretions?  We\'re all imperfect?<br><br>Let me share something.  I was an anti-war activist in SF/Oakland in \'69.  I saw Black Power born,  along with  - in Cone\'s words, it\'s "theological arm" - Black Liberation Theology, the "basis" for Wright\'s teachings and the TUCC.  I\'ve sat in the pews.  I\'ve not only heard the message, but seen its effects first hand.  This cannot be scaled down to the "we\'re all imperfect, we all make mistakes level."  Contrary to Obama\'s statement that these clips were "cherry-picked" snippets not representative of Wright, and the insinuation that we are not properly factoring in his yrs of good works, etc. - these are snapshots of a continuum of hate that has continued for 40 yrs right up to the present. <br><br>Consider that children in that congregation have been taught from early age to view everything about America - in Wright\'s words, its "entire reality" - through the prism of a conspiracy of white supremacy.  Accusations of America that put it on a par with the Nazis.  Does this church teach pride of self and one\'s heritage?  Yes.  Do good social works?  Yes.  Exhort personal responsibility?  Yes.  Promote devotion to family?  Yes.  But is it also a virulent form of anti-Americanism, does it promote separatism, is it anti-Semitic, does it judge whites as hopelessly unable to see their pervasive racism, does it drive a divisive wedge between its member and their neighbors?  Yes to all.<br><br>If this isn\'t enough to unequivocally condemn and disassociate from, then what is?   Is this what we really want to hear Obama "stick up for"?<br><br>And if another candidate had spent the past 20 years in close association with such a church, consulting with someone like Wright before making any "bold political moves", bringing an individual like Wright into his campaign, what would Obama say?   We know the answer to that.  There would be no excuses allowed.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-246440">\
	 <div id="dsq-comment-header-246440" class="dsq-comment-header">\
	 <cite id="dsq-cite-246440" class="dsq-comment-cite">\
	 <span id="dsq-author-user-246440">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-246440" class="dsq-comment-body">\
	 <div id="dsq-comment-message-246440" class="dsq-comment-message">?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-246450">\
	 <div id="dsq-comment-header-246450" class="dsq-comment-header">\
	 <cite id="dsq-cite-246450" class="dsq-comment-cite">\
	 <span id="dsq-author-user-246450">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-246450" class="dsq-comment-body">\
	 <div id="dsq-comment-message-246450" class="dsq-comment-message">aba23,<br><br>Thanks for your thoughtful reply, in turn.<br><br>To (d), I think we are getting at the same thing, just different words.  Your explanation is more expansive.  I was simply referring to his urging a national discussion of the underlying causes.<br><br>Also, in the speech while he did point to lack of sufficient responsibility in the black community, I felt, like some others do, that it was not proportionate, didn\'t scale to other points he was making.  This is not a big thing, though.<br><br>Where you and I will disagree is on (b), which is the heart of the matter; it was,  after all, the catalyst for the speech.  The problem is that while he definitely condemned what the public has seen from Wright, as you point out, at the same time he minimized it.  (Note Slamfu\'s pro-Obama post below, precisely because Obama "stuck up for his pastor.")  As he has before, Obama suggested that the videos were cherry-picked "snippets", were uncharacteristic of the total man and an unfair representation of 40 yrs of good works, asks that we "understand his roots."  And then, and has been noted by quite a few analysts, he disingenuously compares Wright to Ferraro (which isn\'t remotely true), and compares disowning Wright as tantamount to rejecting the entire black community and his occasionally errant grandmother - even some who\'ve written about this speech in glowing terms saw this to be ugly and misleading.  And why make such a stretch?  Because he hasn\'t an adequate answer.   <br><br>For reasons I describe in my reply below, I find his failure to reject Wright totally, his decision to have had a continued close association with such an individual, to have included him in his campaign, to be entirely inexcusable and unacceptable.  Were it another candidate, this would not be tolerated - including by Obama.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-247376">\
	 <div id="dsq-comment-header-247376" class="dsq-comment-header">\
	 <cite id="dsq-cite-247376" class="dsq-comment-cite">\
	 <span id="dsq-author-user-247376">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-247376" class="dsq-comment-body">\
	 <div id="dsq-comment-message-247376" class="dsq-comment-message">I fully understand that having Wright be at all associated with his campaign makes a persuasive point against Obama\'s judgment. (I think his failure to loosen ties from Mr. Rezko at the first hint of Rezko\'s improrieties is even more damning.)  <br><br>His long-time personal association with his pastor is something I don\'t feel qualified to comment on.  I know too little about it; it could cut either way for me if I knew more about the church, the pastor, the nature of their relationship and numerous other factors. <br><br>Now, I have little use for religion, but there\'s a lot of good in Christianity, and in my opinion to cite his failure to "reject Wright totally" as "inexcusable and unacceptable" is not only to ask him to betray a basic tenet of his faith, but also to act completely contrary to what he seems to believe about effectuating constructive change.  <br><br>You also wrote: "So when the world has grown so complex that we more than ever need to see leadership that can prove its mettle, can survive a cauldron on the order of a Firing Line debate, we instead get . . . fantastic marketing."<br><br>Again, I don\'t disagree that there\'s a lot of spin inherent to the workings of any successful politician, including this one, but I support Obama\'s candidacy exactly because I believe his primary motive--more than any other politician in my lifetime--is to try to attack the democracy-killing cancer endemic to our "age of instant fix, instant gratification, personality and identity driven politics, and little objective intellectual rigor."  (I also think he will ask more of the American people than any of his opponents, and that is crucial to the long-term economic health and both the short- and long-term influence of the nation.)<br><br>I\'m sorry you find it more attributable to fantastic marketing, but it\'s too bad (from my perspective) that we\'ll likely never know.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-248796">\
	 <div id="dsq-comment-header-248796" class="dsq-comment-header">\
	 <cite id="dsq-cite-248796" class="dsq-comment-cite">\
	 <span id="dsq-author-user-248796">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-248796" class="dsq-comment-body">\
	 <div id="dsq-comment-message-248796" class="dsq-comment-message">aba23,<br><br>It was nice you took time to make another reply.  And I thank you especially for your constructive and respectful tone.  I hope that my responses have met that standard.<br><br>After I wrote the following, which I\'ll leave here fwiw, I came across a piece written by a black fellow with the New York Civil Rights Coalition and formerly the NAACP.  I\'m guessing that you too will find this highly interesting and insightful . . .<br><br><a href="http://www.latimes.com/news/printedition/opinion/la-oew-meyers20mar20%2C1%2C5615767.story?track=rss" rel="nofollow">http://www.latimes.com/news/printedition/opinio...</a><br><br>I must comment on your thought re Obama\'s faith and not rejecting Wright.  Like yourself, I have little use for religion, at least the organized variety (I do like the Dalai Lama).  If you scan down the page you will see a post I made in ref to what is taught in Obama\'s church and by Rev Wright, and its origins.  I think if you take a closer look, you will find that the organizing principle is hatred of America as being "white supremacist" in its "entire reality."  This is why in the church\'s bookstore, prominently displayed are the works of Farrakahn, Malcolm X, and former Black Panthers.  The church is based on a belief system its founder (a mentor of Wright) describes as the "theological arm of Black Power."  The videos which caused the uproar, leading to Obama speech Tues, are not "snippets" taken out of context as Obama implies, they are representative of the message delivered in this church for 40 yrs.<br><br>I voted for Obama in the primary.  But when I learned that he had attended a Black Power church like this for 20 yrs, that Wright was a mentor and still advisor to his campaign . . . well, I was just dumbfounded and so depressed.  I cannot reconcile Obama making these choices.  I cannot understand his minimizing something so egregious.  I cannot understand why he is not telling us how he stood up to Wright, grappled with Wright, worked to change the poison - and failing that, why he did not leave.  There are after all plenty of other choices.  <br><br>Perhaps I have this viewpoint because I have seen first hand the results of this poison.  When people are taught from early childhood that everything around them, that all they encounter, is part of a vicious plot to destroy them - no wonder it results in a complex of victim hood and grievance.  Obama had a wonderful opportunity Tuesday to take this head on.  But I guess he could not because the more he would have exposed Wright for all that he is, the more difficult the questions would have become about his sustained involvement.  I guess we\'ll never hear the full truth about the why.<br><br>As far as my marketing comment, I\'m showing my disillusionment again.  The other thing I learned after voting for Obama was that his campaign is virtually a mirror image of what David Axelrod - whose consulting firm specializes in political advertising - put together for Deval Patrick\'s campaign in Massachusetts.  He\'s used these themes and messages in other campaigns as well.  The inspirational "yes, we can" and "you are the change" etc. was all pre-packaged.  I guess that doesn\'t mean Obama doesn\'t believe it all the same, but it was discouraging to learn that it wasn\'t original, wasn\'t really his.<br><br>Take care.  And thanks again for the dialog.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-249341">\
	 <div id="dsq-comment-header-249341" class="dsq-comment-header">\
	 <cite id="dsq-cite-249341" class="dsq-comment-cite">\
	 <span id="dsq-author-user-249341">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-249341" class="dsq-comment-body">\
	 <div id="dsq-comment-message-249341" class="dsq-comment-message">?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-250151">\
	 <div id="dsq-comment-header-250151" class="dsq-comment-header">\
	 <cite id="dsq-cite-250151" class="dsq-comment-cite">\
	 <span id="dsq-author-user-250151">aba23</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-250151" class="dsq-comment-body">\
	 <div id="dsq-comment-message-250151" class="dsq-comment-message">I promise I\'ll let it go after this, and I do thank you again for sharing your thoughts and the discussion generally. I read the Myers op-ed you linked to, but I confess I find his position to be extremely unrealistic. The idea that we mustn\'t look at the past to see where we are (and who we are) and how we might go forward is one I, Obama, and William Faulkner all object to. Yes, we all know that race is largely a construct, but that doesn\'t make it or the effects of its perceived importance to some any less "real." <br><br>Again, I don\'t know enough about Obama\'s church. Maybe you know that this church was one that regularly and continuously poisoned minds as you describe. Here\'s what I find interesting: As you say, even these clips came from videos that were widely available. If they are all so inflammatory, why have we only seen 1 min. and 45 sec. of them? More generally, why do I not know more of the unspeakable things they\'re up to?--there\'s nothing secret about it; the congregation numbers in the thousands from what I understand (and Wright has spoken at hundreds of other churches and schools). If there\'s smoke, there\'s fire, but what if there isn\'t all that much smoke? Then, do we really need to make up our minds so quickly?<br><br>Finally, Black Power is not Black Supremacy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-250156">\
	 <div id="dsq-comment-header-250156" class="dsq-comment-header">\
	 <cite id="dsq-cite-250156" class="dsq-comment-cite">\
	 <span id="dsq-author-user-250156">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-250156" class="dsq-comment-body">\
	 <div id="dsq-comment-message-250156" class="dsq-comment-message">?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-251625">\
	 <div id="dsq-comment-header-251625" class="dsq-comment-header">\
	 <cite id="dsq-cite-251625" class="dsq-comment-cite">\
	 <span id="dsq-author-user-251625">Creole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-251625" class="dsq-comment-body">\
	 <div id="dsq-comment-message-251625" class="dsq-comment-message">Hey,<br><br>My last reply as well.  But this info may be of interest, in answer to your questions.<br><br>(Btw re Myers, I just thought, given his background, that it was interesting.  Different.  Something  to think about.  That\'s all.)  <br><br>There are simple answers to your questions.  The clips are outtakes of entire sermons, and admittedly pieces that are most controversial, but do not distort the message.  The sermons have been avail from the TUCC bookstore.  Interestingly, there are only a limited number of sermons sold in this media, but these are among them.  Also prominently displayed in the book store, along with Obama\'s book, are books by Malcolm X, Farrakhan, and leaders of the former Black Panthers.  I don\'t know if Cone and Hopkins books are sold there - Cone is the father of BLT and Wright\'s mentor.  I\'ve seen a TV clip where Wright essentially says that if you haven\'t read Cone or Hopkins you don\'t know Wright and the TUCC, and he\'s right.  The diff basis for my perspective vis-a-vis yourself and most others, is my familiarity with Cone.  I was there when this was born.  At that time I was very active politically in Berkeley and also taking Comparative Theology at college.  Most activists were not surprised by BLT\'s political bent, as it was derived from the Marxist Liberation Theology developed by radical Catholic priests in S. America (judged heretical by the Vatican), which we were very familiar with.  But with BLT, God, Jesus, all Christian theology was placed in an exclusive black framework; the New Testament is a large black allegory thru which to inform the entire American experience.  What was shocking was how, like its cousin the Panthers, it was so vehemently and uncompromisingly anti-white and anti-American.  It isn\'t black supremacist per se, but that is implied, because whites are characterized as so hopelessly racist that they cannot be changed.  (A reprint of a Wright sermon in 2006 in TUCC\'s Trumpet makes this case.)  I sat in a pew one day with other activists that had supported the black cause since MLK, listening to epithets hurled at us and being blamed along with all of white America for everything wrong.  It was the antithesis of MLK; it was a religious version of Malcolm X.  It was a lighter version of Farrakhan, but  "Christian".<br><br>Obama knows all of this well.  He talks about it in Dreams of My Father.  His under-grad associations were primarily black activists, Marxist profs, Farrakhan followers (with whom he writes that he shared their sentiments, but not their methods).  Of course Obama has had to deny not hearing the incendiary rhetoric in those specific sermons, but anyone who knows BLT and Wright knows you can\'t be a close associate (esp for 20 yrs) and not know this stuff.  This is what defines who Wright is.<br><br>Why isn\'t more known about BLT?  Because it was legitimized by Liberal theological academia in the 70\'s.   A lot of theological studies have been radicalized for a long time.  You may have read how Wright is a prominent theologian, widely respected.  And he is.  And among black churches, a non-trivial number (albeit certainly a minority) subscribe to BLT.  There are many churches like the TUCC.  You may find them in the United Church of Christ, like TUCC, because the UCC is the most Liberal major denomination.  But many are non-denominational.  Whites simply don\'t know this (or more to the point, don\'t care).  Secular media certainly is ignorant about it.  It\'s important to note, too - you\'ll hear this repeatedly in defenses of TUCC - that through the Liberal perspective, it is the good social works that are what\'s important.  The longer-term effects of political grievance and anti-white separatism are downplayed.  For that matter, many higher-educated Liberals essentially agree with BLT\'s anti-American views; you hear this often as well in TUCC\'s defense.  While most black churches disagree with BLT, teaching the traditional color-blind theology, the good works that TUCC does plus black solidarity keeps many mum.  But again, no one is paying attention; there are also plenty of black pastors (esp in the South) to preach intensely against Wright and BLT.<br><br>As a final note:  Do I think that Obama shares Wright\'s extreme views?  No, I don\'t.  In a way, that only adds to the question of why he did not speak out while he was there.  Obama needs to be candid with the voters about this major part of his past and be clear about what about it he considered sufficiently unobjectionable that it justified his continued participation.  I saw a piece in the L.A. Times by an activist young woman who knows him from the TUCC, and she was frustrated that he has not been more candid with the "progressive" views he espoused there - policies which are distinctly aligned to the socialist dimension of BLT.  This may be what kept Obama in the TUCC, i.e., it\'s ideological bent.  We need to know.<br><br>Thanks again for all of your time and thoughts.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-264492">\
	 <div id="dsq-comment-header-264492" class="dsq-comment-header">\
	 <cite id="dsq-cite-264492" class="dsq-comment-cite">\
	 <span id="dsq-author-user-264492">Christines</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-264492" class="dsq-comment-body">\
	 <div id="dsq-comment-message-264492" class="dsq-comment-message">The Wall Street Journal has some interesting answers to his speech and why he stayed with Pastor Wright and the Trinity United Church  for 20 years!<br><br><br>	<br>OPINION<br>DOW JONES REPRINTS<br><br><br>This copy is for your personal, non-commercial use only. To order presentation-ready copies for distribution to your colleagues, clients or customers, use the Order Reprints tool at the bottom of any article or visit:<br><a href="http://www.djreprints.com" rel="nofollow">www.djreprints.com</a>.<br><br>• See a sample reprint in PDF format.<br>• Order a reprint of this article now.<br><br>The Obama Bargain<br>By SHELBY STEELE<br>March 18, 2008; Page A23<br>Geraldine Ferraro may have had sinister motives when she said that Barack Obama would not be "in his position" as a frontrunner but for his race. Possibly she was acting as Hillary Clinton\'s surrogate. Or maybe she was simply befuddled by this new reality -- in which blackness could constitute a political advantage.<br><br><br>AP<br>Jesse Jackson and Barack Obama, June 4, 2007.<br>But whatever her motives, she was right: "If Obama was a white man, he would not be in this position." Barack Obama is, of course, a very talented politician with a first-rate political organization at his back. But it does not detract from his merit to say that his race is also a large part of his prominence. And it is undeniable that something extremely powerful in the body politic, a force quite apart from the man himself, has pulled Obama forward. This force is about race and nothing else.<br><br>The novelty of Barack Obama is more his cross-racial appeal than his talent. Jesse Jackson displayed considerable political talent in his presidential runs back in the 1980s. But there was a distinct limit to his white support. Mr. Obama\'s broad appeal to whites makes him the first plausible black presidential candidate in American history. And it was Mr. Obama\'s genius to understand this. Though he likes to claim that his race was a liability to be overcome, he also surely knew that his race could give him just the edge he needed -- an edge that would never be available to a white, not even a white woman.<br><br>How to turn one\'s blackness to advantage?<br><br>The answer is that one "bargains." Bargaining is a mask that blacks can wear in the American mainstream, one that enables them to put whites at their ease. This mask diffuses the anxiety that goes along with being white in a multiracial society. Bargainers make the subliminal promise to whites not to shame them with America\'s history of racism, on the condition that they will not hold the bargainer\'s race against him. And whites love this bargain -- and feel affection for the bargainer -- because it gives them racial innocence in a society where whites live under constant threat of being stigmatized as racist. So the bargainer presents himself as an opportunity for whites to experience racial innocence.<br><br>This is how Mr. Obama has turned his blackness into his great political advantage, and also into a kind of personal charisma. Bargainers are conduits of white innocence, and they are as popular as the need for white innocence is strong. Mr. Obama\'s extraordinary dash to the forefront of American politics is less a measure of the man than of the hunger in white America for racial innocence.<br><br>His actual policy positions are little more than Democratic Party boilerplate and hardly a tick different from Hillary\'s positions. He espouses no galvanizing political idea. He is unable to say what he means by "change" or "hope" or "the future." And he has failed to say how he would actually be a "unifier." By the evidence of his slight political record (130 "present" votes in the Illinois state legislature, little achievement in the U.S. Senate) Barack Obama stacks up as something of a mediocrity. None of this matters much.<br><br>Race helps Mr. Obama in another way -- it lifts his political campaign to the level of allegory, making it the stuff of a far higher drama than budget deficits and education reform. His dark skin, with its powerful evocations of America\'s tortured racial past, frames the political contest as a morality play. Will his victory mean America\'s redemption from its racist past? Will his defeat show an America morally unevolved? Is his campaign a story of black overcoming, an echo of the civil rights movement? Or is it a passing-of-the-torch story, of one generation displacing another?<br><br>Because he is black, there is a sense that profound questions stand to be resolved in the unfolding of his political destiny. And, as the Clintons have discovered, it is hard in the real world to run against a candidate of destiny. For many Americans -- black and white -- Barack Obama is simply too good (and too rare) an opportunity to pass up. For whites, here is the opportunity to document their deliverance from the shames of their forbearers. And for blacks, here is the chance to document the end of inferiority. So the Clintons have found themselves running more against America\'s very highest possibilities than against a man. And the press, normally happy to dispel every political pretension, has all but quivered before Mr. Obama. They, too, have feared being on the wrong side of destiny.<br><br>And yet, in the end, Barack Obama\'s candidacy is not qualitatively different from Al Sharpton\'s or Jesse Jackson\'s. Like these more irascible of his forbearers, Mr. Obama\'s run at the presidency is based more on the manipulation of white guilt than on substance. Messrs. Sharpton and Jackson were "challengers," not bargainers. They intimidated whites and demanded, in the name of historical justice, that they be brought forward. Mr. Obama flatters whites, grants them racial innocence, and hopes to ascend on the back of their gratitude. Two sides of the same coin.<br><br>But bargainers have an Achilles heel. They succeed as conduits of white innocence only as long as they are largely invisible as complex human beings. They hope to become icons that can be identified with rather than seen, and their individual complexity gets in the way of this. So bargainers are always laboring to stay invisible. (We don\'t know the real politics or convictions of Tiger Woods or Michael Jordan or Oprah Winfrey, bargainers all.) Mr. Obama has said of himself, "I serve as a blank screen on which people of vastly different political stripes project their own views . . ." And so, human visibility is Mr. Obama\'s Achilles heel. If we see the real man, his contradictions and bents of character, he will be ruined as an icon, as a "blank screen."<br><br>Thus, nothing could be more dangerous to Mr. Obama\'s political aspirations than the revelation that he, the son of a white woman, sat Sunday after Sunday -- for 20 years -- in an Afrocentric, black nationalist church in which his own mother, not to mention other whites, could never feel comfortable. His pastor, Rev. Jeremiah Wright, is a challenger who goes far past Al Sharpton and Jesse Jackson in his anti-American outrage ("God damn America").<br><br>How does one "transcend" race in this church? The fact is that Barack Obama has fellow-traveled with a hate-filled, anti-American black nationalism all his adult life, failing to stand and challenge an ideology that would have no place for his own mother. And what portent of presidential judgment is it to have exposed his two daughters for their entire lives to what is, at the very least, a subtext of anti-white vitriol?<br><br>What could he have been thinking? Of course he wasn\'t thinking. He was driven by insecurity, by a need to "be black" despite his biracial background. And so fellow-traveling with a little race hatred seemed a small price to pay for a more secure racial identity. And anyway, wasn\'t this hatred more rhetorical than real?<br><br>But now the floodlight of a presidential campaign has trained on this usually hidden corner of contemporary black life: a mindless indulgence in a rhetorical anti-Americanism as a way of bonding and of asserting one\'s blackness. Yet Jeremiah Wright, splashed across America\'s television screens, has shown us that there is no real difference between rhetorical hatred and real hatred.<br><br>No matter his ultimate political fate, there is already enough pathos in Barack Obama to make him a cautionary tale. His public persona thrives on a manipulation of whites (bargaining), and his private sense of racial identity demands both self-betrayal and duplicity. His is the story of a man who flew so high, yet neglected to become himself.<br><br>Mr. Steele, a research fellow at Stanford University\'s Hoover Institution and the author of "A Bound Man: Why We Are Excited About Obama and Why He Can\'t Win" (Free Press, 2007).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5466124">\
	 <div id="dsq-comment-header-5466124" class="dsq-comment-header">\
	 <cite id="dsq-cite-5466124" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5466124" href="http://www.spitrekop.com" target="_blank" rel="nofollow">kuru</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5466124" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5466124" class="dsq-comment-message">it was definately a success</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-5514288">\
	 <div id="dsq-comment-header-5514288" class="dsq-comment-header">\
	 <cite id="dsq-cite-5514288" class="dsq-comment-cite">\
	 <a id="dsq-author-user-5514288" href="http://www.zydamax.com" target="_blank" rel="nofollow">alik</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-5514288" class="dsq-comment-body">\
	 <div id="dsq-comment-message-5514288" class="dsq-comment-message">all in all, it was a succes.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-243890">\
	 <div id="dsq-comment-header-243890" class="dsq-comment-header">\
	 <cite id="dsq-cite-243890" class="dsq-comment-cite">\
	 <span id="dsq-author-user-243890">Neo</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-243890" class="dsq-comment-body">\
	 <div id="dsq-comment-message-243890" class="dsq-comment-message">Now there is the "<i>Obama-Wright escape</i>" clause for those embarrassing situations where you can now say .. "<b>I can no more likely renounce him/her than Obama could renounce Rev. Wright.</b>"<br><br>Wow. Doesn\'t that make the world a better place ?<br><br>Or .. <b>I would like to invoke my "<i>Obama-Wright escape</i>" clause rights.</b><br><br>Ranks right up there with the 5th amendment.<br><br>Perhaps we should all automatically consider this response the next time we think of demanding a repudiation of someone.</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=themoderatevoice&t=the_obama_racial_division_speech_success_or_failure_with_reaction_roundup&to_redirect=' + encodeURIComponent(window.location) + '&ifrs=' + encodeURIComponent(disqus_iframe_css);
			}
		}
	}

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

	



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

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

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

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

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


	


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

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

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

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

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

})();




