var cHydraWindow = function()
{
	this.obj = false;
	this.top = '100px';
	this.left = '100px';

	this.title = false;
	this.content = false;
	this.toolbar = false;
	this.window_name = false;
}

cHydraWindow.prototype.create_window = function(window_name)
{

	

	//получаю узел BODY
	var elements = document.getElementsByTagName('body');

	var document_body = elements[0];

	//если в документе уже есть окно с такимназванием то подключаюсь к нему и возвращаю обьект
	if (this.catch_window(window_name)) 
	{
		return  this.obj;   
	}
	
	this.window_name = window_name;

	//пытаюсь получить тело шаблона плагина
	var tempale_window = document.getElementById('template_window');
	//делаю копию окна

	if(tempale_window == null) 
	{
		var window_body = document.createElement('div');
		window_body.setAttribute('id','template_window');
		window_body.setAttribute('name','template_window');
		window_body.className = 'window';

			var header_body = document.createElement('div');
			//30.10.2007 header_body.attachEvent('onmousedown',  function() { mousedown(event.srcElement);});
			header_body.className = 'header';
				
				var header_title_body = document.createElement('div');
				header_title_body.setAttribute('id','title');
				header_title_body.setAttribute('name','title');
				header_title_body.className = 'title';
				header_body.appendChild(header_title_body);
				
				var header_buttons_body = document.createElement('div');
				header_buttons_body.className = 'buttons';
					var header_title_button = document.createElement('input');
					
					header_title_button.setAttribute('id','btn_close');
					header_title_button.setAttribute('name','btn_close');
					header_title_button.className = 'button';
					header_title_button.setAttribute('type','button');
					

					/*if (window.ActiveXObject)
					{
						header_title_button.attachEvent('onclick',  function() { btn_window(event.srcElement);});					
					}
					else
					{
						alert('mazilla');
						my_addEventListener(header_title_button, 'click', alert, true); 
						//header_title_button.addEventListener('click', alert, false);
						//header_title_button.addEventListener('click', function() { btn_window(event.target);}, false);
						//header_title_button.attachEvent('onclick',  function() { btn_window(event.target);});
					}*/
			
					
			addHandler(header_title_button, 'click', function() { btn_window(event.srcElement);});
				    
					//header_title_button.addEventListener("click", function() { btn_window(event.srcElement);}, false);


					header_buttons_body.appendChild(header_title_button);

					

				
			
			header_body.appendChild(header_buttons_body);

			var content_body = document.createElement('div');
			content_body.className = 'content';

			var footer_body = document.createElement('div');
			footer_body.className = 'footer';

		window_body.appendChild(header_body);
		window_body.appendChild(content_body);
		window_body.appendChild(footer_body);

		document.body.appendChild(window_body);

		tempale_window = window_body;
	
	
	}
		
//mousedown
/* <DIV class="window" id="template_window" name="template_window">
	 <DIV class="header" onmousedown="mousedown(this)">
		<DIV class="title" id="title" name="title"></DIV>
		<DIV class="buttons">
			<INPUT onclick="btn_window(this);"/> 
		</DIV>
	 </DIV>
	 <DIV class="content"></DIV>
	 <DIV class="footer"></DIV>
 </DIV>



<DIV class="window" id="template_window" name="template_window">
	<DIV class="header">
		<DIV class="title" id="title" name="title"></DIV>
		<DIV class="buttons">
			<INPUT class="button" id="btn_close" type="button" value="" />
		</DIV>
	</DIV>
	<DIV class="content"></DIV>
	<DIV class="footer"></DIV>
</DIV>*/



	this.obj = tempale_window.cloneNode(true);
	// назначаю свойства видимости 
	this.obj.style.top = this.top;
	this.obj.style.left = this.left;
	this.obj.style.display = 'block';

	// назначаю значение идентификатора самого контейнера окна
	this.obj.id = window_name;
			this.obj.window_name = window_name;

	this.reload_properties();

	//помещаю копию окна в поток
	document_body.appendChild(this.obj);

	return this.obj;
}



