
var articles = new Array();
var articlesByElementId = new Array();

var focussedEditableElementId = null;

function openSource(articleId)
{
	document.location.href = (contextroot + '/process/cms/text/edit?text_id=' + articleId);
}

function enableArticleContentEditable(elementId)
{
	enableElementContentEditable(elementId + '_title');
	enableElementContentEditable(elementId + '_intro');
	enableElementContentEditable(elementId + '_text');
}

function enableElementContentEditable(elementId)
{
	var element = document.getElementById(elementId);
	if(element != null)
	{
		element.contentEditable = true;
		registerEventHandler(element, 'focus', new Function('{focussedEditableElementId = "' + elementId + '"}'));
		focussedEditableElementId = elementId;
//		element.focus();
//		registerEventHandler(element, 'blur', new Function('{focussedEditableElementId = null}'));
	}
}

function disableArticleContentEditable(elementId, value)
{
	disableElementContentEditable(elementId + '_title');
	disableElementContentEditable(elementId + '_intro');
	disableElementContentEditable(elementId + '_text');
}

function disableElementContentEditable(elementId)
{
	var element = document.getElementById(elementId);
	if(element != null)
	{
		if(focussedEditableElementId == elementId)
		{
			focussedEditableElementId = null;
		}
		element.contentEditable = false;
		registerEventHandler(element, 'focus', new Function('{}'));
//		registerEventHandler(element, 'blur', new Function('{}'));
	}
}


function toggleEdit(elementId)
{
	if(typeof(articlesByElementId[elementId]) == 'undefined')
	{
		return;
	}
	if(articlesByElementId[elementId].contentEditable == false)
	{
		enableArticleContentEditable(elementId);
		articlesByElementId[elementId].contentEditable = true;
		widgetengine.destroyWidget(elementId + '_toolbar_widget');
	}
	else
	{
		disableArticleContentEditable(elementId);
		articlesByElementId[elementId].contentEditable = false;
		widgetengine.destroyWidget(elementId + '_toolbar_widget');
	}
	writeToolbars();
}


function Article(id, status, category, name)
{
	this.id = id;
	this.status = status;
	this.category = category;
	this.name = name;
	this.contentEditable = false;
}

function registerArticleElement(elementId, articleId, status, category, name)
{
	//if an article already exists it will be overwritten except for the 'editable' status
	var article = articles[articleId];
	if(article == null)
	{
		article = new Article(articleId, status, category, name);
		articles[articleId] = article;
	}
	else
	{
		article.id = articleId;
		article.status = status;
		article.category = category;
		article.name = name;
	}
	articlesByElementId[elementId] = article;
}


function updateArticle(articleId, status, category, name)
{
	//if an article already exists it will be overwritten except for the 'editable' status
	var article = articles[articleId];
	if(article == null)
	{
		article = new Article(articleId, status, category, name);
		articles[articleId] = article;
	}
	else
	{
		article.id = articleId;
		article.status = status;
		article.category = category;
		article.name = name;
	}
}

var chunkSize = 50000;


function saveArticleFromContentEditable(elementId, articleId, articleCategory, articleName)
{
	var articleTitleElement = document.getElementById(elementId + '_title');
	var articleIntroElement = document.getElementById(elementId + '_intro');
	var articleTextElement = document.getElementById(elementId + '_text');

	var articleTitle = articleTitleElement != null ? translateUnicodeToHTMLChar(escape(articleTitleElement.innerHTML)) : null;
	var articleIntro = articleIntroElement != null ? translateUnicodeToHTMLChar(escape(articleIntroElement.innerHTML)) : null;
	//articleText is translated in chunks
	var articleText = articleTextElement != null ? articleTextElement.innerHTML : null;

	saveArticle(elementId, articleId, articleCategory, articleName, articleTitle, articleIntro, articleText);
}


function saveArticleFromForm(elementId, articleId, articleCategory, articleName)
{
	var articleTitleElement = document.getElementById(elementId + '_title');
	var articleIntroElement = document.getElementById(elementId + '_intro');
	var articleTextElement = document.getElementById(elementId + '_text');

//	alert(articleTextElement.value.lastIndexOf('</table>') + ' ' + articleTextElement.value.length);
//	alert(articleTextElement.innerHTML.lastIndexOf('</table>') + ' ' + articleTextElement.innerHTML.length + ' ' + articleTextElement.innerHTML);


	var articleTitle = (articleTitleElement != null ? escape(articleTitleElement.value) : null);
	var articleIntro = (articleIntroElement != null ? escape(articleIntroElement.value) : null);
	var articleText = (articleTextElement != null ? articleTextElement.value : null);

	saveArticle(elementId, articleId, articleCategory, articleName, articleTitle, articleIntro, articleText);
}

