//
// Author: Erik Iwarson
// Copyright (c) ErZorSoft.com
// A What You See Is What You Get Editor
// As used in ErZorSoft Forums
//
// ErZorSoft WYSIWYG is property of ErZorSoft.com and may
// only be used in scripts developed by us.
//

wysiwygWidth = 500;
wysiwygHeight = 300;
var mode = 0;

if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
  HTMLElement.prototype.insertAdjacentElement = function
  (where,parsedNode)
	{
	  switch (where){
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) 
      this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	}

	HTMLElement.prototype.insertAdjacentHTML = function
  (where,htmlStr)
	{
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	}


	HTMLElement.prototype.insertAdjacentText = function
  (where,txtStr)
	{
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	}
};

var buttons = new Array("bold", "italic", "underline", "htmlmode", "image", "url");

function seterzorwysiwyg(textaread,wid,hei)
{
var txtid = textaread;

wysiwygWidth = wid;
wysiwygHeight = hei;

document.getElementById(textaread).style.display = 'none';

  toolbarWidth = parseFloat(wysiwygWidth) + 2;

  var toolbarHTML;
  toolbarHTML =  '<table style="border: 1px solid #999999; background-color: #CCCCCC;"><tr>';
  for(button in buttons)
  {
	  toolbarHTML += '<td style="width: 22px;"><img src="includes/js/icons/' +buttons[button]+ '.bmp" border=0 unselectable="on" title="' +buttons[button]+ '" onmouseover="changeIcon(' +buttons[button]+ ',2);" onmouseout="changeIcon(' +buttons[button]+ ',' + "null" + ');" id="' +buttons[button]+ '" onClick="editText(this.id,\'' + txtid + '\');"></td>';
  }
  toolbarHTML += '</tr></table>';

 var theframe = '<table cellspacing="0" cellpadding="0" border="0" style="width:' + wysiwygWidth + 'px; height:' + wysiwygHeight + 'px;border: 1px inset black;"><tr><td valign="top"><iframe frameborder="0" id="wysiwyg' + txtid + '"></iframe><br></td></tr></table><br>';
  document.getElementById(txtid).insertAdjacentHTML("afterEnd", toolbarHTML + theframe);

  document.getElementById("wysiwyg" + txtid).style.width = wysiwygWidth + "px";
  document.getElementById("wysiwyg" + txtid).style.height = wysiwygHeight + "px";

  var contWindow = document.getElementById("wysiwyg" + txtid).contentWindow.document;
  var oldcont = document.getElementById(txtid).value;

  contWindow.open();
  contWindow.write(oldcont);
  contWindow.close();

  contWindow.designMode = "On";
  contWindow.contentEditable = true;


  document.getElementById("wysiwyg" + txtid).contentWindow.focus();

  if (navigator.appName == "Microsoft Internet Explorer")
  {
    for (var idx=0; idx < document.forms.length; idx++)
    {
      document.forms[idx].attachEvent('onsubmit', function() { updateText(txtid); });
    }
	document.getElementById("wysiwyg" + txtid).contentWindow.document.attachEvent('onkeydown', function(e) { ownShit(txtid, e); });
	document.getElementById("wysiwyg" + txtid).contentWindow.document.attachEvent('onpaste', function(e) { fuYou(txtid, e); });
  }
  else 
  {
    for (var idx=0; idx < document.forms.length; idx++) 
    {
    	document.forms[idx].addEventListener('submit',function OnSumbmit() { updateText(txtid); }, true);
    }
  }


}

function changeIcon(func, state)
{
	if(func.id != "htmlmode" || mode != 1)
	{
		if(state == null)
		{
			func.src = 'includes/js/icons/' + func.id + '.bmp';
		}
		else
		{
			func.src = 'includes/js/icons/' + func.id + state + '.bmp';
		}
	}
}

