function open_xhtml_editor(data_id) {
	window.open("xhtml_editor.php?data_id="+data_id,"xhtmleditor","height=400,width=700");
}
function get_position(node,position) {
	var i=0;
	for(i=0;i<node.childNodes.length;i++) {
		if(node.childNodes[i].nodeType == 1) {
			position = get_position(node.childNodes[i],position);
		}
		else if(node.childNodes[i].nodeType == 3) {
			if(position == "start_position") {
				if(node.childNodes[i].data.match(/start_position/)) {
					node.childNodes[i].data = node.childNodes[i].data.replace(/\[start_position\]/,"");
					position = node.childNodes[i];
				}
			}
			else if(position == "end_position") {
				if(node.childNodes[i].data.match(/end_position/)) {
					node.childNodes[i].data = node.childNodes[i].data.replace(/\[end_position\]/,"");
					position = node.childNodes[i];
				}
			}
			else if(position == "start_insert_position") {
				if(node.childNodes[i].data.match(/start_insert_position/)) {
					position = node.childNodes[i];
				}
			}
			else if(position == "end_insert_position") {
				if(node.childNodes[i].data.match(/end_insert_position/)) {
					position = node.childNodes[i];
				}
			}
		}
	}
	return position;
}
function get_parent(node) {
	if(node.parentNode.nodeName == "BODY") {
		return 0;
	}
	else if(node.parentNode.id == "input_content") {
		return node;
	}
	else {
		return get_parent(node.parentNode);
	}
}
function format_node(node,paragraph) {
	var node = get_parent(node);
	var new_node = document.createElement(paragraph);
	var length = node.childNodes.length;
	for(i=0;i<length;i++) {
		if(node.childNodes[i]) {
			if(node.childNodes[i].nodeType == 3) {
				new_node.appendChild(node.childNodes[i].cloneNode(true));
			}
			else if(node.childNodes[i].nodeType == 1) {
				new_node.appendChild(node.childNodes[i].cloneNode(true));
			}
		}
	}
	if(length == 0) {
		new_node.appendChild(document.createTextNode(" "));
	}
	document.getElementById("input_content").replaceChild(new_node,node);
	if(length == 0) {
		var selection = document.selection;
		var range = selection.createRange();
		range.moveStart("character",-1);
		range.moveEnd("character",-1);
		range.select();
		document.getElementById("input_content").focus();
	}
}
function format_paragraph(paragraph) {
	document.getElementById("input_content").focus();
	var selection = document.selection;
	var range = selection.createRange();
	var node = range.parentElement();
	if(node.id == "input_content") {
		text_length = range.text.length;
		range.moveEnd("character",-text_length+1);
		range.text = "[start_position]"+range.text;
		range.move("character",text_length-1);
		range.text = range.text+"[end_position]";
		start_position = get_position(node,"start_position");
		end_position = get_position(node,"end_position");
		start_position = get_parent(start_position);
		end_position = get_parent(end_position);
		var i = 0;
		while(start_position != start_position.parentNode.childNodes[i]) {
			i++;
		}
		while(document.getElementById("input_content").childNodes[i] != end_position) {
			format_node(document.getElementById("input_content").childNodes[i],paragraph);
			i++;
		}
		format_node(document.getElementById("input_content").childNodes[i],paragraph);
	}
	else if(get_parent(node) != 0) {
		format_node(node,paragraph);
	}
}
function show_input() {
	alert(document.getElementById("input_content").innerHTML);
}
function format_text(paragraph) {
	switch(paragraph) {
		case "bold": var style = "font-weight: bold;"; break;
		case "italic": var style = "font-style: italic"; break;
	}
	document.getElementById("input_content").focus();
	var selection = document.selection;
	var range = selection.createRange();
	var duplicate = selection.createRange();
	var node = range.parentElement();
	if(node.id == "input_content") {
		text_length = range.text.length;
		range.setEndPoint("EndToStart",duplicate);
		range.text = "[start_insert_position]"+range.text;
		range.setEndPoint("EndtoEnd",duplicate);
		range.setEndPoint("StartToEnd",duplicate);
		range.text = range.text+"[end_insert_position]";
		start_position = get_position(node,"start_insert_position");
		end_position = get_position(node,"end_insert_position");
		start_position = get_parent(start_position);
		end_position = get_parent(end_position);
		start_position.appendChild(document.createTextNode("[end_span_position]"));
		end_position.insertBefore(document.createTextNode("[start_span_position]"),end_position.childNodes[0]);
		var i = 0;
		while(start_position != start_position.parentNode.childNodes[i]) {
			i++;
		}
		i++;
		while(document.getElementById("input_content").childNodes[i] != end_position) {
			if(document.getElementById("input_content").childNodes[i].childNodes.length == 1 && document.getElementById("input_content").childNodes[i].childNodes[0].nodeType == 3) {
				document.getElementById("input_content").childNodes[i].appendChild(document.createTextNode("[end_span_position]"));
				document.getElementById("input_content").childNodes[i].insertBefore(document.createTextNode("[start_span_position]"),document.getElementById("input_content").childNodes[i].childNodes[0]);
			}
			i++;
		}
		var content = document.getElementById("input_content").innerHTML;
		content = content.replace(/\[start_insert_position\]/g,"<span style=\""+style+"\">");
		content = content.replace(/\[end_insert_position\]/g,"</span>");
		content = content.replace(/\[end_span_position\]/g,"</span>");
		content = content.replace(/\[start_span_position\]/g,"<span style=\""+style+"\">");
		document.getElementById("input_content").innerHTML = content;
		//document.getElementById("input_content").innerHTML = document.getElementById("input_content").innerHTML.replace(/\[start_insert_position\]/g,"<span style=\""+style+"\">");
		//document.getElementById("input_content").innerHTML = document.getElementById("input_content").innerHTML.replace(/\[end_insert_position\]/g,"</span>");
		//document.getElementById("input_content").innerHTML = document.getElementById("input_content").innerHTML.replace(/\[end_span_position\]/g,"</span>");
		//document.getElementById("input_content").innerHTML = document.getElementById("input_content").innerHTML.replace(/\[start_span_position\]/g,"<span style=\""+style+"\">");
	}
	else {
		text = range.text;
		range.text = "[insert_position]";
		document.getElementById("input_content").innerHTML = document.getElementById("input_content").innerHTML.replace(/\[insert_position\]/,"<span style=\""+style+"\">"+text+"</span>");
	}
}
function insert_picture(link) {
	opener.document.getElementById("input_content").focus();
	var selection = opener.document.selection;
	var range = selection.createRange();
	range.text = "[replace]"+range.text;
	opener.document.getElementById("input_content").innerHTML = opener.document.getElementById("input_content").innerHTML.replace(/\[replace\]/g,"<img alt=\""+document.getElementsByName("alt")[0].value+"\" src=\""+document.getElementsByName("src")[0].value+"\" />");
}
