/* ###################################### */
/* ###################################### */
/*                                        */
/*     Ninja Post is powered by the       */
/*         Mr. Clean Ajax API             */
/*             by Mike Wilt               */
/*         mikewilt [AT] gmail            */
/*             (c) 2008                   */ 
/*                                        */
/* ###################################### */
/* ###################################### */


/* ******************************** */
/* Declare global variables         */
/* ******************************** */
var oRegisterUserName = "";
var oRegisterEmail = "";
var oRegisterCell = "";
var oConfirmEmail = "";
var oConfirmSMS = "";
var oNameBox = "";
var maxPostID = "";

var maxPostsPerThread = 399;
var limit = 25;
var limitPM = 25;
var checkPostsVar = 2500;
var boardHome = window.location.protocol + "//" + window.location.host;


/* ******************************** */
/* Begin postPage function          */
/* ******************************** */

function postPage(mode){
	var postPageRequest = false
		if (window.XMLHttpRequest) // if Mozilla, Safari, etc.
			postPageRequest = new XMLHttpRequest()
		else if (window.ActiveXObject){ // if IE
			try {
				postPageRequest = new ActiveXObject("Msxml2.XMLHTTP")
			} 
			catch (e){
			try{
				postPageRequest = new ActiveXObject("Microsoft.XMLHTTP")
			}
			catch (e){}
		}
	}
	else
		return false
		
		//retrieve variables for the page that's to be inserted 
		var variables = retrieveVars(mode);
		var containerID = variables.containerID;
		var url = variables.url;
		var params =  variables.params;
		var after = variables.after;

		// Execute ajax
		postPageRequest.onreadystatechange=function() { postLoadPage(postPageRequest, containerID, after); }
		postPageRequest.open('POST', url, true)
		postPageRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		postPageRequest.send(params);
}

function postLoadPage(postPageRequest, containerID, after) {
	if (postPageRequest.readyState == 4 && (postPageRequest.status==200)) {
		if (containerID == 'postList') {
			if (postPageRequest.responseText) {
				//stopCheckPosts(); // to prevent double post (similar function added to line 801)
				if(!getCookie('soundOff')) {soundManager.play('mySound');}				
				var JSONobject = JSON.parse(postPageRequest.responseText);
				

				if (document.getElementById('maxPostID').innerHTML != JSONobject[1]) {	
					
					document.getElementById(containerID).innerHTML += JSONobject[0];
					document.getElementById('maxPostID').innerHTML = JSONobject[1];			
					document.getElementById('numPosts').innerHTML = JSONobject[2];
					document.getElementById('numPostsPage').innerHTML = JSONobject[3];
					var tableID = JSONobject[4];
					
					// if the user is composing a reply don't move the page
					if (postReplyFocus == true) {
						var pinPagePX = document.getElementById('table' + tableID).offsetHeight;
						window.scrollBy(0,pinPagePX);
						}
					
					if (document.getElementById('numPosts').innerHTML < maxPostsPerThread) {
						//if (document.getElementById('numPostsPage').innerHTML <= limit) { checkPosts(); } //check for new messages if page is not full; match to getPosts.php
						} else {
							// document.getElementById('postReplyContainer').style.display = 'none';
							}
					}
				}
			} else if (containerID == 'pmList2') {
					if (postPageRequest.responseText) {
						//stopCheckPMs();
						if(!getCookie('soundOff')) {soundManager.play('mySound');}
						var JSONobject = JSON.parse(postPageRequest.responseText);

						document.getElementById(containerID).innerHTML += JSONobject[0];
						document.getElementById('maxPMID').innerHTML = JSONobject[1];			
						document.getElementById('numPMsPage').innerHTML = JSONobject[2];

						if (JSONobject[2] >= JSONobject[3]) {
							document.getElementById('pmReplyContainer').style.display = 'none';
							}
					}
				} else if (containerID == 'modInner'+modSign+postID) {
					if (postPageRequest.responseText) {
						var JSONobject = JSON.parse(postPageRequest.responseText);
						if (JSONobject[0] != 'noUpdate') {
							//alert('modInner'+modSign+postID);
							document.getElementById('modInner'+modSign+postID).innerHTML = JSONobject[0];
							}
						// document.getElementById('modPoints').innerHTML = JSONobject[0];
						if (JSONobject[1] == 'alert') { toggleFeedbackZone('caution','You moderated this post a maximum of three times.','300','3500'); } else {
							toggleFeedbackZone('success','Thanks for your feedback.','300','2500');
							}
						}		
				} else if (containerID == 'feedbackZone') {
					if (postPageRequest.responseText) {
						var JSONobject = JSON.parse(postPageRequest.responseText);
						toggleFeedbackZone(JSONobject[0],JSONobject[1],JSONobject[2],JSONobject[3]);
					}												
				}

				else if (containerID == 'quotePostReplyBox') {
					if (postPageRequest.responseText) {
						//document.getElementById("postReplyBox").focus(); // get focus first to accommodate IE bug so cursor goes at end of text
						document.getElementById("postReplyBox").value += postPageRequest.responseText;
						toggleFeedbackZone('success','Quote added to reply box.','300','2500');
					}												
				}
				
				else if (containerID == 'FireHoseDiv') {
					if(!getCookie('soundOff')) {soundManager.play('mySound');}
					document.getElementById(containerID).innerHTML=postPageRequest.responseText;
				}
				else if (containerID == 'appendThreads') {
					if (postPageRequest.responseText) {
						var JSONobject = JSON.parse(postPageRequest.responseText);
						document.getElementById('appendThreads'+pageToRefresh).innerHTML = JSONobject[0];
						document.getElementById('moreButton').innerHTML = JSONobject[1];
						pageToRefresh++;
						document.getElementById('feedbackZone').innerHTML = '';
						}
				}
				else if(containerID == 'activityBox'){
					if (postPageRequest.responseText) {
						var container = document.getElementById(containerID);
						var usersArray = JSON.parse(postPageRequest.responseText);
						if(usersArray.length <1){
							container.innerHTML = '';
							container.style.display='none';
						}else{
							var str = '<img src=images/greenled.png> ';
							str = str + 'Currently Typing:';
							for ( var i = 0; i < usersArray.length; i++) {
								if(usersArray.length > 1 && i >0){
									str = str + ", ";
								}
								str = str + ' ' + '<a href=/profile/' + usersArray[i]+ '>' + usersArray[i] + '</a>';
							}
							container.innerHTML = str;
							container.style.display='';
						}
					}	
				}
				else  {
					var container = document.getElementById(containerID);
					if(container !=  null){
						container.innerHTML=postPageRequest.responseText;
					}
				}
	
		if (after != null) {
	
			if (after == 'checkTheForm') {
				checkForm(numFields);
				}
			else if (after == 'pageTwoFocus') {
				//setTimeout( function() {document.getElementById("confirmEmail").focus();}, 1);
				document.getElementById("confirmEmail").focus();
				}
			else if (after == 'afterConfirmNewUser') {
				window.location.href=boardHome;
				}
			//else if (after == 'checkTheForm2') {
			//	checkForm('2');		
			//	}
			else if (after == 'insertMenu') {
			
				// use function to insert content onto page if user logs in while
				// viewing page.  E.g. Profile page.
			
				if (document.getElementById('displayThreadsContainer')) {
					//postPage('insertMenu');
					//} else if (document.getElementById('displayPostsContainer')) {
						//postPage('insertPostReply');
						} else if (document.getElementById('displayProfileContainer')) {
								// profile
								postPage('insertUsersProfile');
						}
				if (document.getElementById('userNameBox')) {
					//place cursor in user name box if log in error
					// FZ!
					toggleFeedbackZone('error','The user name and password you entered did not match.','500','6000');
					//var temp=setTimeout("document.getElementById('feedbackZone').innerHTML = ''; document.getElementById('feedbackZone').style.display = 'none'", 3000);
					//setTimeout(function() {document.getElementById('userNameBox').focus();}, 500 );
					}
				}		
			else if (after == 'updateNewThreadStatus') {
				// FZ!
				toggleFeedbackZone('success','Your thread has been posted.','300','4000');
								
				document.getElementById('addNewThreadButton').disabled = false;
				document.getElementById('newThreadTitleBox').disabled = false;
				document.getElementById('newThreadComposeBox').disabled = false;
				setFilter('all');
				
					var activeThreadCount = document.getElementById('activeThreadCount').innerHTML;
					
					if (activeThreadCount == "") {
						activeThreadCount = 0;
						}
					
					var incrementThreadCount = 1;
					activeThreadCount = Number(activeThreadCount) + Number(incrementThreadCount);
					
					document.getElementById('activeThreadCount').innerHTML = activeThreadCount;
				
				
				resetPreview();
				
				}
			else if (after == 'updateReplyStatus') {
				document.getElementById('postReplyBox').value = '';
				// FZ!
				toggleFeedbackZone('success','Your reply has been posted','250','5000');
				document.getElementById('postReplyButton').disabled = false;
				document.getElementById('postReplyBox').disabled = false;
				document.getElementById('postReplyBox').focus();
				
				// fix for Chrome textarea focus bug 
				document.getElementById('postReplyBox').value = " ";
				document.getElementById('postReplyBox').value = "";
				
				resetPreview();
				}
			else if (after == 'afterRemoveAvatar') {
				thefileVar = document.getElementById('avatarHere').innerHTML;
				document.getElementById('avatarFeedback').innerHTML = "Image removed. <a class='under' href='javascript:void(0);' onclick='closeAvatarPanel();'/>Click here to close window.</a>";
				}
			else if (after == 'openPMafter') {
				document.getElementById('newPMSubjectBox').focus();
				}
			else if (after == 'openPipeAfter') {
				document.getElementById('newPipePostSubjectBox').focus();
				}			
			else if (after == 'openFeedbackAfter') {
				if (document.getElementById('feedbackFromBox')) {
					document.getElementById('feedbackFromBox').focus();
					} else {
					document.getElementById('feedbackSubjectBox').focus();
					}
			}
			else if (after == 'newPMafter') {
					var temp2=setTimeout("closeMailPanel();", 1900);
			}

			else if (after == 'afterSaveTags') {
				toggleFeedbackZone('success','Tags saved','180','5000');
				}
				
			else if (after == 'newPipeAfter') {
				var temp2=setTimeout("closePipesPanel();", 1900);
				//toggleFeedbackZone('success','The news item has been posted.','300','4000');
				// just clear the caution message since success message is displayed inside pop up box
				document.getElementById('feedbackZone').style.display = 'none';
				document.getElementById('feedbackZone').innerHTML = '';
			}
						
			else if (after == 'feedbackAfter') {
				var temp3=setTimeout("closeFeedbackPanel();", 1900);
			}
			else if (after == 'reportToModAfter') {
				var temp4=setTimeout("closeMailPanel();", 1900);
			}
			else if (after == 'inviteAfter') {
				var temp5=setTimeout("closeInvitePanel();", 1900);			
			}
			else if (after == 'updatePMStatus') {
				document.getElementById('pmReplyBox').value = '';
				toggleFeedbackZone('success','Your reply has been posted','250','5000');
				document.getElementById('pmReplyButton').disabled = false;
				document.getElementById('pmReplyBox').disabled = false;
				document.getElementById('pmReplyBox').focus();
				
				// fix for Chrome textarea focus bug
				document.getElementById('pmReplyBox').value = " ";
				document.getElementById('pmReplyBox').value = "";				
				}
		
			else if (after == 'afterDelConvo') {
				document.getElementById('convo'+deleteConvoID).style.display = 'none';
				toggleFeedbackZone('caution','Message Deleted','180','4000');
				}

			else if (after == 'allThreadsAfter') {
				//highlightVertNavLink('allThreadsNav');
				setFilter('all');
				}
						
			else if (after == 'checkContentAfter') {
				addNewThreadPart2();
				}
			
			else if (after == 'checkContentPostAfter') {
				addNewPostPart2();
				}
			
			else if (after == 'openInviteAfter') {
				document.getElementById('inviteToNameBox').focus();
				}
			
			else if (after == 'afterYT') {
				// highlight the YT link
				// lowlight the All threads link and/or the Compose thread link, or any labels on the page
				// in other words, find the active link, and lowlight it
				//highlightVertNavLink('yourThreadsNav');
				
				document.getElementById('feedbackZone').style.display = 'none'; 
				document.getElementById('feedbackZone').innerHTML = '';
								
				setFilter('yt');
				}
			else if (after == 'afterEditPro') {
				document.getElementById(editProfileField+'ProfileBox').focus();
				}
			else if (after == 'deleteGalleryImageAfter') {
				document.getElementById('imageWrapper' + imageID).innerHTML = "";
				toggleFeedbackZone('caution','Image Deleted','180','4000');
				}
			else if (after == 'saveCaptionImageAfter') {
				toggleFeedbackZone('success','Caption Saved','180','4000');
				}				
			else if (after == 'searchAfter') {
				//searchAfterVar = true;
				//highlightVertNavLink('searchAfter');
				
				document.getElementById('feedbackZone').style.display = 'none'; 
				document.getElementById('feedbackZone').innerHTML = '';
				
				setFilter('search');
				}
			
			else if (after == 'afterEmailThreadSend') {
				var temp6=setTimeout("closeMailPanel();", 1900);
				}
			
			else if (after  == 'afterDeleteCat') {
				document.getElementById('editCatRow'+catRowToRemove).style.display = "none";			
				}
			
			else if (after == 'afterSaveCat') {
				editingCatRow = "false";
				}
			
			else if (after == 'afterMoreTweets') {
				if (document.getElementById('tweet_counter').innerHTML > 40) {
					document.getElementById('moreTweetsButton').innerHTML = '';
				}
			}
			
			else if (after == 'updatePreviewButton') {
				document.getElementById('previewContainer').style.display = "";
				document.getElementById('feedbackZone').innerHTML = '';
				}
			
		//	else if (after == 'afterUpdateToggleSetting') {
		//		if (settingToUpdate == 'designToggle') {
		//			window.location.reload();
		//			}
		//		}
			else if (after == 'afterSaveNavLinks') {
				document.getElementById('editNavLinksBox').disabled = true;	
				}
			else if (after == 'afterSaveCSS') {
				document.getElementById('editCssBox').disabled = true;	
				}		
							
		}
	}
}


