var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

//var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_moz = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac = (clientPC.indexOf("mac")!=-1);

var edButtons = new Array();
var edLinks = new Array();
var edOpenTags = new Array();
edOpenTags['new_multibe'] = new Array();

function edButton(id, display, tagStart, tagEnd, access, open) {
	this.id = id;				// used to name the toolbar button
	this.display = display;		// class of button
	this.tagStart = tagStart; 	// open tag
	this.tagEnd = tagEnd;		// close tag
	this.access = access;			// set to -1 if tag does not need to be closed
	this.open = open;			// set to -1 if tag does not need to be closed
}

edButtons.push(
	new edButton(
		'ed_bold'
		,'writec_bold'
		,'[b]'
		,'[/b]'
		,'b'
	)
);

edButtons.push(
	new edButton(
		'ed_italic'
		,'writec_italic'
		,'[i]'
		,'[/i]'
		,'i'
	)
);

edButtons.push(
	new edButton(
		'ed_underline'
		,'writec_underline'
		,'[u]'
		,'[/u]'
		,'u'
	)
);

edButtons.push(
	new edButton(
		'ed_strike'
		,'writec_strike'
		,'[s]'
		,'[/s]'
		,'s'
	)
);

edButtons.push(
	new edButton(
		'spacer_1'
		,'spacer'
		,''
		,''
		,''
	)
);

edButtons.push(
	new edButton(
		'ed_left'
		,'writec_leftAlign'
		,'[left]'
		,'[/left]'
		,'left'
	)
);

edButtons.push(
	new edButton(
		'ed_center'
		,'writec_centerAlign'
		,'[center]'
		,'[/center]'
		,'center'
	)
);

edButtons.push(
	new edButton(
		'ed_right'
		,'writec_rightAlign'
		,'[right]'
		,'[/right]'
		,'right'
	)
);

edButtons.push(
	new edButton(
		'spacer_2'
		,'spacer'
		,''
		,''
		,''
	)
);

edButtons.push(
	new edButton(
		'ed_list1'
		,'writec_ol'
		,'[list=1]\n'
		,'[/list]\n\n'
		,'list1'
	)
);

edButtons.push(
	new edButton(
		'ed_list'
		,'writec_ul'
		,'[list]\n'
		,'[/list]\n\n'
		,'list'
	)
);

edButtons.push(
	new edButton(
		'ed_item'
		,'writec_item'
		,'[*]'
		,''
		,'item'
	)
);


var extendedStart = edButtons.length;


function edLink(display, URL, newWin) {
	this.display = display;
	this.URL = URL;
	if (!newWin) {
		newWin = 0;
	}
	this.newWin = newWin;
}

/*
edLinks[edLinks.length] = new edLink('alexking.org'
                                    ,'http://www.alexking.org/'
                                    );
*/
function edShowButton(which, button, i) {
	if (button.access) {
		var accesskey = ' accesskey = "' + button.access + '"'
	}
	else {
		var accesskey = '';
	}

	switch (button.id) {
		case 'ed_img':
			document.write('<a id="' + button.id + '_' + which + '" ' + accesskey + ' class="comment_editor writec_embedPhoto" onclick="edInsertImage(\'' + which + '\');" /><span>insert image</span></a>');		
			break;
		case 'ed_link':
			document.write('<a id="' + button.id + '_' + which + '" ' + accesskey + ' class="comment_editor writec_url" onclick="edInsertLink(\'' + which + '\', ' + i + ');" /><span>insert url</span></a>');
			break;
		default:
			if (button.display != 'spacer') {
				document.write('<a id="' + button.id + '_' + which + '" ' + accesskey + ' class="comment_editor ' + button.display + '" onclick="edInsertTag(\'' + which + '\', ' + i + ');" /><span>&nbsp;</span></a>');
			} else { document.write('<span class="button_spacer">&nbsp;</span>'); }
			break;
	}
}

function edShowLinks() {
	var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>';
	for (i = 0; i < edLinks.length; i++) {
		tempStr += '<option value="' + i + '">' + edLinks[i].display + '</option>';
	}
	tempStr += '</select>';
	document.write(tempStr);
}

