




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": {"04b1ab0628b45e68d49a498163a2ccfb": {"username": "The Girls", "tumblr": "", "display_name": "The Girls", "url": "http://disqus.com/guest/04b1ab0628b45e68d49a498163a2ccfb/", "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": ""}, "a006ba6967c49ab9dc724a731f2fb004": {"username": "CJS", "tumblr": "", "display_name": "CJS", "url": "http://disqus.com/guest/a006ba6967c49ab9dc724a731f2fb004/", "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": ""}, "ff8219f999725a00c8382ecf0e7d8aac": {"username": "Feaster", "tumblr": "", "display_name": "Feaster", "url": "http://disqus.com/guest/ff8219f999725a00c8382ecf0e7d8aac/", "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": ""}, "242ba1560f20e2cb9cfb47e4d7905a18": {"username": "MRB", "tumblr": "", "display_name": "MRB", "url": "http://disqus.com/guest/242ba1560f20e2cb9cfb47e4d7905a18/", "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": ""}, "validates": {"username": "validates", "tumblr": "", "display_name": "validates", "url": "http://disqus.com/validates/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c6de1046bd6875171cef0f9e9621a9ba": {"username": "billinator", "tumblr": "", "display_name": "billinator", "url": "http://disqus.com/guest/c6de1046bd6875171cef0f9e9621a9ba/", "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": ""}, "SunsetHillGuy": {"username": "SunsetHillGuy", "tumblr": "", "display_name": "SunsetHillGuy", "url": "http://disqus.com/SunsetHillGuy/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "c991dbe727777d2f9a5005aff337eaf0": {"username": "Bob", "tumblr": "", "display_name": "Bob", "url": "http://disqus.com/guest/c991dbe727777d2f9a5005aff337eaf0/", "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": ""}, "35fa9e271985c767e39b1a7ed9012e2b": {"username": "NorthBeachFam", "tumblr": "", "display_name": "NorthBeachFam", "url": "http://disqus.com/guest/35fa9e271985c767e39b1a7ed9012e2b/", "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": ""}, "fd549fba56021327dceefdc1873a7172": {"username": "CM", "tumblr": "", "display_name": "CM", "url": "http://disqus.com/guest/fd549fba56021327dceefdc1873a7172/", "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": ""}, "balardeater": {"username": "balardeater", "tumblr": "", "display_name": "balardeater", "url": "http://disqus.com/balardeater/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "a66c7f1919be24ece7afef2b6d120311": {"username": "george", "tumblr": "", "display_name": "george", "url": "http://disqus.com/guest/a66c7f1919be24ece7afef2b6d120311/", "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": ""}, "b132507a8e823b36b0e4b8cdf5390052": {"username": "jbo", "tumblr": "", "display_name": "jbo", "url": "http://disqus.com/guest/b132507a8e823b36b0e4b8cdf5390052/", "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": ""}, "a1897f92886d89bdb5d8e8c4c8c8d218": {"username": "camelama", "tumblr": "", "display_name": "camelama", "url": "http://disqus.com/guest/a1897f92886d89bdb5d8e8c4c8c8d218/", "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": ""}, "lindamorton": {"username": "lindamorton", "tumblr": "", "display_name": "lindamorton", "url": "http://disqus.com/lindamorton/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "34993f27cc09e8b0912cc502faa7852d": {"username": "nicole", "tumblr": "", "display_name": "nicole", "url": "http://disqus.com/guest/34993f27cc09e8b0912cc502faa7852d/", "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": ""}, "f57800f2d4e2a0bfd510dd2cb74ec54c": {"username": "longtimeneighbor", "tumblr": "", "display_name": "longtimeneighbor", "url": "http://disqus.com/guest/f57800f2d4e2a0bfd510dd2cb74ec54c/", "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": ""}, "pjh": {"username": "pjh", "tumblr": "", "display_name": "pjh", "url": "http://disqus.com/pjh/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}, "56611924de99ebb69d89568aa9970e69": {"username": "LPC", "tumblr": "", "display_name": "LPC", "url": "http://disqus.com/guest/56611924de99ebb69d89568aa9970e69/", "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": ""}, "df443bf459ac452aa9dd22252e004360": {"username": "E/C", "tumblr": "", "display_name": "E/C", "url": "http://disqus.com/guest/df443bf459ac452aa9dd22252e004360/", "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": ""}, "fe5b15421305f46efd4b335eb7a48532": {"username": "BallardBasement", "tumblr": "", "display_name": "BallardBasement", "url": "http://disqus.com/guest/fe5b15421305f46efd4b335eb7a48532/", "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": ""}, "5516ddb658c3b223085b2575f5f04156": {"username": "T-Rex", "tumblr": "", "display_name": "T-Rex", "url": "http://disqus.com/guest/5516ddb658c3b223085b2575f5f04156/", "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": ""}, "3ed00fd4d869c02829850dd99e064090": {"username": "jpalasz", "tumblr": "", "display_name": "jpalasz", "url": "http://disqus.com/guest/3ed00fd4d869c02829850dd99e064090/", "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": ""}, "41578bf0119a0404cc23510049225b36": {"username": "Jessica C", "tumblr": "", "display_name": "Jessica C", "url": "http://disqus.com/guest/41578bf0119a0404cc23510049225b36/", "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": ""}, "f5f98c118705fa0ed27025283d75844f": {"username": "Chevre", "tumblr": "", "display_name": "Chevre", "url": "http://disqus.com/guest/f5f98c118705fa0ed27025283d75844f/", "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": ""}, "a2c56eda4bd6df2a0981094841969a3b": {"username": "D in B", "tumblr": "", "display_name": "D in B", "url": "http://disqus.com/guest/a2c56eda4bd6df2a0981094841969a3b/", "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": ""}, "b88bd3dcb203da1c4ebe0d257476022f": {"username": "JE", "tumblr": "", "display_name": "JE", "url": "http://disqus.com/guest/b88bd3dcb203da1c4ebe0d257476022f/", "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": ""}, "79183ffa8339cbdbb8dcdd977393e20b": {"username": "SunHillMama", "tumblr": "", "display_name": "SunHillMama", "url": "http://disqus.com/guest/79183ffa8339cbdbb8dcdd977393e20b/", "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": ""}, "a86ad07c92d9c6469bb76fd8f6ed2da1": {"username": "Wild Blue Yonder", "tumblr": "", "display_name": "Wild Blue Yonder", "url": "http://disqus.com/guest/a86ad07c92d9c6469bb76fd8f6ed2da1/", "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": ""}, "03818789072a5e9ca292cfc478a49eb6": {"username": "ballard girl", "tumblr": "", "display_name": "ballard girl", "url": "http://disqus.com/guest/03818789072a5e9ca292cfc478a49eb6/", "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": ""}, "92df51c2e96aa8d26d55b1fb352904c3": {"username": "Ballardgirl", "tumblr": "", "display_name": "Ballardgirl", "url": "http://disqus.com/guest/92df51c2e96aa8d26d55b1fb352904c3/", "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": ""}, "d94bc3a0cc8f7acaa9b98ff25fd7455e": {"username": "JoeFoto", "tumblr": "", "display_name": "JoeFoto", "url": "http://disqus.com/guest/d94bc3a0cc8f7acaa9b98ff25fd7455e/", "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": ""}, "4fa22931c2d70a8e1e2596e4b0837b22": {"username": "L. Lambros", "tumblr": "", "display_name": "L. Lambros", "url": "http://disqus.com/guest/4fa22931c2d70a8e1e2596e4b0837b22/", "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": ""}, "92ecf00811f24c523ca33cd2aab8901e": {"username": "SunsetGirl", "tumblr": "", "display_name": "SunsetGirl", "url": "http://disqus.com/guest/92ecf00811f24c523ca33cd2aab8901e/", "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": ""}, "2d6198f3d93b50a78d7d2d71a7723f85": {"username": "ExiledBrit", "tumblr": "", "display_name": "ExiledBrit", "url": "http://disqus.com/guest/2d6198f3d93b50a78d7d2d71a7723f85/", "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": ""}, "patriciaballard": {"username": "patriciaballard", "tumblr": "", "display_name": "patriciaballard", "url": "http://disqus.com/patriciaballard/", "registered": true, "linkedin": "", "blog": "", "remote_domain": null, "points": 1, "facebook": "", "avatar": "http://media.disqus.com/images/noavatar92.png", "delicious": "", "is_remote": false, "verified": false, "flickr": "", "twitter": "", "remote_domain_name": ""}}, "forum": {"use_media": false, "name": "My Ballard", "streaming_realtime": false, "url": "myballard", "allow_anon_post": true, "reactions_enabled": false, "reply_position": 0, "show_avatar": true, "allow_anon_votes": false, "disqus_auth_disabled": false}, "realtime_enabled": false, "request": {"username": "", "is_global_moderator": false, "sharing": {}, "sort": 4, "forum": "myballard", "is_initial_load": true, "is_authenticated": false, "timestamp": "2009-11-30_21:28:11", "remote_domain": "", "page": 1, "is_moderator": false, "display_username": "", "points": null, "subscribe_on_post": 2, "moderator_can_edit": false, "is_remote": false, "is_verified": false, "missing_perm": null}, "realtime_paused": false, "posts": {"7862016": {"up_voted": false, "ip": "", "has_replies": false, "message": "The first time we went we were unimpressed.  Pizza was bland, portions were skimpy and waiter was rushing us.  Happy to report that we went back last night and had a spectacular meal!  The food was all delicious -- rave reviews on the risotto and the steak.  Wait staff was good -- we'll definitely be back!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-26_23:35:04", "killed": false, "user_key": "35fa9e271985c767e39b1a7ed9012e2b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862017": {"up_voted": false, "ip": "", "has_replies": false, "message": "Went to Picolinos for the first time last week (mid-January)  We had a great dinner: service was attentive and friendly, food was very good, overall, a good experience. I hope that's the rule rather than the exception because I want them to succeed!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-29_18:52:17", "killed": false, "user_key": "a86ad07c92d9c6469bb76fd8f6ed2da1", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862018": {"up_voted": false, "ip": "", "has_replies": false, "message": "Our first visit and a small group.  Service was prompt, informative, efficient and caring.  The<br>food was delicious in an atmosphere that is nicely appointed. An addition of a curtain or two would absorb the sound more lending to better ease in conversation if there are to be more full houses like what we experienced. Obviously a poular place!!  A lovely slice of Italy to run off to on a rainy Seattle evening.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-30_23:42:54", "killed": false, "user_key": "04b1ab0628b45e68d49a498163a2ccfb", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862019": {"up_voted": false, "ip": "", "has_replies": false, "message": "We gave Picolinos another try (after 2 so so experiences) and everything has greatly improved. The service was much better, the food was excellent (v. just okay before) and the overall vibe was not nearly as chaotic.  The owner was on site and was obviously focused on making sure things ran smoothly and customers were happy.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-01_12:21:14", "killed": false, "user_key": "242ba1560f20e2cb9cfb47e4d7905a18", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862020": {"up_voted": false, "ip": "", "has_replies": false, "message": "I just went to Picolinos last Friday. They have gotten much better! The menus is more streamlined and the service seemed under control. But best of all the food was good. I will go back!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-01_21:52:10", "killed": false, "user_key": "f5f98c118705fa0ed27025283d75844f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862021": {"up_voted": false, "ip": "", "has_replies": false, "message": "I gave this place 2 stars and pretty bad reviews when we ate there a couple of months ago, mostly for the mediocre food, and were so disappointed that we didn't go back.  But after seeing the changes in chef and menu, we tried it again last night and loved it!  We had the arugula salad, the penne with smoked salmon, and the pappardelle  mushroom pasta, all of which were great.  And we had a bite of the kids pizza too, which was a huge improvement from last time.  Very similar to what you get at Tutta Bella.  We will definitely be back!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-02_15:13:38", "killed": false, "user_key": "fd549fba56021327dceefdc1873a7172", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862022": {"up_voted": false, "ip": "", "has_replies": false, "message": "Their euro style coffee shop is my new favorite place to get my morning cappuccino.  The staff is friendly and down to earth- and the espresso is divine.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-10_16:52:24", "killed": false, "user_key": "41578bf0119a0404cc23510049225b36", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862023": {"up_voted": false, "ip": "", "has_replies": false, "message": "Had a nice dinner last night...spaghetti in clam <br>sauce that was wonderful(slightly smoky)<br> and a healthy sized \"Insalata Stefano\" that was<br>quite tastey<br>Staff was VERY attentive.<br>Nice that the wine selection is reasonable<br><br>As far as repeat business<br>goes...I'd be more inclined if there were a few more<br>mid range ($10-15) non-pizza options that included a <br>meat/fish ingredient...and in my opinion, $14 for a calzone is<br>about $4 too much (guess I'm picky but...)<br><br>Anyway..looking forward to the deli", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-16_14:08:30", "killed": false, "user_key": "5516ddb658c3b223085b2575f5f04156", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862024": {"up_voted": false, "ip": "", "has_replies": false, "message": "Had a good dinner last night--smoked salmon pasta, house salad, and a margarita pizza.  It was not quite as good as it was when we last went a couple of weeks ago, but they were much busier this time.  The wines by the glass are very good for the price and the bread (foccacia with sun dried tomato olive oil) was delicious.  Loved the overall atmosphere and the friendly service, which has improved each time.  And we are also loving the new espresso bar!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-16_21:35:41", "killed": false, "user_key": "fd549fba56021327dceefdc1873a7172", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862025": {"up_voted": false, "ip": "", "has_replies": false, "message": "Their pastries are out of this world!!  The espresso bar is wonderful! They have an amazing baker who used to work on a cruise line, Four Season Olympic Hotel and has over 30 years experience..he is fabulous!  I commend Tom for making constant improvements and staying focused in what is a tough economy and a tough business!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-24_14:36:44", "killed": false, "user_key": "03818789072a5e9ca292cfc478a49eb6", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862026": {"up_voted": false, "ip": "", "has_replies": false, "message": "We went with our toddler back in November and the experience was disappointing. For the most part because we brought our toddler (this is a nice place for older kids, not 2 year olds). The food was also disappointing. I went a couple of  weeks ago without my child and loved the atmosphere. The pasta was very good, but one of us got the pizza and one got a calzone and they still need work. The pizza was very limp and slightly bland and the calzone was way too doughy.  I will go back though because I thought the service was great and I like their pasta.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-26_16:11:26", "killed": false, "user_key": "92ecf00811f24c523ca33cd2aab8901e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862027": {"up_voted": false, "ip": "", "has_replies": false, "message": "After reading about the new pizza chef, we decided to try Picolino's again.  Never again.  Unless some big changes happen very soon, they will be out of business.  First, they need to scrap the giant bowls that they serve the pizza in, it causes the moisture to collect and turns the pie to mush before it gets to the table.  Boards or perforated metal are needed.  Second, do not charge me nine dollars for a salad that is 1/4 of a bag of Trader Joe's arugula (50 cents) with a single slice of tomato and missing the shaved parmesan entirely.  This is Ballard.  We are all trying to hold onto our nickels.  Give us a break.  The wait staff is confused and poorly trained, and the service is slow.  Everyone seemed to be running around with their hair on fire.  That said, I found the sauce on the pizza to be authentic and the flavors good, only to be ruined by what someone thinks is a classy presentation.  Please, Picolino's, hire a snappy manager and lower your prices on some of the lesser items.  And would it kill you to add an extra few tablespoons of wine to the glass?  When my wine was brought, I actually thought it was for a taste, the glass only 1/4 full.  This is not the Italian spirit.  Bounty and good cheer are absent from this place.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-02-28_12:36:08", "killed": false, "user_key": "fe5b15421305f46efd4b335eb7a48532", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862028": {"up_voted": false, "ip": "", "has_replies": false, "message": "I guess this place suits the neighborhood.  But, I'd like to go somewhere else for fancy Italian food.  Nice try to everybody, and hope the coffee shop could uphold the Italian feel.  The owner seems to gloat about his own fantastic 'baked goods'.  Prices on pastry are ridiculously low, so that's good.  But, I have mixed feelings on what's fresh and what isn't.  Power to you.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-03-02_00:45:15", "killed": false, "user_key": "4fa22931c2d70a8e1e2596e4b0837b22", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "9 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862029": {"up_voted": false, "ip": "", "has_replies": false, "message": "The food is better than average but I find the wine pours a little short and the service sloppy.  I put it down to being a new restaurant but every time I eat at Picolino's they get some part of the order wrong.  I keep going back because the quality is good and the location is great (for me).  I would love to see more vegetarian dishes on the menu too.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-03-19_20:55:36", "killed": false, "user_key": "a2c56eda4bd6df2a0981094841969a3b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862030": {"up_voted": false, "ip": "", "has_replies": false, "message": "My husband and I went on a double date with our neighbors to Piccolino in early February. The food was so so. What really stood out was the service - atrocious. We waited for 45 minutes before there was even water served. That only happened because we flagged down a server. Flagging seems to be all the new rage as it was the only way we got service the entire night. My favorite moment was when the server started to remove my friend's plate while her fork was still in her hand. After she politely said she wasn't done yet, we couldn't get our server's attention for another 25 minutes. I would recommend you either train your staff or drop your food prices to match your service level.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-03-24_01:04:15", "killed": false, "user_key": "b132507a8e823b36b0e4b8cdf5390052", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "8 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "13128341": {"up_voted": false, "ip": "", "has_replies": false, "message": "We went for dinner last week with friends. I thought to food was good. We all ordered something different and we were happy with our meals. Our friends ordered some simple pasta for their daughter and they brought it wrong. They did correct this and did not charge for her dinner. They also didn't seem to know which table should get the food. We ordered a bottle of wine to share so I can't speak to the wine pours.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-22_15:55:29", "killed": false, "user_key": "validates", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "13302166": {"up_voted": false, "ip": "", "has_replies": false, "message": "Went yesterday to see what the fuss was about and yes, it was pricey but the Endive salad was cool crisp and crunchy and the pasta dishes were creamy and just the right side of al dente, my seafood pasta was spicy and fresh --&gt; but $19 :-(<br><br>They had a pretty talented and non-obnoxious guitar player strumming in the background and, for a Thursday were plenty busy.<br><br>Service was a little random (at their prices I'd expect to have my water glass filled when empty) - I'll go again to try the pizza.<br><br>And there is ice cream across the street for dessert...", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-07-24_23:10:29", "killed": false, "user_key": "2d6198f3d93b50a78d7d2d71a7723f85", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "4 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "14438827": {"up_voted": false, "ip": "", "has_replies": false, "message": "My wife and I tried Picolinos last night. This is our second attempt. Not sure if there will be a third try.  And it is a real shame.  We want it to be good.  The corner of 65th and 32nd should be the anchor of the neighborhood.  <br><br>The place is beautiful. We sat outside and the evening was just the right temperature.  Our server was charming.  Lots of shouting in Italian and friendly banter going on.  So, atmosphere was perfect.<br><br>But. . .<br><br>The service was glacial when it came to actually getting food, drinks, or our bill.  On the flip side, we were asked if we wanted more bread five times.  And a little guy filled our water (from the carafe already on the table) several times. <br><br>The food was both bland and icky at the same time.  I got the crab ravioli in lobster sauce ($22).  For some reaon there were little tiny bay shrimp (previously frozen) that had been aging a little too long.  The sauce had a sort of sharp-bad shrimp flavor and not a lot of other taste.  <br><br>My wife's clam pasta was just bland.<br><br>My coffee was luke warm as if it had been sitting in an air pot too long.  <br><br>Bill was about $100.  Two mains, one appetizer, one glass of wine, and two beers.   <br><br>Unfortunately, it just feels like a lack of pride and attention to detail. Which is odd, considering how intensively staffed the restaurant is. <br><br>So, $100 dinner for two that was a pretty big disappointment.   <br><br>We'll probably try the pizza but maybe not.  <br><br>Please, please, please fix it. The neighborhood wants you to succeed.  But don't charge med-high prices and then give us poor food.  It shows a lack of respect for us and for your craft.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-08-07_13:13:04", "killed": false, "user_key": "SunsetHillGuy", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "3 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "23427776": {"up_voted": false, "ip": "", "has_replies": false, "message": "This is a wonderful, warm, welcoming place with great food and ambiance.  In summer the courtyard is sublime and all year long, the restaurant provides authentic Italian pizze and other entrees served in a charming venue.  The next door cafe serves the best caffe italiano in Ballard.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-11-17_21:56:07", "killed": false, "user_key": "lindamorton", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "1 week 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}, "14576590": {"up_voted": false, "ip": "", "has_replies": false, "message": "This is one of our favorite spots!  We've eaten here numerous times and only once did we have rather slow service.  Everyone, from the owner, to the bartender, to the wait staff has been overly helpful.  The food...ahhhhh...delightful!  The gnocci is like butter.  The goat cheese stuffed ravioli is a favorite of many.  And the truffles are a delightful, and not too heavy, way to end the meal.  <br>I highly recommend this lovely spot in the neighborhood!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-08-10_12:31:49", "killed": false, "user_key": "pjh", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "3 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "15768399": {"up_voted": false, "ip": "", "has_replies": false, "message": "We tried Picolinos again.  Good news!  It was good. <br><br>This time we had pizza and soup.  The pizza was very good.  Crispy crust.  Flavorful sauce.  The soup was lentil and sausage.  It was good too. <br><br>The service was very attentive.  This time we didn't have to break out the semaphore flags to get our bill.  We'll be back.  Hopefully this is the going-forward pattern.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-09-02_13:14:30", "killed": false, "user_key": "SunsetHillGuy", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "2 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "8472568": {"up_voted": false, "ip": "", "has_replies": false, "message": "My family (2 young boys, hubby, and myself) went to dinner here Sunday night.  The service was good and it was kid friendly.  They brought both kids a small roll/pastry shaped like a mouse which was cute.   The food, however, was not good.  We ordered carpaccio for an appetizer and it had less taste than roast beef from Fred Meyers (but was priced around $11).  I asked if they made their own pasta, and yes, they make some of them including the ravioli.  Our server raved about the goat cheese ravioli so I ordered that.  The dish was literally SWIMMING in oil- very unappetizing and the pasta for the ravioli was so tough I could barely cut it.  My husband ordered the tuna, which I know is supposed to  only be seared, but it was still cold in the middle.  The best part of the meal was the wine (fairly priced), the basket of bread, and the kids macaroni and cheese was actually pretty good.  I will not go back.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-04-20_20:39:57", "killed": false, "user_key": "34993f27cc09e8b0912cc502faa7852d", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "7 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "9862742": {"up_voted": false, "ip": "", "has_replies": false, "message": "Try It Again!<br><br>We went right when it opened and it was so so. We went again and it was AWFUL but then they redid the menu and got new chefs and WOW!!! <br><br>It's sooooo good. <br><br>Pricey, but sooooo good. Huge portions. Plan to take some home.  <br><br>Kids menu is a little steep. It would be great to see them cut that by at least 1/3. Maybe they don't really, really want kids there. Who knows. Either works for us.  <br><br>Fantastic live music. <br><br>Its so nice to have a restaurant with a Full Bar walking distance. <br><br>The bakery is amazing too. I can't wait for the last little piece, the deli on the corner piece, to open. <br><br>My parting words - try it again. You'll be pleased.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-05-24_19:08:06", "killed": false, "user_key": "79183ffa8339cbdbb8dcdd977393e20b", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "6 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "23157853": {"up_voted": false, "ip": "", "has_replies": false, "message": "Top quality and was expecting to pay much more....<br>We had great dinner and great pasta, bit of wine some nice music and all for under $25.<br>Great atmosphere", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-11-15_17:53:00", "killed": false, "user_key": "balardeater", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "2 weeks 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}, "16903932": {"up_voted": false, "ip": "", "has_replies": false, "message": "I visited Picolinos in Ballard this past weekend. I went for dessert and end up in the beautiful patio. I can't complain, the day was wonderful, the sun shining, the cleanliness, d\u00e9cor, beautiful  flowers, atmosphere, staff were all well mixed together. I asked for a soup to start. I still can remember the taste, just delicious, then later I got some shrimp risotto, which was the day's special. Prices were reasonable $$$$ worth the money .. and I had some glasses of champagne. I enjoyed the service and staff were courteous, I remember Gutty ,Carlo and Garret who speaks Italian.  I don't have anything but good things to say about the service. The three of them were just fantastic and seem to be on top of their guests, which I highly appreciate.  I love to go to restaurants and this one is now for sure my Ballard's favorite. <br>My advise, go to the restaurant and try it yourself.. or better yet take my advise and enjoy!!! Bon appetite!!! :-)", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-09-18_20:30:43", "killed": false, "user_key": "patriciaballard", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": false, "votable": true, "date": "2 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7861998": {"up_voted": false, "ip": "", "has_replies": false, "message": "My girlfriend and I went here for the first time 12/27/08. We're excited to have a nice Italian restaurant walking distance from our home.<br><br>Negatives:<br>Service was somewhat slow, but polite. The food also came out slowly, but it was worth the wait. We were surprised that bread wasn't offered untili the main entrees were served.<br><br>Positives:<br><br>We both agreed that the atmosphere is very nice and the food tasty. We were given a quiet table where conversation was easy. We tried separate pasta dishes with a meat side, and both tasted great. The server gave us a nice, affordable wine selection . The crostini was a great appetizer.<br><br>Meal for two with bottle of wine totaled about $80 plus tip.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-12-29_15:13:37", "killed": false, "user_key": "a006ba6967c49ab9dc724a731f2fb004", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "11 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7861999": {"up_voted": false, "ip": "", "has_replies": false, "message": "This place could not have been more anticipated and  welcomed int he neighborhood. The critiques have been honest and upfront with a STRONG emphasis on the desire for them to do well, but to please improve. The disappointmentis..the place is gorgeous, the staff super polite and nice, the owner wonderful...but the food is subpar, the service slow (the servers can only move food out as fast as it is being cooked) and they are inconsistent in their decision to serve bread, when and how...Pizza, how can a place with a brick oven, so beautiful make such a ordinary, and unremarkable pizza?  Tom is a great guy, but he needs to set a standard..bread and water served immediatley upon seating a customer. Drink orders taken quickly, and food orders moved through the kitchen in a more efficient manner. I do not know who the chef is, but he needs to come up with a consistent method that serves out the food quickly and each dish cooked exactly like the next..hopefully always good. The requests have come  in about using fresh ingredients and not boxed crutons  (you must have bread there you can make your own in the brick oven- not rocket science to accomplish)  AS much as I love the look and the location of this place..it still rate a bare 2 star after going there 3 times", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-12-30_13:38:22", "killed": false, "user_key": "df443bf459ac452aa9dd22252e004360", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "11 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862000": {"up_voted": false, "ip": "", "has_replies": false, "message": "Have been to the place 3 times and the place is great but Tom the food needs work. We want you to well.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2008-12-30_23:08:18", "killed": false, "user_key": "56611924de99ebb69d89568aa9970e69", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "11 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862001": {"up_voted": false, "ip": "", "has_replies": false, "message": "I've been here twice now and am seriously disappointed.  For the price paid, the food is NOT good enough, and the service is awful.  We never did get water one visit, and our wine orders were completely wrong - when we pointed this out they were not corrected or even apologized for, let alone removed from the bill.  My date's salad had a LOT of grit in it one night (enough to make it inedible), and the other evening my pasta stuck together in one giant tough knot - obviously the pasta had not been stirred while cooking.<br><br>I really really REALLY wanted this place to be an actual neighborhood restaurant.  For that to happen, the prices will have to come down, the service will have to improve *greatly*, and the food will have to be consistenly better.   I won't be trying again for a few months, if ever, unless I see price reductions.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-03_19:25:40", "killed": false, "user_key": "a1897f92886d89bdb5d8e8c4c8c8d218", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "11 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862002": {"up_voted": false, "ip": "", "has_replies": false, "message": "I woudl be nice to know that the owner or the staff were reading this and letting us know of any improvements or changes so we do not lose faith all together....you have beautiful ambiance...please make it worth our while to come back! What aer you doing to keep us coming back or even venturing a return???", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-08_16:18:53", "killed": false, "user_key": "df443bf459ac452aa9dd22252e004360", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862003": {"up_voted": false, "ip": "", "has_replies": false, "message": "The word on the street....they have a new chef from  Italy!    New Menu which is specializing in Tuscan regional cuisine.....and Dino from Via Tribunali is the new Pizza Maestro.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-09_22:29:18", "killed": false, "user_key": "a66c7f1919be24ece7afef2b6d120311", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862004": {"up_voted": false, "ip": "", "has_replies": false, "message": "tried the place again last night...even with the new menu...they still need some work.  my kids are losing faith on the ever changing kids menu.  we want this place to work but we are asking ourselves how many times can we spend $$$  for a dinner  there and not be happy about it?", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-10_15:44:48", "killed": false, "user_key": "b88bd3dcb203da1c4ebe0d257476022f", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862005": {"up_voted": false, "ip": "", "has_replies": false, "message": "I hope they make it as well but it sounds as though our negative experience wrt slow service is a shared one. I would not recommend this restaurant unless you want to sit for long periods of time without water, a passing glance from a waiter, a drink or appetizer for at least 10 minutes. We were there on Friday night and while it was busy, it wasn't packed and the staff seemed very confused and frazzled. When the waiter finally did make it to our table, he was great but we were already a bit grumpy. We ate there New Year's Eve as well and the pizza was good but I swear it had canned mushrooms on it. Not good.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-12_01:13:35", "killed": false, "user_key": "242ba1560f20e2cb9cfb47e4d7905a18", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862006": {"up_voted": false, "ip": "", "has_replies": false, "message": "Maybe a sign in the window saying \"new chef\" or \"new improved service now available\"  Instead there is a sign for the espresso opening and a huge supply of antique silver coffee and t pots...would much rather they improve what they have already opened!!", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-13_17:24:47", "killed": false, "user_key": "df443bf459ac452aa9dd22252e004360", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862007": {"up_voted": false, "ip": "", "has_replies": false, "message": "New food is much better.  Service better too.  Still some significant room for improvement in service, and a slight price adjustment DOWN would make a big difference.  <br><br>Keep at it Piccolinos! Thanks for being responsive to the community's requests.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-19_22:44:00", "killed": false, "user_key": "c6de1046bd6875171cef0f9e9621a9ba", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862008": {"up_voted": false, "ip": "", "has_replies": false, "message": "I think it's great that they're responding to customer comments!  Picolino is a beautiful space -- a great addition to the neighborhood.  We plan to go tonight and try out the new menu.<br><br>In these tough economic times, let's skip the chain restaurants... think globally and eat locally.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-21_08:18:43", "killed": false, "user_key": "f57800f2d4e2a0bfd510dd2cb74ec54c", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862009": {"up_voted": false, "ip": "", "has_replies": false, "message": "We've been to Picolino several times since it opened. We've loved the atmosphere and the food. Last night we returned and the food was excellent. <br><br>And we are SO looking forward to the opening of Espresso/Bakery :-)", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-22_10:07:23", "killed": false, "user_key": "3ed00fd4d869c02829850dd99e064090", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862010": {"up_voted": false, "ip": "", "has_replies": false, "message": "Good to hear that there's  a new  chef and menu. Went there before the holidays  and left us wanting the desert across  the street at Walters. Want them to succeed but they need to be more like restaurant people than  accountants...", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-23_02:33:15", "killed": false, "user_key": "d94bc3a0cc8f7acaa9b98ff25fd7455e", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862011": {"up_voted": false, "ip": "", "has_replies": false, "message": "Stefano Mazzi is the new chef<br><br>[IMG]http://i40.tinypic.com/dcq3b5.jpg[/IMG]", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-23_20:24:55", "killed": false, "user_key": "ff8219f999725a00c8382ecf0e7d8aac", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862012": {"up_voted": false, "ip": "", "has_replies": false, "message": "Maybe this will work.<br><br><a href=\"http://i40.tinypic.com/dcq3b5.jpg\" rel=\"nofollow\">http://i40.tinypic.com/dcq3b5.jpg</a>", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-23_20:40:41", "killed": false, "user_key": "ff8219f999725a00c8382ecf0e7d8aac", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862013": {"up_voted": false, "ip": "", "has_replies": false, "message": "Whatever, you get the picture (by clicking on the link). <br>I went there in November and was unimpressed with the bland food and the prices. I decided to not go back. My boss gave me a gift certificate for Christmas.  I was blown away by the difference in taste and in service. <br>Googling Stefano's name, it looks like he moves around a lot. I hope he stays here till my anniversary in April.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-23_20:51:54", "killed": false, "user_key": "ff8219f999725a00c8382ecf0e7d8aac", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862014": {"up_voted": false, "ip": "", "has_replies": false, "message": "Last night was the third -and by far the best -visit to the restaurant. Under the new chef, food  has improved remarkably .  The chicken dish was<br>superb and the salad Stefano was excellent !<br>The special bread served with the meal was cold, hence unattractive.  This needs attention as well<br>as wait staff being a bit better informed about<br>drinks--different beers/ales, house liquors, etc.<br>  All-in-all, a special and wonderful meal and experience.", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-24_12:45:22", "killed": false, "user_key": "c991dbe727777d2f9a5005aff337eaf0", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}, "7862015": {"up_voted": false, "ip": "", "has_replies": false, "message": "I walked by Picolinos today and saw Tom Douglas (Etta's, Dalia Lounge, Lola, etc.) sitting in there. This is very confusing. Perhaps it means there is some hope for the place with the new chef...", "is_last_child": false, "can_reply": true, "down_voted": false, "real_date": "2009-01-25_20:54:47", "killed": false, "user_key": "92df51c2e96aa8d26d55b1fb352904c3", "has_been_anonymized": false, "edited": false, "author_is_moderator": false, "from_request_user": null, "votable": true, "date": "10 months ago", "approved": true, "num_replies": 0, "is_first_child": false, "email": "", "parent_post_id": null, "depth": 0, "points": 0, "author_is_creator": false, "is_realtime": false}}, "integration": {"receiver_url": null, "theme": 2, "reply_position": false, "disqus_logo": true}, "timer": {"timer_url": "http://localhost:8005", "thread_id": "15118024", "user_id": "anonymous", "forum_id": "108022", "hash": 6810172829515680014}, "thread": {"days_alive": 0, "slug": "ristorante_picolinos", "paginate": false, "num_pages": 1, "num_posts": 43, "per_page": 0, "total_posts": 0, "realtime_paused": true, "id": 15118024, "queued": false}, "reactions_limit": 10, "context": {"show_reply": true, "use_fb_connect": true, "forum_facebook_key": "29ac93bcc80e20dc00554a7b3e9cc874", "use_yahoo": false, "subscribed": false, "use_twitter_signin": false, "use_openid": false, "realtime_speed": 5000}, "reactions_start": 0, "settings": {"debug": false, "disqus_url": "http://disqus.com", "media_url": "http://media.disqus.com"}, "media_url": "http://media.disqus.com"};
	/* */ this.jsonData.cookie_messages = {"user_created": null, "post_has_profile": null, "post_twitter": null, "post_not_approved": null}; this.jsonData.session = {"url": null, "name": null, "email": null}; /* */

	
	this.curPageId = 'dsq-comments';

	this.frames = {};
};

