

// 09-04-07 - on this page:
//
// http://www.thesecondroad.org/groups.php?groupId=6
//
// We've a textarea and submit buton with these IDs:
//
// chat_transcript
//
// chat_send
//
// chat_transcript_older 


// 09-04-07 - note to self, this is an example of the Prototype Ajax we need to use: 
//
// var url = 'myscript.php';
// var pars = 'foo=bar';
// var target = 'output-div';	
// var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
//
//
// the example is from here:
//
// http://24ways.org/2005/easy-ajax-with-prototype 




//------------------------------------------------------------------------------------------------------
// GLOBAL VARIABLES

// Search Variables 1-4-08 RK 
//var d = new Date();
//startTimeOfSearch = Math.round(d.getTime()/1000)
//endTimeOfSearch = 0


// Previous Button Variables  1-11-08 - RK
previousIncrement = 1
scrollPrevious = 0
previousOccurred = false

previousIncrementPrivate = 1
scrollPreviousPrivate = 0
previousOccurredPrivate = false


// Scroll Bar Management Variables  1-11-08 - RK
scrollPosition = 0
scrollPositionBottom = 0
scrollPositionDown = true
scrollInUse = false
scrollFirings = 0
scrollFiringsTSR = 0

scrollPositionPrivate = 0
scrollPositionBottomPrivate = 0
scrollPositionDownPrivate = true
scrollInUsePrivate = false
scrollFiringsPrivate = 0
scrollFiringsTSRPrivate = 0


//New Chat Variable  1-16-08 - RK
start = true
startPrivate = true


//Private Chat Invitation Variables 2-1-08 - RK
//sendInvitation = false // This variable records if a chat invitation has been sent
sendInvitationCount = 0
//chatRoomFind = false
chatRoomFound = 0
chatName = ""
//receivedInvitation = false
invitationAccepted = false
idToReturn = 0
username = ""
int = 0
int2 = 0
invitationFound = false
invitationSent = false

//Bell for New Presence of Member
var userPresenceArray = new Array(); 

//------------------------------------------------------------------------------------------------------
// PRIVATE CHAT


//-----------------
// CHAT ACCEPTANCE
// 2-1-08 - RK - Check to see if user is invited to private chat
function chatAcceptanceLookForInvitation() {
	// If an invitation has been sent, do nothing
	if (invitationSent == true) {return false;}
	//Invited checks table in timed 2 second ajax call for invitation
	var url = 'api.php';
	var pars = 'choiceMade[]=chatAcceptanceLookForInvitation';
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = trimAll(transport.responseText)
		if (response.length > 0) {
			invitationFound = true;
			// An invitation is found
			responseArray = response.split(";");// Split response
			username = responseArray[0]// Get Username
			idToReturn = responseArray[1]// Get invitation record ID
			clearInterval(int)// Stop looking for invitations
//			receivedInvitation = true			
			//comfirm pops up
			r = confirm ("INVITATION RECEIVED: You Have Received An Invitation From " + username + ".  Would You Like To Accept?");
			//if yes, ajax call checks for removed invitation
			if (r==true) {
				// Accept Invitation
				invitationAccepted = true
			}
			// To accept or decline invitation, go here
			chatAcceptanceAcceptInvitation();
	  	}
	  }

	});	
}


function chatAcceptanceAcceptInvitation() {

	//Invited checks table in timed 2 second ajax call for invitation
	var url = 'api.php';
	var pars = 'choiceMade[]=chatAcceptanceAcceptInvitation';
	pars += '&invitationAccepted=' + invitationAccepted;
	pars += '&returnedID=' + idToReturn;
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = trimAll(transport.responseText)				
		// If invitation is received (2)
			if (response.length > 0) {
				chatName = response;
				invitationAccepted = false;
				chatAcceptanceFindChatRoom();
			}			
			else if (response.length == 0) {//TERMINATION
				idToReturn = 0;
				chatName = "";
				if (invitationAccepted == true) {
					alert("INVITATION RECEIVED: Your Invitation To A Private Chat Room With " + username + " Has Expired Or Been Refused.");
				}
				invitationAccepted = false;
				invitationFound = false;
				int = setInterval("chatAcceptanceLookForInvitation()", 5000);
			}
			else {invitationFound = false;}
	  }
	});	
}


function chatAcceptanceFindChatRoom() {
	//Invited checks table in timed 2 second ajax call for invitation
	var url = 'api.php';
	var pars = 'choiceMade[]=chatAcceptanceFindChatRoom';
	pars += '&chatName=' + chatName;
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = trimAll(transport.responseText)

		// Locating Chat Room (3)
		// Iterate up to 30 and then notify of timed out
		if (chatRoomFound < 31) {
			
			//Response text indicates found chat
			if (response.length > 0) {//TERMINATION
				chatRoomFound = 0;
				chatName = "";
				idToReturn = 0;
				//notify user that chat is found
				alert("INVITATION RECEIVED: You Will Be Moved To A Private Chat Room Now With " + username + ".");
				
				//Move to chat room				
				responseArray = response.split(";");
				url = responseArray[0] + "groupId=" + groupId + "&" + responseArray[1]
				window.location=url
				invitationFound = false;
				int = setInterval("chatAcceptanceLookForInvitation()", 3000);				
			}
			//Response text indicates not found
			if (response.length == 0) {
				chatRoomFound = chatRoomFound + 1	
				setTimeout("chatAcceptanceFindChatRoom()", 2000);//chatAcceptanceLookForInvitation();
			}
			else {invitationFound = false;}//TERMINATION
		}
		else if (chatRoomFound > 30) {//TERMINATION
//			chatRoomFind = false
			chatRoomFound = 0
			chatName = ""
			idToReturn = 0
			//notify user
			alert("INVITATION RECEIVED: Your Invitation To A Private Chat Room With " + username + " Has Expired Or Been Refused.");
			invitationFound = false;
			int = setInterval("chatAcceptanceLookForInvitation()", 3000);			
		}
		else {invitationFound = false;}//TERMINATION
	  }
	});	
}


