/**************************************************************

Newsletter Development and Publishing System 1

Script          : client/wysiwyg/wysiwyg.js
Developer       : Ron Hook
Company         : Studio 55
web address     : http://www.studio55.com.au
email address   : studio@studio55.com.au

Last modified   : 22 March 2006
Modified By     : Ron Hook

**************************************************************/

//alert("wysiwyg loaded");

unbold_image = new Image();
unbold_image.src = websource + "classes/wysiwyg/images/wysiwyg_unbold.gif";
bold_image = new Image();
bold_image.src = websource + "classes/wysiwyg/images/wysiwyg_bold.gif";

unitalic_image = new Image();
unitalic_image.src = websource + "classes/wysiwyg/images/wysiwyg_unitalic.gif";
italic_image = new Image();
italic_image.src = websource + "classes/wysiwyg/images/wysiwyg_italic.gif";

unlined_image = new Image();
unlined_image.src = websource + "classes/wysiwyg/images/wysiwyg_unlined.gif";
lined_image = new Image();
lined_image.src = websource + "classes/wysiwyg/images/wysiwyg_lined.gif";

unbullet_image = new Image();
unbullet_image.src = websource + "classes/wysiwyg/images/wysiwyg_unbullet.gif";
bullet_image = new Image();
bullet_image.src = websource + "classes/wysiwyg/images/wysiwyg_bullet.gif";

link_image = new Image();
link_image.src = websource + "classes/wysiwyg/images/link_grey.gif";
link_over = new Image();
link_over.src = websource + "classes/wysiwyg/images/link.gif";

delete_image = new Image();
delete_image.src = websource + "classes/wysiwyg/images/delete.gif";
delete_over = new Image();
delete_over.src = websource + "classes/wysiwyg/images/delete_over.gif";

ol_list_image = new Image();
ol_list_image.src = websource + "classes/wysiwyg/images/list.gif";
ol_list_grey = new Image();
ol_list_grey.src = websource + "classes/wysiwyg/images/list_grey.gif";

indent_image = new Image();
indent_image.src = websource + "classes/wysiwyg/images/indent.gif";
indent_grey = new Image();
indent_grey.src = websource + "classes/wysiwyg/images/indent_grey.gif";

outdent_image = new Image();
outdent_image.src = websource + "classes/wysiwyg/images/outdent.gif";
outdent_grey = new Image();
outdent_grey.src = websource + "classes/wysiwyg/images/outdent_grey.gif";

left_image = new Image();
left_image.src = websource + "classes/wysiwyg/images/left.gif";
left_grey = new Image();
left_grey.src = websource + "classes/wysiwyg/images/left_grey.gif";

center_image = new Image();
center_image.src = websource + "classes/wysiwyg/images/center.gif";
center_grey = new Image();
center_grey.src = websource + "classes/wysiwyg/images/center_grey.gif";

strikethrough_image = new Image();
strikethrough_image.src = websource + "classes/wysiwyg/images/strikethrough.gif";
strikethrough_grey = new Image();
strikethrough_grey.src = websource + "classes/wysiwyg/images/strikethrough_grey.gif";

right_image = new Image();
right_image.src = websource + "classes/wysiwyg/images/right.gif";
right_grey = new Image();
right_grey.src = websource + "classes/wysiwyg/images/right_grey.gif";

line_image = new Image();
line_image.src = websource + "classes/wysiwyg/images/line.gif";
line_grey = new Image();
line_grey.src = websource + "classes/wysiwyg/images/line_grey.gif";

text_range = false;

function init(){
	if(document.getElementById("HTML_text")){
		if (document.frames){
			if(document.frames["HTML_iframe"]){
				document.frames["HTML_iframe"].document.designMode = "on";
			}
		}else{
			if(document.getElementById("HTML_iframe")){
				document.getElementById("HTML_iframe").contentDocument.designMode = "on";
				document.getElementById("HTML_iframe").contentDocument.execCommand("styleWithCSS", false, false);
				//document.getElementById(tgt).contentDocument.execCommand("styleWithCSS", false, false);
			} 
		}
		if(document.attachEvent && document.frames["HTML_iframe"]){
			try{
				document.frames["HTML_iframe"].document.attachEvent('onmouseup', parent.determine_selection);
				document.frames["HTML_iframe"].document.attachEvent('onkeyup', parent.key_up);
			}
			catch(e){
				document.frames["HTML_iframe"].document.attachEvent('onmouseup', function(ef){determine_selection()});
				document.frames["HTML_iframe"].document.attachEvent('onkeyup', function(ev){key_up()});
			}
		}
	}
	if(document.getElementById("issues")){
		if(!document.frames && document.getElementById("HTML_iframe")){
			document.getElementById("HTML_iframe").contentDocument.execCommand("styleWithCSS", false, false);
		}
		//load_page('issues', 'request.php?tgtPage=issue_list&newsletter_id=' + newsletter_id);
	}
}

function remove_row(){
	if(selected_tr){
		if(confirm("Do you wish to remove this row?")){
			if(document.all){
				selected_tr.removeNode(true);
			}else{
				//alert_test("removing row");
				selected_tr.parentNode.removeChild(selected_tr);
			}
		}
	}
}

function remove_table(){
	if(selected_table){
		if(confirm("Do you wish to remove this table?")){
			if(document.all){
				selected_table.removeNode(true);
			}else{
				//alert_test("removing table");
				selected_table.parentNode.removeChild(selected_table);
			}
		}
	}
}

