// Объект текущего окна

var collected_window = {
	id				: "",

	lastX			: 0,
	lastY			: 0,
	mouseX			: 0,
	mouseY			: 0,
	mouseOffsetX	: 0,
	mouseOffsetY	: 0,

	clientWidth		: 0,
	clientPos		: 0,
	leftPos			: 0,
	topPos			: 0,

	pageWidth		: 1024,
	pageHeight		: 768,

	inited			: false,
	oWindow			: null,
	must_drag		: false,

	// Считывает свойства указанного по Id ( window_[Id] ) окна и помечает его текущим
	collect  		: function( Id, iWidth, iHeight, sTitle, innerHTML ) {		collected_window.hide();	 	collected_window.id = Id;
	 	Id = 'window_' + Id;
		var oWindow = api.getElementById( Id );
		if( !oWindow || oWindow == null ) {		 	Id = collected_window.id;			var htmWindow = '<div style="left: 10; top: 10; z-index: 999; width: ' + iWidth + 'px; position: absolute; height: 10px;" class="borderwrap" name="window_' + Id + '" id="window_' + Id + '"><table cellpadding="0" cellspacing="0" border="0" style="height: 100%;" class="row2">';
			htmWindow += '<tr><td style="width: ' + iWidth + 'px; vertical-align: top;">';
			htmWindow += '<table style="width: 100%;" cellpadding="0" cellspacing="0" border="0" class="popupmenu-category"><tr>';
			htmWindow += '<td id="window_' + Id + '_title" name="window_' + Id + '_title" style="width: 99%; text-indent: 5px; cursor: move;" onMouseDown="javascript: collected_window.start_drag();">' + sTitle + '</td>';
			htmWindow += '<td onClick="javascript: collected_window.hide();" style="width: 1%;">';
			htmWindow += '<span style="color: White; cursor: pointer;">[X]</span></td></tr></table></td></tr>';
			htmWindow += '<tr><td id="window_' + Id + '_html" name="window_' + Id + '_html" style="padding: 5px; vertical-align: top;" class="row2">' + innerHTML + '</td></tr></table></div>';
			document.write( htmWindow );
		 	Id = 'window_' + Id;
			oWindow = api.getElementById( Id );
		}

		collected_window.oWindow	  = oWindow;
		collected_window.leftPos      = api.getOffsetLeft( oWindow );
		collected_window.topPos       = api.getOffsetTop( oWindow );
		collected_window.clientWidth  = iWidth;
		collected_window.clientHeight = iHeight;
		oWindow.style.left			  = parseInt( ( collected_window.pageWidth / 2 ) - ( iWidth / 2 ) ) + "px";
		collected_window.pageHeight	  = parseInt( collected_window.pageWidth / ( 1 + ( 1 / 3 ) ) );
		oWindow.style.top			  = parseInt( ( collected_window.pageHeight / 2 ) - ( collected_window.clientHeight / 2 ) ) + "px";
		oWindow.style.width			  = iWidth + "px";
		oWindow.style.height		  = iHeight + "px";
		collected_window.inited		  = true;
	},

	// Показывает текущее окно
	show			: function() {
		if( !collected_window.inited ) {//			alert( 'Please, collect any window before using any collection methods.' );
			return;		}
		collected_window.oWindow.style.left			= collected_window.leftPos + "px";		collected_window.oWindow.style.top			= collected_window.topPos + "px";
		collected_window.oWindow.style.visibility	= "visible";
		collected_window.oWindow.style.display		= "inline";	},

	// Прячет текущее окно
	hide			: function() {		if( !collected_window.inited ) {
//			alert( 'Please, collect any window before using any collection methods.' );
			return;
		}
		collected_window.oWindow.style.visibility	= "hidden";
		collected_window.oWindow.style.display		= "none";
	},

	start_drag		: function() {		var element = collected_window.oWindow;

    	collected_window.iLeftPos = api.getOffsetLeft( element );
		collected_window.iTopPos = api.getOffsetTop( element );
  		collected_window.mouseOffsetX = collected_window.mouseX - collected_window.iLeftPos;
 	  	collected_window.mouseOffsetY = collected_window.mouseY - collected_window.iTopPos;

	    collected_window.must_drag = true;
	},

	drag_it 		: function() {		var element = this.oWindow;
		if( !element || element == null ) alert('Ахтунг');

	    var iLeftPos = parseInt( this.mouseX ) - parseInt( this.mouseOffsetX );
 	   	if( iLeftPos < 0 ) iLeftPos = 0;
  	  	//iLeftPos = parseInt( this.clientWidth ) - parseInt( this.bodyWidth );
   	    var iTopPos = parseInt( this.mouseY ) - parseInt( this.mouseOffsetY );
    	if( iTopPos < 0 ) iTopPos = 0;
    	//iTopPos = parseInt( this.clientHeight ) - parseInt( this.bodyHeight );

    	this.iLeftPos = iLeftPos; this.iTopPos = iTopPos;

    	element.style.left = parseInt( iLeftPos ) + "px";
    	element.style.top  = parseInt( iTopPos ) + "px";
	},

	end_drag		: function() {		this.must_drag = false;	}
};

function windows_onMouseUp( e )
{	collected_window.end_drag();}

function windows_get_mouse_pos( e )
{
  var tempX = api.mouse.posX;
  var tempY = api.mouse.posY;

  collected_window.mouseX = tempX;
  collected_window.mouseY = tempY;

  if( collected_window.must_drag ) { collected_window.drag_it(); }
}

kernel.onMouseMove['windows'] = windows_get_mouse_pos;
kernel.onMouseUp['windows']   = windows_onMouseUp;
