var WINDOW_OBJECTS = new Array();
var buddies = new Array();
var selected_buddy = 0;
var docked_message_listener = 0;
var away_flag = 1;

function create_xmlhttp_object()
{
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      var aVersions = [ "MSXML2.XMLHttp.5.0",
        "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
        "MSXML2.XMLHttp","Microsoft.XMLHttp"
      ];

      for (var i = 0; i < aVersions.length; i++) {
        try {
            var oXmlHttp = new ActiveXObject(aVersions[i]);
            return oXmlHttp;
        } catch (oError) {
            //Do nothing
        }
      }
    }
    throw new Error("XMLHttp object could be created.");
}

//var xmlhttp = create_xmlhttp_object();

/**
 * xmlHTTPGetResponse()
 *
 * Return the response from an XMLHttpRequest.  No error checking occurs at the
 * moment, however all functions should be testing for null input anyways.
 */
function xmlHTTPGetResponse(xmlhttp)
{
	 if(xmlhttp.readyState == 4)
	 {
	 	try
	 	{
			if (xmlhttp.status == 200)
			{
				return xmlhttp.responseXML;
			}
	 	} catch(e) {}
	}
}

/**
 * check_open_windows()
 *
 * Check all known open windows to see if they are still open.  If they are not open,
 * remove them from the known open windows array and set this function to run again.
 */
function check_open_windows()
{
	for(var window_id in WINDOW_OBJECTS)
	{
		if(WINDOW_OBJECTS[window_id].closed)
		{
			WINDOW_OBJECTS.splice(window_id,1);
		}
	}
	setTimeout("check_open_windows()",window_cleanup_timer);
}

/**
 * open_buddy_window()
 *
 * Open a new window to a buddy.  This window will be added to the WINDOW_OBJECTS array
 * using the buddy's ID has an index.  If the window is already open, focus() on that
 * window instead of creating a new one.
 */
function open_buddy_window(name, id, status)
{	
	if(WINDOW_OBJECTS[id]!=null)
	{
		WINDOW_OBJECTS[id].focus();
	}
	else
	{
		if(window.ActiveXObject)	WINDOW_OBJECTS[id] = window.open('index.php?page=im_buddy_window&buddy_id='+id+'&buddy_name='+name,'webNetwork_'+name,'width=505,height=575,toolbar=no,resizeable=no,statusbar=no');
		else WINDOW_OBJECTS[id] = window.open('index.php?page=im_buddy_window&buddy_id='+id+'&buddy_name='+name,'webNetwork_'+name,'width=500,height=550,toolbar=no,resizeable=no,statusbar=no');
	}
}

/**
 * select_buddy()
 *
 * Select a buddy, this event occurs when a member single clicks on a user on their buddylist.
 * As of 7/31/06 selecting a buddy does nothing more than color that buddy.
 */
var just_set = 0;
function select_buddy(buddy_id, status)
{
		for(var buddy in buddies)
		{
			if(buddy==buddy_id)
			{
				selected_buddy = buddy_id;
				document.getElementById("buddy"+buddy).className = "im_buddy_selected";
				document.getElementById("buddyLeft"+buddy).className = "im_buddy_selected";
				document.getElementById("buddyRight"+buddy).style.color = "white";
				just_set = 1;
			}
			else
			{
				document.getElementById("buddy"+buddy).className = "im_online_buddy";
				document.getElementById("buddyLeft"+buddy).className = "im_online_buddy";
				document.getElementById("buddyRight"+buddy).style.color = "black";
			}
		}
}

/**
 * clear_selected_buddy()
 *
 * Remove the unique styling the selected buddy has.  This event is tied to the entire
 * buddylist so that click anywhere but on a buddy will remove a buddy's selected status.
 */
function clear_selected_buddy()
{
	if(just_set==0 && document.getElementById("buddy"+selected_buddy)!=null)
	{
		document.getElementById("buddy"+selected_buddy).className = "im_online_buddy";
		document.getElementById("buddyLeft"+selected_buddy).className = "im_online_buddy";
		document.getElementById("buddyRight"+selected_buddy).style.color = "black";
		selected_buddy = 0;
	}
	else
	{
		just_set = 0;
	}
}