cHydraWindow.prototype.reload_properties = function()
{
	//получаю детей контейнера окна и назначаю им значение идентификаторов
	var elements = this.obj.childNodes;
	this.title = elements[0].firstChild;
	this.title.id = this.window_name + '[title]';

	this.content = elements[1];

	this.content.id = this.window_name + '[content]';

	this.toolbar = elements[2];
	this.toolbar.id =  + '[toolbar]';
}

cHydraWindow.prototype.catch_window = function(window_name)
{
	this.obj = document.getElementById(window_name);
	if (this.obj)
	{
		this.window_name = window_name;
		this.reload_properties();
		return true;
	}

	return false;
}

cHydraWindow.prototype.set_title = function(window_title)
{
	this.title.innerHTML = window_title;
}

cHydraWindow.prototype.set_content = function(window_content)
{
	this.content.innerHTML = window_content;
}

cHydraWindow.prototype.set_toolbar = function(window_toolbar)
{
	this.toolbar.innerHTML = window_toolbar;
}

cHydraWindow.prototype.get_content_id = function()
{
	return this.content.id;
}

cHydraWindow.prototype.destroy_window = function()
{
	return this.obj.parentNode.removeChild(this.obj);
}

cHydraWindow.prototype.clear_content = function()
{
	this.content.innerHTML = '';
}

cHydraWindow.prototype.set_content = function(html_content)
{
	this.content.innerHTML = html_content;
}



/*
	конец определения класса окна
*/



/**
 * function btn_window(btn)
 * проводии анализ событий связанных с кнопками формы в тайтле 
 * 
*/
function btn_window(btn)
{

	if (btn.id == 'btn_close')
	{
		btn.parentNode.parentNode.parentNode.parentNode.removeChild(btn.parentNode.parentNode.parentNode);
	}
}


// определяет имя окна, в котором содержится элемент с заданным именем
function get_elem_window_name(elem)
{

	// если атрибут строка то воспринимаю его как идентификатор и пытаюсь получить по нему обьект
	if (typeof elem == 'string')
	{
		elem = document.getElementById(elem);
	}

	
	if (elem)
	{
		var parent = elem.parentNode;	

		var window_name = parent.getAttribute('window_name');

		if (!window_name)
		{
			return get_elem_window_name( parent );
		}

		return window_name;
	}
	
}






/*
 * секцтя реализовывает перетаскиевание окон 
 * механизм проходиит тестирование
 *
 *
 *
 *
 *
 */
var obj;

/*function mousedown() 
{
	alert(asdf);
	
	obj = event.srcElement.parentElement.style;
	X=event.offsetX;
	Y=event.offsetY;
}*/

function mousedown(ev) 
{
	obj = event.srcElement.parentElement.style;
	X=event.offsetX;
	Y=event.offsetY;
}

function mousemove(ev) 
{
	if (obj) 
	{
		obj.pixelLeft = event.clientX-X + document.body.scrollLeft;
		obj.pixelTop = event.clientY-Y + document.body.scrollTop;
		return false;
	}
}

function mouseup() 
{
 obj = null;
}


function my_test() {
    alert('test');
}


//document.onmousedown = mousedown;

//30.10.2007 
//document.onmousemove = mousemove;
//document.onmouseup = mouseup;



//--------------------------------------- пример работы с обьектом менеджера окон
/*	var win = new cHydraWindow();
	win.create_window('win1');
	win.set_title('mmmm');
	win.set_content('my content');
	win.set_toolbar('а я загрузился');
	win.destroy_window();	

	win.create_window('win2');
	win.set_title('m2');
	win.set_content('my content2');
	win.set_toolbar('а я загрузился2');*/






