


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 = 'Commentary by ' + '<a href="' + purl + '">' + pnme + '</a>';

	} else if(!purl && pnme) {

		var name = 'Commentary by ' + pnme;

	} else if(purl && !pnme) {

		var name = '<a href="' + purl + '">Someone or other</a>';

	} else {

		var name = "Someone or other";

	}

	

    
    document.getElementById('commentPreview').innerHTML = '<h4>Preview:</h4><p><em>[Some formating is only applied after the comment is submitted.]</em><p><em>' + name + ':</em></p><div>' + cmnt + '</div>';

}



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);