//-----------------
// CHAT INVITATION
// 1-29-08 - RK - create_chat_room Button launches a private chat
// A chat invitation begins here
function chatInvitationExtend() {
	// If an invitation has been found, do nothing
	if (invitationFound == true) {return false;}

	if (document.getElementById("membership_list").length == 0) {
		// If no one else is in the chat room, the invitation is aborted here.
		return false;
	}
	
	invitationSent = true

	var url = 'api.php';
	var pars = 'choiceMade[]=chatInvitationExtend';
	pars += '&invitedUserId=' + document.getElementById("membership_list").options[document.getElementById("membership_list").selectedIndex].value; // This is the id of the invited person.
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = trimAll(transport.responseText);
		if (response == "invited") {
			// A return of the string "�nvited" means that the invitation was successfully sent.
			sendInvitationCount = 1;			
			alert("Please Wait While Your Invitation Is Sent.");
			setTimeout("chatInvitationSearchForAcceptance()", 2000); // chatInvitationSearchForAcceptance checks periodically for a response to the invitation
		}
		else if (response == "already_invited") {//TERMINATION
			// A return of the string "already_invited" means that an existing invitation by the user was found.
			alert("You Have Already Sent An Invitation Or Been Invited To A Private Chat.  Please Wait For A Message Box Or Try Again In A Few Seconds.")
			invitationSent = false;
		}
		else {//TERMINATION
			// Any other string indicates an error. 
			alert (response);
			invitationSent = false;
		}
	  }
	})
}	


// 2-1-08 - RK - Post invitation to a private chat in a table
// This function is launched from chatInvitationExtend and searches periodically for a response to an invitation.
function chatInvitationSearchForAcceptance() {
	if (sendInvitationCount < 31) {
		// If the search interation is greater than zero and less than 31, keep searching.
		// Check for acceptance, decline, or timeout
		var url = 'api.php';
		var pars = 'choiceMade[]=chatInvitationSearchForAcceptance';
		pars += '&invitedUserId=' + document.getElementById("membership_list").options[document.getElementById("membership_list").selectedIndex].value;
//		pars += '&sendInvitation=' + true;
		pars += '&sendInvitationCt=' + sendInvitationCount;
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
			response = trimAll(transport.responseText);			
			if (response == "accepted") {
				// Acceptance of invitation is found.
//				sendInvitation = true;
				sendInvitationCount = 0
				//alert user of move to new chat
				chatInvitationCreateNewChatRoom()
				alert("INVITATION OFFERED: Your Invitation Has Been Accepted.  You Will Be Moved To The Private Chat Automatically In A Moment");
			}
			else if (response == "declined") {//TERMINATION
				// Record of invitation has been deleted by invited user and therefore declined.
//				sendInvitation = false
				alert("INVITATION OFFERED: Your Invitation Has Not Been Accepted.");
				invitationSent = false;
			}
			else if (response == "declined_by_timeout") {//TERMINATION
				// Record of invitation has not been deleted by invited user but this search has timed out.
//				sendInvitation = false
				alert("INVITATION OFFERED: Your Invitation Has Timed Out And Therefore Has Not Been Accepted.");
				invitationSent = false;
			}
			else if (response == "acceptance_not_found") {
				// No update, try again.
				sendInvitationCount = sendInvitationCount + 1
				setTimeout("chatInvitationSearchForAcceptance()", 1000);
			}
			else {//TERMINATION
				// If any other response is given, show it.
				alert(response);
				invitationSent = false;
			}
		  }
		})	
	}
}



// Creates a new chat room and moves to it	
function chatInvitationCreateNewChatRoom() {
	var url = 'api.php';
	var pars = 'choiceMade[]=chatInvitationCreateNewChatRoom';
	pars += '&invitedUserId=' + document.getElementById("membership_list").options[document.getElementById("membership_list").selectedIndex].value;
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = trimAll(transport.responseText);
		if (response == "invitation_not_found") {//TERMINATION
			// Invitation record is not found, so abort
			alert("Error: The invitation record is missing. Aborting.");
			invitationSent = false;
		}
		else if (response == "chat_room_not_found") {//TERMINATION
			// Chat room record is not found, so abort
			alert("Error: The chat room record is missing.  Aborting");
			invitationSent = false;
		}
		else {
			// Move to new chat room by splitting response from chatInvitationCreateNewChatRoom and inserting groupid
			responseArray = response.split(";");
			url = responseArray[0] + "groupId=" + groupId + "&" + responseArray[1]
			window.location=url
			invitationSent = false;
		}
	  }
	});
}


//-----------------