function saveArticle(elementId, articleId, articleCategory, articleName, articleTitle, articleIntro, articleText)
{
//	if(articleText != null && articleText.length > chunkSize)
	{
		var date = new Date();
		var saveId = '' + date.getMinutes() + '.' + date.getSeconds() + '.' + date.getMilliseconds();
		var nrofChunks = Math.ceil(articleText != null && articleText.length != 0 ? articleText.length / chunkSize : 1);

		try
		{
			for(i = 0; i < nrofChunks; i++)
			{
				var sendText = null;
				if (articleText != null)
				{
					sendText = escape(articleText.substring((i * chunkSize), ((i + 1) * chunkSize)));
				}
//				sendText = escape(sendText);
				ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/save',
						(i == (nrofChunks - 1) ? alert('article saved') : ajaxReqeuestManager.ignoreResponse),
						null,
						'save_id=' + saveId + '&nrof_chunks=' + nrofChunks + '&chunk_no=' + i +
						'&element_id=' + elementId + '&text_id=' + articleId + '&article_category=' +
						articleCategory + '&article_name=' + articleName +
						(articleTitle != null ? '&article_title=' + articleTitle : '') +
						(articleIntro != null ? '&article_intro=' + articleIntro : '') +
						(sendText != null ? '&article_text=' + sendText : ''));
//				alert("chunk " + i + " send");
			}
		}
		catch (e)
		{
			alert(e.message);
		}
			//		alert('[' + sendText + ']');
	}
/*	else
	{
		if(articleText != null)
		{
			articleText = escape(articleText);
		}
		ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/save',
				alert('article saved'),
				null,
				'element_id=' + elementId + '&text_id=' + articleId + '&article_category=' +
				articleCategory + '&article_name=' + articleName +
				(articleTitle != null ? '&article_title=' + articleTitle : '') +
				(articleIntro != null ? '&article_intro=' + articleIntro : '') +
				(articleText != null ? '&article_text=' + articleText : ''));
	}*/
}

/*
function saveText(elementId, textId, textCategory, textName)
{
	try{
//	var textTitleElement = document.getElementById(elementId + '_title');
//	var textIntroElement = document.getElementById(elementId + '_intro');
	var textTextElement = document.getElementById(elementId + '_text');

//	alert(textTextElement.value.lastIndexOf('</table>') + ' ' + textTextElement.value.length);
//	alert(textTextElement.innerHTML.lastIndexOf('</table>') + ' ' + textTextElement.innerHTML.length + ' ' + textTextElement.innerHTML);


//	var textTitle = (textTitleElement != null ? escape(textTitleElement.value) : null);
//	var textIntro = (textIntroElement != null ? escape(textIntroElement.value) : null);
	var textText = (textTextElement != null ? textTextElement.value : null);

	if(textText != null && textText.length > chunkSize)
	{
		var date = new Date();
		var saveId = '' + date.getMinutes() + '.' + date.getSeconds() + '.' + date.getMilliseconds();
		var nrofChunks = Math.ceil(textText.length / chunkSize);

		try
		{
			for(i = 0; i < nrofChunks; i++)
			{
				var sendText = textText.substring((i * chunkSize), ((i + 1) * chunkSize));
				sendText = escape(sendText);
				ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/save',
						(i == (nrofChunks - 1) ? alert('text saved') : ajaxReqeuestManager.ignoreResponse),
						null,
						'save_id=' + saveId + '&nrof_chunks=' + nrofChunks + '&chunk_no=' + i +
						'&element_id=' + elementId + '&text_id=' + textId + '&text_category=' +
						textCategory + '&text_name=' + textName +
						(textText != null ? '&text_text=' + sendText : ''));
//				alert("chunk " + i + " send");
			}
		}
		catch (e)
		{
			alert(e.message);
		}
			//		alert('[' + sendText + ']');
	}
	else
	{
		if(textText != null)
		{
			textText = escape(textText);
		}
		ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/save',
				alert('text saved'),
				null,
				'element_id=' + elementId + '&text_id=' + textId + '&text_category=' +
				textCategory + '&text_name=' + textName +
				(textText != null ? '&text_text=' + textText : ''));
	}
	}	catch(e)
		{
			alert(e.message);
		}
}
*/
/**
 *
 *
 */
