var bodyTag = "<BODY MONOSPACE STYLE=\"font:10pt verdana,arial,sans-serif\">";
var ViewMode = "Text";
var names = new Array();
var areas = new Array();
var wysiwygEditors = new Array();

function submitTextareas()
{
	for (i=0;i<areas.length;i++) {
		document.getElementById(areas[i]+'_data').value = GetSource(areas[i]);
	}
}

function prepareWYSIWYG() {
	// Gebruikt in de form_functions. De submitTextarea wordt mailing_edit.php gebruikt
	for(var i = 0; i < wysiwygEditors.length; i++) {
		document.getElementById(wysiwygEditors[i]).value = GetSource(wysiwygEditors[i] + '_wysiwyg');
	}
}

function SendForm(na) {
	document.forms['nieuws'].body.value = GetSource();
	document.forms['nieuws'].submit();
}

function SetForm(naam) {
	SetSource(naam, document.getElementById(naam+'_data').value);
}

function GetSource(naam) {
	document.getElementById(naam).contentWindow.focus();
	stripMS(naam);
	return document.getElementById(naam).contentWindow.document.body.innerHTML;
}

function SetSource(naam, text) {
   document.getElementById(naam).contentWindow.document.body.innerHTML = text;
   document.getElementById(naam).contentWindow.focus();
}

function CheckMode() {
   if(ViewMode == "Text") {
      return true;
   } else {
      return false;
   }
}

function Do(naam, action) {
   document.getElementById(naam).contentWindow.focus();
   document.getElementById(naam).contentWindow.document.execCommand(action, false, false);
}



function Onloaded() {
	for (i = 0; i < names.length; i++) {
		if (document.getElementById(names[i]).addEventListener) {
			document.getElementById(names[i]).contentWindow.addEventListener("click", function() { return false; }, true );
			document.getElementById(names[i]).contentWindow.addEventListener("keyup", new Function('stripMS(\''+names[i]+'\')'), true);
		} else if (document.getElementById(names[i]).attachEvent) {
			document.getElementById(names[i]).contentWindow.document.attachEvent("oncontextmenu", function() { return false; } );
			document.getElementById(names[i]).contentWindow.document.attachEvent("onkeyup", new Function('stripMS(\''+names[i]+'\') '));
			document.getElementById(names[i]).contentWindow.document.attachEvent("onkeydown", new Function('stripMS(\''+names[i]+'\') '));
			document.getElementById(names[i]).contentWindow.document.attachEvent("onkeypress", new Function('stripMS(\''+names[i]+'\') '));
			document.getElementById(names[i]).contentWindow.document.attachEvent("onmouseup", new Function('stripMS(\''+names[i]+'\') '));
		}
		SetForm(names[i]);
		//setTimeout(new Function('stripMS(\''+names[i]+'\')'), 10);
	}
}

function insertHTML(naam, sHTML)
{
	var oEditor=document.getElementById(naam).contentWindow;
	var oSel=oEditor.getSelection();
	var range = oSel.getRangeAt(0);
	var docFrag = range.createContextualFragment(sHTML);
	range.collapse(true);
	var lastNode = docFrag.childNodes[docFrag.childNodes.length-1];
	range.insertNode(docFrag);
	try { oEditor.document.designMode="on"; } catch (e) {}
	if (lastNode.nodeType==Node.TEXT_NODE)
	{
		range = oEditor.document.createRange();
		range.setStart(lastNode, lastNode.nodeValue.length);
		range.setEnd(lastNode, lastNode.nodeValue.length);
		oSel = oEditor.getSelection();
		oSel.removeAllRanges();
		oSel.addRange(range);
	}
}

