/* // +------------------------------------------------------------------+ // | Inspired by Code that is Copyright (c) 2004 Bitflux GmbH | // | http://blog.bitflux.ch/p1735.html | // | And heavily modified by Jeff Minard | // | http://www.creatimation.net | // | And even more modified by Michael D. Adams | // | http://blogwaffe.com | // +------------------------------------------------------------------+ // | Dependent on SACK which is Copyright (c) 2005 Gregory Wild-Smith | // | http://www.twilightuniverse.com/projects/sack/ | // +------------------------------------------------------------------+ // | Author: Thaya Kareeson | // | http://omninoggin.com/ | // +------------------------------------------------------------------+ // | Version: 1.2 | // +------------------------------------------------------------------+ // | License: GPL2 | // | http://www.gnu.org/copyleft/gpl.html | // +------------------------------------------------------------------+ */ // Simon Willison http://simon.incutio.com/archive/2004/05/26/addLoadEvent if ( 'function' != typeof addLoadEvent ) addLoadEvent = function(func) { var oldonload=window.onload; if(typeof window.onload!='function')window.onload=func; else window.onload=function(){oldonload();func();} } var commentPreview; var commentLast; var afcpFormElement; var inputElement;var outputElement;var doitElement;var authorElement;var urlElement; function commentPreviewInit() { doitElement = document.getElementById('afcp-preview'); afcpFormElement = doitElement.parentNode; while ( 'form' != afcpFormElement.tagName.toLowerCase() ) afcpFormElement = afcpFormElement.parentNode; // start off by disabling submit button disableSubmit(); outputElement = document.getElementById('ajax-force-comment-preview'); textAreaElement = afcpGetFormInput( 'comment' ); // disable submit button & enable preview button again on comment change textAreaElement.onkeyup = function() { if ( !submitDisabled() && textAreaElement.value != commentLast ) { disableSubmit(); outputElement.innerHTML = AjaxForceCommentPreviewVars.emptyString; } ;} textAreaElement.onchange = function() { if ( !submitDisabled() && textAreaElement.value != commentLast ) { disableSubmit(); outputElement.innerHTML = AjaxForceCommentPreviewVars.emptyString; } ;} inputElement = afcpGetFormInput( 'comment' ); authorElement = afcpGetFormInput( 'author' ); urlElement = afcpGetFormInput( 'url' ); if ( inputElement == null || outputElement == null || doitElement == null ) return; doitElement.onclick = commentPreviewAJAX; // set the result field to hidden, or to default string if ( '' == AjaxForceCommentPreviewVars.emptyString ) outputElement.style.display = 'none'; else outputElement.innerHTML = AjaxForceCommentPreviewVars.emptyString; } addLoadEvent(commentPreviewInit); function enableSubmit() { submitElement = afcpGetFormInput( 'submit' ); submitElement.style.visibility = 'visible'; submitElement.style.display = 'inline'; doitElement.style.visibility = 'hidden'; doitElement.style.display = 'none'; } function disableSubmit() { submitElement = afcpGetFormInput( 'submit' ); submitElement.style.visibility = 'hidden'; submitElement.style.display = 'none'; doitElement.style.visibility = 'visible'; doitElement.style.display = 'inline'; } function submitDisabled() { submitElement = afcpGetFormInput( 'submit' ); if ( submitElement.style.display == 'none' ) { return true; } return false; } function afcpGetFormInput( el ) { for ( i=0; i < afcpFormElement.elements.length; i++ ) if ( el == afcpFormElement.elements[i].name ) return afcpFormElement.elements[i]; } function commentPreviewAJAX() { var req = ''; var newSack = false; commentPreview = new sack( AjaxForceCommentPreviewVars.url ); var sep = commentPreview.argumentSeparator ? commentPreview.argumentSeparator : '&'; commentPreview.method = 'POST'; commentPreview.encodeURIString = false; commentPreview.onLoading = function() { outputElement.innerHTML = 'Loading.'; }; commentPreview.onLoaded = function() { outputElement.innerHTML += '.'; }; commentPreview.onInteractive = function() { outputElement.innerHTML += '.'; }; commentPreview.onCompletion = function() { outputElement.innerHTML = commentPreview.response; // enable submit button once preview is completed enableSubmit(); }; req = commentPreview.encVar('text', inputElement.value); doitElement = document.getElementById('afcp-preview'); if ( req ) { req += authorElement ? sep + commentPreview.encVar('author', authorElement.value) : ''; req += urlElement ? sep + commentPreview.encVar('url', urlElement.value) : ''; } else { if ( authorElement ) commentPreview.encVar('author', authorElement.value); if ( urlElement ) commentPreview.encVar('url', urlElement.value); req = new Array(); for (key in commentPreview.vars) req[req.length] = key + "=" + commentPreview.vars[key][0]; req = req.join(sep); newSack = true; } if ( '' != inputElement.value ) { commentPreview.runAJAX(newSack?'':req); } else if ( '' == inputElement.value ) { if( '' == AjaxForceCommentPreviewVars.emptyString ) { outputElement.innerHTML = ''; outputElement.style.display = "none"; } else outputElement.innerHTML = AjaxForceCommentPreviewVars.emptyString; // disable submit if content is empty disableSubmit(); } commentLast = inputElement.value; }