function checkoutArticle(elementId, articleId)
{
	//destroy widget, it will be renewed after the ajax call is done
	widgetengine.destroyWidget(elementId + '_toolbar_widget');
	ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/checkout?element_id=' +
			elementId + '&text_id=' + articleId,
			ajaxReqeuestManager.evaluateResponse);
}


/**
 *
 */
function checkinArticle(elementId, articleId)
{
	widgetengine.destroyWidget(elementId + '_toolbar_widget');
	ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/checkin?element_id=' +
			elementId + '&text_id=' + articleId,
			ajaxReqeuestManager.evaluateResponse);
}

/**
 *
 */
function publishArticle(elementId, articleId)
{
	widgetengine.destroyWidget(elementId + '_toolbar_widget');
	ajaxReqeuestManager.doRequest(contextroot + '/process/cms_ajax/text/publish?element_id=' +
			elementId + '&text_id=' + articleId,
			ajaxReqeuestManager.evaluateResponse);
}

/**
 * writes edittoolbars for al articles found on a webpage
 *
*/
function writeToolbars()
{
	for(var elementId in articlesByElementId)
	{
		var article = articlesByElementId[elementId];

		var articleElement = document.getElementById(elementId);
		var elementContents = '';
		var nrofGlyphs = 0;
		nrofGlyphs++;
		elementContents += '<img class="toolbar_glyph" alt="edit source" id="' + elementId + '_toolbar_open_source" src="' + contextroot + '/images/edit_icos/ico_open_xml.gif" onclick="openSource(\'' + article.id + '\')">';
		nrofGlyphs++;
		if(!article.contentEditable)
		{
			disableArticleContentEditable(elementId);
			elementContents += '<img class="toolbar_glyph" alt="edit WYSIWYG" id="' + elementId + '_toolbar_open" src="' + contextroot + '/images/edit_icos/ico_open.gif" onclick="toggleEdit(\'' + elementId + '\')">';
		}
		else
		{
			enableArticleContentEditable(elementId);
			elementContents += '<img class="toolbar_glyph" alt="display" id="' + elementId + '_toolbar_open" src="' + contextroot + '/images/edit_icos/ico_close.gif" onclick="toggleEdit(\'' + elementId + '\')">';
		}
		if(article.status == 'CHECKED OUT')
		{
			nrofGlyphs += 2;
			elementContents += '<img class="toolbar_glyph" alt="check in" id="' + elementId + '_toolbar_checkin" src="' + contextroot + '/images/edit_icos/ico_checkin.gif" onclick="checkinArticle(\'' + elementId + '\',\'' + article.id + '\')">';
			elementContents += '<img class="toolbar_glyph" alt="save" id="' + elementId + '_toolbar_save" src="' + contextroot + '/images/edit_icos/ico_save.gif" onclick="saveArticleFromContentEditable(\'' + elementId + '\',\'' + article.id + '\',\'' + article.category + '\',\'' + article.name + '\')">';
		}
		else
		{
			nrofGlyphs++;
			elementContents += '<img class="toolbar_glyph" alt="check out" id="' + elementId + '_toolbar_checkout" src="' + contextroot + '/images/edit_icos/ico_checkout.gif" onclick="checkoutArticle(\'' + elementId + '\',\'' + article.id + '\')">';
		}
		if(article.status == 'CHECKED IN')
		{
			nrofGlyphs++;
			elementContents += '<img class="toolbar_glyph" alt="publish" id="' + elementId + '_toolbar_publish" src="' + contextroot + '/images/edit_icos/ico_publish.gif" onclick="publishArticle(\'' + elementId + '\',\'' + article.id + '\')">';
		}

		if(article.contentEditable)
		{

			nrofGlyphs += 4;
			elementContents += '<img class="toolbar_glyph" alt="bold" id="' + elementId + '_toolbar_bold" src="' + contextroot + '/images/edit_icos/ico_b.gif" onclick="ijsbergedit_bold()">';
			elementContents += '<img class="toolbar_glyph" alt="italic" id="' + elementId + '_toolbar_italic" src="' + contextroot + '/images/edit_icos/ico_i.gif" onclick="ijsbergedit_italic()">';
			elementContents += '<img class="toolbar_glyph" alt="underline" id="' + elementId + '_toolbar_underline" src="' + contextroot + '/images/edit_icos/ico_u.gif" onclick="ijsbergedit_underline()">';
			elementContents += '<img class="toolbar_glyph" alt="strike" id="' + elementId + '_toolbar_strike" src="' + contextroot + '/images/edit_icos/ico_s.gif" onclick="ijsbergedit_strike()">';

			nrofGlyphs += 3;
			elementContents += '<img class="toolbar_glyph" alt="left" id="' + elementId + '_toolbar_left" src="' + contextroot + '/images/edit_icos/ico_alignl.gif" onclick="ijsbergedit_alignleft()">';
			elementContents += '<img class="toolbar_glyph" alt="center" id="' + elementId + '_toolbar_center" src="' + contextroot + '/images/edit_icos/ico_alignc.gif" onclick="ijsbergedit_aligncenter()">';
			elementContents += '<img class="toolbar_glyph" alt="right" id="' + elementId + '_toolbar_right" src="' + contextroot + '/images/edit_icos/ico_alignr.gif" onclick="ijsbergedit_alignright()">';

			nrofGlyphs++;
			elementContents += '<img class="toolbar_glyph" alt="link" id="' + elementId + '_toolbar_link" src="' + contextroot + '/images/edit_icos/ico_url.gif" onclick="ijsbergedit_link()">';

			nrofGlyphs++;
			elementContents += '<img class="toolbar_glyph" alt="image" id="' + elementId + '_toolbar_image" src="' + contextroot + '/images/edit_icos/ico_img.gif" onclick="ijsbergedit_image(event)">';

			nrofGlyphs++;
			elementContents += '<img class="toolbar_glyph" alt="special characters" id="diacritical' + elementId + '_toolbar_image" src="' + contextroot + '/images/edit_icos/ico_diacritical.gif" onclick="ijsbergedit_diacritical(event)">';

		}
		var articlePos = getElementPositionInPage(articleElement);

		var toolbarwidth = 24 * nrofGlyphs;
		if (toolbarwidth < 80)
		{
			toolbarwidth = 80;
		}

		elementContents = '<div style="width: ' + toolbarwidth + 'px" id="' + elementId + '_toolbar" class="edit_toolbar">' + elementContents + '</div>';

		//create local WindowWidget
		widgetengine.deployWidget(new WindowWidget(elementId + '_toolbar_widget', article.id, 45, toolbarwidth, null, elementContents, false), articlePos.x, articlePos.y);
	}
}