// 1-29-08 - RK - Fill member list select with present members for selection for invitation to private chat.
function fillMemberListSelect() {
	if (document.getElementById("membership_list")) {

		if (document.getElementById("membership_list").length > 0) {
			var selectedUserId = document.getElementById("membership_list").options[document.getElementById("membership_list").selectedIndex].value;
		}

		var url = 'api.php';
		var pars = 'choiceMade[]=fillMemberListSelect';
		pars += '&groupId=' + groupId;
		pars += '&selectedUserId=' + selectedUserId;
		var target = 'membership_list_div';	
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});

	}
}

			
// Make Private Chat Permanent 2-8-08 - RK			
function makePrivateChatPermanent() {
	
	if (document.getElementById("make_private_chat_permanent") && privateGroupId) {	

		//Confirm that user wants to make chat permanent
		r = confirm ("Are you sure that you want to make this private chat room permanent?");
		if (r==false) {
			return false
		}

		var url = 'api.php';
		var pars = 'choiceMade[]=makePrivateChatPermanent';
		pars += '&groupId=' + privateGroupId;
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
			//alert (trimAll(transport.responseText));
			if (trimAll(transport.responseText) == "permanent") {
				alert("This Private Chat Is Now A Permanent Chat Group.")
				window.location="groups_chat.php?groupId="+privateGroupId
			}
			else {
				alert("This Private Chat Was Not Made Permanent.  Please Try Again.")
			}
		  }
		});
	}
}


// Determine When To Enable makePrivateChatPermanent Button
function enableMakePrivateChatPermanent() {
	if (document.getElementById("make_private_chat_permanent")) {
		var url = 'api.php';
		var pars = 'choiceMade[]=enableMakePrivateChatPermanent';
		pars += '&groupId=' + privateGroupId;
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
			if (trimAll(transport.responseText) == "private") {
				document.getElementById("make_private_chat_permanent").disabled=false
			}
			else {
				document.getElementById("make_private_chat_permanent").disabled=true
			}
		  }
		});
	}
}


// Rename Private Chat - RK 2-8-08
function renamePrivateChat() {
	//if element exists
	if (document.getElementById("rename_private_chat")) {
		//if rename_private_chat exists
		var newname = document.getElementById("rename_private_chat").value;
		//And rename_private_chat is not blank
		if (newname != "") {
			//Rename chat 
			var url = 'api.php';
			var pars = 'choiceMade[]=renamePrivateChat';
			pars += '&groupId=' + privateGroupId;
			pars += '&newname=' + newname;
			url += "?";
			url += pars
			new Ajax.Request(url, {
			  method: 'get',
			  onSuccess: function(transport) {
				//The chat room is not private, do not continue
				if (trimAll(transport.responseText) == "not_private") {
					alert("This chat room is not private and cannot be renamed here.");
				
				}
				//After newname was trimmed of whitespace, no text remained, do not continue
				else if (trimAll(transport.responseText) == "nothing") {
					alert("You must type a name in the text box.");
				}
				//If no string is returned (the name was accepted), refresh browser
				else if (trimAll(transport.responseText) == "") {
					//refesh browser
					location.reload();
				}
			  }
			});
		}
		//If rename_private_chat is blank return message
		else {
			alert("Please type something in the rename box.");
		}
		document.getElementById("rename_private_chat").value = "";
	}
}		

// Checks to see if a private chat room has been renamed or saved RK 3-3-08
function checkPrivateChatName() {
	if (document.getElementById("private_chat_name")) {
		var url = 'api.php';
		var pars = 'choiceMade[]=checkPrivateChatName';
		pars += '&privateGroupId=' + privateGroupId;
		
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
			response = (trimAll(transport.responseText));
			// Determine if private chat has been saved
			if (response == "") {
				clearInterval(int2)
				alert("This private chat has been saved as a permanent chat.  Your browser will be moved to the saved private chat.");
				window.location="groups_chat.php?groupId="+privateGroupId;
				return false;
			}
			// If not saved then add name to div
			document.getElementById('private_chat_name').innerHTML = response;
		  }
		});
	
	}
}

// Email Private Chat Transcript- RK 2-14-08
function emailPrivateChatTranscript() {
	var url = 'api.php';
	var pars = 'choiceMade[]=emailPrivateChatTranscript';
	pars += '&groupId=' + privateGroupId;
	url += "?";
	url += pars
	new Ajax.Request(url, {
	  method: 'get',
	  onSuccess: function(transport) {
		response = (trimAll(transport.responseText));
		//alert(response);
		if (response == "sent:_1") {
			alert("An email of this private chat has been sent.");
		}
		else if (response == "not_private"){
			alert("This is not a private chat.  No email has been sent.");
		}
		else {
			alert("Error: "+response);
		}
	  }
	});
}


//------------------------------------------------------------------------------------------------------
// ADD CHAT TEXT


function showOlderChatMessages() {				
	if (document.getElementById("chat_transcript_older") && !scrollInUse && !previousOccurred) {		
		if (!scrollPositionDown) {
			scrollPosition = document.getElementById("chat_transcript_older").scrollHeight - document.getElementById("chat_transcript_older").scrollTop
		}

		//var chatInput = document.getElementById("chat_transcript_older").innerHTML;
//alert(chatInput)
		var url = 'api.php';
		var pars = 'choiceMade[]=showOlderChatMessages';
		pars += '&groupId=' + groupId;
		pars += '&PHPSESSID=' + sessionId;
		pars += '&prevIncrmt=' + previousIncrement; // 1-8-08 - RK |
		pars += '&start=' + start; // 1-8-08 - RK |
		
		// add the pars to the url
		url += "?";
		url += pars
		
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		  	
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_transcript_older')) {
			  if (trimAll(transport.responseText).length != 0) {
			  //alert (transport.responseText.length)
			  	document.getElementById('chat_transcript_older').innerHTML = transport.responseText
			
				//var chatInput2 = document.getElementById('chat_transcript_older').innerHTML;
				//if (chatInput != chatInput2) {
					
					// SoundManager "http://www.schillmania.com/projects/soundmanager/" is used to control sounds.
					// For a description of how to apply it: "http://www.boutell.com/newfaq/creating/scriptsound.html"
					// Sound files may be found in the 'audio' folder.  In addition 'sound-config.xml' and 'soundcontroller.swf' 
					// are a part of the sound production process.
					// Additional coding is included in 'footer.php' and 'header.php'
					// RK - 3/13/08
					soundManager.play('newChat');
					//alert(trimAll(transport.responseText).length);
					//makeSounds();
					if (start == true) {start = false;}
					//alert(chatInput2)		
				//}
			  }
			}
			scrollOlderChat();
			detectPresenceOfNewChatter();
		  }
		});
	}
}