function modify_cell(){
	if(document.getElementById("cell_height").value == "" ){
		var cell_height = 0;
	}else{
		var cell_height = document.getElementById("cell_height").value;
	}
	if(document.getElementById("cell_width").value == ""){
		var cell_width = 0;
	}else{
		var cell_width = document.getElementById("cell_width").value;
	}
	if(selected_td){
		selected_td.setAttribute("height",cell_height);
		selected_td.setAttribute("width",cell_width);
		selected_td.setAttribute("vAlign",document.getElementById("cell_valign").value);
	}
}

function add_rows(){
	if(document.getElementById("new_rows").value == "" || document.getElementById("new_rows").value == 0){
		var new_rows = 1;
	}else{
		var new_rows = document.getElementById("new_rows").value;
	}
	
	if(selected_table){
		if(document.all){
			var cols = selected_table.getAttribute("cols");
			//alert_test(cols);
			for(var i=0; i<new_rows; i++){
				selected_table.insertRow()
			}
		}else{
			for(var i=0; i<new_rows; i++){
					
			}
		}
	}
}

function modify_table(){
	if(document.getElementById("cell_spacing_modify").value == ""){
		var cell_spacing = 0;
	}else{
		var cell_spacing = document.getElementById("cell_spacing_modify").value;
	}
	if(document.getElementById("cell_padding_modify").value == ""){
		var cell_padding = 0;
	}else{
		var cell_padding = document.getElementById("cell_padding_modify").value;
	}
	if(document.getElementById("table_border_modify").value == ""){
		var table_border = 0;
	}else{
		var table_border = document.getElementById("table_border_modify").value;
	}
	
	if(selected_table){
		selected_table.setAttribute("border", table_border);	
		selected_table.setAttribute("cellPadding", cell_padding);	
		selected_table.setAttribute("cellSpacing", cell_spacing);	
	}
}

function create_table(){
	if(document.getElementById("table_rows").value == "" || document.getElementById("table_rows").value == 0){
		var table_rows = 1;
	}else{
		var table_rows = document.getElementById("table_rows").value;
	}
	if(document.getElementById("table_columns").value == "" || document.getElementById("table_columns").value == 0){
		var table_columns = 1;
	}else{
		var table_columns = document.getElementById("table_columns").value;
	}
	if(document.getElementById("table_border").value == ""){
		var table_border = 0;
	}else{
		var table_border = document.getElementById("table_border").value;
	}
	if(document.getElementById("cell_spacing").value == "" ){
		var cell_spacing = 0;
	}else{
		var cell_spacing = document.getElementById("cell_spacing").value;
	}
	if(document.getElementById("cell_padding").value == ""){
		var cell_padding = 0;
	}else{
		var cell_padding = document.getElementById("cell_padding").value;
	}
	
	
	if(document.all){
		var range_new = document.frames["HTML_iframe"].document.selection.createRange();
		
		var table_html = "<table border=\"" + table_border + "\" cellspacing=\"" + cell_spacing + "\" cellpadding=\"" + cell_padding + "\" width=\"500\">";
			table_html += "<tbody>";
				for(var i=0; i<table_rows; i++){
					table_html += "<tr>";
						for(var j=0; j<table_columns; j++){
							table_html += "<td valign=\"top\"></td>";	
						}
					table_html += "<tr>";
				}
			table_html += "</tbody>";
		table_html += "</table>";
		
		//alert_test(table_html);
		//range_new.parentNode.replaceChild(range_new.extractContents(),new_table);
		text_range.pasteHTML(table_html);
	}else{
		var new_table = document.createElement("<table>");
		new_table.setAttribute("cellspacing", cell_spacing);
		new_table.setAttribute("cellpadding", cell_padding);
		new_table.setAttribute("border", table_border);
		new_table.setAttribute("width", "500");
		
		var new_tbody = document.createElement("<tbody>");
		new_table.appendChild(new_tbody);
	
		for(var i=0; i<table_rows; i++){
			var new_tr = document.createElement("<tr>");
			for(var j=0; j<table_columns; j++){
				var new_td = document.createElement("<td>");
				new_td.setAttribute("valign", "top");
				//new_td.setAttribute("width", "5%");
				new_tr.appendChild(new_td);
				//var new_text = document.createTextNode(" ");
				new_td.innerHTML = ("&nbsp;");
			}
			new_tbody.appendChild(new_tr);
		}
		range.deleteContents();
		range.insertNode(new_table);
		range.detach();
	}
}

function key_up(){
	determine_selection();
	

	if(display_invisibles){
		if(document.all){
			var range_new = document.frames["HTML_iframe"].document.selection.createRange();;
			var rangeCopy = range_new.duplicate();
			var start = 0 - rangeCopy.moveStart('character', -100000);
			var end = start + range_new.text.length;
		}else{
			/*
			sel = document.getElementById("HTML_iframe").contentWindow.getSelection();
			selection = sel.anchorNode.parentNode.nodeName;
			sel_parent = sel.nodeName;
			*/
			//var selection = document.getElementById("HTML_iframe").contentWindow.document.body.getSelection();
			//var range = document.getElementById("HTML_iframe").contentWindow.document.createRange();
			//var input = document.getElementById("HTML_iframe").contentWindow;
			//var selectionStart = document.getElementById("HTML_iframe").contentWindow.document.body.selectionStart;
			//var selectionEnd = document.getElementById("HTML_iframe").contentWindow.selectionEnd;
			
			//alert_test(selection.selectionStart);
		}
		if(document.all){
		invisibles();	
			rangeCopy.collapse(true);
			rangeCopy.moveStart("character",start);
			rangeCopy.moveEnd("character",end-start);
			rangeCopy.select();
		}else{
			//selection.collapseToStart()
			//sel.
			//document.getElementById("HTML_iframe").contentWindow.setSelectionRange(20, 22);
		}
	}
}