/////////////////////////////////
// IJSBERG EDIT
// Nils Addink





// GENERAL PURPOSE STRING FUNCTIONS
function isWhiteSpace(c) {
	return ((c==" ")||(c=="\t")||(c=="\n")||(c=="\r"));
}

function trim(s) {
	if (s=="")	return "";
	while ( isWhiteSpace(s.charAt(0)) ) { if (s.length > 1) { s= s.substr(1,s.length-1); }	else { return ""; }	}
	while ( isWhiteSpace(s.charAt(s.length-1)) ) { s = s.substr(0,s.length-1); }
	return s;
}




//TODO deze functies werken alleen in IE
function ijsbergedit_bold(i) {document.execCommand("Bold");}
function ijsbergedit_italic(i) {document.execCommand("Italic");}
function ijsbergedit_underline(i) {document.execCommand("Underline");}
function ijsbergedit_strike(i) {document.execCommand("StrikeThrough");}
function ijsbergedit_cut() {document.execCommand("Cut");}
function ijsbergedit_copy() {document.execCommand("Copy");}
function ijsbergedit_paste() {document.execCommand("Paste");}
function ijsbergedit_alignleft() {document.execCommand("JustifyLeft");}
function ijsbergedit_aligncenter() {document.execCommand("JustifyCenter");}
function ijsbergedit_alignright() {document.execCommand("JustifyRight");}




function ijsbergedit_link(i) {
	var range = document.selection.createRange();
	if (range.text == '') {
	    alert('Select text to act as hyperlink');
	} else {
		document.execCommand("CreateLink");
		if (range.parentElement().tagName == "A") {
			range.parentElement().title = "LINK: " + range.parentElement().href;
		}
	}
}