// RK 6/16/08 Notifies with a sound that a new user has entered a chat room
function detectPresenceOfNewChatter(){
	
	// Send ajax to database to find list of members present
	var url = 'api.php';
	var pars = 'choiceMade[]=getChatMemberList';
	pars += '&groupId=' + groupId;
	// add the pars to the url
	url += "?";
	url += pars;
	
	new Ajax.Request(url, {
		method: 'get',onSuccess: function(transport) {
		  response = trimAll(transport.responseText);
		  if (response.length != 0) {
			userArray = response.split(",");
			var userPresenceArrayTemp = new Array();
			cntUA = userArray.length-1;
			cntUPA = userPresenceArray.length-1;
			// Get a list of all users in chat room
			for (j=0;j<=cntUPA;j++){
				userid = userPresenceArray[j];
				// Find user ids that are both in local variable and returned by ajax call
				for (i=0;i<=cntUA;i++){
					if(userArray[i]==userid){
						userPresenceArrayTemp.push(userid);
					}
				}
			}
			userPresenceArray=userPresenceArrayTemp;
			
			// Add new users if any are found
			for (i=0;i<=cntUA;i++){
				userid = userArray[i];
				cntUPA = userPresenceArray.length-1
				itemfound = false;
				for (j=0;j<=cntUPA;j++){
					if(userPresenceArray[j]==userid){
						itemfound=true;
					}
				}
				if (itemfound==false){
					userPresenceArrayTemp.push(userid);
					soundManager.play('foundNewChatter');
				}
			}
		  }
		}
	})	  
}			  


function showOlderChatMessagesPrivate() {				
	if (document.getElementById("chat_transcript_older_private") && !scrollInUsePrivate && !previousOccurredPrivate) {		
		if (!scrollPositionDownPrivate) {
			scrollPositionPrivate = document.getElementById("chat_transcript_older_private").scrollHeight - document.getElementById("chat_transcript_older_private").scrollTop
		}

		//var chatInputPrivate = document.getElementById("chat_transcript_older_private").innerHTML;

		var url = 'api.php';
		var pars = 'choiceMade[]=showOlderChatMessagesPrivate';
		pars += '&groupId=' + privateGroupId;
		pars += '&PHPSESSID=' + sessionId;
		pars += '&prevIncrmtPrivate=' + previousIncrementPrivate; // 1-8-08 - RK |
		pars += '&startPrivate=' + startPrivate; // 1-8-08 - RK |
		
		// add the pars to the url
		url += "?";
		url += pars
		
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		  	
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_transcript_older_private')) {
			  if (trimAll(transport.responseText).length != 0) {
			  //alert (transport.responseText.length)
			  	document.getElementById('chat_transcript_older_private').innerHTML = transport.responseText
			
				//var chatInputPrivate2 = document.getElementById('chat_transcript_older_private').innerHTML;
				//if (chatInputPrivate != chatInputPrivate2) {
					
					// SoundManager "http://www.schillmania.com/projects/soundmanager/" is used to control sounds.
					// For a description of how to apply it: "http://www.boutell.com/newfaq/creating/scriptsound.html"
					// Sound files may be found in the 'audio' folder.  In addition 'sound-config.xml' and 'soundcontroller.swf' 
					// are a part of the sound production process.
					// Additional coding is included in 'footer.php' and 'header.php'
					// RK - 3/13/08
					soundManager.play('newChatPrivate');
					//alert("lower");
					//makeSounds();
					if (startPrivate == true) {startPrivate = false;}

				//}
			  }
			}
			scrollOlderChatPrivate();
		  }
		});
	}
}



function trimAll(sString) {
	while (sString.indexOf(String.fromCharCode(13)) != -1) {
		sString = sString.replace(String.fromCharCode(13),"");
	}
	while (sString.indexOf(String.fromCharCode(10)) != -1) {
		sString = sString.replace(String.fromCharCode(10),"");
	}
	//alert (sString.length);
	return sString;
}


function postNewChatMessage() {
	if (document.getElementById("chat_alerts_for_user")) document.getElementById("chat_alerts_for_user").innerHTML = ""; 
	if (document.getElementById("chat_send")) {
		if (document.getElementById("chat_input")) {
			var chatInput = document.getElementById("chat_input").value;
			document.getElementById("chat_input").value = "";	
			document.getElementById("chat_input").focus(); 
		}

		if (chatInput == "") {
			if (document.getElementById("chat_alerts_for_user")) document.getElementById("chat_alerts_for_user").innerHTML = "You haven't written anything"; 
			return false;
		}
		
		var url = 'api.php';
		var pars = 'choiceMade[]=addNewChatMessage';
		pars += '&groupId=' + groupId;
		pars += '&message=' + chatInput;
		pars += '&PHPSESSID=' + sessionId;
		// add the pars to the url
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_alerts_for_user')) {
			  document.getElementById('chat_alerts_for_user').innerHTML = transport.responseText	
			}
			//showRecentChat()
			showOlderChatMessages();
		  }
		});
	}

	return false;
}


