	var fctNPOnUnload;

	function NP_mim_Init(idTabComp)
	{	
		//alert("debug NP_mim_Init");
		var sUrl = new String(g_MIM_ROOT_XML_FILES);
		sUrl += "contacts.jsp?IdTab=" + g_MIM_IdTab + "&IdTabComp=" + g_MIM_IdTabComp + "&DisplayOnline=true&DisplayOffline=false&TableColor=" + g_MIM_TABLE_COLOR;

		if(oDOMXMLMimContacts.load(sUrl) != true)
			alert('ERROR: NP_mim_Init(' + idTabComp + ') -> ' + oDOMXMLMimContacts.parseError.reason);

		fctNPOnUnload = document.body.onunload;
		document.body.onunload = NPMimUnload;
		NPMimSignIn(g_MyLogin);				// signed in
	}

/********************************************************************/

	function NPMimUnload()
	{ 
		//alert("debug NPMimUnload");
		if( fctNPOnUnload != null &&  NPMimUnload != fctNPOnUnload )   // call old onunload
			fctNPOnUnload();

		NPMimSignOut(g_MyLogin);     	// signed out
	}

/********************************************************************/

	function NPMimSignIn(login)
	{
  	var sUrl = new String(g_MIM_ROOT_ACTION_FILES);
		sUrl += "sign.jsp?Action=SignIn&Login=" + login;
		var oDOM = getXMLDOM();
		oDOM.async = false;
		if( oDOM.load(sUrl) != true )
			alert('ERROR: NPMimSignIn(' + login + ') -> ' + oDOM.parseError.reason);
	}

/********************************************************************/

	function NPMimSignOut(login)
	{
	  var sUrl = new String(g_MIM_ROOT_ACTION_FILES);
		sUrl += "sign.jsp?Action=SignOut&Login=" + login;
		//window.open(sUrl);
		var oDOM = getXMLDOM();
		oDOM.async = false;
		if( oDOM.load(sUrl) != true )
			alert('ERROR: NPMimSignOut(' + login + ') -> ' + oDOM.parseError.reason);
	}

/********************************************************************/

	function MIMContactsHandler()
	{
		if( oDOMXMLMimContacts.readyState == 4 && oDOMXMLMimContacts.parseError.errorCode != -1072897514 && oDOMXMLMimContacts.parseError.errorCode == 0 )
		{
			var oTable = document.getElementById('MIMTable' + g_MIM_IdTabComp);
			if( oTable == null )	// we may be in a refresh.....
				return;
			var html = oDOMXMLMimContacts.transformNode(oDOMXSLMimContacts);
			oTable.innerHTML = html;
		}
		else
		{
			if( oDOMXMLMimContacts.parseError.errorCode == -2146697211 )		// resource not found, the server must be down...
      		stopTimers();
		}
	}

/********************************************************************/

	function toggleDisplay(img, trName)
	{
		var oTR = document.getElementById(trName);
		if( oTR.style.display == 'block' )
		{
			oTR.style.display = 'none';
			img.src = g_MIM_IMG_SHOW;
		}
		else
		{
			oTR.style.display = 'block';
			img.src = g_MIM_IMG_HIDE;
		}
	}

/********************************************************************/

	function MIMCheckForUpdateStatusTimer()
	{
		var online = 'true';
		var offline = 'false';
		var NPonline = 'false';

		var oTR = document.getElementById('TRMIMOnline');
		if( oTR != null )
		{
			online = (oTR.style.display == 'block' ? 'true' : 'false');
	    	oTR = document.getElementById('TRMIMOffline');
 			offline = (oTR.style.display == 'block' ? 'true' : 'false');
 		}

		var sUrl = new String(g_MIM_ROOT_XML_FILES);
		sUrl += "contacts.jsp?IdTab=" + g_MIM_IdTab + "&IdTabComp=" + g_MIM_IdTabComp + "&DisplayOnline=" + online + "&DisplayOffline=" + offline + "&TableColor=" + g_MIM_TABLE_COLOR;
		if(oDOMXMLMimContacts.load(sUrl) != true)
			alert('ERROR: MIMCheckForUpdateStatusTimer() -> ' + oDOMXMLMimContacts.parseError.reason);
	}

/********************************************************************/

	function selectContact(oTr)
	{
		//oTr.style.backgroundColor = "lightgrey";
	}

/********************************************************************/

	function startMessageSession(loginContact, msg, dt)
	{
		if( g_MyLogin == loginContact)		// can not talk to myself
			return;

		var sUrl = new String(g_MIM_ROOT_DLG_FILES);
		sUrl += "dlg_msg.jsp?MyLogin=" + g_MyLogin + "&LoginContact=" + loginContact + "&Msg=" + unicodeToEscape(msg) + "&DateSend=" + escape(dt);
		var dlgChat = openCenterWnd(sUrl,"MIMWindowChat" + loginContact, 360, 480, true, true);
		g_arr_CHAT_SESSIONS[loginContact] = dlgChat;
	}

/********************************************************************/

	function MIMCheckForNewMessagesTimer()
	{
	  	var sUrl = new String(g_MIM_ROOT_ACTION_FILES);
			sUrl += "newmsg.jsp?MyLogin=" + g_MyLogin;
	    if( oDOMXMLMimMessages.load(sUrl) != true )
			alert('ERROR: MIMCheckForNewMessagesTimer() -> ' + oDOMXMLMimMessages.parseError.reason);
	}

/********************************************************************/

	function MIMCheckForNewMessagesHandler()
	{
		if(oDOMXMLMimMessages.readyState == 4 && oDOMXMLMimMessages.parseError.errorCode == 0)
  		{
  			
			var arrMsg = oDOMXMLMimMessages.selectNodes("MIM/Message");
			for(var i=0; i<arrMsg.length; i++)
			{
				var loginContact = arrMsg[i].attributes.getNamedItem("LoginAuthor").value;
				var dateSend = arrMsg[i].attributes.getNamedItem("DateSend").value;
				var msg = arrMsg[i].text;
				if( isMessageSessionStarted(loginContact) == true )
					sendMessageToChatSession(g_arr_CHAT_SESSIONS[loginContact], loginContact, msg, dateSend);
				else
					startMessageSession(loginContact, msg, dateSend);
			}
		}
		else
		{
			//if(oDOMXMLMimMessages.readyState == 4) alert("HAAAAAAAAAAAAAAAAAAA");
							if( oDOMXMLMimMessages.parseError.errorCode == -2146697211 )		// resource not found, the server must be down...
      				stopTimers();
		}
	}

/********************************************************************/

	function isMessageSessionStarted(contact)
	{
		if( g_arr_CHAT_SESSIONS[contact] != null )
			return true;

		return false;
	}

/********************************************************************/

	function sendMessageToChatSession(wnd, contact, msg, dt)
	{
		wnd.addMessageToHistory(null, dt, msg, contact, false);
	}

/********************************************************************/

	function stopTimers()
	{
		
		if(g_MIM_STATUS_TIMER)
			window.clearInterval(g_MIM_STATUS_TIMER);
		if(g_MIM_MESSAGES_TIMER)
			window.clearInterval(g_MIM_MESSAGES_TIMER);
	}