function ijsbergedit_searchimage()
{
	var imageSelectWidget = widgetengine.getWidget('window1');
	var assetSearchName = document.getElementById('imageSearchNameBox').value;
	imageSelectWidget.source = '/cms/ajax/selectimage.jsp?asset_name=' + assetSearchName;
	imageSelectWidget.refresh();
}

function ijsbergedit_insertimage()
{
	if(focussedEditableElementId == null)
	{
		alert("Please, select a spot to insert diacritical.");
	}
	else
	{
		var imagePosition = 'plain';
		var imagePositionOptions = document.forms['imageSelectForm'].elements['imagePosition'];
		for(var i = 0; i < imagePositionOptions.length; i++)
		{
//				alert(imagePositionOptions[i].value);
			if(imagePositionOptions[i].checked)
			{
				imagePosition = imagePositionOptions[i].value;
			}
		}
		var imgElement = document.createElement('img');
		imgElement.src = document.getElementById('imageSelectBox').options[document.getElementById('imageSelectBox').selectedIndex].value;
		imgElement.className = 'content_image_' + imagePosition;
		insertObjectAtCursor(focussedEditableElementId, imgElement);

	/*		insertObjectAtCursor(focussedEditableElementId,
				'<img src="' +
				document.getElementById('imageSelectBox').options.value +
				'" class="content_image_' + imagePosition + '">');
*/
/*		try
		{

			var textRange = document.selection.createRange();
			if (textRange.text == '')
			{
				alert('Select a part of the text to act as image location');
				return false;
			}
			document.execCommand('InsertImage', false, document.getElementById('imageSelectBox').options.value);

			if(typeof textRange.parentElement != 'undefined' && textRange.parentElement().tagName == 'IMG')
			{
				if(imagePosition == 'left' || imagePosition == 'right')
				{
					alert('Image positioned to ' + imagePosition + ' by css. Save article and reload page to see effect.');
				}
				textRange.parentElement()['class'] = 'content_image_' + imagePosition;
			}
			return false;
		}
		catch(e)
		{
			alert(e.message);
			raise(e);
		}   */
	}
}

function ijsbergedit_image(event)
{
	var currentPos = getMousePositionInWindow(event);
	try
	{
		widgetengine.deployWidget(new WindowWidget('window1','select image', 250 , 180, '/cms/ajax/selectimage.jsp'), currentPos.x, currentPos.y);
	}
	catch(e)
	{
		alert(e.message);
	}
}

function ijsbergedit_diacritical(event)
{
	var currentPos = getMousePositionInWindow(event);
	try
	{
		widgetengine.deployWidget(new WindowWidget('window2','choose symbol', 400, 200, '/cms/ajax/diacr_html_chars.jsp', 'loading...', true), currentPos.x, currentPos.y);
	}
	catch(e)
	{
		alert(e.message);
	}
}

function ijsbergedit_insertdiacritical(diacritical)
{
	if(focussedEditableElementId == null)
	{
		alert("Please, select a spot to insert diacritical.");
	}
	else
	{
		insertObjectAtCursor(focussedEditableElementId, diacritical);
	}
}



function insertObjectAtCursor(elementId, content)
{
	var element = document.getElementById(elementId);
	if (document.selection)
	{
		element.focus();
		var textRange = document.selection.createRange();
//		textRange.text = content;
		if(content.nodeName)
		{
			var node = document.createElement('test');
			node.appendChild(content);
			textRange.pasteHTML(node.innerHTML);
		}
		else
		{
			textRange.text = content;
		}

		element.focus();
	}
	else if (window.getSelection)
	{
		element.focus();

		var selectionObject = window.getSelection();

		var range = document.createRange();
		range.setStart(selectionObject.anchorNode,(selectionObject.anchorOffset));
		range.setEnd(selectionObject.focusNode,(selectionObject.focusOffset));
		selectionObject.addRange(range);

		range.deleteContents();

		var node;
		if(content.nodeName)
		{
			node = content;
		}
		else
		{
			node = document.createTextNode(content);
		}

		range.insertNode(node);
		selectionObject.extend(node, (content.length));
		selectionObject.collapseToEnd();
	}
	else if (element.selectionStart || element.selectionStart == '0')
	{
		element.focus();
		var selectionStart = element.selectionStart;
		var selectionEnd = element.selectionEnd;
		//TODO use range instead
		element.innerHTML = element.innerHTML.substring(0, selectionStart)
				+ content + element.innerHTML.substring(selectionEnd, element.innerHTML.length);
		element.focus();
		element.selectionStart = selectionStart + content.length;
		element.selectionEnd = selectionStart + content.length;
	}
	else
	{
		element.focus();
		element.innerHTML += content;
		element.focus();
	}
}


