




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": [{"body": "A private note to PR people http://tinyurl.com/ygvw6wu", "author_name": "ella_mm4h", "source_url": "http://www.ubervu.com/conversations/scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 16553754, "get_service_url": "http://twitter.com/", "title": "A private note to PR people http://tinyurl.com/ygvw6wu", "url": "http://twitter.com/ella_mm4h/status/5453811088", "source": "ubervu", "get_service_name": "twitter", "avatar_url": "http://a1.twimg.com/profile_images/497822898/65_94_normal.jpg", "author_url": "", "date_created": "1 month ago", "retweets": []}, {"body": "I can\u2019t take your call (today I\u2019m in meetings all day, for instance). I\u2019ll call you back when I can. Thanks and sorry if you felt attacked by my broad brushes. If you have a blog and a Twitter account", "author_name": "Erica Carnevale", "source_url": "http://www.ubervu.com/conversations/scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1066421, "get_service_url": "http://friendfeed.com/", "title": "", "url": "http://friendfeed.com/e/6563706c-4b84-b566-efc8-353bb5e704ad#ed48e094-8426-4dbc-a2f1-ceb91b6e3566", "source": "ubervu", "get_service_name": "friendfeed", "avatar_url": "http://friendfeed.com/ericac/picture?size=large", "author_url": "", "date_created": "7 months ago", "retweets": []}, {"body": "1000 pitches-995 crappy, Scoble says at http://tinyurl.com/dcdygz . Quite a statistic. Remember old days--when we met journalists?", "author_name": "MichaelWhitlow", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558517, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/MichaelWhitlow/statuses/1533321980", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/94478825/cropMW_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "The correct link for the Scoble post is http://twurl.nl/2htfu8 - sometimes Twitter never gets around to giving me a counter. Went too long.", "author_name": "GrowMap", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558518, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/GrowMap/statuses/1510102834", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/71185343/gravatar_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "A private note to PR people from @scoleizer excellent read http://tinyurl.com/dcdygz", "author_name": "glennedley", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558519, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/glennedley/statuses/1506888492", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/93671572/IMG_0074_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "Great words from Mr. Scoble: http://tinyurl.com/dcdygz", "author_name": "tmetcalf44", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558520, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/tmetcalf44/statuses/1498007855", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/66035146/Chef_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "Reading: A private note to PR people \u00ab Scobleizer: Technology, innovation, and geek enthusiasm http://tr.im/iBlQ", "author_name": "iamPariah", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558521, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/iamPariah/statuses/1494424831", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/62397607/Headshot-2008-200x244_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "I look forward to it. RT @davefleet was about to respond to @scobleizer via Twitter/FF but deserves more thought. Soon. http://bit.ly/12QID", "author_name": "missusP", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558522, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/missusP/statuses/1493330490", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/62507021/co504_copy_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "I was about to respond to this @scobleizer post via Twitter/FF, but think it deserves something more thoughtful. Soon. http://bit.ly/12QID", "author_name": "davefleet", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558523, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/davefleet/statuses/1493315892", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/81007620/dave-bw_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}, {"body": "@scobleizer lays it out for PR pitching: http://tinyurl.com/dcdygz", "author_name": "lyf108", "source_url": "http://www.backtype.com/search?q=http%3A//scobleizer.com/2009/04/07/a-private-note-to-pr-people/", "id": 1558524, "get_service_url": "http://twitter.com/", "title": "", "url": "http://twitter.com/lyf108/statuses/1490767433", "source": "backtype", "get_service_name": "twitter", "avatar_url": "http://s3.amazonaws.com/twitter_production/profile_images/55573512/2573954069_64f4c7280b_m_normal.jpg", "author_url": "", "date_created": "8 months ago", "retweets": []}], "has_more_reactions": true, "users": {"twitter-56613023": {"username": "twitter-56613023", "tumblr": "", "display_name": "deidre moseley", "url": "http://disqus.com/twitter-56613023/", "registered": true, "linkedin": "", "blog": "http://twitter.com/diversehippie", "remote_domain": 2, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/50/4965/avatar92.jpg", "delicious": "", "is_remote": true, "verified": false, "flickr": "", "twitter": "http://twitter.com/diversehippie", "remote_domain_name": "Twitter"}, "b8fb9628a2e2f210b212e60bc3bde269": {"username": "Colleen Coplick", "tumblr": "", "display_name": "Colleen Coplick", "url": "http://disqus.com/guest/b8fb9628a2e2f210b212e60bc3bde269/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "0ac7a321004640d6d4b72b22d485add8": {"username": "Shari Weiss", "tumblr": "", "display_name": "Shari Weiss", "url": "http://disqus.com/guest/0ac7a321004640d6d4b72b22d485add8/", "registered": false, "linkedin": "", "blog": "http://online.sfsu.edu/~sharisax", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/153/1050/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c77fe78f063c855189191dc84bb9cc7f": {"username": "Pam Miller", "tumblr": "", "display_name": "Pam Miller", "url": "http://disqus.com/guest/c77fe78f063c855189191dc84bb9cc7f/", "registered": false, "linkedin": "", "blog": "http://www.kmcgroup.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ca6094b709b5017433c6c14fe3429b9c": {"username": "Michael Sommermeyer", "tumblr": "", "display_name": "Michael Sommermeyer", "url": "http://disqus.com/guest/ca6094b709b5017433c6c14fe3429b9c/", "registered": false, "linkedin": "", "blog": "http://www.wordymouth.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/38/8767/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "334de1b216baa39488ad57bf72322cc9": {"username": "Peter Himler", "tumblr": "", "display_name": "Peter Himler", "url": "http://disqus.com/guest/334de1b216baa39488ad57bf72322cc9/", "registered": false, "linkedin": "", "blog": "http://www.flatironcomm.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "52cd044f295ac06cbf87794cf1bc1b72": {"username": "Matt Gentile", "tumblr": "", "display_name": "Matt Gentile", "url": "http://disqus.com/guest/52cd044f295ac06cbf87794cf1bc1b72/", "registered": false, "linkedin": "", "blog": "http://www.century21.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b6703578f78c46a64c2d392255b033d7": {"username": "peeta", "tumblr": "", "display_name": "peeta", "url": "http://disqus.com/guest/b6703578f78c46a64c2d392255b033d7/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "mikelizun": {"username": "mikelizun", "tumblr": "", "display_name": "mikelizun", "url": "http://disqus.com/mikelizun/", "registered": true, "linkedin": "", "blog": "http://www.twitter.com/mikelizun", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/27/1338/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "http://twitter.com/MikeLizun", "remote_domain_name": ""}, "b6c1028fc3f24edb78ebcd4255940f16": {"username": "daniel", "tumblr": "", "display_name": "daniel", "url": "http://disqus.com/guest/b6c1028fc3f24edb78ebcd4255940f16/", "registered": false, "linkedin": "", "blog": "http://magmawave.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "4e0efb71c4b4a60a57f27631afc37306": {"username": "Shel Holtz", "tumblr": "", "display_name": "Shel Holtz", "url": "http://disqus.com/guest/4e0efb71c4b4a60a57f27631afc37306/", "registered": false, "linkedin": "", "blog": "http://blog.holtz.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/13318/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "d3d69f4ddce68f5d2823f63304be72f8": {"username": "Amanda", "tumblr": "", "display_name": "Amanda", "url": "http://disqus.com/guest/d3d69f4ddce68f5d2823f63304be72f8/", "registered": false, "linkedin": "", "blog": "http://lifewithbriar.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/124/4029/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "7cb19373f7b4f85e63e634c47e1d9678": {"username": "Louis Gray", "tumblr": "", "display_name": "Louis Gray", "url": "http://disqus.com/guest/7cb19373f7b4f85e63e634c47e1d9678/", "registered": false, "linkedin": "", "blog": "http://www.louisgray.com/live/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/1715/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "dbarefoot": {"username": "dbarefoot", "tumblr": "", "display_name": "dbarefoot", "url": "http://disqus.com/dbarefoot/", "registered": true, "linkedin": "", "blog": "http://www.darrenbarefoot.com", "remote_domain": null, "points": 3, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}, "7f6291e8344b594235e57b843fc05d9b": {"username": "Christopher Coulter", "tumblr": "", "display_name": "Christopher Coulter", "url": "http://disqus.com/guest/7f6291e8344b594235e57b843fc05d9b/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6161a71f7776859a17cfe19c3e48d214": {"username": "Rich Pulvino", "tumblr": "", "display_name": "Rich Pulvino", "url": "http://disqus.com/guest/6161a71f7776859a17cfe19c3e48d214/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "de5268d0f99e3df36039f9fdf4f49cb7": {"username": "Stuart Foster", "tumblr": "", "display_name": "Stuart Foster", "url": "http://disqus.com/guest/de5268d0f99e3df36039f9fdf4f49cb7/", "registered": false, "linkedin": "", "blog": "http://thelostjacket.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/77/4875/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c2183525e1a67d3ba97d84584c32fda9": {"username": "Megan", "tumblr": "", "display_name": "Megan", "url": "http://disqus.com/guest/c2183525e1a67d3ba97d84584c32fda9/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5f360e78b14d12003aca50151f7be73f": {"username": "Tom Ohle", "tumblr": "", "display_name": "Tom Ohle", "url": "http://disqus.com/guest/5f360e78b14d12003aca50151f7be73f/", "registered": false, "linkedin": "", "blog": "http://www.gog.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "2932fa17c7881903e46710042ab8dcf3": {"username": "Benjamin Koe", "tumblr": "", "display_name": "Benjamin Koe", "url": "http://disqus.com/guest/2932fa17c7881903e46710042ab8dcf3/", "registered": false, "linkedin": "", "blog": "http://eok.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/166/2741/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ff6b269e468cf478e8d1607e23803f10": {"username": "Eugene", "tumblr": "", "display_name": "Eugene", "url": "http://disqus.com/guest/ff6b269e468cf478e8d1607e23803f10/", "registered": false, "linkedin": "", "blog": "http://widowspeek.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "000801987fb3dd4d9b92db484c455ba0": {"username": "Ian Betteridge", "tumblr": "", "display_name": "Ian Betteridge", "url": "http://disqus.com/guest/000801987fb3dd4d9b92db484c455ba0/", "registered": false, "linkedin": "", "blog": "http://www.technovia.co.uk/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/19/8035/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9a7ae3f4057eff136ec0b929246a5710": {"username": "Matt", "tumblr": "", "display_name": "Matt", "url": "http://disqus.com/guest/9a7ae3f4057eff136ec0b929246a5710/", "registered": false, "linkedin": "", "blog": "http://www.twitter.com/emjay08", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "253b63a45fdf57066f298e6fa58ef54b": {"username": "Jody Schmidt", "tumblr": "", "display_name": "Jody Schmidt", "url": "http://disqus.com/guest/253b63a45fdf57066f298e6fa58ef54b/", "registered": false, "linkedin": "", "blog": "http://youtube.com/jodyschmidt", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c44d50bb03e64e42be567930cf9f85f6": {"username": "myphotoscout", "tumblr": "", "display_name": "myphotoscout", "url": "http://disqus.com/guest/c44d50bb03e64e42be567930cf9f85f6/", "registered": false, "linkedin": "", "blog": "http://ca.myphotoscout.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "eb636913ff071b0ea34c3819917a438a": {"username": "Mark", "tumblr": "", "display_name": "Mark", "url": "http://disqus.com/guest/eb636913ff071b0ea34c3819917a438a/", "registered": false, "linkedin": "", "blog": "http://www.leapfish.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "22f65f79bfb2bf6000f9013f81308420": {"username": "Ian", "tumblr": "", "display_name": "Ian", "url": "http://disqus.com/guest/22f65f79bfb2bf6000f9013f81308420/", "registered": false, "linkedin": "", "blog": "http://conversationpublicrelations.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ec155b6f79a69ef2f8c71511c4eac919": {"username": "Bob LeDrew", "tumblr": "", "display_name": "Bob LeDrew", "url": "http://disqus.com/guest/ec155b6f79a69ef2f8c71511c4eac919/", "registered": false, "linkedin": "", "blog": "http://www.flacklife.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/19/6757/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "451f3c9ef9982d4aaf040692b1273c0c": {"username": "Adam Singer", "tumblr": "", "display_name": "Adam Singer", "url": "http://disqus.com/guest/451f3c9ef9982d4aaf040692b1273c0c/", "registered": false, "linkedin": "", "blog": "http://thefuturebuzz.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/128/3270/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "64f38f14edb08e9d42e6897f15de7091": {"username": "Tweet Feeds", "tumblr": "", "display_name": "Tweet Feeds", "url": "http://disqus.com/guest/64f38f14edb08e9d42e6897f15de7091/", "registered": false, "linkedin": "", "blog": "http://now-web.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6482ce3c78a7cab469b01338c44fbb85": {"username": "Mike Darnell", "tumblr": "", "display_name": "Mike Darnell", "url": "http://disqus.com/guest/6482ce3c78a7cab469b01338c44fbb85/", "registered": false, "linkedin": "", "blog": "http://DigitalArtPrintGallery.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "177f491ebb96f3d25206c567a71f807e": {"username": "PD", "tumblr": "", "display_name": "PD", "url": "http://disqus.com/guest/177f491ebb96f3d25206c567a71f807e/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "6d12db363f93b00686e9cbbbdf304a87": {"username": "Coulter", "tumblr": "", "display_name": "Coulter", "url": "http://disqus.com/guest/6d12db363f93b00686e9cbbbdf304a87/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9422983004ca9c8c09873e4f017bd4b8": {"username": "partywedo", "tumblr": "", "display_name": "partywedo", "url": "http://disqus.com/guest/9422983004ca9c8c09873e4f017bd4b8/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "8a1df40dbd9d047d430e2af304b11d62": {"username": "Julie Pippert", "tumblr": "", "display_name": "Julie Pippert", "url": "http://disqus.com/guest/8a1df40dbd9d047d430e2af304b11d62/", "registered": false, "linkedin": "", "blog": "http://theartfulflower.blogspot.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "feac1d1f77631205309c5280ffec7c35": {"username": "Devin Davis", "tumblr": "", "display_name": "Devin Davis", "url": "http://disqus.com/guest/feac1d1f77631205309c5280ffec7c35/", "registered": false, "linkedin": "", "blog": "http://www.G5searchmarketing.com/blog", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "0a995a6f59d7ce254e105e0ac1d7db96": {"username": "Mary Ann Buggs", "tumblr": "", "display_name": "Mary Ann Buggs", "url": "http://disqus.com/guest/0a995a6f59d7ce254e105e0ac1d7db96/", "registered": false, "linkedin": "", "blog": "http://cheyennecommunications.webs.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "1cde6023a0e966cc6ab1d49ee81d8670": {"username": "Shane", "tumblr": "", "display_name": "Shane", "url": "http://disqus.com/guest/1cde6023a0e966cc6ab1d49ee81d8670/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "fbefd146fe728956cfe92436281891dc": {"username": "Mark (fetdigitaal.nl)", "tumblr": "", "display_name": "Mark (fetdigitaal.nl)", "url": "http://disqus.com/guest/fbefd146fe728956cfe92436281891dc/", "registered": false, "linkedin": "", "blog": "http://www.fetdigitaal.nl/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "8bbb3abe9b1b763dc35893132c008086": {"username": "Berlin Property", "tumblr": "", "display_name": "Berlin Property", "url": "http://disqus.com/guest/8bbb3abe9b1b763dc35893132c008086/", "registered": false, "linkedin": "", "blog": "http://www.berlinproperty.co.uk/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "00ce891fcfd5b9e1d3fe8439f8347a19": {"username": "reinsider", "tumblr": "", "display_name": "reinsider", "url": "http://disqus.com/guest/00ce891fcfd5b9e1d3fe8439f8347a19/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "cab1041ab2de14f71e070c15f8ae968e": {"username": "Christopher Coulter", "tumblr": "", "display_name": "Christopher Coulter", "url": "http://disqus.com/guest/cab1041ab2de14f71e070c15f8ae968e/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "doughaslam": {"username": "doughaslam", "tumblr": "", "display_name": "doughaslam", "url": "http://disqus.com/doughaslam/", "registered": true, "linkedin": "", "blog": "http://doughaslam.com", "remote_domain": null, "points": 3, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/10778/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": true, "name": "Scobleizer", "streaming_realtime": true, "url": "scobleizer", "allow_anon_post": true, "reactions_enabled": true, "reply_position": 1, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": true, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "scobleizer", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-12-17_10:42:42", "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": {"20117510": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert...<br><br>Great article...your basically confirming what a lot of people having been thinking for some time. PR must be good and informed PR..<br>\"You are only ever as strong as your weakest link\"", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-10-15_08:40:04", "killed": false, "user_key": "8bbb3abe9b1b763dc35893132c008086", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "2 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}, "13363470": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hello. This was really interesting to me. Before I read this post, I was reading section three of David Meerman Scott's book- The New Rules of Marketing & PR. I was just reading on the fact that DMS mentioned that PR people should now that before they pitch a blogger, they should know what the blogger writes about and what he/she thinks is interesting. I see that you have mentioned this yourself. I think that this information is vital and true, but astonished to see that many PR people don't see this as common sense. It is outrageous to me to think that a PR would pitch an idea to a blogger that they don't know anything about- or even worse- not care. That sounds so silly to me that someone would pitch an idea to someone who doesn't care. Like you had stated in your post, it is a waste of time! To me, if tons of PR's are still pitching ideas about products or services to bloggers who aren't intrigued by whatever they're talking about, there needs to be a PR meeting around the world discussing the new ways of pitching- even thought this idea seems like common sense. Great post!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-07-26_17:34:32", "killed": false, "user_key": "twitter-56613023", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "13363493": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hello. This was really interesting to me. Before I read this post, I was reading section three of David Meerman Scott's book- The New Rules of Marketing & PR. I was just reading on the fact that DMS mentioned that PR people should now that before they pitch a blogger, they should know what the blogger writes about and what he/she thinks is interesting. I see that you have mentioned this yourself. I think that this information is vital and true, but astonished to see that many PR people don't see this as common sense. It is outrageous to me to think that a PR would pitch an idea to a blogger that they don't know anything about- or even worse- not care. That sounds so silly to me that someone would pitch an idea to someone who doesn't care. Like you had stated in your post, it is a waste of time! To me, if tons of PR's are still pitching ideas about products or services to bloggers who aren't intrigued by whatever they're talking about, there needs to be a PR meeting around the world discussing the new ways of pitching- even thought this idea seems like common sense. Great post!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-07-26_17:35:23", "killed": false, "user_key": "twitter-56613023", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9716044": {"up_voted": false, "ip": "", "has_replies": false, "message": "I used to work in PR and I agree with Robert. Journalists want to cover good stories and it is the PR consultant's job to help the journalist. If the client pushes you for a story you know is going to be bad, that's when the PR consultant has to consult. Trying to push for a story that doesn't fit or just trying your luck is nothing short of lazy. Why would a client pay you if you can't advise them? BTW, PR today is so much easier, although the newspapers are dying, there's a whole lot more \"media\" online. Be creative, try other bloggers.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-13_12:11:41", "killed": false, "user_key": "2932fa17c7881903e46710042ab8dcf3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716045": {"up_voted": false, "ip": "", "has_replies": false, "message": "This post so perfectly highlights the inversion that exists not only in music, art, literature, and even science and invention, but also internet startups:<br><br>Early on, 'musician' is nothing.<br>Critics, producers, DJs, and agents all look down on new struggling 'musician'.<br>'Musician' has to brown nose to everybody to get anywhere: to get a gig, a crappy record label deal, a cheap guitar, etc.<br>He is often considered a pest.<br><br>But, of the clamoring 1000s of struggling musicians, a precious few will become successful, perhaps very successful, and then, the proper order of the universe will snap back into place:<br><br>That the rock stars are everything and the critics, producers and everyone else are nothing but grubby parasites with nearly useless jobs.<br><br>To all those out there who feel temporarily and very precariously above the surging creative forces under you, remember the Hollywood approach:<br><br>Be kind to everyone, for you will surely be working for some of them one day, and be far below many more of them in the not so distant future.<br><br>Same reminder to established gatekeepers of all media:<br><br>You will never ever be anything but parasites, and will never ever (George Martin and Brian Epstein excepted) be considered anything but vermin next to the future rock stars you endlessly snub.<br>So why try and act important now just to have it come back and bite you later? Just realize your post and lot in life and do your best.<br>The entertainment and business worlds do need gatekeepers, just ones who are more aware of their paltry value to the world.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-17_20:42:53", "killed": false, "user_key": "253b63a45fdf57066f298e6fa58ef54b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716046": {"up_voted": false, "ip": "", "has_replies": false, "message": "I found this story on the path from Twitter to Friendfeed to your blog.<br><br>Yes we have pitched you Robert - but it has always been by phone and never through a PR person (that I know of :)<br><br>But I can see where you are coming from because I get pitched and I know how it feels. When you are a visible company that creates companies and people see you cranking along in this economy they call with ideas and their own pitches.<br><br>About 5% of the pitches I get are worth listening to. There is a good book by Paul Gillin - Secrets of Social Media and it has section on how to build the relationship with bloggers &amp; others. I highly recommend that book  even though no one should have to tell you how to build a relationship- I thought we learned that in kindergarten.<br><br>I think it is more the fact that people call or email pitches when it's convenient for them. When the story hits or your information gets published you don't hear from them until the next time they want something else.<br><br>I have been following you since your Facebook days of lore and have always wondered about the great Scobelizer and then reached out when we had something to say that had a good level of success already.<br><br>Not saying everyone is perfect but my take is don't just pitch an idea. The person pitching should be developing the idea and have some success or at least be on the path to success before they pitch.<br><br>But I will say this it is hard to get close to some of the top bloggers &amp; industry pro's sometimes. Yes, you are different, you have your phone number on your site AND you answer it.  But most don't unfortunately (or fortunately).<br><br>Bottom line have a working model, build the relationship and then talk to the person (forget the pitch).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:27:51", "killed": false, "user_key": "eb636913ff071b0ea34c3819917a438a", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716047": {"up_voted": false, "ip": "", "has_replies": false, "message": "The execution isn't great, but I actually like 'Help a Reporter Out': <a href=\"http://www.helpareporter.com/\" rel=\"nofollow\">http://www.helpareporter.com/</a>. It seems like an effective needs-based model, where journalists/bloggers/authors et al submit requests about stories they're working on, and PR people send (theoretically) appropriate pitches.<br><br>I've been on both sides of this tool, and it's worked out pretty well. As an author, I got some crappy pitches, but at least they were filtered through the lens of my specific needs.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:04:03", "killed": false, "user_key": "dbarefoot", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "8 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}, "9716048": {"up_voted": false, "ip": "", "has_replies": false, "message": "Good, honest and to the point. Things I've said and experienced for years, from the 'inside' -- I suspect all we can do is post calm, patient missives like this and keep doing our jobs the right way. Keep up the good work, man.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:05:42", "killed": false, "user_key": "0a995a6f59d7ce254e105e0ac1d7db96", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716049": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Robert,<br><br>I've been a naughty boy.<br>You see I'm not a PR person but I read this post anyway.<br><br>I apologize, but it was worth it.<br><br>I dunno why, but this post kinda reminds me of the lessons folded in to the folk-tale about the boy who cried \"Wolf!\"...<br><br>: )<br>Cheers,<br>Mike<br>\"I tweet @pop_art &amp; @headup\"", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:11:10", "killed": false, "user_key": "6482ce3c78a7cab469b01338c44fbb85", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716050": {"up_voted": false, "ip": "", "has_replies": false, "message": "Josh Dilworth and Adam Singer are two of the best PR people who get blogging. When I get an e-mail from Josh, there's a very good chance I'll cover that company, because he knows what I care about. And he answers e-mail past midnight, which shows he is as nuts as the rest of us.<br><br>Stage Two Consulting (Jeremy Toeman)'s clients aren't always the ones I am interested in either, but they always are careful... \"Louis, I know you don't usually cover... but...\", etc. so they have my respect.<br><br>PR in today's world is hard because many still don't get new media. They aren't participating, or if they are, it's tentative. The few that get it right are memorable.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:29:13", "killed": false, "user_key": "7cb19373f7b4f85e63e634c47e1d9678", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716051": {"up_voted": false, "ip": "", "has_replies": false, "message": "Loved this article. I am a PR person, but I come from a blogging/social bookmarking background and have a great journalist friend, Daniel Honigman who has regulated a lot of any stupidity I have thought of in terms of pitching/approaches.<br><br>If I don't think you would be interested in something as a blogger, editor, or my friend: I won't bother you with it. Seems obvious right? Sadly, I get bad 1 sentence pitches on my blog about PR/Marketing/Social Media. If that isn't irony, I don't know what is. Really hoping this changes a lot of people's approaches.<br><br>(I wrote the # down, but probably won't have something interesting for you for a while and certainly not before I make an effort to meet you and make a connection.)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:38:36", "killed": false, "user_key": "de5268d0f99e3df36039f9fdf4f49cb7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716052": {"up_voted": false, "ip": "", "has_replies": false, "message": "I've never been a journalist. I sympathize with the journalist that gets a thousand crappy pitches a day. But as a PR student, I also understand the, \"You'll cover us eventually\" sentiment. If a story is good, it will get out, and it might as well be you, xyz journalist, that gets it.<br><br>There is a hierarchical structure to journalists that we must take into account. Once one gets as big as Scoble, they can pick and choose the pitches they like. When you are a starving journalist, I'd imagine you're more likely to be open to pitches, even crappy ones.<br><br>Bad pitches are here to stay. Hopefully, the new media will end the careers of some of the worst offenders.<br><br>But in the end, I have to laugh at angry journalists' \"I hate PR\" diatribes, because after almost every rant, I see an apology.<br><br>Flacks + hacks = bff!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:46:27", "killed": false, "user_key": "22f65f79bfb2bf6000f9013f81308420", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716053": {"up_voted": false, "ip": "", "has_replies": false, "message": "While I agree that the majority of pitches are off target, it's not always the junior PR person who is to blame. There are too many senior-level PR folks who ask junior staffers to create media lists for their clients...media lists that end up with 100s, even 1,000s of reporters. These senior PR folks do not review the list, they just write the pitch and tell the staff to email away. They feel they are doing their client a service by reaching out to as many journalists as possible, hoping that one or two will like the pitch. Kind of like throwing spaghetti against the wall...doesn't work.<br><br>That is how I was taught, but that is not how I practice.<br><br>Now at a more senior level myself, I dig through all media lists my staff creates for me. After filtering out the poorly selected targets, I draft bullet points for the pitch. I ask my junior staff and interns to read the past few articles written by the journalist and create their own personal and targeted pitch. This takes more time, but it gets results and builds relationships. Isn't relationship building what it's all about?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:49:10", "killed": false, "user_key": "177f491ebb96f3d25206c567a71f807e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716054": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, couldn't agree more. The best thing any PR person can do is build a relationship with a blogger/reporter rather than cold-pitching. PR is a lot like sales, in that respect - cold calling the most intrusive and least effective way to do it.<br><br>And the relationship doesn't have to be face to face (although if it is, all the better). A great case in point back from when I was doing proper news journalism is Steve Rubel. Steve had commented on my blog, emailed me an introduction telling me who he was and what he covered, and generally tried to engage with me, my beat, and my interests.<br><br>So when he finally had something to pitch, I was more than ready to listen - I knew Steve well enough to know that he wasn't going to be wasting my time. And, just as important, he knew *me* well enough to know that talking to me wasn't wasting his client's time, either.<br><br>In fact, I think it would be a great follow-up to this post to list more people like Steve - PR people who are doing things the right way, and doing not only their clients a service, but the whole PR/press/media industry.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_10:51:39", "killed": false, "user_key": "000801987fb3dd4d9b92db484c455ba0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716055": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Robert<br>Damn, I was going to send you some information in Italian.<br><br>Ciao Bello<br>D", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:01:41", "killed": false, "user_key": "b6c1028fc3f24edb78ebcd4255940f16", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716057": {"up_voted": false, "ip": "", "has_replies": false, "message": "I'm a PR person, and generally find the hating on my profession tiresome and insulting--while there are definitely some practitioners who give the whole industry a bad name, there are many of us who respect bloggers and journalists, immerse ourselves in our clients' industries and really try to come up with compelling, valuable, tailored ideas rather than spam/garbage.<br><br>However, I found this post constructive and insightful.  I've never pitched you, Robert, because I've never had a client that would knock your socks off.  When I do, I'll be sure to call and make it an exchange of (hopefully interesting) information rather than just a one-way pitch.  In the meantime, I'm all over your blog and tweets, not because I want something from you, but because they're interesting and relevant.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:26:42", "killed": false, "user_key": "c2183525e1a67d3ba97d84584c32fda9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716058": {"up_voted": false, "ip": "", "has_replies": false, "message": "You really expect an entire industry to keep up with your ever-changing attention span? But never mind all that, just be your own investigator, PR is for spoon-fed blogger rewriters, whole networks of that.<br><br>Actually the wise PR person wouldn't even pitch you at all, being \"fanatical\" about keeping you out of the loop, being that your track record is the picture-perfect Reverse Midas Touch.<br><br>How's Gillbore's Citizen Journalism working? Oh right, crash and burn.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:32:29", "killed": false, "user_key": "7f6291e8344b594235e57b843fc05d9b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716059": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"PR Types\" and most journalists don't get it, and probably won't get it anytime soon. the PR  fakeness and pushyness culture was only working because people did not have access to information, so it was easy to mislead them,  executive leaders are already talking directly to customers via twitter, I don't even read press releases any more because they are not useful for anything other than making some PR person justify their existence", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:38:46", "killed": false, "user_key": "64f38f14edb08e9d42e6897f15de7091", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716060": {"up_voted": false, "ip": "", "has_replies": false, "message": "Good points here... from the PR perspective, I think the biggest issue is the daunting task of actually maintaining your relationships without feeling like you're just kicking around to eventually get a story.<br><br>I do my best to stay in touch with trade media, which in our industry (video games) is a massive number of people. Add on consumer media and bloggers, and I could probably spend my whole day building those relationships. So then it comes down to the occasional email or call, which I can only assume come across as desperate attempts at maintaining a relationship in hopes of landing a story when the time comes.<br><br>As I'm fairly removed from industry hotspots (being in Canada and all) I also don't have the benefit of being able to meet face-to-face with writers on a regular basis. And then when I do get to meet with them or talk to them on the phone or even exchange emails, it's like \"who are you again?\" and that discussion itself can become a bit challenging. I can only rely on my charm to take me so far... and I find that journalists can often seem a bit icy when being pitched, even if I've tried to uphold a cordial relationship.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:40:18", "killed": false, "user_key": "5f360e78b14d12003aca50151f7be73f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716061": {"up_voted": false, "ip": "", "has_replies": false, "message": "@Louis - wow, that is quite the endorsement - really appreciate that!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:48:19", "killed": false, "user_key": "451f3c9ef9982d4aaf040692b1273c0c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716062": {"up_voted": false, "ip": "", "has_replies": false, "message": "Thank you for the quick, yet direct education.<br><br>I will give you a call sometime, when I have something important to share.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:49:47", "killed": false, "user_key": "9422983004ca9c8c09873e4f017bd4b8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716063": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>Don't you feel that PR is largely responsible for convincing brands that you have influence and haven't you benefited tremendously from this?  As a PR person, I understand the why bad practitioners can taint a whole segment of the marketing community but I see a pretty clear benefit that seems to justify a few bloggers spending a few minutes each day cleaning out their inbox.  If you look at the position PR people are in, we're often pushing our clients to become better communicators, which, in the long run, will alleviate some of this burden on the journalist side.  A lot of the news you get and probably enjoy is a direct result of PR people pushing for it to be released.  There is good marketing and bad marketing across the board but I think the benefit of PR is fairly clear when you get past some basic annoyances.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_11:55:31", "killed": false, "user_key": "b6703578f78c46a64c2d392255b033d7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716064": {"up_voted": false, "ip": "", "has_replies": false, "message": "Interesting aspect of journalism. This warrants a bit more research on how to get the word out about a new service/product/whatever.<br>Sometimes I wonder why people are not too lazy to send hundreds of badly written pitches that are certain to get no attention at all when they could spend the same effort to write something really noteworthy and pitch it to only 20 people of which a much higher number would respond in  a positive manner.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_12:10:14", "killed": false, "user_key": "c44d50bb03e64e42be567930cf9f85f6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716065": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert, of all your cool insights and suggestions above, I most appreciate and understand your passion for developing relationships where the dialogue and brainstorming will help us find out how far we can go with social media. As a College of Business lecturer at San Francisco State, I, too, am thrilled to think that so many of my juniors and seniors will help sculpt future marketing and communication strategies, techniques, and tools. And I look forward to having them meet you and get a view of this \"revolution\" from the inside.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_12:46:58", "killed": false, "user_key": "0ac7a321004640d6d4b72b22d485add8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716066": {"up_voted": false, "ip": "", "has_replies": false, "message": "As a former journalist who now works in marketing (including public relations activities) for my company, I can see both sides.<br><br>I think you make a good point that building a relationship is part of good PR efforts. It's fairly foolish to expect someone who has a significant audience to write about you, simply because you want them to.<br><br>Simply pushing your pitch out (which is still likely to happen, honestly) without pointing out other things you might find interesting (i.e. other big pieces of news that might not've come around yet) is foolhardy and a bit high on the expectations side.<br><br>Bottom line though, is that PR does serve a purpose - and the reality is that the liaison role that many PR practitioners play can make the lives on either side of them (corporate and journalist) easier, if done right.<br><br>Follow me @G5SMarketing (see how I did that?)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_14:15:03", "killed": false, "user_key": "feac1d1f77631205309c5280ffec7c35", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716067": {"up_voted": false, "ip": "", "has_replies": false, "message": "Great post!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_16:05:11", "killed": false, "user_key": "fbefd146fe728956cfe92436281891dc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716068": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>As a current PR student, I understand exactly what you mean.  It seems to be common sense that if you put together a generic pitch and throw it out there for the world, then it should be ignored.  I definitely enjoy researching bloggers and journalists in order to find out the topics covered and whether or not a pitch would benefit from being<br><br>To me, the goal of a pitch has to be more than simply being newsworthy.  Not only should the client benefit from having the pitch reported, but the journalist or blogger should benefit from reporting on such an intriguing topic.  It has to be something pretty revolutionary, or else it just falls into the label of ordinary, and nobody wants to report on the ordinary.<br><br>It becomes the job of the PR people to realize when a client's story needs to be told and then figure out who it needs to be told to.  Research is a huge part of the profession and it's sad how often it is not utilized.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_16:23:31", "killed": false, "user_key": "6161a71f7776859a17cfe19c3e48d214", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716069": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"...His best pitches come when we\u2019re walking around Golden Gate park with our kids. Or, like when he launched his new company recently, when we\u2019re just sitting around his house (that\u2019s why I almost always am carrying a video camera).\"<br><br>Gee, Robert. That's great. So what you're saying here is that the best way to get your attention is to hang out with you in San Francisco?<br><br>Here's the deal:<br><br>1. I'm a PR guy, but it's doubtful I'd ever pitch something to you 'cause your interests don't mesh with my organization's.<br>2. I understand you get a pile of crap pitches. But you are, for better or worse, an 800-pound gorilla (no offense intended to you or to gorillas). Do you not think that this happens in many fields -- that Random House gets a million shitty books sent to it? That TV stations get shitty clip reels?<br>3. We can't all \"build magical experiences\" that result in \"magical media\" all the time. Some of what we do is just not that magical.<br>4. You're conflating \"PR\" with \"media relations\" or with \"media/blogger relations\". I work on internal communications, on web content development, and on a dozen other things on a daily basis.<br>5. Let's say, for example, that my employer, a college in Ontario, comes up with a super cool idea or application of technology that DOES seem like something Scoble-worthy. Are you honestly suggesting that the best thing for me to do would be to book a flight from Ottawa to San Fran and have dinner with you? Maybe I should bring along the students and faculty -- I'm sure the travel expenses wouldn't draw a second glance.<br>6. I think your vision of PR is limited and naive, and very tightly constrained to your particular circumstances.<br><br>Respectfully,<br>Bob LeDrew", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_17:03:47", "killed": false, "user_key": "ec155b6f79a69ef2f8c71511c4eac919", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716070": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert,<br><br>Thanks for clarifying your thoughts.  Keeping each journalist's individual preferences straight is not easy but it is the price of doing good PR.<br><br>You have been officially added to my cell phone.  ;-0<br><br>Serena", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_17:13:20", "killed": false, "user_key": "00ce891fcfd5b9e1d3fe8439f8347a19", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716071": {"up_voted": false, "ip": "", "has_replies": false, "message": "But his vision of EVERYTHING is limited and naive, and very tightly constrained to his particular circumstances. But he's not alone, almost a 80 mile radius around Frisco, bubbles ahoy.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_17:27:55", "killed": false, "user_key": "cab1041ab2de14f71e070c15f8ae968e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716072": {"up_voted": false, "ip": "", "has_replies": false, "message": "Bravo! You're saying what all of us are thinking. Congrats. I still want to know why you're green. ;)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_17:40:01", "killed": false, "user_key": "b8fb9628a2e2f210b212e60bc3bde269", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716073": {"up_voted": false, "ip": "", "has_replies": false, "message": "Thank you for this, Robert. On most issues, it seems we agree.<br><br>At the very beginning of your post, though, you suggest that the profession \"get rid of all the people who send me bad pitches.\" If you have a proposal for how the profession can do this, I'm all ears. There is no license required to practice PR. Anybody can hang out a shingle and accept clients, from the highly principled and ethical who strive to behave professionally to sleazebags with no training who are looking to make a fast buck.<br><br>The companies that employ the latter support the latter. And there is no shortage of clients to fuel their efforts.<br><br>The profession has been vocal in its opposition to PR spam. From the major associations (IABC, PRSA, CPRS, IPR, etc.) to individual voices (Todd Defren, Doug Haslam, Neville Hobson, myself) to industry leaders (Richard Edelman, Dave Senay), the message has focused on intelligent outreach, not mindless, clueless pitching. If you read my blog and listened to my podcast, you'd know that it's unfair to suggest that I don't look internally. It's in fact something of a litany on my part to make the case against PR spam.<br><br>At the end of the day, though, advocacy is the only tool available. The profession can't \"get rid\" of anybody.<br><br>This is exactly the same situation I faced in the mid-1970s when I was receiving exactly the same flood of brainless pitches in the form of press releases and pitches delivered by the Post Office. I could easily fill a large trash can in a single morning going through that mail.<br><br>As I noted in my post, it's the same in virtually other line of work, just more visible in the world of PR.<br><br>I can assure you that the associations, leaders, and others will continue to push for the adoption of the very best practices in reaching out to people like you. As I said, if you have an idea about how to \"get rid\" of those who just don't care, I'd love to hear it.<br><br>Finally, I don't believe I've ever sent you a crappy pitch, probably because I've never pitched you at all. If memory serves, I've never had a client whose story would have been of any interest to you.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_19:18:29", "killed": false, "user_key": "4e0efb71c4b4a60a57f27631afc37306", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716074": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>would have been of any interest to you.</i><br><br>Even if, wait 30 seconds. ;)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_20:35:08", "killed": false, "user_key": "cab1041ab2de14f71e070c15f8ae968e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716075": {"up_voted": false, "ip": "", "has_replies": false, "message": "Since Shel invoked my name (and I work with Todd Defren, whom he also mentioned), i might as well weigh in.<br><br>In my 10 years in PR-- after a decade on the journalism side- not a month has gone by without some reporter/editor/columnist/freelance writer/blogger/podcaster complaining about spam pitches. As Shel says, as much as we would like to stamp them out, the bad PR people keep coming up because someone is feeding them.<br><br>What I would ask of PR people is 2 things:<br><br>1) when someone pops off about PR spam, let them vent and don't get too worked up. If you're good, they're not talking about you, if you're a scumbag you won't care. Let the catharsis happen and we'll all hope that someone is drawn over to the good side by one rant or another.<br><br>2) Pay attention to the practical information. Throughout all this, Robert, you have told people how you preferred to be pitched. As far as getting our job done, that's the end of the story. Make good pitches, do them in the way the \"target\" (sorry) wants them, and build a relationship with same as a good source.<br><br>all readers and commenters: I think Robert knows his stature has made him a target for all sorts of pitches. He's entitled to bitch about the crappy ones-- I, for one, don;t take that as an attack on my industry. What I see is a common enemy. Unfortunately, there's a reason I liken them to cockroaches (and as someone above pointed out, it's not all the Sally smile-and-dials, but often their managers who are to blame).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_20:58:06", "killed": false, "user_key": "doughaslam", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "8 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}, "9716076": {"up_voted": false, "ip": "", "has_replies": false, "message": "As a spanking new blogger, would you ever consider publishing all the really bad pitches? Better yet,send them to me so I can put up an American idol style blog of really bad pitches. It might be fun to vote on the best of the worst retarded ideas. Thanks", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_21:39:16", "killed": false, "user_key": "ff6b269e468cf478e8d1607e23803f10", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716077": {"up_voted": false, "ip": "", "has_replies": false, "message": "Broad strokes for sure, but lessons to be learned in this post, in Shel's and in the comments on both posts.<br><br>Most importantly, don't screw up the relationship with a pitch.  A pitch is not worth screwing up any relationship.  The media that you have a long track record of delivering good story ideas to will be more forgiving if you miss the mark, but a crappy pitch to a reporter you don't have any relationship with is a sure fire way to short circuit any chance of one in the beginning.<br><br>As a manager, I stress this all the time.<br><br>It's unfortunate yes, clients come and go, but good and bad relationships with media will last your entire career in the business.  And now, everyone will know.<br><br>Mike Lizun<br><a href=\"http://www.twitter.com/mikelizun\" rel=\"nofollow\">http://www.twitter.com/mikelizun</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-07_21:45:29", "killed": false, "user_key": "mikelizun", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "8 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}, "9716078": {"up_voted": false, "ip": "", "has_replies": false, "message": "@Eugene, there's already a Bad Pitch Blog -- <a href=\"http://badpitch.blogspot.com/\" rel=\"nofollow\">http://badpitch.blogspot.com/</a> -- managed by a pair of PR professionals who, like so many others in the business, are trying to drive communicators away from these behaviors. Richard Laermer and Kevin Dugan have been inviting submission of bad pitches for display on the blog, and they'll \"out\" the sender if three of his or her pitches make it onto the blog. In addition to sharing bad pitches, Kevin and Richard use the blog as a platform for advocating good practices.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-08_05:42:43", "killed": false, "user_key": "4e0efb71c4b4a60a57f27631afc37306", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716079": {"up_voted": false, "ip": "", "has_replies": false, "message": "I found this article from Twitter, where quite a few of us comment (good and bad, mostly bad) about PR pitches. In fact, that's where I got another link to an entire blog dedicated to critiquing PR pitches. This girl Maisie, who is a mommyblogger (gets a lot of pitches) started PR Pass Fail blog <a href=\"http://prfail.blogspot.com/\" rel=\"nofollow\">http://prfail.blogspot.com/</a> and is deconstructing the good, the bad and the ugly.<br><br>The difference between this and Bad Pitch Blog that Shel Holtz mentioned is that instead of being run by PR people, it's the done by a person who is a representative of the people the PR people are trying to reach.<br><br>I confess I submitted a good pitch on her mail in offer.<br><br>I totally agree, defensive is not the way to go. Learning and improving is.<br><br>Great article.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-08_11:31:12", "killed": false, "user_key": "8a1df40dbd9d047d430e2af304b11d62", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716080": {"up_voted": false, "ip": "", "has_replies": false, "message": "Great post.  I think the main take away is news is in the eye of the beholder.  You cannot make a particular journalist cover your story if they do not believe it has intrinsic news value for their audience.  Spamming or harassing journalists is not the answer whether it is online or traditional news media outlets.  Study your target, if your news doesn't fit their style, beat or audience, move on.<br><br>By the way I took Mr. Scoble up on his advice and called him with a personal pitch about what Century 21 is doing in the social media space.  Will he call back? We'll see, but I took the time to learn his preferences and appeal to the subject matter he covers with what I believe is a legitimate story that his readership would find interesting.  It's not rocket science.  Study the sender - channel - message and receiver.<br><br>Love your post too Shel.  Great stuff.  I'm reading your book Tactical Transparency now and applying its lessons in my efforts.  John Havens gave me a copy this week.<br><br>Regards,<br><br>Matt Gentile, Director, PR<br>Century 21 Real Estate LLC", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-08_12:13:06", "killed": false, "user_key": "52cd044f295ac06cbf87794cf1bc1b72", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716081": {"up_voted": false, "ip": "", "has_replies": false, "message": "Robert (and Shel) --<br><br>As you may know, there are many PR pros who empathize with Scoble and all journalists frustrated and angered by the amount of misguided PR pitches that flood their \"in boxes.\"<br><br>The issue stems from the way in which PR people typically go about the task of identifying journalists to pitch.  For the most part, they use a media database company to find the title or beats that seem to make sense.  With that list in hand, those (hopefully) appropriate journalists end up on the receiving end of some blast e-mail, masked as if the recipient is the only one getting it.<br><br>This common (and bad) practice has to change in order for PR people to regain their value in the reporting process.<br><br>Last night, at the New York Tech Meet-up DEMO (#NYTM) event, I had the chance to demo a new search application that tackles this problem with an entirely different approach.<br><br>Instead of job titles, MatchPoint (<a href=\"http://www.prmatchpoint.com\" rel=\"nofollow\">www.prmatchpoint.com</a>) matches the journalist's cumulative BODY OF WORK with the PR person's search query (i.e., news release, pitch letter, keywords).  Using a database of 200K+ journalists and 4.5 million articles, the search results are a ranked listing of those journalists who are most editorially relevant to the pitch.<br><br>While MatchPoint will never replace lazy PR people, we believe it's a step in the right direction toward eliminating PR SPAM.<br><br>Peter HImler<br>Principal, Flatiron Communications LLC<br><a href=\"http://www.flatironcomm.com\" rel=\"nofollow\">www.flatironcomm.com</a><br><a href=\"http://theflack.blogspot.com\" rel=\"nofollow\">http://theflack.blogspot.com</a><br><a href=\"http://www.prmatchpoint.com\" rel=\"nofollow\">www.prmatchpoint.com</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-08_14:09:37", "killed": false, "user_key": "334de1b216baa39488ad57bf72322cc9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716082": {"up_voted": false, "ip": "", "has_replies": false, "message": "Does anyone ever write any \"10 awesome pitches I've received lately\" posts?<br><br>For every 1,000 crappy pitches there are an equal amount of blogs complaining about getting crappy pitches.<br><br>Switch it up some time! Fresh positive angle maybe?<br><br>Just a thought.<br><br>Matt. PR PERSON + JOURNALIST", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-08_18:05:31", "killed": false, "user_key": "9a7ae3f4057eff136ec0b929246a5710", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716083": {"up_voted": false, "ip": "", "has_replies": false, "message": "I was planning to take you to the wood shed over your PR People Suck mantra because, well, I don't like to see my profession painted over with a bad shade of black.<br><br>In defense of the profession there are quite a few of us who do understand that blanket pitches and frankly bad grammar tend to make us all look bad. And quite a few of us don't use bad practices.<br><br>That being said, I fully agree with a couple of points that you clearly make in this post (a refreshing articulation in comparison to the previous flamestorm). Much of my success in placing stories or promoting a cause has been because I have taken the time to listen, understand and build a relationship.<br><br>First off, no one wants to be the guy who has to make a living cold-calling people to pitch them a story. And secondly, we all know that it is counterproductive.  Clients love to see that you've talked to everyone in the world and statistics that show you blasted out a message to thousands. PR needs to demonstrate that talking to 10 people versus 10,000 often provides better results.<br><br>So we have a problem in showing results.  Coupled with the inexperience of many junior execs who are struggling to show results and you have a lot of crap being sent to Robert Scoble.<br><br>Focused research, taking the time to build a relationship and using tools that strengthen that relationship always trumps the shotgun blast.<br><br>Now, you could improve everyone's lot in life if you took the time to share what you're planning on doing next. Not an editorial calendar per se, but a forecast of things on your horizon. Help these young crap stirrers to send peaches your way instead of prunes. Point us to your crystal ball and help us build a relationship.<br><br>Tools like HARO, ProfNet, MatchPoint, MicroPR, et. al., open the doors and allow some insight. They also allow for the building of relationships. These are tools we all should be embracing in our efforrts to improve how PR works and how PR pitches are received by other communicators.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-09_17:41:07", "killed": false, "user_key": "ca6094b709b5017433c6c14fe3429b9c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716084": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>whose story would have been of any interest to you.</i><br><br>Scoble rants notwithstanding, but that's the high art of such, making people normally not interested, interested...finding some common linked tie-in. Anyone can target people already prior interested, and it seems anyone and everyone does. If I am covering a TV/Film beat, find a way to pitch me Enterprise software, by saying so and so TV Show is using it to do such and such. Then suddenly I care. See?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-09_19:16:52", "killed": false, "user_key": "7f6291e8344b594235e57b843fc05d9b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716085": {"up_voted": false, "ip": "", "has_replies": false, "message": "As someone who's been a practioner since what seems like the beginning of time I still see/hear horrible approaches and pitches.  It's rampant and it comes from all angles: the client, senior people, and junior people.  As recently as five years ago I had a client who came from a worldwide firm ask to see a copy of my \"pitch script.'  I didn't even know what that was.<br><br>And while I'm on my soapbox, don't we all hate the term \"pitch?\"  Are we telemarketers?  I think that's the mentality of the \"smile and dialers.\"<br><br>And while I agree with some of the comments, it's no longer about \"relationship building\" which will lead to coverage.  Clients want results and that's all there is to it.  There's no patience anymore when companies are running out of money, budgets are being cut to the bone, and startups think that PR will save them. Everyone is demanding metrics regardless of whether it's old-fashioned, mainstream media relations, analyst relations or social media.<br><br>Think about it, when times are tough what are the first areas within a company that is cut?  Marketing and PR.<br><br>So wise up people, this recession is going to be with us for quite awhile.  If you want to keep your job then learn how to do your job.  Use the tools, use everything in your arsenal to do your job well, but most of all exercise common sense.  And please, think about PR as a strategic way to build the client's business, brand and reputation and not how many \"hits\" you can get.<br><br>Have I ever pitched Robert in the three or four years that I've known him?  No.  Why not?  Because none of my clients have fit into  the area he's interested in hearing about.  We see each at conferences, and even sat on a rather goofy panel together once.  We have a very nice relationship but I'm not going to pester the poor man.<br><br>Finally, I totally agree with the person who said that good and bad clients come and go, but relationships with media (and bloggers) seem to outlast them all.  Why screw those up?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_00:19:58", "killed": false, "user_key": "c77fe78f063c855189191dc84bb9cc7f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716086": {"up_voted": false, "ip": "", "has_replies": false, "message": "<i>none of my clients have fit into the area he\u2019s interested in hearing about. </i><br><br>See above. So? Find common ground. Amazing how many PR types just play simple matching games. Although \"pitching\" Scoble, is a bad idea on so many other levels (the curse being chief) but the principle of the matter...making the uninterested interested.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_07:05:22", "killed": false, "user_key": "7f6291e8344b594235e57b843fc05d9b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716087": {"up_voted": false, "ip": "", "has_replies": false, "message": "What's with the FC ad's ??? They suck BIG TIME.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_17:36:10", "killed": false, "user_key": "6d12db363f93b00686e9cbbbdf304a87", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716088": {"up_voted": false, "ip": "", "has_replies": false, "message": "Scoble,<br>Your bitching about the number of bad pitches your get is like the narcissistic movie actor, producer, or director bitching about the number of bad treatments that come across their desks every day. There will come a day (and don't think there won't) when you will be where Mickey Rourke was for so long: just hoping someone remembers you as (for some odd reason) an 'a-list' blogger and gives you a pitch that will once again make you relevant.  So, humble yourself, be thankful (again, for some odd reason) so many PR firms find you relevant enough to be pitched, and resist the urge to bite the hand that could one day end up being the only one that feeds you.<br><br>For every blogger like you that thinks they are now too good to be pitched, except on your terms, there are thousands that only wish they had your \"problem\".  So, reign in the ego and be thankful you even show up on someone's radar.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_20:05:47", "killed": false, "user_key": "1cde6023a0e966cc6ab1d49ee81d8670", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716089": {"up_voted": false, "ip": "", "has_replies": false, "message": "Christopher, I hear what you're saying, but my client's audience is extrmely targeted so the number of people we are trying to reach is very limited because of the market.  The software is embedded so deeply at the chip level that very other than at the chip level would care, and even the market that's supposedly techie enough to understand doesn't always get it.<br><br>In other words, it's a different battle, and not a lack of imagination or laziness on anyone's part.  We're just taking a different approach.<br><br>That said, I may have something that Robert would be interested in from a humanitarian point-of-view in thh near future, just because he's a nice guy and likes this type of stuff (as we should be I hope). However, its communication delivery mechanism is certainly not what any of us would be considered ground-breaking technology by any stretch.<br><br>Thanks for your input,<br>Pam", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_20:23:47", "killed": false, "user_key": "c77fe78f063c855189191dc84bb9cc7f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716090": {"up_voted": false, "ip": "", "has_replies": false, "message": "Geez Shane, I hope you're not literally comparing Robert to Mickey Rourke.  I assume you're not.  You're right in that every individual (and company) goes through ups and downs, but I think you're being a wee bit harsh.<br><br>Based on my experience with Robert, he's truly a nice man.  He may get a little riled from time-to-time, but it's not all about him.  He is, however, a geek who found a great way to take his geekiness and technology evangelist role at Microsoft and move it beyond that traditional role.  He and others started a real movement, but he doesn't claim it all to be his own idea.<br><br>Lookit, I don't know Robert all that well but he doesn't try to be more than he really is.  For example, if he ever makes the cover of GQ or Men's Vogue it won't be because of his fashion sense, but that's not why we read his blog now is it? :)<br><br>And just to show I don't always agree with him, he and I (and others) got into a bit at the FORTUNE Tech Brainstorm conference last summer.  The topic was about how bloggers who work in a solo environment (such as Robert) don't have a check and balance system.  If they write or say something that's flat out wrong or could be construed incorrectly, there's no editor to correct the situation, or no ombudsman to complain to.  In other words, Pandora is already out of the box and the problem is out there.<br><br>After a series of discussions, he reconsidered his position on the topic.  Someone who has a huge ego wouldn't even address such a touchy topic.  Anyway, I'm sure you get my point.<br><br>Thanks for listening,<br>Pam", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-10_20:37:52", "killed": false, "user_key": "c77fe78f063c855189191dc84bb9cc7f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 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}, "9716091": {"up_voted": false, "ip": "", "has_replies": false, "message": "I loved this, as a blogger and a sometime PR person. It does make me wonder though, if the twitpic I sent as a parent/consumer in response to your stroller query was well received.<br><br>Hope the pregnancy is going well.<br><br>Cheers.<br>Amanda<br>Twitter Handles- @designtramp and @amandamagee", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2009-04-21_10:44:58", "killed": false, "user_key": "d3d69f4ddce68f5d2823f63304be72f8", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "7 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}}, "integration": {"receiver_url": "", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "18354632", "user_id": "anonymous", "forum_id": "125200", "hash": 4191072291575227289}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "a_private_note_to_pr_people", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 18354632, "num_posts": 50, "closed": true, "queued": false, "killed": false}, "reactions_limit": 10, "context": {"show_reply": false, "use_fb_connect": true, "forum_facebook_key": "faaf467d0f47abde553c3b8e0e1b3570", "use_yahoo": false, "subscribed": false, "use_twitter_signin": true, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

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



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

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

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

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

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

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

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

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

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





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



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

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

	this._lastHash = null;

	this._accumMsg = '';

	this._lastSeqno = 0;

	this.MAX_DATA_LEN	= 1024;

	this.WAIT_TIME		= 10;

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

};

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

