var cHydraHTMLEditor = function()
{
	this.iframe_elem = false;
	this.icons_path = '../_components/ajax/editor/icons/';
	this.value_elem = false;
	this.name = false;
	this.load_styles = false;
}


cHydraHTMLEditor.prototype.init = function(value_elem_id)
{
	this.value_elem = document.getElementById(value_elem_id);
	
	var plugin_body = get_plugin_body(this.value_elem);
	this.name = plugin_body.id+'_editor';
	
	if (!document.getElementById(this.name)) 
	{
		this.create(plugin_body);		    
	}
	else {
		this.iframe_elem = document.getElementById(this.name);    
	}
	


	if (this.iframe_elem.contentWindow.document.body) {
		this.iframe_elem.contentWindow.document.body.innerHTML =  this.value_elem.value;   
	}
	else
	this.iframe_elem.contentWindow.document.write(this.value_elem.value);

	// загружаем css-стили, специфичные для текущего проекта в массив стилей (styles)	
	if (this.load_styles) 
	{
		var styles = parse_styles('xml/init/styles.xml');
		this.init_css_styles(styles);	    
	}
	//setTimeout("editor.init_css_styles("+styles+");", 5);
}

// метод для инициализации css-стилей
cHydraHTMLEditor.prototype.init_css_styles = function(styles)
//function init_css_styles(styles)
{
	
	var head = this.iframe_elem.contentWindow.document.getElementsByTagName('head');
	if (!head)
	{
		alert('Не могу получить заголовок документа');
		return false;
	}


	
	for (var i = 0; i < styles.length; i++) 
	{
		var style = this.iframe_elem.contentWindow.document.createElement('link');

		if (!style)
		{
			alert("Немогу создать стиль");
			return false;
		}
			
		

		style.rel = 'stylesheet';
		style.type = 'text/css';
		style.href = styles[i]; 

		

		head[0].appendChild(style); 
	}
//	debugger;

	var base = this.iframe_elem.contentWindow.document.createElement('base');
		


	var base_href_elem = document.getElementsByTagName('base');

	if (base_href_elem == null)
	{
		alert('Невозможно определить путь к основному приложению.');
	}

	base.setAttribute('href', base_href_elem[0].href);

	var head = this.iframe_elem.contentWindow.document.getElementsByTagName('head');
	head[0].appendChild(base);	

}

cHydraHTMLEditor.prototype.create = function(plugin_body)
{
	

	var div_elem = document.createElement('div');

	div_elem = plugin_body.appendChild(div_elem);
	this.create_toolbar(div_elem);


	this.iframe_elem = document.createElement('iframe');

	this.iframe_elem.setAttribute('id', this.name);
	this.iframe_elem.setAttribute('src', '');
	this.iframe_elem.setAttribute('width', plugin_body.scrollWidth);
	this.iframe_elem = div_elem.appendChild(this.iframe_elem);
	this.iframe_elem.contentWindow.document.designMode  = 'On';
}

cHydraHTMLEditor.prototype.create_toolbar = function(parent_elem)
{
	var div_toolbar = document.createElement('div');
	div_toolbar = parent_elem.appendChild(div_toolbar);
	this.create_toolbar_elem(div_toolbar, 'bold.gif', 'make_bold');
	this.create_toolbar_elem(div_toolbar, 'italic_ru.gif', 'make_italic');
	this.create_toolbar_elem(div_toolbar, 'underline_ru.gif', 'make_underline');
	this.create_toolbar_elem(div_toolbar, 'justifyleft.gif ', 'make_justifyleft');
	this.create_toolbar_elem(div_toolbar, 'justifycenter.gif ', 'make_justifycenter');
	this.create_toolbar_elem(div_toolbar, 'justifyfull.gif ', 'make_justifyfull');
	this.create_toolbar_elem(div_toolbar, 'justifyright.gif ', 'make_justifyright');
	this.create_toolbar_elem(div_toolbar, 'link.gif ', 'make_link');
	this.create_toolbar_elem(div_toolbar, 'save.gif ', 'make_save');
	this.create_toolbar_elem(div_toolbar, 'img.gif', 'insert_image');
	this.create_toolbar_elem(div_toolbar, 'change_color.gif', 'change_color');
	this.create_toolbar_elem(div_toolbar, 'hr.gif', 'make_hr');
	//this.create_toolbar_elem(div_toolbar, 'button.table.gif', 'insert_table');


	
	
	// создание activeX объекта для выбора цвета
	if (document.getElementById('dlghelper')==null) 
	{
		var object_elem = document.createElement('object');
		object_elem.setAttribute('id', 'dlghelper');
		object_elem.setAttribute('classid', 'clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b');
		div_toolbar.appendChild(object_elem);
	}

	// создание комбика с размером шрифта

	var font_size_combo_elem = document.createElement('select');
	div_toolbar.appendChild(font_size_combo_elem);
	font_size_combo_elem.setAttribute('id', 'font_size');
	font_size_combo_elem.setAttribute('alt', 'Размер шрифта');
	font_size_combo_elem.onchange = function(){ editor.change_font_size(this.value);};
	
	for (i = 1; i <=10; i++) 
	{
		var option_elem = document.createElement('option');
		option_elem.setAttribute('value', i);
		option_elem.setAttribute('innerHTML', i);

		font_size_combo_elem.appendChild(option_elem);    
	}
}