//TODO clean up drag window code
N = (document.all) ? 0 : 1;
var ijsberg_ob;
function MD(o){ijsberg_ob=o.style;X=event.offsetX;Y=event.offsetY}
function MM(e){if(ijsberg_ob){ijsberg_ob.posLeft=event.clientX-X+document.body.scrollLeft;ijsberg_ob.pixelTop=event.clientY-Y+document.body.scrollTop;return false}}
function MU(){ijsberg_ob=null}
if(N){document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP)}

document.onmousemove = MM;
document.onmouseup = MU;
/*
function tdiv_focus(i) {
	if (window.event.srcElement.id.charAt(0)==("c"+i)) {
		var o = document.getElementById('t'+i);
		o.focus();
		if (o.createTextRange) {
    		var r = o.createTextRange();
	    	r.collapse(false);
	  	}
	}
}
*/
/*
function wndwsize() {
}
*/

ijsbergsetup_is_done = false;

/*
function ijsbergedit_isEditableDiv(o) {
	if ((o.tagName)&&(o.tagName == "DIV")) {
		for (var i = 0; i < editableDivIds.length; i++) {
			if (o.id == editableDivIds[i]) {
				o.contentEditable = "true";
				return true;
			}
		}
	}
	return false
}


function ijsbergedit_recursiveMakeSelectable(node) {

	if (!ijsbergedit_isEditableDiv(node)) {
		if (node.unselectable) {
			node.unselectable = "off";
		}
		if (node.childNodes) {
			for (var i = 0; i < node.childNodes.length; i++) {
				ijsbergedit_recursiveMakeSelectable(node.childNodes(i));
			}
		}
	}
}
*/