function edAddTag(which, button) {
	if (edButtons[button].tagEnd != '') {
		edOpenTags[which][edOpenTags[which].length] = button;
		document.getElementById(edButtons[button].id + '_' + which).value = '/' + document.getElementById(edButtons[button].id + '_' + which).value;
	}
}

function edRemoveTag(which, button) {
	for (i = 0; i < edOpenTags[which].length; i++) {
		if (edOpenTags[which][i] == button) {
			edOpenTags[which].splice(i, 1);
			document.getElementById(edButtons[button].id + '_' + which).value = document.getElementById(edButtons[button].id + '_' + which).value.replace('/', '');
		}
	}
}

function edCheckOpenTags(which, button) {
	var tag = 0;
	for (i = 0; i < edOpenTags[which].length; i++) {
		if (edOpenTags[which][i] == button) {
			tag++;
		}
	}
	if (tag > 0) {
		return true; // tag found
	}
	else {
		return false; // tag not found
	}
}	

function edCloseAllTags(which) {
	var count = edOpenTags[which].length;
	for (o = 0; o < count; o++) {
		edInsertTag(which, edOpenTags[which][edOpenTags[which].length - 1]);
	}
}

function edQuickLink(i, thisSelect) {
	if (i > -1) {
		var newWin = '';
		if (edLinks[i].newWin == 1) {
			newWin = ' target="_blank"';
		}
		var tempStr = '[url=' + edLinks[i].URL + ']' 
		            + edLinks[i].display
		            + '[/url]';
		thisSelect.selectedIndex = 0;
		edInsertContent(edCanvas, tempStr);
	}
	else {
		thisSelect.selectedIndex = 0;
	}
}

function edToolbar(which) {
	document.write('<div style="display:block; float:left;" id="ed_toolbar_' + which + '"><span>');
	for (i = 0; i < extendedStart; i++) {
		edShowButton(which, edButtons[i], i);
	}
/*	for (i = extendedStart; i < edButtons.length; i++) {
		edShowButton(which, edButtons[i], i);
	}*/
	document.write('</span>');
//	edShowLinks();
	document.write('</div>');
    edOpenTags[which] = new Array();
}


function edToolbar_minimum(which) {
	document.write('<div style="display:block; float:left;" id="ed_toolbar_' + which + '"><span>');
	for (i = 0; i < extendedStart; i++) {
		if ((edButtons[i].id != 'ed_list1')&&(edButtons[i].id != 'ed_list')&&(edButtons[i].id != 'ed_item')&&(edButtons[i].id != 'ed_code')&&(edButtons[i].id != 'ed_quote')
			&&(edButtons[i].id != 'spacer_3')) {
			edShowButton(which, edButtons[i], i);
		}
	}
/*	for (i = extendedStart; i < edButtons.length; i++) {
		edShowButton(which, edButtons[i], i);
	}*/
	document.write('</span>');
//	edShowLinks();
	document.write('</div>');
    edOpenTags[which] = new Array();
}


// insertion code

function edInsertTag(which, i) {
    myField = document.getElementById(which);
	//IE support
	if (document.selection) {
		myField.focus();
	    sel = document.selection.createRange();
		if (sel.text.length > 0) {
			sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
		}
		else {
			if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
				sel.text = edButtons[i].tagStart;
				edAddTag(which, i);
			}
			else {
				sel.text = edButtons[i].tagEnd;
				edRemoveTag(which, i);
			}
		}
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = myField.scrollTop;
		if (startPos != endPos) {
			myField.value = myField.value.substring(0, startPos)
			              + edButtons[i].tagStart
			              + myField.value.substring(startPos, endPos) 
			              + edButtons[i].tagEnd
			              + myField.value.substring(endPos, myField.value.length);
			cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
		}
		else {
			if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
				myField.value = myField.value.substring(0, startPos) 
				              + edButtons[i].tagStart
				              + myField.value.substring(endPos, myField.value.length);
				edAddTag(which, i);
				cursorPos = startPos + edButtons[i].tagStart.length;
			}
			else {
				myField.value = myField.value.substring(0, startPos) 
				              + edButtons[i].tagEnd
				              + myField.value.substring(endPos, myField.value.length);
				edRemoveTag(which, i);
				cursorPos = startPos + edButtons[i].tagEnd.length;
			}
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		myField.scrollTop = scrollTop;
	}
	else {
		if (!edCheckOpenTags(which, i) || edButtons[i].tagEnd == '') {
			myField.value += edButtons[i].tagStart;
			edAddTag(which, i);
		}
		else {
			myField.value += edButtons[i].tagEnd;
			edRemoveTag(which, i);
		}
		myField.focus();
	}
}