function postNewChatMessagePrivate() {
	if (document.getElementById("chat_alerts_for_user_private")) document.getElementById("chat_alerts_for_user_private").innerHTML = ""; 
	if (document.getElementById("chat_send_private")) {
		if (document.getElementById("chat_input_private")) {
			var chatInputPrivate = document.getElementById("chat_input_private").value;
			document.getElementById("chat_input_private").value = "";	
			document.getElementById("chat_input_private").focus(); 
		}

		if (chatInputPrivate == "") {
			if (document.getElementById("chat_alerts_for_user_private")) document.getElementById("chat_alerts_for_user_private").innerHTML = "You haven't written anything"; 
			return false;
		}
		
		var url = 'api.php';
		var pars = 'choiceMade[]=addNewChatMessage';
		pars += '&groupId=' + privateGroupId;
		pars += '&message=' + chatInputPrivate;
		pars += '&PHPSESSID=' + sessionId;
		// add the pars to the url
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_alerts_for_user_private')) {
			  document.getElementById('chat_alerts_for_user_private').innerHTML = transport.responseText	
			}
			showOlderChatMessagesPrivate();
		  }
		});
	}

	return false;
}


// 1-7-08 - RK - Makes delete chat button function.
function deleteChatPost() {
	
	if (document.getElementById("chat_post_delete")) {

		var r=confirm("Are You Sure You Want To Delete All Chat Posts?")
		if (r==false){return null;}
										
		var url = 'api.php';
		var pars = 'choiceMade[]=deleteChatPost';
		pars += '&groupId=' + groupId;
		url += "?";
		url += pars
		new Ajax.Request(url, {method: 'get', onSuccess: function(transport) {
				document.getElementById('chat_transcript_older').innerHTML = "";
			}
		});
	}
	return false;
}


addLoadEvent(function() {
	if (document.getElementById("chat_post_delete")) {
		var referenceToDeleteChatPostButton = document.getElementById("chat_post_delete");
		referenceToDeleteChatPostButton.onclick = function() {
			deleteChatPost(); 	
			return false; 
		}	
	}
});



// 1-7-08 - RK - Makes previous button function.
function addPreviousChat() {
	if (document.getElementById("chat_previous")) {	
		
		previousOccurred = true;
		scrollPrevious = document.getElementById("chat_transcript_older").scrollHeight - document.getElementById("chat_transcript_older").scrollTop;		
		previousIncrement = previousIncrement + 1;
				
		var url = 'api.php';
		var pars = 'choiceMade[]=showOlderChatMessages';
		pars += '&groupId=' + groupId;
		pars += '&PHPSESSID=' + sessionId;
		pars += '&prevIncrmt=' + previousIncrement;		
		// add the pars to the url
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_transcript_older')) {
			  document.getElementById('chat_transcript_older').innerHTML = transport.responseText	
			}
			scrollToPrevious();
		  }
		});
	}
	return false;
}


// 1-7-08 - RK - Makes previous button function.
function addPreviousChatPrivate() {
	if (document.getElementById("chat_previous_private")) {
		
		previousOccurredPrivate = true;
		scrollPreviousPrivate = document.getElementById("chat_transcript_older_private").scrollHeight - document.getElementById("chat_transcript_older_private").scrollTop;		
		previousIncrementPrivate = previousIncrementPrivate + 1;
				
		var url = 'api.php';
		var pars = 'choiceMade[]=showOlderChatMessages';
		pars += '&groupId=' + privateGroupId;
		pars += '&PHPSESSID=' + sessionId;
		pars += '&prevIncrmt=' + previousIncrementPrivate;		
		// add the pars to the url
		url += "?";
		url += pars
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport) {
		
			// instead of "target" update the HTML in "chat_transcript_older" yourself
			if (document.getElementById('chat_transcript_older_private')) {
			  document.getElementById('chat_transcript_older_private').innerHTML = transport.responseText	
			}
			scrollToPreviousPrivate();
		  }
		});
	}
	return false;
}


//------------------------------------------------------------------------------------------------------
// SCROLLING


// 1-8-08 - RK - Makes scroll go to bottom of chat window.
function scrollToBottom() {
	if (document.getElementById("chat_transcript_older")) {
		var refToTranscriptOlder = document.getElementById("chat_transcript_older");
		refToTranscriptOlder.scrollTop = refToTranscriptOlder.scrollHeight;
		//alert("Test")
		scrollPositionBottom = (refToTranscriptOlder.scrollHeight-refToTranscriptOlder.scrollTop)
		scrollPositionDown = true
	}
	/*if (document.getElementById("chat_transcript")) {
		var refToTranscript = document.getElementById("chat_transcript");
		refToTranscript.scrollTop = refToTranscript.scrollHeight;
	}*/

}


function scrollToBottomPrivate() {
	if (document.getElementById("chat_transcript_older_private")) {
		var refToTranscriptOlderPrivate = document.getElementById("chat_transcript_older_private");
		refToTranscriptOlderPrivate.scrollTop = refToTranscriptOlderPrivate.scrollHeight;
		scrollPositionBottomPrivate = (refToTranscriptOlderPrivate.scrollHeight-refToTranscriptOlderPrivate.scrollTop)
		scrollPositionDownPrivate = true
	}
	/*if (document.getElementById("chat_transcript_private")) {
		var refToTranscript = document.getElementById("chat_transcript_private");
		refToTranscript.scrollTop = refToTranscript.scrollHeight;
	}*/

}


