<script src=\'http://code.jquery.com/jquery-latest.js\' type=\'text/javascript\'></script>
<b:if cond=\'data:blog.pageType == "item"\'>
<style type=\'text/css\'>
.admin-comment {
background: #F4F4F4;
margin: 4px 4px 4px 0;
padding: 3px 3px 0 3px;
border: 1px solid #EDEDED;
}
.admin-comment:hover {
background: #EDEDFF;
border: 1px solid #D0D0FF;
}
.normal-comment {
padding: 3px 3px 0 3px;
margin-right: 4px;
border: 1px solid white;
}
.normal-comment:hover {
background: #F8F8FF;
border: 1px solid #EDEDFF;
padding: 3px 3px 0 3px;
}
.comment-reply-link { font-weight:bold !important; margin-right:1em; }
#comments-block .comment-footer { margin-bottom: 2px; margin-top:0px;}
</style>
<script type=\'text/javascript\'>
//<![CDATA[
// Threaded comments for Blogger v2
// by MS-potilas 2012
// Supports "Blogger threading" (feed) and has easy install.
// See http://yabtb.blogspot.com/2012/01/blogger-threaded-commenting-hack-v2.html
//
// config:
var maxThreadingLevels = 999; // limit to 2 to get Blogger-like threading; 3-4 is good, too
var useBloggerThreading = true; // read Blogger threading information from feed
var preferBloggerThreading = true; // prefer Blogger threading over @nick threading
var threadIndent = 43; // pixels/level
var replyCommentText = "Reply";
var replyToUser = "Reply to ";
var deleteCommentText = ""; // leave empty to use default (img)
var useAdminPic = true; // use same img as Blogger threaded comments
// config end
// two xpand/collapse hack functions
function getCmtBodyElm(elm) {
if(elm.className=="admin-comment" || elm.className=="normal-comment") elm=elm.firstChild;
while(elm && (elm.nodeType != 1 || (elm.className != "comment-body" && elm.className != "comment-body-author"))) elm = elm.nextSibling;
return elm;
}
function tglCmt(event, elm) {
var txt=\'\';
if(window.getSelection) txt = window.getSelection();
else if (document.getSelection) txt = document.getSelection();
else if (document.selection) txt = document.selection.createRange().text;
var target = event.target ? event.target : event.srcElement;
if(target.nodeType != 1) target=target.parentNode;
if(txt != \'\' || target.nodeName.toLowerCase() == \'a\' || target.nodeName.toLowerCase() == \'img\') return;
$(getCmtBodyElm(elm)).slideToggle();
}
var hlInstalled;
if(!($(".normal-comment").length+$(".admin-comment").length)) hlInstalled=false;
else hlInstalled=true;
var cmtblock = $("#comments-block");
var cmts = $("dt", cmtblock);
var hrefr = $(\'.comment-footer a[href*="/comment.g"]:last\').attr("href");
if(!hrefr || hrefr=="") {
hrefr = "";
if($(\'.blogger-comment-from-post\').length)
hrefr=$(\'#comment-editor\').attr("src").match("^.*postID=[^&]+")[0].replace("comment-iframe.g", "comment.g");
}
var onclk = $(\'.comment-footer a[href*="/comment.g"]:last\').attr("onclick");
if(!onclk) onclk = "";
cmts.each(function() {
var c0=$(this);
var c1=c0.next();
var c2=c1.next();
var cid=c0.attr("id");
var author = $(".avatar-image-container img",c0).attr("title");
var cdelete = $(".comment-delete", c2);
if(deleteCommentText != "") cdelete.html(deleteCommentText);
var cdeletep = cdelete.parent();
cdeletep.detach();
var ctime = c2.children(":first");
ctime.detach();
c0.append(ctime);
var creply = $(".comment-reply-link", c0);
// add reply to comment hack if needed
if(!creply.length) {
if(hrefr != "" && author != "") {
var onc=\'"\'+onclk+\'"\';
if(onclk.search(\'"\') > -1) onc="\'"+onclk+"\'";
var href = hrefr+"&postBody=%40%3Ca%20href%3D%22%23" + cid + "%22%3E" + author + "%3C%2Fa%3E%26%2332%3B#form";
creply = $(\'<a href="\'+href+\'" onclick=\'+onc+\' class="comment-reply-link" title="\'+replyToUser+author+\'">\'+replyCommentText+\'</a>\');
}
}
else {
creply.detach();
creply.css("float", "");
creply.html(replyCommentText);
}
c2.append(creply);
c2.append(cdeletep);
var txtNode = c0.children()[0];
while(txtNode && (txtNode.nodeType != 3 || (txtNode.nodeType == 3 && txtNode.nodeValue.search("...")==-1))) txtNode=txtNode.nextSibling;
if(txtNode) {
var txtWrote = " " + txtNode.nodeValue.replace(/\\s*\\.\\.\\.\\s*$/, "") + " ";
txtNode.nodeValue = txtWrote;
}
if(c0.hasClass("blog-author") && useAdminPic) {
var txtAuthor = c0.children(\'a[href*="profile"]:first\').html();
c0.children(\'.avatar-image-container + a\').after(\' <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9B\' + \'RUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0U\' + \'pKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==" title="\' + txtAuthor + \'" style="margin:-3px 2px -5px" /> \');
}
// Add "highlight comments hack" if needed:
if(!hlInstalled) {
cmtblock.append(\'<div id="x\'+cid+\'" />\');
c0.detach();
c1.detach();
c2.detach();
var newdiv = $("#comments-block div:last");
newdiv.append(c0);
newdiv.append(c1);
newdiv.append(c2);
if(c0.hasClass("blog-author")) newdiv.addClass("admin-comment");
else newdiv.addClass("normal-comment");
newdiv.click(function(event) { tglCmt(event, this); } ); // xpand/collapse hack
}
});
// and finally the function to thread comments, pretty much the same as 2011 version:
function threadComments(json) {
var replyToCommentID = [];
if(useBloggerThreading && json)
for(var i=0 ; i < json.feed.entry.length ; i++) {
var entry = json.feed.entry[i];
var rela = "";
var self = "";
for (var k=0; k<entry.link.length; k++) {
if (entry.link[k].rel == \'related\') rela = entry.link[k].href.split("/comments/default/")[1];
if (entry.link[k].rel == \'self\') self = entry.link[k].href.split("/comments/default/")[1];
}
if(rela!="" && self!="") replyToCommentID[self] = rela;
}
else
preferBloggerThreading = false;
var clss = [];
var elements = document.getElementsByTagName("*");
for(var i=0 ; i<elements.length ; i++)
if(elements[i].className=="normal-comment" || elements[i].className=="admin-comment")
clss.push(elements[i]);
var prevAuthor = "";
var prevNode = null;
var authornodes = {};
for(var x=0 ; x < clss.length; x++ ) {
var moved = false;
var width = clss[x].scrollWidth;
clss[x].style.position = "relative";
clss[x].style.left = "0px";
var thisID = clss[x].id.split("c")[1];
var author = clss[x].innerHTML.toLowerCase().indexOf("%22%3e");
author = clss[x].innerHTML.substr(author+6);
if(author.toLowerCase().indexOf("%3c%2fa%3e") > -1)
author = author.substr(0, author.toLowerCase().indexOf("%3c%2fa%3e"));
else
author = "";
if(author == "")
author=$("#xc"+thisID+" .avatar-image-container img").attr("title");
var cmtChild = clss[x].firstChild;
while(cmtChild && !/(^| )comment-body( |$)/.test(cmtChild.className) && !/(^| )comment-body-author( |$)/.test(cmtChild.className))
cmtChild = cmtChild.nextSibling;
var txt = cmtChild.innerHTML;
var elm = null;
// from feed:
if(preferBloggerThreading && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
elm = document.getElementById("xc"+replyToCommentID[thisID]);
if(!elm) {
var cmtID = txt.toLowerCase().indexOf("href=\\"#");
if(cmtID == -1) cmtID = txt.toLowerCase().indexOf("href=\\"" + (window.location.href.toLowerCase()).split("#",1)[0] + "#");
if(cmtID > -1) {
var commentid = "x" + txt.substr(cmtID).split("#")[1].split("\\"")[0];
elm = document.getElementById(commentid);
}
}
if(!elm && prevAuthor != "" && x && prevNode)
{
if(txt.indexOf("@" + prevAuthor) > -1)
elm = prevNode;
else if(prevAuthor.length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.toLowerCase()) > -1)
elm = prevNode;
else if(prevAuthor.split(/[\\s,-.]+/)[0].length > 3 && txt.toLowerCase().indexOf("@" + prevAuthor.split(/[\\s,-.]+/)[0].toLowerCase()) > -1)
elm = prevNode;
}
if(!elm)
for(var tmp in authornodes)
if(txt.indexOf("@" + tmp) > -1)
elm = authornodes[tmp];
if(!elm && replyToCommentID[thisID] && replyToCommentID[thisID] != "")
elm = document.getElementById("xc"+replyToCommentID[thisID]);
if(elm) {
var ind = 0;
if(elm.style.left != "")
ind = parseInt(elm.style.left);
if(ind < 300 && parseInt(ind / threadIndent)+1 < maxThreadingLevels) {
if(ind < 140)
ind = ind + threadIndent;
else
ind = ind + parseInt(threadIndent / 3);
}
var parNode = elm.parentNode;
var place = elm;
var xpos;
do {
do place = place.nextSibling;
while(place && place.nodeType != 1);
if(place && place.style && place.style.left != "")
xpos = parseInt(place.style.left);
else
xpos = 0;
} while(place && xpos >= ind);
if(place != clss[x]) {
parNode.insertBefore(clss[x], place);
moved = true;
}
clss[x].style.position = "relative";
clss[x].style.left = ind + "px";
width = width - ind;
}
clss[x].style.width = width + "px";
if(!moved) {
prevAuthor = author;
prevNode = clss[x];
}
if(author != "")
authornodes[author] = clss[x];
}
}
var cfeedbase = $(\'link[href$="comments/default"]\').attr("href").split("/default")[0];
if(useBloggerThreading && $(\'a[href*="\'+cfeedbase+\'"]\').length)
document.write(\'<script type="text/javascript" src="\'+cfeedbase+\'/summary?max-results=500&alt=json-in-script&callback=threadComments"></\'+\'script>\');
else threadComments();
//]]>
</script>
</b:if>