var xgui={	
	/* Screen Definitions */
	SCR_WIDTH: 0,
	SCR_HEIGHT:0,
	CURRENT_DESKTOP:0,
	/* END Screen Definitions */
	hCenter:function(width) /*Find the horizontal center */
	{
		return (this.SCR_WIDTH / 2) - (width / 2);
	},
	vCenter:function(height) /* Find verticle center */
	{
		//alert("finding height from " + height + " WIth O HEIGHT= " + this.SCR_HEIGHT);
		return (this.SCR_HEIGHT / 2) - (height / 2);
	},
	closeWindow:function(wnd)
	{
		xgui.closeParentWindow(wnd.id);
	},
	closeParentWindow:function(id) /* Closes an open window based on the ID*/
	{
		var handle=getClassById(id);
		if(handle.windowState==handle.windowStates.MAXIMIZED)
		{
			xgui.removeOverlay();
		}
		handle.close();
	},
	removeOverlay:function() /* Removes the transparent overlay */
	{
		try{
			document.body.removeChild(document.getElementById('bOverlay'));
		}catch(ex){
			return ex;
		}
	},
	createOverlay:function(color,trans) /* Creates a transparent overlay */
	{
		if(!color) color="#1d1d1d";
		if(!trans) trans=".90";
		var div=document.createElement('div');
		div.style.position="absolute";
		div.style.top=0 + "px";
		div.style.left=0 + "px";
		div.style.height=xgui.SCR_HEIGHT+30+"px";//"100%";
		div.style.width=xgui.SCR_WIDTH + "px";//"100%";
		div.style.background="#1d1d1d";
		div.style.zIndex=1;
		div.style.opacity=trans;
		div.id="bOverlay";
		document.body.appendChild(div);
	},
	showLoading:function() /*Displays a loading box*/
	{
		/*var img=new Image();
		img.src="images/loading.gif";
		var div=document.createElement('div');
		div.style.zIndex=9999 + xgui.wndCount;
		div.style.position="absolute";
		div.style.left=xgui.SCR_WIDTH - 300+ "px";
		div.style.top=xgui.SCR_HEIGHT - 100 + "px";
		div.style.width="299px";
		div.style.height="99px";
		div.style.border="1px solid #3561f4";
		div.style.background="#fff";
		div.style.textAlign="center";
		div.appendChild(document.createTextNode("Loading..."));
		div.appendChild(img);
		div.id="SLOAD_IMG";
		document.body.appendChild(div);	*/	
	},
	objectLoading:false,
	hideLoading:function()/*Hides to loading box*/
	{
		//document.body.removeChild($("#SLOAD_IMG"));
		//xgui.removeOverlay();
		document.body.removeChild($("#SLOAD_IMG"));
	},
	setCurrentDesktop:function(n)
	{
		var clss=getClassesByType('window');
		//alert("Setting D 2 : " + n);
		for(var i=0;i<clss.length;i++)
		{
			if(clss[i].onDesktop==n)
			{
				clss[i].get_window().style.display="block";
			}else{
				clss[i].get_window().style.display="none";
			}
		}
		xgui.CURRENT_DESKTOP=n;
	},
	getCurrentDesktop:function()
	{
		return xgui.CURRENT_DESKTOP;
	},
	loadLibs:function()
	{
		uiRequire('window');
		//uiRequire('container');
		uiRequire('progress');
		uiRequire('tablist');
		uiRequire('iconList');
		uiRequire('popupMenu');
		uiRequire('menuItem');
		uiRequire('richtext');
		uiRequire('textbox');
		uiRequire('panel');
		uiRequire('label');
		uiRequire('listbox');
		uiRequire('table');
		uiRequire('htmlviewer');
		uiRequire('menubar');
		//uiRequire('comboBox');
		uiRequire('button');
		uiRequire('sketcher');
		uiRequire('socket');
		//uiRequire('gladeloader');
		uiRequire('container');
		uiRequire('hpane');
		//document.desktop=new xtk.container(true);
		
	}
}
var xtk={
	window:null,
	sketcher:null,
	progressBar:null,
	textbox:null,
	listbox:null,
	listItem:null,
	label:null,
	tablist:null,
	menubar:null,
	tab:null,
	tabPage:null,
	iconList:null,
	icon:null,
	popupMenu:null,
	menuItem:null,
	button:null,
	panel:null,
	tableController:null,
	table:null,
	tableRow:null,
	tableCell:null,
	richtext:null,
	socket:null,
	container:null,
	hpane:null,
	htmlviewer:null,
	GladeLoader:null,
	activeConsoles:new Array()
}
	