function scrollOlderChat() {
	if (document.getElementById("chat_transcript_older")) {
		var refToTranscriptOlder = document.getElementById("chat_transcript_older");
		if (!scrollPositionDown) {
			refToTranscriptOlder.scrollTop = refToTranscriptOlder.scrollHeight - scrollPosition;
		}
		else {
			refToTranscriptOlder.scrollTop = refToTranscriptOlder.scrollHeight;
		}
	}
}


function scrollOlderChatPrivate() {
	if (document.getElementById("chat_transcript_older_private")) {
		var refToTranscriptOlderPrivate = document.getElementById("chat_transcript_older_private");
		if (!scrollPositionDownPrivate) {
			refToTranscriptOlderPrivate.scrollTop = refToTranscriptOlderPrivate.scrollHeight - scrollPositionPrivate;
		}
		else {
			refToTranscriptOlderPrivate.scrollTop = refToTranscriptOlderPrivate.scrollHeight;
		}
	}
}


function scrollNotInUse() {
	scrollFiringsTSR = scrollFiringsTSR + 1;
	if (scrollFirings == scrollFiringsTSR) {
		scrollInUse = false;
		//alert(scrollFirings)
		scrollFirings = 0;
		scrollFiringsTSR = 0;
	}
}

function scrollNotInUsePrivate() {
	scrollFiringsTSRPrivate = scrollFiringsTSRPrivate + 1;
	if (scrollFiringsPrivate == scrollFiringsTSRPrivate) {
		scrollInUsePrivate = false;
		//alert(scrollFirings)
		scrollFiringsPrivate = 0;
		scrollFiringsTSRPrivate = 0;
	}
}


function scrollPos() {
	if (scrollPositionBottom == (document.getElementById("chat_transcript_older").scrollHeight - document.getElementById("chat_transcript_older").scrollTop)) {
		scrollPositionDown = true;
	}
	else {scrollPositionDown = false;}
	scrollInUse = true
	scrollFirings = scrollFirings + 1
	setTimeout("scrollNotInUse()", 2000);
}

function scrollPosPrivate() {
	if (scrollPositionBottomPrivate == (document.getElementById("chat_transcript_older_private").scrollHeight - document.getElementById("chat_transcript_older_private").scrollTop)) {
		scrollPositionDownPrivate = true;
	}
	else {scrollPositionDownPrivate = false;}
	scrollInUsePrivate = true
	scrollFiringsPrivate = scrollFiringsPrivate + 1
	setTimeout("scrollNotInUsePrivate()", 2000);
}


// 1-9-08 - RK - Maintains scroll position in text after 'previous' data is added
function scrollToPrevious() {
	document.getElementById("chat_transcript_older").scrollTop = document.getElementById("chat_transcript_older").scrollHeight - scrollPrevious
	previousOccurred = false
}

function scrollToPreviousPrivate() {
	document.getElementById("chat_transcript_older_private").scrollTop = document.getElementById("chat_transcript_older_private").scrollHeight - scrollPreviousPrivate
	previousOccurredPrivate = false
}



//------------------------------------------------------------------------------------------------------
// CAPTURE KEY STROKES


// 1-10-08 - RK -  Captures Enter Key Stroke and initiates chat_send (Talk) button
function detectEnterKey(e) {
	if(document.getElementById("chat_input")) {
		var referenceToChatInputButton = document.getElementById("chat_input");
		if (referenceToChatInputButton.onkeyup) {
			var KeyID = (window.event) ? event.keyCode : e.which;
			if(KeyID == 13) {
				var chatInput = document.getElementById("chat_input").value;
				if (chatInput.length == 1) {
					document.getElementById("chat_input").value = "";
				}	
				postNewChatMessage();
			}			
		}
	}
}

function detectEnterKeyPrivate(e) {
	if(document.getElementById("chat_input_private")) {
		var referenceToChatInputButton = document.getElementById("chat_input_private");
		if (referenceToChatInputButton.onkeyup) {
			var KeyID = (window.event) ? event.keyCode : e.which;
			if(KeyID == 13) {
				var chatInput = document.getElementById("chat_input_private").value;
				if (chatInput.length == 1) {
					document.getElementById("chat_input_private").value = "";
				}	
				postNewChatMessagePrivate();
			}			
		}
	}
}



//------------------------------------------------------------------------------------------------------
// SOUNDS

// DELETE playSounds.php

//NO LONGER USED - 3/13/08 - RK  
// Places and embed tag in chat_alerts_for_user.  newChat.wav is played. RK - 2-18-08
/*
function makeSounds() {
	if (document.getElementById("chat_alerts_for_user")) {
		var url = 'api.php';
		var pars = 'choiceMade[]=playSounds';
		pars += '&groupId=' + groupId;
		pars += '&PHPSESSID=' + sessionId;
		var target = 'chat_alerts_for_user';	
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});				
	}	
}
*/

//------------------------------------------------------------------------------------------------------
// ROLL CALL 