var attempts = 0;
function add_event(){
	try{
		//document.getElementById("HTML_iframe").document.body.attachEvent('onmouseup', parent.determine_selection);
		//document.frames["HTML_iframe"].document.attachEvent('onmouseup', function(ef){alert('hi')});
		document.frames["HTML_iframe"].document.attachEvent('onmouseup', function(ef){determine_selection()});
		//alert("success");
	}
	catch(e){
		//alert(e.message + "\n" + document.getElementById("HTML_iframe").document.frames["HTML_iframe"].attachEvent('onmouseup', function(event){alert('hi')}));
		if(attempts++ < 2){
			setTimeout("add_event()", 1000);
		}
	}
}

//function set_form_text(tgt){
function set_form_text(){
	if(document.frames){
		txt = document.frames["HTML_iframe"].document.body.innerHTML;
	}else{
		txt = document.getElementById("HTML_iframe").contentWindow.document.body.innerHTML;
	}

	html_chars = Array(Array("•", "&#149;"), Array("‘", "&lsquo;"), Array("’", "&rsquo;"), Array("%5C", "/"), Array("…", "..."), 
		Array("+", "%2B"), Array("“", "\""), Array("”", "\""), Array("–", "\""));
	
	var new_text = txt;
	
	for(var i=0; i<html_chars.length; i++){
		var start = txt.indexOf(html_chars[i][0]);
		//alert(html_chars[i][0] + ", " + start);
		
		while(start != -1){
			new_text = new_text.substring(0, start) + html_chars[i][1] + new_text.substring(start + html_chars[i][0].length, new_text.length);
			start = new_text.indexOf(html_chars[i][0]);
		}
	}
	
	return new_text;	
	//document.getElementById(tgt).value = new_text;
	return true;
}

function do_exec(tgt, cmd, display, val){
	//alert_test(cmd + " = " + val + ", " + display);

	if(document.frames){
		if(cmd == "fontsize"){
			document.frames[tgt].document.execCommand("fontsize", false, val);
		}else{
			document.frames[tgt].document.execCommand(cmd, display, val);
		}
	}else{
		document.getElementById(tgt).contentDocument.execCommand("styleWithCSS", false, false);
		document.getElementById(tgt).contentDocument.execCommand(cmd, display, val);
	}
}

display_invisibles = false;

html_breaks = Array(
	Array("</p>", "[p]"),
	Array("</P>", "[p]"),
	Array("<br>", "[b]"),
	Array("<BR>", "[b]"),
	Array("</div>", "[b]"),
	Array("</DIV>", "[b]")
);

function hide_invisibles(){
	if(document.frames){
		var new_text = document.frames["HTML_iframe"].document.body.innerHTML;
	}else{
		var new_text = document.getElementById("HTML_iframe").contentWindow.document.body.innerHTML;
	}
	//alert_test(html_chars);

	for(var i=0; i<html_breaks.length; i++){
		var start = new_text.lastIndexOf(html_breaks[i][1]);
		//alert_test(start);
		
		while(start != -1){
			//if(new_text.substr(start+  html_chars[i][0].length, html_chars[i][1].length) != html_chars[i][1]){
				new_text = new_text.substring(0, start) + new_text.substring(start + html_breaks[i][1].length, new_text.length);
			//}
			start = new_text.lastIndexOf(html_breaks[i][1], start + html_breaks[i][1].length);
			//alert_test(new_text);
		}
	}
		//alert_test(new_text);
	
	if(document.frames){
		document.frames["HTML_iframe"].document.body.innerHTML = new_text;
	}else{
		document.getElementById("HTML_iframe").contentWindow.document.body.innerHTML = new_text;
	}
}

function show_invisibles(){
	if(display_invisibles){
		if(document.frames){
			var new_text = document.frames["HTML_iframe"].document.body.innerHTML;
		}else{
			var new_text = document.getElementById("HTML_iframe").contentWindow.document.body.innerHTML;
		}
		
		for(var i=0; i<html_breaks.length; i++){
			var start = new_text.indexOf(html_breaks[i][0]);
			//alert_test(start);
			//alert_test(new_text.substring(start, start+1));
			
			while(start != -1){
				//alert_test(new_text.substr(start +  html_chars[i][0].length, html_chars[i][1].length));
				//if(new_text.substr(start+  html_chars[i][0].length, html_chars[i][1].length) != html_chars[i][1]){
					new_text = new_text.substring(0, start) + html_breaks[i][1] + new_text.substring(start, new_text.length + html_breaks[i][1].length);
				//}
				start = new_text.indexOf(html_breaks[i][0], start + html_breaks[i][0].length);
				//alert_test(new_text);
			}
		}
		
		if(document.frames){
			document.frames["HTML_iframe"].document.body.innerHTML = new_text;
		}else{
			document.getElementById("HTML_iframe").contentWindow.document.body.innerHTML = new_text;
		}
	}
}

