var disqus_identifier; var disqus_title; var disqus_url; var disqus_developer = 1; Mizuho.initializeCommenting = $.proxy(function() { var self = this; this.commentBalloons = $('.comments'); this.commentBalloons.click(function() { self.showCommentsPopup(this); }); this.reloadCommentCount(); }, Mizuho); Mizuho.showLightbox = $.proxy(function(creationCallback, closeCallback) { var lightbox = $( '
' + '
' + '
' + '
'); var shadow = $('#comments_lightbox_shadow', lightbox); var contents = $('#comments_lightbox_contents > .shell', lightbox); function close() { if (lightbox) { lightbox.remove(); lightbox = undefined; if (closeCallback) { closeCallback(); } } } shadow.click(close); lightbox.bind('lightbox:close', close); lightbox.appendTo(document.body); creationCallback(contents); }, Mizuho); Mizuho.getCommentThreadInfo = $.proxy(function(balloon) { var info = {}; if ($(balloon).closest('#toc').length > 0) { info.id = 'toctitle'; info.topic = 'toctitle'; info.title = $('#header h1').text() + " - " + $('#toctitle').text(); } else { var header = $(balloon).next('h2, h3, h4'); if (header.length > 0) { info.id = header.attr('id'); info.topic = header.data('comment-topic'); info.title = $('#header h1').text() + " - " + header.text(); } else { info = undefined; } } return info; }, Mizuho); Mizuho.callJuviaApi = function(action, options) { function makeQueryString(options) { var key, params = []; for (key in options) { params.push( encodeURIComponent(key) + '=' + encodeURIComponent(options[key])); } return params.join('&'); } // Makes sure that each call generates a unique URL, otherwise // the browser may not actually perform the request. if (!('_juviaRequestCounter' in window)) { window._juviaRequestCounter = 0; } var url = JUVIA_URL + '/api/' + action + '?_c=' + window._juviaRequestCounter + '&' + makeQueryString(options); window._juviaRequestCounter++; var s = document.createElement('script'); s.async = true; s.type = 'text/javascript'; s.className = 'juvia'; s.src = url; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(s); } Mizuho.showCommentsPopup = $.proxy(function(balloon) { var info = this.getCommentThreadInfo(balloon); if (!info) { return; } var self = this; this.showLightbox(function(element) { // We install a 'Close' button in the Juvia comment form after it has loaded. function installCloseButton() { if ($('#comments .juvia-form-actions').size() > 0) { // The Juvia form is now loaded. Install the button. var div = $('
'); var button = $('').appendTo(div); div.insertBefore('#comments .juvia-form-actions .juvia-error'); button.click(function() { $(element).trigger('lightbox:close'); }); } else { // Continue polling. setTimeout(installCloseButton, 50); } } setTimeout(installCloseButton, 50); // Now load the Juvia comments form. element.html('
Loading comments...
'); self.changingHash = true; location.hash = '#!/' + info.id; self.callJuviaApi('show_topic.js', { container : '#comments', site_key : JUVIA_SITE_KEY, topic_key : info.topic, topic_url : location.href, topic_title : info.topic, include_base: !window.Juvia, include_css : !window.Juvia }); }, function() { self.reloadCommentCount(); }); }, Mizuho); Mizuho.reloadCommentCount = $.proxy(function() { this.callJuviaApi('list_topics.jsonp', { site_key: JUVIA_SITE_KEY, jsonp : 'Mizuho.topicListReceived' }); }, Mizuho); Mizuho.topicListReceived = $.proxy(function(result) { var self = this; var i, topic, map = {}; for (i = 0; i < result.topics.length; i++) { topic = result.topics[i]; map[topic.key] = topic; } this.commentBalloons.each(function() { var info = self.getCommentThreadInfo(this); if (info) { topic = map[info.topic]; if (topic) { var balloon = $(this); $('.count', balloon).text(topic.comment_count); balloon.removeClass('empty'); balloon.addClass('nonempty'); balloon.attr('title', null); } } }); }, Mizuho); $(document).ready(Mizuho.initializeCommenting);