/**
 * toggle()
 *
 * Toggle the online and offline buddylists.  This function will either show or hide the
 * HTML element passed to this function based on its visibilty attribute.
 */
var toggle_flag = 1;
function toggle(e)
{
	just_set = 1;
	var element = document.getElementById(e);
	if(element.style.visibility=="visible" || toggle_flag)
	{
		toggle_flag = 0;
		document.getElementById(e).style.visibility = "hidden";
		document.getElementById(e).style.display = "none";
		document.getElementById(e+"_image").src = "images/move_down.gif";
	}
	else
	{
		document.getElementById(e).style.visibility = "visible";
		document.getElementById(e).style.display = "block";
		document.getElementById(e+"_image").src = "images/move_up.gif";
	}
}

/**
 * ping()
 *
 * ping() handle's updating the current member's buddylist.  It will update the
 * online and offline buddy lists, the total number of buddies the member has and
 * the ticker at the bottom of the buddylist.
 */
function ping()
{
	var xmlhttp = create_xmlhttp_object();
	xmlhttp.open('POST',"smartway/im_server.php",true);
   xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState==4)
		{
			var response = xmlHTTPGetResponse(xmlhttp);
   		buddies = new Array();
   
   		if(response!=null)
   		{
	   		//Update the online buddies section of the buddylist
	  	 		var num_buddies = response.getElementsByTagName('online_buddies').item(0).firstChild.data;

	  	 		var buddy_webcam = ''; 
	  	 			
	  	 		var buddy_list_html = '';
	   		var total_buddies = num_buddies;
	   		document.getElementById("num_online_buddies").innerHTML = num_buddies;
	   		
	   		var left = ''; var top = ''; var img='';
	   		for(i=0;i<num_buddies;i++)
	   		{
	   			var buddy = response.getElementsByTagName('online_buddy').item(i);
	   			var buddy_name = buddy.firstChild.data;
	   			var buddy_id = buddy.getAttribute('id');
	   			var buddy_status = buddy.getAttribute('status');
	   			var buddy_logon_time = buddy.getAttribute('logon_time');
	   			var buddy_away_status = buddy.getAttribute('away_status');
	   			var buddy_icon = 'online.gif';
	   			var buddy_icon_visibility = 'style="visibility:visible"';
	   			var buddy_webcam = buddy.getAttribute('live_video');
	   			
	   			if(buddy_away_status > 0)
	   			{
	   				buddy_icon = 'away.gif';
	   			}
	   			
	   			if(buddy_webcam > 0)
	   			{
	   				refresh = buddy_webcam;
	   				
	   				if(img = document.getElementById('buddy_icon_'+buddy_id))
	   				{
	   					left = img.offsetLeft;
	   					top = img.offsetTop;
	   					buddy_webcam = '<a style="cursor:pointer;position:absolute;padding-left:5px;padding-top:3px; z-index:2;  top:'+top+';left:'+left+'" href="#"  border="0" align="absmiddle" height="16" width="16" onclick="window.open(\'index.php?page=view_webcam&id='+buddy_id+'&refresh='+refresh+'\',\'webcam\',\'width=355,height=300,toolbar=no,resizeable=no,statusbar=no\');" id="webcam"><img src="smartway/images/cam_on.gif"/></a>';
	  	 				buddy_icon_visibility = 'style=\'visibility:hidden\'';
	   				}
	   				else
	   				{
	   					buddy_webcam = '';
	   				}
	  	 			
	   			}
	   			else
	   			{
	   				buddy_icon_visibility = 'style=\'visibility:visible\'';
	   				buddy_webcam = '';
	   			}
	   			
	   			buddies[buddy_id] = buddy_id;
	   			buddy_list_html += buddy_webcam+'<div class="buddy_entry" unselectable="on" id="buddy'+buddy_id+'" onClick="select_buddy('+buddy_id+','+"'"+'online'+"'"+');" onDblClick="open_buddy_window('+"'"+buddy_name+"'"+', '+buddy_id+', '+buddy_status+');"><img src="smartway/images/spacer.gif" width="200" height="20" border="0" style="position:relative; left:0px; top:0px; margin-bottom:-22px;"><table width="100%"><tr><td width="70%" align="left" id="buddyLeft'+buddy_id+'" class="im_online_buddy">&nbsp;<img '+buddy_icon_visibility+' id="buddy_icon_'+buddy_id+'"  src="images/'+buddy_icon+'" border="0" align="absmiddle" height="16" width="16" />&nbsp;&nbsp;'+buddy_name+'</td><td width="30%" align="right" id="buddyRight'+buddy_id+'" style="cursor:default; padding-right:18px;">'+buddy_logon_time+'</td><td>'+''+'</td></tr></table></div></td><td><div class="buddy_webcam">';
	   		}
				document.getElementById("buddy_list_online").innerHTML = buddy_list_html;
	  
	   		//Update the offline buddies section of the buddylist
	   		var num_buddies = response.getElementsByTagName('offline_buddies').item(0).firstChild.data;
	   		var buddy_list_html = '';
	   		total_buddies = (parseInt(total_buddies) + parseInt(num_buddies));
	   		document.getElementById("num_offline_buddies").innerHTML = num_buddies;
	   		for(i=0;i<num_buddies;i++)
	   		{
	   			var buddy = response.getElementsByTagName('offline_buddy').item(i);
	   			var buddy_name = buddy.firstChild.data;
	   			var buddy_id = buddy.getAttribute('id');
	   			var buddy_status = buddy.getAttribute('status');
	   			var buddy_logon_time = buddy.getAttribute('logon_time');
	   			buddies[buddy_id] = buddy_id;
	   			buddy_list_html += '<div class="im_online_buddy" id="buddy'+buddy_id+'" onClick="select_buddy('+buddy_id+','+"'"+'offline'+"'"+');"><img src="smartway/images/spacer.gif" width="200" height="20" border="0" style="position:relative; left:0px; top:0px; margin-bottom:-22px;"><table width="100%"><tr><td width="70%" align="left" class="im_offline_buddy" id="buddyLeft'+buddy_id+'"><img src="images/offline.gif" border="0" align="absmiddle" height="16" width="16" />&nbsp;&nbsp;'+buddy_name+'</td><td width="30%" align="right" id="buddyRight'+buddy_id+'"></td></tr></table></div>';
	   		}
				document.getElementById("buddy_list_offline").innerHTML = buddy_list_html;
				select_buddy(selected_buddy);
				document.getElementById("total_num_online_buddies").innerHTML = total_buddies;
				document.getElementById("total_num_offline_buddies").innerHTML = total_buddies;
		
				//Update the ticker, currently the ticker only displays new mail messages.
				var num_mail_messages = response.getElementsByTagName('num_mail_messages').item(0).firstChild.data;
				if(num_mail_messages > 0 && num_mail_messages != null)
				{
					var this_message = replace_spaces(unescape(response.getElementsByTagName('mail_ticker_message').item(0).firstChild.data));
					document.getElementById("mail_ticker").innerHTML =  this_message;
				}
   		}
		}					
	}

   xmlhttp.send("action=ping&im_server_member_id="+member_id); 
	
   setTimeout("ping()",buddylist_update_timer);
}