//-------------------------------------тело функции которая создавала окна - мутировала в обьект
/**
 * function create_window(window_name)
 * реализовывает создание в теле документа контейнера (окна)
 * 
*/
/*function create_window(window_name,window_title, params)
{

	// пытаюсь получить окно с таким именем
	var obj = document.getElementById(window_name);
	if (obj)
	{
		return obj;
	}

	//делаю копию окна
	var tempale_window = document.getElementById('template_window');
	var new_window = tempale_window.cloneNode(true);

	// назначаю свойства видимости 
	new_window.style.top = 400;
	new_window.style.left = 400;
	new_window.style.display = 'block';

	// назначаю значение идентификатора самого контейнера окна
	new_window.id = window_name;

	//получаю детей контейнера окна и назначаю им значение идентификаторов
	var elements = new_window.childNodes;
	elements[0].firstChild.id = window_name + '[title]';
	elements[0].firstChild.innerHTML = window_title;
	elements[1].id = window_name + '[content]';
	elements[2].id =  + '[toolbar]';
	
	//получаю узел BODY
	var elements = document.getElementsByTagName('body');
	var document_body = elements[0];

	//помещаю копию окна в поток
	document_body.appendChild(new_window);

	return new_window;

}*/



function my_addEventListener(element, type, listener, useCapture) 
{

	element.addEventListener(type, listener, useCapture);
	
	if(!element.eventListeners) 
	{
		 element.eventListeners = new Array();   
	}
	
	element.eventListeners.push([type, listener, useCapture]);

}


function my_cloneNode( node, deep ) 
{
 
	var cloneNode = node.cloneNode(deep);
    my_cloneListeners(node, cloneNode);
    return cloneNode;

}

function my_cloneListeners(node, cloneNode)
{
    if (node.eventListeners) 
    {
        for (var j in node.eventListeners) 
        { 
            var eventListener = node.eventListeners[j];
            my_addEventListener(cloneNode, eventListener[0], eventListener[1], eventListener[2]);    
        }    
    }
    
    for (var i = 0; i < node.childNodes.length; i++) 
    {
        my_cloneListeners(node.childNodes[i], cloneNode.childNodes[i]);        
    }

    return;
}




function my_addEventListener(element, type, listener, useCapture) 
{

	element.addEventListener(type, listener, useCapture);
	
	if(!element.eventListeners) 
	{
		 element.eventListeners = new Array();   
	}
	
	element.eventListeners.push([type, listener, useCapture]);

}









function my_addEventListener(element, type, listener, useCapture) 
{

	element.addEventListener(type, listener, useCapture);
	
	if(!element.eventListeners) 
	{
		 element.eventListeners = new Array();   
	}
	
	element.eventListeners.push([type, listener, useCapture]);

}


function my_cloneNode( node, deep ) 
{
 
	var cloneNode = node.cloneNode(deep);
    my_cloneListeners(node, cloneNode);
    return cloneNode;

}

function my_cloneListeners(node, cloneNode)
{
    if (node.eventListeners) 
    {
        for (var j in node.eventListeners) 
        { 
            var eventListener = node.eventListeners[j];
            my_addEventListener(cloneNode, eventListener[0], eventListener[1], eventListener[2]);    
        }    
    }
    
    for (var i = 0; i < node.childNodes.length; i++) 
    {
        my_cloneListeners(node.childNodes[i], cloneNode.childNodes[i]);        
    }

    return;
}






function addHandler(object, event, handler)
{
  if (typeof object.addEventListener != 'undefined')
    {object.addEventListener(event, handler, false); }
  else if (typeof object.attachEvent != 'undefined')
    object.attachEvent('on' + event, handler);
  else 
    throw "Incompatible browser";
}

function removeHandler(object, event, handler)
{
  if (typeof object.removeEventListener != 'undefined')
    object.removeEventListener(event, handler, false);
  else if (typeof object.detachEvent != 'undefined')
    object.detachEvent('on' + event, handler);
  else
    throw "Incompatible browser";
}