/* ******************************** */
/* Return parameters for postPage   */
/* ******************************** */

/* consider using switch statements within this function */
function retrieveVars(mode) {

	//check database to determine if user name exists
	if (mode == "registerUserName") {
		oRegisterUserName = document.getElementById("registerUserName").value;
		var containerID = 'feedback_registerUserName';
		var url = 'validate.php';
		var params =  "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName);
		var after = 'checkTheForm';
		}
		
	//check database to determine if email address exists
	if (mode == "registerEmail") {
		oRegisterEmail = document.getElementById("registerEmail").value;
		var containerID = 'feedback_registerEmail';
		var url = 'validate.php';
		var params =  "mode=" + mode + "&email=" + encodeURIComponent(oRegisterEmail);
		var after = 'checkTheForm';
		}
	
	if (mode == "registerWhitelistEmail") {
		oRegisterEmail = document.getElementById("registerWhitelistEmail").value;
		var containerID = 'feedback_registerEmail';
		var url = 'validate.php';
		var params =  "mode=" + mode + "&email=" + encodeURIComponent(oRegisterEmail);
		var after = 'checkTheForm';
		}
	
	//check database to determine if cell phone number exists
	else if (mode == "registerCell") {
		oRegisterCell = document.getElementById("registerCell").value;
		var containerID = 'feedback_registerCell';
		var url = 'validate.php';
		var params =  "mode=" + mode + "&cell=" + encodeURIComponent(oRegisterCell);
		var after = 'checkTheForm';
		}

		
	// add a new user to the database
	else if (mode == "addNewUser") {
		var oRegisterPass = document.getElementById("registerPass").value;
		var selIndexCC = document.getElementById('selCountryCode').selectedIndex;
		var oCountryCode = document.getElementById('selCountryCode').options[selIndexCC].value;
		var containerID = 'registrationTableFields';
		var url = 'register.php';
		var params =  "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName) + "&email=" + encodeURIComponent(oRegisterEmail) + "&cCode=" + encodeURIComponent(oCountryCode) + "&cell=" + encodeURIComponent(oRegisterCell) + "&pass=" + encodeURIComponent(oRegisterPass);
		var after = 'pageTwoFocus';
	}

	// confirm email code
	else if (mode =="confirmEmail") {
		oConfirmEmail = document.getElementById("confirmEmail").value;
		var containerID = 'feedback_confirmEmail';
		var url = 'validate.php';
		var params = "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName) + "&codeEmail=" + encodeURIComponent(oConfirmEmail);
		var after = 'checkTheForm';
	}
	
	// confirm sms code
	else if (mode =="confirmSMS") {
		oConfirmSMS = document.getElementById("confirmSMS").value;
		var containerID = 'feedback_confirmSMS';
		var url = 'validate.php';
		var params = "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName) + "&codeSMS=" + encodeURIComponent(oConfirmSMS);
		var after = 'checkTheForm';
	}
	
	// activate new user
	else if (mode =="confirmNewUser") {
		var oRegisterUserID = getCookie('pageTwo');
		var containerID = 'generatingContainer';
		var url = 'register.php';
		var params = "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName) + "&userID=" + encodeURIComponent(oRegisterUserID);
		var after = 'afterConfirmNewUser';
	}

	else if (mode =="confirmWhiteUser") {
		oRegisterUserName = document.getElementById("registerUserName").value;
		oRegisterEmail = document.getElementById("registerEmail").innerHTML;
		var oRegisterPass = document.getElementById("registerPass").value;	
		var containerID = 'generatingContainer';
		var url = 'register.php';
		var params = "mode=" + mode + "&email=" + encodeURIComponent(oRegisterEmail) + "&userName=" + encodeURIComponent(oRegisterUserName) + "&pass=" + encodeURIComponent(oRegisterPass);
		var after = 'afterConfirmNewUser';
	}	

	else if (mode == "signInPage") {
		oRegisterUserName = document.getElementById("userNameBox").value;
		var oRegisterPass = document.getElementById("passwordBox").value;
		var containerID = 'logPanel';
		var url = 'signOutForm.php';
		var params = "mode=" + mode + "&userName=" + encodeURIComponent(oRegisterUserName) + "&password=" + encodeURIComponent(oRegisterPass);
		var after = "insertMenu";
	}

	// remove after revised sign in / register new uesr is in place
	else if (mode == "insertMenu") {
		var containerID = 'menu';
		var url = 'menu.php';
		var params = null;
		var after = null;
	}	
	
	else if (mode == "addThread") {
		var oTitle = document.getElementById('newThreadTitleBox').value;
		var oContent = document.getElementById('newThreadComposeBox').value;
		var oUserID = document.getElementById('userID').innerHTML;
		
		var containerID = 'threadList';
		var url = 'add.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&title=" + encodeURIComponent(oTitle) + "&content=" + encodeURIComponent(oContent);
		var after = 'updateNewThreadStatus';			
	}
	
	else if (mode == "postReply") {
		var oReply = document.getElementById('postReplyBox').value;
		var oUserID = document.getElementById('userID').innerHTML;
		var oThreadID = document.getElementById('threadID').innerHTML;
		var oMaxPostID = document.getElementById('maxPostID').innerHTML;
		var oNumPosts = document.getElementById('numPosts').innerHTML;
		var oNumPostsPage = document.getElementById('numPostsPage').innerHTML;
		var containerID = 'postList';
		var url = 'add.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oThreadID) + "&reply=" + encodeURIComponent(oReply) + "&maxPostID=" + encodeURIComponent(oMaxPostID) + "&numPosts=" + encodeURIComponent(oNumPosts) + "&numPostsPage=" + encodeURIComponent(oNumPostsPage);
		var after = 'updateReplyStatus';					
	}
	else if (mode == "insertPostReply") {
		var containerID = 'postReplyContainer';
		var url = 'postReplyForm.php';
		var params = null;
		var after = null;
	}
	else if (mode =='checkPosts') {
		var oThreadID = document.getElementById('threadID').innerHTML;
		var oMaxPostID = document.getElementById('maxPostID').innerHTML;
		var oNumPosts = document.getElementById('numPosts').innerHTML;
		var oNumPostsPage = document.getElementById('numPostsPage').innerHTML;
		var containerID = 'postList';
		var url = 'check.php';
		var params = "mode=" + mode + "&threadID=" + encodeURIComponent(oThreadID) + "&maxPostID=" + encodeURIComponent(oMaxPostID) + "&numPosts=" + encodeURIComponent(oNumPosts) + "&numPostsPage=" + encodeURIComponent(oNumPostsPage);
		var after = null;
	}
	
	else if (mode =='checkPostActivity') {
		var oThreadID = document.getElementById('threadID').innerHTML;
		var oMaxPostID = document.getElementById('maxPostID').innerHTML;
		var oNumPosts = document.getElementById('numPosts').innerHTML;
		var oNumPostsPage = document.getElementById('numPostsPage').innerHTML;
		var containerID = 'activityBox';
		var url = 'checkActivity.php';
		var params = "mode=" + mode + "&threadID=" + encodeURIComponent(oThreadID) + "&maxPostID=" + encodeURIComponent(oMaxPostID) + "&numPosts=" + encodeURIComponent(oNumPosts) + "&numPostsPage=" + encodeURIComponent(oNumPostsPage);
		var after = null;
	}
	
	else if (mode == 'removeAvatar') {
		// profile
		var oUserID = document.getElementById('userID').innerHTML;
		var containerID = 'avatarHere';
		var url = 'updateProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID);
		var after = 'afterRemoveAvatar';
		}

	else if (mode == 'deleteGalleryImage') {
		var containerID = 'galleryFeedback';
		var url = 'processUploadGallery.php';
		var params = "mode=" + mode + "&imageID=" + encodeURIComponent(imageID);
		var after = 'deleteGalleryImageAfter';	
		}
	else if (mode == 'saveCaptionImage') {
		var containerID = 'galleryFeedback';
		var url = 'processUploadGallery.php';
		var params = "mode=" + mode + "&imageID=" + encodeURIComponent(imageID)+ "&caption=" + encodeURIComponent(caption);
		var after = 'saveCaptionImageAfter';
		}	
	else if (mode == 'moderate') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oAffectedUserID = affectedUserID;
		var oPostID = postID;
		var oSign = modSign;
		var oPostCount = postCount;
		var containerID = 'modInner' + modSign + postID;
		var url = 'moderate.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&affectedUserID=" + encodeURIComponent(oAffectedUserID) + "&postID=" + encodeURIComponent(oPostID) + "&sign=" + encodeURIComponent(oSign) + "&postCount=" + encodeURIComponent(oPostCount);
		var after = null;
		}
	
	else if (mode == 'openPM') {
		var oUserID = document.getElementById('userID').innerHTML;
		var containerID = 'mailForm';
		var url = 'pmForm.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&recipientID=" + encodeURIComponent(openPMrecipientId) + "&recipient=" + encodeURIComponent(openPMrecipient)+ "&recipientAvatar=" + encodeURIComponent(openPMavatar);
		var after = 'openPMafter';
	}

	else if (mode == 'openPipePost') {
		var oTitleContentPipe = document.getElementById('titleContentPipe'+pipeID).innerHTML;
		var oPostContentPipe = document.getElementById('postContentPipe'+pipeID).innerHTML;
		var oLinkContentPipe = document.getElementById('linkContentPipe'+pipeID).innerHTML;
		//var oImagePipe = document.getElementById('imagePipe'+pipeID).innerHTML;	
		var containerID = 'pipesPostForm';
		var url = 'pipesForm.php';
		var params = "mode=" + mode + "&titleContentPipe=" + encodeURIComponent(oTitleContentPipe) + "&postContentPipe=" + encodeURIComponent(oPostContentPipe) + "&linkContentPipe=" + encodeURIComponent(oLinkContentPipe); // + "&imagePipe=" + encodeURIComponent(oImagePipe)
		var after = 'openPipeAfter';
	}

	else if (mode == 'newPipePost') {
		var oPipeSubject = document.getElementById('newPipePostSubjectBox').value;
		var oPipeContent = document.getElementById('newPipeBox').value;
		var containerID = 'popUpContentPipe';
		var url = 'pipeAdd.php';
		var params = "mode=" + mode + "&newPipePostSubjectBox=" + encodeURIComponent(oPipeSubject)+ "&newPipeBox=" + encodeURIComponent(oPipeContent);
		var after = 'newPipeAfter';
	}
	
	else if (mode == 'tweetThread') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oTweetThreadID = tweetThreadID;
		var containerID = 'mailForm';
		var url = 'crosspost.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oTweetThreadID);
		var after = null; //'tweetAfter';
	}
	
	else if (mode == 'tweetPost') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oTweetThreadID = tweetThreadID;
		var oTweetPostID = tweetPostID;
		var oTweetPostCount = tweetPostCount;
		var containerID = 'mailForm';
		var url = 'crosspost.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oTweetThreadID) + "&postID=" + encodeURIComponent(oTweetPostID) + "&postCount=" + encodeURIComponent(oTweetPostCount);
		var after = null; //'tweetAfter';
	}
	
	else if (mode == 'openFeedback') {
		var containerID = 'feedbackForm';
		var url = 'feedbackForm.php';
		var params = null;
		var after = 'openFeedbackAfter';
	}

	else if (mode == 'openReport') {
		var oReportID = reportID;
		var oTable = reportTable;
		var containerID = 'mailForm';
		var url = 'reportForm.php';
		var params = "reportID=" + encodeURIComponent(oReportID) + "&table=" + encodeURIComponent(oTable);
		var after = null;
	}
	
	else if (mode == 'newPM') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oPMsubject = document.getElementById('newPMSubjectBox').value;
		var oPMcontent = document.getElementById('newPMBox').value;
		var containerID = 'popUpContentPM';
		var url = 'pmAdd.php';
		var params = "mode=" + mode + "&senderID=" + encodeURIComponent(oUserID) + "&recipientID=" + encodeURIComponent(PMrecipientId) + "&subject=" + encodeURIComponent(oPMsubject)+ "&content=" + encodeURIComponent(oPMcontent);
		var after = 'newPMafter';
	}
	
	else if (mode == 'submitFeedback') {
		var oFeedSubject = document.getElementById('feedbackSubjectBox').value;
		var oFeedContent = document.getElementById('feedbackBox').value;	
		var containerID = 'popUpContentFeedback';
		var url = 'report.php';
		var params = "mode=" + mode + "&senderID=" + encodeURIComponent(feedbackSenderID) + "&subject=" + encodeURIComponent(oFeedSubject)+ "&content=" + encodeURIComponent(oFeedContent);
		var after = 'feedbackAfter';		
	}
	
	else if (mode == 'submitInvite') {
		var oSenderID = document.getElementById('userID').innerHTML;
		var oInviteFromName = document.getElementById('inviteFromNameBox').value;
		var oInviteFromEmail = document.getElementById('inviteFromEmail').innerHTML;
		var oInviteToName = document.getElementById('inviteToNameBox').value;
		var oInviteToEmail = document.getElementById('inviteToEmailBox').value;
		var oInviteContent = document.getElementById('inviteBox').value;
		
		var containerID = 'popUpContentInvite';
		var url = 'invite.php';
		var params = "mode=" + mode + "&senderID=" + encodeURIComponent(oSenderID) + "&inviteFromEmail=" + encodeURIComponent(oInviteFromEmail) + "&inviteFromName=" + encodeURIComponent(oInviteFromName) + "&inviteToName=" + encodeURIComponent(oInviteToName)+ "&inviteToEmail=" + encodeURIComponent(oInviteToEmail)+ "&content=" + encodeURIComponent(oInviteContent);
		var after = 'inviteAfter';			
		}
	
	else if (mode == 'reportToMod') {
		var oReportID = submitReportID;
		var oTable = submitReportTable;
		var selReportReason = document.getElementById('reportToModDD').selectedIndex;
		var oReportReason = document.getElementById('reportToModDD').options[selReportReason].value;
		var oReportContent = document.getElementById('reportBox').value;	
		var containerID = 'popUpContentReport';
		var url = 'report.php';
		var params = "mode=" + mode + "&reportID=" + encodeURIComponent(oReportID) + "&table=" + encodeURIComponent(oTable) + "&reportReason=" + encodeURIComponent(oReportReason) + "&reportContent=" + encodeURIComponent(oReportContent);
		var after = 'reportToModAfter';
	}
	else if (mode == 'refreshThreads') {
		var oPageToRefresh = pageToRefresh;
		var containerID = 'appendThreads';
		var url = 'getThreads.php';
		var params = "pageID=" + encodeURIComponent(oPageToRefresh);
		// var after = 'allThreadsAfter';
		var after = null;
		}
	
	else if (mode == 'showPM') {
		// profile
		var oUserID = document.getElementById('userID').innerHTML;
		var containerID = 'pmList-I';
		var url = 'getInbox.php';
		var params = "mode=" + pmContainerMode + "&userID=" + encodeURIComponent(oUserID);
		var after = null;	
	}
	
	else if (mode == 'postPM') {
		var oPM = document.getElementById('pmReplyBox').value;
		var oUserID = document.getElementById('userID').innerHTML;
		var oOtherID = document.getElementById('otherID').innerHTML;
		var oConvoID = document.getElementById('convoID').innerHTML;
		var oNumPMsPage = document.getElementById('numPMsPage').innerHTML;
		var oMaxPMID = document.getElementById('maxPMID').innerHTML;
		var oOrigin = document.getElementById('origin').innerHTML;
		var containerID = 'pmList2';
		var url = 'pmAdd.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&otherID=" + encodeURIComponent(oOtherID) + "&convoID=" + encodeURIComponent(oConvoID) + "&pm=" + encodeURIComponent(oPM) + "&maxPMID=" + encodeURIComponent(oMaxPMID) + "&numPMsPage=" + encodeURIComponent(oNumPMsPage) + "&origin=" + encodeURIComponent(oOrigin);
		var after = 'updatePMStatus';						
	}
	
	else if (mode =='checkPMs') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oOtherID = document.getElementById('otherID').innerHTML;		
		var oConvoID = document.getElementById('convoID').innerHTML;
		var oMaxPMID = document.getElementById('maxPMID').innerHTML;
		var oNumPMsPage = document.getElementById('numPMsPage').innerHTML;
		var oOrigin = document.getElementById('origin').innerHTML;
		var containerID = 'pmList2';
		var url = 'pmAdd.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&otherID=" + encodeURIComponent(oOtherID) + "&convoID=" + encodeURIComponent(oConvoID) + "&maxPMID=" + encodeURIComponent(oMaxPMID) + "&numPMsPage=" + encodeURIComponent(oNumPMsPage) + "&origin=" + encodeURIComponent(oOrigin);
		var after = null;
	}
	
	else if (mode == 'deleteConvo') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oConvoID = deleteConvoID;
		var oOrigin = origin;
		// FZ!
		var containerID = 'feedbackZone';
		var url = 'pmAdd.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&convoID=" + encodeURIComponent(oConvoID) + "&origin=" + encodeURIComponent(oOrigin);
		var after = 'afterDelConvo';
	}
	
	else if (mode == 'insertUsersProfile') {
		// profile
		var oUserID = getCookie('userID');
		var oProfileName = document.getElementById('profileName').innerHTML;
		var containerID = 'displayProfileContainer';
		var url = 'getProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&profileName=" + encodeURIComponent(oProfileName);
		var after = null;		
	}
	
	else if (mode == 'search') {
		var oSearchTerms = searchTerms;
		var containerID = 'displayThreadsContainer';
		var url = 'search.php';
		var params = "mode=" + mode + "&terms=" + encodeURIComponent(oSearchTerms);
		var after = 'searchAfter';
	}
	
	else if (mode == 'checkContent') {
		var oTitle = document.getElementById('newThreadTitleBox').value;
		// FZ!
		var containerID = 'feedbackZone';
		var url = 'add.php';
		var params = "mode=" + mode + "&title=" + encodeURIComponent(oTitle);
		var after = 'checkContentAfter';		
	}
	
	else if (mode == 'checkContentPost') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oThreadID = document.getElementById('threadID').innerHTML;
		// FZ!
		var containerID = 'feedbackZone';
		var url = 'add.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oThreadID);
		var after = 'checkContentPostAfter';		
	}
		
	else if (mode == 'openInvite') {
		var containerID = 'inviteForm';
		var url = 'inviteForm.php';
		var params = null;
		var after = 'openInviteAfter';		
	}

	else if (mode == 'yourThreads') {
		//get userID via cookie in PHP
		var containerID = 'displayThreadsContainer';
		var url = 'search.php';
		var params = "mode=" + mode;
		var after = 'afterYT';		
	}
	
	else if (mode == 'removePost') {
		var oPostID = removePostID;
		var containerID = 'table' + removePostID;
		var url = 'remove.php';
		var params = "mode=" + mode + "&postID=" + encodeURIComponent(oPostID);
		var after = null;
	}
	
	else if (mode == 'removeThread') {
		var oThreadID = removeThreadID;
		// FZ!
		var containerID = 'feedbackZone';
		var url = 'remove.php';
		var params = "mode=" + mode + "&threadID=" + encodeURIComponent(oThreadID);
		var after = null;	
	}

	else if (mode == 'admin') {
		var containerID = 'manageUsersResults';
		var url = 'getAdmin.php';
		var params = "mode=" + adminMode;
		var after = null;	
	}
	
	else if (mode == 'adminEdit') {
		var containerID = 'adminEdit' + adminEditID; 
		var url = 'getAdmin.php';
		var params = "mode=" + mode + "&adminEditID=" + encodeURIComponent(adminEditID);
		var after = null;		
	}
	
	else if (mode == 'adminEditSave') {
		var selectUserStatus = document.getElementById('adminStatusEditDD' + adminEditID).selectedIndex;
		var oStatus = document.getElementById('adminStatusEditDD' + adminEditID).options[selectUserStatus].value;	
		var oAdminEditEmail = document.getElementById('adminEditEmail' + adminEditID).value;
		var containerID = 'adminEdit' + adminEditID; 
		var url = 'getAdmin.php';
		var params = "mode=" + mode + "&adminEditID=" + encodeURIComponent(adminEditID) + "&status=" + encodeURIComponent(oStatus) + "&email=" + encodeURIComponent(oAdminEditEmail);
		var after = null;			
	}
	
	else if (mode == 'addWhitelist') {
		//oWhitelistEmail = document.getElementById("registerEmail").value;
		oWhitelistEmail = document.getElementById("registerWhitelistEmail").value;
		oWhitelistMessage = document.getElementById("whitelistMessage").value;
		var containerID = 'addWhitelistEmailDiv';
		var url = 'getAdmin.php';
		var params =  "mode=" + mode + "&email=" + encodeURIComponent(oWhitelistEmail) + "&invite=" + encodeURIComponent(oWhitelistMessage);
		var after = null;	
	}
	
	else if (mode == 'addWhitelistEmailDiv') {
		var containerID = 'addWhitelistEmailDiv';
		var url = 'getAdmin.php';
		var params =  whitelistParams;
		var after = null;		
	}
			
	else if (mode == 'editProfile') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oEditProfileField = editProfileField;
		var containerID = "editPro"+editProfileField;
		var url = 'updateProfile.php';
		var params = "mode=" + oEditProfileField + "&userID=" + encodeURIComponent(oUserID);
		var after = 'afterEditPro';
		}

	else if (mode == 'saveLocation') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oLoc = document.getElementById('locationProfileBox').value;		
		var containerID = 'editProlocation';
		var url = 'updateProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&loc=" + encodeURIComponent(trim(oLoc));
		var after = null;	
		}
	
	else if (mode == 'saveHomepage') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oHome = document.getElementById('homepageProfileBox').value;		
		var containerID = 'editProhomepage';
		var url = 'updateProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&home=" + encodeURIComponent(trim(oHome));
		var after = null;	
		}

	else if (mode == 'saveEmail') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oHome = document.getElementById('emailProfileBox').value;		
		var containerID = 'editProemail';
		var url = 'updateProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&email=" + encodeURIComponent(trim(oHome));
		var after = null;	
		}
	
	else if (mode == 'toggleSubscribe') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oType = toggleSubscribeType;
		var containerID = 'toggleSubscribe' + toggleSubscribeType;
		var url = 'updateProfile.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&type=" + encodeURIComponent(oType);
		var after = null;			
		}
					
	else if (mode == 'openRatedBy') {
		//var oUserID = document.getElementById('userID').innerHTML;
		var oPostID = openRatedByPost;
		var containerID = 'ratedByForm';
		var url = 'ratedByForm.php';
		//var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&recipientID=" + encodeURIComponent(openPMrecipientId) + "&recipient=" + encodeURIComponent(openPMrecipient)+ "&recipientAvatar=" + encodeURIComponent(openPMavatar);
		var params = "mode=" + mode + "&postID=" + encodeURIComponent(oPostID);
		var after = null;
	}
	
	else if (mode =='checkPulse') {
		var containerID = 'FireHoseDiv';
		var oNumUpdates = document.getElementById('updates_counter').innerHTML;
		
		var loc = window.location.href;
		var url = 'samplePulse.php';
		if (loc.lastIndexOf('pulse') == loc.lastIndexOf('pulse-mine.php')) {
			url = 'samplePulse-mine.php';
		}
		if (loc.lastIndexOf('pulse') == loc.lastIndexOf('pulse-your.php')) {
			url = 'samplePulse-your.php';
		}

		var params = "mode=" + mode + "&updates=" + oNumUpdates;
		var after = null;
	}
	else if (mode =='moreTweets') {
		var containerID = 'updateStatus';
		var oNumTweets = document.getElementById('tweet_counter').innerHTML;
		var url = 'get_tweets.php';
		var params = "mode=" + mode + "&numTweets=" + oNumTweets;
		var after = 'afterMoreTweets';
	}
	else if (mode =='moreTweetTags') {
		var containerID = 'updateStatus';
		var oNumTweets = document.getElementById('tweet_counter').innerHTML;
		var url = 'get_tags.php';
		var params = "mode=" + mode + "&numTweets=" + oNumTweets;
		var after = null;
	} 
	else if (mode =='checkTweets') {
		var containerID = 'updateStatus';
		var oNumTweets = document.getElementById('tweet_counter').innerHTML;
		var url = 'get_tweets.php';
		var params = "mode=" + mode;
		var after = null;
	}
	else if (mode =='TwitterAdminAdd') {
		var oTwitterAdd = TwitterAddVar;
		var containerID = 'TwitterAdminListing';
		var url = 'get_twitterAdmin.php';
		var params = "mode=" + mode + "&action=add" + "&twitter=" + encodeURIComponent(oTwitterAdd);
		var after = null;
	}
	else if (mode =='TwitterAdminRemove') {
		var oTwitterRemove = TwitterRemoveVar;
		var containerID = 'TwitterAdminListing';
		var url = 'get_twitterAdmin.php';
		var params = "mode=" + mode + "&action=remove" + "&twitter=" + encodeURIComponent(oTwitterRemove);
		var after = null;
	}
	else if (mode =='addTwitterMembership') {
		var containerID = 'TwitterStatusDiv';
		var url = 'get_TwitterStatusDiv.php';
		var params = "mode=" + mode + "&action=add";
		var after = null;
	}
	else if (mode =='removeTwitterMembership') {
		var containerID = 'TwitterStatusDiv';
		var url = 'get_TwitterStatusDiv.php';
		var params = "mode=" + mode + "&action=remove";
		var after = null;
	}
	
	else if (mode == 'emailThreadOpen') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oEmailThreadID = emailThreadID;
		var containerID = 'mailForm';
		var url = 'crosspost.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oEmailThreadID);
		var after = null;	
		}
	
	else if (mode == 'emailThreadSend') {
		var oUserID = document.getElementById('userID').innerHTML;
		var oEmailThreadID = emailThreadID;
		var containerID = 'popUpContentEmailThread';
		var url = 'crosspost.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + encodeURIComponent(oEmailThreadID) + emailThreadParams;
		var after = 'afterEmailThreadSend';
		}
	
	else if (mode == 'deleteCat') {
		var oCatID = catToRemove;
		var oCatRowID = catRowToRemove;
		var containerID = 'editCatRow' + oCatRowID;
		var url = 'getAdmin.php';
		var params = "mode=" + mode + "&catID=" + encodeURIComponent(oCatID);
		var after = 'afterDeleteCat';		
		}

	else if (mode == 'saveCat') {
		var oCatID = catToSave;
		var containerID = 'editCatRow' + oCatID;
		var url = 'getAdmin.php';
		var params = "mode=" + mode + "&catID=" + encodeURIComponent(oCatID) + saveCatPostString;
		var after = 'afterSaveCat'; 		
		}
	
	else if (mode == 'previewReply') {
		var oReply = document.getElementById('postReplyBox').value;
		var containerID = 'previewContainer';
		var url = 'add.php';
		var params = "mode=" + mode + "&reply=" + encodeURIComponent(oReply);
		var after = 'updatePreviewButton';						
	}
	
	else if (mode == "previewThread") {
		var oTitle = document.getElementById('newThreadTitleBox').value;
		var oContent = document.getElementById('newThreadComposeBox').value;
		
		var containerID = 'previewContainer';
		var url = 'add.php';
		var params = "mode=" + mode + "&title=" + encodeURIComponent(oTitle) + "&content=" + encodeURIComponent(oContent);
		var after = 'updatePreviewButton';			
	}

	else if (mode == 'changeColor') {
		// newColor and updateVariable set in layout.js
		// FZ!
		var containerID = 'feedbackZone';
		var url = 'updateColor.php';
		var params = "mode=" + mode + "&newColor=" + encodeURIComponent(newColor) + "&updateVariable=" + encodeURIComponent(updateVariable);
		var after = null;		
	}

	else if (mode == 'updateToggleSetting') {
		var containerID = settingToUpdate;
		var url = 'updateSettings.php';
		var params = "mode=" + mode + "&settingToUpdate=" + encodeURIComponent(settingToUpdate);
		var after = null;		
	}
	
	else if (mode == 'editSettingsBasic') {
		var containerID = 'editSettingsBasicContainer';
		var url = 'updateSettings.php';
		var params = "mode=" + mode;
		var after = null; 		
		}
	
	else if (mode == 'saveEditSettings') {
		var containerID = 'editSettingsBasicContainer';
		var url = 'updateSettings.php';
		var params = "mode=" + mode + saveEditSettingsParams;
		var after = null; 				
		}

	else if (mode == 'saveNavLinks') {
		var containerID = 'navLinksResults';
		var url = 'updateSettings.php';
		var params = "mode=" + mode + "&navLinks=" + navLinks;
		var after = 'afterSaveNavLinks'; 				
		}

	else if (mode == 'saveCSS') {
		var containerID = 'saveCssResults';
		var url = 'updateSettings.php';
		var params = "mode=" + mode + "&saveCSS=" + saveCSS;
		var after = 'afterSaveCSS'; 				
		}
	
	else if(mode == 'userIsTyping' || mode ==  'userIsNotTyping'){
		
		var oReply = document.getElementById('postReplyBox').value;
		var oUserID = document.getElementById('userID').innerHTML;
		var oThreadID = document.getElementById('threadID').innerHTML;
		var oMaxPostID = document.getElementById('maxPostID').innerHTML;
		var oNumPosts = document.getElementById('numPosts').innerHTML;
		var oNumPostsPage = document.getElementById('numPostsPage').innerHTML;
		var containerID = '';
		var url = 'add.php';
		var params = "mode=" + mode + "&userID=" + encodeURIComponent(oUserID) + "&threadID=" + 
						encodeURIComponent(oThreadID) + "&reply=" + encodeURIComponent(oReply) + 
						"&maxPostID=" + encodeURIComponent(oMaxPostID) + "&numPosts=" + 
						encodeURIComponent(oNumPosts) + "&numPostsPage=" + encodeURIComponent(oNumPostsPage);
		
	}
	
	else if ( mode == 'stickThread') {	
		var containerID = 'stickContainer';
		var url = 'remove.php';
		var params = "mode=" + mode + "&stickAction=" + encodeURIComponent(stickAction) + "&threadID=" + encodeURIComponent(stickThreadID);
		var after = null;		
	}

	else if (mode == "previewEdit") {
		var containerID = 'previewContainer';
		var url = 'add.php';
		var params = "mode=" + mode + previewEditContent;
		var after = 'updatePreviewButton';			
		}

	else if (mode == "quotePost") {
		var containerID = 'quotePostReplyBox';
		var url = 'add.php';
		var params = "mode=" + mode + "&quotePostID=" + quotePostID;
		var after = null;			
		}


	else if (mode == "updateTags") {
		var containerID = 'tagsContainer';
		var url = 'updateTags.php';
		var params = "mode=" + mode + "&threadID=" + encodeURIComponent(tagsThreadID) + "&tagsToUpdate=" + encodeURIComponent(tagsToUpdate);
		var after = 'afterSaveTags';
		}		
												
	return {containerID : containerID, url : url, params : params, after : after};
}