/*############################# BEGIN UI OBJECTS ##########################################################################*/

var classObjects=new Array();
var sliderObjects=new Array();
function uiRequire(o)
{
	_xws.addScript(Array('/mg/nt/libXTK/system/xTK/widgets/' + o + '.js'));
	if(xgui.objectLoading===true)
	{
		
		//document.body.style.cursor="default";
	}
}
register_listener(onUILibLoaded,'*','LIB_LOADED');
function onUILibLoaded(sig_from,sig,args)
{
	
}
function getClassById(id)
{
	for(var i=0;i<classObjects.length;i++)
	{
		if(classObjects[i].get_id()==id)
		{
			return classObjects[i];
		}
	}
}
function getClassesByOwner(pid)
{
	var r=new Array();
	for(var i=0;i<classObjects.length;i++)
	{
		if(classObjects[i].tName=="window")
		{
			
			if(classObjects[i].get_owner())
			{
				if(classObjects[i].get_owner.pid==pid)
				{
				alert(classObjects[i].get_owner().pid);
				r.push(classObjects[i]);
				}
			}
		}
	}
	return r;
}
function getClassesByType(type)
{
	var r=new Array();
	for(var i=0;i<classObjects.length;i++)
	{
		if(classObjects[i].tName==type)
		{
			r.push(classObjects[i]);
		}
	}
	if(r.length > 0)
	{
		return r;
	}else{
		return false;
	}
}
function findParentWindow(obj)
{
	var o=obj.get_object();
	while(o.className!=="xgui_window")
	{
		o=o.parentNode;
	}
	return getClassById(o.id);
}
function getClassIndexById(id)
{
	for(var i=0;i<classObjects.length;i++)
	{
		if((classObjects[i].get_id()==id))
		{
			return i;
		}
	}
}
function clearMenus()
{
	var menus=getClassesByType('popupMenu');
		for(var i=0;i<menus.length;i++)
		{
				menus[i].destroy();
		}
	removeEvent(document.body,'mouseover',clearMenus,false);
}
function getWindowsByTitle(title)
{
	var wins=getClassesByType('window');
	var r=new Array();
	for(var i=0;i<wins.length;i++)
	{
		if(wins[i].title==title)
		{
			r.push(title);
		}
	}
	if(r.length==1)
	{
		return r[0];
	}else{
		if(r.length==0)
		{
			return false;
		}
	}
	return r;
}


