var spaizButtons = new Array();
var spaizLinks = new Array();
var spaizOpenTags = new Array();
var countSpaizToolBar = 0;

function spaizButton(id, display, tagStart, tagEnd, access, tit, open)
{
	this.id = id;	// used to name the toolbar button
	this.display = display;	// label on button
	this.tagStart = tagStart; // open tag
	this.tagEnd = tagEnd;	// close tag
	this.access = access;	// access key
	this.tit = tit;	// title
	this.open = open;	// set to -1 if tag does not need to be closed
}

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_b'
																							,'b'
																							,'<b>'
																							,'</b>'
																							,'i'
																							,'Berted [Alt-B]'
																							);
		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_ins'
																							,'ins'
																							,'<ins>'
																							,'</ins>'
																							,'i'
																							,'INSerted [Alt-I]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_del'
																							,'del'
																							,'<del>'
																							,'</del>'
																							,'d'
																							,'DELeted [Alt-D]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_strong'
																							,'str'
																							,'<strong>'
																							,'</strong>'
																							,'s'
																							,'STRong [Alt-S]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_em'
																							,'em'
																							,'<em>'
																							,'</em>'
																							,'e'
																							,'EMphasis [Alt-E]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_code'
																							,'code'
																							,'<code>'
																							,'</code>'
																							,'c'
																							,'CODE [Alt-C]'
																							);
		
		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_center'
																							,'center'
																							,'<center>'
																							,'</center>'
																							,'i'
																							,'Berted [Alt-M]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_par'
																							,'p'
																							,'<p>'
																							,'</p>'
																							,'p'
																							,'Paragraph [Alt-P]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_ul'
																							,'ul'
																							,'<ul>\n'
																							,'</ul>\n\n'
																							,'u'
																							,'Unordered List [Alt-U]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_ol'
																							,'ol'
																							,'<ol>\n'
																							,'</ol>\n\n'
																							,'o'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_li'
																							,'li'
																							,'	<li>'
																							,'</li>\n'
																							,'l'
																							,'List Item [Alt-L]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_block'
																							,'block'
																							,'<blockquote>'
																							,'</blockquote>'
																							,'b'
																							,'BLOCKQUOTE [Alt-B]'
																							);

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_img'
																							,'img'
																							,''
																							,''
																							,'g'
																							,'IMaGe [Alt-G]'
																							,-1
																							); // special case

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_link'
																							,'link'
																							,''
																							,'</a>'
																							,'a'
																							,'A href [Alt-A]'
																							); // special case

		spaizButtons[spaizButtons.length] = new spaizButton('spaiz_pre'
																							,'pre'
																							,'<pre>'
																							,'</pre>'
																							,'r'
																							,'[Alt-R]'
																							);
		function spaizLink()
		{
			this.display = '';
			this.URL = '';
			this.newWin = 0;
		}

		function spaizShowButton(button, i)
		{
			sep = '_' + countSpaizToolBar;
			if (button.id == 'spaiz_img')
			{
				document.write('<input type="button" id="' + button.id + sep +'" accesskey="' + button.access + '" title="' + button.tit + '" class="quicktags" onclick="spaizInsertImage(spaizCanvas'+ sep +');" value="' + button.display + '" />');
			}
			else if (button.id == 'spaiz_link')
			{
				document.write('<input type="button" id="' + button.id + sep +'" accesskey="' + button.access + '" title="' + button.tit + '" class="quicktags" onclick="spaizInsertLink(spaizCanvas'+ sep +', ' + i + ', ' + countSpaizToolBar + ');" value="' + button.display + '" />');
			}
			else
			{
				document.write('<input type="button" id="' + button.id + sep +'" accesskey="' + button.access + '" title="' + button.tit + '" class="quicktags" onclick="spaizInsertTag(spaizCanvas'+ sep +', ' + i + ', ' + countSpaizToolBar + ');" value="' + button.display + '"  />');
			}
		}

		function spaizAddTag(button, number)
		{
			sep = '_' + number;
			if (spaizButtons[button].tagEnd != '')
			{
				spaizOpenTags[spaizOpenTags.length] = button;
				document.getElementById(spaizButtons[button].id + sep).value = '/' + document.getElementById(spaizButtons[button].id + sep).value;
			}
		}

		function spaizRemoveTag(button, number)
		{
			sep = '_' + number;
			for (i = 0; i < spaizOpenTags.length; i++)
			{
				if (spaizOpenTags[i] == button)
				{
					spaizOpenTags.splice(i, 1);
					document.getElementById(spaizButtons[button].id + sep).value = document.getElementById(spaizButtons[button].id + sep).value.replace('/', '');
				}
			}
		}

		function spaizCheckOpenTags(button)
		{
			var tag = 0;
			for (i = 0; i < spaizOpenTags.length; i++)
			{
				if (spaizOpenTags[i] == button)
				{
					tag++;
				}
			}
			if (tag > 0)
			{
				return true; // tag found
			}
			else
			{
				return false; // tag not found
			}
		}

		function spaizCloseAllTags(varName, number)
		{
			var count = spaizOpenTags.length;
			for (o = 0; o < count; o++) {
				spaizInsertTag(varName, spaizOpenTags[spaizOpenTags.length - 1], number);
			}
		}
		
		function spaizToolbar()
		{
			countSpaizToolBar++;
			sep = '_' + countSpaizToolBar;
			document.write('<div>');
			for (i = 0; i < spaizButtons.length; i++)
			{
				spaizShowButton(spaizButtons[i], i);
			}
			document.write('<input type="button" id="spaiz_close' + sep + '" class="quicktags" onclick="spaizCloseAllTags(spaizCanvas_' + countSpaizToolBar + ', ' + countSpaizToolBar + ');" title="Close all tags" value="X" />');
			document.write('</div>');
		}

		// insertion code
		function spaizInsertTag(myField, i, number)
		{
			//IE support
			if (document.selection)
			{
				myField.focus();
					sel = document.selection.createRange();
				if (sel.text.length > 0)
				{
					sel.text = spaizButtons[i].tagStart + sel.text + spaizButtons[i].tagEnd;
				}
				else {
					if (!spaizCheckOpenTags(i) || spaizButtons[i].tagEnd == '')
					{
						sel.text = spaizButtons[i].tagStart;
						spaizAddTag(i, number);
					}
					else {
						sel.text = spaizButtons[i].tagEnd;
						spaizRemoveTag(i, number);
					}
				}
				myField.focus();
			}
			//MOZILLA/NETSCAPE support
			else if (myField.selectionStart || myField.selectionStart == '0')
			{
				var startPos = myField.selectionStart;
				var endPos = myField.selectionEnd;
				var cursorPos = endPos;
				if (startPos != endPos)
				{
					myField.value = myField.value.substring(0, startPos)
												+ spaizButtons[i].tagStart
												+ myField.value.substring(startPos, endPos)
												+ spaizButtons[i].tagEnd
												+ myField.value.substring(endPos, myField.value.length);
					cursorPos += spaizButtons[i].tagStart.length + edButtons[i].tagEnd.length;
				}
				else
				{
					if (!spaizCheckOpenTags(i) || spaizButtons[i].tagEnd == '')
					{
						myField.value = myField.value.substring(0, startPos)
													+ spaizButtons[i].tagStart
													+ myField.value.substring(endPos, myField.value.length);
						spaizAddTag(i, number);
						cursorPos = startPos + spaizButtons[i].tagStart.length;
					}
					else
					{
						myField.value = myField.value.substring(0, startPos)
													+ spaizButtons[i].tagEnd
													+ myField.value.substring(endPos, myField.value.length);
						spaizRemoveTag(i, number);
						cursorPos = startPos + spaizButtons[i].tagEnd.length;
					}
				}
				myField.focus();
				myField.selectionStart = cursorPos;
				myField.selectionEnd = cursorPos;
			}
			else
			{
				if (!spaizCheckOpenTags(i) || spaizButtons[i].tagEnd == '')
				{
					myField.value += spaizButtons[i].tagStart;
					spaizAddTag(i, number);
				}
				else
				{
					myField.value += spaizButtons[i].tagEnd;
					spaizRemoveTag(i, number);
				}
				myField.focus();
			}
		}

		function spaizInsertContent(myField, myValue)
		{
			//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;
				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;
			}
			else
			{
				myField.value += myValue;
				myField.focus();
			}
		}

		function spaizInsertLink(myField)
		{
			var URL = prompt('URL:', 'http://');
			if (URL) {
				URL = '<a href="redirect.php?to='
						+ URL
						+ '" target="_blank">' + prompt('Title:', '')
						+ '</a>';
				spaizInsertContent(myField, URL);
			}
		}

		function spaizInsertImage(myField)
		{
			var myValue = prompt('URL:', 'http://');
			if (myValue) {
				myValue = '<img src="'
						+ myValue
						+ '" alt="' + prompt('ALTernate text:', '')
						+ '" title="' + prompt('Title:', '')
						+ '">';
				spaizInsertContent(myField, myValue);
			}
		}