/* ******************************** */
/* Check the length of the password */
/* ******************************** */

function password(it,fields) {
	trim(it.value);
	if (it.value.length == 0) {
		document.getElementById("feedback_registerPass").innerHTML = "Five character minimum";
		} else if (it.value.length < 5) {
			document.getElementById("feedback_registerPass").innerHTML = "<span class=validateError>Five character minimum</span>";
			} else {
				document.getElementById("feedback_registerPass").innerHTML = '<img class=okay src=images/okay.gif>';
				}
	checkForm(fields);
}

/* ******************************** */
/* Trim the input value             */
/* ******************************** */

function trim(s) {
    return s.replace(/(^\s+)|(\s+$)/g, "")
}


function signUpSubmit() {

	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
	
	var spaceTest = /\s/g;

	if (document.getElementById('registerUserName').value.length < 3 || document.getElementById('registerUserName').value.length > 16) {
				toggleFeedbackZone('error','User name must be 3-16 characters.','300','3500');
				document.getElementById('registerUserName').focus();
				return false;
				} else if (spaceTest.test(document.getElementById('registerUserName').value) == true) {
					toggleFeedbackZone('error','User name cannot contain spaces.','300','3500');
					document.getElementById('registerUserName').focus();
					return false;
				} else if (document.getElementById('registerPass').value.length < 5) {
					toggleFeedbackZone('error','Password must be at least five characters long.','300','3500');
					document.getElementById('registerPass').focus();
					return false;
					} else if (emailPattern.test(document.getElementById('registerEmail').value) == false) {
					toggleFeedbackZone('error','Please enter a valid email address.','300','3500');
					document.getElementById('registerEmail').focus();
					return false;
					} else {
							toggleFeedbackZone('caution','Adding new user...','300','3500');
							return true;
						}

	}