function i_am_here_now() {
	// 11-19-07 - we need a way to list who is in a chat room. The chat
	// rooms are not really working yet, because when you enter a chat
	// room you've no idea if anyone else is in there with you. So we
	// need a new database table, chat_rooms_who_is_here_now, and 
	// we need two Javascript functions, one to put stuff into that
	// database table, and one to take it out. The list of who is 
	// in a chat room will be written to the div with the id of
	// chat_roll_call. 
	
	
	if (groupId) {
		if (document.getElementById("chat_roll_call")) {		
			var url = 'api.php';
			var pars = 'choiceMade[]=iAmHereNow';
			pars += '&groupId=' + groupId;
			pars += '&privateGroupId=' + privateGroupId;
			pars += '&PHPSESSIONID=' + sessionId;
			var target = 'chat_alerts_for_user';	
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
		}
	}
	who_is_here_now();
	fillMemberListSelect();
	groups_i_belong_to()
			
}

		
function who_is_here_now() {
	// 11-19-07 - we need a way to list who is in a chat room. The chat
	// rooms are not really working yet, because when you enter a chat
	// room you've no idea if anyone else is in there with you. So we
	// need a new database table, chat_rooms_who_is_here_now, and 
	// we need two Javascript functions, one to put stuff into that
	// database table, and one to take it out. The list of who is 
	// in a chat room will be written to the div with the id of
	// chat_roll_call. 
	
	if (groupId) {	
		if (document.getElementById("chat_roll_call")) {		
			var url = 'api.php';
			var pars = 'choiceMade[]=whoIsHereNow';
			pars += '&groupId=' + groupId;
			pars += '&PHPSESSIONID=' + sessionId;
			var target = 'chat_roll_call';
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
		}
	}			
}


		
function who_is_in_the_rest_stop() {
	// 01-23-09 - this is obvioiusly based on who_is_here_now. However,
	// I want to call this on the Sober Salon blog:
	//
	// http://www.thesecondroad.org/tsr/ 
	//
	// The goal is to entice more people to join the chat rooms, by
	// showing who in the chat room at any given moment. 
	

	if (document.getElementById("chat_roll_call")) {		
		var url = 'api.php';
		var pars = 'choiceMade[]=whoIsHereNow';
		pars += '&groupId=' + 12;
		pars += '&PHPSESSIONID=' + sessionId;
		var target = 'chat_roll_call';
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
	}				
}



function groups_i_belong_to() {
	//Fills groups_i_belong_to in groups_chat.php with both chat groups and roll call for each of those chat groups.	
	if (groupId) {	
		
		//This fills each individual groups_i_belong_to div with a separate group name that the user is a member of
		var divCounter = 0
		while (document.getElementById("groups_i_belong_to_" + divCounter)) {

			var url = 'api.php';
			var pars = 'choiceMade[]=groupsIBelongTo';
			pars += '&divCounter=' + divCounter;
			var target = 'groups_i_belong_to_' + divCounter;
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});

			divCounter=divCounter+1
		}
		
		//This fills each roll_call_in_my_groups div, which appears one per groups_i_belong_to div, with the roll call for that group
		divCounter = 0
		while (document.getElementById("roll_call_in_my_groups_" + divCounter)) {
			var url = 'api.php';
			var pars = 'choiceMade[]=rollCallOfGroupsIBelongTo';
			pars += '&divCounter=' + divCounter;
			var target = 'roll_call_in_my_groups_' + divCounter;
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});

			divCounter=divCounter+1
		}
		
		// RK - 3-14-08
		//This fills each individual private_groups_i_belong_to div with a separate group name that the user is a member of in sidebar.php
		var divCounter = 0
		while (document.getElementById("private_groups_i_belong_to_" + divCounter)) {

			var url = 'api.php';
			var pars = 'choiceMade[]=privateGroupsIBelongTo';
			pars += '&divCounter=' + divCounter;
			pars += '&groupId=' + groupId;
			var target = 'private_groups_i_belong_to_' + divCounter;
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});

			divCounter=divCounter+1
		}
		
		// RK - 3-14-08
		//This fills each roll_call_in_my_private_groups div, which appears one per private_groups_i_belong_to div, with the roll call for that group in sidebar_groups.php
		divCounter = 0
		while (document.getElementById("roll_call_in_my_private_groups_" + divCounter)) {
			var url = 'api.php';
			var pars = 'choiceMade[]=rollCallOfPrivateGroupsIBelongTo';
			pars += '&divCounter=' + divCounter;
			var target = 'roll_call_in_my_private_groups_' + divCounter;
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});

			divCounter=divCounter+1
		}
		
	}			
}


//Temporary - RK - 1-23-08
/*
function who_is_in_chat_rooms() {	
	if (groupId) {	
		if (document.getElementById("chat_alerts_for_user")) {		
			var url = 'api.php';
			var pars = 'choiceMade[]=whoIsInChatRooms';
			pars += '&PHPSESSIONID=' + sessionId;
			var target = 'chat_alerts_for_user';
			var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
		}
	}			
}
*/


//------------------------------------------------------------------------------------------------------
// LOAD EVENTS


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}



