 

function wptexturize(text) { 
        text = ' '+text+' '; 
        var next        = true; 
        var output      = ''; 
        var prev        = 0; 
        var length      = text.length; 
        while ( prev < length ) { 
                var index = text.indexOf('<', prev); 
                if ( index > -1 ) { 
                        if ( index == prev ) { 
                                index = text.indexOf('>', prev); 
                        } 
                        index++; 
                } else { 
                        index = length; 
                } 
                var s = text.substring(prev, index); 
                prev = index; 
                if ( s.substr(0,1) != '<' && next == true ) { 
                        s = s.replace(/---/g, '&#8212;'); 
                        s = s.replace(/--/g, '&#8211;'); 
                        s = s.replace(/\.{3}/g, '&#8230;'); 
                        s = s.replace(/``/g, '&#8220;'); 
                        s = s.replace(/'s/g, '&#8217;s'); 
                        s = s.replace(/'(\d\d(?:&#8217;|')?s)/g, '&#8217;$1'); 
                        s = s.replace(/([\s"])'/g, '$1&#8216;'); 
                        s = s.replace(/(\d+)"/g, '$1&Prime;'); 
                        s = s.replace(/(\d+)'/g, '$1&prime;'); 
                        s = s.replace(/([^\s])'([^'\s])/g, '$1&#8217;$2'); 
                        s = s.replace(/(\s)"([^\s])/g, '$1&#8220;$2'); 
                        s = s.replace(/"(\s)/g, '&#8221;$1'); 
                        s = s.replace(/'(\s|.)/g, '&#8217;$1'); 
                        s = s.replace(/\(tm\)/ig, '&#8482;'); 
                        s = s.replace(/\(c\)/ig, '&#169;'); 
                        s = s.replace(/\(r\)/ig, '&#174;'); 
                        s = s.replace(/''/g, '&#8221;'); 
                        s = s.replace(/(\d+)x(\d+)/g, '$1&#215;$2'); 
                } else if ( s.substr(0,5) == '<code' ) { 
                        next = false; 
                } else { 
                        next = true; 
                } 
                output += s;  
        } 
        return output.substr(1, output.length-2);       
} 

function wpautop(p) { 
        p = p + '\n\n'; 
        p = p.replace(/(<blockquote[^>]*>)/g, '\n$1'); 
        p = p.replace(/(<\/blockquote[^>]*>)/g, '$1\n'); 
        p = p.replace(/\r\n/g, '\n'); 
        p = p.replace(/\r/g, '\n'); 
        p = p.replace(/\n\n+/g, '\n\n'); 
        p = p.replace(/\n?(.+?)(?:\n\s*\n)/g, '<p>$1</p>'); 
        p = p.replace(/<p>\s*?<\/p>/g, ''); 
        p = p.replace(/<p>\s*(<\/?blockquote[^>]*>)\s*<\/p>/g, '$1'); 
        p = p.replace(/<p><blockquote([^>]*)>/ig, '<blockquote$1><p>'); 
        p = p.replace(/<\/blockquote><\/p>/ig, '<p></blockquote>');      
        p = p.replace(/<p>\s*<blockquote([^>]*)>/ig, '<blockquote$1>'); 
        p = p.replace(/<\/blockquote>\s*<\/p>/ig, '</blockquote>');      
        p = p.replace(/\s*\n\s*/g, '<br />'); 
        return p; 
} 

function updateLivePreview() { 
         
        var cmntArea = document.getElementById('comment'); 
        var pnmeArea = document.getElementById('author'); 
        var purlArea = document.getElementById('url'); 
         
        if( cmntArea ) 
                var cmnt = wpautop(wptexturize(cmntArea.value)); 

        if( pnmeArea ) 
                var pnme = pnmeArea.value; 
         
        if( purlArea ) 
                var purl = purlArea.value; 
                 
        if(purl && pnme) { 
                var name = '<a href="' + purl + '">' + pnme + '</a> says'; 
        } else if(!purl && pnme) { 
                var name = pnme + ' says'; 
        } else if(purl && !pnme) { 
                var name = '<a href="' + purl + '">You</a> say'; 
        } else { 
                var name = "You say"; 
        } 
         
     
    document.getElementById('commentPreview').innerHTML = '<p><strong>Preview:</strong></p><p><em>' + name + ':</em></p><p>' + cmnt + '</p>';
 
} 

function initLivePreview() { 
        if(!document.getElementById) 
                return false; 

        var cmntArea = document.getElementById('comment'); 
        var pnmeArea = document.getElementById('author'); 
        var purlArea = document.getElementById('url'); 
         
        if ( cmntArea ) 
                cmntArea.onkeyup = updateLivePreview; 
         
        if ( pnmeArea ) 
                pnmeArea.onkeyup = updateLivePreview; 
         
        if ( purlArea ) 
                purlArea.onkeyup = updateLivePreview;    
} 

//======================================================== 
// Event Listener by Scott Andrew - http://scottandrew.com 
// edited by Mark Wubben, <useCapture> is now set to false 
//======================================================== 
function addEvent(obj, evType, fn){ 
        if(obj.addEventListener){ 
                obj.addEventListener(evType, fn, false);  
                return true; 
        } else if (obj.attachEvent){ 
                var r = obj.attachEvent('on'+evType, fn); 
                return r; 
        } else { 
                return false; 
        } 
} 

addEvent(window, "load", initLivePreview); 