function logInSubmit() {

	var spaceTest = /\s/g;
	
	if (document.getElementById('registerUserName').value.length < 3 || document.getElementById('registerUserName').value.length > 16) {
		toggleFeedbackZone('error','User name must be 3-16 characters.','300','3500');
		document.getElementById('registerUserName').focus();
		return false;
		} else if (spaceTest.test(document.getElementById('registerUserName').value) == true) {
					toggleFeedbackZone('error','User name cannot contain spaces.','300','3500');
					document.getElementById('registerUserName').focus();
					return false;	
		} else if (document.getElementById('registerPass').value.length < 5) {
			toggleFeedbackZone('error','Password must be at least five characters long.','300','3500');
			document.getElementById('registerPass').focus();
			return false;
			} else {
				toggleFeedbackZone('caution','Logging in user...','300','3500');
				return true;
				}
	}
	
function resetPassSubmit() {

	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  

	if (document.getElementById('resetPass').value.length < 5) {
		toggleFeedbackZone('error','Password must be at least five characters long.','300','3500');
		document.getElementById('resetPass').focus();
		return false;
		} else if (emailPattern.test(document.getElementById('resetEmail').value) == false) {
		toggleFeedbackZone('error','Please enter a valid email address.','300','3500');
		document.getElementById('resetEmail').focus();
		return false;
		} else {
				toggleFeedbackZone('caution','Resetting password...','300','3500');
				return true;
			}
	}	

/* ******************************** */
/* Compare for restting password    */
/* ******************************** */

function compare2(field) {
	if (field == 'pass') {
		if (!document.getElementById("comparePass").value.length > 0) {
			document.getElementById("feedback_comparePass").innerHTML = "";
			}
		else if (document.getElementById("registerPass").value == document.getElementById("comparePass").value) {
			document.getElementById("feedback_comparePass").innerHTML = '<img class=okay src=images/okay.gif>';
			checkForm('3');
			} else {
				document.getElementById("feedback_comparePass").innerHTML = "<span class=validateError>No match yet...</span>";
				}
		}
		checkForm('3');
	}


var numFields = "";

function preValidate(mode,fields) {

	numFields = fields;

	if (document.getElementById(mode).value.length > 0) {
		postPage(mode);
		}
		else if (mode == 'registerUserName') {
			document.getElementById('feedback_registerUserName').innerHTML = "3-16 characters";
			
				if (document.getElementById('registerUserName').value.length == 0) {
					// disable registration button
					document.getElementById("registerButton").disabled=true;
					}
					
			}
		else if (mode == 'registerEmail' || mode == 'registerWhitelistEmail') {
			document.getElementById('feedback_registerEmail').innerHTML = "";
			}
		else if (mode == 'registerCell') {
			document.getElementById('feedback_registerCell').innerHTML = "XXX-XXX-XXXX (for U.S. numbers)";
			}
}


/* ************************************** */
/* Toggle the "Terms of Service" checkbox */
/* ************************************** */

function tos(it,fields) {
if (it.checked==true) {
	document.getElementById('feedback_registerTOS').innerHTML='<img class=okay src=images/okay.gif>';
		} else {
			document.getElementById('feedback_registerTOS').innerHTML='<span class=validateError>Please agree to the TOS!</span>';
			}
	checkForm(fields);
}


/* ****************************************** */
/* Check Form                                 */
/* ****************************************** */

function checkForm(fields) {	
	//make sure form is complete and make sure the values are not blank
	var j = 0;
	var imgs = document.body.getElementsByTagName("img");
	if (imgs.length) {for (var i = 0; i < imgs.length; i++) {
		if (imgs[i].className == "okay") {j++;}}
		 	}
		 	if (j<fields) {
		 		document.getElementById("registerButton").disabled=true; } else {
					//enable the button
						document.getElementById("registerButton").disabled=false;
					}
}





function signOut() {
	deleteCookie('page', '/', '');
	deleteCookie('userID', '/', '');
	deleteCookie('mod', '/', '');
	deleteCookie('admin', '/', '');
	deleteCookie('filter', '/', '');
	window.location.href=boardHome;
}

function toggle(div) {
	var el = document.getElementById(div);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = '';
	}
}