function editText(func,txtarea)
{

  if(func == "htmlmode")
  {
    var doc = document.getElementById("wysiwyg" + txtarea).contentWindow.document;


//mode == 1 is HTMLmode
//mode == 0 is Textmode

    if(navigator.appName == "Microsoft Internet Explorer"||navigator.appName == "Opera") 
    {
      if(mode == 0)
      {
	  var docText = doc.body.innerHTML;
//	  alert(doc.body.innerHTML);
	  docText = docText.replace(/\[url=/gi, "<a href=");
	  docText = docText.replace(/\[\/url\]/gi, "</a>");
	  docText = docText.replace(/\[img=/gi, "<img src=");
	  docText = docText.replace(/\[/g, "<");
	  docText = docText.replace(/\]/g, ">");
	  doc.body.innerHTML = docText;
        mode = 1;
      }
      else
      {
	  var docText = doc.body.innerHTML;
	  docText = docText.replace(/\<A href=/gi, "[url=");
	  docText = docText.replace(/\<\/A\>/gi, "[/url]");
	  docText = docText.replace(/\<IMG src=/gi, "[img=");
  	  docText = docText.replace(/\</g, "[");	
  	  docText = docText.replace(/\>/g, "]");
	  doc.body.innerText = docText;
        mode = 0;
      }
    }
    else
    {
      if(mode == 0)
      {
	  var docText = doc.body.innerHTML;
	  docText = docText.replace(/\[url=/gi, "<a href=");
	  docText = docText.replace(/\[\/url\]/gi, "</a>");
	  docText = docText.replace(/\[img=/gi, "<img src=");
	  docText = docText.replace(/\[/g, "<");
	  docText = docText.replace(/\]/g, ">");
	  doc.body.innerHTML = docText;
 	  mode = 1;
      }
      else
      {
	  var docText = doc.body.innerHTML;
	  docText = docText.replace(/\<a href=/gi, "[url=");
	  docText = docText.replace(/\<\/a\>/gi, "[/url]");
	  docText = docText.replace(/\<img src=/gi, "[img=");
  	  docText = docText.replace(/\</g, "[");	
  	  docText = docText.replace(/\>/g, "]");
	  doc.body.innerHTML = docText;
        mode = 0;
      }
    }

  }
  else
  {
	if(navigator.appName == "Microsoft Internet Explorer"||navigator.appName == "Opera") 
	{
		if(document.activeElement.tagName == "IFRAME" && document.activeElement.id.substring(0,7) == "wysiwyg")
		{
			var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.document.selection.createRange();
			var pFix = false;			

			if(sel.htmlText.length == document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML.length)
			{
				pFix = true;
			}
			if(func == "bold")
			{
				if(pFix == false)
				{
					if(mode == 0)
					{
						sel.text = '[b]' + sel.text + '[/b]';
					}
					else
					{
						sel.pasteHTML('<b>' + sel.text + '</b>');
					}
				}
				else
				{
					if(mode == 0)
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '[b]' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '[/b]';
					}
					else
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '<b>' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '</b>';
					}
				}
			}
			else if(func == "italic")
			{
				if(pFix == false)
				{
					if(mode == 0)
					{
						sel.text = '[i]' + sel.text + '[/i]';
					}
					else
					{
						sel.pasteHTML('<i>' + sel.text + '</i>');
					}
				}
				else
				{
					if(mode == 0)
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '[i]' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '[/i]';
					}
					else
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '<i>' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '</i>';
					}
				}
			}
			else if(func == "underline")
			{
				if(pFix == false)
				{
					if(mode == 0)
					{
						sel.text = '[u]' + sel.text + '[/u]';
					}
					else
					{
						sel.pasteHTML('<u>' + sel.text + '</u>');
					}
				}
				else
				{
					if(mode == 0)
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '[u]' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '[/u]';
					}
					else
					{
						document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '<u>' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '</u>';
					}
				}
			}
			else if(func == "image")
			{
					if(sel.text == "")
					{
						var imgurl = prompt("Please enter the URL of your image:", "");
						if(pFix == false)
						{
							if(mode == 0)
							{
								sel.text = '[img=' + imgurl + ']';
							}
							else
							{
								sel.pasteHTML('<img src=' + imgurl + '>');
							}
						}
						else
						{
							if(mode == 0)
							{
								document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '[img=' + imgurl + ']';
							}
							else
							{
								document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '<img src=' + imgurl + '>';
							}
						}
					}
					else
					{
						if(pFix == false)
						{
							if(mode == 0)
							{
								sel.text = '[img=' + sel.text + ']';
							}
							else
							{
								sel.text = '<img src=' + sel.text + '>';
							}
						}
						else
						{
							if(mode == 0)
							{
								document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '[img=' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + ']';
							}
							else
							{
								document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = '<img src=' + document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML + '>';
							}
						}
					}
			}
			else if(func == "url")
			{
				sel.text = '[url=' + sel.text + ']' + sel.text + '[/url]';
			}
		}
	}
	else
	{
		var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.getSelection();
		var range = sel.getRangeAt(0);
		var asd = range.extractContents();

		asd = asd.textContent;

		sel = asd;

		if(func == "bold")
		{
			newNode = document.createTextNode("[b]" + sel + "[/b]");
			range.insertNode(newNode);
		}
		else if(func == "italic")
		{
			newNode = document.createTextNode("[i]" + sel + "[/i]");
			range.insertNode(newNode);
		}
		else if(func == "underline")
		{
			newNode = document.createTextNode("[u]" + sel + "[/u]");
			range.insertNode(newNode);
		}
		else if(func == "image")
		{
			if(sel == "")
			{
				var imgurl = prompt("Please enter the URL of your image:", "");
				newNode = document.createTextNode("[img=" + imgurl + "]");
			}
			else
			{
				newNode = document.createTextNode("[img=" + sel + "]");
			}
			range.insertNode(newNode);
		}
		else if(func == "url")
		{
			newNode = document.createTextNode("[url=" + sel + "]" + sel + "[/url]");
			range.insertNode(newNode);

		}
	}
  }
}