function edInsertContent(which, myValue) {
    myField = document.getElementById(which);
	//IE support
	if (document.selection) {
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var scrollTop = myField.scrollTop;
		myField.value = myField.value.substring(0, startPos)
		              + myValue 
                      + myField.value.substring(endPos, myField.value.length);
		myField.focus();
		myField.selectionStart = startPos + myValue.length;
		myField.selectionEnd = startPos + myValue.length;
		myField.scrollTop = scrollTop;
	} else {
		myField.value += myValue;
		myField.focus();
	}
}

function edInsertLink(which, i, defaultValue) {
    myField = document.getElementById(which);
	if (!defaultValue) {
		defaultValue = 'http://';
	}
	if (!edCheckOpenTags(which, i)) {
		var URL = prompt('Enter the URL' ,defaultValue);
		if (URL) {
			link_name=prompt('Enter name of URL', '');
			edButtons[i].tagStart = '[url=' + URL + ']' + link_name + '[/url]';
			edInsertTag(which, i);
		}
	}
	else {
		edInsertTag(which, i);
	}
}

function edInsertImage(which) {
    myField = document.getElementById(which);
	var myValue = prompt('Enter the URL of the image', 'http://');
	if (myValue) {
		myValue = '[img=' 
				+ myValue 
				//+ '" alt="' + prompt('Enter a description of the image', '') 
				+ '][/img]';
		edInsertContent(which, myValue);
	}
}

function countInstances(string, substr) {
	var count = string.split(substr);
	return count.length - 1;
}

function edInsertVia(which) {
    myField = document.getElementById(which);
	var myValue = prompt('Enter the URL of the source link', 'http://');
	if (myValue) {
		myValue = '(Thanks <a href="' + myValue + '" rel="external">'
				+ prompt('Enter the name of the source', '') 
				+ '</a>)';
		edInsertContent(which, myValue);
	}
}


function edSetCookie(name, value, expires, path, domain) {
	document.cookie= name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "");
}

function edShowExtraCookie() {
	var cookies = document.cookie.split(';');
	for (var i=0;i < cookies.length; i++) {
		var cookieData = cookies[i];
		while (cookieData.charAt(0) ==' ') {
			cookieData = cookieData.substring(1, cookieData.length);
		}
		if (cookieData.indexOf('js_quicktags_extra') == 0) {
			if (cookieData.substring(19, cookieData.length) == 'show') {
				return true;
			}
			else {
				return false;
			}
		}
	}
	return false;
}



















function BBcode_emot(text, textfield_id) {
	var txtarea = document.getElementsByName(textfield_id)[0];
	text = ' ' + text + ' ';
	if (txtarea.createTextRange && txtarea.caretPos) {
		var caretPos = txtarea.caretPos;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
		txtarea.focus();
	} else {
		txtarea.value  += text;
		txtarea.focus();
	}
}

function bbwrap(bbopen, bbclose, textfield_id) {
	var txtarea = document.getElementsByName(textfield_id)[0];
	var theSelection = '';
	
	if ((clientVer >= 4) && is_ie && is_win) {
		theSelection = document.selection.createRange().text;
		if (!theSelection) {
			txtarea.value += bbopen + bbclose;
			txtarea.focus();
			return;
		}
		ieWrap(txtarea, bbopen, bbclose, theSelection);
		return;
	}
	else if (is_moz)
	{
		mozWrap(txtarea, bbopen, bbclose, theSelection);
		return;
	}
	else
	{
		txtarea.value += bbopen + bbclose;
		txtarea.focus();
	}
	bbcode_inside(txtarea);
}