function setFocus() {
	if (document.getElementById("userNameBox")) {
		document.getElementById("userNameBox").focus();
	} else if (document.getElementById("registerUserName")) {
		document.getElementById("registerUserName").focus();
		if (document.getElementById("registerTOS").checked == true) {
			document.getElementById("registerTOS").checked = false;
			}
		if (document.getElementById("registerButton").disabled == false) {
			document.getElementById("registerButton").disabled = true;
			}			
	} else if (document.getElementById("confirmEmail")) {
		document.getElementById("confirmEmail").focus();
	}
}



function menuToggle(div) {
	var el = document.getElementById(div);
	if ( el.style.display != 'none' ) {
		el.style.display = 'none';
	}
	else {
		el.style.display = '';
	}
}


function addNewThread() {
	if (document.getElementById('userID').innerHTML != getCookie('userID')) {
		toggleFeedbackZone('caution','There was a problem submitting your thread. Try refreshing the page and log in again if necessary.','300','3500');
		return false;
		} else if (document.getElementById('newThreadTitleBox').value.length < 1) {
			toggleFeedbackZone('error','Please enter a title.','300','3500');
			document.getElementById('newThreadTitleBox').focus();
			return false;
			} else if (document.getElementById('newThreadComposeBox').value.length < 1) {
				toggleFeedbackZone('error','Please enter content.','300','3500');
				document.getElementById('newThreadComposeBox').focus();
				return false;
				}
		else {
			toggleFeedbackZone('caution','Adding thread...','300','3500');
			return true;
			}
}

function addNewThreadPart2() {
	if (document.getElementById('postError')) {
		document.getElementById('newThreadTitleBox').focus();
		} else {
			document.getElementById('newThreadTitleBox').disabled = true;
			document.getElementById('newThreadComposeBox').disabled = true;
			document.getElementById('addNewThreadButton').disabled = true;
			postPage('addThread');
			menuToggle('newThread');
			document.getElementById('newThreadTitleBox').value = '';
			document.getElementById('newThreadComposeBox').value = '';			
			}
}


function previewReply() {

var postReplyBoxTrim = trim(document.getElementById('postReplyBox').value);

if (postReplyBoxTrim.length < 1) {
	toggleFeedbackZone('error','Please enter content.','300','3500');
	document.getElementById('postReplyBox').focus();
	} else {
		toggleFeedbackZone('caution','Generating Preview...','225',0);
		postPage('previewReply');
		}
	} 

function previewNewThread() {
	if (document.getElementById('newThreadTitleBox').value.length < 1) {
				toggleFeedbackZone('error','Please enter a title.','300','3500');
				document.getElementById('newThreadTitleBox').focus();
				} else if (document.getElementById('newThreadComposeBox').value.length < 1) {
					toggleFeedbackZone('error','Please enter content.','300','3500');
					document.getElementById('newThreadComposeBox').focus();
					}
			else {	
				// if any fields are empty + cat selected, alert user. Otherwise...
				toggleFeedbackZone('caution','Generating Preview...','225',0);
				postPage('previewThread');
				}
	
	}

function resetPreview() {
	document.getElementById('previewContainer').style.display = "none";
	document.getElementById('previewContainer').value = "";
	}

function postReply() {
	if (getCookie('userID')) { // make sure user is logged in
		postReplyBoxTrim = trim(document.getElementById('postReplyBox').value);
		if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone(
					'error',
					'There was a problem submitting your post. Try refreshing the page and log in again if necessary.',
					'300', '3500');
		} else if (postReplyBoxTrim.length < 1) {
			toggleFeedbackZone('error', 'Please enter content.', '300', '3500');
			document.getElementById('postReplyBox').focus();
		} else {
			// FZ!
			toggleFeedbackZone('caution', 'Posting reply...', '200', '6000');
			postPage('checkContentPost');
		}
	} else {
		toggleFeedbackZone(
				'error',
				'You must be logged in to post a reply. <a href="join.php">Join now &raquo;</a>',
				'300', '3500');
	}
}


/* Keep page still if composing reply */
var postReplyFocus = false;

function postReplyBoxFocus() {
	postReplyFocus = true;
	}

function postReplyBoxUnfocus() {
	postReplyFocus = false;
	}


function addNewPostPart2() {

	if (document.getElementById('postError')) {
		document.getElementById('postReplyBox').focus();
	} else {
		document.getElementById('postReplyBox').disabled = true;
		document.getElementById('postReplyButton').disabled = true;
		stopCheckPosts(); // prevent double post
		postPage('postReply');
		sendNotTypingRequest();
	}
}

var checker ='';
// *May* need to add code to prevent check if page and/or thread is full see function checkPMs()
function checkPosts() {
 if (!getCookie('updateOff')) {
	checker = setInterval("postPage('checkPosts')", checkPostsVar);
	}
}

var twitter_checker ='';
function checkTweets() {
 if (!getCookie('updateOff')) {
	twitter_checker = setInterval("postPage('checkTweets')", 90000);
 }
}


var TwitterAddVar ='';
function twitterAdmin_AddAccount() {
	TwitterAddVar = document.getElementById("TwitterMembershipBox").value;

        if (TwitterAddVar.length > 1) {
                var prefix = TwitterAddVar.substring(0,1);
                if (prefix == '@') {
                        TwitterAddVar = TwitterAddVar.substring(1);
                }

                postPage('TwitterAdminAdd');
        }

}

var TwitterRemoveVar ='';
function twitterAdmin_RemoveAccount(twitterAccount) {
	TwitterRemoveVar = twitterAccount;
	postPage('TwitterAdminRemove');
}

function stopCheckPosts() {
	clearInterval(checker);
}

var fieldToCheck = "";

/* Refresh Threads */

var pageToRefresh = 2;
function refreshThreads() {
	// gwt_resetRefreshCount();
	
	// resetPreview();
	toggleFeedbackZone('caution','Getting Threads...','225',0);
	postPage('refreshThreads');
	// pageToRefresh++;
}

function yourThreads() {
	resetPreview();
	toggleFeedbackZone('caution','Getting Your Threads...','225',0);
	postPage('yourThreads');
	
	}

/* ****************************************** */
/* Edit Profile                               */
/* ****************************************** */

// profile

function uploadImg(theform) {
	if (parent.document.getElementById('myFile').value.length>0) {
		parent.document.getElementById('avatarFeedback').innerHTML = "Loading...";
		theform.submit();
		} else {
			alert("Select a file to continue.");
			}
}

var thefileVar = "";

function doneLoading(thefile) {
	parent.thefileVar = "<img class='avatar2' src='" + thefile + "'/>";
	parent.document.getElementById('avatarHere').innerHTML = "<img class='avatar2' src='" + thefile + "'/>";
	parent.document.getElementById('avatarHere').innerHTML = "<br><div style=\"font-size:10px;margin:0px auto 18px;\"><a style=\"color:red;\" href=\"javascript:void(0);\" onclick=\"removeAvatar();\"/>remove image</a></div>";
	parent.document.getElementById('avatarFeedback').innerHTML = "Image Saved. <a class='under' href='javascript:void(0);' onclick='closeAvatarPanel();'/>Click here to close window.</a>";
	parent.document.getElementById("uploadForm").reset(); //clears upload box
}


function toggleAvatarForm() {

	// make sure user is logged in
	if (getCookie('userID')) {
	
		document.getElementById('inviteForm').innerHTML = "";
	
		// position form on the page
		var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
		var pY = ns ? pageYOffset : iecompattest().scrollTop;	
		var y2 = pY + 110;
		document.getElementById('avatarForm').style.top=y2+"px";	
	
		toggle('avatarForm');
		} else {
			alert('You must be logged in to change your avatar.');
			}
}


function closeAvatarPanel() {
if (thefileVar.length > 0) {
	document.getElementById('avatarImageID').innerHTML = thefileVar;
	}
	toggle('avatarForm');
	document.getElementById('avatarFeedback').innerHTML = "&nbsp;";
}

function removeAvatar() {
	if (document.getElementById('avatarHere').innerHTML == "<img class=\"avatar2\" src=\"images/avatars/no-avatar.gif\">") {
		toggleFeedbackZone('error','There is no image to remove.','300','3500');
		} else if (document.getElementById('avatarHere').innerHTML == "<IMG class=avatar2 src=\"images/avatars/no-avatar.gif\">") {
			toggleFeedbackZone('error','There is no image to remove.','300','3500');
			} else { 
				postPage('removeAvatar');
				}

}

function uploadImgGallery(theform) {
	if (parent.document.getElementById('myFileGallery').value.length>0) {
		parent.document.getElementById('galleryFeedback').innerHTML = "Loading...";
		theform.submit();
		} else {
			alert("Select a file to continue.");
			}
}


function doneLoadingGallery(galleryPreviewContent) {
	parent.document.getElementById('galleryFeedback').innerHTML = "<img src=\"images/okay.gif\"> Image Added.  'Browse...' to upload another photo or <a href=\"/profile/\">go back to your profile</a>.";
	parent.document.getElementById('galleryPreviewContainer').innerHTML = galleryPreviewContent;
	parent.document.getElementById("uploadFormGallery").reset(); //clears upload box
}

function doneLoadingGalleryError(message) {
	parent.document.getElementById("galleryFeedback").innerHTML = "<span class=\"galleryFeedbackError\">" + message + "</span>";
	parent.document.getElementById("uploadFormGallery").reset(); //clears upload box
}

function addCapText() {
	if(document.getElementById('captionTextArea').value=='Add Caption...') document.getElementById('captionTextArea').value='';
	}

var imageID = "";
function deleteGalleryImage(id) {
	//alert(id);
	imageID = id;
	toggleFeedbackZone('caution', 'Deleting image...', '200', '6000');
	postPage('deleteGalleryImage');
	}
var caption = "";
function saveCaptionImage(id) {
	imageID = id;
	caption = trim(document.getElementById('captionTextArea').value);
	toggleFeedbackZone('caution', 'Saving caption...', '200', '6000');
	postPage('saveCaptionImage');
}

// store old values in array in case user opens more than one field at at time
var editProfileField = "";
var oldProContentArray = new Array();

function editProfile(field) {
	editProfileField = field;
	oldProContentArray[editProfileField] = document.getElementById('editPro'+field).innerHTML;
	postPage('editProfile');
	}

function cancelEditPro(field) {
	document.getElementById('editPro' + field).innerHTML = oldProContentArray[field];
	}
	
function saveLocation() {
	postPage('saveLocation');
}

function saveHomepage() {
	postPage('saveHomepage');
}

function saveEmail() {
	postPage('saveEmail');
}


/* Tags */
var originalTagsHTML;
var tagsList;
var tagsThreadID;
var tagsToUpdate;

function editTags(threadID) {

	// reserve the original HTML in case of cancel
	originalTagsHTML = document.getElementById('tagsContainer').innerHTML;
	tagsList= document.getElementById('tagsHidden').innerHTML;

	// display the tags in the input text field
	document.getElementById('tagsContainer').innerHTML = "<input type=\"text\" class=\"tagsContainerInput\" id=\"tagsListContainer\" value=\"" + tagsList + "\"> <input class=\"bold\" type=\"submit\" value=\"Save Tags\" onclick=\"saveTags('" + threadID + "');\"> <input type=\"submit\" value=\"Cancel\" onclick=\"cancelEditTags();\"><br><div class=\"tagInstruct\">Separate tags with a comma (tag 1, tag 2, tag 3, etc.)</div>";
	}

function cancelEditTags() {
	document.getElementById('tagsContainer').innerHTML = originalTagsHTML;
	}

function saveTags(threadID) {
	tagsThreadID = threadID;
	tagsToUpdate = document.getElementById('tagsListContainer').value;
	postPage('updateTags');
	}
	

/* *********************** */
/*   User  Moderation      */
/* *********************** */

var postID = "";
var modSign = "";
var affectedUserID = "";
var postCount = "";

function userModerate(postid,userid,direction,postcount) {
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to moderate. <a href="join.php">Join now &raquo;</a>','300','3500');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('caution','You must be logged in to moderate. <a href="join.php">Join now &raquo;</a>','300','3500');
				} else if (document.getElementById('userID').innerHTML == userid) {
					toggleFeedbackZone('error','You cannot moderate your own posts.','300','3500');			
							} else {
								postID = postid;
								affectedUserID = userid;
								postCount = postcount;
								modSign = direction;
								postPage('moderate');
								}
	}


var openRatedByPost = "";
function whoRated(postID) {
	
	// if no one has rated post
	if ((document.getElementById('modInnerpos'+postID).innerHTML == 0)) {  // && (document.getElementById('modInnerneg'+postID).innerHTML == 0)
		toggleFeedbackZone('caution','No one has rated this post.','300','3500');
		} else {
		
			openRatedByPost = postID;

			var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
			var pY = ns ? pageYOffset : iecompattest().scrollTop;	
			var y2 = pY + 110;
			document.getElementById('ratedByForm').style.top=y2+"px";				
			
			// change to FZ!
			document.getElementById('ratedByForm').innerHTML = "<div style='font-weight:bold;margin-top:50px;background-color:#FFFFFF;border:solid 1px black;padding:10px;'>Loading...</div>";
			document.getElementById('ratedByForm').style.display = '';
		
			postPage('openRatedBy');
		}
	}
	
