
/***********************************************************************

	Copyright (C) 2008  PunBB

	PunBB is free software; you can redistribute it and/or modify it
	under the terms of the GNU General Public License as published
	by the Free Software Foundation; either version 2 of the License,
	or (at your option) any later version.

	PunBB is distributed in the hope that it will be useful, but
	WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 59 Temple Place, Suite 330, Boston,
	MA  02111-1307  USA

***********************************************************************/

document.onmouseup = SetSelected;

function getSelectedText()
{
	var result = '';
	if (document.selection)
		result = document.selection.createRange().text;
	else if (document.getSelection)
		result = document.getSelection();
	else if (window.getSelection)
		txtRet = window.getSelection();
	else
		return result;
	return result;
}


function TrimString(param)
{
	param = param.replace(/ /g,' ');
	return param.replace(/(^\s+)|(\s+$)/g, '');
}

function Reply(tid_param, qid_param)
{
	var element = document.getElementsByTagName('div');
	for(var i=0; i < element.length; i++)
	{
		if(element[i].className == 'postmain')
		{
			var post = new String(element[i].innerHTML);
			
			if(post.search('Reply[(]' + tid_param + ',' + qid_param + '[)]') != -1)
			{
				post = ChangePost(post);
				var selected_text = (window.selected_text_first == '')?window.selected_text_second:window.selected_text_first;//getSelectedText();

				if(selected_text != undefined)
				{
					//Remove \r and \n$
					selected_text = selected_text.replace(/\r*/gi,'');
					post = post.replace(/\r*/ig,'');

					selected_text = TrimString(selected_text);
					post = TrimString(post);

					selected_text = selected_text.replace(/(-)|(\*)|(\\)|(\/)|(\')|(\:)/gi,'\\$1$2$3$4$5$6');
					selected_text = selected_text.replace(/(\()|(\))|(\[)|(\])|(\{)|(\})|(\?)|(!)|(\+)/gi,'\\$1$2$3$4$5$6$7$8$9');

					if((post.search(selected_text) != -1) && (selected_text.charAt(0) != ''))
					{
					   var form = document.getElementById('qq');
					   form.action='post.php?tid=' + tid_param + '&qid=' + qid_param;

					   element = document.getElementById('post_msg');
					   element.value =(window.selected_text_first == '')?window.selected_text_second:window.selected_text_first;//getSelectedText();
					   form.submit();
					   
					   break;
					}
				}
				location = 'post.php?tid=' + tid_param + '&qid=' + qid_param;
			}
		}
	}
}


function QuickQuote(tid_param, qid_param)
{
	var element = document.getElementsByTagName('div');
	
	for(var i=0; i < element.length; i++)
	{
		if(element[i].className == 'postmain')
		{
			var post = new String(element[i].innerHTML);
			
				
			if(post.search('QuickQuote[(]' + tid_param + ',' + qid_param + '[)]') != -1)
			{
				//get quoted author name from the post
				var RegExp = /<cite>.*\sby\s(.*?):/ig;
				var result =  RegExp.exec(post);
				RegExp.lastIndex=0;
				var author_name;
				if(result!=null)
					author_name=result[1];
				
				post = ChangePost(post);
				
				var selected_text = (window.selected_text_first == '')?window.selected_text_second:window.selected_text_first;//getSelectedText();
				
				//Remove \r and \n$
				post = post.replace(/\r*/ig,'');
				
				post = TrimString(post);
				
				if(selected_text != undefined)
				{
					//Remove \r and \n$*/
					selected_text = selected_text.replace(/\r*/gi,'');
					selected_text = TrimString(selected_text);
					selected_text = selected_text.replace(/(-)|(\*)|(\\)|(\/)|(\')|(\:)/gi,'\\$1$2$3$4$5$6');
					selected_text = selected_text.replace(/(\()|(\))|(\[)|(\])|(\{)|(\})|(\?)|(!)|(\+)/gi,'\\$1$2$3$4$5$6$7$8$9');

					if((post.search(selected_text) != -1) && (selected_text.charAt(0) != ''))
					{
					   element = document.getElementById('fld1');
					   element.value +=(window.selected_text_first == '')?'[quote='+author_name+']'+window.selected_text_second+'[/quote]'+'\n':'[quote='+author_name+']'+window.selected_text_first+'[/quote]'+'\n';//getSelectedText(); 
					  break;
					}
				}
				
				element = document.getElementById('fld1');
				element.value+='[quote='+author_name+']'+post+'[/quote]'+'\n';
			
			}
		}
	}

}



function ChangePost(post)
{
	var reg = new RegExp('<DIV[\\s]*class[\\s]*=[\\s]*["]*[\\s]*entry\\-content[\\s]*["]*[\\s]*>[\\s\\S]*<DIV[\\s]*class[\\s]*=[\\s]*["]*[\\s]*postfoot[\\s]*["]*[\\s]*>','ig');
	post = new String(reg.exec(post));

	var browse = navigator.userAgent.toLowerCase();

	post = post.replace(/((<BR>)(<\/P>))|((<BR\/>)(<\/P>))/ig,'$2$4');

	if(browse.indexOf('opera') == -1)
		post = post.replace(/((<BR>)(<P>))|((<BR\/>)(<P>))/ig,'$2$4');

		post = post.replace(/(:?<BR>)|(:?<BR\/>)/ig,'\n');

		//</p><p> = \n\n  - Opera FF
		//</p><p> = /n - IE 7.0
		if(browse.indexOf('opera') != -1 ||  browse.indexOf('gecko') != -1)
			post = post.replace(/(:?<\/p>)|(:?<p>)/ig,'\n');
		else
			post = post.replace(/<\/p>[\s]*<p>/ig,'\n');

		post = post.replace(/>[\s]*</,'><');

		//Make [quote="name"]...[/quote]
		post = post.replace(/<div[\s]*class[\s]*=[\s]*["]*[\s]*quotebox[\s]*["]*[\s]*>[\s]*<cite>/ig,'[quote=');
		post = post.replace(/[\s]*wrote:/g,"]");
		post = post.replace(/[\s]*<\/blockquote>[\s]*/ig,'[/quote]\n');

		//Remove tags
		post = post.replace(/<(:?.*?)>/gi,'');

		//Remove space symbols before [/q and after e] and ][
		post = post.replace(/\][\s]*\[/g,'][');
		post = post.replace(/[\s]*\[/g,'[');
		post = post.replace(/\][\s]*/g,']');

		//Replace quote = name name on quote = "name name"
		post = post.replace(/\[quote=(["][-a-zA-Z0-9]*)[\s]+([-"a-zA-Z0-9]*)\]/g,'[quote=\"$1 $2\"]');

		//Insert \n before [/quote]
		post = post.replace(/\]\[\/quote\]/g,']\n[/quote]');

		//exotic symbols =)
		post = post.replace(/\u00A0/g,' ');
		post = post.replace(/&nbsp;/g,' ');
		post = post.replace(/&lt;/g,'<');
		post = post.replace(/&gt;/g,'>');
		return post;
}


function SetSelected()
{
	switch(window.selected_text_pointer)
	{
		case 0:
			window.selected_text_pointer = 1;
			window.selected_text_first = getSelectedText();
			break;
		case 1:
			window.selected_text_pointer = 0;
			window.selected_text_second = getSelectedText();
			break;
		case undefined:
			window.selected_text_pointer = 0;
			window.selected_text_second = getSelectedText();
			break;
	}
}

