Sitemap
function loadtoc(json) {
function getPostData() {
// this functions reads all postdata from the json-feed and stores it in arrays
if ("entry" in json.feed) {
var numEntries = json.feed.entry.length;
totalEntires = totalEntires + numEntries;
totalPosts=json.feed.openSearch$totalResults.$t
if(totalPosts>totalEntires)
{
var nextjsoncall = document.createElement('script');
nextjsoncall.type = 'text/javascript';
startindex=totalEntires+1;
nextjsoncall.setAttribute("src", "/feeds/posts/summary?start-index=" + startindex + "&max-results=500&alt=json-in-script&callback=loadtoc");
tocdiv.appendChild(nextjsoncall);
}
// main loop gets all the entries from the feed
for (var i = 0; i < numEntries; i++) {
// get the entry from the feed
var entry = json.feed.entry[i];
// get the posttitle from the entry
var posttitle = entry.title.$t;
// get the post date from the entry
var postdate = entry.published.$t.substring(0,10);
// get the post url from the entry
var posturl;
for (var k = 0; k < entry.link.length; k++) {
if (entry.link[k].rel == 'alternate') {
posturl = entry.link[k].href;
break;
}
}
// get the post contents from the entry
// strip all html-characters, and reduce it to a summary
if ("content" in entry) {
var postcontent = entry.content.$t;}
else
if ("summary" in entry) {
var postcontent = entry.summary.$t;}
else var postcontent = "";
// strip off all html-tags
var re = /]*>/g;
postcontent = postcontent.replace(re, "");
// reduce postcontent to numchar characters, and then cut it off at the last whole word
if (postcontent.length > numChars) {
postcontent = postcontent.substring(0,numChars);
var quoteEnd = postcontent.lastIndexOf(" ");
postcontent = postcontent.substring(0,quoteEnd) + '...';
}
// get the post labels from the entry var pll = ''; if ("category" in entry) { for (var k = 0; k < entry.category.length; k++) { pll += '' + entry.category[k].term + ', '; } var l = pll.lastIndexOf(','); if (l != -1) { pll = pll.substring(0,l); } }
// add the post data to the arrays postTitle.push(posttitle); postDate.push(postdate); postUrl.push(posturl); postSum.push(postcontent); postLabels.push(pll); } } if(totalEntires==totalPosts) {tocLoaded=true;showToc();} } // end of getPostData
// start of showtoc function body // get the number of entries that are in the feed // numEntries = json.feed.entry.length;
// get the postdata from the feed getPostData();
// sort the arrays sortPosts(sortBy); tocLoaded = true; }
// filter and sort functions
function filterPosts(filter) { // This function changes the filter // and displays the filtered list of posts // document.getElementById("bp_toc").scrollTop = document.getElementById("bp_toc").offsetTop;; postFilter = filter; displayToc(postFilter); } // end filterPosts
function allPosts() { // This function resets the filter // and displays all posts
postFilter = ''; displayToc(postFilter); } // end allPosts
function sortPosts(sortBy) { // This function is a simple bubble-sort routine // that sorts the posts
function swapPosts(x,y) { // Swaps 2 ToC-entries by swapping all array-elements var temp = postTitle[x]; postTitle[x] = postTitle[y]; postTitle[y] = temp; var temp = postDate[x]; postDate[x] = postDate[y]; postDate[y] = temp; var temp = postUrl[x]; postUrl[x] = postUrl[y]; postUrl[y] = temp; var temp = postSum[x]; postSum[x] = postSum[y]; postSum[y] = temp; var temp = postLabels[x]; postLabels[x] = postLabels[y]; postLabels[y] = temp; } // end swapPosts
for (var i=0; i < postTitle.length-1; i++) {
for (var j=i+1; j ';
tocTable += ' ';
tocTable += ' ';
tocTable += ' ';
for (var i = 0; i < postTitle.length; i++) {
if (filter == '') {
tocTable += '
';
numDisplayed++;
} else {
z = postLabels[i].lastIndexOf(filter);
if ( z!= -1) {
tocTable += ' ';
numDisplayed++;
}
}
}
tocTable += ' ';
if (numDisplayed == postTitle.length) {
var tocNote = 'Displaying all ' + postTitle.length + ' posts function toggleTitleSort() {
if (sortBy == "titleasc") { sortBy = "titledesc"; }
else { sortBy = "titleasc"; }
sortPosts(sortBy);
displayToc(postFilter);
} // end toggleTitleSort function toggleDateSort() {
if (sortBy == "datenewest") { sortBy = "dateoldest"; }
else { sortBy = "datenewest"; }
sortPosts(sortBy);
displayToc(postFilter);
} // end toggleTitleSort function showToc() {
if (tocLoaded) {
displayToc(postFilter);
var toclink = document.getElementById("toclink"); }
else { alert("Just wait... TOC is loading"); }
} function hideToc() {
var tocdiv = document.getElementById("toc");
tocdiv.innerHTML = '';
var toclink = document.getElementById("toclink");
toclink.innerHTML = '� Show Table of Contents ';
tocTable += '
';
tocTable += '
';
tocTable += '' + tocHead1 + '';
tocTable += '
';
tocTable += '' + tocHead2 + '';
tocTable += '
';
tocTable += '' + tocHead3 + '';
tocTable += '
' + postTitle[i] + '
' + postDate[i] + '
' + postLabels[i] + '
' + postTitle[i] + '
' + postDate[i] + '
' + postLabels[i] + '
'; }
else {
var tocNote = 'Displaying ' + numDisplayed + ' posts labeled '';
tocNote += postFilter + '' of '+ postTitle.length + ' posts total
';
}
tocdiv.innerHTML = tocNote + tocTable;
} // end of displayToc';
}