cHydraHTMLEditor.prototype.create_toolbar_elem = function(toolbar_elem, icon, method_name)
{
	var img_elem = document.createElement('img');
	img_elem = toolbar_elem.appendChild(img_elem);
	img_elem.src = this.icons_path + icon;
	img_elem.onclick = new Function("editor."+method_name+"();");
}



cHydraHTMLEditor.prototype.do_action = function(cmd, do_opt)
{
	this.iframe_elem.contentWindow.document.execCommand(cmd, false, do_opt);
}

cHydraHTMLEditor.prototype.make_bold = function()
{
	this.do_action('Bold', '');
}
cHydraHTMLEditor.prototype.make_italic = function()
{
	this.do_action('Italic', '');
}
cHydraHTMLEditor.prototype.make_underline = function()
{
	this.do_action('Underline', '');
}

cHydraHTMLEditor.prototype.make_justifyleft = function()
{
	this.do_action('JustifyLeft', '');
}

cHydraHTMLEditor.prototype.make_justifyright = function()
{
	this.do_action('JustifyRight', '');
}

cHydraHTMLEditor.prototype.make_justifycenter = function()
{
	this.do_action('JustifyCenter', '');
}

cHydraHTMLEditor.prototype.make_justifyfull = function()
{
	this.do_action('JustifyFull', '');
}

cHydraHTMLEditor.prototype.make_hr = function()
{
	active_selection = this.get_selection();
	active_range = active_selection.createRange();
	active_range.pasteHTML('<hr/>');
}

cHydraHTMLEditor.prototype.make_url = function(url)
{
	active_range.pasteHTML('<a href="'+url+'" target="_blank">'+active_range.text+'</a>');
}

cHydraHTMLEditor.prototype.make_link = function(url)
{
	if (url==undefined) 
	{
		var url = prompt('Enter your url : ');    
	}
	

	var selection = this.iframe_elem.contentWindow.document.selection; 

	var range = selection.createRange();
//	range = active_range;

	range.pasteHTML('<a href="'+url+'">'+range.text+'</a>');
	return;



	var elem = range.parentElement();


	var link_elem = this.iframe_elem.contentWindow.document.createElement('a');
	link_elem = this.iframe_elem.contentWindow.document.body.appendChild(link_elem);
	

	link_elem.href=url;

		if (range.text=='') 
		{
		    link_elem.innerText=url;
		}
		else 
		{
			link_elem.innerText=range.text;	    
		}
	


	

}

cHydraHTMLEditor.prototype.make_save = function()
{
	this.value_elem.value = this.iframe_elem.contentWindow.document.body.innerHTML;
}

cHydraHTMLEditor.prototype.insert_image = function()
{
	active_selection = this.get_selection();
	active_range = active_selection.createRange();

	open_file_manager_window(); 
	
	/*
	var window_obj = new cHydraWindow();
	window_obj.create_window('file_manager_window');
	window_obj.set_title('Файловый менеджер');
	window_obj.set_toolbar('форма управления файлами');
	
	// загружаем файловый менеджер
	var container_id = window_obj.get_content_id();
	create_plugin('ajax_file_manager', 'ajax_file_manager', container_id);
	load_plugin('ajax_file_manager');

	// загружаем файловый броузер
	create_plugin('ajax_file_browser', 'ajax_file_browser', container_id);
	set_plugin_param('ajax_file_browser', 'path', '');
	load_plugin('ajax_file_browser');
	*/
}

cHydraHTMLEditor.prototype.get_selection = function()
{
	return this.iframe_elem.contentWindow.document.selection;
}
	
cHydraHTMLEditor.prototype.insert_img = function(img_file)
{
	var selection = this.iframe_elem.contentWindow.document.selection;
	var range = selection.createRange();

	var elem = range.parentElement();

	var link_elem = this.iframe_elem.contentWindow.document.createElement('img');
	
	link_elem = this.iframe_elem.contentWindow.document.body.appendChild(link_elem);
	alert(img_file);
	//link_elem = elem.appendChild(link_elem);
	link_elem.src=img_file;
}

cHydraHTMLEditor.prototype.insert_table = function()
{
	var sel = this.get_selection();

	var range = sel.createRange();
	var elem = range.parentElement();
	alert(elem.tagName);
	//var link_elem = this.iframe_elem.contentWindow.document.createElement('img');
	//sel.appendChild(link_elem);
}

cHydraHTMLEditor.prototype.change_color = function()
{
	var color_obj = document.getElementById("dlghelper");
	if (color_obj==null)
	{
		alert("Failed to get color object.");
		return ;
	}
	
	var color = color_obj.choosecolordlg();	

	color = color.toString(16);
	if (color.length < 6) 
	{
		var sTempString = "000000".substring(0,6-color.length);
		color = sTempString.concat(color);
	}

	this.do_action('ForeColor', color);
}

cHydraHTMLEditor.prototype.change_font_size = function(font_size)
{
	this.do_action('FontSize', font_size);
}




