var loggedin = false; jQuery(function($) { edCanvas = document.getElementById('posttext'); jQuery('#comment-submit').live( 'click', function() { if(loggedin == true) window.onbeforeunload = null; }); if(isUserLoggedIn) { // Checks if you are loggedin and try to input data (To fix for ONLY private posts.) jQuery('.inputarea, #comment, .comment-reply-link, #comment-submit').click(function() { jQuery.ajax({ type: "POST", url: ajaxUrl +'&action=logged_in_out&_loggedin=' + nonce, success: function(result) { if(result != 'logged_in') { newNotification('Please login again.'); window.location = login_url; } else { loggedin = true; } } }); }); } window.onbeforeunload = function ( e ) { if( jQuery('#posttext').val() || jQuery('#comment').val()) { var e = e || window.event; if ( e ) { // For IE and Firefox e.returnValue = p2txt.unsaved_changes; } return p2txt.unsaved_changes; // For Safari } }; /* * Insert new comment inline */ function insertCommentInline(postParent, comment_parent, commentHtml, showNotification) { postParent = "#"+postParent; $(postParent).children('ul.commentlist').show(); $(postParent).children('.discussion').hide(); if (0 == comment_parent) { if (0 == $(postParent).children('ul.commentlist').length) { $(postParent).append(''); commentsLists = $("ul.commentlist"); } $(postParent).children('ul.commentlist').append('
'); var newComment = $(postParent).children('ul.commentlist').children('div.temp_newComments_cnt'); } else { comment_parent = '#comment-' + comment_parent; //$(comment_parent).toggle(); if (0 == $(comment_parent).children('ul.children').length) { $(comment_parent).append(''); } $(comment_parent).children('ul.children').append('
'); var newComment = $(comment_parent).children('ul.children').children('div.temp_newComments_cnt'); } newComment.html(commentHtml); var newCommentsLi = newComment.children('li'); newCommentsLi.addClass("newcomment"); newCommentsLi.slideDown( 200, function() { var cnt = newComment.contents(); newComment.children('li.newcomment').each(function() { if (isElementVisible(this) && !showNotification) { $(this).animate({backgroundColor:'transparent'}, {duration: 1000}, function(){ $(this).removeClass('newcomment'); }); } bindActions(this, 'comment'); }); localizeMicroformatDates(newComment); newComment.replaceWith(cnt); }); } /* * Insert and animate new comments into recent comments widget */ function insertCommentWidget(widgetHtml) { $("table.p2-recent-comments").each(function() { var t = $(this); var avatar_size = t.attr('avatar'); if (avatar_size == '-1') widgetHtml = widgetHtml.replace(//, ''); $("tbody", t).html( widgetHtml + $("tbody", t).html()) var newCommentsElement = $("tbody tr:first", t); newCommentsElement.fadeIn("slow"); $("tbody tr:last", t).fadeOut("slow").remove(); tooltip($("tbody tr:first td a.tooltip", t)); if (isElementVisible(newCommentsElement)) { $(newCommentsElement).removeClass('newcomment'); } }); } /* * Check for new posts and loads them inline */ function getPosts(showNotification){ if (showNotification == null) { showNotification = true; } toggleUpdates('unewposts'); var queryString = ajaxUrl +'&action=get_latest_posts&load_time=' + pageLoadTime + '&frontpage=' + isFirstFrontPage; ajaxCheckPosts = $.getJSON(queryString, function(newPosts){ if (newPosts != null) { pageLoadTime = newPosts.lastposttime; if (!isFirstFrontPage || (typeof newPosts.html == "undefined") ) { newUnseenUpdates = newUnseenUpdates+newPosts.numberofnewposts; message = p2txt.n_new_updates.replace('%d', newUnseenUpdates) + " "+p2txt.goto_homepage+""; newNotification(message); } else { $("#main > ul > li:first").before(newPosts.html); var newUpdatesLi = $("#main > ul > li:first"); newUpdatesLi.hide().slideDown(200, function() { $(this).addClass('newupdates'); }); var counter = 0; $('#posttext_error, #commenttext_error').hide(); newUpdatesLi.each(function() { // Add post to postsOnPageQS list var thisId = $(this).attr("id"); vpostId = thisId.substring(thisId.indexOf('-')+1); postsOnPageQS+= "&vp[]=" + vpostId; if (!(thisId in postsOnPage)) postsOnPage.unshift(thisId); // Bind actions to new elements bindActions(this, 'post'); if (isElementVisible(this) && !showNotification) { $(this).animate({backgroundColor:'transparent'}, 2500, function(){ $(this).removeClass('newupdates'); titleCount(); }); } localizeMicroformatDates(this); counter++; }); if (counter >= newPosts.numberofnewposts && showNotification) { var updatemsg = isElementVisible('#main > ul >li:first') ? "" : ""+p2txt.jump_to_top+"" ; newNotification(p2txt.n_new_updates.replace('%d', counter) + " " + updatemsg); titleCount(); } } $('.newupdates > h4, .newupdates > div').hover( removeYellow, removeYellow ); } }); //Turn updates back on toggleUpdates('unewposts'); } /* * Check for new comments and loads them inline and into the recent-comments widgets */ function getComments(showNotification){ if (showNotification == null) { showNotification = true; } toggleUpdates('unewcomments'); var queryString = ajaxUrl +'&action=get_latest_comments&load_time=' + pageLoadTime + '&lcwidget=' + lcwidget; queryString += postsOnPageQS; ajaxCheckComments = $.getJSON(queryString, function(newComments) { if (newComments != null) { $.each(newComments.comments, function(i,comment) { pageLoadTime = newComments.lastcommenttime; if (comment.widgetHtml) { insertCommentWidget(comment.widgetHtml); } if (comment.html != '') { var thisParentId = 'prologue-'+comment.postID; insertCommentInline(thisParentId, comment.commentParent, comment.html, showNotification); } }); if (showNotification) { newNotification(p2txt.n_new_comments.replace('%d', newComments.numberofnewcomments)); } } }); toggleUpdates('unewcomments'); } /* * Submits a new post via ajax */ function newPost(trigger) { var thisForm = $(trigger.target); var thisFormElements = $('#posttext, #tags, :input',thisForm).not('input[type=hidden]'); var submitProgress = thisForm.find('span.progress'); var posttext = $.trim($('#posttext').val()); if(jQuery('.no-posts')) jQuery('.no-posts').hide(); if ("" == posttext) { $("label#posttext_error").text('This field is required').show().focus(); return false; } toggleUpdates('unewposts'); if (typeof ajaxCheckPosts != "undefined") ajaxCheckPosts.abort(); $("label#posttext_error").hide(); thisFormElements.attr('disabled', true); thisFormElements.addClass('disabled'); submitProgress.show(); var tags = $('#tags').val(); if (tags == p2txt.tagit) tags = ''; var post_cat = $('#post_cat').val(); var post_title = $('#posttitle').val(); var post_citation = $('#postcitation').val(); var args = {action: 'new_post', _ajax_post:nonce, posttext: posttext, tags: tags, post_cat: post_cat, post_title: post_title, post_citation: post_citation }; var errorMessage = ''; $.ajax({ type: "POST", url: ajaxUrl, data: args, success: function(result) { if ("0" == result) errorMessage = p2txt.not_posted_error; $('#posttext').val(''); $('#tags').val(p2txt.tagit); if(errorMessage != '') newNotification(errorMessage); if ($.suggest) $('ul.ac_results').css('display', 'none'); // Hide tag suggestion box if displayed if (isFirstFrontPage && result != "0") { getPosts(false); } else if (!isFirstFrontPage && result != "0") { newNotification(p2txt.update_posted); } submitProgress.fadeOut(); thisFormElements.attr('disabled', false); thisFormElements.removeClass('disabled'); }, error: function(XMLHttpRequest, textStatus, errorThrown) { submitProgress.fadeOut(); thisFormElements.attr('disabled', false); thisFormElements.removeClass('disabled'); }, timeout: 60000 }); thisFormElements.blur(); toggleUpdates('unewposts'); } function newNotification(message) { $("#notify").stop(true).prepend(message + '
') .fadeIn() .animate({opacity: 0.7}, 3000) .fadeOut('3000', function() { $("#notify").html(''); }).click(function() { $(this).stop(true).fadeOut('fast').html(''); }); } /* * Submits a new comment via ajax */ function newComment(trigger) { var thisForm = $(trigger.target); var thisFormElements = $('#comment, #comment-submit, :input', thisForm).not('input[type=hidden]'); var submitProgress = thisForm.find('span.progress'); var commenttext = $.trim($('#comment', thisForm).val()); if ('' == commenttext) { $("label#commenttext_error").text('This field is required').show().focus(); return false; } toggleUpdates('unewcomments'); if (typeof ajaxCheckComments != "undefined") ajaxCheckComments.abort(); if ('inline' == $("label#commenttext_error").css('display')) $("label#commenttext_error").hide(); thisFormElements.attr('disabled', true); thisFormElements.addClass('disabled'); submitProgress.show(); var comment_post_ID = $('#comment_post_ID').val(); var comment_parent = $('#comment_parent').val(); var subscribe_blog = ( $('#subscribe_blog').attr('checked') ) ? 'subscribe' : 'false'; var subscribe = ( $('#subscribe').attr('checked') ) ? 'subscribe' : 'false'; var dataString = {action: 'new_comment' , _ajax_post: nonce, comment: commenttext, comment_parent: comment_parent, comment_post_ID: comment_post_ID, subscribe: subscribe, subscribe_blog: subscribe_blog}; if (!isUserLoggedIn) { dataString['author'] = $('#author').val(); dataString['email'] = $('#email').val(); dataString['url'] = $('#url').val(); } var errorMessage = ''; $.ajax({ type: "POST", url: ajaxUrl, data: dataString, success: function(result) { $('#respond .progress').hide(); $("#respond").slideUp( 200, function() { var lastComment = $("#respond").prev("li"); if (isNaN(result) || 0 == result || 1 == result) errorMessage = result; $('#comment').val(''); if (errorMessage != "") newNotification(errorMessage); getComments(false); submitProgress.fadeOut( 200, function() { toggleUpdates('unewcomments'); thisFormElements.attr('disabled', false); thisFormElements.removeClass('disabled'); }); }); } }); } function newNotification(message) { $("#notify").stop(true).prepend(message + '
') .fadeIn() .animate({opacity: 0.7}, 2000) .fadeOut('1000', function() { $("#notify").html(''); }).click(function() { $(this).stop(true).fadeOut('fast').html(''); }); } /* * Handles tooltips for the recent-comment widget * param: anchor link */ function tooltip(alink){ xOffset = 10; yOffset = 20; alink.hover(function(e){ this.t = this.title; this.title = ""; $("body").append("
"+ this.t +"
"); $("#tooltip") .css("top",(e.pageY - yOffset) + "px") .css("left",(e.pageX + xOffset) + "px") .fadeIn("fast"); }, function(){ this.title = this.t; $("#tooltip").remove(); }); alink.mousemove(function(e){ $("#tooltip") .css("top",(e.pageY - yOffset) + "px") .css("left",(e.pageX + xOffset) + "px"); }); }; function isElementVisible(elem) { elem = $(elem); if (!elem.length) { return false; } var docViewTop = $(window).scrollTop(); var docViewBottom = docViewTop + $(window).height(); var elemTop = elem.offset().top; var elemBottom = elemTop + elem.height(); var isVisible = ((elemBottom >= docViewTop) && (elemTop <= docViewBottom) && (elemBottom <= docViewBottom) && (elemTop >= docViewTop) ); return isVisible; } function toggleUpdates(updater){ switch (updater) { case "unewposts": if (0 == getPostsUpdate) { getPostsUpdate = setInterval(getPosts, updateRate); } else { clearInterval(getPostsUpdate); getPostsUpdate = '0'; } break; case "unewcomments": if (0 == getCommentsUpdate) { getCommentsUpdate = setInterval(getComments, updateRate); } else { clearInterval(getCommentsUpdate); getCommentsUpdate = '0'; } break; } } function titleCount() { if (isFirstFrontPage) { var n = $('li.newupdates').length; } else { var n = newUnseenUpdates; } if ( n <= 0 ) { if (document.title.match(/\([\d+]\)/)) { document.title = document.title.replace(/(.*)\([\d]+\)(.*)/, "$1$2"); } fluidBadge(""); } else { if (document.title.match(/\((\d+)\)/)) { document.title = document.title.replace(/\((\d+)\)/ , "(" + n + ")" ); } else { document.title = '(1) ' + document.title; } fluidBadge(n); } } /** * Sets the badge for Fluid app enclosed P2. See http://fluidapp.com/ */ function fluidBadge(value) { if (window.fluid) window.fluid.dockBadge = value; } function autgrow(textarea, min) { var linebreaks = textarea.value.match(/\n/g); if (linebreaks != null && linebreaks.length+1 >= min) { textarea.rows = (linebreaks.length+1); } else { textarea.rows = min; } } function jumpToTop() { $.scrollTo('#main', 150); } function bindActions(element, type) { $(element).find('a.comment-reply-link').click( function() { $('*').removeClass('replying'); $(this).parents("li").eq(0).addClass('replying'); $("#respond").show(); $("#respond").addClass('replying').show(); $("#comment").focus(); }); switch (type) { case "comment" : var thisCommentEditArea; $(element).hover( removeYellow, removeYellow ); if (inlineEditComments != 0 && isUserLoggedIn) { thisCommentEditArea = $(element).find('div.comment-edit').eq(0); $(element).find('a.comment-edit-link:first').click( function() { thisCommentEditArea.trigger('edit'); return false; }); thisCommentEditArea.editable(ajaxUrl, {event: 'edit', loadurl: ajaxUrl + '&action=get_comment&_inline_edit=' + nonce, id: 'comment_ID', name: 'comment_content', type : 'autogrow', cssclass: 'textedit', rows: '3', indicator : '', loadtext: p2txt.loading, cancel: p2txt.cancel, submit : p2txt.save, tooltip : '', width: '90%', onblur: 'ignore', submitdata: {action:'save_comment',_inline_edit: nonce}}); } $(".single #postlist li > div.postcontent, .single #postlist li > h4, li[id^='prologue'] > div.postcontent, li[id^='comment'] > div.commentcontent, li[id^='prologue'] > h4, li[id^='comment'] > h4").hover(function() { $(this).parents("li").eq(0).addClass('selected'); }, function() { $(this).parents("li").eq(0).removeClass('selected'); }); break; case "post" : var thisPostEditArea; if (inlineEditPosts != 0 && isUserLoggedIn) { thisPostEditArea = $(element).children('div.editarea').eq(0); jQuery(element).find('a.edit-post-link:first').click(function() { thisPostEditArea.trigger('edit'); return false; }); thisPostEditArea.editable(ajaxUrl, {event: 'edit', loadurl: ajaxUrl + '&action=get_post&_inline_edit=' + nonce, id: 'post_ID', name: 'content', type: 'autogrow', cssclass: 'textedit',rows: '3', indicator : '', loadtext: p2txt.loading, cancel: p2txt.cancel, submit: p2txt.save, tooltip : '', width: '90%', onblur: 'ignore', submitdata: {action:'save_post', _inline_edit: nonce}}); } $(".single #postlist li > div.postcontent, .single #postlist li > h4, li[id^='prologue'] > div.postcontent, li[id^='comment'] > div.commentcontent, li[id^='prologue'] > h4, li[id^='comment'] > h4").hover(function() { $(this).parents("li").eq(0).addClass('selected'); }, function() { $(this).parents("li").eq(0).removeClass('selected'); }); break } } function localizeMicroformatDates(scopeElem) { (scopeElem? $('abbr', scopeElem) : $('abbr')).each(function() { var t = $(this); var d = locale.parseISO8601(t.attr('title')); if (d) t.html(p2txt.date_time_format.replace('%1$s', locale.date(p2txt.time_format, d)).replace('%2$s', locale.date(p2txt.date_format, d))); }); } /* On-load */ commentsLists = $(".commentlist"); locale = new wp.locale(wp_locale_txt); if(!window.location.href.match('#')) $('#posttext').focus(); $(".single #postlist li > div.postcontent, .single #postlist li > h4, li[id^='prologue'] > div.postcontent, li[id^='comment'] > div.commentcontent, li[id^='prologue'] > h4, li[id^='comment'] > h4").hover(function() { $(this).parents("li").eq(0).addClass('selected'); }, function() { $(this).parents("li").eq(0).removeClass('selected'); }); $.ajaxSetup({ timeout: updateRate - 2000, cache: false }); $("#directions-keyboard").click(function(){ $('#help').toggle(); return false; }); $(".show_comments").click(function(){ var id = $(this).attr('id'); $( '#' + id + ' ul.commentlist' ).toggle(); return false; }); $("#help").click(function() { $(this).toggle(); }); // Activate inline editing plugin if ((inlineEditPosts || inlineEditComments ) && isUserLoggedIn) { $.editable.addInputType('autogrow', { element : function(settings, original) { var textarea = $('