function invisibles(){
	hide_invisibles();
	show_invisibles();
}

function show_visuals(){
	display_invisibles = display_invisibles == false;
	if(display_invisibles){
		document.getElementById("invisibles_button").value = "Hide Invisibles";
	}else{
		document.getElementById("invisibles_button").value = "Show Invisibles";
	}
	invisibles();
}

function setStyle(cmds){
	
	/*******************************************
	*
	*	arguments[1] = seperator
	*
	*******************************************/

	if(arguments[1]){
		var seperator = arguments[1];
	}else{
		var seperator = ",";
	}
	do_exec("HTML_iframe", "removeformat", false, ";");
	
	if(cmds != ""){
		commands = cmds.split(seperator);
		
		for(var i=0; i<commands.length; i++){
			do_command = commands[i].split("|");
			do_exec("HTML_iframe", do_command[0], false, do_command[1]);
		}
	}
}

function setbgCol(tgt){
	if(document.frames){
		document.frames[tgt].document.execCommand("BackColor", false, ";");
	}else{
		document.getElementById(tgt).contentDocument.execCommand("BackColor", false, ";");
	}
}

function setImage(tgt){
	image_window = window.open(website + "classes/wysiwyg/add_image.php", "add_image", "height=300, width=300, toolbar=yes");
}    

//function insertImage(val, tgt){
function insertImage(val, tgt){
	 
	if(document.frames){
		document.frames[tgt].document.execCommand("InsertImage", false, val);
	}else{
		document.getElementById(tgt).contentDocument.execCommand("InsertImage", false, val);
	}
}    

function setNormal(tgt){
	if(document.frames){
		document.frames[tgt].document.execCommand("removeformat", false, ";");
	}else{
		document.getElementById(tgt).contentDocument.execCommand("removeformat", false, ";");
	}
}

function setSize(tgt, fSize){
	if(document.frames){
		document.frames[tgt].document.execCommand("fontsize", false, fSize);
	}else{
		document.getElementById(tgt).contentDocument.execCommand("fontsize", false, fSize);
	}
}

function setColor(tgt, fCol){
	if(document.frames){
		document.frames[tgt].document.execCommand("forecolor", false, fCol);
	}else{
		document.getElementById(tgt).contentDocument.execCommand("forecolor", false, fCol);
	}
}

function swap_pic(tgt, pic){
	tgt.src = pic.src;
}

function setLink(){
	//alert(target_object.tagName);
	if(document.all){
		if(ie_parent){
			if(ie_parent.tagName.toUpperCase() == "A"){
				ie_parent.setAttribute("href", get_object_value("link_value"));
				
			}else if(target_object){
				document.frames["HTML_iframe"].document.execCommand("CreateLink", true, null);
			}else{
				//alert("hi" + range);
				new_link = "<a " +
					"href=\"" + get_object_value("link_value") + "\" " +
					"target=\"_blank\">" + text_range.text + "</a>";
				text_range.pasteHTML(new_link);
			}
		}else{
			document.frames["HTML_iframe"].document.execCommand("CreateLink", true, null);
		}
	}else{
		if(selection.toUpperCase() == "A"){
			sel.anchorNode.parentNode.href = get_object_value("link_value");
		}else{
			newNode = document.createElement("a");
			newNode.setAttribute("href", get_object_value("link_value"));
			range.surroundContents(newNode);
		}
	}
}

function unsetLink(){
	if(document.all){
		document.frames["HTML_iframe"].document.execCommand("unLink", false, null);
	}else{
		document.getElementById("HTML_iframe").contentDocument.execCommand("unLink", false, null);
	}
}    

function insert_image(){
	//document.getElementById("test_data").value = document.getElementById("pic_name").value;
	//alert("file_name = " + file_name );
	new_image = "<img " +
		"src=\"" + file_name + "\" " +
		"height=\"" + height + "\" " +
		"width=\"" + width + "\" " +
		"hspace=\"5\" " +
		"vspace=\"5\" " +
		"align=\"" + document.getElementById("image_align").value + "\" " +
		"alt=\"" + document.getElementById("image_alt").value + "\" " +
		"title=\"" + document.getElementById("image_title").value + "\" " +
		"border=\"0\">";
	
	if(document.all){
		//alert(new_image);
		text_range.pasteHTML(new_image);
	}else{
		//alert(file_name);
		//document.getElementById("link_value").value = range.parentNode.nodeType;
		//document.getElementById("HTML_iframe").contentDocument.execCommand('InsertImage', false, file_name);
		
		
		//range.parentNode.select();
		//document.getElementById("HTML_iframe").focus();
		//set_image_value("align", document.getElementById("image_align").value);

		range.deleteContents();
		newNode = document.createElement("img");
		 
		//newNode.appendChild(document.createTextNode(new_image));
		range.insertNode(newNode);
		newNode.setAttribute("src", file_name);
		newNode.setAttribute("align", document.getElementById("image_align").value);
		newNode.setAttribute("alt", document.getElementById("image_alt").value);
		newNode.setAttribute("title", document.getElementById("image_alt").value);
		newNode.setAttribute("border", 0);
		newNode.setAttribute("hspace", 5);
		newNode.setAttribute("vspace", 5);
		newNode.setAttribute("height", height);
		newNode.setAttribute("width", width);
		
		range.detach();
	}
}