var disqus_popup_reference = null;

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



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

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

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

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

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

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

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

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





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



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

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

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

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

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

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


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


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

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


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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

		return [windowWidth, windowHeight];
	}

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

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

		return [scrollWidth, scrollTop];
	}

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

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

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

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

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

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

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

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

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

				form.appendChild(input);
			}
		}

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

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

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

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

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

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

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

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

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

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

		return params;
	};

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

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

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

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

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

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

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

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

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

	};

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

};
// Dsq.Utils

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

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

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

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

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

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

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

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

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

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

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

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

	};

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

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

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

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

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

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

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

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

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

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

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

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

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

	this.remoteAccountSettings = function() {
		var body = '';
		// Set up IFrame.
		var params = {};
		var base_url = 'http://disqus.com/forums/myballard/_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">43</span> Comments\
	 &nbsp;\
	 <span class="dsq-item-feed">\
	 <a href="http://disqus.com/forums/myballard/ristorante_picolinos/latest.rss"><img src="http://media.disqus.com/images/embed/bullet-feed.png"></a>\
	 </span>\
	 </h3>\
	 <div id="dsq-options" style="margin:15px 0">\
	 <span class="dsq-item-sort">\
	 Sort by\
	 <select id="dsq-sort-select" onchange="Dsq.Thread.sortBy(this.value);">\
	 <option value="hot" selected="selected">Popular now</option>\
	 <option value="best" >Best Rating</option>\
	 <option value="newest" >Newest first</option>\
	 <option value="oldest" >Oldest first</option>\
	 </select>\
	 &nbsp;\
	 </span>\
	 <span class="dsq-item-cp"><a href="http://disqus.com/forums/myballard/ristorante_picolinos/">Community Page</a>&nbsp;&nbsp;&nbsp;</span>\
	 <span class="dsq-item-subscribe">\
	 <img src="http://media.disqus.com/images/embed/email.png" style="width:12px;height:12px;vertical-align:middle">\
	 <span id="dsq-subscribe">\
	 <a href="#" onclick="Dsq.Thread.subscribe(1); return false">Subscribe by email</a>\
	 </span>\
	 </span>\
	 </div>\
	 <div id="dsq-alerts">\
	 </div>\
		';

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

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

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

		

		html += Dsq.Templates.reactions();

		

		return html;
	};

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

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

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

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

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

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

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

		return html;
	}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	//
	// Post
	//

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

};
// Dsq.Post


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

	
	this.adminIsOn = false;

	
	
	

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

	return obj;
}();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	return obj;
}();


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









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

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

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

})();