function closeRatedByPanel() {
	document.getElementById('ratedByForm').style.display = 'none';
	}


/* Browser detection for toggle     */
/* functions that need a moving div */

function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
	}


/* *************** */
/* Private Message */
/* *************** */

var togglePMvar = false;
var openPMrecipientId;
var openPMrecipient;
var openPMavatar;
var PMrecipientId;

function togglePM(recipientid,recipient,avatarset) {
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to send private messsages. <a href="join.php">Join now &raquo;</a>','300','5000');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('caution','You must be logged in to send private messsages. <a href="join.php">Join now &raquo;</a>','300','5000');
			} else if (document.getElementById('userID').innerHTML == recipientid) {
				toggleFeedbackZone('error','You cannot send a Private Message to yourself.','300','3500');
				} else if (togglePMvar == false) {
					togglePMvar = true;
					openPMrecipientId = recipientid;
					openPMrecipient = recipient;
					openPMavatar = avatarset;
					
					var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
					var pY = ns ? pageYOffset : iecompattest().scrollTop;	
					var y2 = pY + 110;
					document.getElementById('mailForm').style.top=y2+"px";				
					
					document.getElementById('mailForm').innerHTML = "<div style='font-weight:bold;margin-top:50px;background-color:#FFFFFF;border:solid 1px black;padding:10px;'>Loading...</div>";
					toggle('mailForm');
					postPage('openPM');
					} else {
						toggleFeedbackZone('error','You can only send one Private Message at a time.','300','3500');
						}
	
}


function closeMailPanel() {
	togglePMvar = false;
	if (document.getElementById('newPMSubjectBox')) {document.getElementById('newPMSubjectBox').value = '';} //use similar function after sending mail
	if (document.getElementById('newPMBox')) {document.getElementById('newPMBox').value = '';} //use similar function after sending mail
	
	if (document.getElementById('mailForm').style.display != 'none') {
		toggle('mailForm');
		}
		
}


function sendNewPM(recipientid) {
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('error','You must be logged in to send private messsages. <a href="join.php">Join now &raquo;</a>','300','3500');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('error','You must be logged in to send private messsages. <a href="join.php">Join now &raquo;</a>','300','3500');
			} else if (document.getElementById('newPMSubjectBox').value.length < 1) {
				toggleFeedbackZone('error','Please enter content.','300','3500');
				document.getElementById('newPMSubjectBox').focus();
				} else if (document.getElementById('newPMBox').value.length < 1) {
					toggleFeedbackZone('error','Please enter content.','300','3500');
					document.getElementById('newPMBox').focus();
					} else {
						PMrecipientId = recipientid;
						postPage('newPM');
						}
}




var pmContainerMode = "";
function refreshPM(thepmcontainer) {
	pmContainerMode = thepmcontainer;
	postPage('showPM');
}



function postPM() {
	pmReplyBoxTrim = trim(document.getElementById('pmReplyBox').value);
	if (document.getElementById('userID').innerHTML != getCookie('userID')) {
		toggleFeedbackZone('error','There was a problem submitting your post. Try refreshing the page and log in again if necessary.','300','3500');
		} else if (pmReplyBoxTrim.length < 1) {
			toggleFeedbackZone('error','Please enter content.','300','3500');
			document.getElementById('pmReplyBox').focus();
			} else {
				//document.getElementById('pmReplyStatus').innerHTML = "<span class='ital'>Posting reply...</span>";
				toggleFeedbackZone('caution','Posting reply...','180','5000');
				document.getElementById('pmReplyBox').disabled = true;
				document.getElementById('pmReplyButton').disabled = true;
				postPage('postPM');	
			}
}

var checkerPM ='';
function checkPMs() {
	//alert("checkPMs");
	if (document.getElementById('numPMsPage').innerHTML < limitPM) {
		checkerPM = setInterval("postPage('checkPMs')", 3500);
		}
	}


function stopCheckPMs() {
	clearInterval(checkerPM);
	}

var deleteConvoID = '';
var folder = '';
var origin = '';
function deletePM(theconvo,theorigin) {
	if (confirm('Are you sure you want to delete this message?\n Once a message is deleted it\'s gone forever.')) {
		deleteConvoID = theconvo;
		origin = theorigin;
		postPage('deleteConvo');
		}
	}

function swapPMFolder(folder) {
	// temp lang fix
	if (document.domain == 'forum.ravaruforum.com') {
		var m_Inbox = 'Inkorg';
		var m_Sent_Messages = 'Skickade meddelanden';
		var m_Refresh_Messages = 'Uppdatera meddelanden';
		var m_Sent = 'Skickade';
		var m_To = 'Till';
		var m_From = 'Från';	
			} else {		
			var m_Inbox = 'Inbox';
			var m_Sent_Messages = 'Sent Messages';
			var m_Refresh_Messages = 'Refresh Messages';
			var m_Sent = 'Sent';
			var m_To = 'To';
			var m_From = 'From';	
			}

	if (folder == 'showSent') {
		document.getElementById('showInboxLink').innerHTML = "<a href=\"javascript:void(0);\" onclick=\"swapPMFolder('showInbox');\">"+ m_Inbox +"</a>";
		document.getElementById('showSentLink').innerHTML = "<a class=\"current\" href=\"javascript:void(0);\" onclick=\"swapPMFolder('showSent');\">"+m_Sent+"</a>";
		document.getElementById('refreshPMName').innerHTML = "<a href=\"javascript:void(0);\" onclick=\"refreshPM('pmList-S');\">"+m_Refresh_Messages+"</a>";
		document.getElementById('pmFolderName').innerHTML = m_Sent;
		document.getElementById('toFromPM').innerHTML = m_To;
		var refreshFolder = "pmList-S";
		} else if (folder == 'showInbox') {
			document.getElementById('showInboxLink').innerHTML = "<a class=\"current\" href=\"javascript:void(0);\" onclick=\"swapPMFolder('showInbox');\">"+m_Inbox+"</a>";		
			document.getElementById('showSentLink').innerHTML = "<a href=\"javascript:void(0);\" onclick=\"swapPMFolder('showSent');\">"+m_Sent_Messages+"</a>";
			document.getElementById('refreshPMName').innerHTML = "<a href=\"javascript:void(0);\" onclick=\"refreshPM('pmList-I');\">"+m_Refresh_Messages+"</a>";
			document.getElementById('pmFolderName').innerHTML = m_Inbox;
			document.getElementById('toFromPM').innerHTML = m_From;
			var refreshFolder = "pmList-I";
			}
	refreshPM(refreshFolder);
	}


/* ******************* */
/* Report to moderator */
/* ******************* */

var reportID = "";
var reportTable = "";
function toggleReport(id,table) {
	if (document.getElementById('userID') == null || document.getElementById('userID').innerHTML != getCookie('userID')) {
		toggleFeedbackZone('caution','You must be logged in to report messsages to moderator. <a href="join.php">Join now &raquo;</a>','300','5000');
		//document.getElementById('userNameBox').focus();
		} else if (togglePMvar == false) {
			togglePMvar = true;
			
			var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
			var pY = ns ? pageYOffset : iecompattest().scrollTop;	
			var y2 = pY + 110;
			document.getElementById('mailForm').style.top=y2+"px";			
			
			document.getElementById('mailForm').innerHTML = "<div class=\"reportContentLoading\">Loading...</div>";
			reportID = id;
			reportTable = table;
			toggle('mailForm');
			postPage('openReport');
				} else {
					toggleFeedbackZone('error','You can only send one Private Message at a time.','300','3500');
					}
}

function closeReportPanel() {
	togglePMvar = false;
	if (document.getElementById('mailForm').style.display != 'none') {
		toggle('mailForm');
		}
		document.getElementById('reportBox').value = '';
}

/* ******** */
/* Pipes!!! */
/* ******** */

var togglePipesVar = false;
var pipeID = "";

function togglePipesPanel(id){
	// let's assume user is a moderator

if (togglePipesVar == false) {
			
	togglePipesVar = true;
	
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	var pY = ns ? pageYOffset : iecompattest().scrollTop;	
	var y2 = pY + 110;
	document.getElementById('pipesPostForm').style.top=y2+"px";			
	
	document.getElementById('pipesPostForm').innerHTML = "<div class=\"reportContentLoading\">Loading...</div>";
	pipeID = id;
	toggle('pipesPostForm');
	postPage('openPipePost');
		} else {
			toggleFeedbackZone('error','You can only post one news story at a time.','300','3500');
			}

	
	}


function postNewPipe() {

		// test if user is admin
		
		
		if (document.getElementById('newPipePostSubjectBox').value.length < 1) {
				toggleFeedbackZone('error','Please enter content.','300','3500');
				document.getElementById('newPipePostSubjectBox').focus();
				} else if (document.getElementById('newPipeBox').value.length < 1) {
					toggleFeedbackZone('error','Please enter content.','300','3500');
					document.getElementById('newPipeBox').focus();
					} else {
						// toggleFeedbackZone('caution','Adding news item...','300','3500');
						postPage('newPipePost');
						}
						
}

	
function closePipesPanel() {
	togglePipesVar = false;
	if (document.getElementById('pipesPostForm').style.display != 'none') {
		toggle('pipesPostForm');
		}
	document.getElementById('newPipePostSubjectBox').value = '';
	document.getElementById('newPipeBox').value = '';
}


var submitReportID = ""; //distinguish from above
var submitReportTable = ""; //distinguish from above
function reportToMod(id,table) {
	submitReportID = id;
	submitReportTable = reportTable;
	document.getElementById('feedbackReport').innerHTML = "Sending...";
	document.getElementById('reportModButton').disabled = true;				
	postPage('reportToMod');
	}

var removePostID = "";
function removePost(postid) {
	if (confirm('Are you sure you want to delete this post (postID = ' + postid + ')?')) {
		removePostID = postid;
		postPage('removePost');
		}
	}

var removeThreadID = "";
function removeThread(threadid) {
	if (confirm('Are you sure you want to delete this thread (threadID = ' + threadid + ')?')) {
		removeThreadID = threadid;
		postPage('removeThread');
		}
	}


var stickThreadID;
var stickAction;

function stickThread(stickThreadIDVar,stickActionVar) {

	stickThreadID = stickThreadIDVar;
	stickAction = stickActionVar;

	postPage('stickThread');
	
	}
	
/* Show or hide feedbackZone div */ 

function toggleFeedbackZone(classVar,msgVar,widthVar,timeVar) {
	
		document.getElementById('feedbackZone').style.display = '';
	
		// position the feedback form
		var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
		var pY = ns ? pageYOffset : iecompattest().scrollTop;	
		var y2 = pY + 40;
		document.getElementById('feedbackZone').style.top=y2+"px";
		
		var FzClass = classVar; 	// .error, .caution, .success
		var FzMsg = msgVar; 		// the message
		var FzWidth = widthVar; 	// 250
		var FzTime = timeVar; 		// 3000
		
		document.getElementById('feedbackZone').style.display = '';
		document.getElementById('feedbackZone').style.width = FzWidth + 'px';
		document.getElementById('feedbackZone').style.marginLeft = (FzWidth/2)*-1 + 'px';
		document.getElementById('feedbackZone').innerHTML = '<div class="'+ FzClass +'">' + FzMsg + '</div>';
		if (FzTime > 0) {
			var temp=setTimeout("document.getElementById('feedbackZone').style.display = 'none'; document.getElementById('feedbackZone').innerHTML = '';", FzTime);			
			}
	}




/* ******************* */
/* Send Feedback       */
/* ******************* */

function toggleFeedback() {
	document.getElementById('feedbackForm').innerHTML = "";
	
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	var pY = ns ? pageYOffset : iecompattest().scrollTop;	
	var y2 = pY + 110;
	document.getElementById('feedbackForm').style.top=y2+"px";
						
	toggle('feedbackForm');
	postPage('openFeedback');
}

function closeFeedbackPanel() {
	if (document.getElementById('feedbackForm').style.display != 'none') {
		toggle('feedbackForm');
		}
}

var feedbackSenderID = "";
function sendFeedback() {
	
	if (document.getElementById('fromRegUser')) {
		feedbackSenderID = getCookie('userID');
	} else {
		if (document.getElementById('feedbackFromBox').value.length < 1) {
			feedbackSenderID = 'no email given';	
			} else {
				feedbackSenderID = document.getElementById('feedbackFromBox').value;
				}
		}
	if (document.getElementById('feedbackSubjectBox').value.length < 1) {
				toggleFeedbackZone('error','Please enter content.','300','3500');
				document.getElementById('feedbackSubjectBox').focus();
				} else if (document.getElementById('feedbackBox').value.length < 1) {
					toggleFeedbackZone('error','Please enter content.','300','3500');
					document.getElementById('feedbackBox').focus();
		} else {
			document.getElementById('feedbackFeedback').innerHTML = "Sending...";
			document.getElementById('sendFeedButton').disabled = true;
			postPage('submitFeedback');	
			}
}