function set_image_value(atr, val){
	//alert(val);
	
	if(document.all){
		//target_object = document.frames["HTML_iframe"].document.all[ref_index];
		//document.getElementById("test_data").value = target_object.tagName;
		if (target_object.tagName.toUpperCase() == "IMG"){
			if(atr == "alt"){
				target_object.setAttribute("alt", val);
			}else if(atr == "width"){
				target_object.style.width = val;
			}else if(atr == "height"){
				//alert(atr);
				target_object.style.height = val;
			}else{
				//alert(atr);
				target_object.setAttribute(atr, val);
			}
		}else if(range(0).tagName.toUpperCase() == "A"){
			//alert("i am a link");
		}
	}else{
		//sel = window.frames["HTML_iframe"].createRange();
		sel = window.frames["HTML_iframe"].getSelection();
		range = sel.getRangeAt(0)
		
		if(!sel.isCollapsed){
			range = sel.getRangeAt(0);
			img = range.startContainer.childNodes[range.startOffset];
			if (img.nodeName.toUpperCase() == "IMG"){
				if(atr == "alt"){
					//document.getElementById("link_value").value = img.nodeName;
					img.alt = val;
				}else if(atr == "title"){
					img.title = val;
				}else if(atr == "align"){
					img.align = val;
				}else if(atr == "height"){
					//if(!Number(val) || val > max_width){
						//alert("Value not accepted");
					//}else{
					if(img.style.width){
						
						img.style.height = val;
					}else{
						img.height = val;
					}
					//}
				}else if(atr == "width"){
					////if(img.align != 0){
						//ratio = img.width / val;
						//alert(img.getWidth());
						//if(img.style.width
						//img.align = val;
					//}else{
						
					//}
					//alert("hi " + img.style.width);
					if(img.style.width){
						
						img.style.width = val;
					}else{
						img.width = val;
					}
				}
			}
		}
	}
}

function insert_contact_field(field_name){
	new_contact_field = "[" + field_name + "]";
	//alert(new_contact_field);
	if(document.all){
		text_range.pasteHTML(new_contact_field);
	}else{
		if(range){
			range.deleteContents();
			newNode = document.createTextNode(new_contact_field);
			range.insertNode(newNode);
			//range.detach();
		}else{
			alert("Please select a place to insert field");
		}
	}
}

function submit_story_list(){
	//alert("test");
	var total = "";
	
	for(var i = 0; i < document.getElementById('story_list_count').value; i++){
		if(document.getElementById('story_insert_' + i)){
			if(document.getElementById('story_insert_' + i).checked){
				if(total !== ""){
					total += ",";
				}
				total += document.getElementById("story_insert_" + i).value;
				}
			}
		}

	if(total == ""){
		alert("Please select at least one story");
	}else{
		load_data('request.php','tgtPage=insert_story_list&id=' + total);
	}
	return false;
	
}

function insert_story_list(story_list){	
	new_story_list = story_list;
	if(document.all){
		text_range.pasteHTML(new_story_list);
	}else{
		if(range){
			range.deleteContents();
			newNode = document.createElement("div");
			newNode.innerHTML = new_story_list;
			range.insertNode(newNode);
			
			//range.detach();
		}else{
			alert("Please select a place to the story list");
		}
	}
}

function highlight_selection(){
	document.getElementById("test_data").value = document.getElementById("pic_name").value;
	new_image = "<img src=\"" + document.getElementById("pic_name").value + "\" border=\"0\">";
	
	if(document.all){
		text_range.pasteHTML(new_image);
	}else{
		
		range.deleteContents();
		newNode = document.createElement("img");
		 
		newNode.appendChild(document.createTextNode(new_image));
		//newNode = document.createTextNode(new_image);
		//newNode = new_image;
		range.insertNode(newNode);
		//range.innerHTML = new_image;
	}
}

function set_page_link(val){
	document.getElementById("link_type").value = "http://";
	document.getElementById('link_value').value = website + "index.php?story=" + val;
	document.getElementById("target_window").value = "_self";
}

target_object = false;
ie_parent = false;
selected_table = false;
selected_td = false;
selected_tr = false;

