




if (typeof(disqus_iframe_css) == 'undefined') {
	disqus_iframe_css = '';
}
if (typeof(disqus_def_name) == 'undefined') {
	disqus_def_name = '';
}
if (typeof(disqus_def_email) == 'undefined') {
	disqus_def_email = '';
}
if (typeof(disqus_skip_auth) == 'undefined') {
	disqus_skip_auth = false;
}
if (typeof(disqus_default_text) == 'undefined') {
	disqus_default_text = 'Type your comment here.';
}

(function(){
	
	var ie = document.uniqueID
		&& document.compatMode
		&& !window.XMLHttpRequest
		&& document.execCommand ;

	try {
		if(!!ie) {
			document.execCommand("BackgroundImageCache", false, true);
		}
	} catch(e) {};
})();

var Dsq = new function() {
	this.container = document.getElementById('dsq-content');
	this.jsonData = {"reactions": [], "has_more_reactions": false, "users": {"10e48a6585c86567b7c2371ab687fe0b": {"username": "Marc", "tumblr": "", "display_name": "Marc", "url": "http://disqus.com/guest/10e48a6585c86567b7c2371ab687fe0b/", "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": ""}, "b997146f76dd0be7664d1c9f433fbc72": {"username": "Joeflash", "tumblr": "", "display_name": "Joeflash", "url": "http://disqus.com/guest/b997146f76dd0be7664d1c9f433fbc72/", "registered": false, "linkedin": "", "blog": "http://blog.joeflash.ca/", "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": ""}, "fcb77d0b2145a88baca078c4cabc2934": {"username": "NoFlashOnIphone:)", "tumblr": "", "display_name": "NoFlashOnIphone:)", "url": "http://disqus.com/guest/fcb77d0b2145a88baca078c4cabc2934/", "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": ""}, "23a56be8047431e7baf9370e7e2a3e84": {"username": "istara", "tumblr": "", "display_name": "istara", "url": "http://disqus.com/guest/23a56be8047431e7baf9370e7e2a3e84/", "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": ""}, "ba7f01ec9e8334f6a376aaa90b34d320": {"username": "Fr\u00e9d\u00e9ric Sidler", "tumblr": "", "display_name": "Fr\u00e9d\u00e9ric Sidler", "url": "http://disqus.com/guest/ba7f01ec9e8334f6a376aaa90b34d320/", "registered": false, "linkedin": "", "blog": "http://www.mixin.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/49/1796/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "ce8f52d4c9b78e5d7a9ae6c387f425b1": {"username": "Mister Snitch!", "tumblr": "", "display_name": "Mister Snitch!", "url": "http://disqus.com/guest/ce8f52d4c9b78e5d7a9ae6c387f425b1/", "registered": false, "linkedin": "", "blog": "http://mistersnitch.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": ""}, "4e32b73bd70cf8926de0847212053d10": {"username": "thomas", "tumblr": "", "display_name": "thomas", "url": "http://disqus.com/guest/4e32b73bd70cf8926de0847212053d10/", "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": ""}, "2c18069729f73beed86250bcb7c85674": {"username": "Dan", "tumblr": "", "display_name": "Dan", "url": "http://disqus.com/guest/2c18069729f73beed86250bcb7c85674/", "registered": false, "linkedin": "", "blog": "http://www.nttdocomo.co.jp/", "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": ""}, "3e29d39dfd6245a6210f54c37dec7548": {"username": "just a reader", "tumblr": "", "display_name": "just a reader", "url": "http://disqus.com/guest/3e29d39dfd6245a6210f54c37dec7548/", "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": ""}, "304394e850deab862833a76c9c641009": {"username": "Matt M", "tumblr": "", "display_name": "Matt M", "url": "http://disqus.com/guest/304394e850deab862833a76c9c641009/", "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": ""}, "35e156845af26eb52d00e3531c47c157": {"username": "David Jacobs", "tumblr": "", "display_name": "David Jacobs", "url": "http://disqus.com/guest/35e156845af26eb52d00e3531c47c157/", "registered": false, "linkedin": "", "blog": "http://www.theconnectedworld.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "5009eabebb7194d399cc1f15f48ce04c": {"username": "Seth", "tumblr": "", "display_name": "Seth", "url": "http://disqus.com/guest/5009eabebb7194d399cc1f15f48ce04c/", "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": ""}, "cfa697d6916dedad41b0109c0c74eb11": {"username": "jamesn", "tumblr": "", "display_name": "jamesn", "url": "http://disqus.com/guest/cfa697d6916dedad41b0109c0c74eb11/", "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": ""}, "8c666ecf9871495bcf7605655a874593": {"username": "GeoP", "tumblr": "", "display_name": "GeoP", "url": "http://disqus.com/guest/8c666ecf9871495bcf7605655a874593/", "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": ""}, "04d6b8e8d3c68899ac88eb8623392150": {"username": "Eric Florenzano", "tumblr": "", "display_name": "Eric Florenzano", "url": "http://disqus.com/guest/04d6b8e8d3c68899ac88eb8623392150/", "registered": false, "linkedin": "", "blog": "http://www.eflorenzano.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/12/4469/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "462088a7f1468f209050aeb800035abb": {"username": "Mike Cane", "tumblr": "", "display_name": "Mike Cane", "url": "http://disqus.com/guest/462088a7f1468f209050aeb800035abb/", "registered": false, "linkedin": "", "blog": "http://mikecane2008.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/13902/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "3afd185912c2d3d910ae4492f670c9f7": {"username": "Jesse Tayler", "tumblr": "", "display_name": "Jesse Tayler", "url": "http://disqus.com/guest/3afd185912c2d3d910ae4492f670c9f7/", "registered": false, "linkedin": "", "blog": "http://netmodular.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": ""}, "9f4671610b904bd8063f305662f7b6c6": {"username": "jake", "tumblr": "", "display_name": "jake", "url": "http://disqus.com/guest/9f4671610b904bd8063f305662f7b6c6/", "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": ""}, "3452e226d5d71e152eb7145968642c0d": {"username": "Prasoon", "tumblr": "", "display_name": "Prasoon", "url": "http://disqus.com/guest/3452e226d5d71e152eb7145968642c0d/", "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": ""}, "d7dad3d53a710ee1dd874c67d6605521": {"username": "Nima", "tumblr": "", "display_name": "Nima", "url": "http://disqus.com/guest/d7dad3d53a710ee1dd874c67d6605521/", "registered": false, "linkedin": "", "blog": "http://equinox-of-insanity.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": ""}, "4227f69433a3939b1591790ba240d158": {"username": "stelt", "tumblr": "", "display_name": "stelt", "url": "http://disqus.com/guest/4227f69433a3939b1591790ba240d158/", "registered": false, "linkedin": "", "blog": "http://twoss.wordpress.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "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": ""}, "2c09f44f1c8c618027158d9a91e70ddd": {"username": "Mark Scrimshire", "tumblr": "", "display_name": "Mark Scrimshire", "url": "http://disqus.com/guest/2c09f44f1c8c618027158d9a91e70ddd/", "registered": false, "linkedin": "", "blog": "http://ekive.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": ""}, "0510d88cc9c42fd729b2d61a173d9c44": {"username": "Brandon Paddock", "tumblr": "", "display_name": "Brandon Paddock", "url": "http://disqus.com/guest/0510d88cc9c42fd729b2d61a173d9c44/", "registered": false, "linkedin": "", "blog": "http://brandonlive.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": ""}, "c521c8d9f59e6ffde66b24d93f8a7741": {"username": "John", "tumblr": "", "display_name": "John", "url": "http://disqus.com/guest/c521c8d9f59e6ffde66b24d93f8a7741/", "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": ""}, "3c769a259406986145d70d5ef4a739fa": {"username": "Troll Central", "tumblr": "", "display_name": "Troll Central", "url": "http://disqus.com/guest/3c769a259406986145d70d5ef4a739fa/", "registered": false, "linkedin": "", "blog": "http://www.trolls.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": ""}, "1bbe2b67519c84a4767ad4f70d5804ae": {"username": "david amodt", "tumblr": "", "display_name": "david amodt", "url": "http://disqus.com/guest/1bbe2b67519c84a4767ad4f70d5804ae/", "registered": false, "linkedin": "", "blog": "http://www.theoprahfanclub.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": ""}, "ed358d9b64a8993db13d5d16f05aba92": {"username": "Matt_", "tumblr": "", "display_name": "Matt_", "url": "http://disqus.com/guest/ed358d9b64a8993db13d5d16f05aba92/", "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": ""}, "9cfe04303d055c07b074a794c9b7958e": {"username": "Victor Panlilio", "tumblr": "", "display_name": "Victor Panlilio", "url": "http://disqus.com/guest/9cfe04303d055c07b074a794c9b7958e/", "registered": false, "linkedin": "", "blog": "http://www.victorpanlilio.com/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/14905/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "9fdd00567b43123589a30419880ed3a7": {"username": "Ken Carpenter in Orlando", "tumblr": "", "display_name": "Ken Carpenter in Orlando", "url": "http://disqus.com/guest/9fdd00567b43123589a30419880ed3a7/", "registered": false, "linkedin": "", "blog": "http://kencarpenter.info/", "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": ""}, "0e7e429340d02f33e6fde70ea76629fc": {"username": "Realtosh", "tumblr": "", "display_name": "Realtosh", "url": "http://disqus.com/guest/0e7e429340d02f33e6fde70ea76629fc/", "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": ""}, "bf4c865dc3c2935766557698a7810c56": {"username": "Scott O&#39;Raw", "tumblr": "", "display_name": "Scott O&#39;Raw", "url": "http://disqus.com/guest/bf4c865dc3c2935766557698a7810c56/", "registered": false, "linkedin": "", "blog": "http://www.scottoraw.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": ""}, "4fe19b3352f366bef89ea9cdf6c0e0c9": {"username": "Ross", "tumblr": "", "display_name": "Ross", "url": "http://disqus.com/guest/4fe19b3352f366bef89ea9cdf6c0e0c9/", "registered": false, "linkedin": "", "blog": "", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/uploads/anonusers/22/6452/avatar92.jpg", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "b208f0f281f076e69195645510201ee1": {"username": "Michael Tuminello", "tumblr": "", "display_name": "Michael Tuminello", "url": "http://disqus.com/guest/b208f0f281f076e69195645510201ee1/", "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": ""}, "64a79da304f1c40689d9bdaf91b2a1e2": {"username": "joe", "tumblr": "", "display_name": "joe", "url": "http://disqus.com/guest/64a79da304f1c40689d9bdaf91b2a1e2/", "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": ""}, "21fb7ca307badfd413cec7f7f1d6e0f5": {"username": "Ray", "tumblr": "", "display_name": "Ray", "url": "http://disqus.com/guest/21fb7ca307badfd413cec7f7f1d6e0f5/", "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": ""}, "297f5c4712227bc2894649ae5c543fd6": {"username": "Larry Kless", "tumblr": "", "display_name": "Larry Kless", "url": "http://disqus.com/guest/297f5c4712227bc2894649ae5c543fd6/", "registered": false, "linkedin": "", "blog": "http://klessblog.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": ""}, "fce1819b1656eeab76c73c3b0371600b": {"username": "G", "tumblr": "", "display_name": "G", "url": "http://disqus.com/guest/fce1819b1656eeab76c73c3b0371600b/", "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": ""}, "770ff70a158bbeccd87d1da27fba00dc": {"username": "TranceMist", "tumblr": "", "display_name": "TranceMist", "url": "http://disqus.com/guest/770ff70a158bbeccd87d1da27fba00dc/", "registered": false, "linkedin": "", "blog": "http://trancemist.net/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": ""}, "drunkeneconomist": {"username": "drunkeneconomist", "tumblr": "", "display_name": "drunken_economist", "url": "http://disqus.com/drunkeneconomist/", "registered": true, "linkedin": "", "blog": "http://mindtaker.blogspot.com/ ", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/uploads/users/60/3593/avatar92.jpg", "delicious": "", "is_remote": false, "verified": true, "flickr": "", "twitter": "http://twitter.com/drunk_economist", "remote_domain_name": ""}, "cbb1017d37d95997d3618d9e4d85b711": {"username": "Adrian Sutton", "tumblr": "", "display_name": "Adrian Sutton", "url": "http://disqus.com/guest/cbb1017d37d95997d3618d9e4d85b711/", "registered": false, "linkedin": "", "blog": "http://www.symphonious.net/", "remote_domain": null, "points": null, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "de11c9ec8c27a90b51fa25871fb5e9a9": {"username": "frmad", "tumblr": "", "display_name": "frmad", "url": "http://disqus.com/guest/de11c9ec8c27a90b51fa25871fb5e9a9/", "registered": false, "linkedin": "", "blog": "http://nghecon6.googlepages.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": ""}, "2aad7dded4ccb92277849f28086f489d": {"username": "Jeremy", "tumblr": "", "display_name": "Jeremy", "url": "http://disqus.com/guest/2aad7dded4ccb92277849f28086f489d/", "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": ""}, "f6a33dff0f065f95963f39e6ade05803": {"username": "Martin Stricker", "tumblr": "", "display_name": "Martin Stricker", "url": "http://disqus.com/guest/f6a33dff0f065f95963f39e6ade05803/", "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": ""}, "3a088b735d051bca68c1f02e292b207e": {"username": "PXLated", "tumblr": "", "display_name": "PXLated", "url": "http://disqus.com/guest/3a088b735d051bca68c1f02e292b207e/", "registered": false, "linkedin": "", "blog": "http://www.geise.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": ""}, "ba1c05342e41a873b90cb782c1e0efff": {"username": "veggiedude", "tumblr": "", "display_name": "veggiedude", "url": "http://disqus.com/guest/ba1c05342e41a873b90cb782c1e0efff/", "registered": false, "linkedin": "", "blog": "http://veggiedude.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": ""}, "8f8ff21a67437febebc70afd19364e95": {"username": "Some Guy", "tumblr": "", "display_name": "Some Guy", "url": "http://disqus.com/guest/8f8ff21a67437febebc70afd19364e95/", "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": ""}, "f5a28011b9c896071d16b5b6d75d5bf7": {"username": "dennis", "tumblr": "", "display_name": "dennis", "url": "http://disqus.com/guest/f5a28011b9c896071d16b5b6d75d5bf7/", "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": ""}, "e9f65a6d06d774600b04be0c2bb606df": {"username": "william", "tumblr": "", "display_name": "william", "url": "http://disqus.com/guest/e9f65a6d06d774600b04be0c2bb606df/", "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": ""}, "62df2ce940b84b60f8eef26d8e615c13": {"username": "Totoro", "tumblr": "", "display_name": "Totoro", "url": "http://disqus.com/guest/62df2ce940b84b60f8eef26d8e615c13/", "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": ""}, "161bf65031776cbd3f8a4283d2ff6a22": {"username": "Greg", "tumblr": "", "display_name": "Greg", "url": "http://disqus.com/guest/161bf65031776cbd3f8a4283d2ff6a22/", "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": ""}, "086e5b232508e13d262ed6c98b949402": {"username": "Asbj\u00f8rn Ulsberg", "tumblr": "", "display_name": "Asbj\u00f8rn Ulsberg", "url": "http://disqus.com/guest/086e5b232508e13d262ed6c98b949402/", "registered": false, "linkedin": "", "blog": "http://asbjor.nu/", "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": ""}, "jamiegau": {"username": "jamiegau", "tumblr": "", "display_name": "jamiegau", "url": "http://disqus.com/jamiegau/", "registered": true, "linkedin": "", "blog": "http://www.crafted.com.au/", "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": ""}, "8eb3659fe5e12d953c4211379c3e4226": {"username": "eas", "tumblr": "", "display_name": "eas", "url": "http://disqus.com/guest/8eb3659fe5e12d953c4211379c3e4226/", "registered": false, "linkedin": "", "blog": "http://geekfun.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": ""}, "d61df5fbe839aa9362505e22d157410b": {"username": "Jeffrey", "tumblr": "", "display_name": "Jeffrey", "url": "http://disqus.com/guest/d61df5fbe839aa9362505e22d157410b/", "registered": false, "linkedin": "", "blog": "http://mysawdust.com/blogs/curlyshavings", "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": ""}, "ddb8ec9d157b68738a1511e547446929": {"username": "Jake McKee", "tumblr": "", "display_name": "Jake McKee", "url": "http://disqus.com/guest/ddb8ec9d157b68738a1511e547446929/", "registered": false, "linkedin": "", "blog": "http://www.communityguy.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": ""}, "67ddf598c32d0ae929852af89fa4b272": {"username": "Karim", "tumblr": "", "display_name": "Karim", "url": "http://disqus.com/guest/67ddf598c32d0ae929852af89fa4b272/", "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": ""}, "2510ca5e51d25f00c6f710afaf790da3": {"username": "Gordon R. Vaughan", "tumblr": "", "display_name": "Gordon R. Vaughan", "url": "http://disqus.com/guest/2510ca5e51d25f00c6f710afaf790da3/", "registered": false, "linkedin": "", "blog": "http://twitter.com/aeroG", "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": ""}, "bcbabcc7c0ba001fff6f30012667213f": {"username": "phuongnana", "tumblr": "", "display_name": "phuongnana", "url": "http://disqus.com/guest/bcbabcc7c0ba001fff6f30012667213f/", "registered": false, "linkedin": "", "blog": "http://nghecon6.googlepages.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": ""}, "a137d41ef8dc9ba17dafe7c15eb67df5": {"username": "Francesco Simi", "tumblr": "", "display_name": "Francesco Simi", "url": "http://disqus.com/guest/a137d41ef8dc9ba17dafe7c15eb67df5/", "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": ""}, "ec7fa1d9cb0f083461f9986f710d0892": {"username": "David", "tumblr": "", "display_name": "David", "url": "http://disqus.com/guest/ec7fa1d9cb0f083461f9986f710d0892/", "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": ""}, "696088d48c21d8768ffc66cf660e2e3f": {"username": "chris", "tumblr": "", "display_name": "chris", "url": "http://disqus.com/guest/696088d48c21d8768ffc66cf660e2e3f/", "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": ""}, "9029e772f3fb5272685aa5800f5ba972": {"username": "Evil Carbon", "tumblr": "", "display_name": "Evil Carbon", "url": "http://disqus.com/guest/9029e772f3fb5272685aa5800f5ba972/", "registered": false, "linkedin": "", "blog": "http://www.evilcarbon.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": ""}, "fcec0a2343bcac69d3d3931ca102b193": {"username": "Dogzilla", "tumblr": "", "display_name": "Dogzilla", "url": "http://disqus.com/guest/fcec0a2343bcac69d3d3931ca102b193/", "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": ""}}, "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_03:06:55", "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": {"9701930": {"up_voted": false, "ip": "", "has_replies": false, "message": "Are we talking about a real flash player like the one you can install on a normal computer with all features, etc. Or are we talking about the flash lite 1, 2 or 3 that is hard to find, hard to install and with limited functionnalities<br><br>here are the direct links to the \"lite\" player<br><br>flash lite 3 features : <a href=\"http://www.adobe.com/products/flashlite/features/\" rel=\"nofollow\">http://www.adobe.com/products/flashlite/features/</a><br>flash lite 3 download site : <a href=\"https://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%255Fflashlite3\" rel=\"nofollow\">https://www.adobe.com/cfusion/entitlement/index...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:01:17", "killed": false, "user_key": "ba7f01ec9e8334f6a376aaa90b34d320", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701931": {"up_voted": false, "ip": "", "has_replies": false, "message": "Here's my guess on Steve Jobs' wishlist for Adobe: Use CoreAnimation, CoreGraphics, CoreAudio and CoreVideo in your OS X implementation of Flash, integrate more native OS X controls (because, let's face it: Flash-based UIs are usually hideous, non-functional and non-standard).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:00:56", "killed": false, "user_key": "f6a33dff0f065f95963f39e6ade05803", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701932": {"up_voted": false, "ip": "", "has_replies": false, "message": "Hi Rob,<br><br>Tiny point. When looking for FastCompany.TV clicky saw that your VP @ PodTech job is still listed on the right.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:21:16", "killed": false, "user_key": "ec7fa1d9cb0f083461f9986f710d0892", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701933": {"up_voted": false, "ip": "", "has_replies": false, "message": "Me thinks there's a lot of history behind this...<br>1) Adobe probably wouldn't exist if Jobs hadn't picked postscript, developed the Laserwriter and created the desktop publishing industry which set up Adobe and it's money making product line.<br>2) Jobs chooses display postscript for Next and Adobe reams him on royalties.<br>3) Jobs returns, wants to use display postscript with OSX but gets the big royalty treatment form Adobe, lack of support from them for native apps, lousy Flash player on Macs, etc.<br>Adobe is probably very high on the Jobs shit list.<br><br>The difference now is Apple's flying high, Jobs doesn't have to bend over for the traditional Adobe hump.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:18:33", "killed": false, "user_key": "3a088b735d051bca68c1f02e292b207e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701934": {"up_voted": false, "ip": "", "has_replies": false, "message": "From Matt M's comment (22) \"how slow they were to support OS X\".  \"Were\" is the wrong verb.  They still have only limited support for Leopard.  My repeated inquiries regarding a release date for Adobe Acrobat Standard Edition for OS X 10.5 remain unanswered.  Why?  They can get $150 more for Pro if that is all they sell.  It's all about the money.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_09:59:13", "killed": false, "user_key": "161bf65031776cbd3f8a4283d2ff6a22", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701935": {"up_voted": false, "ip": "", "has_replies": false, "message": "Maybe Apple is in talk with Microsoft to drop flash and go with Silverlight.<br><br>Scott Guthrie Hinted at Silverlight on the iPhone at the Mix 08 in Las Vegas:<br><br><a href=\"http://www.psynixis.com/blog/2008/03/05/scott-guthrie-hints-at-silverlight-on-iphone/\" rel=\"nofollow\">http://www.psynixis.com/blog/2008/03/05/scott-g...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_07:10:52", "killed": false, "user_key": "a137d41ef8dc9ba17dafe7c15eb67df5", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701936": {"up_voted": false, "ip": "", "has_replies": false, "message": "I have a Comment from someone here who has a different POV on this issue:<br><br><a href=\"http://mikecane2008.wordpress.com/2008/03/05/adobe-get-off-your-fat/\" rel=\"nofollow\">http://mikecane2008.wordpress.com/2008/03/05/ad...</a><br><br>And the more I think about it, what good is just a Flash *player*?  Don't we need Flash to be systemwide in the iPhone so that, for example, YouTube or other FLV files play *in place*?  Doesn't that mean at the very least integration into the Safari browser?<br><br>There's already a method for playing FLVs on the iPhone.  I suspect it's converting:<br><br><a href=\"http://mikecane2008.wordpress.com/2008/01/13/reference-flash-video-on-iphone/\" rel=\"nofollow\">http://mikecane2008.wordpress.com/2008/01/13/re...</a><br><br>I don't understand this Flash vs PDF issue.  I don't see what Adobe would get out of that other than milking Apple for royalties on PDF.  Apple's own Preview already handles PDFs without Adobe.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_09:50:11", "killed": false, "user_key": "462088a7f1468f209050aeb800035abb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701937": {"up_voted": false, "ip": "", "has_replies": false, "message": "Rendering a web page with Flash ads on a Mac eats up 70-90% of CPU. Sure, Flash is \"running on an iPhone in a lab\" and \"it\u2019s been running for quite a while\" - Apple engineers use it to test potential problems with cpu overheating.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_09:51:58", "killed": false, "user_key": "f6a33dff0f065f95963f39e6ade05803", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701938": {"up_voted": false, "ip": "", "has_replies": false, "message": "@David Jacobs: \"Well, F you Apple, I want F\u2019ing Flash on my F\u2019ing iPhone.\"<br><br>Not sure why anyone wants Flash outside of porn, cartoons and Flash ads, but there's a legitimate solution: write it. Here's some helpful links to get you started:<br><br>Installing the iPhone developer toolchain - <a href=\"http://code.google.com/p/iphone-dev/wiki/Building\" rel=\"nofollow\">http://code.google.com/p/iphone-dev/wiki/Building</a><br><br>SFW File Format spec - <a href=\"http://the-labs.com/MacromediaFlash/SWF-Spec/SWFfileformat.html\" rel=\"nofollow\">http://the-labs.com/MacromediaFlash/SWF-Spec/SW...</a><br><br>FLV File format spec - <a href=\"http://www.digitalpreservation.gov/formats/fdd/fdd000131.shtml\" rel=\"nofollow\">http://www.digitalpreservation.gov/formats/fdd/...</a><br><br>Go for it! What's that? You can't develop it yourself and are demanding someone else do it for you? Well then, how bout you STFU and take what's given to you.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_09:05:29", "killed": false, "user_key": "fcec0a2343bcac69d3d3931ca102b193", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701939": {"up_voted": false, "ip": "", "has_replies": false, "message": "wanna bet it's about money? My guess is Adobe would like Apple to pay a licensing fee for the Flash player... Apple in return would like Adobe to pay for installing the Flash Player.<br><br>Do you really think Nokia is installing Silverlight on all their phones because they think it's such a cool technology? I would also bet that Nokia is getting paid a bucket load of cash to include Silverlight on their S60 devices... as this move otherwise makes zero business sense to me.<br><br>As a matter of fact I would dare to say that Microsoft has a dedicated war chest of 1 billion US dollars to make Silverlight the defacto standard for RIAs...<br><br>once they reached this goal they will abandon all support for platforms other than Windows or Windows Mobile. They have done this with Internet Explorer before. Why would they suddenly change their behavior.<br><br>But coming back to Apple and Flash, I strongly believe there is a revenue model issue behind the lack of Flash on the iPhone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:33:03", "killed": false, "user_key": "4e32b73bd70cf8926de0847212053d10", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701940": {"up_voted": false, "ip": "", "has_replies": false, "message": "All I read out of what Jobs said was, \"Adobe's Flash versions are either too slow or too crappy for our device.  They lack a version appropriate to the iPhone.\"<br><br>In my mind, I read that with one additional smug-filled sentence, \"So we went and wrote our own, because we're just that awesome.\"", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:37:19", "killed": false, "user_key": "0510d88cc9c42fd729b2d61a173d9c44", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701941": {"up_voted": false, "ip": "", "has_replies": false, "message": "@thomas I totally agree that there should be a revenue model issue behind the scene. But can somebody explain the different models between the player for your computer and the player for your phone. For me what I got is that the phone manufacturer has to pay Adobe to include the player on the phone, but I may be wrong.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:43:04", "killed": false, "user_key": "ba7f01ec9e8334f6a376aaa90b34d320", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701942": {"up_voted": false, "ip": "", "has_replies": false, "message": "A few months back, I had stumbled upon an article which said that buying Adobe would be the most logical thing Apple could do. Now, if Jobs goes against Flash n lets says he manages to do it well with SVG etc, could this be a fit somehow to support the whole buyout theory? Make a competitor weak, ignore - create another benchmark n someday sometime in future buy it out.<br>Somewhere I think in corner of the mind that it could be possible. Any comments?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:52:40", "killed": false, "user_key": "3452e226d5d71e152eb7145968642c0d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701943": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's got to be a matter of time that Apple adds Flash on the iPhone in some capacity. Especially for video and other Flash-based content. Come on Steve, what's the real reason? Flash would kick @$$ on the iPhone!<br><br>Maybe he is playing hardball on PDF's but would he make the same mistakes of the past and not fully open up system?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:52:51", "killed": false, "user_key": "297f5c4712227bc2894649ae5c543fd6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701944": {"up_voted": false, "ip": "", "has_replies": false, "message": "Good point Thomas, I also agree. That's what it's usually all about. The mighty dollar.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:57:29", "killed": false, "user_key": "297f5c4712227bc2894649ae5c543fd6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701945": {"up_voted": false, "ip": "", "has_replies": false, "message": "So bloggers and people from Arkansas can understand...<br><br>Drat. Big wrench no works good, and da small wrench no works good either. Sheeeucks. Well I reckon, I needsha medium wrench. Gee Golly, no medium at the's Ace Hardeeware? Well shucks, I betcha I can make a medium wrench outta some of the lawn car parts. Yesirreee.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:59:48", "killed": false, "user_key": "7f6291e8344b594235e57b843fc05d9b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701946": {"up_voted": false, "ip": "", "has_replies": false, "message": "I believe it's mostly politics and money, but there might be a technical issue too. Adobe isn't exactly famous for writing small, resource-efficient applications. Think Adobe Reader (80MB and 1 minute startup times to read PDF files? WTF!), Photoshop and even the Flash player itself. There's nothing that eats more CPU and RAM on my system than Adobe's applications and Flash is often one of the largest sinners.<br><br>So if Apple is refusing to run Adobe's crap because it's ... well -- crap -- I don't blame them.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_04:01:53", "killed": false, "user_key": "086e5b232508e13d262ed6c98b949402", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701947": {"up_voted": false, "ip": "", "has_replies": false, "message": "I can't see this being about PDF.  Why would Apple rely on a third party for something that is so core to their OS?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_04:05:00", "killed": false, "user_key": "4fe19b3352f366bef89ea9cdf6c0e0c9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701948": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yeah, I keep thinking Apple's going to make a major acquisition, whether Adobe or someone else.<br><br>Wasn't Jobs just talking about their cash hoard ($18Bln) this week, too, and how they did NOT plan to distribute any of that via either dividends or buybacks?<br><br>Maybe Jobs figures the Nokia/Silverlight deal ought to make Adobe more willing to make a deal?<br><br>I wonder who else Apple might be looking at, too. It's sure looked lately like they could use a lot more programmers!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_04:14:07", "killed": false, "user_key": "2510ca5e51d25f00c6f710afaf790da3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701949": {"up_voted": false, "ip": "", "has_replies": false, "message": "FYI, there's something wrong with Apple's PDF renderer. If you use it to generate a PDF you can't use that file for printing from <a href=\"http://Lulu.com\" rel=\"nofollow\">Lulu.com</a>. People have had numerous problems where pages don't print correctly, and now Lulu won't even accept a PDF that's been created by the Apple renderer.<br><br>An Apple generated PDF on Leopard is marked as PDF 1.4, while a PDF created with CS3 (InDesign, for example) is marked PDF 1.6, so Apple's also behind in that way, too. A switch to Adobe would be an improvement.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_04:17:48", "killed": false, "user_key": "d7dad3d53a710ee1dd874c67d6605521", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701950": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think you're all missing an important detail - Apple didn't say it's impossible to get flash on the iPhone and they didn't say they haven't done it - they said it's not technically feasible to put the *full* flash on the iPhone given CPU power and probably more importantly battery life and they said that the mobile version isn't worth having.<br><br>All this adds up if people are confusing the mobile versions of flash with the full desktop version of flash. Technical limitations keep the full version off the iPhone, user experience (as perceived by Apple) keeps the mobile version off.<br><br>Jobs has been known to lie before but I doubt he'd lie to his shareholders and then backflip the next day, that's pretty much asking for a lawsuite. :P", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:08:22", "killed": false, "user_key": "cbb1017d37d95997d3618d9e4d85b711", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701951": {"up_voted": false, "ip": "", "has_replies": false, "message": "Mr Scoble - use both Flash and Adobe Acrobat on a Mac.  Neither is a good experience and I can't believe they can suddenly take either of these products and make good, fast versions for a very much less powerful computer running a stripped down version of the same OS.  I like a lot of things about Adobe, but these products are horrible.  Also, add to this the way they treated NeXT and those inside Apple who remember that, and how slow they were to support OS X.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_08:49:46", "killed": false, "user_key": "304394e850deab862833a76c9c641009", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701952": {"up_voted": false, "ip": "", "has_replies": false, "message": "@James Gardiner<br><br>regarding h.264 support.  The iphone has hardware chips that natively support h.264 support... so it's not surprisingly that they can support h.264 but not another format such as flash. flash support would require the CPU to process it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_07:31:29", "killed": false, "user_key": "64a79da304f1c40689d9bdaf91b2a1e2", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701953": {"up_voted": false, "ip": "", "has_replies": false, "message": "Abode has been holding back its  Flash SDK for Devices and the SDK  it only Supports Flash 7.This is a major Issue with the Wii and other devices that support Flash .<br><br><a href=\"http://my.opera.com/haavard/blog/2007/04/13/wii-browser-out-but-why-flash-7-and-not-8-or-9\" rel=\"nofollow\">http://my.opera.com/haavard/blog/2007/04/13/wii...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_07:19:41", "killed": false, "user_key": "ed358d9b64a8993db13d5d16f05aba92", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701954": {"up_voted": false, "ip": "", "has_replies": false, "message": "Ok,<br>Lets get some facts straight.<br>Steve, details of not, is misleading the share holders and iPhone owners.<br>Flash Player has large chunks of machine code to make it as fast as possible.<br>As the iPhone can play H.264 content, known to be VERY CPU hungry, I find it inconceivable that the iPhone cannot operate well.<br>If anything, he may be talking about the FULL version of flash and not the Flash Lite version that is more designed for small devices like a Mobile phone.<br>But really, if it can play H.264, it should easily do Flash (Full version) reasonably.  And if some one said, a Flex app was seen on it.  That points to full flash support (Which would be great).<br><br>This issue has always been about MONEY.  Adobe's business model is licensing Flash Player as an embedded player.  That is the long term agenda here.  That is why they are making it all Open source for development.  The IDE's etc are also amazingly cheap.  The money must be in the licensing. (I have blogged about this before and Adobes plan to take over the world) <a href=\"http://www.crafted.com.au/blog\" rel=\"nofollow\">http://www.crafted.com.au/blog</a> search for \"Adobes plan for world domination\"<br><br>The PDF issues makes complete sense. Books/mainly-Newspapers are on the way out.  Adobe would really like PDF to become a dominant format used in that future.  But then again, Apple probably wants to take a run at this themselves.  They have FairPlay DRM, it's an important technology to the Itunes empire.<br>As apple, would you not want to tackle reading material too...<br><br>It will be interesting to see what happens.  I imagine Adobe will fold.  They don;t really have any leverage here...  Apart from building pdf readers into flash.  Which has been done..  It is an interesting juncture in the evolution of the internet and digital (reading) media.<br><br>James", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_06:19:49", "killed": false, "user_key": "jamiegau", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701955": {"up_voted": false, "ip": "", "has_replies": false, "message": "I haven't looked recently, but at one point, all iPhone processes were running as root, usually understood as a Bad Thing. When (not if) this is corrected, my suspicion is that the iPhone will open up a wee bit more to external development (since non-root apps will have a harder time messing things up).", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_05:49:44", "killed": false, "user_key": "d61df5fbe839aa9362505e22d157410b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701956": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's pretty clear that Scoble's source is full of crap.  Here's a link to the Chumby wiki page on developing flash widgets:  <a href=\"http://wiki.chumby.com/mediawiki/index.php/Developing_widgets_for_chumby\" rel=\"nofollow\">http://wiki.chumby.com/mediawiki/index.php/Deve...</a>  The page says the Chumby runs Flash Lite 3.0, not a full fledged version of flash.  It goes on to list several supported and unsuported features (Stylesheets!?) and describes an implementation difference between Flash Lite and Flash Player in how the mouse pointer is detected with a touch screen.<br><br>My point is this:  if Scoble's source knows so much about Adobe's development of Flash I would expect him to know the difference between Flash Lite 3 and Flash Player 8.  That he doesn't makes me believe his other statements are not true.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:25:21", "killed": false, "user_key": "cfa697d6916dedad41b0109c0c74eb11", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701957": {"up_voted": false, "ip": "", "has_replies": false, "message": "Some more thoughts: All my typos aside [this is some really good booze, inbibe and type], Stevo is just following the telco paradigm for mobile devices. ATT has their own 'store' for ringtones etc as does T-Mobile and others. WHY is this a big surprise.<br><br>The hacker / jailbreaker community not only has an installer.app paradigm for apps, they also have a Debian like package manager RUNNING NOW. Google Cydia as well as 'jailbreak' or 'installer.app'.<br><br>What it boils down to is, Steve wants Flash quarantined to an 'App', preferably signed, and NOT in MobileSafari's web space.. a space devoted to web pages, VERY lean Javascript / AJAX [see Google and Facebook's iphone pages, etc], and RSS.<br><br>Outside that space of Mail and Web, the kids and flying baloney afficionados get the appSpace like 'game apps'.. hence the show of Spore as a segregated app. Now whether Adobe will play by these rules [they can with AIR] .. well, that's the question.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-10_08:57:40", "killed": false, "user_key": "drunkeneconomist", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701958": {"up_voted": false, "ip": "", "has_replies": false, "message": "Apple has always played hardball with Adobe over a number of things, basically to keep the core user experience [and support headaches] away from the vendors, this is why:<br><br>- Preview App supports basic PDF functionality.<br>- Ditto Quicktime and basic Flash.<br>- Ditto TextEdit and *.doc / *.rtf.<br><br>These apps run wicked quick on either PPC or Intel desktops.<br><br>Now we have a handset based on the [for a desktop, clunky, but for a handset okay] PPC ARM architecture.<br><br>If any of you have a jailbroken iphone or touch you know that the apps for RTF, PDF, and **basic** Flash video *cough* Youtube.app *cough* are acceptable.<br><br>But no way is Jobs going to allow Fuh-lash, a plugin that has had a checked past on the Mac OSX platform and that has even Intel users gnashing their teeth from time to time on his **new platform** with his **new userbase** of 2.5mil and rising iPhone users. Not with the current sucky telco infrastructure [in the US].<br><br>Sun is a whole other kettle of fish. They will develop a RUNTIME that allows APPs that Apple will SIGN.<br><br>Adobe wants a backdoor into  *Mobile*Safari and Apple's web experience. For the mobile end user, they want to be 'the internet'.. And Stevo is saying uh, NO, I'm going after enterprise, and for the flying baloney you have the SDK. This should be painfully obvious.<br><br>MobileSafari in firmware 1.x has set expectations. There is no copy/paste [which annoys me], no downloading, and no Youtube or other plugin handoff [*unless* you use javascript/URL transmogrification for Youtube].<br><br>But we can already see how Apple is embracing the Youtube/Google AJAX way of doing things, heck, check Apple's MobileSafari guidelines [\"Don't use or bring up Flash\"], and their addition of a Javascript error console inside Safari [Preferences &gt; Safari &gt; dot dot dot.<br><br>Actions speak louder than words. What, in their docs as well as Stevo's little diatribes are they doing? To what end? Draw your own conclusions.<br><br>Oh, another piece of yellow journalism from me:<br><br>Scooby stabs iPhone in the back:<br><br>Go to ipodtech's 'iphone.app' page:<br><br><br>Service Unavailable<br><br>The server is temporarily unable to service your request. Please try again later.<br>Reference #6.4cdcf180.1205151626.2bf7f7f5", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-10_08:42:39", "killed": false, "user_key": "drunkeneconomist", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701959": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why should Apple pay Adobe to license Flashlight or Flash; and/or pay Microsdoft to license Silverlight. Instead of paying royalty fees to support proprietary technologies; why shouldn't Apple just continue to support H.264 codec which is part of the MPEG-4 standard.<br><br>Wouldn't supporting open standards be better for the web, for mobile computing and for Apple and its' customers, then giving money to either Adobe or Microsoft that has the ironic side-effect of helping to establish a proprietary technology as a defacto standard. If Apple were to try to establish a proprietary technology, it would be their own. But from Apple's recent history, they've made every attempt to build their solutions on standard technologies. Why would anyone think they would act differently when it came to Flash. They convinced the largest repository of videos on the web, youtube, to move from Flash to H.264. What would make anyone think that they would ever get around to supporting Flash, other than to keep it as a negotiating tactic with Adobe. Why give up that chip earlier than absolutely necessary.<br><br>Apple did in fact choose to support the ActiveSync protocol on the iPhone which is part of the Microsoft Exchange email technologies. Apple added this technology only out of necessity; to be compatible with Exchange servers already deployed at thousands of corporations. But in that fight Blackberry is already running away with the lion's share of mobile email, because their system works most of the time; several long high-impact well-publicized outages not withstanding. Apple doesn't want to be associated with the Blackberry outages that take out all Blackberry devices, even iPhones if Apple were so inclined to support RIM technology. On the other hand if a companies Exchange servers go down, all email is down including desktops. The IT folks and Microsoft will take all the heat.<br><br>Plus, I can see Apple building out an email server solution, more robust than the open source solutions that are already included for free with OS X Server.<br><br>But as far as Flash or Silverlight is concerned, I wouldn't be holding my breath if I were either Adobe or Microsoft. Apple is already supporting an open standard (H.264) and getting everyone who would listen to move away from licensed proprietary technologies (Flash and Silverlight) and the obligatory royalties. I can only see that as a good thing. Now all these websites  who want to show up on the iPhone will have to provide their content in H.264.<br><br>Stop whining! It's cheaper to encode in H.264 anyway.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-13_13:41:19", "killed": false, "user_key": "0e7e429340d02f33e6fde70ea76629fc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701960": {"up_voted": false, "ip": "", "has_replies": false, "message": "according to apple announcement, apple just wants to treat all applications which developed with iPhone on their Store and play the application easy and securely for iPhone users. their (new) business model cannot work well when the flash player ran well on iPhone.  it is likely game console business model. although Store for iPhone is trial run, he has already noticed the key is distribution. he would just adjust the direction if the model failed after a year, then, it is enough to the Flash support on iPhone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-08_04:27:46", "killed": false, "user_key": "3e29d39dfd6245a6210f54c37dec7548", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701961": {"up_voted": false, "ip": "", "has_replies": false, "message": "Long rumored SVG support? Download WebKit. It's an intricate part.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_14:53:15", "killed": false, "user_key": "10e48a6585c86567b7c2371ab687fe0b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701962": {"up_voted": false, "ip": "", "has_replies": false, "message": "So, on the say-so of an anonymous source, you broadcast the rumor that Jobs is lying. All right. May the same happen to you.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_11:44:14", "killed": false, "user_key": "ce8f52d4c9b78e5d7a9ae6c387f425b1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701963": {"up_voted": false, "ip": "", "has_replies": false, "message": "And I expect Steve will eventually give them flash as Steve has built up Apple with a \"For the people\" type philosophy.  I expect it masks the corporate nature of Steve and Apple, but it has been extremely successful.<br>But yes, the people want flash, I want flash.  It is an amazing tool.  I can knock up control interfaces in minutes.  AJAX takes 10x as long.  I am not dising AJAX, its great for many things, but Flash is generally better overall from my experience. (Its just harder to learn, and generally I find web developers are set in there ways and don't like learning new tech)<br><br>I must admit, Steve DOES have one point.  Flash can EAT all your CPU, but this is usually because the developer writing the Flash app is a CRAP developer. (Common as they are usually designers by trade).  Flash is very efficient. Much more then AJAX.  It is the bad coding that is the issue.  And I can see Jobs having issue here.  But then again, you can code a javascript page bad as well..<br><br><br>James", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_07:00:57", "killed": false, "user_key": "jamiegau", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701964": {"up_voted": false, "ip": "", "has_replies": false, "message": "Steve Jobs is a clever but ignorant man. If people want Flash, which they clearly do then give them Flash. Thats it.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_03:21:52", "killed": false, "user_key": "fce1819b1656eeab76c73c3b0371600b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701965": {"up_voted": false, "ip": "", "has_replies": false, "message": "Let's not turn speculation on whether the iPhone will run flash into yet<br>another *yawn* flash-bashing session. I am sooo bored of uninformed<br>Flash bashing that does not stand up to a grain of truth.<br><br>As for Flash running slow on Macs versus PCs, it's a problem that occurs<br>mostly in Flash player 8 and below, as a difference in the frame<br>rendering engine. Any Flash developer worth their salt will know that if<br>you set the frame rate of the FLA to 21, 31, or 41, that \"bug\" will<br>disappear, and mac SWFs will run just as fast as their PC counterparts.<br>Don't blame the technology, blame the developer for being too clueless<br>to know how to code a decent Flash app. And apps designed for the VM2<br>(AS3) runtime in the Flash player run at the same speed on the PC as it<br>does the mac. So let's put that one to rest already.<br><br>As for Jobs not willing to put Flash on the iPhone, as a Flash/Flex<br>developer I can see that as a perfectly reasonable assertion. One reason<br>I won't currently touch Flash mobile development with a ten foot pole is<br>that the Flash Lite player is a pathetically chopped down version of the<br>Flash player which requires a mix of AS1 and AS2 coding techniques with<br>a \"hackiness\" that almost makes Lingo programming look robust. I love<br>AIR, it's the best thing since sliced bread for an RIA developer such as<br>myself; but for mobile, I'm waiting until they improve the technology a<br>bit. I want my FLV (cue dire straits song :)... in Flash Player 9<br>thank-you-very-much.<br><br>A more plausible reason for there being no Flash on the iPhone is that<br>there is currently no version of the Flash player that would integrate<br>well enough with the iPhone hardware: Flash Lite 2 is too clunky and<br>primitive for such a sophisticated device, and the current Flash Player<br>9 may be too resource intensive, as its garbage collection routines<br>could stand some improvement. Given the roadmap discussions on Flex 4 I<br>attended at a recent Flex converence, and the up and coming modular<br>nature of the next version of the Flex framework and some of the<br>improvements to the next Flash player, in all plausibility Apple is<br>simply waiting for Adobe to license a \"fuller\" version of the Flash<br>Player 9 or 10 for use on the iPhone.<br><br>I am sure there are a fair bit of politics involved, but in all<br>likelihood (attention: pure speculation ahead) Adobe and Apple may be in<br>talks to establish quicktime player capability in the next version of<br>the Flash Player, as the FLV standard is currently kicking Apple's<br>Quicktime off the net as the current de-facto standard for online video,<br>and it' unlikely Apple wants to invite that wolf into their home without<br>some serious adjustments. And given the iTunes licensing model, it's<br>quite possible they'll want some form of DRM for video and audio in<br>Flash as well.<br><br>Everyone assumes there's this incredibly aggressive war going on between<br>Apple and Adobe. What if there is no such thing going on, and Apple and<br>Adobe are merely taking their time to sort out the mutual licensing<br>rights? Quicktime, PDF, iTunes, DRM, FLV, SWF, Flash Player, iPhone OS<br>-- all these are proprietary technologies, on both sides, and getting<br>them to legally play well together will take time for the suits to work out.<br><br>So please, let's leave the limp \"Apple is doing an f-you to Adobe\"<br>rumours on Slashdot and MySpace where they belong.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_02:08:54", "killed": false, "user_key": "b997146f76dd0be7664d1c9f433fbc72", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701966": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why doesn't Apple just buy Adobe . . . and Yahoo, too, while they're at it?<br><br>What can they be saving that $18-billion-cash war chest for anyway?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_01:25:33", "killed": false, "user_key": "9fdd00567b43123589a30419880ed3a7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701967": {"up_voted": false, "ip": "", "has_replies": false, "message": "Strange that i-mode internet phones in Japan have supported Flash for several year snow..<br><br>doesn\u2019t make sense that something that works fine for developers and users in Japan, on the worlds most successful mobile internet platform, can\u2019t work on an iphone which probably has a more sophisticated operation system.<br><br><a href=\"http://www.nttdocomo.co.jp/eng.....index.html\" rel=\"nofollow\">http://www.nttdocomo.co.jp/eng.....index.html</a><br><br>i always wondered where apple got their \u201ci\u201d in ipod and iphone.. i think i-mode :)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-07_00:18:57", "killed": false, "user_key": "2c18069729f73beed86250bcb7c85674", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701968": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's funny to read some of these uninformed blog posting comments.<br><br>PDF support in Mac OS X and on the iPhone is using technology that Apple developed internally and independently of Adobe. (PDF is a published standard). The reason why PDF created by Mac OS X natively is PDF 1.4 is because Apple doesn't have a huge incentive to keep up with the PDF spec - people can just complain to Adobe :-). The latest spec should be PDF 1.7, when Acrobat 8.0 came out.<br><br>The reason why Preview runs so fast is because it just rasterizes the PDF page - displays the image. For better or worse, Preview owns the \"MIME\" type for rendering PDF. Most people do not need a lot of the advanced features that a PDF created by Adobe Acrobat (like filling in forms) or other Adobe applications. But Adobe Reader does support all the features - that is one reason why the Reader for both Mac and Windows is so fat. And Adobe, at least for the Windows Adobe Reader, has been working on improving the launch of Adobe Reader. If you launch Adobe Reader 7.0 or 8.0 - it will launch faster than previous versions.<br><br>No graphics professional is going to export PDF from Mac OS X PDF engine and send it to printer. They will export using InDesign, Photoshop, etc... where the PDF output will be to the latest spec and support the print options and info the print professionals are looking for (i.e. color separation, etc..)<br><br>Adobe nor Macromedia has ever charged for the desktop Flash Player for Windows, Mac or Linux for end users.<br>Adobe does license the desktop Flash Player to corporations if they need something customized or need to distribute it as part of their application.<br>Adobe does charge to license Flash Lite - the \"mobile version\" of Flash.<br><br>And there is a reason for this - because it takes a lot of work to develop and port Flash Lite to a wide and diverse number of platforms, and that work should be compensated as long as Adobe can derive licensing fees. But that day is probably coming to an end sooner rather than later, because I highly doubt Microsoft is licensing Silverlight as expensively as Adobe is for Flash Lite - in fact, it would not surprise me if Microsoft was giving Silverlight free to Nokia or even paying Nokia to include Flash Lite (unless there is something anti-competitive about that...)<br><br>As for the Flash Player 7 SDK - well, the reason why that hasn't been updated is due to Adobe's focus on the mobile handset and the lack of interest and ROI case to update that SDK as far as I can tell.<br><br>As for all the complaints about Adobe releasing Mac software late, especially for Creative Suites to be Mac OS X native, Leopard, etc.. native - Anyone who has developed software understand the complexities of multiple releases and bug fixes - it is a nightmare. Both Apple and Adobe have their own agendas, yet are still interdependent on each other for part of their success. Apple's OS releases don't fit perfectly with Adobe's releases - and also, neither of their development schedules also align with Microsoft's. Think about it - Adobe is one of the few remaining large ISV's that is cross platform for most of their applications for both Windows and Macintosh.<br><br>I'd say that in the early days, Apple and Adobe needed each other - and had a symbiotic relationship.  The Mac would not have survived without the LaserWriter and PostScript. When Jobs licensed PostScript, he also bought 25% of Adobe. I think Adobe would have been fine without Apple because PostScript was really the only game in town for a great printing engine, and Adobe literally printed $ with PostScript (an old-timer Adobe friend of mine said that in the good old days, Adobe had the highest revenue/employee in the U.S.). All the major laser printing companies licensed PostScript from Adobe in the early days.<br><br>When Steve Jobs returned to Apple in 1997, Jobs visited Adobe to reassure Adobe management that he was going to fix Apple and wanted to reassure that Adobe was committed to the Mac platform.<br><br>After John Warnock retired from Adobe as CEO (he is still co-chairman), and Bruce Chizen took over, I think, for one reason or another, Adobe and Apple started drifting apart. Chizen was more Wall Street oriented.<br><br>I really don't think Steve Jobs has that much respect for Chizen. I met an ex-Adobe person at a MacWorld Expo about 2 years ago, and she told me the story about her first day at Apple, being in an elevator with Jobs. Jobs saw that she was a new employee at Apple and carrying stuff with her to bring to her desk, and he asked where she worked previously. When she said Adobe, Jobs went nuts and asked, \"What the hell is Bruce trying to do at Adobe - make it into Microsoft!\"<br><br>I wonder what Jobs thinks of Shantanu Narayen. At least Narayen has an engineering background, something that Jobs would respect a whole lot more than Chizen, who I think Jobs has always thought of as a \"sales\" guy.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_23:39:43", "killed": false, "user_key": "c521c8d9f59e6ffde66b24d93f8a7741", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701969": {"up_voted": false, "ip": "", "has_replies": false, "message": "You can visit, we are going concern now. But today we have generated <a href=\"http://nghecon6.googlepages.com\" rel=\"nofollow\"><br>&lt;abbr title=\"Professional top blogs report\"&gt; a more pro top blogs daily report &lt;/abbr&gt; </a>. Now I've just posted <a href=\"http://nghecon6.googlepages.com\" rel=\"nofollow\">&lt;abbr title=\"Professional top blogs report\"&gt; the newest report &lt;/abbr&gt; </a>, see and reply me some comments. Thanks.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_23:00:13", "killed": false, "user_key": "bcbabcc7c0ba001fff6f30012667213f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701970": {"up_voted": false, "ip": "", "has_replies": false, "message": "We've just report <a href=\"http://nghecon6.googlepages.com\" rel=\"nofollow\"><br>&lt;acronym title=\"Top Blogs\"&gt; the top blogs of the day&lt;/acronym&gt;</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_21:09:06", "killed": false, "user_key": "de11c9ec8c27a90b51fa25871fb5e9a9", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701971": {"up_voted": false, "ip": "", "has_replies": false, "message": "That Steve Jobs, he's a tricky little fellow!!<br><br>Global Warming alarmists beware... <a href=\"http://EvilCarbon.com\" rel=\"nofollow\">EvilCarbon.com</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_17:08:39", "killed": false, "user_key": "9029e772f3fb5272685aa5800f5ba972", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701972": {"up_voted": false, "ip": "", "has_replies": false, "message": "My G4 titanium powerbook, 800mhz, still worked brilliant fast and had the latest operating system (at that time, Tiger) until I finally replaced it with a MBP.<br><br>The tibook could handle anything:  loads of apps open, loads of tabs, games, high res videos, whatever.<br><br>Except Flash.  It really, really struggled with flash on webpages.  Not just intense flash structured sites, but web pages with flash ads on them.  It would go slow, performance was hideously degraded, flash animations would stutter and stagger and be slow.<br><br>There was nothing wrong with it, it just found Flash a struggle.   Now I am not technical enough to know how an 800mhz G4 compares with the iPhone's processor.  But I can see why there could be problems with certain implementations of Flash on the iPhone.<br><br>That said I would rather take an optional, limited or poor implementation than no Flash at all.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_17:17:12", "killed": false, "user_key": "23a56be8047431e7baf9370e7e2a3e84", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701973": {"up_voted": false, "ip": "", "has_replies": false, "message": "Great attention grabbing headline, pointless post.<br><br>Apple had Windows running on a Mac how far back? How much earlier than the switch to Intel chips made it more REALISTIC to run Windows on a Mac?<br><br>As others of have said, Jobs didn't say it couldn't be done. What he said was: \"it performs too slowly on the iPhone\". Considering how poorly Flash performs on my desktop Mac, a point Robert that you seem to be ignoring completely, I sure as hell don't want it on my iPhone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:59:08", "killed": false, "user_key": "ddb8ec9d157b68738a1511e547446929", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701974": {"up_voted": false, "ip": "", "has_replies": false, "message": "When Apple is referring to the iphone as one device taking advantage of a \"wireless platform\" and Adobe is also referring to Flash as a platform, it is easy to see where the conflict lies.  If Apple lets Flash on the iPhone it has the potential to undercut the OS as a platform.<br><br>They are just looking down the road.  Apple does not want to see everyone using AIR apps that run on your phone, and your computer and your Apple TV, and you never see the OS (and it doesn't matter what hardware you are running). One can understand why pretty easily.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:02:55", "killed": false, "user_key": "b208f0f281f076e69195645510201ee1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701975": {"up_voted": false, "ip": "", "has_replies": false, "message": "Apple has hired some SVG experts over the last few years. Webkit is growing great wrt SVG support, not only for on-line apps. Maybe it matters?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:42:46", "killed": false, "user_key": "4227f69433a3939b1591790ba240d158", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701976": {"up_voted": false, "ip": "", "has_replies": false, "message": "Makes perfect sense.<br><br>Apple probably was getting back at Adobe with OSX with the native ability to write to a .pdf file from print mode completely eliminating the need for the overpriced Adobe writer ap.<br><br>But then again Adobe got were it was from Apple with postcript...<br><br>Adobe wants to play with the big boys, but they just don't have that much in the quiver to give Apple and MS Google a run for the money.  Lot's of free Adobe type aps out there that work just as well...", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_17:03:52", "killed": false, "user_key": "f5a28011b9c896071d16b5b6d75d5bf7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701977": {"up_voted": false, "ip": "", "has_replies": false, "message": "Just a thought, but do you consider the difficulties involved in re-creating the ui required by flash in a touch environment to be trivial enough that it's not part of the reason we don't see flash on the iPhone? No mouse to mouse-over with; no drag&drop; how to handle both the screen resolution and zooming of moving interactive flash pages?what about all those wonderful UI elements invented by the flash app developers? It all sounds wonderfully hit &amp; miss whether a page would work or not. Exactly the experience. Most iPhone users are looking for....isn't it?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_15:21:24", "killed": false, "user_key": "696088d48c21d8768ffc66cf660e2e3f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701978": {"up_voted": false, "ip": "", "has_replies": false, "message": "PDF is already built-into the iPod Touch and iPhone. There is no need for another license agreement with Adobe (Apple licensed it for OS X years ago). This talk is nonsense.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_14:03:10", "killed": false, "user_key": "ba1c05342e41a873b90cb782c1e0efff", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701979": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think there is more to this than meets the eye. I believe QuickTime and the Movie Industry is a factor.<br><br>I was writing about that just yesterday:<br><br><a href=\"http://ekive.blogspot.com/2008/03/no-flash-on-iphone-its-not-about-iphone.html\" rel=\"nofollow\">http://ekive.blogspot.com/2008/03/no-flash-on-i...</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:43:58", "killed": false, "user_key": "2c09f44f1c8c618027158d9a91e70ddd", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701980": {"up_voted": false, "ip": "", "has_replies": false, "message": "Anyone want some fresh crow?  How shall I cook for you?  The first batch comes off the grill in 10 minutes.  If you need a towel to wipe off the egg on your face, we have some Microsoft towels to pass out.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:53:00", "killed": false, "user_key": "3c769a259406986145d70d5ef4a739fa", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701981": {"up_voted": false, "ip": "", "has_replies": false, "message": "Flash would open up a whole new development platform on the iPhone that Apple wouldn't be able to control. It would offer developers cross platform support for their apps as well as a steaming video player that would give users more options to put video on their phone outside of buying it from Apple. This goes completely against Apple's non-open business model.<br><br>I'm not doubting that there are a lot of performance concerns, both in processing and bandwidth. I'm sure that a web site running a bunch of embedded flash files would probably run pretty bad on the iPhone, but considering what I've seen run on this phone, I'm sure it's not something that the geniuses at Apple couldn't figure out. I really feel this is more about Apple wanting total control of the iPhone platform than it is a technical issue. The same is true for Java.<br><br>Or maybe Apple is coming out with their own competitor to Flash that runs on the iPhone too.  Imagine being able to use core animation, coverflow, ect. on your web site?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:33:52", "killed": false, "user_key": "21fb7ca307badfd413cec7f7f1d6e0f5", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701982": {"up_voted": false, "ip": "", "has_replies": false, "message": "On your mobile or other portable Internet handheld device, go to <a href=\"http://www.prada.com\" rel=\"nofollow\">www.prada.com</a> and let us know if the Flash playback is acceptable.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:22:04", "killed": false, "user_key": "9cfe04303d055c07b074a794c9b7958e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701983": {"up_voted": false, "ip": "", "has_replies": false, "message": "One: Who gives a shit whether or not Flash runs on the goddamned iPhone. Seriously. Who cares? It's just another \"thing\" like bluetooth headsets voice dialing or user-replaceable battery that look great on paper but you would never use.<br><br>Two: People, buy devices as they exist today. It's fine to want to see them improve, but seriously, if you need shitty Flash Lite then get something else.<br><br>Three: If you think desktop Flash is coming to the iPhone or any phone, then I would submit to you that you have basically no understanding of web technologies, modern desktop computers, or mobile devices. So STFU.<br><br>Four: Robert, you basically called Jobs a liar in the title of your post. You are super classy.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:19:25", "killed": false, "user_key": "9f4671610b904bd8063f305662f7b6c6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701984": {"up_voted": false, "ip": "", "has_replies": false, "message": "I find Flash to be a CPU hog on my laptop.  I'm not missing having it drag down the performance and battery life on my iPhone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_12:18:20", "killed": false, "user_key": "8eb3659fe5e12d953c4211379c3e4226", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701985": {"up_voted": false, "ip": "", "has_replies": false, "message": "Apple hasn't said that Flash CAN'T work on the iPhone,they've said that performance is or would be lousy.  They either know this because it's on the iPhone in the lab and it sucks, or it's conjecture based on what they know about Flash and iPhone hardware.  Either way they know what they are talking about and I don't see they're lying about anything.  David Jacobs seems to be an immature little 'tard.  Make your own phone and put flash on it.  The iPhone is how Apple wants it to be.  If you don't want a phone like that, get another phone.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:31:12", "killed": false, "user_key": "e9f65a6d06d774600b04be0c2bb606df", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701986": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Thus is the real downside with Apple retaining so much control over the iPhone.\"<br><br>You conveniently decide to ignore the real upside to Apple retaining so much control over the iPhone: Its the best thing out there right now, at least for me. If flash is so important to you, I'm sure you can find a phone that runs it. Then lets hear you talk about downsides :p", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:27:37", "killed": false, "user_key": "62df2ce940b84b60f8eef26d8e615c13", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701987": {"up_voted": false, "ip": "", "has_replies": false, "message": "Sometimes the blogosphere seems to be one giant echo chamber. See the comments at <a href=\"http://tinyurl.com/2ghsdb\" rel=\"nofollow\">http://tinyurl.com/2ghsdb</a>", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:27:48", "killed": false, "user_key": "9cfe04303d055c07b074a794c9b7958e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701988": {"up_voted": false, "ip": "", "has_replies": false, "message": "Why is everyone forgetting that Apple needs to control the User Experience. Rich flash applications are too close for comfort for Jobs. If Apple loses control of the UI, then they'll lose differentiation from their competitors.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:26:44", "killed": false, "user_key": "5009eabebb7194d399cc1f15f48ce04c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701989": {"up_voted": false, "ip": "", "has_replies": false, "message": "Flash just needs to go away like the floppy disk! If you had to program that poop, and had to deal with its limitations, then you'd get rid of it too!<br><br>Adobe makes tons of money selling lic. so software that is like from the 80's or something. It's really lame. I think Adobe needs to quit relying on old stuff and start innovation again so that they can move things forward.<br><br>Flash is really backward - I realize there is some pain, but move to AJAX and real plugins like QuickTime for high-end video work. It's gotta happen!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:23:16", "killed": false, "user_key": "3afd185912c2d3d910ae4492f670c9f7", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701990": {"up_voted": false, "ip": "", "has_replies": false, "message": "I'd LOVE for my half-assed guess to be proven wrong and shown an iPhone happily running Flash.  The argument that the iPhone \"plays H.264 just fine\" so it must be able to run Flash isn't that compelling, because I thought iPhone/iPod teardowns reveal chips that have <i>hardware</i> support specifically for H.264 decoding.  (IIRC they've got support for H.264 <i>encoding</i> as well, not that Apple has implemented that.)<br><br>I don't know why Adobe would insist on using their PDF renderer.  On a stock Mac, the Preview app (written by Apple) loads PDFs instantly: Boom.  Install Acrobat and load a PDF, and it's more like, Tick... tick... tick... tick... tick...<br><br>(<i>splash screen</i>)<br><br>...tick... tick... tick... tick... tick... tick...<br><br>(<i>checks watch</i>)<br><br>...tick... tick... tick... tick... tick...  tick...<br><br>(<i>checks calendar</i>)<br><br>...tick... tick... tick... tick... tick... Boom.<br><br>(apologies to <a href=\"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=267782171&amp;id=267782170&amp;s=143441\" rel=\"nofollow\">The Hives</a>)<br><br>On top of that it seems like every other day, there are holes in Adobe's PDF renderer you can <a href=\"http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9061938\" rel=\"nofollow\">drive a truck through</a>.  So why would Adobe insist upon Apple using something that's demonstrably slower and buggier?  Wouldn't beating up Steve Jobs to take his lunch money be a lot easier?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_11:26:23", "killed": false, "user_key": "67ddf598c32d0ae929852af89fa4b272", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701991": {"up_voted": false, "ip": "", "has_replies": false, "message": "\"Adobe is probably very high on the Jobs shit list.\"<br><br>Actually, it's more like they're on the \"why do we care about  those clowns anymore?\" list.<br><br>Steve's not into the revenge thing.  When someone tries to fuck with Apple, then Apple will just ignore them.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:52:29", "killed": false, "user_key": "8f8ff21a67437febebc70afd19364e95", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701992": {"up_voted": false, "ip": "", "has_replies": false, "message": "Most of you commenting that \"no way Flash won't run on the iPhone!\" (including the author), are just completely clued out as to the facts.  If you do a few minutes of research, you will see that what Jobs' said is absolutely true and there are severe technical and performance limitations to running Flash on the iPhone pretty much exactly as he said.  Regardless of the political stuff that may be happening, Jobs is not lying when he says that is the reason.<br><br>To those supporting the \"Apple should (or is) buy(ing) Adobe\" theory, you couldn't be more wrong.  Apple, like any well managed company doesn't buy out other companies unless they have something of value.<br><br>Adobe is far over-rated right now in terms of value.  None of Adobe's apps are well-coded or well-designed and the code is all *carbon* code, which is virtually useless on a modern Mac.  Adobe is in the process of, (and anyone who buys it would also be doing this), throwing out all of the code behind all of their products for the Mac and re-writing them as Cocoa apps.  If you have to re-write all the apps from scratch, what's the value in buying the company?<br><br>Controlling the PDF standard is pretty much the only thing of value in the company and it's unlikely that Apple would pay the necessary millions just for that.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:56:54", "killed": false, "user_key": "2aad7dded4ccb92277849f28086f489d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701993": {"up_voted": false, "ip": "", "has_replies": false, "message": "Your source is yanking your chain.  Apple's Quartz 2D library is the best PDF renderer there  is, period (also the fastest).  Apple's not going to damage the Mac by adopting Adobe's rendering code.<br><br>Adobe wants flash on the iPhone and Apple doesn't.   Whatever games Adobe may be playing  here, Apple's not participating.", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:48:37", "killed": false, "user_key": "8f8ff21a67437febebc70afd19364e95", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701994": {"up_voted": false, "ip": "", "has_replies": false, "message": "Yeahh Flash on the iPhone....that is like Steve Jobs next president of USA!!!<br>C'mon", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_10:31:35", "killed": false, "user_key": "fcb77d0b2145a88baca078c4cabc2934", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701995": {"up_voted": false, "ip": "", "has_replies": false, "message": "robert... wouldn't it make sense that maybe apple could  create a version of flash on their own via a quicktime integration to make it work on the iphone?<br><br>seems like adobe and apple are in a pissing match and no one will win there.<br><br>seems even more unlikely that apple and microsoft will get in bed w/ a silverlight integration on the iphone...<br><br>seems like they could create a standard on their own and go from there vs adobe/etc....<br><br>just a thought... love fastcompany.tv btw", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:03:02", "killed": false, "user_key": "1bbe2b67519c84a4767ad4f70d5804ae", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701996": {"up_voted": false, "ip": "", "has_replies": false, "message": "What would be the upside of Adobe having their PDF reader used in the iPhone?  Would Apple then need to pay a licensing fee?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:04:50", "killed": false, "user_key": "04d6b8e8d3c68899ac88eb8623392150", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701997": {"up_voted": false, "ip": "", "has_replies": false, "message": "Thus is the real downside with Apple retaining so much control over the iPhone. They'll tell me what I want on my iPhone dammit and I'll like it. Well, F you Apple, I want F'ing Flash on my F'ing iPhone. I couldn't care what kind of pissing match your having with Adobe. I see no technical reason why Flash shouldn't work fine on an iPhone. It ain't F'ing rocket science. F!", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_03:02:26", "killed": false, "user_key": "35e156845af26eb52d00e3531c47c157", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701998": {"up_voted": false, "ip": "", "has_replies": false, "message": "Ya... Flash has been running on the Iphone for a long time internally.... i heard they even tried a few Flex applications on it", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_02:53:39", "killed": false, "user_key": "8c666ecf9871495bcf7605655a874593", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9701999": {"up_voted": false, "ip": "", "has_replies": false, "message": "It's all BS.<br><br>I mean, now <a href=\"http://www.appleinsider.com/articles/08/03/08/sun_plans_java_for_iphone_ipod_touch.html\" rel=\"nofollow\">Sun says they'll develop a JRE for the iPhone</a>.<br><br>So Adobe can't develop a reasonable flash engine?", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-09_12:24:26", "killed": false, "user_key": "770ff70a158bbeccd87d1da27fba00dc", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9702000": {"up_voted": false, "ip": "", "has_replies": false, "message": "I love my iPhone.  I'm a designer and adore things that look &amp; feel \"pretty\".  However, I also appreciate the need for form AND function - and the iPhone is certainly lacking in the latter category.<br><br>I simply don't buy this line that Flash can't run on the iPhone as it opens them up to it being an inferior product next to the Nokia N95.  I am also getting tired of this trite line from Apple suggesting that they are doing us a favour by saving us from ourselves in terms of battery life.  This could have been presented, in marketing terms, in a much better way: \"The iphone has comparable battery life to competitors\" etc.<br><br>I wholly agree that there is something else going on here.  Only time, with the possible caveat of non-disclosure agreements, will tell on this one.<br><br>Rumour or not, thanks for posting this Robert.<br><br>Scott.<br><br>P.S.  Please excuse my quaint, archaic British spelling.  Q.V. \"Rumour\" and \"Favour\" ;-)", "is_last_child": false, "can_reply": false, "down_voted": false, "real_date": "2008-03-06_08:21:54", "killed": false, "user_key": "bf4c865dc3c2935766557698a7810c56", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "1 year ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": "", "theme": 4, "reply_position": true, "disqus_logo": false}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "18346832", "user_id": "anonymous", "forum_id": "125200", "hash": -3889776855320646838}, "thread": {"total_posts": 0, "paginate": false, "per_page": 0, "slug": "is_steve_jobs_lying_about_flash_not_working_on_iphone", "num_pages": 1, "days_alive": 0, "realtime_paused": true, "id": 18346832, "num_posts": 71, "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=is_steve_jobs_lying_about_flash_not_working_on_iphone' +
		'&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/is_steve_jobs_lying_about_flash_not_working_on_iphone/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='	+ 'is_steve_jobs_lying_about_flash_not_working_on_iphone'
			+ '&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/is_steve_jobs_lying_about_flash_not_working_on_iphone/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">71</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://scobleizer.disqus.com/is_steve_jobs_lying_about_flash_not_working_on_iphone/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/is_steve_jobs_lying_about_flash_not_working_on_iphone/">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/is_steve_jobs_lying_about_flash_not_working_on_iphone/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:18346832" 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'				: 'is_steve_jobs_lying_about_flash_not_working_on_iphone',
			// 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/is_steve_jobs_lying_about_flash_not_working_on_iphone/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='	+ 'is_steve_jobs_lying_about_flash_not_working_on_iphone'
			+ '&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='	+ 'is_steve_jobs_lying_about_flash_not_working_on_iphone'
			+ '&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='		+ 'is_steve_jobs_lying_about_flash_not_working_on_iphone'
				+ '&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/18346832/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-9701998">\
	 <div id="dsq-comment-header-9701998" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701998" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701998">GeoP</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701998" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701998" class="dsq-comment-message">Ya... Flash has been running on the Iphone for a long time internally.... i heard they even tried a few Flex applications on it</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701930">\
	 <div id="dsq-comment-header-9701930" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701930" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701930" href="http://www.mixin.com/" target="_blank" rel="nofollow">Frédéric Sidler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701930" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701930" class="dsq-comment-message">Are we talking about a real flash player like the one you can install on a normal computer with all features, etc. Or are we talking about the flash lite 1, 2 or 3 that is hard to find, hard to install and with limited functionnalities<br><br>here are the direct links to the "lite" player<br><br>flash lite 3 features : <a href="http://www.adobe.com/products/flashlite/features/" rel="nofollow">http://www.adobe.com/products/flashlite/features/</a><br>flash lite 3 download site : <a href="https://www.adobe.com/cfusion/entitlement/index.cfm?e=labs%255Fflashlite3" rel="nofollow">https://www.adobe.com/cfusion/entitlement/index...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701997">\
	 <div id="dsq-comment-header-9701997" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701997" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701997" href="http://www.theconnectedworld.net/" target="_blank" rel="nofollow">David Jacobs</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701997" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701997" class="dsq-comment-message">Thus is the real downside with Apple retaining so much control over the iPhone. They\'ll tell me what I want on my iPhone dammit and I\'ll like it. Well, F you Apple, I want F\'ing Flash on my F\'ing iPhone. I couldn\'t care what kind of pissing match your having with Adobe. I see no technical reason why Flash shouldn\'t work fine on an iPhone. It ain\'t F\'ing rocket science. F!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701995">\
	 <div id="dsq-comment-header-9701995" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701995" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701995" href="http://www.theoprahfanclub.com/" target="_blank" rel="nofollow">david amodt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701995" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701995" class="dsq-comment-message">robert... wouldn\'t it make sense that maybe apple could  create a version of flash on their own via a quicktime integration to make it work on the iphone?<br><br>seems like adobe and apple are in a pissing match and no one will win there.<br><br>seems even more unlikely that apple and microsoft will get in bed w/ a silverlight integration on the iphone...<br><br>seems like they could create a standard on their own and go from there vs adobe/etc....<br><br>just a thought... love fastcompany.tv btw</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701996">\
	 <div id="dsq-comment-header-9701996" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701996" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701996" href="http://www.eflorenzano.com/" target="_blank" rel="nofollow">Eric Florenzano</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701996" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701996" class="dsq-comment-message">What would be the upside of Adobe having their PDF reader used in the iPhone?  Would Apple then need to pay a licensing fee?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701950">\
	 <div id="dsq-comment-header-9701950" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701950" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701950" href="http://www.symphonious.net/" target="_blank" rel="nofollow">Adrian Sutton</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701950" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701950" class="dsq-comment-message">I think you\'re all missing an important detail - Apple didn\'t say it\'s impossible to get flash on the iPhone and they didn\'t say they haven\'t done it - they said it\'s not technically feasible to put the *full* flash on the iPhone given CPU power and probably more importantly battery life and they said that the mobile version isn\'t worth having.<br><br>All this adds up if people are confusing the mobile versions of flash with the full desktop version of flash. Technical limitations keep the full version off the iPhone, user experience (as perceived by Apple) keeps the mobile version off.<br><br>Jobs has been known to lie before but I doubt he\'d lie to his shareholders and then backflip the next day, that\'s pretty much asking for a lawsuite. :P</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701939">\
	 <div id="dsq-comment-header-9701939" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701939" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701939">thomas</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701939" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701939" class="dsq-comment-message">wanna bet it\'s about money? My guess is Adobe would like Apple to pay a licensing fee for the Flash player... Apple in return would like Adobe to pay for installing the Flash Player.<br><br>Do you really think Nokia is installing Silverlight on all their phones because they think it\'s such a cool technology? I would also bet that Nokia is getting paid a bucket load of cash to include Silverlight on their S60 devices... as this move otherwise makes zero business sense to me.<br><br>As a matter of fact I would dare to say that Microsoft has a dedicated war chest of 1 billion US dollars to make Silverlight the defacto standard for RIAs...<br><br>once they reached this goal they will abandon all support for platforms other than Windows or Windows Mobile. They have done this with Internet Explorer before. Why would they suddenly change their behavior.<br><br>But coming back to Apple and Flash, I strongly believe there is a revenue model issue behind the lack of Flash on the iPhone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701940">\
	 <div id="dsq-comment-header-9701940" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701940" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701940" href="http://brandonlive.com/" target="_blank" rel="nofollow">Brandon Paddock</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701940" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701940" class="dsq-comment-message">All I read out of what Jobs said was, "Adobe\'s Flash versions are either too slow or too crappy for our device.  They lack a version appropriate to the iPhone."<br><br>In my mind, I read that with one additional smug-filled sentence, "So we went and wrote our own, because we\'re just that awesome."</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701941">\
	 <div id="dsq-comment-header-9701941" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701941" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701941" href="http://www.mixin.com/" target="_blank" rel="nofollow">Frédéric Sidler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701941" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701941" class="dsq-comment-message">@thomas I totally agree that there should be a revenue model issue behind the scene. But can somebody explain the different models between the player for your computer and the player for your phone. For me what I got is that the phone manufacturer has to pay Adobe to include the player on the phone, but I may be wrong.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701942">\
	 <div id="dsq-comment-header-9701942" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701942" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701942">Prasoon</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701942" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701942" class="dsq-comment-message">A few months back, I had stumbled upon an article which said that buying Adobe would be the most logical thing Apple could do. Now, if Jobs goes against Flash n lets says he manages to do it well with SVG etc, could this be a fit somehow to support the whole buyout theory? Make a competitor weak, ignore - create another benchmark n someday sometime in future buy it out.<br>Somewhere I think in corner of the mind that it could be possible. Any comments?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701943">\
	 <div id="dsq-comment-header-9701943" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701943" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701943" href="http://klessblog.blogspot.com/" target="_blank" rel="nofollow">Larry Kless</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701943" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701943" class="dsq-comment-message">It\'s got to be a matter of time that Apple adds Flash on the iPhone in some capacity. Especially for video and other Flash-based content. Come on Steve, what\'s the real reason? Flash would kick @$$ on the iPhone!<br><br>Maybe he is playing hardball on PDF\'s but would he make the same mistakes of the past and not fully open up system?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701944">\
	 <div id="dsq-comment-header-9701944" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701944" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701944" href="http://klessblog.blogspot.com/" target="_blank" rel="nofollow">Larry Kless</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701944" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701944" class="dsq-comment-message">Good point Thomas, I also agree. That\'s what it\'s usually all about. The mighty dollar.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701945">\
	 <div id="dsq-comment-header-9701945" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701945" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701945">Christopher Coulter</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701945" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701945" class="dsq-comment-message">So bloggers and people from Arkansas can understand...<br><br>Drat. Big wrench no works good, and da small wrench no works good either. Sheeeucks. Well I reckon, I needsha medium wrench. Gee Golly, no medium at the\'s Ace Hardeeware? Well shucks, I betcha I can make a medium wrench outta some of the lawn car parts. Yesirreee.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701946">\
	 <div id="dsq-comment-header-9701946" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701946" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701946" href="http://asbjor.nu/" target="_blank" rel="nofollow">Asbjørn Ulsberg</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701946" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701946" class="dsq-comment-message">I believe it\'s mostly politics and money, but there might be a technical issue too. Adobe isn\'t exactly famous for writing small, resource-efficient applications. Think Adobe Reader (80MB and 1 minute startup times to read PDF files? WTF!), Photoshop and even the Flash player itself. There\'s nothing that eats more CPU and RAM on my system than Adobe\'s applications and Flash is often one of the largest sinners.<br><br>So if Apple is refusing to run Adobe\'s crap because it\'s ... well -- crap -- I don\'t blame them.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701947">\
	 <div id="dsq-comment-header-9701947" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701947" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701947">Ross</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701947" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701947" class="dsq-comment-message">I can\'t see this being about PDF.  Why would Apple rely on a third party for something that is so core to their OS?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701948">\
	 <div id="dsq-comment-header-9701948" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701948" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701948" href="http://twitter.com/aeroG" target="_blank" rel="nofollow">Gordon R. Vaughan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701948" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701948" class="dsq-comment-message">Yeah, I keep thinking Apple\'s going to make a major acquisition, whether Adobe or someone else.<br><br>Wasn\'t Jobs just talking about their cash hoard ($18Bln) this week, too, and how they did NOT plan to distribute any of that via either dividends or buybacks?<br><br>Maybe Jobs figures the Nokia/Silverlight deal ought to make Adobe more willing to make a deal?<br><br>I wonder who else Apple might be looking at, too. It\'s sure looked lately like they could use a lot more programmers!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701949">\
	 <div id="dsq-comment-header-9701949" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701949" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701949" href="http://equinox-of-insanity.com/" target="_blank" rel="nofollow">Nima</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701949" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701949" class="dsq-comment-message">FYI, there\'s something wrong with Apple\'s PDF renderer. If you use it to generate a PDF you can\'t use that file for printing from <a href="http://Lulu.com" rel="nofollow">Lulu.com</a>. People have had numerous problems where pages don\'t print correctly, and now Lulu won\'t even accept a PDF that\'s been created by the Apple renderer.<br><br>An Apple generated PDF on Leopard is marked as PDF 1.4, while a PDF created with CS3 (InDesign, for example) is marked PDF 1.6, so Apple\'s also behind in that way, too. A switch to Adobe would be an improvement.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701955">\
	 <div id="dsq-comment-header-9701955" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701955" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701955" href="http://mysawdust.com/blogs/curlyshavings" target="_blank" rel="nofollow">Jeffrey</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701955" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701955" class="dsq-comment-message">I haven\'t looked recently, but at one point, all iPhone processes were running as root, usually understood as a Bad Thing. When (not if) this is corrected, my suspicion is that the iPhone will open up a wee bit more to external development (since non-root apps will have a harder time messing things up).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701954">\
	 <div id="dsq-comment-header-9701954" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701954" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701954">jamiegau</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701954" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701954" class="dsq-comment-message">Ok,<br>Lets get some facts straight.<br>Steve, details of not, is misleading the share holders and iPhone owners.<br>Flash Player has large chunks of machine code to make it as fast as possible.<br>As the iPhone can play H.264 content, known to be VERY CPU hungry, I find it inconceivable that the iPhone cannot operate well.<br>If anything, he may be talking about the FULL version of flash and not the Flash Lite version that is more designed for small devices like a Mobile phone.<br>But really, if it can play H.264, it should easily do Flash (Full version) reasonably.  And if some one said, a Flex app was seen on it.  That points to full flash support (Which would be great).<br><br>This issue has always been about MONEY.  Adobe\'s business model is licensing Flash Player as an embedded player.  That is the long term agenda here.  That is why they are making it all Open source for development.  The IDE\'s etc are also amazingly cheap.  The money must be in the licensing. (I have blogged about this before and Adobes plan to take over the world) <a href="http://www.crafted.com.au/blog" rel="nofollow">http://www.crafted.com.au/blog</a> search for "Adobes plan for world domination"<br><br>The PDF issues makes complete sense. Books/mainly-Newspapers are on the way out.  Adobe would really like PDF to become a dominant format used in that future.  But then again, Apple probably wants to take a run at this themselves.  They have FairPlay DRM, it\'s an important technology to the Itunes empire.<br>As apple, would you not want to tackle reading material too...<br><br>It will be interesting to see what happens.  I imagine Adobe will fold.  They don;t really have any leverage here...  Apart from building pdf readers into flash.  Which has been done..  It is an interesting juncture in the evolution of the internet and digital (reading) media.<br><br>James</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701935">\
	 <div id="dsq-comment-header-9701935" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701935" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701935">Francesco Simi</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701935" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701935" class="dsq-comment-message">Maybe Apple is in talk with Microsoft to drop flash and go with Silverlight.<br><br>Scott Guthrie Hinted at Silverlight on the iPhone at the Mix 08 in Las Vegas:<br><br><a href="http://www.psynixis.com/blog/2008/03/05/scott-guthrie-hints-at-silverlight-on-iphone/" rel="nofollow">http://www.psynixis.com/blog/2008/03/05/scott-g...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701953">\
	 <div id="dsq-comment-header-9701953" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701953" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701953">Matt_</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701953" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701953" class="dsq-comment-message">Abode has been holding back its  Flash SDK for Devices and the SDK  it only Supports Flash 7.This is a major Issue with the Wii and other devices that support Flash .<br><br><a href="http://my.opera.com/haavard/blog/2007/04/13/wii-browser-out-but-why-flash-7-and-not-8-or-9" rel="nofollow">http://my.opera.com/haavard/blog/2007/04/13/wii...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701952">\
	 <div id="dsq-comment-header-9701952" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701952" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701952">joe</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701952" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701952" class="dsq-comment-message">@James Gardiner<br><br>regarding h.264 support.  The iphone has hardware chips that natively support h.264 support... so it\'s not surprisingly that they can support h.264 but not another format such as flash. flash support would require the CPU to process it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9702000">\
	 <div id="dsq-comment-header-9702000" class="dsq-comment-header">\
	 <cite id="dsq-cite-9702000" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9702000" href="http://www.scottoraw.co.uk/" target="_blank" rel="nofollow">Scott O&#39;Raw</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9702000" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9702000" class="dsq-comment-message">I love my iPhone.  I\'m a designer and adore things that look &amp; feel "pretty".  However, I also appreciate the need for form AND function - and the iPhone is certainly lacking in the latter category.<br><br>I simply don\'t buy this line that Flash can\'t run on the iPhone as it opens them up to it being an inferior product next to the Nokia N95.  I am also getting tired of this trite line from Apple suggesting that they are doing us a favour by saving us from ourselves in terms of battery life.  This could have been presented, in marketing terms, in a much better way: "The iphone has comparable battery life to competitors" etc.<br><br>I wholly agree that there is something else going on here.  Only time, with the possible caveat of non-disclosure agreements, will tell on this one.<br><br>Rumour or not, thanks for posting this Robert.<br><br>Scott.<br><br>P.S.  Please excuse my quaint, archaic British spelling.  Q.V. "Rumour" and "Favour" ;-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701951">\
	 <div id="dsq-comment-header-9701951" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701951" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701951">Matt M</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701951" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701951" class="dsq-comment-message">Mr Scoble - use both Flash and Adobe Acrobat on a Mac.  Neither is a good experience and I can\'t believe they can suddenly take either of these products and make good, fast versions for a very much less powerful computer running a stripped down version of the same OS.  I like a lot of things about Adobe, but these products are horrible.  Also, add to this the way they treated NeXT and those inside Apple who remember that, and how slow they were to support OS X.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701938">\
	 <div id="dsq-comment-header-9701938" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701938" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701938">Dogzilla</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701938" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701938" class="dsq-comment-message">@David Jacobs: "Well, F you Apple, I want F’ing Flash on my F’ing iPhone."<br><br>Not sure why anyone wants Flash outside of porn, cartoons and Flash ads, but there\'s a legitimate solution: write it. Here\'s some helpful links to get you started:<br><br>Installing the iPhone developer toolchain - <a href="http://code.google.com/p/iphone-dev/wiki/Building" rel="nofollow">http://code.google.com/p/iphone-dev/wiki/Building</a><br><br>SFW File Format spec - <a href="http://the-labs.com/MacromediaFlash/SWF-Spec/SWFfileformat.html" rel="nofollow">http://the-labs.com/MacromediaFlash/SWF-Spec/SW...</a><br><br>FLV File format spec - <a href="http://www.digitalpreservation.gov/formats/fdd/fdd000131.shtml" rel="nofollow">http://www.digitalpreservation.gov/formats/fdd/...</a><br><br>Go for it! What\'s that? You can\'t develop it yourself and are demanding someone else do it for you? Well then, how bout you STFU and take what\'s given to you.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701936">\
	 <div id="dsq-comment-header-9701936" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701936" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701936" href="http://mikecane2008.wordpress.com/" target="_blank" rel="nofollow">Mike Cane</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701936" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701936" class="dsq-comment-message">I have a Comment from someone here who has a different POV on this issue:<br><br><a href="http://mikecane2008.wordpress.com/2008/03/05/adobe-get-off-your-fat/" rel="nofollow">http://mikecane2008.wordpress.com/2008/03/05/ad...</a><br><br>And the more I think about it, what good is just a Flash *player*?  Don\'t we need Flash to be systemwide in the iPhone so that, for example, YouTube or other FLV files play *in place*?  Doesn\'t that mean at the very least integration into the Safari browser?<br><br>There\'s already a method for playing FLVs on the iPhone.  I suspect it\'s converting:<br><br><a href="http://mikecane2008.wordpress.com/2008/01/13/reference-flash-video-on-iphone/" rel="nofollow">http://mikecane2008.wordpress.com/2008/01/13/re...</a><br><br>I don\'t understand this Flash vs PDF issue.  I don\'t see what Adobe would get out of that other than milking Apple for royalties on PDF.  Apple\'s own Preview already handles PDFs without Adobe.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701937">\
	 <div id="dsq-comment-header-9701937" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701937" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701937">Martin Stricker</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701937" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701937" class="dsq-comment-message">Rendering a web page with Flash ads on a Mac eats up 70-90% of CPU. Sure, Flash is "running on an iPhone in a lab" and "it’s been running for quite a while" - Apple engineers use it to test potential problems with cpu overheating.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701934">\
	 <div id="dsq-comment-header-9701934" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701934" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701934">Greg</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701934" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701934" class="dsq-comment-message">From Matt M\'s comment (22) "how slow they were to support OS X".  "Were" is the wrong verb.  They still have only limited support for Leopard.  My repeated inquiries regarding a release date for Adobe Acrobat Standard Edition for OS X 10.5 remain unanswered.  Why?  They can get $150 more for Pro if that is all they sell.  It\'s all about the money.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701931">\
	 <div id="dsq-comment-header-9701931" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701931" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701931">Martin Stricker</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701931" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701931" class="dsq-comment-message">Here\'s my guess on Steve Jobs\' wishlist for Adobe: Use CoreAnimation, CoreGraphics, CoreAudio and CoreVideo in your OS X implementation of Flash, integrate more native OS X controls (because, let\'s face it: Flash-based UIs are usually hideous, non-functional and non-standard).</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701933">\
	 <div id="dsq-comment-header-9701933" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701933" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701933" href="http://www.geise.com/" target="_blank" rel="nofollow">PXLated</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701933" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701933" class="dsq-comment-message">Me thinks there\'s a lot of history behind this...<br>1) Adobe probably wouldn\'t exist if Jobs hadn\'t picked postscript, developed the Laserwriter and created the desktop publishing industry which set up Adobe and it\'s money making product line.<br>2) Jobs chooses display postscript for Next and Adobe reams him on royalties.<br>3) Jobs returns, wants to use display postscript with OSX but gets the big royalty treatment form Adobe, lack of support from them for native apps, lousy Flash player on Macs, etc.<br>Adobe is probably very high on the Jobs shit list.<br><br>The difference now is Apple\'s flying high, Jobs doesn\'t have to bend over for the traditional Adobe hump.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701932">\
	 <div id="dsq-comment-header-9701932" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701932" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701932">David</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701932" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701932" class="dsq-comment-message">Hi Rob,<br><br>Tiny point. When looking for FastCompany.TV clicky saw that your VP @ PodTech job is still listed on the right.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701956">\
	 <div id="dsq-comment-header-9701956" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701956" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701956">jamesn</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701956" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701956" class="dsq-comment-message">It\'s pretty clear that Scoble\'s source is full of crap.  Here\'s a link to the Chumby wiki page on developing flash widgets:  <a href="http://wiki.chumby.com/mediawiki/index.php/Developing_widgets_for_chumby" rel="nofollow">http://wiki.chumby.com/mediawiki/index.php/Deve...</a>  The page says the Chumby runs Flash Lite 3.0, not a full fledged version of flash.  It goes on to list several supported and unsuported features (Stylesheets!?) and describes an implementation difference between Flash Lite and Flash Player in how the mouse pointer is detected with a touch screen.<br><br>My point is this:  if Scoble\'s source knows so much about Adobe\'s development of Flash I would expect him to know the difference between Flash Lite 3 and Flash Player 8.  That he doesn\'t makes me believe his other statements are not true.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701994">\
	 <div id="dsq-comment-header-9701994" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701994" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701994">NoFlashOnIphone:)</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701994" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701994" class="dsq-comment-message">Yeahh Flash on the iPhone....that is like Steve Jobs next president of USA!!!<br>C\'mon</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701993">\
	 <div id="dsq-comment-header-9701993" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701993" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701993">Some Guy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701993" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701993" class="dsq-comment-message">Your source is yanking your chain.  Apple\'s Quartz 2D library is the best PDF renderer there  is, period (also the fastest).  Apple\'s not going to damage the Mac by adopting Adobe\'s rendering code.<br><br>Adobe wants flash on the iPhone and Apple doesn\'t.   Whatever games Adobe may be playing  here, Apple\'s not participating.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701991">\
	 <div id="dsq-comment-header-9701991" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701991" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701991">Some Guy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701991" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701991" class="dsq-comment-message">"Adobe is probably very high on the Jobs shit list."<br><br>Actually, it\'s more like they\'re on the "why do we care about  those clowns anymore?" list.<br><br>Steve\'s not into the revenge thing.  When someone tries to fuck with Apple, then Apple will just ignore them.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701992">\
	 <div id="dsq-comment-header-9701992" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701992" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701992">Jeremy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701992" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701992" class="dsq-comment-message">Most of you commenting that "no way Flash won\'t run on the iPhone!" (including the author), are just completely clued out as to the facts.  If you do a few minutes of research, you will see that what Jobs\' said is absolutely true and there are severe technical and performance limitations to running Flash on the iPhone pretty much exactly as he said.  Regardless of the political stuff that may be happening, Jobs is not lying when he says that is the reason.<br><br>To those supporting the "Apple should (or is) buy(ing) Adobe" theory, you couldn\'t be more wrong.  Apple, like any well managed company doesn\'t buy out other companies unless they have something of value.<br><br>Adobe is far over-rated right now in terms of value.  None of Adobe\'s apps are well-coded or well-designed and the code is all *carbon* code, which is virtually useless on a modern Mac.  Adobe is in the process of, (and anyone who buys it would also be doing this), throwing out all of the code behind all of their products for the Mac and re-writing them as Cocoa apps.  If you have to re-write all the apps from scratch, what\'s the value in buying the company?<br><br>Controlling the PDF standard is pretty much the only thing of value in the company and it\'s unlikely that Apple would pay the necessary millions just for that.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701973">\
	 <div id="dsq-comment-header-9701973" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701973" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701973" href="http://www.communityguy.com/" target="_blank" rel="nofollow">Jake McKee</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701973" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701973" class="dsq-comment-message">Great attention grabbing headline, pointless post.<br><br>Apple had Windows running on a Mac how far back? How much earlier than the switch to Intel chips made it more REALISTIC to run Windows on a Mac?<br><br>As others of have said, Jobs didn\'t say it couldn\'t be done. What he said was: "it performs too slowly on the iPhone". Considering how poorly Flash performs on my desktop Mac, a point Robert that you seem to be ignoring completely, I sure as hell don\'t want it on my iPhone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701974">\
	 <div id="dsq-comment-header-9701974" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701974" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701974">Michael Tuminello</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701974" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701974" class="dsq-comment-message">When Apple is referring to the iphone as one device taking advantage of a "wireless platform" and Adobe is also referring to Flash as a platform, it is easy to see where the conflict lies.  If Apple lets Flash on the iPhone it has the potential to undercut the OS as a platform.<br><br>They are just looking down the road.  Apple does not want to see everyone using AIR apps that run on your phone, and your computer and your Apple TV, and you never see the OS (and it doesn\'t matter what hardware you are running). One can understand why pretty easily.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701989">\
	 <div id="dsq-comment-header-9701989" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701989" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701989" href="http://netmodular.com/" target="_blank" rel="nofollow">Jesse Tayler</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701989" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701989" class="dsq-comment-message">Flash just needs to go away like the floppy disk! If you had to program that poop, and had to deal with its limitations, then you\'d get rid of it too!<br><br>Adobe makes tons of money selling lic. so software that is like from the 80\'s or something. It\'s really lame. I think Adobe needs to quit relying on old stuff and start innovation again so that they can move things forward.<br><br>Flash is really backward - I realize there is some pain, but move to AJAX and real plugins like QuickTime for high-end video work. It\'s gotta happen!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701990">\
	 <div id="dsq-comment-header-9701990" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701990" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701990">Karim</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701990" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701990" class="dsq-comment-message">I\'d LOVE for my half-assed guess to be proven wrong and shown an iPhone happily running Flash.  The argument that the iPhone "plays H.264 just fine" so it must be able to run Flash isn\'t that compelling, because I thought iPhone/iPod teardowns reveal chips that have <i>hardware</i> support specifically for H.264 decoding.  (IIRC they\'ve got support for H.264 <i>encoding</i> as well, not that Apple has implemented that.)<br><br>I don\'t know why Adobe would insist on using their PDF renderer.  On a stock Mac, the Preview app (written by Apple) loads PDFs instantly: Boom.  Install Acrobat and load a PDF, and it\'s more like, Tick... tick... tick... tick... tick...<br><br>(<i>splash screen</i>)<br><br>...tick... tick... tick... tick... tick... tick...<br><br>(<i>checks watch</i>)<br><br>...tick... tick... tick... tick... tick...  tick...<br><br>(<i>checks calendar</i>)<br><br>...tick... tick... tick... tick... tick... Boom.<br><br>(apologies to <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewAlbum?i=267782171&amp;id=267782170&amp;s=143441" rel="nofollow">The Hives</a>)<br><br>On top of that it seems like every other day, there are holes in Adobe\'s PDF renderer you can <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9061938" rel="nofollow">drive a truck through</a>.  So why would Adobe insist upon Apple using something that\'s demonstrably slower and buggier?  Wouldn\'t beating up Steve Jobs to take his lunch money be a lot easier?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701988">\
	 <div id="dsq-comment-header-9701988" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701988" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701988">Seth</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701988" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701988" class="dsq-comment-message">Why is everyone forgetting that Apple needs to control the User Experience. Rich flash applications are too close for comfort for Jobs. If Apple loses control of the UI, then they\'ll lose differentiation from their competitors.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701986">\
	 <div id="dsq-comment-header-9701986" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701986" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701986">Totoro</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701986" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701986" class="dsq-comment-message">"Thus is the real downside with Apple retaining so much control over the iPhone."<br><br>You conveniently decide to ignore the real upside to Apple retaining so much control over the iPhone: Its the best thing out there right now, at least for me. If flash is so important to you, I\'m sure you can find a phone that runs it. Then lets hear you talk about downsides :p</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701987">\
	 <div id="dsq-comment-header-9701987" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701987" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701987" href="http://www.victorpanlilio.com/" target="_blank" rel="nofollow">Victor Panlilio</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701987" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701987" class="dsq-comment-message">Sometimes the blogosphere seems to be one giant echo chamber. See the comments at <a href="http://tinyurl.com/2ghsdb" rel="nofollow">http://tinyurl.com/2ghsdb</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701985">\
	 <div id="dsq-comment-header-9701985" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701985" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701985">william</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701985" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701985" class="dsq-comment-message">Apple hasn\'t said that Flash CAN\'T work on the iPhone,they\'ve said that performance is or would be lousy.  They either know this because it\'s on the iPhone in the lab and it sucks, or it\'s conjecture based on what they know about Flash and iPhone hardware.  Either way they know what they are talking about and I don\'t see they\'re lying about anything.  David Jacobs seems to be an immature little \'tard.  Make your own phone and put flash on it.  The iPhone is how Apple wants it to be.  If you don\'t want a phone like that, get another phone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701979">\
	 <div id="dsq-comment-header-9701979" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701979" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701979" href="http://ekive.blogspot.com/" target="_blank" rel="nofollow">Mark Scrimshire</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701979" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701979" class="dsq-comment-message">I think there is more to this than meets the eye. I believe QuickTime and the Movie Industry is a factor.<br><br>I was writing about that just yesterday:<br><br><a href="http://ekive.blogspot.com/2008/03/no-flash-on-iphone-its-not-about-iphone.html" rel="nofollow">http://ekive.blogspot.com/2008/03/no-flash-on-i...</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701984">\
	 <div id="dsq-comment-header-9701984" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701984" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701984" href="http://geekfun.com/" target="_blank" rel="nofollow">eas</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701984" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701984" class="dsq-comment-message">I find Flash to be a CPU hog on my laptop.  I\'m not missing having it drag down the performance and battery life on my iPhone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701983">\
	 <div id="dsq-comment-header-9701983" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701983" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701983">jake</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701983" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701983" class="dsq-comment-message">One: Who gives a shit whether or not Flash runs on the goddamned iPhone. Seriously. Who cares? It\'s just another "thing" like bluetooth headsets voice dialing or user-replaceable battery that look great on paper but you would never use.<br><br>Two: People, buy devices as they exist today. It\'s fine to want to see them improve, but seriously, if you need shitty Flash Lite then get something else.<br><br>Three: If you think desktop Flash is coming to the iPhone or any phone, then I would submit to you that you have basically no understanding of web technologies, modern desktop computers, or mobile devices. So STFU.<br><br>Four: Robert, you basically called Jobs a liar in the title of your post. You are super classy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701982">\
	 <div id="dsq-comment-header-9701982" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701982" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701982" href="http://www.victorpanlilio.com/" target="_blank" rel="nofollow">Victor Panlilio</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701982" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701982" class="dsq-comment-message">On your mobile or other portable Internet handheld device, go to <a href="http://www.prada.com" rel="nofollow">www.prada.com</a> and let us know if the Flash playback is acceptable.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701981">\
	 <div id="dsq-comment-header-9701981" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701981" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701981">Ray</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701981" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701981" class="dsq-comment-message">Flash would open up a whole new development platform on the iPhone that Apple wouldn\'t be able to control. It would offer developers cross platform support for their apps as well as a steaming video player that would give users more options to put video on their phone outside of buying it from Apple. This goes completely against Apple\'s non-open business model.<br><br>I\'m not doubting that there are a lot of performance concerns, both in processing and bandwidth. I\'m sure that a web site running a bunch of embedded flash files would probably run pretty bad on the iPhone, but considering what I\'ve seen run on this phone, I\'m sure it\'s not something that the geniuses at Apple couldn\'t figure out. I really feel this is more about Apple wanting total control of the iPhone platform than it is a technical issue. The same is true for Java.<br><br>Or maybe Apple is coming out with their own competitor to Flash that runs on the iPhone too.  Imagine being able to use core animation, coverflow, ect. on your web site?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701975">\
	 <div id="dsq-comment-header-9701975" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701975" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701975" href="http://twoss.wordpress.com/" target="_blank" rel="nofollow">stelt</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701975" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701975" class="dsq-comment-message">Apple has hired some SVG experts over the last few years. Webkit is growing great wrt SVG support, not only for on-line apps. Maybe it matters?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701980">\
	 <div id="dsq-comment-header-9701980" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701980" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701980" href="http://www.trolls.com/" target="_blank" rel="nofollow">Troll Central</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701980" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701980" class="dsq-comment-message">Anyone want some fresh crow?  How shall I cook for you?  The first batch comes off the grill in 10 minutes.  If you need a towel to wipe off the egg on your face, we have some Microsoft towels to pass out.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701978">\
	 <div id="dsq-comment-header-9701978" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701978" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701978" href="http://veggiedude.com/" target="_blank" rel="nofollow">veggiedude</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701978" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701978" class="dsq-comment-message">PDF is already built-into the iPod Touch and iPhone. There is no need for another license agreement with Adobe (Apple licensed it for OS X years ago). This talk is nonsense.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701977">\
	 <div id="dsq-comment-header-9701977" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701977" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701977">chris</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701977" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701977" class="dsq-comment-message">Just a thought, but do you consider the difficulties involved in re-creating the ui required by flash in a touch environment to be trivial enough that it\'s not part of the reason we don\'t see flash on the iPhone? No mouse to mouse-over with; no drag&drop; how to handle both the screen resolution and zooming of moving interactive flash pages?what about all those wonderful UI elements invented by the flash app developers? It all sounds wonderfully hit &amp; miss whether a page would work or not. Exactly the experience. Most iPhone users are looking for....isn\'t it?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701976">\
	 <div id="dsq-comment-header-9701976" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701976" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701976">dennis</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701976" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701976" class="dsq-comment-message">Makes perfect sense.<br><br>Apple probably was getting back at Adobe with OSX with the native ability to write to a .pdf file from print mode completely eliminating the need for the overpriced Adobe writer ap.<br><br>But then again Adobe got were it was from Apple with postcript...<br><br>Adobe wants to play with the big boys, but they just don\'t have that much in the quiver to give Apple and MS Google a run for the money.  Lot\'s of free Adobe type aps out there that work just as well...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701971">\
	 <div id="dsq-comment-header-9701971" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701971" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701971" href="http://www.evilcarbon.com/" target="_blank" rel="nofollow">Evil Carbon</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701971" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701971" class="dsq-comment-message">That Steve Jobs, he\'s a tricky little fellow!!<br><br>Global Warming alarmists beware... <a href="http://EvilCarbon.com" rel="nofollow">EvilCarbon.com</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701972">\
	 <div id="dsq-comment-header-9701972" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701972" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701972">istara</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701972" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701972" class="dsq-comment-message">My G4 titanium powerbook, 800mhz, still worked brilliant fast and had the latest operating system (at that time, Tiger) until I finally replaced it with a MBP.<br><br>The tibook could handle anything:  loads of apps open, loads of tabs, games, high res videos, whatever.<br><br>Except Flash.  It really, really struggled with flash on webpages.  Not just intense flash structured sites, but web pages with flash ads on them.  It would go slow, performance was hideously degraded, flash animations would stutter and stagger and be slow.<br><br>There was nothing wrong with it, it just found Flash a struggle.   Now I am not technical enough to know how an 800mhz G4 compares with the iPhone\'s processor.  But I can see why there could be problems with certain implementations of Flash on the iPhone.<br><br>That said I would rather take an optional, limited or poor implementation than no Flash at all.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701970">\
	 <div id="dsq-comment-header-9701970" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701970" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701970" href="http://nghecon6.googlepages.com/" target="_blank" rel="nofollow">frmad</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701970" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701970" class="dsq-comment-message">We\'ve just report <a href="http://nghecon6.googlepages.com" rel="nofollow"><br>&lt;acronym title="Top Blogs"&gt; the top blogs of the day&lt;/acronym&gt;</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701969">\
	 <div id="dsq-comment-header-9701969" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701969" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701969" href="http://nghecon6.googlepages.com/" target="_blank" rel="nofollow">phuongnana</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701969" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701969" class="dsq-comment-message">You can visit, we are going concern now. But today we have generated <a href="http://nghecon6.googlepages.com" rel="nofollow"><br>&lt;abbr title="Professional top blogs report"&gt; a more pro top blogs daily report &lt;/abbr&gt; </a>. Now I\'ve just posted <a href="http://nghecon6.googlepages.com" rel="nofollow">&lt;abbr title="Professional top blogs report"&gt; the newest report &lt;/abbr&gt; </a>, see and reply me some comments. Thanks.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701968">\
	 <div id="dsq-comment-header-9701968" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701968" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701968">John</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701968" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701968" class="dsq-comment-message">It\'s funny to read some of these uninformed blog posting comments.<br><br>PDF support in Mac OS X and on the iPhone is using technology that Apple developed internally and independently of Adobe. (PDF is a published standard). The reason why PDF created by Mac OS X natively is PDF 1.4 is because Apple doesn\'t have a huge incentive to keep up with the PDF spec - people can just complain to Adobe :-). The latest spec should be PDF 1.7, when Acrobat 8.0 came out.<br><br>The reason why Preview runs so fast is because it just rasterizes the PDF page - displays the image. For better or worse, Preview owns the "MIME" type for rendering PDF. Most people do not need a lot of the advanced features that a PDF created by Adobe Acrobat (like filling in forms) or other Adobe applications. But Adobe Reader does support all the features - that is one reason why the Reader for both Mac and Windows is so fat. And Adobe, at least for the Windows Adobe Reader, has been working on improving the launch of Adobe Reader. If you launch Adobe Reader 7.0 or 8.0 - it will launch faster than previous versions.<br><br>No graphics professional is going to export PDF from Mac OS X PDF engine and send it to printer. They will export using InDesign, Photoshop, etc... where the PDF output will be to the latest spec and support the print options and info the print professionals are looking for (i.e. color separation, etc..)<br><br>Adobe nor Macromedia has ever charged for the desktop Flash Player for Windows, Mac or Linux for end users.<br>Adobe does license the desktop Flash Player to corporations if they need something customized or need to distribute it as part of their application.<br>Adobe does charge to license Flash Lite - the "mobile version" of Flash.<br><br>And there is a reason for this - because it takes a lot of work to develop and port Flash Lite to a wide and diverse number of platforms, and that work should be compensated as long as Adobe can derive licensing fees. But that day is probably coming to an end sooner rather than later, because I highly doubt Microsoft is licensing Silverlight as expensively as Adobe is for Flash Lite - in fact, it would not surprise me if Microsoft was giving Silverlight free to Nokia or even paying Nokia to include Flash Lite (unless there is something anti-competitive about that...)<br><br>As for the Flash Player 7 SDK - well, the reason why that hasn\'t been updated is due to Adobe\'s focus on the mobile handset and the lack of interest and ROI case to update that SDK as far as I can tell.<br><br>As for all the complaints about Adobe releasing Mac software late, especially for Creative Suites to be Mac OS X native, Leopard, etc.. native - Anyone who has developed software understand the complexities of multiple releases and bug fixes - it is a nightmare. Both Apple and Adobe have their own agendas, yet are still interdependent on each other for part of their success. Apple\'s OS releases don\'t fit perfectly with Adobe\'s releases - and also, neither of their development schedules also align with Microsoft\'s. Think about it - Adobe is one of the few remaining large ISV\'s that is cross platform for most of their applications for both Windows and Macintosh.<br><br>I\'d say that in the early days, Apple and Adobe needed each other - and had a symbiotic relationship.  The Mac would not have survived without the LaserWriter and PostScript. When Jobs licensed PostScript, he also bought 25% of Adobe. I think Adobe would have been fine without Apple because PostScript was really the only game in town for a great printing engine, and Adobe literally printed $ with PostScript (an old-timer Adobe friend of mine said that in the good old days, Adobe had the highest revenue/employee in the U.S.). All the major laser printing companies licensed PostScript from Adobe in the early days.<br><br>When Steve Jobs returned to Apple in 1997, Jobs visited Adobe to reassure Adobe management that he was going to fix Apple and wanted to reassure that Adobe was committed to the Mac platform.<br><br>After John Warnock retired from Adobe as CEO (he is still co-chairman), and Bruce Chizen took over, I think, for one reason or another, Adobe and Apple started drifting apart. Chizen was more Wall Street oriented.<br><br>I really don\'t think Steve Jobs has that much respect for Chizen. I met an ex-Adobe person at a MacWorld Expo about 2 years ago, and she told me the story about her first day at Apple, being in an elevator with Jobs. Jobs saw that she was a new employee at Apple and carrying stuff with her to bring to her desk, and he asked where she worked previously. When she said Adobe, Jobs went nuts and asked, "What the hell is Bruce trying to do at Adobe - make it into Microsoft!"<br><br>I wonder what Jobs thinks of Shantanu Narayen. At least Narayen has an engineering background, something that Jobs would respect a whole lot more than Chizen, who I think Jobs has always thought of as a "sales" guy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701967">\
	 <div id="dsq-comment-header-9701967" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701967" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701967" href="http://www.nttdocomo.co.jp/" target="_blank" rel="nofollow">Dan</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701967" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701967" class="dsq-comment-message">Strange that i-mode internet phones in Japan have supported Flash for several year snow..<br><br>doesn’t make sense that something that works fine for developers and users in Japan, on the worlds most successful mobile internet platform, can’t work on an iphone which probably has a more sophisticated operation system.<br><br><a href="http://www.nttdocomo.co.jp/eng.....index.html" rel="nofollow">http://www.nttdocomo.co.jp/eng.....index.html</a><br><br>i always wondered where apple got their “i” in ipod and iphone.. i think i-mode :)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701966">\
	 <div id="dsq-comment-header-9701966" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701966" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701966" href="http://kencarpenter.info/" target="_blank" rel="nofollow">Ken Carpenter in Orlando</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701966" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701966" class="dsq-comment-message">Why doesn\'t Apple just buy Adobe . . . and Yahoo, too, while they\'re at it?<br><br>What can they be saving that $18-billion-cash war chest for anyway?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701965">\
	 <div id="dsq-comment-header-9701965" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701965" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701965" href="http://blog.joeflash.ca/" target="_blank" rel="nofollow">Joeflash</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701965" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701965" class="dsq-comment-message">Let\'s not turn speculation on whether the iPhone will run flash into yet<br>another *yawn* flash-bashing session. I am sooo bored of uninformed<br>Flash bashing that does not stand up to a grain of truth.<br><br>As for Flash running slow on Macs versus PCs, it\'s a problem that occurs<br>mostly in Flash player 8 and below, as a difference in the frame<br>rendering engine. Any Flash developer worth their salt will know that if<br>you set the frame rate of the FLA to 21, 31, or 41, that "bug" will<br>disappear, and mac SWFs will run just as fast as their PC counterparts.<br>Don\'t blame the technology, blame the developer for being too clueless<br>to know how to code a decent Flash app. And apps designed for the VM2<br>(AS3) runtime in the Flash player run at the same speed on the PC as it<br>does the mac. So let\'s put that one to rest already.<br><br>As for Jobs not willing to put Flash on the iPhone, as a Flash/Flex<br>developer I can see that as a perfectly reasonable assertion. One reason<br>I won\'t currently touch Flash mobile development with a ten foot pole is<br>that the Flash Lite player is a pathetically chopped down version of the<br>Flash player which requires a mix of AS1 and AS2 coding techniques with<br>a "hackiness" that almost makes Lingo programming look robust. I love<br>AIR, it\'s the best thing since sliced bread for an RIA developer such as<br>myself; but for mobile, I\'m waiting until they improve the technology a<br>bit. I want my FLV (cue dire straits song :)... in Flash Player 9<br>thank-you-very-much.<br><br>A more plausible reason for there being no Flash on the iPhone is that<br>there is currently no version of the Flash player that would integrate<br>well enough with the iPhone hardware: Flash Lite 2 is too clunky and<br>primitive for such a sophisticated device, and the current Flash Player<br>9 may be too resource intensive, as its garbage collection routines<br>could stand some improvement. Given the roadmap discussions on Flex 4 I<br>attended at a recent Flex converence, and the up and coming modular<br>nature of the next version of the Flex framework and some of the<br>improvements to the next Flash player, in all plausibility Apple is<br>simply waiting for Adobe to license a "fuller" version of the Flash<br>Player 9 or 10 for use on the iPhone.<br><br>I am sure there are a fair bit of politics involved, but in all<br>likelihood (attention: pure speculation ahead) Adobe and Apple may be in<br>talks to establish quicktime player capability in the next version of<br>the Flash Player, as the FLV standard is currently kicking Apple\'s<br>Quicktime off the net as the current de-facto standard for online video,<br>and it\' unlikely Apple wants to invite that wolf into their home without<br>some serious adjustments. And given the iTunes licensing model, it\'s<br>quite possible they\'ll want some form of DRM for video and audio in<br>Flash as well.<br><br>Everyone assumes there\'s this incredibly aggressive war going on between<br>Apple and Adobe. What if there is no such thing going on, and Apple and<br>Adobe are merely taking their time to sort out the mutual licensing<br>rights? Quicktime, PDF, iTunes, DRM, FLV, SWF, Flash Player, iPhone OS<br>-- all these are proprietary technologies, on both sides, and getting<br>them to legally play well together will take time for the suits to work out.<br><br>So please, let\'s leave the limp "Apple is doing an f-you to Adobe"<br>rumours on Slashdot and MySpace where they belong.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701964">\
	 <div id="dsq-comment-header-9701964" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701964" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701964">G</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701964" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701964" class="dsq-comment-message">Steve Jobs is a clever but ignorant man. If people want Flash, which they clearly do then give them Flash. Thats it.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701963">\
	 <div id="dsq-comment-header-9701963" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701963" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701963">jamiegau</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701963" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701963" class="dsq-comment-message">And I expect Steve will eventually give them flash as Steve has built up Apple with a "For the people" type philosophy.  I expect it masks the corporate nature of Steve and Apple, but it has been extremely successful.<br>But yes, the people want flash, I want flash.  It is an amazing tool.  I can knock up control interfaces in minutes.  AJAX takes 10x as long.  I am not dising AJAX, its great for many things, but Flash is generally better overall from my experience. (Its just harder to learn, and generally I find web developers are set in there ways and don\'t like learning new tech)<br><br>I must admit, Steve DOES have one point.  Flash can EAT all your CPU, but this is usually because the developer writing the Flash app is a CRAP developer. (Common as they are usually designers by trade).  Flash is very efficient. Much more then AJAX.  It is the bad coding that is the issue.  And I can see Jobs having issue here.  But then again, you can code a javascript page bad as well..<br><br><br>James</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701962">\
	 <div id="dsq-comment-header-9701962" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701962" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701962" href="http://mistersnitch.blogspot.com/" target="_blank" rel="nofollow">Mister Snitch!</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701962" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701962" class="dsq-comment-message">So, on the say-so of an anonymous source, you broadcast the rumor that Jobs is lying. All right. May the same happen to you.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701961">\
	 <div id="dsq-comment-header-9701961" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701961" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701961">Marc</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701961" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701961" class="dsq-comment-message">Long rumored SVG support? Download WebKit. It\'s an intricate part.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701960">\
	 <div id="dsq-comment-header-9701960" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701960" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701960">just a reader</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701960" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701960" class="dsq-comment-message">according to apple announcement, apple just wants to treat all applications which developed with iPhone on their Store and play the application easy and securely for iPhone users. their (new) business model cannot work well when the flash player ran well on iPhone.  it is likely game console business model. although Store for iPhone is trial run, he has already noticed the key is distribution. he would just adjust the direction if the model failed after a year, then, it is enough to the Flash support on iPhone.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701999">\
	 <div id="dsq-comment-header-9701999" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701999" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701999" href="http://trancemist.net/blog/" target="_blank" rel="nofollow">TranceMist</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701999" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701999" class="dsq-comment-message">It\'s all BS.<br><br>I mean, now <a href="http://www.appleinsider.com/articles/08/03/08/sun_plans_java_for_iphone_ipod_touch.html" rel="nofollow">Sun says they\'ll develop a JRE for the iPhone</a>.<br><br>So Adobe can\'t develop a reasonable flash engine?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701958">\
	 <div id="dsq-comment-header-9701958" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701958" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701958" href="http://mindtaker.blogspot.com/ " target="_blank" rel="nofollow">drunken_economist</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701958" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701958" class="dsq-comment-message">Apple has always played hardball with Adobe over a number of things, basically to keep the core user experience [and support headaches] away from the vendors, this is why:<br><br>- Preview App supports basic PDF functionality.<br>- Ditto Quicktime and basic Flash.<br>- Ditto TextEdit and *.doc / *.rtf.<br><br>These apps run wicked quick on either PPC or Intel desktops.<br><br>Now we have a handset based on the [for a desktop, clunky, but for a handset okay] PPC ARM architecture.<br><br>If any of you have a jailbroken iphone or touch you know that the apps for RTF, PDF, and **basic** Flash video *cough* Youtube.app *cough* are acceptable.<br><br>But no way is Jobs going to allow Fuh-lash, a plugin that has had a checked past on the Mac OSX platform and that has even Intel users gnashing their teeth from time to time on his **new platform** with his **new userbase** of 2.5mil and rising iPhone users. Not with the current sucky telco infrastructure [in the US].<br><br>Sun is a whole other kettle of fish. They will develop a RUNTIME that allows APPs that Apple will SIGN.<br><br>Adobe wants a backdoor into  *Mobile*Safari and Apple\'s web experience. For the mobile end user, they want to be \'the internet\'.. And Stevo is saying uh, NO, I\'m going after enterprise, and for the flying baloney you have the SDK. This should be painfully obvious.<br><br>MobileSafari in firmware 1.x has set expectations. There is no copy/paste [which annoys me], no downloading, and no Youtube or other plugin handoff [*unless* you use javascript/URL transmogrification for Youtube].<br><br>But we can already see how Apple is embracing the Youtube/Google AJAX way of doing things, heck, check Apple\'s MobileSafari guidelines ["Don\'t use or bring up Flash"], and their addition of a Javascript error console inside Safari [Preferences &gt; Safari &gt; dot dot dot.<br><br>Actions speak louder than words. What, in their docs as well as Stevo\'s little diatribes are they doing? To what end? Draw your own conclusions.<br><br>Oh, another piece of yellow journalism from me:<br><br>Scooby stabs iPhone in the back:<br><br>Go to ipodtech\'s \'iphone.app\' page:<br><br><br>Service Unavailable<br><br>The server is temporarily unable to service your request. Please try again later.<br>Reference #6.4cdcf180.1205151626.2bf7f7f5</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701957">\
	 <div id="dsq-comment-header-9701957" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701957" class="dsq-comment-cite">\
	 <a id="dsq-author-user-9701957" href="http://mindtaker.blogspot.com/ " target="_blank" rel="nofollow">drunken_economist</a>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701957" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701957" class="dsq-comment-message">Some more thoughts: All my typos aside [this is some really good booze, inbibe and type], Stevo is just following the telco paradigm for mobile devices. ATT has their own \'store\' for ringtones etc as does T-Mobile and others. WHY is this a big surprise.<br><br>The hacker / jailbreaker community not only has an installer.app paradigm for apps, they also have a Debian like package manager RUNNING NOW. Google Cydia as well as \'jailbreak\' or \'installer.app\'.<br><br>What it boils down to is, Steve wants Flash quarantined to an \'App\', preferably signed, and NOT in MobileSafari\'s web space.. a space devoted to web pages, VERY lean Javascript / AJAX [see Google and Facebook\'s iphone pages, etc], and RSS.<br><br>Outside that space of Mail and Web, the kids and flying baloney afficionados get the appSpace like \'game apps\'.. hence the show of Spore as a segregated app. Now whether Adobe will play by these rules [they can with AIR] .. well, that\'s the question.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9701959">\
	 <div id="dsq-comment-header-9701959" class="dsq-comment-header">\
	 <cite id="dsq-cite-9701959" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9701959">Realtosh</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9701959" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9701959" class="dsq-comment-message">Why should Apple pay Adobe to license Flashlight or Flash; and/or pay Microsdoft to license Silverlight. Instead of paying royalty fees to support proprietary technologies; why shouldn\'t Apple just continue to support H.264 codec which is part of the MPEG-4 standard.<br><br>Wouldn\'t supporting open standards be better for the web, for mobile computing and for Apple and its\' customers, then giving money to either Adobe or Microsoft that has the ironic side-effect of helping to establish a proprietary technology as a defacto standard. If Apple were to try to establish a proprietary technology, it would be their own. But from Apple\'s recent history, they\'ve made every attempt to build their solutions on standard technologies. Why would anyone think they would act differently when it came to Flash. They convinced the largest repository of videos on the web, youtube, to move from Flash to H.264. What would make anyone think that they would ever get around to supporting Flash, other than to keep it as a negotiating tactic with Adobe. Why give up that chip earlier than absolutely necessary.<br><br>Apple did in fact choose to support the ActiveSync protocol on the iPhone which is part of the Microsoft Exchange email technologies. Apple added this technology only out of necessity; to be compatible with Exchange servers already deployed at thousands of corporations. But in that fight Blackberry is already running away with the lion\'s share of mobile email, because their system works most of the time; several long high-impact well-publicized outages not withstanding. Apple doesn\'t want to be associated with the Blackberry outages that take out all Blackberry devices, even iPhones if Apple were so inclined to support RIM technology. On the other hand if a companies Exchange servers go down, all email is down including desktops. The IT folks and Microsoft will take all the heat.<br><br>Plus, I can see Apple building out an email server solution, more robust than the open source solutions that are already included for free with OS X Server.<br><br>But as far as Flash or Silverlight is concerned, I wouldn\'t be holding my breath if I were either Adobe or Microsoft. Apple is already supporting an open standard (H.264) and getting everyone who would listen to move away from licensed proprietary technologies (Flash and Silverlight) and the obligatory royalties. I can only see that as a good thing. Now all these websites  who want to show up on the iPhone will have to provide their content in H.264.<br><br>Stop whining! It\'s cheaper to encode in H.264 anyway.</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=is_steve_jobs_lying_about_flash_not_working_on_iphone&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);
			}
		}
	});
}

})();