addLoadEvent(function() {
	if (document.getElementById("chat_send")) {
		var referenceToChatSubmitButton = document.getElementById("chat_send");
		referenceToChatSubmitButton.onclick = function() {
			postNewChatMessage(); 	
			return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_send_private")) {
		var referenceToChatSubmitButton = document.getElementById("chat_send_private");
		referenceToChatSubmitButton.onclick = function() {
			postNewChatMessagePrivate(); 	
			return false; 
		}	
	}
});


// 1-10-08 - RK - Detect Manual Scroll
addLoadEvent(function() {
	if (document.getElementById("chat_transcript_older")) {
		var referenceToChatTranscriptOlderButton = document.getElementById("chat_transcript_older");
		referenceToChatTranscriptOlderButton.onscroll = function() {
			scrollPos(); 	
			return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_transcript_older_private")) {
		var referenceToChatTranscriptOlderButton = document.getElementById("chat_transcript_older_private");
		referenceToChatTranscriptOlderButton.onscroll = function() {
			scrollPosPrivate(); 	
			return false; 
		}	
	}
});




// 1-10-08 - RK - Adds Function to capture Enter Key stroke and initiate chat_send (Talk) button
addLoadEvent(function() {
	if (document.getElementById("chat_input")) {
		var referenceToChatInputButton = document.getElementById("chat_input");
		referenceToChatInputButton.onkeyup = function(e) {
			detectEnterKey(e); 	
			return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_input_private")) {
		var referenceToChatInputButton = document.getElementById("chat_input_private");
		referenceToChatInputButton.onkeyup = function(e) {
			detectEnterKeyPrivate(e); 	
			return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_transcript_older")) {
		showOlderChatMessages(); 
		setTimeout("scrollToBottom()", 500); // 1-8-08 - RK Brings scroll to bottom of chat_transcript_older on load	
		setInterval("showOlderChatMessages()", 4000);
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_transcript_older_private")) {
		showOlderChatMessagesPrivate(); 
		setTimeout("scrollToBottomPrivate()", 500); // 1-8-08 - RK Brings scroll to bottom of chat_transcript_older on load	
		setInterval("showOlderChatMessagesPrivate()", 4000);
	}
});


// 1-8-08 - RK - Launches 'Previous' button.
addLoadEvent(function() {
	if (document.getElementById("chat_previous")) {
		var referenceToChatPreviousButton = document.getElementById("chat_previous");
		referenceToChatPreviousButton.onclick = function() {
		addPreviousChat(); 	
		return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("chat_previous_private")) {
		var referenceToChatPreviousButton = document.getElementById("chat_previous_private");
		referenceToChatPreviousButton.onclick = function() {
		addPreviousChatPrivate(); 	
		return false; 
		}	
	}
});



// 1-29-08 - RK - Create Chat New Chat Room Button
addLoadEvent(function() {
	if (document.getElementById("create_chat_room")) {
		var referenceToCreateChatRoomSubmitButton = document.getElementById("create_chat_room");
		referenceToCreateChatRoomSubmitButton.onclick = function() {
			chatInvitationExtend(); 	
			return false; 
		}	
	}
});

addLoadEvent(function() {
	if (document.getElementById("membership_list")) {
		var url = 'api.php';
		var pars = 'choiceMade[]=fillMemberListSelect';
		pars += '&groupId=' + groupId;
		var target = 'membership_list';	
		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
	}
	//fillMemberListSelect(); 
	//setInterval("fillMemberListSelect()", 5000);
});

addLoadEvent(function() {
	if (document.getElementById("create_chat_room")) {
		chatAcceptanceLookForInvitation(); 
		int = setInterval("chatAcceptanceLookForInvitation()", 5000);
	}
});


// 2-7-08 - RK - Make Chat Permanent
addLoadEvent(function() {
	if (document.getElementById("make_private_chat_permanent")) {
		enableMakePrivateChatPermanent()
		var referenceToMakePrivateChatPermanentSubmitButton = document.getElementById("make_private_chat_permanent");
		referenceToMakePrivateChatPermanentSubmitButton.onclick = function() {
			makePrivateChatPermanent(); 	
			return false; 
		}	
	}
});


// Rename Private Chat - RK 2-8-08
addLoadEvent(function() {
	if (document.getElementById("launch_rename_private_chat")) {
		var referenceToLaunchRenamePrivateChatSubmitButton = document.getElementById("launch_rename_private_chat");
		referenceToLaunchRenamePrivateChatSubmitButton.onclick = function() {
			renamePrivateChat(); 
			return false; 
		}	
	}
});

// Checks to see if a private chat room has been renamed or saved RK 3-3-08
addLoadEvent(function() {
	if (document.getElementById("private_chat_name")) {
		checkPrivateChatName()
		int2 = setInterval("checkPrivateChatName()", 15000);
	}
});


// Email Private Chat Transcript- RK 2-14-08
addLoadEvent(function() {
	if (document.getElementById("email_chat")) {
		var referenceToEmailPrivateChatTranscriptSubmitButton = document.getElementById("email_chat");
		referenceToEmailPrivateChatTranscriptSubmitButton.onclick = function() {
			emailPrivateChatTranscript(); 
			return false; 
		}	
	}
});



addLoadEvent(function() {
	i_am_here_now(); 
	setInterval("i_am_here_now()", 9000);
});



/*addLoadEvent(function() {
	who_is_here_now(); 
	setInterval("who_is_here_now()", 9000);
});
*/

//addLoadEvent(function() {
//	who_is_in_chat_rooms(); 
	//setInterval("who_is_in_chat_rooms()", 2000);
//});


addLoadEvent(function() {
	groups_i_belong_to(); 
});


//------------------------------------------------------------------------------------------------------
// INTERVALS

//setInterval("showRecentChat()", 2000);


//------------------------------------------------------------------------------------------------------
//TRASH BIN

//<embed src="sound.wav" hidden=true>
//<embed src="sound.wav" hidden=true autostart=false loop=false name="firstSound" MASTERSOUND>

//function showRecentChat() {
//	if (document.getElementById("chat_transcript")) {
//		var url = 'api.php';
//		var pars = 'choiceMade[]=showRecentChat';
//		pars += '&groupId=' + groupId;
//		pars += '&PHPSESSID=' + sessionId;
//		var target = 'chat_transcript';	
//		var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
//	}	
//}


//addLoadEvent(function() {
	//showRecentChat(); 
//});