function determine_selection(){
	var href_value = "";
	var link_type = "";
	var display_link = "";
	var link_title = "";
	var target_window = "_self";
	var cell_spacing = "";
	var cell_padding = "";
	var table_border = "";
	var cell_height = "";
	var cell_width = "";
	var cell_valign = "top";
	
	selected_table = false;
	selected_td = false;
	selected_tr = false;
	
	if(document.all){
		range = document.frames["HTML_iframe"].document.selection.createRange();
		target_range = document.frames["HTML_iframe"].document.selection.createRange();

		document.getElementById("image_width").value = "300";
		document.getElementById('file_1').value = "";
		document.getElementById("image_height").value = "300";
		document.getElementById("image_align").value = "";
		document.getElementById("image_alt").value = "";
		document.getElementById("image_title").value = "";
		document.getElementById("link_value").value = "";

		if(document.frames["HTML_iframe"].document.selection.type == "Control"){
			ref_index = range(0).sourceIndex;
			target_object = document.frames["HTML_iframe"].document.all[ref_index];
			
			//alert_test(target_object.tagName.toUpperCase());
			
			if(target_object.tagName.toUpperCase() == "TABLE"){
				selected_table = target_object;
				cell_spacing = target_object.getAttribute("cellSpacing");
				cell_padding = target_object.getAttribute("cellPadding");
				table_border = target_object.getAttribute("border");
				//alert_test(target_object.getAttribute("cellPadding"));
			}else if (target_object.tagName.toUpperCase() == "IMG"){
				document.getElementById("image_width").value = target_object.width;
				document.getElementById("image_height").value = target_object.height;
				//if(target_object.align){
					document.getElementById("image_align").value = target_object.align;
				//}
				document.getElementById("image_alt").value = target_object.alt;
				document.getElementById("image_title").value = target_object.title;
				document.getElementById("file_1").value = target_object.src;
					
					
				ie_parent = target_object.parentNode;

				if(ie_parent.tagName.toUpperCase() == "A"){
					//alert_test("here");
					href_value = ie_parent.href;
					link_title = ie_parent.title;
					if(ie_parent.target == "_blank"){
						target_window = "_blank";
					}
					display_set = true;
				}
					if(ie_parent.tagName.toUpperCase() != "BODY"){
						var count = 0;
						do{
							ie_parent = ie_parent.parentNode;
							//alert_test(ie_parent.nodeName);
							if(ie_parent.nodeName.toUpperCase() == "TABLE"){
								selected_table = ie_parent;
								cell_spacing = selected_table.getAttribute("cellSpacing");
								cell_padding = selected_table.getAttribute("cellPadding");
								table_border = selected_table.getAttribute("border");
							}else if(ie_parent.nodeName.toUpperCase() == "TR"){
								selected_tr = ie_parent;
							}else if(ie_parent.nodeName.toUpperCase() == "TD"){
								selected_td = ie_parent;
								cell_height = selected_td.getAttribute("height");
								cell_width = selected_td.getAttribute("width");
								cell_valign = selected_td.getAttribute("vAlign");
								//alert_test(selected_td.getAttribute("width"));
								
							}else if(ie_parent.nodeName.toUpperCase() == "A"){
								href_value = ie_parent.href;
								link_title = ie_parent.title;
								if(ie_parent.target == "_blank"){
									target_window = "_blank";
								}
								if(content.current_editor != "link_editor" && !display_set){
									content.set_link_display(true);
								}
								display_set = true;
							}
							count++;
						}while(ie_parent.nodeName.toUpperCase() != "A" && ie_parent.nodeName.toUpperCase() != "BODY" && count < 20);
					
				}
			}else if(range(0).tagName.toUpperCase() == "A"){
				document.getElementById("link_value").value = "Link Selected";
			}
		}else{
			range = document.frames["HTML_iframe"].document.selection.createRangeCollection();
			text_range = range(0);
			ie_parent = text_range.parentElement();
			
			//alert(ie_parent.tagName.toUpperCase());
			
			if(ie_parent.tagName.toUpperCase() == "TR"){
				selected_tr = ie_parent;
			}else if(ie_parent.tagName.toUpperCase() == "TD"){
				selected_td = ie_parent;
				cell_height = selected_td.getAttribute("height");
				cell_width = selected_td.getAttribute("width");
				cell_valign = selected_td.getAttribute("vAlign");
				//alert_test("here " + selected_td.tagName.toUpperCase());
				
			}else if(ie_parent.tagName.toUpperCase() == "A"){

				document.getElementById("link_value").value = ie_parent;
				href_value = ie_parent;
				link_title = ie_parent.title;
				if(ie_parent.target == "_blank"){
					target_window = "_blank";
				}
			}
				if(ie_parent.parentNode.tagName.toUpperCase() != "BODY"){
					var count = 0;
					do{
						ie_parent = ie_parent.parentNode;
						var new_tag_name = "";
						//alert_test(ie_parent.nodeName);
						if(ie_parent.nodeName){
							//new_tag_name = ie_parent.tagName.toUpperCase() == "A";
							if(ie_parent.nodeName.toUpperCase() == "TABLE"){
								selected_table = ie_parent;
								cell_spacing = selected_table.getAttribute("cellSpacing");
								cell_padding = selected_table.getAttribute("cellPadding");
								table_border = selected_table.getAttribute("border");
							}else if(ie_parent.nodeName.toUpperCase() == "TR"){
								selected_tr = ie_parent;
							}else if(ie_parent.nodeName.toUpperCase() == "TD"){
								selected_td = ie_parent;
								cell_height = selected_td.getAttribute("height");
								cell_width = selected_td.getAttribute("width");
								cell_valign = selected_td.getAttribute("vAlign");
							}else if(ie_parent.nodeName.toUpperCase() == "A"){
								href_value = ie_parent.href;
								link_title = ie_parent.title;
								if(ie_parent.target == "_blank"){
									target_window = "_blank";
								}
								display_set = true;
							}
						}
						count++;
					}while(ie_parent.nodeName.toUpperCase() != "A" && ie_parent.nodeName.toUpperCase() != "BODY" && ie_parent.nodeName.toUpperCase() != "HTML" && count < 20);
				}
		
		}
	}else{
		document.getElementById('file_1').value = "";
		document.getElementById("image_alt").value = "";
		document.getElementById("image_title").value = "";
		document.getElementById("image_align").value = "";
		document.getElementById("image_height").value = "300";
		document.getElementById("image_width").value = "300";
		
		//sel = window.frames["HTML_iframe"].getSelection();

		sel = document.getElementById("HTML_iframe").contentWindow.getSelection();
		selection = sel.anchorNode.parentNode.nodeName;
		sel_parent = sel.nodeName;

		//selection = sel.anchorNode.parentNode.nodeName;
		//sel_parent = sel.nodeName;
		
		/*
		alert_test(sel.anchorNode.parentNode.nodeName.toUpperCase());
		
		if(sel.anchorNode.parentNode.nodeName.toUpperCase() == "TABLE"){
			//alert_test("IMAGE");
			selected_table = sel.anchorNode.parentNode;
			cell_spacing = selected_table.getAttribute("cellSpacing");
			cell_padding = selected_table.getAttribute("cellPadding");
			table_border = selected_table.getAttribute("border");
		}else if(sel.anchorNode.parentNode.nodeName.toUpperCase() == "TD"){
			selected_td = sel.anchorNode.parentNode;
			cell_height = selected_td.getAttribute("height");
			cell_width = selected_td.getAttribute("width");
		}else if(sel.anchorNode.parentNode.nodeName.toUpperCase() == "A"){
			document.getElementById("link_value").value = sel.anchorNode.parentNode.href;
			href_value = sel.anchorNode.parentNode.href;
			link_title = sel.anchorNode.parentNode.title;
			if(sel.anchorNode.parentNode.target == "_blank"){
				target_window = "_blank";
			}
		}
		*/
			//alert_test(sel.anchorNode.nodeName);
			if(sel.anchorNode.nodeName.toUpperCase() != "BODY"){
				var count = 0;
				ff_parent = sel.anchorNode;
				//alert_test(ff_parent.nodeName.toUpperCase());
				if(ff_parent.nodeName.toUpperCase() != "BODY"){
					do{
						
						if(ff_parent.nodeName){
							if(ff_parent.nodeName.toUpperCase() == "TABLE"){
								selected_table = ff_parent;
								cell_spacing = selected_table.getAttribute("cellSpacing");
								cell_padding = selected_table.getAttribute("cellPadding");
								table_border = selected_table.getAttribute("border");
							}else if(ff_parent.nodeName.toUpperCase() == "TR"){
								selected_tr = ff_parent;
							}else if(ff_parent.nodeName.toUpperCase() == "TD"){
								selected_td = ff_parent;
								cell_height = selected_td.getAttribute("height");
								cell_width = selected_td.getAttribute("width");
								cell_valign = selected_td.getAttribute("vAlign");
								if(cell_valign == "center"){
									cell_valign = "middle";
								}
								//alert_test(selected_td.getAttribute("vAlign"));
							}else if(ff_parent.nodeName.toUpperCase() == "A"){
								href_value = ff_parent.href;
								link_title = ff_parent.title;
								if(ff_parent.target == "_blank"){
									target_window = "_blank";
								}
								display_set = true;
							}
						}
						ff_parent = ff_parent.parentNode;
						//alert_test(count + ", " + ff_parent.nodeName);
						count++;
					}while(ff_parent.nodeName.toUpperCase() != "BODY" && count < 200);
				}
			}
			document.getElementById("link_value").value = "";
		
		
		if(sel == ""){
			//document.getElementById("link_value").value = "image";
		}
			//alert();
		
		if (sel.rangeCount>0){
			range = sel.getRangeAt(0);
				obj = range.startContainer.childNodes[range.startOffset];
			if (obj){
				if(obj.nodeName.toUpperCase() == "IMG"){
					image_source = obj.src;
					image_alt = obj.alt;
					image_title = obj.title;
					image_aln = obj.align;
					image_ht = obj.height;
					image_wd = obj.width;
					file_name = image_source.substr(image_source.lastIndexOf("/") + 1);
					
					document.getElementById("image_alt").value = image_alt;
					document.getElementById("image_title").value = image_title;
					document.getElementById("image_align").value = image_aln;
					document.getElementById("image_height").value = image_ht;
					document.getElementById("image_width").value = image_wd;
					
					//RTB_df.detach();
				}
			}
		}
	}
	
	// apply values
	if(href_value != ""){
		href_value = String(href_value);
		var link_type_value = String(href_value).toLowerCase();
		//alert("link_type_value.indexOf = " + link_type_value.indexOf("http://"));
		if(link_type_value.indexOf("http://") == 0){
			//alert("http");
			link_type = "http://";
			display_link = href_value.substr(7);
			//alert_test(String(href_value).toLowerCase());
		}else if(link_type_value.indexOf("https://") == 0){
			link_type = "https://";
			display_link = href_value.substr(8);
		}else if(link_type_value.indexOf("mailto:") == 0){
			link_type = "mailto:";
			display_link = href_value.substr(7);
		}else{
			display_link = href_value;
		}
		//alert("this.link_type = " + this.link_type);
	}

	//alert_test(display_link);
	
	document.getElementById("link_type").value = link_type;
	document.getElementById("link_value").value = display_link;
	document.getElementById("link_title").value = link_title;
	document.getElementById("target_window").value = target_window;
	document.getElementById("cell_spacing_modify").value = cell_spacing;
	document.getElementById("cell_padding_modify").value = cell_padding;
	document.getElementById("table_border_modify").value = table_border;
	document.getElementById("cell_height").value = cell_height;
	document.getElementById("cell_valign").value = cell_valign;
	document.getElementById("cell_width").value = cell_width;
}

	/*#############################################################
	#
	#	set_link
	#
	#############################################################*/