function insertLink(name,url,title,target)
{
	var oEditor=document.getElementById(name).contentWindow;
	var oSel=oEditor.getSelection();
	var range = oSel.getRangeAt(0);
	var emptySel = false;
	if(range.toString()=="")
	{
		emptySel = true;
		var cap = (title!="" && title!=null ? title : url);
		var node = oEditor.document.createTextNode(cap);
		range.insertNode(node);
		try { oEditor.document.designMode="on"; } catch (e) {}
		range = oEditor.document.createRange();
		range.setStart(node, 0);
		range.setEnd(node, cap.length);
		oSel = oEditor.getSelection();
		oSel.removeAllRanges();
		oSel.addRange(range);
	}
	var isSelInMidText = (range.startContainer.nodeType==Node.TEXT_NODE) && (range.startOffset>0);
	oEditor.document.execCommand("CreateLink", false, url);
	oSel = oEditor.getSelection();
	range = oSel.getRangeAt(0);

	//get A element
	if (range.startContainer.nodeType == Node.TEXT_NODE) {
		var node = (emptySel || !isSelInMidText ? range.startContainer.parentNode : range.startContainer.nextSibling); //A node
		range = oEditor.document.createRange();
		range.selectNode(node);
		oSel = oEditor.getSelection();
		oSel.removeAllRanges();
		oSel.addRange(range);
	}
	var oEl = range.startContainer.childNodes[range.startOffset];
	if(oEl)
	{
		if(target!="" && target!=undefined)oEl.target=target;
	}
}

function stripMS(name)
{
	//  first execute the editor native cleanup to get rid of undesired HTML
	var strNewOrg = document.getElementById(name).contentWindow.document.body.innerHTML;

	strNew = regexpReplace(strNewOrg, '<em style="text-decoration: underline;">([^<]*)</em>', "<i><u>$1</u></i>", "gi");
	strNew = regexpReplace(strNew, '<span style="text-decoration: underline;">([^<]*)</span>', "<u>$1</u>", "gi");

	strNew = regexpReplace(strNew, '<span style="font-style: italic;">([^<]*)</span>', "<i>$1</i>", "gi");

	strNew = regexpReplace(strNew, '<em style="font-weight: bold;">([^<]*)</em>', "<i><b>$1</b></i>", "gi");
	strNew = regexpReplace(strNew, '<span style="font-weight: bold;">([^<]*)</span>', "<b>$1</b>", "gi");

	strNew = regexpReplace(strNew, "<(?!a)([\?])?([a-z:]+)( ([^>]*)?)?>", "<$2>", "gi");
	strNew = regexpReplace(strNew, "<(\/)?(?!u)(?!b)(?!i)(?!strong)(?!em)(?!a)([a-z:]+)>", "", "gi");
	//strNew = regexpReplace(strNew, "<([/\\?])?([a-z:]){1,20}>", "", "gi");
	strNew = regexpReplace(strNew, "(&nbsp;)+", " ", "gi");
	strNew = regexpReplace(strNew, "(\r\n)", "<br>", "gi");
	strNew = regexpReplace(strNew, "(\n)", "<br>", "gi");
	strNew = regexpReplace(strNew, "(\r)", "<br>", "gi");
	strNew = regexpReplace(strNew, "<([a-z]+)>( )?<\/([a-z]+)>", "", "gi");
	strNew = regexpReplace(strNew, "(<br>){4,}", "<br><br><br>", "gim");
//	alert(strNewOrg);
//	alert(strNew);
	if (strNewOrg.length-strNew.length > 1) {
		document.getElementById(name).contentWindow.document.body.innerHTML = strNew;
	}


	//setTimeout(new Function('stripMS(\''+name+'\')'), 100);
}

function regexpReplace(in_str,reg_exp,replace_str,opts)
{
	if(typeof(opts)=="undefined") {
		opts='g';
	}
	var re=new RegExp(reg_exp,opts);
	return in_str.replace(re,replace_str);
}


function wysiwygLink(caption, naam) {
	var str = prompt(caption + ":", "http:\/\/");
	if (document.all) {
		var link = document.getElementById(naam).contentWindow.document.selection.createRange().text;
	} else {
		var link = document.getElementById(naam).contentWindow.getSelection();
	}
	if(link == null || link == "") {
		link = str;
	}
	if((str != null) && (str != "http://")) {
		if (document.all) {
			var sel = document.getElementById(naam).contentWindow.document.selection.createRange();
			sel.pasteHTML("<a target=\"_blank\" href=\"" + str + "\">" + link + "</a>");
		} else {
			var html = "<a target=\"_blank\" href=\"" + str + "\">" + link + "</a>";
			insertLink(naam,str,link,'');
		}
	}
	document.getElementById(naam).contentWindow.focus();
}