var toggleSubscribeType = "";
function toggleSubscribe(type) {
	toggleSubscribeType = type;
	postPage('toggleSubscribe');
	}



/* ************** */
/* Toggle Options */
/* ************** */

// not sure why these cookies are deleted using '' as opposed to '/' like others 
function toggleSound() {
if (document.getElementById('toggleSoundID').innerHTML == 'ON') {
	setCookie('soundOff','off','365');
	document.getElementById('toggleSoundID').innerHTML = 'OFF';
	} else {
		document.getElementById('toggleSoundID').innerHTML = 'ON';
		deleteCookie('soundOff', '', '');
		}
}

function toggleUpdate() {
if (document.getElementById('toggleUpdateID').innerHTML == 'ON') {
	setCookie('updateOff','off','365');
	document.getElementById('toggleUpdateID').innerHTML = 'OFF';
	stopCheckPosts();
	} else {
		document.getElementById('toggleUpdateID').innerHTML = 'ON';
		deleteCookie('updateOff', '', '');
		checkPosts();
		}
}


function hideInstructPanel() {
	document.getElementById('logInstructPanel').style.display = 'none';
	document.getElementById('logInstructContainer').style.display = 'none';
	setCookie('hideInstruct','true','5');
	}


/* ******************** */
/* Search               */
/* ******************** */

var searchTerms;

function searchNP() {
	searchTerms = trim(document.getElementById("searchBar").value);
	if (searchTerms == "") {
		toggleFeedbackZone('error','Please enter search terms.','300','4500');
		} else {
			resetPreview();
			toggleFeedbackZone('caution','Searching...','200',0);
			postPage('search');
			}
}


/* ***************************** */
/* Highlight vertical navigation */
/* ***************************** */

var oldFilter = "";

function openNewThread() {
	if (getCookie('userID')) { 		// is the user logged in?
		document.getElementById('newThread').style.display = "";
		setFilter('compose');
		document.getElementById('newThreadTitleBox').focus();
		} else {
			toggleFeedbackZone('error','You must be logged in to compose a thread.','300','3500');
			//document.getElementById('userNameBox').focus();
			}
	}
	
function closeNewThread(thelocation) {
	if (thelocation == 'single') {
		location.href='/';
		} else {
			location.href=thelocation;
			}
	}

/*

function setFilter(filter) {

	if (filter != 'compose' && document.getElementById('newThread').style.display == "") {
		document.getElementById('newThread').style.display = "none";
		}
		
	oldFilter = document.getElementById('filter').innerHTML;
	document.getElementById('filter').innerHTML = filter;
	document.getElementById('oldFilter').innerHTML = oldFilter;
	//setCookie('filter',filter,'7','/');
	
	if (filter == 'search') {
		var searchTerms = document.getElementById('searchBar').value;
		window.location.hash = filter +'/'+searchTerms
	//	setCookie('searchTerms',searchTerms,'7','/');
		} else {
			window.location.hash = filter;
			}
	
	if (oldFilter != 'search') {
		document.getElementById('nav-'+oldFilter).firstChild.className = "";
		}
	
	if (oldFilter == 'search' && filter != 'search') {
		document.getElementById('searchBar').value = 'Search the board';
		}
	
	if (filter != 'search') {	
		document.getElementById('nav-' + filter).firstChild.className = "current";
	//	deleteCookie('searchTerms', '/', '');
		}
	
	}
*/



/* Twitter integration - Tweet threads and posts */

var tweetThreadID = "";

function tweetThread(threadID) {
	
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to post to Twitter. <a href="join.php">Join now &raquo;</a>','300','3500');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('caution','You must be logged in to post to Twitter. <a href="join.php">Join now &raquo;</a>','300','3500');
				} else if (togglePMvar == false) {
					togglePMvar = true;
					tweetThreadID = threadID;
					
					var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
					var pY = ns ? pageYOffset : iecompattest().scrollTop;	
					var y2 = pY + 110;
					document.getElementById('mailForm').style.top=y2+"px";				
					
					document.getElementById('mailForm').innerHTML = "<div style='font-weight:bold;margin-top:50px;background-color:#FFFFFF;border:solid 1px black;padding:10px;'>Loading...</div>";
					toggle('mailForm');
					postPage('tweetThread');
					} else {
						toggleFeedbackZone('error','You cannot send a Tweet and a Private Message at the same time.','300','4500');
						}	
	
	}


var tweetPostID = "";
var tweetPostCount = "";

function tweetPost(threadID,postID,postCount) {
	
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to post to Twitter. <a href="join.php">Join now &raquo;</a>','300','5000');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('caution','You must be logged in to post to Twitter. <a href="join.php">Join now &raquo;</a>','300','5000');
				} else if (togglePMvar == false) {
					togglePMvar = true;
					tweetThreadID = threadID;
					tweetPostID = postID;
					tweetPostCount = postCount;
					
					var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
					var pY = ns ? pageYOffset : iecompattest().scrollTop;	
					var y2 = pY + 110;
					document.getElementById('mailForm').style.top=y2+"px";				
					
					document.getElementById('mailForm').innerHTML = "<div style='font-weight:bold;margin-top:50px;background-color:#FFFFFF;border:solid 1px black;padding:10px;'>Loading...</div>";
					toggle('mailForm');
					postPage('tweetPost');
					} else {
					toggleFeedbackZone('error','You cannot send a Tweet and a Private Message at the same time.','300','4500');
						}	
	
	}



function tweetThreadCharCount() {
	var maxLengthTweet = 140;
	var currentLengthTweet = document.getElementById('tweetBox').value.length;
	document.getElementById('tweetCharCount').innerHTML = maxLengthTweet - currentLengthTweet;
	
	if (document.getElementById('tweetCharCount').innerHTML < 0) {
		document.getElementById('tweetCharCount').innerHTML = '<span style="color:#CC0000;">' + (maxLengthTweet - currentLengthTweet) + '</span>';
		}
	
	}


var emailThreadID = "";

function emailThread(threadID) {
	
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to email a thread. <a href="join.php">Join now &raquo;</a>','300','4500');
		} else if (document.getElementById('userID').innerHTML != getCookie('userID')) {
			toggleFeedbackZone('caution','You must be logged in to email a thread. <a href="join.php">Join now &raquo;</a>','300','4500');
				} else if (togglePMvar == false) {
					//togglePMvar = true;
					//emailThreadID = threadID;
					togglePMvar = true;
					emailThreadID = threadID;
					
					//var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
					var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
					var pY = ns ? pageYOffset : iecompattest().scrollTop;	
					var y2 = pY + 110;
					document.getElementById('mailForm').style.top=y2+"px";				
					
					document.getElementById('mailForm').innerHTML = "<div style='font-weight:bold;margin-top:50px;background-color:#FFFFFF;border:solid 1px black;padding:10px;'>Loading...</div>";
					toggle('mailForm');
					postPage('emailThreadOpen');
					//alert('Coming soon.');
					} else {
						toggleFeedbackZone('error','You cannot email a thread and send a Private Message at the same time.','300','4500');
						}	
	
	}

var emailThreadParams = "";
function emailThreadSend(threadID) {
	if (document.getElementById('userID') == null) {
		toggleFeedbackZone('caution','You must be logged in to email a thread. <a href="join.php">Join now &raquo;</a>','300','4500');
		} else {
			var emailThread_FromName = document.getElementById('emailThreadFromNameBox').value;
			var emailThread_FromEmail = document.getElementById('emailThreadFromEmail').innerHTML;		
			var emailThread_ToName = document.getElementById('emailToNameBox').value;
			var emailThread_ToEmail = document.getElementById('emailToEmailBox').value;
			var emailThread_ToComment = document.getElementById('emailThreadCommentBox').value;

			if (emailThread_FromName.length < 1) {
				toggleFeedbackZone('error','Please enter your name.','300','4500');
				} else if (emailThread_FromEmail == "yahoo") {
					toggleFeedbackZone('error','You must add your email address to your profile.','300','4500');
					} else if (emailThread_ToName.length < 1) {
						alert('Please enter your friend\'s name.');
						toggleFeedbackZone('error','Please enter the name of your friend.','300','4500');
						} else if (emailThread_ToEmail.length < 1) {
							toggleFeedbackZone('error','Please enter a valid email address.','300','4500');
							} else {
								emailThreadParams = "&fromName=" + encodeURIComponent(emailThread_FromName) + 
													"&fromEmail=" + encodeURIComponent(emailThread_FromEmail) + 
													"&toName=" + encodeURIComponent(emailThread_ToName) +
													"&toEmail=" + encodeURIComponent(emailThread_ToEmail) +
													"&toComment=" + encodeURIComponent(emailThread_ToComment);
								postPage('emailThreadSend');
								}
		
			}
		}




function unsetAllThreads(message) {
	if (document.getElementById('RefreshDiv')) {
	
		// temp lang fix
		if (document.domain == 'forum.ravaruforum.com' && message.indexOf('Refresh') != -1) { 
			message = 'Uppdatera Trådar';
			}
			
		document.getElementById('RefreshDiv').innerHTML = "<img src=\"images/nv-refresh.png\"> " + message;
	}
}

function resetAllThreads() {
	if (document.getElementById('RefreshDiv')) {
		var All_Threads = "All Threads";
		
		// temp lang fix
		if (document.domain == 'forum.ravaruforum.com') { All_Threads = 'Alla Trådar';}
		
		document.getElementById('RefreshDiv').innerHTML = "<img src=\"images/nv-all.png\"> " + All_Threads;
	}

	if (document.getElementById('lastModifiedBy')) {
		document.getElementById('lastModifiedBy').innerText = "-1";
	}

}



/* ********** */
/* Edit Posts */
/* ********** */

var previewEditContent = "";
var continuePreview = 0;

function previewEditPost() {		
		
	if (document.getElementById('editComposeBox').value.length < 1) {
		toggleFeedbackZone('error','Please enter content.','300','3500');
		document.getElementById('editComposeBox').focus();
		continuePreview = 0;
		} else {
			continuePreview = 1;
			var previewEditCompose = document.getElementById('editComposeBox').value;			
			}
	
	if (continuePreview == 1) {
		if (document.getElementById('editPostTitleBox')) {
		
				var previewEditTitle;
			
				if (document.getElementById('editPostTitleBox').value.length < 1) {
					toggleFeedbackZone('error','Please enter a title.','300','3500');
					document.getElementById('editPostTitleBox').focus();
					continuePreview = 0;			
					} else {
						continuePreview = 1;
						previewEditTitle = document.getElementById('editPostTitleBox').value;
						}	
				} else {
					previewEditTitle = "";
					}
			}
	
	if (continuePreview == 1) {
		toggleFeedbackZone('caution','Generating Preview...','225',0);
		previewEditContent = "&title=" + encodeURIComponent(previewEditTitle) + "&content=" + encodeURIComponent(previewEditCompose);
		postPage('previewEdit');
		}	
		
}

function closeEditPost(returnLink) {
//	location.href='/';
	location.href=returnLink;
	}

function addEditPost() {

	if (trim(document.getElementById('editComposeBox').value).length < 1) {
		toggleFeedbackZone('error','Please enter content.','300','3500');
		document.getElementById('editComposeBox').focus();
		return false;
		} else if (document.getElementById('editPostTitleBox') && trim(document.getElementById('editPostTitleBox').value).length < 1) {
				toggleFeedbackZone('error','Please enter a title.','300','3500');
				document.getElementById('editPostTitleBox').focus();
				return false;		
			} else {
					toggleFeedbackZone('caution','Updating post...','300','3500');
					return true;
				}
}




/* ***** */
/* Admin */
/* ***** */

var adminMode = "";
function admin(mode) {

	adminMode = mode;

	if (adminMode == 'searchUserName') {

		nameToSearch = trim(document.getElementById('searchUserNameInput').value);
		
			if (nameToSearch.length > 0) {
				adminMode = mode + "&userName=" + nameToSearch;
				if (document.getElementById('searchEmailInput').value.length > 0) {document.getElementById('searchEmailInput').value = "";}
				
				postPage('admin');
				
				} else {
					toggleFeedbackZone('error','Please enter a user name to continue.','300','3500');
			}
		}
	
	else if (adminMode == 'searchEmail') {
		
		emailToSearch = trim(document.getElementById('searchEmailInput').value);
		
			if (emailToSearch.length > 0) {
				adminMode = mode + "&email=" + emailToSearch;
				if (document.getElementById('searchUserNameInput').value.length > 0) {document.getElementById('searchUserNameInput').value = "";}
				
				postPage('admin');
				
				} else {
					toggleFeedbackZone('error','Please enter an email address to continue.','300','3500');
			}	
		}
	
	else if (adminMode == 'clear') {
		document.getElementById('manageUsersResults').innerHTML = "";
		if (document.getElementById('searchUserNameInput').value.length > 0) {document.getElementById('searchUserNameInput').value = "";}
		if (document.getElementById('searchEmailInput').value.length > 0) {document.getElementById('searchEmailInput').value = "";}
		}
	
	else {
		if (document.getElementById('searchUserNameInput').value.length > 0) {document.getElementById('searchUserNameInput').value = "";}
		if (document.getElementById('searchEmailInput').value.length > 0) {document.getElementById('searchEmailInput').value = "";}
		postPage('admin');
		}
}