function set_link(){
	var link_type_value = String(document.getElementById("link_value").value);
	var link_type = get_link_type(link_type_value, document.getElementById("link_type").value);
	var display_link = parse_link(link_type_value);
	var link_title = document.getElementById("link_title").value;

	if(document.all){
		//alert(ie_parent.tagName);
		if(ie_parent){
			if(ie_parent.tagName.toUpperCase() == "A"){
				try{
					ie_parent = text_range.parentElement();
					ie_parent = ie_parent.parentNode;
				}
				catch(er){
					ie_parent = target_object.parentNode;
					ie_parent = ie_parent.parentNode;
				}
				for(var i=0; i<ie_parent.childNodes.length; i++){
					var tag_name = ie_parent.childNodes[i].nodeName;
						//alert("tag_name = " + tag_name);
					if(tag_name.toUpperCase() == "A"){
						//alert_test("found");
						ie_parent.childNodes[i].href = link_type + display_link;
						ie_parent.childNodes[i].target = document.getElementById("target_window").value;
						ie_parent.childNodes[i].title = document.getElementById("link_title").value;
						var new_link = ie_parent.childNodes[i].href;
					}
					
				}
			}else{
				target_range.execCommand("CreateLink", false, link_type + display_link);
				try{
					ie_parent = text_range.parentElement();
					ie_parent = ie_parent.parentNode;
				}
				catch(er){
					ie_parent = target_object.parentNode;	
				}
				for(var i=0; i<ie_parent.childNodes.length; i++){
					var tag_name = ie_parent.childNodes[i].nodeName;
					//alert("tag_name = " + tag_name);
					//alert("UC = " + (tag_name.toUpperCase() == "A"));
					if(tag_name.toUpperCase() == "A"){
						ie_parent.childNodes[i].target = document.getElementById("target_window").value;
						ie_parent.childNodes[i].title = document.getElementById("link_title").value;
						var new_link = ie_parent.childNodes[i].href;
					}
					
				}
			}
		}else{
			//alert("no parent");
			document.frames["HTML_iframe"].document.execCommand("CreateLink", false);
		}
	}else{
		try{
			var link_set = false;
			if(sel.anchorNode.nodeName.toUpperCase() == "A"){
				sel.anchorNode.href = link_type + display_link;
				sel.anchorNode.target = document.getElementById("target_window").value;
				sel.anchorNode.title = link_title;
				//this.sel.anchorNode.parentNode.href = get_object_value("link_value");
				var new_link = sel.anchorNode.href;
				link_set = true;
			}else{
				if(sel.anchorNode.nodeName.toUpperCase() != "BODY"){
					var count = 0;
					ff_parent = sel.anchorNode;
					//alert(ff_parent.nodeName);
					do{
						ff_parent = ff_parent.parentNode;
						if(ff_parent.nodeName.toUpperCase() == "A"){
							ff_parent.href = link_type + display_link;
							ff_parent.target = document.getElementById("target_window").value;
							ff_parent.title = link_title;
							href_value = ff_parent.href;
							if(ff_parent.target == "_blank"){
								target_window = "_blank";
							}
							link_set = true;
						}
						count++;
					}while(ff_parent.nodeName.toUpperCase() != "A" && ff_parent.nodeName.toUpperCase() != "BODY" && count < 20);
				}
			}
			if(!link_set){
				var newNode = document.createElement("a");
				newNode.setAttribute("href", link_type + display_link);
				newNode.setAttribute("target", document.getElementById("target_window").value);
				newNode.setAttribute("title", link_title);
				range.surroundContents(newNode);
				var new_link = newNode.href;
			}
		}
		catch(er){
			if(test_mode){
				if(er.fileName){
					var error_message = "File = " + er.fileName + "\n";
				}
				if(er.lineNumber){
					error_message += "Line = " + er.lineNumber + "\n";
				}
				error_message += er.message + "\n\n";
				alert(error_message);
			}
		}
	}
	alert_test(display_link);
	document.getElementById("link_type").value = link_type;
	document.getElementById("link_value").value = display_link
}

	/*#############################################################
	#
	#	get_link_type
	#
	#############################################################*/