function updateText(txtarea)
{
var newText = document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML;
if(mode == 1)
{
	newText = newText.replace(/\<a href=/g, "[url=");
	newText = newText.replace(/\<\/a\>/g, "[/url]");
	newText = newText.replace(/\<img src=/g, "[img=");
	newText = newText.replace(/\>/g, "]");
	newText = newText.replace(/\</g, "[");
}
	newText = newText.replace(/\[url=\"/gi, "[url=");
	newText = newText.replace(/\"\]/gi, "]");
	newText = newText.replace(/\[img=\"/gi, "[img=");
	newText = newText.replace(/\[br\]/gi, "<br>");
  document.getElementById(txtarea).value = newText;
}

function fuYou(txtarea, e)
{
	alert("hej");
}

function ownShit(txtarea, e)
{
	var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.document.selection.createRange();
	if(e.keyCode == 13 && e.shiftKey == false)
	{
		e.returnValue = false;
//		var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.document.selection.createRange();
		var newText = sel.text + '<br/>';
		sel.pasteHTML(newText);
		sel.collapse(false);
		sel.moveEnd('character', 0);
		sel.select();
	}
	else if(e.keyCode == 8)
	{
//		var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.document.selection.createRange();
		if(sel.htmlText.length == document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML.length || document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML.length == 1)
		{
			e.returnValue = false;			
			document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = "";
		}
	}
	else if(e.ctrlKey && e.keyCode == 86)
	{
		e.returnValue = false;
//		var sel = document.getElementById('wysiwyg' + txtarea).contentWindow.document.selection.createRange();
		var newText = sel.text + window.clipboardData.getData('Text');
		sel.pasteHTML(newText);
	}
	else if(sel.htmlText.length == document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML.length && document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML != "" && e.keyCode > 47 && e.keyCode < 91)
	{
		e.returnValue = false;
		document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = String.fromCharCode(e.keyCode);
		if(!e.shiftKey)
		{
			document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML = document.getElementById("wysiwyg" + txtarea).contentWindow.document.body.innerHTML.toLowerCase();
		}
		sel.collapse(false);
		sel.moveEnd('character', 0);
		sel.select();
	}

}