// store original content in array in case user decides to put two entries into edit mode at the same time (unlikely, but could happen)
var adminEditID = "";
var adminEditData = new Array();

function adminEdit(theID) {
	adminEditID = theID;
	adminEditData[adminEditID] = document.getElementById('adminEdit' + theID).innerHTML;
	postPage('adminEdit');
	}
function adminEditCanel(theID) {
	document.getElementById('adminEdit' + theID).innerHTML = adminEditData[theID];
	}
function adminEditSave(theID) {
	if (trim(document.getElementById('adminEditEmail' + theID).value) == "") {
		toggleFeedbackZone('error','The email field cannot be left empty.','300','6000');
		document.getElementById('adminEditEmail' + theID).focus();
		} else {
			adminEditID = theID;
			postPage('adminEditSave');
			}
	}

/* Admin settings */

var settingToUpdate;
function toggleSetting(setting) {
	settingToUpdate = setting;
	postPage('updateToggleSetting');
	}


var editSettingsBasicOriginalContent;
function editSettingsBasic() {
	editSettingsBasicOriginalContent = document.getElementById('editSettingsBasicContainer').innerHTML;
	postPage('editSettingsBasic');
	}

function cancelEditSettings() {
	document.getElementById('editSettingsBasicContainer').innerHTML = editSettingsBasicOriginalContent;
	}

var saveEditSettingsParams;
function saveEditSettings() {

	var nameSite = document.getElementById('nameSiteBox').value;
	var boardOwner = document.getElementById('boardOwnerBox').value;
	var boardOwnerEmail = document.getElementById('boardOwnerEmailBox').value;
	var indexLink = document.getElementById('indexLinkBox').value;
				
	saveEditSettingsParams = "&nameSite=" + encodeURIComponent(nameSite) +
							 "&boardOwner=" + encodeURIComponent(boardOwner) +
							 "&boardOwnerEmail=" + encodeURIComponent(boardOwnerEmail) +
							 "&indexLink=" + encodeURIComponent(indexLink);

	postPage('saveEditSettings');
	
	}




var whitelistParams = "";

function whitelistForm(direction) {
	if (direction == 'show') {
		whitelistParams = "mode=addWhitelistEmailDiv";
		postPage('addWhitelistEmailDiv');
		} else if (direction == 'hide') {
			document.getElementById('addWhitelistEmailDiv').innerHTML = "";
			}
	}

function showWhitelist(query) {
	if (query == 'all') {
		whitelistParams = "mode=showWhitelist";
		} else if (query == 'nonactive') {
			whitelistParams = "mode=nonactiveWhitelist";
			} 
		postPage('addWhitelistEmailDiv');
	}
	
function addWhitelist() {
	//make sure email and message fields are not empty
	//if (document.getElementById('registerEmail').value.length > 0) {
	if (document.getElementById('registerWhitelistEmail').value.length > 0) {
		if (document.getElementById('whitelistMessage').value.length > 0) {
			postPage('addWhitelist');
			} else {
					alert('A short message and a link to the Express Sign Up page (express.php) are required.');
					}
		} else {
			alert('Enter a valid email address.');
			}
}

function editNavLinksBox() {
	document.getElementById('navLinksResults').innerHTML = " &nbsp;";
	document.getElementById('editNavLinksBox').disabled = false;
	document.getElementById('editNavLinksBox').focus();
}

var navLinks = "";
function saveNavLinksBox() {
	if (document.getElementById('editNavLinksBox').disabled == true) {
		toggleFeedbackZone('error','Click the \'edit\' button and then make changes before saving.','300','5000');
		} else {
			// pass the contents to navLinks.php
			navLinks = trim(document.getElementById('editNavLinksBox').value);
			postPage('saveNavLinks');
			}
}

function editCss() {
	document.getElementById('saveCssResults').innerHTML = " &nbsp;";
	document.getElementById('editCssBox').disabled = false;
	document.getElementById('editCssBox').focus();
}

var saveCSS = "";
function saveCss() {
	if (document.getElementById('editCssBox').disabled == true) {
		toggleFeedbackZone('error','Click the \'edit\' button and then make changes before saving.','300','5000');
		} else {
			// pass the contents to navLinks.php
			saveCSS = trim(document.getElementById('editCssBox').value);
			postPage('saveCSS');
			}
}


/* ********************************************************** */
/* Format Threads                                             */
/* Thanks to http://alexking.org "Quick Tags JS" for guidance */
/* ********************************************************** */

var edButtons = new Array();

function edButton(tagStart, tagEnd) {
	this.tagStart = tagStart; 	// open tag
	this.tagEnd = tagEnd;		// close tag
}

edButtons.push(
	new edButton('[url=http://]','[/url]')
	);

edButtons.push(
	new edButton('[b]','[/b]')
	);

edButtons.push(
	new edButton('[i]','[/i]')
	);

edButtons.push(
	new edButton('[goog=]','[/goog]')
	);

edButtons.push(
	new edButton('[img]','[/img]')
	);
	
edButtons.push(
	new edButton('[youtube]','[/youtube]')
	);
edButtons.push(
	new edButton('[vimeo]','[/vimeo]')
	);			
/*
edButtons.push(
	new edButton('[quote]','[/quote]')
	);		

edButtons.push(
	new edButton('[break]','[/break]')
	);
*/

function popURL(i,thefield) {	
		var URL = prompt('Enter the URL','http://');
		if (URL) {
			edButtons[i].tagStart = '[url=' + URL + ']';
			insertTag(i,thefield);	
		}
	}

function popImage(i,thefield) {	
		var URL = prompt('Enter the URL for the image','http://');
		if (URL) {
			edButtons[i].tagStart = '[img]' + URL;
			insertTag(i,thefield);	
		}
	}

function popTube(i,thefield) {	
		var URL = prompt('Enter the URL for the YouTube video','http://');
		if (URL) {
			edButtons[i].tagStart = '[youtube]' + URL;
			insertTag(i,thefield);	
		}
	}

function popVimeo(i,thefield) {	
		var URL = prompt('Enter the URL for the Vimeo video','http://');
		if (URL) {
			edButtons[i].tagStart = '[vimeo]' + URL;
			insertTag(i,thefield);	
		}
	}
		
function popGoog(i,thefield) {
		
		var myField = document.getElementById(thefield);
		var theterms = '';
		
		if (document.selection) {
			sel = document.selection.createRange();
			if (sel.text.length > 0) {
				theterms = sel.text;
				}
			} else if (myField.selectionStart || myField.selectionStart == '0') {
				var startPos = myField.selectionStart;
				var endPos = myField.selectionEnd;
				if (startPos != endPos) {
					theterms = myField.value.substring(startPos, endPos);
					}
				}
		
		var googTerms = prompt('Enter search terms',theterms);
		theterms = '';
		if (googTerms) {
			edButtons[i].tagStart = '[goog=' + googTerms + ']';
			insertTag(i,thefield);	
		}
	}
		
function insertTag(i,thefield) {

var myField;

myField = document.getElementById(thefield);

if (i == 1) {
	var clickabletext = 'bold text';
	} else if (i == 2) {
		var clickabletext = 'italic text';
		} else if (i == 3) {
			var clickabletext = 'let me google that for you';
		} else if (i == 4 || i == 5 || i == 6) {
			var clickabletext = '';									
			} else {
				var clickabletext = 'clickable text';
				}

	//IE support
	if (document.selection) {
		myField.focus();
	    sel = document.selection.createRange();
		if (sel.text.length > 0 && i != 3) {
			sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd;
		}
		else {
				sel.text = edButtons[i].tagStart + clickabletext + edButtons[i].tagEnd;
			}
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = myField.scrollTop;
		if (startPos != endPos && i != 3) {
			myField.value = myField.value.substring(0, startPos)
			              + edButtons[i].tagStart
			              + myField.value.substring(startPos, endPos) 
			              + edButtons[i].tagEnd
			              + myField.value.substring(endPos, myField.value.length);
			cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
		}
		else {
				myField.value = myField.value.substring(0, startPos) 
				              + edButtons[i].tagStart + clickabletext
							  + edButtons[i].tagEnd
				              + myField.value.substring(endPos, myField.value.length);
				if (i == 3 || i ==4 || i ==5) {
					cursorPos += startPos + edButtons[i].tagStart.length + clickabletext.length + edButtons[i].tagEnd.length;
					} else {
						cursorPos = startPos + edButtons[i].tagStart.length;
						}
		}
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		myField.scrollTop = scrollTop;
	}
}

var Emoticons=new Array(":)",";)",":|",":(",":D",":O",":eek:",":oops:",":angel:",":cool:",":-*",":heart:",":beer:",":(|)");

function insertEmoticon(i,thefield) {

	myField = document.getElementById(thefield);
		
	//IE support
	if (document.selection) {
		myField.focus();
	    sel = document.selection.createRange();
		sel.text = Emoticons[i];
		myField.focus();
	}
	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
		var startPos = myField.selectionStart;
		var endPos = myField.selectionEnd;
		var cursorPos = endPos;
		var scrollTop = myField.scrollTop;
				myField.value = myField.value.substring(0, startPos) 
				              + Emoticons[i]
				              + myField.value.substring(endPos, myField.value.length);
				cursorPos = startPos + Emoticons[i].length;
		myField.focus();
		myField.selectionStart = cursorPos;
		myField.selectionEnd = cursorPos;
		myField.scrollTop = scrollTop;
	}
}

function insertName(thename) {
	if (getCookie('userID')) {
		document.getElementById("postReplyBox").focus(); // get focus first to accommodate IE bug so cursor goes at end of text
		document.getElementById("postReplyBox").value += (thename + " ");
		// document.getElementById("postReplyBox").focus();
		} else {
			toggleFeedbackZone('caution','You must be logged to reply to a user. <a href="join.php">Join now &raquo;</a>','300','3500');
			}
	}

var quotePostID = "";

function quotePost(postID) {
	if (getCookie('userID')) {
		toggleFeedbackZone('caution','Adding quote to reply box...','300','3500');
		quotePostID = postID;
		postPage('quotePost');	
		} else {
			toggleFeedbackZone('caution','You must be logged to quote and reply to a user. <a href="join.php">Join now &raquo;</a>','300','3500');
			}
	}

//*****************************************************************************
// Drag Div -Do not remove this notice. Copyright 2001 by Mike Hall. See http://www.brainjar.com for terms of use.
//*****************************************************************************

// Determine browser and version.

function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
dragObj.zIndex = 0;

function dragStart(event, id) {

  var el;
  var x, y;

  // If an element id was given, find it. Otherwise use the element being
  // clicked on.

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // If this is a text node, use its parent element.

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Save starting positions of cursor and element.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Update element's z-index.

  dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Capture mousemove and mouseup events on the page.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Get cursor position with respect to the page.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move drag element by the same amount the cursor has moved.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Stop capturing mousemove and mouseup events.

  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}

/* ************************************** */
/* Cookies!                               */
/* ************************************** */

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ';', len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+'='+escape( value ) +
		( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
		( ( path ) ? ';path=' + path : '' ) +
		( ( domain ) ? ';domain=' + domain : '' ) +
		( ( secure ) ? ';secure' : '' );
}

function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + '=' +
			( ( path ) ? ';path=' + path : '') +
			( ( domain ) ? ';domain=' + domain : '' ) +
			';expires=Thu, 01-Jan-1970 00:00:01 GMT';
}

function fbs_click(linkText) {
u=location.href;
//t=document.title;
window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(linkText),'sharer','toolbar=0,status=0,width=626,height=436');
return false;
}

/*
 * Below code is for the functionality to display the message
 * "Anuj Mike are typing a message"
 * */

var isTypingMesssageSent = false;

function postReplyBoxChange (){
	var content = document.getElementById("postReplyBox").value;
	if(content != null && content != ""){
		sendIsTypingRequest();
	}else{
		sendNotTypingRequest();
	}
}

function sendIsTypingRequest(){
	if(!isTypingMesssageSent){
		postPage("userIsTyping");
		isTypingMesssageSent = true;
	}
}

function sendNotTypingRequest(){
	if(isTypingMesssageSent){
		postPage("userIsNotTyping");
		isTypingMesssageSent = false;
	}
}

window.onbeforeunload = function() {
	var id = document.getElementById("postReplyBox");
	if (id != null) {
		var content = document.getElementById("postReplyBox").value;
		if (content != null && content != "") {
			alert("Your reply will not be submitted.");
			sendNotTypingRequest();
		}
	}
	return;
}