function getWebcam(id,refresh)
{
	var spans = it.getElementsByTagName('a');
	var webcam = spans[0];
	window.open('index.php?page=view_webcam&id='+id+'&refresh='+refresh+'\',"webcam","width=355,height=260,toolbar=no,resizeable=no,statusbar=no"');
}

/**
 * open_settings_window()
 *
 * Handles opening new windows from the buddylist.  This handler does NOT handle new IM windows,
 * only static settings and dialog windows.
 */
function open_settings_window(menu)
{
	switch(menu)
	{
		case 'general':
			window.open('index.php?page=im_settings&menu=general','webNetwork_settings','width=500,height=400,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			break;
		case 'color':
			window.open('index.php?page=im_settings&menu=color','webNetwork_settings','width=500,height=400,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			break;
		case 'away':
			window.open('index.php?page=im_settings&menu=away','webNetwork_away','width=500,height=500,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			break;
		case 'set_away':
			window.open('index.php?page=im_settings&menu=set_away','webNetwork_set_away','width=300,height=75,resizeable=no,statusbar=no,toolbar=no');
			break;
		case 'buddy_list':
			window.open('index.php?page=im_buddy_list_management','webNetwork_management','width=300,height=500,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			break;
		case 'message_logs':
			window.open('index.php?page=im_message_logs','webNetwork_message','width=500,height=450,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			break;
	}
}

/**
 * return_from_away()
 *
 * This handler will return a member from being away.  Any new messages that have been
 * received while away will pop up after this handler has finished.
 */
function return_from_away()
{
	away_flag = 0;
	var xmlhttp = create_xmlhttp_object();
	xmlhttp.open('GET',"smartway/im_server.php?action=set_away_status&im_server_member_id="+member_id+"&away_status=0",false);
   //xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   xmlhttp.send(null);
   
   window.close();
}

/**
 * view_buddy_info()
 *
 * View a buddy's away information.  If the buddy is offline, or not currently away this
 * function will not open a new window, if the buddy is away this function will open a
 * new window with the selected buddies away information.
 */
function view_buddy_info()
{
	if(selected_buddy!=0)
	{
		var xmlhttp = create_xmlhttp_object();
		xmlhttp.onreadystatechange = function() {
			if(xmlhttp.readyState==4)
			{
				var response = xmlHTTPGetResponse(xmlhttp);
   	
   			var buddy_away_id = response.getElementsByTagName('away_message_id').item(0).firstChild.data;
   	
   			if(buddy_away_id == -1)
   			{
   				alert(MSG_buddy_not_online);
   			}
   			else
   			{
   				if(buddy_away_id > 0)
   				{
   					window.open('index.php?page=im_away_message&buddy_id='+selected_buddy+'&status_id='+buddy_away_id,'webNetwork','width=500,height=400,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
   				}
   				else
   				{
   					alert(MSG_buddy_not_away);
   				}
   			}
			}
		}
		xmlhttp.open('GET',"smartway/im_server.php?action=view_buddy_away&im_server_buddy_id="+selected_buddy,true);
   	//xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   	xmlhttp.send(null);
	}
	else
	{
		alert(MSG_no_buddy_selected);
	}
}

/**
 * load_logs()
 *
 * Load the message logs for a given buddy and date.
 */
function load_logs()
{
	var log_buddy = document.getElementById("buddy_select").value;
	var log_date = document.getElementById("date_select").value;
	
	var xmlhttp = create_xmlhttp_object();
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState==4)
		{
			var response = xmlHTTPGetResponse(xmlhttp);
   
   		var messages = '';
   		if(response!=null)
   		{
   			var num_messages = response.getElementsByTagName('num_messages').item(0).firstChild.data;
   			if(num_messages > 0 && num_messages != null)
   			{
   				for(i=0; i<num_messages; i++)
   				{
   					var message = response.getElementsByTagName('message').item(i);
   					var message_text = replace_spaces(unescape(message.firstChild.data));
   					var message_time = message.getAttribute('time');
   					var message_sender = message.getAttribute('sender');
   					var message_color = message.getAttribute('color');
   					messages += message_time + ' <span style="color:'+message_color+'; font-weight:bold;">' + message_sender + ':</span> ' + message_text + '<br>';
   				}
   			}
   			document.getElementById("message_logs").innerHTML = messages;
   		}
		}
	}
	
	xmlhttp.open('GET',"smartway/im_server.php?action=load_message_logs&im_server_member_id="+member_id+"&im_server_buddy_id="+log_buddy+"&im_server_log_date="+log_date,true);
   //xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   xmlhttp.send(null);
}


/**
 * check_for_new_windows()
 *
 * This handler will check for any action that requires a new window to be opened.  As of 7/31/06
 * the only action that will trigger this is a new IM window from a buddy.  This handler is kept
 * separate from the buddylist handler so that it can run more frequently.
 */
function check_for_new_windows()
{
	var xmlhttp = create_xmlhttp_object();
	xmlhttp.open('GET',"smartway/im_server.php?action=new_im_window&im_server_member_id="+member_id,true);
   //xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState==4)
		{
			var response = xmlHTTPGetResponse(xmlhttp);
   
   		if(response != null)
   		{
   			var status = response.getElementsByTagName('status').item(0).firstChild.data;
   			if(status==1 && status != null)
   			{
   				var num_senders = response.getElementsByTagName('num_senders').item(0).firstChild.data;
   				if(num_senders > 0 && num_senders != null)
   				{
   					for(i=0; i<num_senders; i++)
   					{
   						var sender_id = response.getElementsByTagName('sender').item(i).firstChild.data;
   						var sender_name = response.getElementsByTagName('sender').item(i).getAttribute('name');
   						open_buddy_window(sender_name, sender_id, 1);
   					}
   				}
   			}
   		}
		}
	}

   xmlhttp.send(null);
   
   
   setTimeout("check_for_new_windows()",new_window_timer);
}

/**
 * im_login()
 *
 * This handler will log the user into the IM service, it can also be used to undock the buddylist.
 */
function im_login(e)
{
	var xmlhttp = create_xmlhttp_object();
	if(e)
	{
		docked_message_listener = 0;
		xmlhttp.open('POST',"smartway/im_server.php",false);
   	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   	xmlhttp.send("action=undock_buddylist&im_server_member_id="+member_id);
   	
   	var response = xmlHTTPGetResponse(xmlhttp);
   	if(response!=null)
   	{ 	
   		var status = response.getElementsByTagName('status').item(0).firstChild.data;
			if(status==1)
			{
				window.open('index.php?page=im_buddy_list','webNetwork_BuddyList', 'width=200,height=600,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
			}
			else
			{
				alert('You have been logged out of the IM service due to inactivity, please log back in to open your buddy list.');
			}
   	}
		document.getElementById("buddylist_dock").innerHTML = '';
	}
	else
	{
		xmlhttp.open('POST',"smartway/im_server.php",false);
   	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   	xmlhttp.send("action=login&im_server_member_id="+member_id);
   	window.open('index.php?page=im_buddy_list','webNetwork_BuddyList', 'width=200,height=600,resizeable=no,statusbar=no,toolbar=no,dependent=yes');
	}
}

/**
 * im_logout()
 *
 * This function will log the user out of the IM service and close all windows.
 */
function im_logout()
{
	var xmlhttp = create_xmlhttp_object();
	var r = confirm(MSG_logout);
	
	if(r)
	{
		xmlhttp.open('POST',"smartway/im_server.php",false);
   	xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   	xmlhttp.send("action=logout&im_server_member_id="+member_id);
   	
   	window.close();	
	}
}

/**
 * check_away_messages()
 *
 * This function will check for a new messages while the current member is away.  If any new
 * messages are found, the Away Message window is updated with the current number of messages
 * awaiting the member upon their return.
 */
function check_away_messages()
{
	if(away_flag==1)
	{
		var xmlhttp = create_xmlhttp_object();
		xmlhttp.open('GET',"smartway/im_server.php?action=check_away_messages&im_server_member_id="+member_id,true);
		xmlhttp.onreadystatechange = function() {
			if(xmlhttp.readyState==4)
			{
				var response = xmlHTTPGetResponse(xmlhttp);
	   
	   		if(response != null)
	   		{
	   			var new_messages = response.getElementsByTagName('new_messages').item(0).firstChild.data;
	   	
	   			var messages = '';
	   			if(new_messages > 0 && new_messages != null)
	   			{
	   				for(i=0; i<new_messages; i++)
	   				{
	   					var entry = response.getElementsByTagName('sender').item(i);
	   					var sender = entry.firstChild.data;
	   					var num_messages = entry.getAttribute('num_messages');
	   					messages += sender + ' -- <strong>' + num_messages + '</strong>&nbsp;&nbsp;'+TXT_num_messages+'<br>';
	   				}
	   			}
	   			document.getElementById("away_messages").innerHTML = messages;
	   		}
			}
		}
	   //xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	   
	   xmlhttp.send(null);
   

  		setTimeout("check_away_messages()",away_message_timer);
   }
}

function check_docked_messages(timeout)
{
	if(docked_message_listener)
	{
		if(timeout > 0)
		{
			setTimeout("check_docked_messages()",timeout);
		}
		else
		{
			var xmlhttp = create_xmlhttp_object();
			xmlhttp.onreadystatechange = function() {
				if(xmlhttp.readyState==4)
				{
					var response = xmlHTTPGetResponse(xmlhttp);
   
   				if(response != null)
   				{
   					var num_messages = response.getElementsByTagName('num_messages').item(0).firstChild.data;
   	
   					if(num_messages > 0 && num_messages != null)
   					{
   						var str = '<script language="JavaScript" src="js/im.js"></script><script language="JavaScript">check_docked_messages();</script><a href="javascript:void_link();" onClick="im_login(1);"><img src="images/icon_buddy_dock_alert.gif" border="0" align="absmiddle" alt="'+TXT_buddylist_docked+'" title="'+TXT_buddylist_docked+'" id="buddylist_dock" /></a>';
   						document.getElementById("buddylist_dock").innerHTML = str;
   					}
   					else
	   				{
   						var str = '<script language="JavaScript" src="js/im.js"></script><script language="JavaScript">check_docked_messages();</script><a href="javascript:void_link();" onClick="im_login(1);"><img src="images/icon_buddy_dock.gif" border="0" align="absmiddle" alt="'+TXT_buddylist_docked+'" title="'+TXT_buddylist_docked+'" id="buddylist_dock" /></a>';
   						document.getElementById("buddylist_dock").innerHTML = str;
   					}
   				}
				}
			}
			xmlhttp.open('GET',"smartway/im_server.php?action=docked_buddylist_message&im_server_member_id="+member_id,true);
   		//xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   		xmlhttp.send(null);
		}
	}
}

/**
 * set_away_message()
 *
 * Set the selected away message.  This will create a new window displaying the current member's
 * Away Message and any messages received while away.
 */
function set_away_message()
{
	away_flag = 1;
	setTimeout("window.close()",100);
	window.open('index.php?page=im_away_message_box','webNetwork_away_box','width=400,height=400,resizeable=no,statusbar=no,toolbar=no');
}

/**
 * dock_buddy_list()
 *
 * Dock the buddy list, this will set a flag in the database so that the buddylist dock icon
 * will be displayed on all pages.
 */
function dock_buddy_list()
{
	var xmlhttp = create_xmlhttp_object();
	xmlhttp.onreadystatechange = function() {}
	
	xmlhttp.open('POST',"smartway/im_server.php",false);
   xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
   
   xmlhttp.send("action=dock_buddylist&im_server_member_id="+member_id);
   	
	var str = '<script language="JavaScript" src="js/im.js"></script><script language="JavaScript">docked_message_listener = 1;</script><a href="javascript:void_link();" onClick="im_login(1);"><img src="images/icon_buddy_dock.gif" border="0" align="absmiddle" alt="'+TXT_buddylist_docked+'" title="'+TXT_buddylist_docked+'" id="buddylist_dock" /></a>';
	window.opener.document.getElementById("buddylist_dock").innerHTML = str;
	window.close();
}

/**
 * void_link()
 *
 * A void function to appease mozilla
 */
function void_link()
{
}

/**
 * replace_spaces()
 *
 * Replace + (plus signs) with spaces in messages returned from the IM server.
 */
function replace_spaces(message)
{
	var s = new String(message);
	m = s.replace(/\+/g," ");
	return m;
}