function get_link_type(link_value, link_type_default){
	var link_type_value = link_value.toLowerCase();
	
	if(link_type_value.indexOf("http://") == 0){
		return "http://";
	}else if(link_type_value.indexOf("https://") == 0){
		return "https://";
	}else if(link_type_value.indexOf("mailto:") == 0){
		return "mailto:";
	}else{
		if(link_type_default == ""){
			return "http://";
		}else{
			return link_type_default;
		}
	}
}

	/*#############################################################
	#
	#	parse_link
	#
	#############################################################*/

function parse_link(link_value){
	var link_type_value = link_value.toLowerCase();

	if(link_type_value.indexOf("http://") == 0){
		return link_value.substr(7);
	}else if(link_type_value.indexOf("https://") == 0){
		return link_value.substr(8);
	}else if(link_type_value.indexOf("mailto:") == 0){
		return link_value.substr(7);
	}else{
		return link_value;
	}
}

	/*#############################################################
	#
	#	do_execCommand
	#
	#############################################################*/

function do_execCommand(tgt, cmd, val){

	/*******************************************
	*
	*	arguments[3] = display
	*
	*******************************************/

	if(arguments[3]){
		var display = arguments[3];
	}else{
		var display = false;
	}
	
	if(document.frames){
		document.frames[tgt].document.execCommand(cmd, display, val);
	}else{
		document.getElementById(tgt).contentDocument.execCommand("styleWithCSS", false, false);
		document.getElementById(tgt).contentDocument.execCommand(cmd, display, val);
	}
}