function bbstyle(bbnumber, textfield_id) {
	var txtarea = document.getElementsByName(textfield_id)[0];
	var donotinsert = false;
	var bblast = 0;
	
	txtarea.focus();

	if (bbnumber == -1) { // Close all open tags & default button names
		while (bbcode[0]) {
			butnumber = arraypop(bbcode) - 1;
			txtarea.value += bbtags[butnumber + 1];
			buttext = eval('document.post.addbbcode' + butnumber + '.value');
			eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
		}
		txtarea.focus();
		return;
	}


	var openTag = bbtags[bbnumber];
	var closeTag = bbtags[bbnumber+1];
	var theSelection = '';
	
	// Get text selection, if any
	if (is_ie) {
		theSelection = document.selection.createRange().text; // Get text selection
	} else if (is_moz) {
		var selLength = txtarea.textLength;
		var selStart = txtarea.selectionStart;
		var selEnd = txtarea.selectionEnd;
		if (selEnd == 1 || selEnd == 2) selEnd = selLength;
		theSelection = (txtarea.value).substring(selStart, selEnd);
	}
	
	bbcode_inside(txtarea);
}

// Ie based functions to wrap tags around text or insert accordingly.
// moved to be functions to make code easier to read.
function ieWrap(txtarea, open, close, theSel) 
{
	document.selection.createRange().text = open + theSel + close;
	return;
}

function ieInsert(txtarea,insert)
{
	var caretPos = txtarea.caretPos;
	caretPos.text =	caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? insert + ' ' : insert;
	return;
}

// Mozilla based functions that Wrap tags around text insert accordingly. 
// Based on code from: http://www.massless.org/mozedit/
function mozWrap(txtarea, open, close, theSel)
{
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	if (selEnd == 1 || selEnd == 2)  selEnd = selLength;

	var s1 = (txtarea.value).substring(0,selStart);
	if (theSel=='') theSel = (txtarea.value).substring(selStart, selEnd)
	var s3 = (txtarea.value).substring(selEnd, selLength);
	txtarea.value = s1 + open + theSel + close + s3;
	
	var moveto = selEnd + open.length + close.length;
	txtarea.selectionStart=moveto;
	txtarea.selectionEnd=moveto;
	return;
}

function mozInsert(txtarea, insert)
{
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	if (selEnd == 1 || selEnd == 2) selEnd = selLength;

	var s1 = (txtarea.value).substring(0,selStart);
	var s3 = (txtarea.value).substring(selStart, selLength);
	txtarea.value = s1 + insert + s3;
	
	var moveto = selEnd+insert.length;
	txtarea.selectionStart=moveto;
	txtarea.selectionEnd=moveto;
	return;
}

// Ie only! remember the Cursor position. Code from
// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
function bbcode_inside(textBox) {
	if (textBox.createTextRange) textBox.caretPos = document.selection.createRange().duplicate();	
}

function qchars_left(how_many, limit, textfield_id, where_to_show) {
	if (how_many >= limit) {
		document.getElementsByName(where_to_show)[0].value = 0;
		var txtarea = document.getElementsByName(textfield_id)[0];
		txtarea.value  = document.getElementsByName(textfield_id)[0].value.substring(0, limit);
		txtarea.focus();
	} else { document.getElementsByName(where_to_show)[0].value = limit - how_many; }
	return;
}

