/*

	Quote Comments JS
	
*/

function quote(postid, author, commentarea, commentID, textile, mce) {
	
	try {
		
		// If you don't want quotes begin with "<author>:", uncomment the next line
		//author = null;
		textile = false;	// comment this line out, if you want quote comments to use bq.'s instead of use blockquote tags.
	
		// begin code
		var posttext = '';
		if (window.getSelection){
			posttext = window.getSelection();
		}
		else if (document.getSelection){
			posttext = document.getSelection();
		}
		else if (document.selection){
			posttext = document.selection.createRange().text;
		}
		else {
			return true;
		}
		
		if (posttext=='') {		// quoting entire comment
		
			// quoteing the entire thing
			var selection = false;
		
			// quote entire comment as html
			var q = "q-"+commentID.split("div-comment-")[1];
			var posttext = document.getElementById(q).innerHTML;
			
			// remove nested divs
			var posttext = posttext.replace(/<div(.*?)>((.|\n)*?)(<\/div>)/ig, "");

			// remove nested blockquotes
			var posttext = posttext.replace(/<blockquote(.*?)>((.|\n)*?)(<\/blockquote>)/ig, "");
			var posttext = posttext.replace(/<blockquote(.*?)>((.|\n)*?)(<\/blockquote>)/ig, "");

			/*
			var posttext = posttext.replace(/<blockquote>[^>]*<\/\s*blockquote>/g, "");
			var posttext = posttext.replace(/<blockquote>[^>]*<\/\s*blockquote>/g, "");
			*/


			// do basic cleanups
			var posttext = posttext.replace(/	/g, "");
			var posttext = posttext.replace(/<p>/g, "\n");
			var posttext = posttext.replace(/<\/\s*p>/g, "");
			var posttext = posttext.replace(/<br>/g, "")
			
			// remove superfluous linebreaks
			var posttext = posttext.replace(/\s\s/gm, "");
	
			// remove nested spans
			var posttext = posttext.replace(/<span(.*?)>((.|\n)*?)(<\/span>)/ig, "");

			// remove nested blockquotes
			while (posttext != (posttext = posttext.replace(/<blockquote>[^>]*<\/\s*blockquote>/g, "")));
			
		}
			
		// build quote
		if (textile && selection != false) {
			if (author) {
				var quote='\n\nbq. *'+author+'*: '+posttext+'\n\n';
			} else {
				var quote='\n\nbq. '+posttext+'\n\n';
			}
		} else {
			if (author) {
				var quote='\n\n<blockquote cite="comment-'+postid+'">\n\n<strong><a href="#comment-'+postid+'">'+author+'</a></strong>: '+posttext+'\n</blockquote>\n\n';
			} else {
				var quote='\n\n<blockquote cite="comment-'+postid+'">\n\n'+posttext+'\n</blockquote>\n\n';
			}
		}
		
		
		// send quoted content
		if (mce == true) {		// TinyMCE detected
		
			//addQuoteMCE(comment,quote);
			insertHTML(quote);
			
		} else {				// No TinyMCE detected

			var comment=document.getElementById(commentarea);
			addQuote(comment,quote);
			
		}
			
		return false;
		
	} catch (e) {
		alert("Something went wrong! Perhaps your theme is incompatible?")
	}
	
}

function addQuote(comment,quote){
	/*
	
		Derived from Alex King's JS Quicktags code (http://www.alexking.org/)
		Released under LGPL license
		
	*/	
	
	// IE support
	if (document.selection) {
		comment.focus();
		sel = document.selection.createRange();
		sel.text = quote;
		comment.focus();
	}
	// Mozilla support
	else if (comment.selectionStart || comment.selectionStart == '0') {
		var startPos = comment.selectionStart;
		var endPos = comment.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = comment.scrollTop;
		if (startPos != endPos) {
			comment.value = comment.value.substring(0, startPos)
						  + quote
						  + comment.value.substring(endPos, comment.value.length);
			cursorPos = startPos + quote.length
		}
		else {
			comment.value = comment.value.substring(0, startPos) 
							  + quote
							  + comment.value.substring(endPos, comment.value.length);
			cursorPos = startPos + quote.length;
		}
		comment.focus();
		comment.selectionStart = cursorPos;
		comment.selectionEnd = cursorPos;
		comment.scrollTop = scrollTop;
	}
	else {
		comment.value += quote;
	}

	// If Live Preview Plugin is installed, refresh preview
	try {
		ReloadTextDiv();
	}
	catch ( e ) {
	}
	
}


