var D = YAHOO.util.Dom; var E = YAHOO.util.Event; var EL = YAHOO.util.Element; var C = YAHOO.util.Connect; var AN = YAHOO.util.Anim; var nextPost; var previousPost; if (typeof DEVIL == "undefined") { var DEVIL = {}; } DEVIL.namespace = function() { var a=arguments, o=null, i, j, d; for (i=0; i -1) { anchor = strID.substring(intLen + 1,strID.length); return anchor; } else { return ""; } } var cancelDefault = function(e) { E.preventDefault(e); }; DEVIL.blog.showCloud = function(tagCloudString) { var tagCloud = D.get("tagCloud"); tagCloud.innerHTML = ""; try { var tags = YAHOO.lang.JSON.parse(tagCloudString); } catch (e) { } var tagStrings = ""; var setStep = Math.ceil(tags.length / 7); var i = 0; if (tags.length < 8) { for (j = 1; j < tags.length+1; j++) { tagStrings +=""; tagStrings +=""+tags[j-1].tag+""; tagStrings +=""; } } else { for (j = 1; j < 8; j++) { tagStrings +=""; for (i; i < (j * setStep); i++) { if (tags[i]) { tagStrings +=""+tags[i].tag+""; } } tagStrings +=""; } } tagCloud.innerHTML = tagStrings+"
"; allTags = D.getElementsByClassName("tag", "a", tagCloud); for (var k = 0; k < allTags.length; k++) { allTags[k].href = "#tag:"+allTags[k].innerHTML; E.addListener(allTags[k], "click", cancelDefault); E.addListener(allTags[k], "click", function(e, obj) { DEVIL.blog.loadBlogData("tag:"+obj.tagText); }, {"tagText":allTags[k].innerHTML}); } }; DEVIL.blog.showBlogPosts = function(blogPostsString,type) { var blogContent = D.get("blogContent"); var nextLink = D.get("nextLink"); var previousLink = D.get("previousLink"); var homeLink = D.get("homeLink"); blogContent.innerHTML = ""; try { var blogPosts = YAHOO.lang.JSON.parse(blogPostsString); } catch (e) { blogContent.innerHTML = "
Tundub, et mingi viga juhtus. Proovi mõne aja pärast uuesti.
"; E.removeListener(homeLink,"click"); E.addListener(homeLink,"click",cancelDefault); E.addListener(homeLink,"click",function() { DEVIL.blog.loadBlogData("","home"); }); homeLink.style.display = "inline"; } if ((!blogPosts) || (blogPosts && blogPosts.length == 0)) { blogContent.innerHTML = "
Ei leia...
"; E.removeListener(homeLink,"click"); E.addListener(homeLink,"click",cancelDefault); E.addListener(homeLink,"click",function() { DEVIL.blog.loadBlogData("","home"); }); homeLink.style.display = "inline"; } else if (blogPosts && blogPosts.length > 0) { for (var i = 0; i < blogPosts.length; i++) { var blogPostDiv = document.createElement("div"); blogPostDiv.setAttribute("class","blogPost"); var blogPostData = "

"+blogPosts[i].postHeader+"

Link: "+blogPosts[i].postDate+" · "+blogPosts[i].postTime+"

"+blogPosts[i].postContent+"

"; var postTagsArray = blogPosts[i].postTags.split(", "); var postTagsStrip = ""; for (var j= 0; j < postTagsArray.length; j++) { postTagsStrip += ""+postTagsArray[j]+""; } var blogPostData = "

"+blogPosts[i].postHeader+"

Link: "+blogPosts[i].postDate+" · "+blogPosts[i].postTime+" · Sildid: "+postTagsStrip+"

"+blogPosts[i].postContent+"
"; var blogPostComments = ""; for (var j = 0; j < blogPosts[i].postComments.length; j++) { var commentClass = "floatl"; var commentBreak = ""; if (j % 2) { commentClass = "floatr"; commentBreak = "
"; } blogPostComments += "

"+blogPosts[i].postComments[j].commentPoster+""+blogPosts[i].postComments[j].commentDate+" · "+blogPosts[i].postComments[j].commentTime+"

"+blogPosts[i].postComments[j].commentText+"
"+commentBreak+""; } if (blogPosts.length > 1) { blogPostDiv.innerHTML += blogPostData+"
"+blogPostComments+"
"; blogContent.appendChild(blogPostDiv); } else { blogPostDiv.innerHTML += blogPostData+"
"+blogPostComments+"
Nimi:
Kommentaar:
"; blogContent.appendChild(blogPostDiv); var addLink = D.get("addCommentLink"+blogPosts[i].postId); var addCommentDiv = D.get("addFor"+blogPosts[i].postId); E.removeListener(addLink, "click"); E.addListener(addLink, "click", cancelDefault); E.addListener(addLink, "click", function(e, commentTable) { var animOpen = new AN(commentTable.addDivId, { height: { from: 0, to: commentTable.addDivId.firstChild.firstChild.offsetHeight + 20 } }, 0.5, YAHOO.util.Easing.easeOut); var animFade = new AN(commentTable.addDivId, { opacity: { from: 0, to: 1 } }, 0.5, YAHOO.util.Easing.easeIn); this.style.display = "none"; animOpen.animate(); animFade.animate(); }, {"addDivId":addCommentDiv}); var commentSubmitter = D.get("commentSubmit"+blogPosts[i].postId); E.removeListener(commentSubmitter, "click"); E.addListener(commentSubmitter, "click", DEVIL.blog.postCommentData, blogPosts[i].postId); var commentPoster = D.get("commentPoster"+blogPosts[i].postId); E.addListener(commentPoster, "focus", function() { E.removeListener(document, "keyup", DEVIL.blog.listenKeys); }); E.addListener(commentPoster, "blur", function() { E.addListener(document, "keyup", DEVIL.blog.listenKeys); }); var commentText = D.get("commentText"+blogPosts[i].postId); E.addListener(commentText, "focus", function() { E.removeListener(document, "keyup", DEVIL.blog.listenKeys); }); E.addListener(commentText, "blur", function() { E.addListener(document, "keyup", DEVIL.blog.listenKeys); }); } var titleLink = blogPostDiv.getElementsByTagName("h2")[0].getElementsByTagName("a")[0]; E.addListener(titleLink,"click",cancelDefault); E.addListener(titleLink, "click", function(e, obj) { DEVIL.blog.loadBlogData(obj.postId); }, {"postId":blogPosts[i].postId}); // D.getElementsByClassName("blogTags").getElementsByTagName("a")); D.getElementsByClassName("blogTags", "span", D.get("blogSection"), function() { D.batch(this.getElementsByTagName("a"), function(el) { E.addListener(el, "click", cancelDefault); E.addListener(el, "click", function() { DEVIL.blog.loadBlogData("tag:"+el.innerHTML); }); }); }); } if (blogPosts.length == 1) { if (blogPosts[0].postNextId == "") { nextLink.style.display = "none"; homeLink.style.display = "none"; } else { nextLink.style.display = "inline"; homeLink.style.display = "inline"; } if (blogPosts[0].postPreviousId == "") { previousLink.style.display = "none"; } else { previousLink.style.display = "inline"; } E.removeListener(nextLink,"click"); nextPost = blogPosts[0].postNextId; E.addListener(nextLink,"click",cancelDefault); E.addListener(nextLink,"click",function() { DEVIL.blog.loadBlogData(blogPosts[0].postNextId); }); E.removeListener(previousLink,"click"); previousPost = blogPosts[0].postPreviousId; E.addListener(previousLink,"click",cancelDefault); E.addListener(previousLink,"click",function() { DEVIL.blog.loadBlogData(blogPosts[0].postPreviousId); }); if (parent.location.hash == "") { parent.location.hash = blogPosts[0].postId; } } else { homeLink.style.display = "inline"; previousLink.style.display = "none"; nextLink.style.display = "none"; } E.removeListener(homeLink,"click"); E.addListener(homeLink,"click",cancelDefault); E.addListener(homeLink,"click",function() { DEVIL.blog.loadBlogData("","home"); }); } }; DEVIL.blog.loadBlogData = function(anchor,type) { var responseSuccess = function(o) { /* Please see the Success Case section for more * details on the response object's properties. * o.tId * o.status * o.statusText * o.getResponseHeader[ ] * o.getAllResponseHeaders * o.responseText * o.responseXML * o.argument */ DEVIL.blog.showBlogPosts(o.responseText); window.scrollTo(0,0); }; var responseFailure = function(o) { // Access the response object's properties in the // same manner as listed in responseSuccess( ). // Please see the Failure Case section and // Communication Error sub-section for more details on the // response object's properties. }; var callback = { success:responseSuccess, failure:responseFailure }; var pageAnchor = detectAnchor(); if (anchor) { pageAnchor = anchor; } if (parent.location.hash != "") { parent.location.hash = pageAnchor; } if (type == "home") { parent.location.hash = "#"; pageAnchor = ""; } var transaction = C.asyncRequest("POST", "datajs.php", callback, "getter="+pageAnchor+""); }; DEVIL.blog.loadCloudData = function() { var responseSuccess = function(o) { DEVIL.blog.showCloud(o.responseText); }; var responseFailure = function(o) { }; var callback = { success:responseSuccess, failure:responseFailure }; var transaction = C.asyncRequest("POST", "datacloud.php", callback); }; DEVIL.blog.postCommentData = function(ev, parentId) { var responseSuccess = function(o) { DEVIL.blog.loadBlogData(); }; var responseFailure = function(o) { alert("Ei saanud kommentaari lisada, proovi uuesti"); }; var callback = { success:responseSuccess, failure:responseFailure }; var commentPoster = D.get("commentPoster"+parentId).value; var commentText = D.get("commentText"+parentId).value; if (commentText != "" && commentPoster != "") { var transaction = C.asyncRequest("POST", "postcomment.php", callback, "action=comment&comment_text="+commentText+"&comment_poster="+commentPoster+"&comment_parent="+parentId+"&comment_check=killAllSpam"); } else { alert("Tühja kommentaari ei saa lisada"); } }; DEVIL.blog.attachEvents = function() { var downloadEngine = D.get("downloadEngine"); if (downloadEngine) { var createLink = function() { var downloadField = D.get("downloadField"); if (downloadField.value.length > 0) { var linkText = downloadField.value; var defaultContents = downloadEngine.innerHTML; var createdLink = "Tegin sulle sellise lingi, sobib?\"Kustuta"; var responseSuccess = function(o) { }; var responseFailure = function(o) { }; var callback = { success:responseSuccess, failure:responseFailure }; var transaction = C.asyncRequest("POST", "postlink.php", callback, "action=link&link_url="+linkText+"&link_check=killAllSpam"); downloadEngine.innerHTML = createdLink; var deleteCreated = D.get("deleteCreated"); var deleteLink = function() { if (deleteCreated) { downloadEngine.innerHTML = defaultContents; } }; if (deleteCreated) { E.addListener(deleteCreated, "click", cancelDefault); E.addListener(deleteCreated, "click", deleteLink); } } }; E.addListener(downloadEngine, "submit", cancelDefault); E.addListener(downloadEngine, "submit", createLink); } var searchEngine = D.get("searchEngine"); if (searchEngine) { var doSearch = function() { var searchField = D.get("searchField"); if (searchField.value.length > 2) { DEVIL.blog.loadBlogData("search:"+searchField.value); searchField.value = ""; } else { D.get("blogContent").innerHTML = "
Liiga lühike otsisõna
"; } }; E.addListener(searchEngine, "submit", cancelDefault); E.addListener(searchEngine, "submit", doSearch); } var searchField = D.get("searchField"); E.addListener(searchField, "focus", function() { E.removeListener(document, "keyup", DEVIL.blog.listenKeys); }); E.addListener(searchField, "blur", function() { E.addListener(document, "keyup", DEVIL.blog.listenKeys); }); var downloadField = D.get("downloadField"); E.addListener(downloadField, "focus", function() { E.removeListener(document, "keyup", DEVIL.blog.listenKeys); }); E.addListener(downloadField, "blur", function() { E.addListener(document, "keyup", DEVIL.blog.listenKeys); }); }; DEVIL.blog.listenKeys = function(e) { // back 37, 74, 100 // fwd 39, 75, 102 // home 72 var nextLink = D.get("nextLink"); var previousLink = D.get("previousLink"); var homeLink = D.get("homeLink"); if (homeLink && homeLink.style.display == "inline" && e.keyCode == 72) { DEVIL.blog.loadBlogData("","home"); } if (nextLink && nextPost && nextPost.length > 0 && ( e.keyCode == 39 || e.keyCode == 75 || e.keyCode == 102 ) ) { DEVIL.blog.loadBlogData(nextPost); } if (previousLink && previousPost && previousPost.length > 0 && ( e.keyCode == 37 || e.keyCode == 74 || e.keyCode == 100 ) ) { DEVIL.blog.loadBlogData(previousPost); } }; E.onDOMReady(function() { E.addListener(document, "keyup", DEVIL.blog.listenKeys); DEVIL.blog.loadBlogData(); DEVIL.blog.loadCloudData(); DEVIL.blog.attachEvents(); });