

	//
	//
	//
	function RegisterNamespaces()
	{
		for(var i=0;i<arguments.length;i++) {
		
			var astrParts = arguments[i].split(".");
			var root = window;
			
			for(var j = 0; j < astrParts.length; j++) {
			
				if(!root[astrParts[j]])
					root[astrParts[j]] = new Object();
					
				root = root[astrParts[j]];
			}
		}
	}

	RegisterNamespaces("Unyk.Tools");
	
	Unyk.Tools = new function()
	{
		var m_objTools = this;
		var m_IsCapslockOn = null;
		var m_aCtrlToTrack = new Array();
		
		
		//
		//	Initialization
		//
		m_objTools.Init = function()
		{
			// TODO: multiple event
			document.onkeypress = m_objTools.TrackCapslock;
		};
		
		//
		//
		//
		m_objTools.IsCapslockOn = function()
		{
			return m_objTools.m_IsCapslockOn;
		};

		//
		//
		//
		m_objTools.TrackCapslock = function(e)
		{
			if (!e) var e = window.event;
			var tg = (e.target) ? e.target : e.srcElement;
			var theKey = e.which ? e.which : ( e.keyCode ? e.keyCode : ( e.charCode ? e.charCode : 0 ) );
			var theShift = e.shiftKey || ( e.modifiers && ( e.modifiers & 4 ) ); //bitWise AND

			//if upper case, check if shift is not pressed. if lower case, check if shift is pressed
			m_objTools.m_IsCapslockOn = (theKey > 64 && theKey < 91 && !theShift) || (theKey > 96 && theKey < 123 && theShift)
			
			//alert("asdf");
			if(m_aCtrlToTrack[tg.id])
				m_aCtrlToTrack[tg.id](tg);
		};
		
		//
		//
		//
		m_objTools.AddCtrlToTrack = function(ctrl, fct)
		{
			m_aCtrlToTrack[ctrl.id] = fct;
		};

	}();
	
	Unyk.Tools.Init();