FragmentPacket.prototype.log = function(msg) {



};

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

		hash = this.reader.name;
	} else {

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

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

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

		this._lastSeqno = seqno;

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

				this._accumMsg = '';

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

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

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

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

};

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

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

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

	if (packetNum === 0) {

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

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

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

	if (num_packets === packetNum) {

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

	this._lastSeqno++;

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

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

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

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

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

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


	this.receiverId = receiverId;
};

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

	var listener = function(e) {

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


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

		that.receiveCallback(data);
	};

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

PostMessagePacket.prototype.send = function(msg) {



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


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

	var packet;
	if (!msg) {

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

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

var JsonRpc = function() {

	this.ids = {};

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

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

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

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

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

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

				json = 'null';
				break;
		}

		return json;
	};

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

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

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

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

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

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

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

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

		send_func(this.objectToJSON(request));

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

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


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



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


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


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

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

	this.packetHandler = null;


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


	var _createReceiverForFragmentPacket = function() {

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

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

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

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

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

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

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

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

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

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

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

			that._ready = true;
		};

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

		that.receiver.onload = receiver_onload;







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

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

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

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


	var _createReceiverForPostMessage = function() {

		var receiver_onload = function() {

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

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


		ParentMessenger['_receiver_onload_' + receiverId] = receiver_onload;

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

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

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

};

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

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

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

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

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

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

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

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

	var sendFunc = function(msg) {

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


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


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

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

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

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

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

		if (msg.username) {

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	var handleSessionData = function(session) {

		var forum_url = Dsq.jsonData.forum.url;




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

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

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


	






Dsq.Themes = {};

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



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

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

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

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

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

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

		
		

		return html;

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

		html += Dsq.Templates.pagination();

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

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		


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

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

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

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

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

		return html;
	};

	this.postBox = function(post_id, use_fallback_iframe) {


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

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


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

		var _requestUserInfo = function() {
			var html;



			var user_has_email = false;

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

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

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


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



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

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




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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



	
	this.chooseSubscribe = function(post_id) {

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

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

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

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

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

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

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

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

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

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

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

		d = auth_data;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

				body.appendChild(edit_area);

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

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

		Dsq.Templates.toggleEdit(post_id);
	};

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

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

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

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

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

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

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

		}

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

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

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

		var extra_params = '';

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

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


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

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

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

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




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

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

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

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

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

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

		Dsq.Templates.setLoadingButton(false);
	};

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

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




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

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

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

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

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

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


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


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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

		return [windowWidth, windowHeight];
	}

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

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

		return [scrollWidth, scrollTop];
	}

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

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

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

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

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

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

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

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

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

				form.appendChild(input);
			}
		}

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

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

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

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

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

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

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

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

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

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

		return params;
	};

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

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

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

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

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

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

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

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

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

	};

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

};
// Dsq.Utils

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		Dsq.Popup._closePopup(null, true);

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

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

		header = title;
		body = message;

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

	this.popAlert = this.popModal;

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

		popup.style.display = 'block';

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

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

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

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

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

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

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

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

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

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

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

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

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

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

			return ret;
		};
	};

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

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

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

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


			//

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

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

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

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

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

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

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

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


	this.header = function() {

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

		

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

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

		
			html += Dsq.Templates.authPost();
		

		html += Dsq.Templates.reactions();

		
			html += Dsq.Templates.trackbacks();
		

		return html;
	};

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

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

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

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

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

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

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

		return html;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Post
	//

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Iframes
	//

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

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

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

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

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

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

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

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

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

	//
	// Menus
	//

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

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

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

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

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

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


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

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

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

	//
	// Popups
	//

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

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

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

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

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

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

		return this._popupGeneric(content);
	};

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

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

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

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

		return this._popupGeneric(content);
	};

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

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

		bodyHtml = message;

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

		return this._popupGeneric(content);
	};

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

	//
	// Actions
	//

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

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

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

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

		Dsq.Popup.popModal(message, title);

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

	//
	// Media
	//

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

	//
	// Callbacks
	//

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

		if(!openedMenu) {
			return;
		}

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

};
// Dsq.Post


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

	
	this.adminIsOn = false;

	
	
	

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}();

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

		if (isblank(openid_url)) {
			return;
		}

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

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

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

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

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

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

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

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

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

	return obj;
}();


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





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

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

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

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

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

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





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

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

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

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-9716047">\
	 <div id="dsq-comment-header-9716047" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716047" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716047" href="http://www.darrenbarefoot.com" target="_blank" rel="nofollow">dbarefoot</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716047" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716047" class="dsq-comment-message">The execution isn\'t great, but I actually like \'Help a Reporter Out\': <a href="http://www.helpareporter.com/" rel="nofollow">http://www.helpareporter.com/</a>. It seems like an effective needs-based model, where journalists/bloggers/authors et al submit requests about stories they\'re working on, and PR people send (theoretically) appropriate pitches.<br><br>I\'ve been on both sides of this tool, and it\'s worked out pretty well. As an author, I got some crappy pitches, but at least they were filtered through the lens of my specific needs.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716048">\
	 <div id="dsq-comment-header-9716048" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716048" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716048" href="http://cheyennecommunications.webs.com/" target="_blank" rel="nofollow">Mary Ann Buggs</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716048" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716048" class="dsq-comment-message">Good, honest and to the point. Things I\'ve said and experienced for years, from the \'inside\' -- I suspect all we can do is post calm, patient missives like this and keep doing our jobs the right way. Keep up the good work, man.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716049">\
	 <div id="dsq-comment-header-9716049" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716049" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716049" href="http://DigitalArtPrintGallery.com/" target="_blank" rel="nofollow">Mike Darnell</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716049" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716049" class="dsq-comment-message">Hi Robert,<br><br>I\'ve been a naughty boy.<br>You see I\'m not a PR person but I read this post anyway.<br><br>I apologize, but it was worth it.<br><br>I dunno why, but this post kinda reminds me of the lessons folded in to the folk-tale about the boy who cried "Wolf!"...<br><br>: )<br>Cheers,<br>Mike<br>"I tweet @pop_art &amp; @headup"</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716046">\
	 <div id="dsq-comment-header-9716046" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716046" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716046" href="http://www.leapfish.com/" target="_blank" rel="nofollow">Mark</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716046" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716046" class="dsq-comment-message">I found this story on the path from Twitter to Friendfeed to your blog.<br><br>Yes we have pitched you Robert - but it has always been by phone and never through a PR person (that I know of :)<br><br>But I can see where you are coming from because I get pitched and I know how it feels. When you are a visible company that creates companies and people see you cranking along in this economy they call with ideas and their own pitches.<br><br>About 5% of the pitches I get are worth listening to. There is a good book by Paul Gillin - Secrets of Social Media and it has section on how to build the relationship with bloggers &amp; others. I highly recommend that book  even though no one should have to tell you how to build a relationship- I thought we learned that in kindergarten.<br><br>I think it is more the fact that people call or email pitches when it\'s convenient for them. When the story hits or your information gets published you don\'t hear from them until the next time they want something else.<br><br>I have been following you since your Facebook days of lore and have always wondered about the great Scobelizer and then reached out when we had something to say that had a good level of success already.<br><br>Not saying everyone is perfect but my take is don\'t just pitch an idea. The person pitching should be developing the idea and have some success or at least be on the path to success before they pitch.<br><br>But I will say this it is hard to get close to some of the top bloggers &amp; industry pro\'s sometimes. Yes, you are different, you have your phone number on your site AND you answer it.  But most don\'t unfortunately (or fortunately).<br><br>Bottom line have a working model, build the relationship and then talk to the person (forget the pitch).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716050">\
	 <div id="dsq-comment-header-9716050" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716050" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716050" href="http://www.louisgray.com/live/" target="_blank" rel="nofollow">Louis Gray</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716050" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716050" class="dsq-comment-message">Josh Dilworth and Adam Singer are two of the best PR people who get blogging. When I get an e-mail from Josh, there\'s a very good chance I\'ll cover that company, because he knows what I care about. And he answers e-mail past midnight, which shows he is as nuts as the rest of us.<br><br>Stage Two Consulting (Jeremy Toeman)\'s clients aren\'t always the ones I am interested in either, but they always are careful... "Louis, I know you don\'t usually cover... but...", etc. so they have my respect.<br><br>PR in today\'s world is hard because many still don\'t get new media. They aren\'t participating, or if they are, it\'s tentative. The few that get it right are memorable.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716051">\
	 <div id="dsq-comment-header-9716051" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716051" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716051" href="http://thelostjacket.com/" target="_blank" rel="nofollow">Stuart Foster</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716051" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716051" class="dsq-comment-message">Loved this article. I am a PR person, but I come from a blogging/social bookmarking background and have a great journalist friend, Daniel Honigman who has regulated a lot of any stupidity I have thought of in terms of pitching/approaches.<br><br>If I don\'t think you would be interested in something as a blogger, editor, or my friend: I won\'t bother you with it. Seems obvious right? Sadly, I get bad 1 sentence pitches on my blog about PR/Marketing/Social Media. If that isn\'t irony, I don\'t know what is. Really hoping this changes a lot of people\'s approaches.<br><br>(I wrote the # down, but probably won\'t have something interesting for you for a while and certainly not before I make an effort to meet you and make a connection.)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716052">\
	 <div id="dsq-comment-header-9716052" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716052" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716052" href="http://conversationpublicrelations.com/" target="_blank" rel="nofollow">Ian</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716052" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716052" class="dsq-comment-message">I\'ve never been a journalist. I sympathize with the journalist that gets a thousand crappy pitches a day. But as a PR student, I also understand the, "You\'ll cover us eventually" sentiment. If a story is good, it will get out, and it might as well be you, xyz journalist, that gets it.<br><br>There is a hierarchical structure to journalists that we must take into account. Once one gets as big as Scoble, they can pick and choose the pitches they like. When you are a starving journalist, I\'d imagine you\'re more likely to be open to pitches, even crappy ones.<br><br>Bad pitches are here to stay. Hopefully, the new media will end the careers of some of the worst offenders.<br><br>But in the end, I have to laugh at angry journalists\' "I hate PR" diatribes, because after almost every rant, I see an apology.<br><br>Flacks + hacks = bff!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716053">\
	 <div id="dsq-comment-header-9716053" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716053" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716053">PD</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716053" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716053" class="dsq-comment-message">While I agree that the majority of pitches are off target, it\'s not always the junior PR person who is to blame. There are too many senior-level PR folks who ask junior staffers to create media lists for their clients...media lists that end up with 100s, even 1,000s of reporters. These senior PR folks do not review the list, they just write the pitch and tell the staff to email away. They feel they are doing their client a service by reaching out to as many journalists as possible, hoping that one or two will like the pitch. Kind of like throwing spaghetti against the wall...doesn\'t work.<br><br>That is how I was taught, but that is not how I practice.<br><br>Now at a more senior level myself, I dig through all media lists my staff creates for me. After filtering out the poorly selected targets, I draft bullet points for the pitch. I ask my junior staff and interns to read the past few articles written by the journalist and create their own personal and targeted pitch. This takes more time, but it gets results and builds relationships. Isn\'t relationship building what it\'s all about?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716054">\
	 <div id="dsq-comment-header-9716054" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716054" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716054" href="http://www.technovia.co.uk/" target="_blank" rel="nofollow">Ian Betteridge</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716054" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716054" class="dsq-comment-message">Robert, couldn\'t agree more. The best thing any PR person can do is build a relationship with a blogger/reporter rather than cold-pitching. PR is a lot like sales, in that respect - cold calling the most intrusive and least effective way to do it.<br><br>And the relationship doesn\'t have to be face to face (although if it is, all the better). A great case in point back from when I was doing proper news journalism is Steve Rubel. Steve had commented on my blog, emailed me an introduction telling me who he was and what he covered, and generally tried to engage with me, my beat, and my interests.<br><br>So when he finally had something to pitch, I was more than ready to listen - I knew Steve well enough to know that he wasn\'t going to be wasting my time. And, just as important, he knew *me* well enough to know that talking to me wasn\'t wasting his client\'s time, either.<br><br>In fact, I think it would be a great follow-up to this post to list more people like Steve - PR people who are doing things the right way, and doing not only their clients a service, but the whole PR/press/media industry.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716055">\
	 <div id="dsq-comment-header-9716055" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716055" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716055" href="http://magmawave.com/" target="_blank" rel="nofollow">daniel</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716055" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716055" class="dsq-comment-message">Hi Robert<br>Damn, I was going to send you some information in Italian.<br><br>Ciao Bello<br>D</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716057">\
	 <div id="dsq-comment-header-9716057" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716057" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716057">Megan</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716057" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716057" class="dsq-comment-message">I\'m a PR person, and generally find the hating on my profession tiresome and insulting--while there are definitely some practitioners who give the whole industry a bad name, there are many of us who respect bloggers and journalists, immerse ourselves in our clients\' industries and really try to come up with compelling, valuable, tailored ideas rather than spam/garbage.<br><br>However, I found this post constructive and insightful.  I\'ve never pitched you, Robert, because I\'ve never had a client that would knock your socks off.  When I do, I\'ll be sure to call and make it an exchange of (hopefully interesting) information rather than just a one-way pitch.  In the meantime, I\'m all over your blog and tweets, not because I want something from you, but because they\'re interesting and relevant.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716058">\
	 <div id="dsq-comment-header-9716058" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716058" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716058">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716058" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716058" class="dsq-comment-message">You really expect an entire industry to keep up with your ever-changing attention span? But never mind all that, just be your own investigator, PR is for spoon-fed blogger rewriters, whole networks of that.<br><br>Actually the wise PR person wouldn\'t even pitch you at all, being "fanatical" about keeping you out of the loop, being that your track record is the picture-perfect Reverse Midas Touch.<br><br>How\'s Gillbore\'s Citizen Journalism working? Oh right, crash and burn.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716059">\
	 <div id="dsq-comment-header-9716059" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716059" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716059" href="http://now-web.blogspot.com/" target="_blank" rel="nofollow">Tweet Feeds</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716059" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716059" class="dsq-comment-message">"PR Types" and most journalists don\'t get it, and probably won\'t get it anytime soon. the PR  fakeness and pushyness culture was only working because people did not have access to information, so it was easy to mislead them,  executive leaders are already talking directly to customers via twitter, I don\'t even read press releases any more because they are not useful for anything other than making some PR person justify their existence</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716060">\
	 <div id="dsq-comment-header-9716060" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716060" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716060" href="http://www.gog.com/" target="_blank" rel="nofollow">Tom Ohle</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716060" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716060" class="dsq-comment-message">Good points here... from the PR perspective, I think the biggest issue is the daunting task of actually maintaining your relationships without feeling like you\'re just kicking around to eventually get a story.<br><br>I do my best to stay in touch with trade media, which in our industry (video games) is a massive number of people. Add on consumer media and bloggers, and I could probably spend my whole day building those relationships. So then it comes down to the occasional email or call, which I can only assume come across as desperate attempts at maintaining a relationship in hopes of landing a story when the time comes.<br><br>As I\'m fairly removed from industry hotspots (being in Canada and all) I also don\'t have the benefit of being able to meet face-to-face with writers on a regular basis. And then when I do get to meet with them or talk to them on the phone or even exchange emails, it\'s like "who are you again?" and that discussion itself can become a bit challenging. I can only rely on my charm to take me so far... and I find that journalists can often seem a bit icy when being pitched, even if I\'ve tried to uphold a cordial relationship.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716061">\
	 <div id="dsq-comment-header-9716061" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716061" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716061" href="http://thefuturebuzz.com/" target="_blank" rel="nofollow">Adam Singer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716061" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716061" class="dsq-comment-message">@Louis - wow, that is quite the endorsement - really appreciate that!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716062">\
	 <div id="dsq-comment-header-9716062" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716062" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716062">partywedo</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716062" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716062" class="dsq-comment-message">Thank you for the quick, yet direct education.<br><br>I will give you a call sometime, when I have something important to share.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716063">\
	 <div id="dsq-comment-header-9716063" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716063" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716063">peeta</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716063" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716063" class="dsq-comment-message">Robert,<br><br>Don\'t you feel that PR is largely responsible for convincing brands that you have influence and haven\'t you benefited tremendously from this?  As a PR person, I understand the why bad practitioners can taint a whole segment of the marketing community but I see a pretty clear benefit that seems to justify a few bloggers spending a few minutes each day cleaning out their inbox.  If you look at the position PR people are in, we\'re often pushing our clients to become better communicators, which, in the long run, will alleviate some of this burden on the journalist side.  A lot of the news you get and probably enjoy is a direct result of PR people pushing for it to be released.  There is good marketing and bad marketing across the board but I think the benefit of PR is fairly clear when you get past some basic annoyances.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716064">\
	 <div id="dsq-comment-header-9716064" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716064" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716064" href="http://ca.myphotoscout.com/" target="_blank" rel="nofollow">myphotoscout</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716064" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716064" class="dsq-comment-message">Interesting aspect of journalism. This warrants a bit more research on how to get the word out about a new service/product/whatever.<br>Sometimes I wonder why people are not too lazy to send hundreds of badly written pitches that are certain to get no attention at all when they could spend the same effort to write something really noteworthy and pitch it to only 20 people of which a much higher number would respond in  a positive manner.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716065">\
	 <div id="dsq-comment-header-9716065" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716065" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716065" href="http://online.sfsu.edu/~sharisax" target="_blank" rel="nofollow">Shari Weiss</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716065" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716065" class="dsq-comment-message">Robert, of all your cool insights and suggestions above, I most appreciate and understand your passion for developing relationships where the dialogue and brainstorming will help us find out how far we can go with social media. As a College of Business lecturer at San Francisco State, I, too, am thrilled to think that so many of my juniors and seniors will help sculpt future marketing and communication strategies, techniques, and tools. And I look forward to having them meet you and get a view of this "revolution" from the inside.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716066">\
	 <div id="dsq-comment-header-9716066" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716066" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716066" href="http://www.G5searchmarketing.com/blog" target="_blank" rel="nofollow">Devin Davis</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716066" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716066" class="dsq-comment-message">As a former journalist who now works in marketing (including public relations activities) for my company, I can see both sides.<br><br>I think you make a good point that building a relationship is part of good PR efforts. It\'s fairly foolish to expect someone who has a significant audience to write about you, simply because you want them to.<br><br>Simply pushing your pitch out (which is still likely to happen, honestly) without pointing out other things you might find interesting (i.e. other big pieces of news that might not\'ve come around yet) is foolhardy and a bit high on the expectations side.<br><br>Bottom line though, is that PR does serve a purpose - and the reality is that the liaison role that many PR practitioners play can make the lives on either side of them (corporate and journalist) easier, if done right.<br><br>Follow me @G5SMarketing (see how I did that?)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716067">\
	 <div id="dsq-comment-header-9716067" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716067" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716067" href="http://www.fetdigitaal.nl/" target="_blank" rel="nofollow">Mark (fetdigitaal.nl)</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716067" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716067" class="dsq-comment-message">Great post!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716068">\
	 <div id="dsq-comment-header-9716068" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716068" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716068">Rich Pulvino</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716068" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716068" class="dsq-comment-message">Robert,<br><br>As a current PR student, I understand exactly what you mean.  It seems to be common sense that if you put together a generic pitch and throw it out there for the world, then it should be ignored.  I definitely enjoy researching bloggers and journalists in order to find out the topics covered and whether or not a pitch would benefit from being<br><br>To me, the goal of a pitch has to be more than simply being newsworthy.  Not only should the client benefit from having the pitch reported, but the journalist or blogger should benefit from reporting on such an intriguing topic.  It has to be something pretty revolutionary, or else it just falls into the label of ordinary, and nobody wants to report on the ordinary.<br><br>It becomes the job of the PR people to realize when a client\'s story needs to be told and then figure out who it needs to be told to.  Research is a huge part of the profession and it\'s sad how often it is not utilized.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716069">\
	 <div id="dsq-comment-header-9716069" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716069" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716069" href="http://www.flacklife.com/" target="_blank" rel="nofollow">Bob LeDrew</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716069" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716069" class="dsq-comment-message">"...His best pitches come when we’re walking around Golden Gate park with our kids. Or, like when he launched his new company recently, when we’re just sitting around his house (that’s why I almost always am carrying a video camera)."<br><br>Gee, Robert. That\'s great. So what you\'re saying here is that the best way to get your attention is to hang out with you in San Francisco?<br><br>Here\'s the deal:<br><br>1. I\'m a PR guy, but it\'s doubtful I\'d ever pitch something to you \'cause your interests don\'t mesh with my organization\'s.<br>2. I understand you get a pile of crap pitches. But you are, for better or worse, an 800-pound gorilla (no offense intended to you or to gorillas). Do you not think that this happens in many fields -- that Random House gets a million shitty books sent to it? That TV stations get shitty clip reels?<br>3. We can\'t all "build magical experiences" that result in "magical media" all the time. Some of what we do is just not that magical.<br>4. You\'re conflating "PR" with "media relations" or with "media/blogger relations". I work on internal communications, on web content development, and on a dozen other things on a daily basis.<br>5. Let\'s say, for example, that my employer, a college in Ontario, comes up with a super cool idea or application of technology that DOES seem like something Scoble-worthy. Are you honestly suggesting that the best thing for me to do would be to book a flight from Ottawa to San Fran and have dinner with you? Maybe I should bring along the students and faculty -- I\'m sure the travel expenses wouldn\'t draw a second glance.<br>6. I think your vision of PR is limited and naive, and very tightly constrained to your particular circumstances.<br><br>Respectfully,<br>Bob LeDrew</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716070">\
	 <div id="dsq-comment-header-9716070" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716070" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716070">reinsider</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716070" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716070" class="dsq-comment-message">Robert,<br><br>Thanks for clarifying your thoughts.  Keeping each journalist\'s individual preferences straight is not easy but it is the price of doing good PR.<br><br>You have been officially added to my cell phone.  ;-0<br><br>Serena</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716071">\
	 <div id="dsq-comment-header-9716071" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716071" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716071">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716071" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716071" class="dsq-comment-message">But his vision of EVERYTHING is limited and naive, and very tightly constrained to his particular circumstances. But he\'s not alone, almost a 80 mile radius around Frisco, bubbles ahoy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716072">\
	 <div id="dsq-comment-header-9716072" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716072" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716072">Colleen Coplick</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716072" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716072" class="dsq-comment-message">Bravo! You\'re saying what all of us are thinking. Congrats. I still want to know why you\'re green. ;)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716073">\
	 <div id="dsq-comment-header-9716073" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716073" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716073" href="http://blog.holtz.com/" target="_blank" rel="nofollow">Shel Holtz</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716073" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716073" class="dsq-comment-message">Thank you for this, Robert. On most issues, it seems we agree.<br><br>At the very beginning of your post, though, you suggest that the profession "get rid of all the people who send me bad pitches." If you have a proposal for how the profession can do this, I\'m all ears. There is no license required to practice PR. Anybody can hang out a shingle and accept clients, from the highly principled and ethical who strive to behave professionally to sleazebags with no training who are looking to make a fast buck.<br><br>The companies that employ the latter support the latter. And there is no shortage of clients to fuel their efforts.<br><br>The profession has been vocal in its opposition to PR spam. From the major associations (IABC, PRSA, CPRS, IPR, etc.) to individual voices (Todd Defren, Doug Haslam, Neville Hobson, myself) to industry leaders (Richard Edelman, Dave Senay), the message has focused on intelligent outreach, not mindless, clueless pitching. If you read my blog and listened to my podcast, you\'d know that it\'s unfair to suggest that I don\'t look internally. It\'s in fact something of a litany on my part to make the case against PR spam.<br><br>At the end of the day, though, advocacy is the only tool available. The profession can\'t "get rid" of anybody.<br><br>This is exactly the same situation I faced in the mid-1970s when I was receiving exactly the same flood of brainless pitches in the form of press releases and pitches delivered by the Post Office. I could easily fill a large trash can in a single morning going through that mail.<br><br>As I noted in my post, it\'s the same in virtually other line of work, just more visible in the world of PR.<br><br>I can assure you that the associations, leaders, and others will continue to push for the adoption of the very best practices in reaching out to people like you. As I said, if you have an idea about how to "get rid" of those who just don\'t care, I\'d love to hear it.<br><br>Finally, I don\'t believe I\'ve ever sent you a crappy pitch, probably because I\'ve never pitched you at all. If memory serves, I\'ve never had a client whose story would have been of any interest to you.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716074">\
	 <div id="dsq-comment-header-9716074" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716074" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716074">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716074" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716074" class="dsq-comment-message"><i>would have been of any interest to you.</i><br><br>Even if, wait 30 seconds. ;)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716075">\
	 <div id="dsq-comment-header-9716075" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716075" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716075" href="http://doughaslam.com" target="_blank" rel="nofollow">doughaslam</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716075" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716075" class="dsq-comment-message">Since Shel invoked my name (and I work with Todd Defren, whom he also mentioned), i might as well weigh in.<br><br>In my 10 years in PR-- after a decade on the journalism side- not a month has gone by without some reporter/editor/columnist/freelance writer/blogger/podcaster complaining about spam pitches. As Shel says, as much as we would like to stamp them out, the bad PR people keep coming up because someone is feeding them.<br><br>What I would ask of PR people is 2 things:<br><br>1) when someone pops off about PR spam, let them vent and don\'t get too worked up. If you\'re good, they\'re not talking about you, if you\'re a scumbag you won\'t care. Let the catharsis happen and we\'ll all hope that someone is drawn over to the good side by one rant or another.<br><br>2) Pay attention to the practical information. Throughout all this, Robert, you have told people how you preferred to be pitched. As far as getting our job done, that\'s the end of the story. Make good pitches, do them in the way the "target" (sorry) wants them, and build a relationship with same as a good source.<br><br>all readers and commenters: I think Robert knows his stature has made him a target for all sorts of pitches. He\'s entitled to bitch about the crappy ones-- I, for one, don;t take that as an attack on my industry. What I see is a common enemy. Unfortunately, there\'s a reason I liken them to cockroaches (and as someone above pointed out, it\'s not all the Sally smile-and-dials, but often their managers who are to blame).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716076">\
	 <div id="dsq-comment-header-9716076" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716076" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716076" href="http://widowspeek.blogspot.com/" target="_blank" rel="nofollow">Eugene</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716076" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716076" class="dsq-comment-message">As a spanking new blogger, would you ever consider publishing all the really bad pitches? Better yet,send them to me so I can put up an American idol style blog of really bad pitches. It might be fun to vote on the best of the worst retarded ideas. Thanks</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716077">\
	 <div id="dsq-comment-header-9716077" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716077" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716077" href="http://www.twitter.com/mikelizun" target="_blank" rel="nofollow">mikelizun</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716077" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716077" class="dsq-comment-message">Broad strokes for sure, but lessons to be learned in this post, in Shel\'s and in the comments on both posts.<br><br>Most importantly, don\'t screw up the relationship with a pitch.  A pitch is not worth screwing up any relationship.  The media that you have a long track record of delivering good story ideas to will be more forgiving if you miss the mark, but a crappy pitch to a reporter you don\'t have any relationship with is a sure fire way to short circuit any chance of one in the beginning.<br><br>As a manager, I stress this all the time.<br><br>It\'s unfortunate yes, clients come and go, but good and bad relationships with media will last your entire career in the business.  And now, everyone will know.<br><br>Mike Lizun<br><a href="http://www.twitter.com/mikelizun" rel="nofollow">http://www.twitter.com/mikelizun</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716078">\
	 <div id="dsq-comment-header-9716078" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716078" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716078" href="http://blog.holtz.com/" target="_blank" rel="nofollow">Shel Holtz</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716078" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716078" class="dsq-comment-message">@Eugene, there\'s already a Bad Pitch Blog -- <a href="http://badpitch.blogspot.com/" rel="nofollow">http://badpitch.blogspot.com/</a> -- managed by a pair of PR professionals who, like so many others in the business, are trying to drive communicators away from these behaviors. Richard Laermer and Kevin Dugan have been inviting submission of bad pitches for display on the blog, and they\'ll "out" the sender if three of his or her pitches make it onto the blog. In addition to sharing bad pitches, Kevin and Richard use the blog as a platform for advocating good practices.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716079">\
	 <div id="dsq-comment-header-9716079" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716079" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716079" href="http://theartfulflower.blogspot.com/" target="_blank" rel="nofollow">Julie Pippert</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716079" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716079" class="dsq-comment-message">I found this article from Twitter, where quite a few of us comment (good and bad, mostly bad) about PR pitches. In fact, that\'s where I got another link to an entire blog dedicated to critiquing PR pitches. This girl Maisie, who is a mommyblogger (gets a lot of pitches) started PR Pass Fail blog <a href="http://prfail.blogspot.com/" rel="nofollow">http://prfail.blogspot.com/</a> and is deconstructing the good, the bad and the ugly.<br><br>The difference between this and Bad Pitch Blog that Shel Holtz mentioned is that instead of being run by PR people, it\'s the done by a person who is a representative of the people the PR people are trying to reach.<br><br>I confess I submitted a good pitch on her mail in offer.<br><br>I totally agree, defensive is not the way to go. Learning and improving is.<br><br>Great article.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716080">\
	 <div id="dsq-comment-header-9716080" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716080" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716080" href="http://www.century21.com/" target="_blank" rel="nofollow">Matt Gentile</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716080" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716080" class="dsq-comment-message">Great post.  I think the main take away is news is in the eye of the beholder.  You cannot make a particular journalist cover your story if they do not believe it has intrinsic news value for their audience.  Spamming or harassing journalists is not the answer whether it is online or traditional news media outlets.  Study your target, if your news doesn\'t fit their style, beat or audience, move on.<br><br>By the way I took Mr. Scoble up on his advice and called him with a personal pitch about what Century 21 is doing in the social media space.  Will he call back? We\'ll see, but I took the time to learn his preferences and appeal to the subject matter he covers with what I believe is a legitimate story that his readership would find interesting.  It\'s not rocket science.  Study the sender - channel - message and receiver.<br><br>Love your post too Shel.  Great stuff.  I\'m reading your book Tactical Transparency now and applying its lessons in my efforts.  John Havens gave me a copy this week.<br><br>Regards,<br><br>Matt Gentile, Director, PR<br>Century 21 Real Estate LLC</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716081">\
	 <div id="dsq-comment-header-9716081" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716081" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716081" href="http://www.flatironcomm.com/" target="_blank" rel="nofollow">Peter Himler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716081" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716081" class="dsq-comment-message">Robert (and Shel) --<br><br>As you may know, there are many PR pros who empathize with Scoble and all journalists frustrated and angered by the amount of misguided PR pitches that flood their "in boxes."<br><br>The issue stems from the way in which PR people typically go about the task of identifying journalists to pitch.  For the most part, they use a media database company to find the title or beats that seem to make sense.  With that list in hand, those (hopefully) appropriate journalists end up on the receiving end of some blast e-mail, masked as if the recipient is the only one getting it.<br><br>This common (and bad) practice has to change in order for PR people to regain their value in the reporting process.<br><br>Last night, at the New York Tech Meet-up DEMO (#NYTM) event, I had the chance to demo a new search application that tackles this problem with an entirely different approach.<br><br>Instead of job titles, MatchPoint (<a href="http://www.prmatchpoint.com" rel="nofollow">www.prmatchpoint.com</a>) matches the journalist\'s cumulative BODY OF WORK with the PR person\'s search query (i.e., news release, pitch letter, keywords).  Using a database of 200K+ journalists and 4.5 million articles, the search results are a ranked listing of those journalists who are most editorially relevant to the pitch.<br><br>While MatchPoint will never replace lazy PR people, we believe it\'s a step in the right direction toward eliminating PR SPAM.<br><br>Peter HImler<br>Principal, Flatiron Communications LLC<br><a href="http://www.flatironcomm.com" rel="nofollow">www.flatironcomm.com</a><br><a href="http://theflack.blogspot.com" rel="nofollow">http://theflack.blogspot.com</a><br><a href="http://www.prmatchpoint.com" rel="nofollow">www.prmatchpoint.com</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716082">\
	 <div id="dsq-comment-header-9716082" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716082" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716082" href="http://www.twitter.com/emjay08" target="_blank" rel="nofollow">Matt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716082" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716082" class="dsq-comment-message">Does anyone ever write any "10 awesome pitches I\'ve received lately" posts?<br><br>For every 1,000 crappy pitches there are an equal amount of blogs complaining about getting crappy pitches.<br><br>Switch it up some time! Fresh positive angle maybe?<br><br>Just a thought.<br><br>Matt. PR PERSON + JOURNALIST</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716083">\
	 <div id="dsq-comment-header-9716083" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716083" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716083" href="http://www.wordymouth.com/" target="_blank" rel="nofollow">Michael Sommermeyer</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716083" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716083" class="dsq-comment-message">I was planning to take you to the wood shed over your PR People Suck mantra because, well, I don\'t like to see my profession painted over with a bad shade of black.<br><br>In defense of the profession there are quite a few of us who do understand that blanket pitches and frankly bad grammar tend to make us all look bad. And quite a few of us don\'t use bad practices.<br><br>That being said, I fully agree with a couple of points that you clearly make in this post (a refreshing articulation in comparison to the previous flamestorm). Much of my success in placing stories or promoting a cause has been because I have taken the time to listen, understand and build a relationship.<br><br>First off, no one wants to be the guy who has to make a living cold-calling people to pitch them a story. And secondly, we all know that it is counterproductive.  Clients love to see that you\'ve talked to everyone in the world and statistics that show you blasted out a message to thousands. PR needs to demonstrate that talking to 10 people versus 10,000 often provides better results.<br><br>So we have a problem in showing results.  Coupled with the inexperience of many junior execs who are struggling to show results and you have a lot of crap being sent to Robert Scoble.<br><br>Focused research, taking the time to build a relationship and using tools that strengthen that relationship always trumps the shotgun blast.<br><br>Now, you could improve everyone\'s lot in life if you took the time to share what you\'re planning on doing next. Not an editorial calendar per se, but a forecast of things on your horizon. Help these young crap stirrers to send peaches your way instead of prunes. Point us to your crystal ball and help us build a relationship.<br><br>Tools like HARO, ProfNet, MatchPoint, MicroPR, et. al., open the doors and allow some insight. They also allow for the building of relationships. These are tools we all should be embracing in our efforrts to improve how PR works and how PR pitches are received by other communicators.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716084">\
	 <div id="dsq-comment-header-9716084" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716084" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716084">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716084" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716084" class="dsq-comment-message"><i>whose story would have been of any interest to you.</i><br><br>Scoble rants notwithstanding, but that\'s the high art of such, making people normally not interested, interested...finding some common linked tie-in. Anyone can target people already prior interested, and it seems anyone and everyone does. If I am covering a TV/Film beat, find a way to pitch me Enterprise software, by saying so and so TV Show is using it to do such and such. Then suddenly I care. See?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716085">\
	 <div id="dsq-comment-header-9716085" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716085" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716085" href="http://www.kmcgroup.com/" target="_blank" rel="nofollow">Pam Miller</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716085" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716085" class="dsq-comment-message">As someone who\'s been a practioner since what seems like the beginning of time I still see/hear horrible approaches and pitches.  It\'s rampant and it comes from all angles: the client, senior people, and junior people.  As recently as five years ago I had a client who came from a worldwide firm ask to see a copy of my "pitch script.\'  I didn\'t even know what that was.<br><br>And while I\'m on my soapbox, don\'t we all hate the term "pitch?"  Are we telemarketers?  I think that\'s the mentality of the "smile and dialers."<br><br>And while I agree with some of the comments, it\'s no longer about "relationship building" which will lead to coverage.  Clients want results and that\'s all there is to it.  There\'s no patience anymore when companies are running out of money, budgets are being cut to the bone, and startups think that PR will save them. Everyone is demanding metrics regardless of whether it\'s old-fashioned, mainstream media relations, analyst relations or social media.<br><br>Think about it, when times are tough what are the first areas within a company that is cut?  Marketing and PR.<br><br>So wise up people, this recession is going to be with us for quite awhile.  If you want to keep your job then learn how to do your job.  Use the tools, use everything in your arsenal to do your job well, but most of all exercise common sense.  And please, think about PR as a strategic way to build the client\'s business, brand and reputation and not how many "hits" you can get.<br><br>Have I ever pitched Robert in the three or four years that I\'ve known him?  No.  Why not?  Because none of my clients have fit into  the area he\'s interested in hearing about.  We see each at conferences, and even sat on a rather goofy panel together once.  We have a very nice relationship but I\'m not going to pester the poor man.<br><br>Finally, I totally agree with the person who said that good and bad clients come and go, but relationships with media (and bloggers) seem to outlast them all.  Why screw those up?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716086">\
	 <div id="dsq-comment-header-9716086" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716086" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716086">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716086" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716086" class="dsq-comment-message"><i>none of my clients have fit into the area he’s interested in hearing about. </i><br><br>See above. So? Find common ground. Amazing how many PR types just play simple matching games. Although "pitching" Scoble, is a bad idea on so many other levels (the curse being chief) but the principle of the matter...making the uninterested interested.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716087">\
	 <div id="dsq-comment-header-9716087" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716087" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716087">Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716087" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716087" class="dsq-comment-message">What\'s with the FC ad\'s ??? They suck BIG TIME.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716088">\
	 <div id="dsq-comment-header-9716088" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716088" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9716088">Shane</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716088" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716088" class="dsq-comment-message">Scoble,<br>Your bitching about the number of bad pitches your get is like the narcissistic movie actor, producer, or director bitching about the number of bad treatments that come across their desks every day. There will come a day (and don\'t think there won\'t) when you will be where Mickey Rourke was for so long: just hoping someone remembers you as (for some odd reason) an \'a-list\' blogger and gives you a pitch that will once again make you relevant.  So, humble yourself, be thankful (again, for some odd reason) so many PR firms find you relevant enough to be pitched, and resist the urge to bite the hand that could one day end up being the only one that feeds you.<br><br>For every blogger like you that thinks they are now too good to be pitched, except on your terms, there are thousands that only wish they had your "problem".  So, reign in the ego and be thankful you even show up on someone\'s radar.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716089">\
	 <div id="dsq-comment-header-9716089" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716089" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716089" href="http://www.kmcgroup.com/" target="_blank" rel="nofollow">Pam Miller</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716089" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716089" class="dsq-comment-message">Christopher, I hear what you\'re saying, but my client\'s audience is extrmely targeted so the number of people we are trying to reach is very limited because of the market.  The software is embedded so deeply at the chip level that very other than at the chip level would care, and even the market that\'s supposedly techie enough to understand doesn\'t always get it.<br><br>In other words, it\'s a different battle, and not a lack of imagination or laziness on anyone\'s part.  We\'re just taking a different approach.<br><br>That said, I may have something that Robert would be interested in from a humanitarian point-of-view in thh near future, just because he\'s a nice guy and likes this type of stuff (as we should be I hope). However, its communication delivery mechanism is certainly not what any of us would be considered ground-breaking technology by any stretch.<br><br>Thanks for your input,<br>Pam</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716090">\
	 <div id="dsq-comment-header-9716090" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716090" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716090" href="http://www.kmcgroup.com/" target="_blank" rel="nofollow">Pam Miller</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716090" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716090" class="dsq-comment-message">Geez Shane, I hope you\'re not literally comparing Robert to Mickey Rourke.  I assume you\'re not.  You\'re right in that every individual (and company) goes through ups and downs, but I think you\'re being a wee bit harsh.<br><br>Based on my experience with Robert, he\'s truly a nice man.  He may get a little riled from time-to-time, but it\'s not all about him.  He is, however, a geek who found a great way to take his geekiness and technology evangelist role at Microsoft and move it beyond that traditional role.  He and others started a real movement, but he doesn\'t claim it all to be his own idea.<br><br>Lookit, I don\'t know Robert all that well but he doesn\'t try to be more than he really is.  For example, if he ever makes the cover of GQ or Men\'s Vogue it won\'t be because of his fashion sense, but that\'s not why we read his blog now is it? :)<br><br>And just to show I don\'t always agree with him, he and I (and others) got into a bit at the FORTUNE Tech Brainstorm conference last summer.  The topic was about how bloggers who work in a solo environment (such as Robert) don\'t have a check and balance system.  If they write or say something that\'s flat out wrong or could be construed incorrectly, there\'s no editor to correct the situation, or no ombudsman to complain to.  In other words, Pandora is already out of the box and the problem is out there.<br><br>After a series of discussions, he reconsidered his position on the topic.  Someone who has a huge ego wouldn\'t even address such a touchy topic.  Anyway, I\'m sure you get my point.<br><br>Thanks for listening,<br>Pam</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716044">\
	 <div id="dsq-comment-header-9716044" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716044" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716044" href="http://eok.net/" target="_blank" rel="nofollow">Benjamin Koe</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716044" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716044" class="dsq-comment-message">I used to work in PR and I agree with Robert. Journalists want to cover good stories and it is the PR consultant\'s job to help the journalist. If the client pushes you for a story you know is going to be bad, that\'s when the PR consultant has to consult. Trying to push for a story that doesn\'t fit or just trying your luck is nothing short of lazy. Why would a client pay you if you can\'t advise them? BTW, PR today is so much easier, although the newspapers are dying, there\'s a whole lot more "media" online. Be creative, try other bloggers.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716045">\
	 <div id="dsq-comment-header-9716045" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716045" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716045" href="http://youtube.com/jodyschmidt" target="_blank" rel="nofollow">Jody Schmidt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716045" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716045" class="dsq-comment-message">This post so perfectly highlights the inversion that exists not only in music, art, literature, and even science and invention, but also internet startups:<br><br>Early on, \'musician\' is nothing.<br>Critics, producers, DJs, and agents all look down on new struggling \'musician\'.<br>\'Musician\' has to brown nose to everybody to get anywhere: to get a gig, a crappy record label deal, a cheap guitar, etc.<br>He is often considered a pest.<br><br>But, of the clamoring 1000s of struggling musicians, a precious few will become successful, perhaps very successful, and then, the proper order of the universe will snap back into place:<br><br>That the rock stars are everything and the critics, producers and everyone else are nothing but grubby parasites with nearly useless jobs.<br><br>To all those out there who feel temporarily and very precariously above the surging creative forces under you, remember the Hollywood approach:<br><br>Be kind to everyone, for you will surely be working for some of them one day, and be far below many more of them in the not so distant future.<br><br>Same reminder to established gatekeepers of all media:<br><br>You will never ever be anything but parasites, and will never ever (George Martin and Brian Epstein excepted) be considered anything but vermin next to the future rock stars you endlessly snub.<br>So why try and act important now just to have it come back and bite you later? Just realize your post and lot in life and do your best.<br>The entertainment and business worlds do need gatekeepers, just ones who are more aware of their paltry value to the world.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9716091">\
	 <div id="dsq-comment-header-9716091" class="dsq-comment-header">\
	 <cite id="dsq-cite-9716091" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9716091" href="http://lifewithbriar.blogspot.com/" target="_blank" rel="nofollow">Amanda</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9716091" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9716091" class="dsq-comment-message">I loved this, as a blogger and a sometime PR person. It does make me wonder though, if the twitpic I sent as a parent/consumer in response to your stroller query was well received.<br><br>Hope the pregnancy is going well.<br><br>Cheers.<br>Amanda<br>Twitter Handles- @designtramp and @amandamagee</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-13363470">\
	 <div id="dsq-comment-header-13363470" class="dsq-comment-header">\
	 <cite id="dsq-cite-13363470" class="dsq-comment-cite">\
	 <a id="dsq-author-user-13363470" href="http://twitter.com/diversehippie" target="_blank" rel="nofollow">deidre moseley</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-13363470" class="dsq-comment-body">\
	 <div id="dsq-comment-message-13363470" class="dsq-comment-message">Hello. This was really interesting to me. Before I read this post, I was reading section three of David Meerman Scott\'s book- The New Rules of Marketing & PR. I was just reading on the fact that DMS mentioned that PR people should now that before they pitch a blogger, they should know what the blogger writes about and what he/she thinks is interesting. I see that you have mentioned this yourself. I think that this information is vital and true, but astonished to see that many PR people don\'t see this as common sense. It is outrageous to me to think that a PR would pitch an idea to a blogger that they don\'t know anything about- or even worse- not care. That sounds so silly to me that someone would pitch an idea to someone who doesn\'t care. Like you had stated in your post, it is a waste of time! To me, if tons of PR\'s are still pitching ideas about products or services to bloggers who aren\'t intrigued by whatever they\'re talking about, there needs to be a PR meeting around the world discussing the new ways of pitching- even thought this idea seems like common sense. Great post!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-13363493">\
	 <div id="dsq-comment-header-13363493" class="dsq-comment-header">\
	 <cite id="dsq-cite-13363493" class="dsq-comment-cite">\
	 <a id="dsq-author-user-13363493" href="http://twitter.com/diversehippie" target="_blank" rel="nofollow">deidre moseley</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-13363493" class="dsq-comment-body">\
	 <div id="dsq-comment-message-13363493" class="dsq-comment-message">Hello. This was really interesting to me. Before I read this post, I was reading section three of David Meerman Scott\'s book- The New Rules of Marketing & PR. I was just reading on the fact that DMS mentioned that PR people should now that before they pitch a blogger, they should know what the blogger writes about and what he/she thinks is interesting. I see that you have mentioned this yourself. I think that this information is vital and true, but astonished to see that many PR people don\'t see this as common sense. It is outrageous to me to think that a PR would pitch an idea to a blogger that they don\'t know anything about- or even worse- not care. That sounds so silly to me that someone would pitch an idea to someone who doesn\'t care. Like you had stated in your post, it is a waste of time! To me, if tons of PR\'s are still pitching ideas about products or services to bloggers who aren\'t intrigued by whatever they\'re talking about, there needs to be a PR meeting around the world discussing the new ways of pitching- even thought this idea seems like common sense. Great post!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-20117510">\
	 <div id="dsq-comment-header-20117510" class="dsq-comment-header">\
	 <cite id="dsq-cite-20117510" class="dsq-comment-cite">\
	 <a id="dsq-author-user-20117510" href="http://www.berlinproperty.co.uk/" target="_blank" rel="nofollow">Berlin Property</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-20117510" class="dsq-comment-body">\
	 <div id="dsq-comment-message-20117510" class="dsq-comment-message">Robert...<br><br>Great article...your basically confirming what a lot of people having been thinking for some time. PR must be good and informed PR..<br>"You are only ever as strong as your weakest link"</div>\
	 </div>\
	 </li>\
	 </ul>\
';

(function() {
	
	





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

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


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

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

	
	

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

	Dsq.Popup.showCookieMsgs();

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

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

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

	



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

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

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

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

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


	


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

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

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

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

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

})();




