
function wptexturize(text) {
	text 		= ' '+text+' ';
	var textarr = text.split(/(<[^>]+?>)/g)
	var istop	= textarr.length;
	var next 	= true;
	var output 	= '';
	for ( var i=0; i<istop; i++ ) {
		var curl = textarr[i];			
		if ( curl.substr(0,1) != '<' && next == true ) {
			curl = curl.replace(/---/g, '—');
			curl = curl.replace(/--/g, '–');			
			curl = curl.replace(/\.{3}/g, '…');			
			curl = curl.replace(/``/g, '“');						
			
			curl = curl.replace(/'s/g, '’s');
			curl = curl.replace(/'(\d\d(?:’|')?s)/g, '’$1');
			curl = curl.replace(/([\s"])'/g, '$1‘');			
			curl = curl.replace(/(\d+)"/g, '$1″');						
			curl = curl.replace(/(\d+)'/g, '$1′');									
			curl = curl.replace(/([^\s])'([^'\s])/g, '$1’$2');	
			curl = curl.replace(/(\s)"([^\s])/g, '$1“$2');				
			curl = curl.replace(/"(\s)/g, '”$1');						
			curl = curl.replace(/'(\s|.)/g, '’$1');	
			curl = curl.replace(/\(tm\)/ig, '™');	
			curl = curl.replace(/\(c\)/ig, '©');
			curl = curl.replace(/\(r\)/ig, '®');
			curl = curl.replace(/''/g, '”');	
			
			curl = curl.replace(/(\d+)x(\d+)/g, '$1×$2');	
		} else if ( curl.substr(0,5) == '<code' ) {
			next = false;
		} else {
			next = true;
		}
		output += curl; 
	}
	return output.substr(1, output.length-2);
}

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

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

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);

