
		// AJAX Code Credits
		// Ryan Smith - 345 Technical - 345 Group (http://www.DynamicAJAX.com) 
		// Jeff Long - V3 Chat (http://www.v3chat.com)

			var sendReq = getXmlHttpRequestObject();
			var friendsReq = getXmlHttpRequestObject();
			var receiveReq = getXmlHttpRequestObject();
			var lastMessage = 0;
			var mTimer;
			var mTimer2;

			
			
		
			//Gets the browser specific XmlHttpRequest Object
			function getXmlHttpRequestObject() {
				if (window.XMLHttpRequest) {
					return new XMLHttpRequest();
				} else if(window.ActiveXObject) {
					return new ActiveXObject("Microsoft.XMLHTTP");
				} else {
					document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object.  Consider upgrading your browser.';
				}
			}
			
			//Gets the current messages from the server
			function getChatText() {
				if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
					receiveReq.open("GET", 'getData.php?chat=1&last=' + lastMessage + '&id=' + ID + '&m=' + M, true);
					receiveReq.onreadystatechange = handleReceiveChat; 
					receiveReq.send(null);
				}			
			}
			
			//Gets FRIENDS online from the server
			function getFriends() {
				if (friendsReq.readyState == 4 || friendsReq.readyState == 0) {
					friendsReq.open("GET", 'index_users.php', true);
					friendsReq.onreadystatechange = handleFriends; 
					friendsReq.send(null);
				}			
			}			

			//Add a message to the chat server.
			function sendChatText() {
				if(!document.getElementById('txt_message').value) {
					alert("You have not entered a message");
					return;
				}
				if (sendReq.readyState == 4 || sendReq.readyState == 0) {
					sendReq.open("POST", 'sendData.php?chat=1&last=' + lastMessage + '&id=' + ID + '&m=' + M, true);
					sendReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					sendReq.onreadystatechange = handleSendChat; 
					var param = 'message=' + document.getElementById('txt_message').value;
					param += '&sname=' + SNAME;
					param += '&rname=' + RNAME;
					param += '&chat=1';
					param += '&ID=' + ID;
					param += '&M=' + M;
					param += '&fontface=' + document.getElementById('font_face').value;
					param += '&fontcolor=' + document.getElementById('font_color').value;
					param += '&fontheight=' + document.getElementById('font_height').value;
					if(document.getElementById('FB').checked){
					param += '&FB=' + document.getElementById('FB').value;
					}
					if(document.getElementById('FI').checked){
					param += '&FI=' + document.getElementById('FI').value;
					}
					if(document.getElementById('FU').checked){
					param += '&FU=' + document.getElementById('FU').value;
					}
					sendReq.send(param);
					document.getElementById('txt_message').value = '';
				}
						
			}

			//When our message has been sent, update our page.
			function handleSendChat() {
				//Clear out the existing timer so we don't have 
				//multiple timer instances running.
				clearInterval(mTimer);
				getChatText();
			}

			//Function for handling the return of chat text
			function handleReceiveChat() {
				if (receiveReq.readyState == 4) {
					var chat_div = document.getElementById('div_chat');
					var xmldoc = receiveReq.responseXML;
					var message_nodes = xmldoc.getElementsByTagName("message");
 					var n_messages = message_nodes.length
					for (i = 0; i < n_messages; i++) {
						var user_node = message_nodes[i].getElementsByTagName("user");
						var text_node = message_nodes[i].getElementsByTagName("text");
						var time_node = message_nodes[i].getElementsByTagName("time");
						chat_div.innerHTML += '<font class="username">' + user_node[0].firstChild.nodeValue + '</u /></b /></i /></a /></font></u /></b /></i /></a />';
						chat_div.innerHTML += '<font class="user_message">' + text_node[0].firstChild.nodeValue + '</u /></b /></i /></a /></font></u /></b /></i /></a />';
						chat_div.scrollTop = chat_div.scrollHeight;
						lastMessage = (message_nodes[i].getAttribute('id'));
					}
					mTimer = setTimeout('getChatText();',5000); //Refresh our chat in 2 seconds
				}

			}
			
			
			//Function for handling the return of chat text
			function handleFriends() {
			
				if (friendsReq.readyState == 4) {
					var friends_div = document.getElementById('div_friends');
					//alert("2");
					var xmldoc2 = friendsReq.responseXML;
					var message_nodes2 = xmldoc2.getElementsByTagName("friend");
					
 					var n_messages2 = message_nodes2.length;
					
innerul = "<ul>";

 
					
					for (i = 0; i < n_messages2; i++) {
						var name_node = message_nodes2[i].getElementsByTagName("name");
						var photo_node = message_nodes2[i].getElementsByTagName("photo");
						var age_node = message_nodes2[i].getElementsByTagName("age");
						 
						innerul += '<li><a href="search_results.php?name='+name_node[0].firstChild.nodeValue+'"><img src="'+photo_node[0].firstChild.nodeValue+'" alt="'+name_node[0].firstChild.nodeValue+'" /></a><br><a href="search_results.php?name='+name_node[0].firstChild.nodeValue+'">'+name_node[0].firstChild.nodeValue+',</a> '+age_node[0].firstChild.nodeValue+'</li>';
						
					}
friends_div.innerHTML = innerul+"</ul>";


					
					mTimer2 = setTimeout('getFriends();',2000); //Refresh our chat in 2 seconds
					 
				}

			}
			

			//This functions handles when the user presses enter.  Instead of submitting the form, we
			//send a new message to the server and return false.
			function blockSubmit() {
				sendChatText();
				return false;
			}

			//This function handles the response after the page has been refreshed.
			function handleResetChat() {
				document.getElementById('div_chat').innerHTML = '';
				getChatText();
			}

		//This function handles the enter key instead of submit button.
		function submitenter(myfield,e)
		{
		var keycode;
		if (window.event) keycode = window.event.keyCode;
		else if (e) keycode = e.which;
		else return true;

		if (keycode == 13)
		   {
		   sendChatText();
		   return false;
		   }
		else
		   return true;
		}

		// this function displays the smilies window
		function toggleBox(szDivID, iState) // 1 visible, 0 hidden
		{
		    if(document.layers)	   //NN4+
		    {
		       document.layers[szDivID].visibility = iState ? "show" : "hide";
		    }
		    else if(document.getElementById)	  //gecko(NN6) + IE 5+
		    {
		        var obj = document.getElementById(szDivID);
		        obj.style.visibility = iState ? "visible" : "hidden";
		    }
		    else if(document.all)	// IE 4
		    {
		        document.all[szDivID].style.visibility = iState ? "visible" : "hidden";
		    }
		}

		// this function adds the smile to the message input box on click
		function addsmiley(code)
		{
		 var pretext = document.frmmain.txt_message.value;
		 this.code = code;
		     document.frmmain.txt_message.value = pretext + code;
		}