function BBcode_preview(div_preview_id, textfield_id)
{
	var BBcode_object=document.getElementsByName(textfield_id)[0].value;
		
	BBcode_object=BBcode_object.replace(/\[b]/g,'<strong>');
	BBcode_object=BBcode_object.replace(/\[\/b]/g,'</strong>');
	BBcode_object=BBcode_object.replace(/\[center]/g,'<center>');
	BBcode_object=BBcode_object.replace(/\[\/center]/g,'</center>');
	BBcode_object=BBcode_object.replace(/\[i]/g,'<i>');
	BBcode_object=BBcode_object.replace(/\[\/i]/g,'</i>');
	BBcode_object=BBcode_object.replace(/\[u]/g,'<u>');
	BBcode_object=BBcode_object.replace(/\[\/u]/g,'</u>');
	BBcode_object=BBcode_object.replace(/\[s]/g,'<strike>');
	BBcode_object=BBcode_object.replace(/\[\/s]/g,'</strike>');
	BBcode_object=BBcode_object.replace(/\[\/color]/g,'</font>');
	BBcode_object=BBcode_object.replace(/\[\/font]/g,'</font>');	
	BBcode_object=BBcode_object.replace(/\[\/bgcolor]/g,'</font>');
	BBcode_object=BBcode_object.replace(/\[\/size]/g,'</div>');
	BBcode_object=BBcode_object.replace(/\[\*]/g,'<li>');
	BBcode_object=BBcode_object.replace(/\r\n|\r|\n/g, '<br />')
	

	for(var i=0;i<=BBcode_object.length;i++)
	{
		// check if string == RIGHT
		if(BBcode_object.substr(i,7)=='[right]')
		{
			var check=0;
			// start to check if there is second part [/right]			
			for(var j=i+7;j<=BBcode_object.length;j++)
			{
				if(BBcode_object.substr(j,8)=='[/right]' && check==0)
				{
					check=j;
				}
			}
			if(check!=0) {
				var text=BBcode_object.substring(i+7,check);
				var ready_code='<p style="text-align:right;line-height:normal;margin:0px;padding:0px;">'+text+'</p>';
				BBcode_object=BBcode_object.substr(0,i)+ready_code+BBcode_object.substr(check+8);
				i=i+8;
			} else {
				BBcode_object=BBcode_object.substr(0,i)+BBcode_object.substr(i+7);
				i=i+7;				
			}
		}
	}

	for(var i=0;i<=BBcode_object.length;i++)
	{
		// check if string == LEFT
		if(BBcode_object.substr(i,6)=='[left]')
		{
			var check=0;
			// start to check if there is second part [/left]
			for(var j=i+6;j<=BBcode_object.length;j++)
			{
				if(BBcode_object.substr(j,7)=='[/left]' && check==0)
				{
					check=j;
				}
			}
			if(check!=0) {
				var text=BBcode_object.substring(i+6,check);
				var ready_code='<p style="text-align:left;line-height:normal;margin:0px;padding:0px;">'+text+'</p>';
				BBcode_object=BBcode_object.substr(0,i)+ready_code+BBcode_object.substr(check+7);
				i=i+7;
			} else {
				BBcode_object=BBcode_object.substr(0,i)+BBcode_object.substr(i+6);
				i=i+6;				
			}
		}
	}


	for(var i=0;i<=BBcode_object.length;i++)
	{
		// check if string == LIST
		if(BBcode_object.substr(i,6)=='[list]')
		{
			var check=0;
			for(var j=i+6;j<=BBcode_object.length;j++)
			{
				if(BBcode_object.substr(j,7)=='[/list]' && check==0)
				{
					check=j;
				}
			}
			if(check!=0)
			{
				var li=BBcode_object.substring(i+6,check);
				var fina='<ul style="list-style-type:disc;	list-style-position:inside;">'+li+'</ul>';
				BBcode_object=BBcode_object.substr(0,i)+fina+BBcode_object.substr(check+7);
			}
		}
	}
	for(var i=0;i<=BBcode_object.length;i++)
	{
		// check if string == LIST
		if(BBcode_object.substr(i,8)=='[list=1]')
		{
			var n=0;
			for(var j=i+6;j<=BBcode_object.length;j++)
			{
				if(BBcode_object.substr(j,7)=='[/list]' && n==0)
				{
					n=j;
				}
			}
			if(n!=0)
			{
				var li=BBcode_object.substring(i+8,n);
				var fina='<ol>'+li+'</ol>';
				BBcode_object=BBcode_object.substr(0,i)+fina+BBcode_object.substr(n+7);
			}
		}
	}
	for(var i=0;i<=BBcode_object.length;i++)
	{
		// check if string == LIST
		if(BBcode_object.substr(i,8)=='[list=a]')
		{
			var n=0;
			for(var j=i+6;j<=BBcode_object.length;j++)
			{
				if(BBcode_object.substr(j,7)=='[/list]' && n==0)
				{
					n=j;
				}
			}
			if(n!=0)
			{
				var li=BBcode_object.substring(i+8,n);
				var fina='<ol type="a">'+li+'</ol>';
				BBcode_object=BBcode_object.substr(0,i)+fina+BBcode_object.substr(n+7);
			}
		}
	}
	document.getElementById(div_preview_id).innerHTML=BBcode_object;
}

function BBcode_preview_start(div_preview_id, textfield_id)
{
		var div_preview_id = div_preview_id;
		var  textfield_id =  textfield_id;
		BBcode_preview(div_preview_id, textfield_id);
		//document.post.htm.value=document.getElementById('instant_preview').innerHTML;		
}

