// JavaScript Document

var b_IE=document.all;
var b_NN=!document.all&&document.getElementById;
var b_N4=document.layers;


/*

Project: 

Class: quantic_window

Description:

Developer:

Company:

Created:

History:

*/

var quantic_window = function(title,width,height,posx,posy) {
	
	if (typeof(title) == 'undefined' ||
		 typeof(width) == 'undefined' ||
		 typeof(height) == 'undefined')  { 
			alert('You must specify TITLE, WIDTH, HEIGHT when creating a window');
		return(true);
	}	
	
	this.title = title;
	this.n_width = width;		
	this.n_height = height;					
	
	if (typeof(posx) == 'undefined') {
		this.n_posX = (parseInt(document.documentElement.clientWidth) - this.n_width) / 2 ;
	}
	
	if (typeof(posy) == 'undefined') {	
		this.n_posY = (parseInt(document.documentElement.clientHeight) - this.n_height) /2 ;		
	}
	
	if (typeof(posx) != 'undefined') {
		this.n_posX = posx ;
	}
	
	if (typeof(posy) != 'undefined') {	
		this.n_posY = posy ;		
	}
	

	var o_window_div = document.createElement('div');			
		o_window_div.className='quantic_window';
		o_window_div.style.position ='absolute';
		o_window_div.style.left = this.n_posX +'px';
		o_window_div.style.top = this.n_posY +'px';		
		o_window_div.style.width = this.n_width + 'px';
		o_window_div.style.height = this.n_height + 'px';
		o_window_div.style.zIndex = 1;			

	var o_window_close_div = document.createElement('div');	
		o_window_close_div.className='quantic_window_close';
		o_window_close_div.innerHTML='x';			
		
	var o_window_title_div = document.createElement('div');		
		o_window_title_div.className='quantic_window_title';			
		o_window_title_div.innerHTML = this.title;
				
		
	var o_window_content_div = document.createElement('div');						
		o_window_content_div.className='quantic_window_content';
		o_window_content_div.style.width = this.n_width + 'px';
		o_window_content_div.style.height = this.n_height + 'px';
		
		o_window_div.appendChild(o_window_title_div);
		o_window_div.appendChild(o_window_close_div);
		o_window_div.appendChild(o_window_content_div);
	
	this.o_window = o_window_div;
	this.o_window_content = o_window_content_div;			
			
	
};


quantic_window.prototype = {
	
	o_window : null,
	b_draggable : true,
	
	create: function(id,type) {
						
		if (typeof(id) == 'undefined') {
			alert('You must specify ID when creating a window');				
			return(true);					
		} else {
			
			var o_content = document.getElementById(id);
			
			if (o_content)	{			
				this.o_window_content.innerHTML = o_content.innerHTML;
			} else if (typeof(id) != 'undefined' && typeof(type) != 'undefined' && type.toLowerCase()=='html') {
				this.o_window_content.innerHTML = '<iframe frameborder="0" src="'+id+'" width="100%" height="100%"></iframe>';
			} else {		
				this.o_window_content.innerHTML = id;
			}
			
			
         
	
			
			this.o_window.style.visibility = 'hidden';
			this.o_window.style.display = 'none';	         
         
		}
		
		
	},				
	
	change_display_state: function() {
		if (this.o_window) {
		
			this.o_window.style.visibility = this.o_window.style.visibility.toLowerCase()=='hidden' ? 'visible' : 'hidden';
			this.o_window.style.display = this.o_window.style.display.toLowerCase()=='none' ? 'block' : 'none';	
		}
	},
   
   hide_the_window: function() {
		if (this.o_window) {
		
			this.o_window.style.visibility = 'hidden';
			this.o_window.style.display = 'none';	
		}
	},
   
   show_the_window: function() {
		if (this.o_window) {
			this.o_window.style.visibility = 'visible';
			this.o_window.style.display = 'block';
			document.body.appendChild(this.o_window);
		}
	},   
	
	is_focus : function(e) {
		
	}
}


/*

Project: 

Class: quantic_drag

Description:

Developer:

Company:

Created:

History:

*/

quantic_drag = {
		
	zindex:10000,

	isHot: false,
	
	b_window:false,
	o_lastwindowselected:null,
	o_windowselected:null,
	
	n_parentX: 0,
	n_parentY: 0,	
	
	n_mouseX:0,
	n_mouseY:0,
	
	move: function(e) {
		if (this.o_windowselected) {
			
			if (!this.b_window) {return;}	
			
			var n_newX = b_IE ? this.n_parentX+event.clientX-this.n_mouseX : this.n_parentX+e.clientX-this.n_mouseX;
			var n_newY = b_IE ? this.n_parentY+event.clientY-this.n_mouseY: this.n_parentY+e.clientY-this.n_mouseY;				
			
			var n_width=this.o_windowselected.offsetWidth;
			var n_height=this.o_windowselected.offsetHeight;			
			
		
			if ((n_width+n_newX) < parseInt(document.documentElement.clientWidth) && n_newX > 0)
			{ 		
				this.o_windowselected.style.left=n_newX+'px'; 
			}
	
			if ((n_height+n_newY) < parseInt(document.documentElement.clientHeight) && n_newY > 0){
				this.o_windowselected.style.top= n_newY+'px';
			}
		}
	},
	
	init: function(e) {
		this.n_mouseX=b_IE ? event.clientX : e.clientX;
		this.n_mouseY=b_IE ? event.clientY : e.clientY;
		
		var o_hoverElem=b_IE ? event.srcElement : e.target; 
		
		
		if (o_hoverElem.className.indexOf('quantic_window_content') == 0 || 
			o_hoverElem.className.indexOf('quantic_window_title') == 0) {
			
			var o_parentElem=b_IE ? o_hoverElem.parentElement : o_hoverElem.parentNode;				
			
			if (this.o_lastwindowselected) { var n_zIndex=parseInt(this.o_lastwindowselected.style.zIndex)+1; }
			else {	var n_zIndex=100000}	
			
			this.o_lastwindowselected = o_parentElem;
			
			o_parentElem.style.zIndex=n_zIndex;
		}
		
		
		if (o_hoverElem.className.indexOf('quantic_window_title') == 0) {
				
			var o_parentElem=b_IE ? o_hoverElem.parentElement : o_hoverElem.parentNode;
					
		
			this.n_parentX=parseInt(o_parentElem.style.left);
			this.n_parentY=parseInt(o_parentElem.style.top);
			this.o_windowselected=o_parentElem;
			this.b_window = true;
								
			window.document.onselectstart = function () { return false; }
		}	
		
		if (o_hoverElem.className.indexOf('quantic_window_close') == 0) {
				
			var o_parentElem=b_IE ? o_hoverElem.parentElement : o_hoverElem.parentNode;
				o_parentElem.parentNode.removeChild(o_parentElem);
		}				
			
	},		
	
	drop: function(e) {
		if (this.b_window) {
			
			this.o_lastwindowselected = this.o_windowselected;
			this.o_windowselected=null;
			this.b_window = false;			
			
			window.document.onselectstart = function () { return true; }
		}
	}
}

document.onmousedown=quantic_drag.init;
document.onmouseup=quantic_drag.drop;
document.onmousemove=quantic_drag.move;