Dsq.container.className = "clearfix";
Dsq.container.innerHTML = ' \
<ul id="dsq-comments">\
	 <li id="dsq-comment-7861998">\
	 <div id="dsq-comment-header-7861998" class="dsq-comment-header">\
	 <cite id="dsq-cite-7861998" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7861998">CJS</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7861998" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7861998" class="dsq-comment-message">My girlfriend and I went here for the first time 12/27/08. We\'re excited to have a nice Italian restaurant walking distance from our home.<br><br>Negatives:<br>Service was somewhat slow, but polite. The food also came out slowly, but it was worth the wait. We were surprised that bread wasn\'t offered untili the main entrees were served.<br><br>Positives:<br><br>We both agreed that the atmosphere is very nice and the food tasty. We were given a quiet table where conversation was easy. We tried separate pasta dishes with a meat side, and both tasted great. The server gave us a nice, affordable wine selection . The crostini was a great appetizer.<br><br>Meal for two with bottle of wine totaled about $80 plus tip.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7861999">\
	 <div id="dsq-comment-header-7861999" class="dsq-comment-header">\
	 <cite id="dsq-cite-7861999" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7861999">E/C</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7861999" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7861999" class="dsq-comment-message">This place could not have been more anticipated and  welcomed int he neighborhood. The critiques have been honest and upfront with a STRONG emphasis on the desire for them to do well, but to please improve. The disappointmentis..the place is gorgeous, the staff super polite and nice, the owner wonderful...but the food is subpar, the service slow (the servers can only move food out as fast as it is being cooked) and they are inconsistent in their decision to serve bread, when and how...Pizza, how can a place with a brick oven, so beautiful make such a ordinary, and unremarkable pizza?  Tom is a great guy, but he needs to set a standard..bread and water served immediatley upon seating a customer. Drink orders taken quickly, and food orders moved through the kitchen in a more efficient manner. I do not know who the chef is, but he needs to come up with a consistent method that serves out the food quickly and each dish cooked exactly like the next..hopefully always good. The requests have come  in about using fresh ingredients and not boxed crutons  (you must have bread there you can make your own in the brick oven- not rocket science to accomplish)  AS much as I love the look and the location of this place..it still rate a bare 2 star after going there 3 times</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862000">\
	 <div id="dsq-comment-header-7862000" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862000" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862000">LPC</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862000" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862000" class="dsq-comment-message">Have been to the place 3 times and the place is great but Tom the food needs work. We want you to well.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862001">\
	 <div id="dsq-comment-header-7862001" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862001" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862001">camelama</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862001" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862001" class="dsq-comment-message">I\'ve been here twice now and am seriously disappointed.  For the price paid, the food is NOT good enough, and the service is awful.  We never did get water one visit, and our wine orders were completely wrong - when we pointed this out they were not corrected or even apologized for, let alone removed from the bill.  My date\'s salad had a LOT of grit in it one night (enough to make it inedible), and the other evening my pasta stuck together in one giant tough knot - obviously the pasta had not been stirred while cooking.<br><br>I really really REALLY wanted this place to be an actual neighborhood restaurant.  For that to happen, the prices will have to come down, the service will have to improve *greatly*, and the food will have to be consistenly better.   I won\'t be trying again for a few months, if ever, unless I see price reductions.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862002">\
	 <div id="dsq-comment-header-7862002" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862002" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862002">Ballard Girl</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862002" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862002" class="dsq-comment-message">I woudl be nice to know that the owner or the staff were reading this and letting us know of any improvements or changes so we do not lose faith all together....you have beautiful ambiance...please make it worth our while to come back! What aer you doing to keep us coming back or even venturing a return???</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862003">\
	 <div id="dsq-comment-header-7862003" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862003" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862003">george</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862003" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862003" class="dsq-comment-message">The word on the street....they have a new chef from  Italy!    New Menu which is specializing in Tuscan regional cuisine.....and Dino from Via Tribunali is the new Pizza Maestro.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862004">\
	 <div id="dsq-comment-header-7862004" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862004" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862004">JE</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862004" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862004" class="dsq-comment-message">tried the place again last night...even with the new menu...they still need some work.  my kids are losing faith on the ever changing kids menu.  we want this place to work but we are asking ourselves how many times can we spend $$$  for a dinner  there and not be happy about it?</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862005">\
	 <div id="dsq-comment-header-7862005" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862005" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862005">MRB</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862005" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862005" class="dsq-comment-message">I hope they make it as well but it sounds as though our negative experience wrt slow service is a shared one. I would not recommend this restaurant unless you want to sit for long periods of time without water, a passing glance from a waiter, a drink or appetizer for at least 10 minutes. We were there on Friday night and while it was busy, it wasn\'t packed and the staff seemed very confused and frazzled. When the waiter finally did make it to our table, he was great but we were already a bit grumpy. We ate there New Year\'s Eve as well and the pizza was good but I swear it had canned mushrooms on it. Not good.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862006">\
	 <div id="dsq-comment-header-7862006" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862006" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862006">E/C</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862006" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862006" class="dsq-comment-message">Maybe a sign in the window saying "new chef" or "new improved service now available"  Instead there is a sign for the espresso opening and a huge supply of antique silver coffee and t pots...would much rather they improve what they have already opened!!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862007">\
	 <div id="dsq-comment-header-7862007" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862007" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862007">billinator</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862007" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862007" class="dsq-comment-message">New food is much better.  Service better too.  Still some significant room for improvement in service, and a slight price adjustment DOWN would make a big difference.  <br><br>Keep at it Piccolinos! Thanks for being responsive to the community\'s requests.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862008">\
	 <div id="dsq-comment-header-7862008" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862008" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862008">longtimeneighbor</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862008" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862008" class="dsq-comment-message">I think it\'s great that they\'re responding to customer comments!  Picolino is a beautiful space -- a great addition to the neighborhood.  We plan to go tonight and try out the new menu.<br><br>In these tough economic times, let\'s skip the chain restaurants... think globally and eat locally.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862009">\
	 <div id="dsq-comment-header-7862009" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862009" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862009">jpalasz</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862009" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862009" class="dsq-comment-message">We\'ve been to Picolino several times since it opened. We\'ve loved the atmosphere and the food. Last night we returned and the food was excellent. <br><br>And we are SO looking forward to the opening of Espresso/Bakery :-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862010">\
	 <div id="dsq-comment-header-7862010" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862010" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862010">JoeFoto</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862010" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862010" class="dsq-comment-message">Good to hear that there\'s  a new  chef and menu. Went there before the holidays  and left us wanting the desert across  the street at Walters. Want them to succeed but they need to be more like restaurant people than  accountants...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862011">\
	 <div id="dsq-comment-header-7862011" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862011" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862011">Feaster</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862011" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862011" class="dsq-comment-message">Stefano Mazzi is the new chef<br><br>[IMG]http://i40.tinypic.com/dcq3b5.jpg[/IMG]</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862012">\
	 <div id="dsq-comment-header-7862012" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862012" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862012">Feaster</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862012" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862012" class="dsq-comment-message">Maybe this will work.<br><br><a href="http://i40.tinypic.com/dcq3b5.jpg" rel="nofollow">http://i40.tinypic.com/dcq3b5.jpg</a></div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862013">\
	 <div id="dsq-comment-header-7862013" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862013" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862013">Feaster</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862013" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862013" class="dsq-comment-message">Whatever, you get the picture (by clicking on the link). <br>I went there in November and was unimpressed with the bland food and the prices. I decided to not go back. My boss gave me a gift certificate for Christmas.  I was blown away by the difference in taste and in service. <br>Googling Stefano\'s name, it looks like he moves around a lot. I hope he stays here till my anniversary in April.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862014">\
	 <div id="dsq-comment-header-7862014" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862014" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862014">Bob</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862014" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862014" class="dsq-comment-message">Last night was the third -and by far the best -visit to the restaurant. Under the new chef, food  has improved remarkably .  The chicken dish was<br>superb and the salad Stefano was excellent !<br>The special bread served with the meal was cold, hence unattractive.  This needs attention as well<br>as wait staff being a bit better informed about<br>drinks--different beers/ales, house liquors, etc.<br>  All-in-all, a special and wonderful meal and experience.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862015">\
	 <div id="dsq-comment-header-7862015" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862015" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862015">Ballardgirl</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862015" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862015" class="dsq-comment-message">I walked by Picolinos today and saw Tom Douglas (Etta\'s, Dalia Lounge, Lola, etc.) sitting in there. This is very confusing. Perhaps it means there is some hope for the place with the new chef...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862016">\
	 <div id="dsq-comment-header-7862016" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862016" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862016">NorthBeachFam</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862016" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862016" class="dsq-comment-message">The first time we went we were unimpressed.  Pizza was bland, portions were skimpy and waiter was rushing us.  Happy to report that we went back last night and had a spectacular meal!  The food was all delicious -- rave reviews on the risotto and the steak.  Wait staff was good -- we\'ll definitely be back!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862017">\
	 <div id="dsq-comment-header-7862017" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862017" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862017">Wild Blue Yonder</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862017" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862017" class="dsq-comment-message">Went to Picolinos for the first time last week (mid-January)  We had a great dinner: service was attentive and friendly, food was very good, overall, a good experience. I hope that\'s the rule rather than the exception because I want them to succeed!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862018">\
	 <div id="dsq-comment-header-7862018" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862018" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862018">The Girls</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862018" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862018" class="dsq-comment-message">Our first visit and a small group.  Service was prompt, informative, efficient and caring.  The<br>food was delicious in an atmosphere that is nicely appointed. An addition of a curtain or two would absorb the sound more lending to better ease in conversation if there are to be more full houses like what we experienced. Obviously a poular place!!  A lovely slice of Italy to run off to on a rainy Seattle evening.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862019">\
	 <div id="dsq-comment-header-7862019" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862019" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862019">MRB</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862019" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862019" class="dsq-comment-message">We gave Picolinos another try (after 2 so so experiences) and everything has greatly improved. The service was much better, the food was excellent (v. just okay before) and the overall vibe was not nearly as chaotic.  The owner was on site and was obviously focused on making sure things ran smoothly and customers were happy.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862020">\
	 <div id="dsq-comment-header-7862020" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862020" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862020">Chevre</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862020" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862020" class="dsq-comment-message">I just went to Picolinos last Friday. They have gotten much better! The menus is more streamlined and the service seemed under control. But best of all the food was good. I will go back!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862021">\
	 <div id="dsq-comment-header-7862021" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862021" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862021">CM</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862021" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862021" class="dsq-comment-message">I gave this place 2 stars and pretty bad reviews when we ate there a couple of months ago, mostly for the mediocre food, and were so disappointed that we didn\'t go back.  But after seeing the changes in chef and menu, we tried it again last night and loved it!  We had the arugula salad, the penne with smoked salmon, and the pappardelle  mushroom pasta, all of which were great.  And we had a bite of the kids pizza too, which was a huge improvement from last time.  Very similar to what you get at Tutta Bella.  We will definitely be back!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862022">\
	 <div id="dsq-comment-header-7862022" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862022" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862022">Jessica C</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862022" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862022" class="dsq-comment-message">Their euro style coffee shop is my new favorite place to get my morning cappuccino.  The staff is friendly and down to earth- and the espresso is divine.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862023">\
	 <div id="dsq-comment-header-7862023" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862023" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862023">T-Rex</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862023" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862023" class="dsq-comment-message">Had a nice dinner last night...spaghetti in clam <br>sauce that was wonderful(slightly smoky)<br> and a healthy sized "Insalata Stefano" that was<br>quite tastey<br>Staff was VERY attentive.<br>Nice that the wine selection is reasonable<br><br>As far as repeat business<br>goes...I\'d be more inclined if there were a few more<br>mid range ($10-15) non-pizza options that included a <br>meat/fish ingredient...and in my opinion, $14 for a calzone is<br>about $4 too much (guess I\'m picky but...)<br><br>Anyway..looking forward to the deli</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862024">\
	 <div id="dsq-comment-header-7862024" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862024" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862024">Siesta</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862024" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862024" class="dsq-comment-message">Had a good dinner last night--smoked salmon pasta, house salad, and a margarita pizza.  It was not quite as good as it was when we last went a couple of weeks ago, but they were much busier this time.  The wines by the glass are very good for the price and the bread (foccacia with sun dried tomato olive oil) was delicious.  Loved the overall atmosphere and the friendly service, which has improved each time.  And we are also loving the new espresso bar!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862025">\
	 <div id="dsq-comment-header-7862025" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862025" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862025">ballard girl</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862025" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862025" class="dsq-comment-message">Their pastries are out of this world!!  The espresso bar is wonderful! They have an amazing baker who used to work on a cruise line, Four Season Olympic Hotel and has over 30 years experience..he is fabulous!  I commend Tom for making constant improvements and staying focused in what is a tough economy and a tough business!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862026">\
	 <div id="dsq-comment-header-7862026" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862026" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862026">SunsetGirl</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862026" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862026" class="dsq-comment-message">We went with our toddler back in November and the experience was disappointing. For the most part because we brought our toddler (this is a nice place for older kids, not 2 year olds). The food was also disappointing. I went a couple of  weeks ago without my child and loved the atmosphere. The pasta was very good, but one of us got the pizza and one got a calzone and they still need work. The pizza was very limp and slightly bland and the calzone was way too doughy.  I will go back though because I thought the service was great and I like their pasta.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862027">\
	 <div id="dsq-comment-header-7862027" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862027" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862027">BallardBasement</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862027" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862027" class="dsq-comment-message">After reading about the new pizza chef, we decided to try Picolino\'s again.  Never again.  Unless some big changes happen very soon, they will be out of business.  First, they need to scrap the giant bowls that they serve the pizza in, it causes the moisture to collect and turns the pie to mush before it gets to the table.  Boards or perforated metal are needed.  Second, do not charge me nine dollars for a salad that is 1/4 of a bag of Trader Joe\'s arugula (50 cents) with a single slice of tomato and missing the shaved parmesan entirely.  This is Ballard.  We are all trying to hold onto our nickels.  Give us a break.  The wait staff is confused and poorly trained, and the service is slow.  Everyone seemed to be running around with their hair on fire.  That said, I found the sauce on the pizza to be authentic and the flavors good, only to be ruined by what someone thinks is a classy presentation.  Please, Picolino\'s, hire a snappy manager and lower your prices on some of the lesser items.  And would it kill you to add an extra few tablespoons of wine to the glass?  When my wine was brought, I actually thought it was for a taste, the glass only 1/4 full.  This is not the Italian spirit.  Bounty and good cheer are absent from this place.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862028">\
	 <div id="dsq-comment-header-7862028" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862028" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862028">L. Lambros</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862028" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862028" class="dsq-comment-message">I guess this place suits the neighborhood.  But, I\'d like to go somewhere else for fancy Italian food.  Nice try to everybody, and hope the coffee shop could uphold the Italian feel.  The owner seems to gloat about his own fantastic \'baked goods\'.  Prices on pastry are ridiculously low, so that\'s good.  But, I have mixed feelings on what\'s fresh and what isn\'t.  Power to you.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862029">\
	 <div id="dsq-comment-header-7862029" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862029" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862029">D in B</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862029" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862029" class="dsq-comment-message">The food is better than average but I find the wine pours a little short and the service sloppy.  I put it down to being a new restaurant but every time I eat at Picolino\'s they get some part of the order wrong.  I keep going back because the quality is good and the location is great (for me).  I would love to see more vegetarian dishes on the menu too.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-7862030">\
	 <div id="dsq-comment-header-7862030" class="dsq-comment-header">\
	 <cite id="dsq-cite-7862030" class="dsq-comment-cite">\
	 <span id="dsq-author-user-7862030">jbo</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-7862030" class="dsq-comment-body">\
	 <div id="dsq-comment-message-7862030" class="dsq-comment-message">My husband and I went on a double date with our neighbors to Piccolino in early February. The food was so so. What really stood out was the service - atrocious. We waited for 45 minutes before there was even water served. That only happened because we flagged down a server. Flagging seems to be all the new rage as it was the only way we got service the entire night. My favorite moment was when the server started to remove my friend\'s plate while her fork was still in her hand. After she politely said she wasn\'t done yet, we couldn\'t get our server\'s attention for another 25 minutes. I would recommend you either train your staff or drop your food prices to match your service level.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-8472568">\
	 <div id="dsq-comment-header-8472568" class="dsq-comment-header">\
	 <cite id="dsq-cite-8472568" class="dsq-comment-cite">\
	 <span id="dsq-author-user-8472568">nicole</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-8472568" class="dsq-comment-body">\
	 <div id="dsq-comment-message-8472568" class="dsq-comment-message">My family (2 young boys, hubby, and myself) went to dinner here Sunday night.  The service was good and it was kid friendly.  They brought both kids a small roll/pastry shaped like a mouse which was cute.   The food, however, was not good.  We ordered carpaccio for an appetizer and it had less taste than roast beef from Fred Meyers (but was priced around $11).  I asked if they made their own pasta, and yes, they make some of them including the ravioli.  Our server raved about the goat cheese ravioli so I ordered that.  The dish was literally SWIMMING in oil- very unappetizing and the pasta for the ravioli was so tough I could barely cut it.  My husband ordered the tuna, which I know is supposed to  only be seared, but it was still cold in the middle.  The best part of the meal was the wine (fairly priced), the basket of bread, and the kids macaroni and cheese was actually pretty good.  I will not go back.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-9862742">\
	 <div id="dsq-comment-header-9862742" class="dsq-comment-header">\
	 <cite id="dsq-cite-9862742" class="dsq-comment-cite">\
	 <span id="dsq-author-user-9862742">SunHillMama</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-9862742" class="dsq-comment-body">\
	 <div id="dsq-comment-message-9862742" class="dsq-comment-message">Try It Again!<br><br>We went right when it opened and it was so so. We went again and it was AWFUL but then they redid the menu and got new chefs and WOW!!! <br><br>It\'s sooooo good. <br><br>Pricey, but sooooo good. Huge portions. Plan to take some home.  <br><br>Kids menu is a little steep. It would be great to see them cut that by at least 1/3. Maybe they don\'t really, really want kids there. Who knows. Either works for us.  <br><br>Fantastic live music. <br><br>Its so nice to have a restaurant with a Full Bar walking distance. <br><br>The bakery is amazing too. I can\'t wait for the last little piece, the deli on the corner piece, to open. <br><br>My parting words - try it again. You\'ll be pleased.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-13128341">\
	 <div id="dsq-comment-header-13128341" class="dsq-comment-header">\
	 <cite id="dsq-cite-13128341" class="dsq-comment-cite">\
	 <span id="dsq-author-user-13128341">validates</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-13128341" class="dsq-comment-body">\
	 <div id="dsq-comment-message-13128341" class="dsq-comment-message">We went for dinner last week with friends. I thought to food was good. We all ordered something different and we were happy with our meals. Our friends ordered some simple pasta for their daughter and they brought it wrong. They did correct this and did not charge for her dinner. They also didn\'t seem to know which table should get the food. We ordered a bottle of wine to share so I can\'t speak to the wine pours.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-13302166">\
	 <div id="dsq-comment-header-13302166" class="dsq-comment-header">\
	 <cite id="dsq-cite-13302166" class="dsq-comment-cite">\
	 <span id="dsq-author-user-13302166">ExiledBrit</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-13302166" class="dsq-comment-body">\
	 <div id="dsq-comment-message-13302166" class="dsq-comment-message">Went yesterday to see what the fuss was about and yes, it was pricey but the Endive salad was cool crisp and crunchy and the pasta dishes were creamy and just the right side of al dente, my seafood pasta was spicy and fresh --&gt; but $19 :-(<br><br>They had a pretty talented and non-obnoxious guitar player strumming in the background and, for a Thursday were plenty busy.<br><br>Service was a little random (at their prices I\'d expect to have my water glass filled when empty) - I\'ll go again to try the pizza.<br><br>And there is ice cream across the street for dessert...</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-14438827">\
	 <div id="dsq-comment-header-14438827" class="dsq-comment-header">\
	 <cite id="dsq-cite-14438827" class="dsq-comment-cite">\
	 <span id="dsq-author-user-14438827">SunsetHillGuy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-14438827" class="dsq-comment-body">\
	 <div id="dsq-comment-message-14438827" class="dsq-comment-message">My wife and I tried Picolinos last night. This is our second attempt. Not sure if there will be a third try.  And it is a real shame.  We want it to be good.  The corner of 65th and 32nd should be the anchor of the neighborhood.  <br><br>The place is beautiful. We sat outside and the evening was just the right temperature.  Our server was charming.  Lots of shouting in Italian and friendly banter going on.  So, atmosphere was perfect.<br><br>But. . .<br><br>The service was glacial when it came to actually getting food, drinks, or our bill.  On the flip side, we were asked if we wanted more bread five times.  And a little guy filled our water (from the carafe already on the table) several times. <br><br>The food was both bland and icky at the same time.  I got the crab ravioli in lobster sauce ($22).  For some reaon there were little tiny bay shrimp (previously frozen) that had been aging a little too long.  The sauce had a sort of sharp-bad shrimp flavor and not a lot of other taste.  <br><br>My wife\'s clam pasta was just bland.<br><br>My coffee was luke warm as if it had been sitting in an air pot too long.  <br><br>Bill was about $100.  Two mains, one appetizer, one glass of wine, and two beers.   <br><br>Unfortunately, it just feels like a lack of pride and attention to detail. Which is odd, considering how intensively staffed the restaurant is. <br><br>So, $100 dinner for two that was a pretty big disappointment.   <br><br>We\'ll probably try the pizza but maybe not.  <br><br>Please, please, please fix it. The neighborhood wants you to succeed.  But don\'t charge med-high prices and then give us poor food.  It shows a lack of respect for us and for your craft.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-14576590">\
	 <div id="dsq-comment-header-14576590" class="dsq-comment-header">\
	 <cite id="dsq-cite-14576590" class="dsq-comment-cite">\
	 <span id="dsq-author-user-14576590">pjh</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-14576590" class="dsq-comment-body">\
	 <div id="dsq-comment-message-14576590" class="dsq-comment-message">This is one of our favorite spots!  We\'ve eaten here numerous times and only once did we have rather slow service.  Everyone, from the owner, to the bartender, to the wait staff has been overly helpful.  The food...ahhhhh...delightful!  The gnocci is like butter.  The goat cheese stuffed ravioli is a favorite of many.  And the truffles are a delightful, and not too heavy, way to end the meal.  <br>I highly recommend this lovely spot in the neighborhood!</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-15768399">\
	 <div id="dsq-comment-header-15768399" class="dsq-comment-header">\
	 <cite id="dsq-cite-15768399" class="dsq-comment-cite">\
	 <span id="dsq-author-user-15768399">SunsetHillGuy</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-15768399" class="dsq-comment-body">\
	 <div id="dsq-comment-message-15768399" class="dsq-comment-message">We tried Picolinos again.  Good news!  It was good. <br><br>This time we had pizza and soup.  The pizza was very good.  Crispy crust.  Flavorful sauce.  The soup was lentil and sausage.  It was good too. <br><br>The service was very attentive.  This time we didn\'t have to break out the semaphore flags to get our bill.  We\'ll be back.  Hopefully this is the going-forward pattern.</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-16903932">\
	 <div id="dsq-comment-header-16903932" class="dsq-comment-header">\
	 <cite id="dsq-cite-16903932" class="dsq-comment-cite">\
	 <span id="dsq-author-user-16903932">patriciaballard</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-16903932" class="dsq-comment-body">\
	 <div id="dsq-comment-message-16903932" class="dsq-comment-message">I visited Picolinos in Ballard this past weekend. I went for dessert and end up in the beautiful patio. I can\'t complain, the day was wonderful, the sun shining, the cleanliness, décor, beautiful  flowers, atmosphere, staff were all well mixed together. I asked for a soup to start. I still can remember the taste, just delicious, then later I got some shrimp risotto, which was the day\'s special. Prices were reasonable $$$$ worth the money .. and I had some glasses of champagne. I enjoyed the service and staff were courteous, I remember Gutty ,Carlo and Garret who speaks Italian.  I don\'t have anything but good things to say about the service. The three of them were just fantastic and seem to be on top of their guests, which I highly appreciate.  I love to go to restaurants and this one is now for sure my Ballard\'s favorite. <br>My advise, go to the restaurant and try it yourself.. or better yet take my advise and enjoy!!! Bon appetite!!! :-)</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-23157853">\
	 <div id="dsq-comment-header-23157853" class="dsq-comment-header">\
	 <cite id="dsq-cite-23157853" class="dsq-comment-cite">\
	 <span id="dsq-author-user-23157853">balardeater</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-23157853" class="dsq-comment-body">\
	 <div id="dsq-comment-message-23157853" class="dsq-comment-message">Top quality and was expecting to pay much more....<br>We had great dinner and great pasta, bit of wine some nice music and all for under $25.<br>Great atmosphere</div>\
	 </div>\
	 </li>\
	 <li id="dsq-comment-23427776">\
	 <div id="dsq-comment-header-23427776" class="dsq-comment-header">\
	 <cite id="dsq-cite-23427776" class="dsq-comment-cite">\
	 <span id="dsq-author-user-23427776">lindamorton</span>\
	 </cite>\
	 </div>\
	 <div id="dsq-comment-body-23427776" class="dsq-comment-body">\
	 <div id="dsq-comment-message-23427776" class="dsq-comment-message">This is a wonderful, warm, welcoming place with great food and ambiance.  In summer the courtyard is sublime and all year long, the restaurant provides authentic Italian pizze and other entrees served in a charming venue.  The next door cafe serves the best caffe italiano in Ballard.</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=myballard&t=ristorante_picolinos&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 = '29ac93bcc80e20dc00554a7b3e9cc874';
			if (typeof disqus_facebook_api_key != 'undefined') {
				facebook_api_key = disqus_facebook_api_key;
			}

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


	
		Dsq.Debug.log('Loading fbc');
		window.DisqusFbcParentController = (function (){
	var obj = {};
	
	// Private
	var rpcServer = null;
	var initted = false;
	var onInit = [];
	var user = null;
	var defaultRpcClient = null;
	var receiverUrl = "http://disqus.com/facebook-connect/xd_receiver.htm";
	var loginNode = document.getElementById('dsq-fbc-login');
	var authenticatedNode = document.getElementById('dsq-fbc-authenticated');
	var fbName = document.getElementById('dsq-fbc-name');
	var fbPic = document.getElementById('dsq-fbc-profilepic');
	var iframes = { 
		// Map of rpcServerName -> (rpcClient, iframeDomNode) pairs
		// Main Disqus iframe is added by init()
	};
	var makeRpcServerName = function(opt_postId) {
		// this method should be identical here and in iframeController factored out 
		if (opt_postId === undefined) {
			return 'disqusIframeFbcRpcServer';
		} else {
			return 'disqusIframeFbcRpcServer-' + opt_postId;
		}
	};
	var makeRpcClientName = function(opt_postId) {
		if (opt_postId === undefined) {
			return 'disqusParentFbcRpcClient';
		} else {
			return 'disqusParentFbcRpcClient-' + opt_postId;
		}
	};
	var updateFrame = function(rpcServerName) {
		var rpcClient = iframes[rpcServerName][0];
		var iframeNode = iframes[rpcServerName][1];
		rpcClient.send('setConnected', user);
		iframeNode.className = user ? 'dsq-post-reply-authenticated' : 'dsq-post-reply';
	};
	var setUser = function(userNow) {
		user = userNow;
		// pass null user data to signify logout
		var rpcServerName = null;
		for (rpcServerName in iframes) {
			updateFrame(rpcServerName);
		}
	};
	var createRpcClient = function(frameNode, opt_postId) {
		// Creates an XdRpcClient for communication with the iframe frameNode with parent comment 
		// equal to opt_postId. If this argument is undefined, creates a client for communicating with 
		// the main Disqus iframe. The XdRpcClient and frameNode are added to the "iframes" array.
		//
		// Returns the rpcServerName that the client is accessing. This name is also the index into
		// the "iframes" array.
		var ifName = Dsq.Iframes.makeReplyIframeName(opt_postId);
		var rpcServerName = makeRpcServerName(opt_postId);
		var rpcClientName = makeRpcClientName(opt_postId);
		var endpoint = new FB.XdComm.EndPoint(ifName, FB.XdComm.PageRelation.child, receiverUrl);
		var rpcClient = new FB.XdComm.XdRpcClient(rpcServerName, rpcClientName, endpoint, receiverUrl);
		iframes[rpcServerName] = [rpcClient, frameNode];
		if (window.isMashable) {
			// TODO: does this belong here?
			// Right now only Mashable needs this, because only they have a Connect button
			// inside the iframe, and that's the only iframe-> server communication
			rpcClient.send('createRpcClient', FB.XdComm.Server.singleton.get_receiverUrl());
		}
		return rpcServerName;
	};
	var postToNewsfeed = function(opt_result) {
		// Argument opt_result is an object containing values of the fb_connect_newsfeed cookies. 
		// These are `postId`, the id of the comment just posted, and `url`, the shortened link to it
		if (!opt_result) {
			return;
		}
		var activeComment = Dsq.Thread.getActiveCommentId();
		if (activeComment != opt_result.postId) {
			return;
		}
		var comment = Dsq.jsonData.posts[activeComment];
		params = {
			'site_name': Dsq.jsonData.forum.name,
			'comment_url': opt_result.url,
			'message': Dsq.Utils.stripTags(comment.message)
			};
		FB.Connect.showFeedDialog(83035958976, params, null, null, null, FB.RequireConnect.require);
	};
	var requireSession = function() {
		// Used when the iframe wants to initiate an FB Connect session
		FB.Connect.requireSession(obj.onLogin);
	};
	
	var onCreateReplyIframe = function(value) {
		if (value.xtype) {
			return;
		}
		var postId = value['postId'];
		if (!postId) {
			// We handle the main iframe separately, so in case somehow this gets called, skip it
			return;
		}
		var frameNode = value['node'];
		var rpcServerName = createRpcClient(frameNode, postId);
		updateFrame(rpcServerName);
		if(user && postId) {
			var node = document.getElementById('dsq-reply-bar-auth-' + postId);
			if (node) { // Not present in Mashable
				node.style.display = 'none';
			}
		}
	};

	// Public
	obj.onLogin = function() {
		// This is triggered either when the user connects or when they're already connected on visit
		var dsqReplyAuth = Dsq.Utils.getElementsByClassName(document, 'div', 'dsq-reply-bar-auth');
		var noAnonMsg = document.getElementById('dsq-no-anon-msg');
		
		if(noAnonMsg) { noAnonMsg.style.display = 'none'; }
		loginNode.style.display = 'none';
		for(var i=0; i<dsqReplyAuth.length; i++) {
			dsqReplyAuth[i].style.display = 'none';
		}
		
		authenticatedNode.style.display='block';
		FB.XFBML.Host.addElement(new FB.XFBML.ProfilePic(Dsq.$('dsq-fbc-profilepic')));
		FB.XFBML.Host.addElement(new FB.XFBML.Name(Dsq.$('dsq-fbc-name')));
		FB.Connect.getSignedPublicSessionData(setUser);
		
		if(document.getElementById('dsq-login-message')) {
			document.getElementById('dsq-login-message').style.display = 'none';
		}

		
		if(typeof(fbcLoginCallback) == 'function') {
			fbcLoginCallback();
		}
	};
	obj.logout = function() {
		var dsqReplyAuth = Dsq.Utils.getElementsByClassName(document, 'div', 'dsq-reply-bar-auth');
		var noAnonMsg = document.getElementById('dsq-no-anon-msg');
		
		FB.Connect.logout();
		if (!window.isMashable) {
			loginNode.style.display='inline';
		}
		
		if(noAnonMsg) { noAnonMsg.style.display = 'block'; }
		
		for(var i=0; i<dsqReplyAuth.length; i++) {
			dsqReplyAuth[i].style.display = 'block';
		}
		
		authenticatedNode.style.display='none';
		// Passing null user data to signify logout
		setUser(null);
		
		if(document.getElementById('dsq-login-message')) {
			document.getElementById('dsq-login-message').style.display = 'block';
		}
		
		if(typeof(fbcLogoutCallback) == 'function') {
			fbcLogoutCallback();
		}

		return false;
	 };
	obj.ensureInit = function(callback) {
		// If the controller hasn't already been initted, will wait until it has been before calling
		// callback; otherwise, calls it immediately. Does not attempt to call init.
		if (initted) {
			callback();
		} else {
			onInit.push(callback);
		}
	};
	obj.init = function() {
		// This method should be called after the FB scripts have loaded, FB.init has been called, 
		// and XdComm loaded.
		if (initted) {
			// I think this double init is caused by a bug with FB.ensureInit
			return;
		}
		var frameNode = Dsq.$(Dsq.Iframes.makeReplyIframeId());
		var rpcServerName = createRpcClient(frameNode);
		defaultRpcClient = iframes[rpcServerName][0];
		if (!window.isMashable) {
			FB.XFBML.Host.addElement(new FB.XFBML.LoginButton(loginNode));
		}
		Dsq.Events.addHandler(Dsq.Events.REPLY_IFRAME_CREATED, onCreateReplyIframe);
		if (Dsq.Thread.getActiveCommentId()) {
			// If there's a highlighted comment, we may have just posted, so check the cookie
			// to see if we should post to newsfeed.
			defaultRpcClient.send('queryNewsfeed', null, postToNewsfeed);
		}
		if (window.isMashable) {
			// Right now only Mashable needs this, because only they have a Connect button
			// inside the iframe, and that's the only iframe-> server communication
			var exportedMethods = {
				requireSession : {'method': requireSession}
			};
			rpcServer = new FB.XdComm.XdRpcServer('disqusParentFbcRpcServer', exportedMethods);

		}
		initted = true;
		for (var i=0; i<onInit.length; i++) {
			onInit[i]();
		}
	};

	return obj;
})();

		ExecuteWhen.add(window.fbIsReady,
			function() {
				FB.ensureInit(function () {
					DisqusFbcParentController.init();
					FB.Connect.ifUserConnected(DisqusFbcParentController.onLogin);
				});
			});
	


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');
}

})();