function handleMouseClick(ev)
{
	//alert("HMC");
	var cls=getClassById(ev.target.id)
	//alert(cls);
	//alert(ev.target.id);
	if(cls)
	{
		cls.handleMouseClick(ev,cls);
	}
}
function handleEvent(ev)
{
	//alert("Handling click for " + ev.target.id);
	var cls=getClassById(ev.target.id);
	//xprint("Handling event: " + ev.type + " for ID: " + ev.target.id);
	if(cls)
	{
		switch(ev.type)
		{
			case 'focus':
				//alert("Handle Focus");
				cls.handleFocus(cls,ev);
			break;
			case 'keyup':
				cls.handleKeyUp(cls,ev);
			break;
			case 'mouseover':
				cls.handleMouseOver(cls,ev);
			break;
			case 'mouseout':
				cls.handleMouseOut(cls,ev);
			break;
			case 'mousedown':
				cls.handleMouseDown(cls,ev);
			break;
			case 'mouseup':
				cls.handleMouseUp(cls,ev);
			break;
			case 'mousemove':
				cls.handleMouseMove(cls,ev);
			break;
			case 'change':
				cls.handleChange(cls,ev);
			break;
			case 'click':
				
				cls.handleMouseClick(cls,ev);
			break;
			case 'dblclick':
				cls.handleDblClick(cls,ev);
			break;
		}
	}else{
		//alert(ev.target);
	}
}
function handleEvent2(ev)
{
	var cls=getClassById(ev.target.id);
	if(!cls)
	{
		//alert("EV - " + ev.target.parentNode.id + " " );//+ cls.tName)
		try{
			cls=getClassById(ev.target.parentNode.id);
		}catch(ex){
			return false;
		}
	}
	
	if(cls)
	{
		//alert(cls.tName);
		try{
		cls.handleEvent(cls,ev);
		}catch(ex){
			return false;
		}
	}
}

function txtReplace(elm,typ)
	{
		var p=elm.parentNode;
		var i=document.createElement('input');
		i.type=typ;
		i.size=elm.size;
		p.replaceChild(i,elm);
		i.name=elm.name;
		i.id=elm.id;
		i.focus();
		i.focus();
		i.select();
	}
var winController={
	z:100,
	minCount:0,
	nextz:function()
	{
		winController.z+=1;
		return winController.z++;
	},
	findParentWindow:function(e)
	{
		var t=null;
		if(e.target)
		{
			t=e.target;
		}else{
			t=e;
		}
		//alert(t);
		while(t.className!=="xgui_window")
		{
			t=t.parentNode;
		}
		return t;
	},
	findParentWindowByObject:function(obj)
	{
		//alert(obj.tName);
		while(obj.tName!=="window")
		{
			obj=obj.get_parent();
		}
		return obj;
	},
	handleResize:function()
	{
		var wins=getClassesByType('window');
		for(var i=0;i<wins.length;i++)
		{
			if(wins[i].windowState==wins[i].windowStates.MAXIMIZED)
			{
				wins[i].set_size(xgui.SCR_WIDTH -30,xgui.SCR_HEIGHT)
				xgui.removeOverlay();
				xgui.createOverlay();
			}
		}
	}
		
	
}
function uniqid(prefix)
{
	return prefix + (Math.random()*100);
}
var htmlBrowser=function()
{
	var _object=document.createElement('iframe');
	var _tName="htmlBrowser";
	var _url="";
	var _history=new Array();
	var id=uniqid("HB:");
	var _parent=null;
	var _width="600";
	var _height="300";
	var _top=0;
	var _left=0;
	var _hIndex=0;
	var _home="help/index.php";
	/* BEGIN NAVIGATOR EVENTS */
	this.onNavigate=function(sender){return};
	this.onContentLoaded=function(sender){return};
	/* END NAVIGATOR EVENTS */
	classObjects.push(this);
	
	this.get_object=function()
	{
		return _object;
	}
	this.get_id=function()
	{
		return id;
	}
	this.get_parent=function()
	{	
		return _parent;
	}
	this.set_parent=function(parent)
	{
		_parent=parent;
	}
	this.destroy=function()
	{
		_parent.removeObject(this);
		classObjects.splice(getClassIndexById(id),1);
	}
	this.get_location=function()
	{
		return _url;
	}
	this.set_location=function(url)
	{
		_url=url;
		this.navigate(url);
		
	}
	this.navigate=function(url)
	{
		this.onNavigate(this);
		_history.push(url);
		_hIndex=_history.length;
		_object.src=url;
		
	}
	this.go_back=function()
	{
		this.navigate(_history[hIndex--]);
	}
	this.go_forward=function()
	{
		this.navigate(_history[hIndex++]);
	}
}
var datasource=function()
{
}