// SETUP FUNCTION
/*
function ijsberg_setupedit(icopath,editables) {


	ijsbergedit_icopath = icopath;

	// make sure setup is done only once
	if (ijsbergsetup_is_done) {
		return;
	}


	editableDivIds = editables;






	ijsbergsetup_is_done = true;

	// FIX SCROLLBAR USE
	document.body.style.overflow = 'hidden';
	document.body.scroll = "no"

	// CREATE DIV ELEMENT WITH CURRENT CONTENT OF BODY
	divelement = document.createElement("DIV");
	divelement.id = "maindiv";

		divelement.style.width = "100%";
	divelement.style.height = "100%";
	divelement.style.position = "absolute";
	divelement.style.top = "0px";
	divelement.style.left = "0px";
	divelement.style.zIndex = "100";
	divelement.style.overflowY = "scroll";


	divelement.innerHTML = ""; //document.body.innerHTML;

	// SETUP TOOLBAR CONTENT HTML

	ijsbergtoolbar_prefix = "<div id=\"editdivshadow\" style=\"position:absolute;top:0px;left:2px;width:292px;height:41px;background-color:#222;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius=4);\">&nbsp;</div>";
	ijsbergtoolbar_prefix += "<div id=\"editdivwindow\" UNSELECTABLE=on style=\"position:absolute;top:1px;left:1px;background-color:#E0E0E0;border:solid 1px #333333;border-top:solid 1px #FFFFFF;border-left:solid 1px #FFFFFF;padding:0px;padding-left:0px;margin:0px;\"><table UNSELECTABLE=on cellspacing=\"0\" cellpadding=\"0\"><tr><td onmousedown=\"MD(editdiv);\" UNSELECTABLE=on style=\"padding:1px;padding-left:3px;background-color:#003399;font-weight:bold;font-size:11px;\" CONTENTEDITABLE=\"false\" ><p style=\"cursor:default;color:#E0E0E0;\">IJsberg Toolbar</P></td></tr><tr><td style=\"padding:4px;padding-top:0px;padding-bottom:1px;\">";
	ijsbergtoolbar_content = "";
	ijsberttoolbar_appendix = "</td></tr></table></div>"

	// toolbar functions
	function ijsberg_toolbar_sep() { ijsbergtoolbar_content += "<img TABINDEX=\"-1\" UNSELECTABLE=on src=\""+ijsbergedit_icopath + "sep.gif\" class=\"toolbarsep\" border=0>"; }
	function ijsberg_toolbar_button(img,act,alt,tip) { ijsbergtoolbar_content += "<img TABINDEX=\"-1\" UNSELECTABLE=on src=\""+img+"\" class=\"button0\" onmouseover=\"className='button1';\"  onmouseout=\"className='button0';\" onclick=\""+act+"\" alt=\""+alt+"\" title=\""+tip+"\">";}


	// toolbar buttons
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_save.gif","ijsbergedit_save();","Save","Submit Changes");
	ijsberg_toolbar_sep();
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_cut.gif","ijsbergedit_cut();","CUT","Cut CTRL+X");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_copy.gif","ijsbergedit_copy();","COPY","Copy CTRL+C");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_paste.gif","ijsbergedit_paste();","PASTE","Paste CTRL+V");
	ijsberg_toolbar_sep();
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_b.gif","ijsbergedit_bold();","B","Bold CTRL+B");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_i.gif","ijsbergedit_italic();","I","Italic CTRL+I");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_u.gif","ijsbergedit_underline();","U","Underline CTRL+U");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_s.gif","ijsbergedit_strike();","S","Strikethrough");
	ijsberg_toolbar_sep();
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_alignl.gif","ijsbergedit_alignleft();","Left","Align Left");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_alignc.gif","ijsbergedit_aligncenter();","Centre","Align Center");
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_alignr.gif","ijsbergedit_alignright();","Right","Align Right");
	ijsberg_toolbar_sep();
	ijsberg_toolbar_button(ijsbergedit_icopath + "ico_url.gif","ijsbergedit_link();","Link","Add Hyperlink");




	// CREATE TOOLBAR DIV
	editdivelement = document.createElement("DIV");
	editdivelement.id = "editdiv";

	editdivelement.style.position = 'absolute';
	editdivelement.style.padding = "0px";
	editdivelement.style.margin = "0px";
	editdivelement.style.zIndex = "201";
	editdivelement.style.left = "100px";
	editdivelement.style.top = "100px";

	editdivelement.innerHTML = ijsbergtoolbar_prefix + ijsbergtoolbar_content + ijsberttoolbar_appendix;


	// APPEND ALL CREATED ELEMENTS AND DELETE PREVIOUS BODY CONTENT

	document.body.appendChild(divelement);
	document.body.appendChild(editdivelement);

	// delete all old body content:
	for (var i = document.body.childNodes.length-3; i >= 0; i--) {
		var orgid = document.body.childNodes(i).id

		tnode = document.createElement("span");
		divelement.appendChild( tnode );
		document.body.childNodes(i).swapNode(tnode); // removeChild(document.body.childNodes(i));
//		document.body.childNodes(i).id = undefined;
//		divelement.childNodes(i).id = orgid;


	}







	for (var k = 0; k < document.childNodes.length; k++) {
		ijsbergedit_recursiveMakeSelectable(document.childNodes(k));
	}



}
*/

var supportedUnicodeChars = new Array('A0','A1','A2','A3','A4','A5','A6','A7','A8','A9','AA','AB','AC','AD','AE','AF','B0','B1','B2','B3','B4','B5','B6','B7','B8','B9','BA','BB','BC','BD','BE','BF','C0','C1','C2','C3','C4','C5','C6','C7','C8','C9','CA','CB','CC','CD','CE','CF','D0','D1','D2','D3','D4','D5','D6','D7','D8','D9','DA','DB','DC','DD','DE','DF','E0','E1','E2','E3','E4','E5','E6','E7','E8','E9','EA','EB','EC','ED','EE','EF','F0','F1','F2','F3','F4','F5','F6','F7','F8','F9','FA','FB','FC','FD','FE','FF','0192','0391','0392','0393','0394','0395','0396','0397','0398','0399','039A','039B','039C','039D','039E','039F','03A0','03A1','03A3','03A4','03A5','03A6','03A7','03A8','03A9','03B1','03B2','03B3','03B4','03B5','03B6','03B7','03B8','03B9','03BA','03BB','03BC','03BD','03BE','03BF','03C0','03C1','03C2','03C3','03C4','03C5','03C6','03C7','03C8','03C9','03D1','03D2','03D6','2022','2026','2032','2033','203E','2044','2118','2111','211C','2122','2135','2190','2191','2192','2193','2194','21B5','21D0','21D1','21D2','21D3','21D4','2200','2202','2203','2205','2207','2208','2209','220B','220F','2211','2212','2217','221A','221D','221E','2220','2227','2228','2229','222A','222B','2234','223C','2245','2248','2260','2261','2264','2265','2282','2283','2284','2286','2287','2295','2297','22A5','22C5','2308','2309','230A','230B','2329','232A','25CA','2660','2663','2665','2666','0022','0026','003C','003E','0152','0153','0160','0161','0178','02C6','02DC','2002','2003','2009','200C','200D','200E','200F','2013','2014','2018','2019','201A','201C','201D','201E','2020','2021','2030','2039','203A','20AC');
var unicodeHTMLchars = new Array('nbsp','iexcl','cent','pound','curren','yen','brvbar','sect','uml','copy','ordf','laquo','not','shy','reg','macr','deg','plusmn','sup2','sup3','acute','micro','para','middot','cedil','sup1','ordm','raquo','frac14','frac12','frac34','iquest','Agrave','Aacute','Acirc','Atilde','Auml','Aring','AElig','Ccedil','Egrave','Eacute','Ecirc','Euml','Igrave','Iacute','Icirc','Iuml','ETH','Ntilde','Ograve','Oacute','Ocirc','Otilde','Ouml','times','Oslash','Ugrave','Uacute','Ucirc','Uuml','Yacute','THORN','szlig','agrave','aacute','acirc','atilde','auml','aring','aelig','ccedil','egrave','eacute','ecirc','euml','igrave','iacute','icirc','iuml','eth','ntilde','ograve','oacute','ocirc','otilde','ouml','divide','oslash','ugrave','uacute','ucirc','uuml','yacute','thorn','yuml','fnof ','Alpha','Beta','Gamma','Delta','Epsilon','Zeta','Eta','Theta','Iota','Kappa','Lambda','Mu','Nu','Xi','Omicron','Pi','Rho','Sigma','Tau','Upsilon','Phi','Chi','Psi','Omega','alpha','beta','gamma','delta','epsilon','zeta','eta','theta','iota','kappa','lambda','mu','nu','xi','omicron','pi','rho','sigmaf','sigma','tau','upsilon','phi','chi','psi','omega','thetasym','upsih','piv','bull','hellip','prime','Prime','oline','frasl','weierp','image','real','trade','alefsym','larr','uarr','rarr','darr','harr','crarr','lArr','uArr','rArr','dArr','hArr','forall','part','exist','empty','nabla','isin','notin','ni','prod','sum','minus','lowast','radic','prop','infin','ang','and','or','cap','cup','int','there4','sim','cong','asymp','ne','equiv','le','ge','sub','sup','nsub','sube','supe','oplus','otimes','perp','sdot','lceil','rceil','lfloor','rfloor','lang','rang','loz','spades','clubs','hearts','diams','quot','amp','lt','gt','OElig','oelig','Scaron','scaron','Yuml','circ','tilde','ensp','emsp','thinsp','zwnj','zwj','lrm','rlm','ndash','mdash','lsquo','rsquo','sbquo','ldquo','rdquo','bdquo','dagger','Dagger','permil','lsaquo','rsaquo','euro');

function initializeDiacriticalChars()
{
	for(var i = 0; i < supportedUnicodeChars.length; i++)
	{
		supportedUnicodeChars[i] = '%' + (supportedUnicodeChars[i].length > 2 ? 'u' : '') + supportedUnicodeChars[i];
		unicodeHTMLchars[i] = '%26' + unicodeHTMLchars[i] + ';';
	}
}

function translateUnicodeToHTMLChar(text)
{
	var size = supportedUnicodeChars.length;
	for(var i = 0; i < size; i++)
	{
		while(text.indexOf(supportedUnicodeChars[i]) != -1)
		{
			text = text.replace(supportedUnicodeChars[i], unicodeHTMLchars[i]);
		}
	}
	return text;
}

initializeDiacriticalChars();

