﻿// Scripts that use ajax and the intervalID or messageShowing vars  -->
var intervalID;
var messageShowing;
function sendMessage()
{
  if (document.getElementById('sltToName').length == 0) {
    alert('You must enter the username you wish to send to!');
  } else {
    var toUsernames = getRecipients();
    var subject = document.getElementById('txtSubject').value;
    var message = document.getElementById('txtMessage').value;
    FridayAd.Web.Community.UserControls.Messaging.Mailbox.SendMessage(toUsernames, subject, message, sendMessage_callback);  // asynchronous call
    toggleLoading('');
  }
}
function sendMessage_callback(res)
{
  if (res.value == '') {
    toggleDiv('NewMessage', 'none');
    toggleDiv('MailboxList', '');
    toggleDiv('MailboxViewPane', '');
    showSystemMessage("Message Sent");
  } else {
    showSystemMessage(res.value);
  }
  toggleLoading('none');
}
function getMessageList()
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.GetMailList(getMessageList_callback);  // asynchronous call
  toggleLoading('');
}
function getMessageList_callback(res)
{
  toggleDiv('NewMessage', 'none');
  toggleDiv('MailboxList', '');
  toggleDiv('MailboxViewPane', '');
  var MailboxMessages = document.getElementById('MailboxMessages');
  MailboxMessages.innerHTML = res.value;
  toggleLoading('none');
}
function getSentMessages()
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.GetSentList(getMessageList_callback);
  toggleLoading('');
}
function deleteMessage(MessageID)
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.DeleteMessage(MessageID, deleteMessage_callback);  // asynchronous call
  toggleLoading('');
}
function deleteMessage_callback(res)
{
  showSystemMessage("Message deleted.");
  getFirstMessage();
  getMessageList();
}
function blockAndDelete(MessageID, UserID) {
  if (confirm('Are you sure you want to block this user?')) {
    blockAndDeleteConfirmed(MessageID, UserID);
  }
}
function blockAndDeleteConfirmed(MessageID, UserID)
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.BlockAndDelete(MessageID, UserID, blockAndDelete_callback);  // asynchronous call
  toggleLoading('');  
}
function blockAndDelete_callback(res)
{
  showSystemMessage("User blocked, all messages from that user have been deleted.");
  getFirstMessage();
  getMessageList();
}
function addFriend(UserID)
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.AddFriend(UserID, addFriend_callback);  // asynchronous call
  toggleLoading('');     
}
function addFriend_callback(res)
{
  showSystemMessage("Your friend has been added");
  toggleLoading('none');  
}
function getFirstMessage()
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.GetFirstMail(getFirstMessage_callback);
  toggleLoading('');
}
function getFirstMessage_callback(res)
{
  if (res.value != null) {
    loadMessage(res.value, 'Received');
  }
  checkForMessages();
}
function loadMessage(messageID, messageType)
{
  messageShowing = messageID;
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.GetMessage(messageID, messageType, loadMessage_callback);
  toggleLoading('');
}
function loadMessage_callback(res)
{
  var MessagePane = document.getElementById('MailboxViewPane');
  MessagePane.innerHTML = res.value;
  toggleDiv('NewMessage', 'none');      
  toggleDiv('MailboxList', '');
  toggleDiv('MailboxViewPane', '');
  toggleLoading('none');
  markMessageRead(messageShowing);
}
function getFriendsList()
{
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.GetFriendsList(getFriendsList_callback);
  toggleLoading('');
}
function getFriendsList_callback(res)
{
  if (res.value != null) {
    var friends = res.value.split(';');
    var friendsList = document.getElementById('sltFriendsList');
    for (i= 0; i < friends.length; i++) {
      addOption(friendsList, friends[i], 'Friend', 0);
    }
    checkFriendsAndToList();
  }
  toggleLoading('none');
}
function checkForMessagesInterval()
{
  intervalID = window.setInterval(checkForMessages, 5000);
}
function checkForMessages()
{
  window.clearInterval(intervalID);
  FridayAd.Web.Community.UserControls.Messaging.Mailbox.CheckForNewMails(checkForMessages_callback);
}
function checkForMessages_callback(res)
{
  if (res.value > 0) {
    var numberRead = document.getElementById('NewMessages').innerHTML;
    var numberMenuRead = document.getElementById('NewMessagesMenu');
    if (numberRead < res.value) getMessageList();
    document.getElementById('NewMessages').innerHTML = res.value;
    if (numberMenuRead != null && res.value > 0) {
      numberMenuRead.innerHTML = '(' + res.value + ')';
    } else if (numberMenuRead != null) {
      numberMenuRead.innerHTML = '';
    }
    checkForMessagesInterval();
  } else {
    checkForMessagesInterval();
  }
}
function showSystemMessage(message) 
{
  document.getElementById('SystemMessage').innerHTML = message;
  window.clearInterval(intervalID);
  intervalID = window.setInterval(clearSystemMessage, 5000);
}
function clearSystemMessage()
{
  window.clearInterval(intervalID);
  document.getElementById('SystemMessage').innerHTML = '';
  checkForMessagesInterval();
}
function newMessage()
{
  document.getElementById('txtSubject').value = '';
  document.getElementById('txtMessage').value = '';
  removeAll();
  toggleDiv('NewMessage', '');
  toggleDiv('MailboxList', 'none');
  toggleDiv('MailboxViewPane', 'none');
}
function copyMessage(toUser, subject)
{
  removeAll();
  initToList(toUser);
  document.getElementById('txtSubject').value = subject;
  document.getElementById('txtMessage').value = '\n\n---------- Original Message ----------\n\n';
  document.getElementById('txtMessage').value += document.getElementById('messagePaneMessage').innerHTML.replace('<br/>', '\n');
  toggleDiv('NewMessage', '');
  toggleDiv('MailboxList', 'none');
  toggleDiv('MailboxViewPane', 'none');
}
function markMessageRead(messageShowing)
{
  //Set all messages back to old style.
  unmarkOtherMessages();
  readingMessage = document.getElementById(messageShowing);
  if (readingMessage != null) {
    if (readingMessage.className == 'messageUnread' || readingMessage.className == 'messageHoverUnread')
    {
      //Lower the number of read posts.
      var numberRead = document.getElementById('NewMessages').innerHTML;
      if (numberRead > 0) {
        document.getElementById('NewMessages').innerHTML = numberRead-1;
        if (document.getElementById('NewMessagesMenu') != null) {
          document.getElementById('NewMessagesMenu').innerHTML = '(' + document.getElementById('NewMessages').innerHTML + ')';
        }
      }
    }
    readingMessage.onmouseout = "";
    readingMessage.onmouseover = "";
    readingMessage.className = 'readingMessage';
  }
} 
function unmarkOtherMessages()
{
  var i = 0;
  var objDiv = document.getElementById( 'MailboxMessages');
  for( i = 0; i < objDiv.childNodes.length; i++ )
  {
    var childDiv = objDiv.childNodes[i];
    if (childDiv.className == 'readingMessage') 
    {
      childDiv.className = 'message';
      childDiv.onmouseout = function onmouseout(event)
      { 
        changeStyle(this, 'message');
      }
      childDiv.onmouseover = function onmouseover(event)
      { 
        changeStyle(this, 'messageHover');
      }
    }
  }
}
function toggleLoading(displayText)
{
  var gettingData = document.getElementById('GettingData');
  gettingData.style.display = displayText;
}
function toggleDiv(divName,shown)
{
  var gettingData = document.getElementById(divName);
  gettingData.style.display = shown;
}
function changeStyle(divToChange, style) 
{
  divToChange.className = style;
}
function getRecipients()
{
  var recipients = "";
  var sltToName = document.getElementById('sltToName');
  for (i= 0; i < sltToName.length; i++) {
    if (recipients.length > 0)
    {
      recipients += ";";
    }
    recipients += sltToName.options[i].text;
  }
  return recipients;
}
function addUsername(Username)
{
  var sltToName = document.getElementById('sltToName');
  var blnFound = false;
  for (i= 0; i < sltToName.length; i++) {
    if (sltToName.options[i].text == Username) {
      blnFound = true;
    }
  }
  if (blnFound == false) {
    addOption(sltToName, Username, 'Added', 0);
  }
}
function addUser()
{
  var sltFriendsList = document.getElementById('sltFriendsList');
  var sltToName = document.getElementById('sltToName');
  var blnFound = false;
  
  for (i= 0; i < sltFriendsList.length; i++) {
    if (sltFriendsList.options[i].selected) {
      for (j= 0; j < sltToName.length; j++) {
        if (sltFriendsList.options[i].text == sltToName.options[j].text) {
          sltToName.remove(j);
        }
      }
      addOption(sltToName, sltFriendsList.options[i].text, sltFriendsList.options[i].value, 0);
      sltFriendsList.remove(i);
      i--;
    }
  }
}
function initToList(toUsers)
{
  if (toUsers.length > 0) {
    var toUserList = toUsers.split(';');
    var sltToName = document.getElementById('sltToName');
    for (i= 0; i < toUserList.length; i++) {
      addOption(sltToName, toUserList[i], toUserList[i], 0);
    }
    checkFriendsAndToList();
  }
}
function checkFriendsAndToList()
{
  var sltFriendsList = document.getElementById('sltFriendsList');
  var sltToName = document.getElementById('sltToName');
  for (i= 0; i < sltToName.length; i++) {
    for (j= 0; j < sltFriendsList.length; j++) {
      if (sltFriendsList.options[j].value == sltToName.options[i].value) {
        sltFriendsList.remove(j);
      }
    }
  }
}
function removeUser()
{
  var sltFriendsList = document.getElementById('sltFriendsList');
  var sltToName = document.getElementById('sltToName');
  
  for (i= 0; i < sltToName.length; i++) {
    if (sltToName.options[i].selected) {
      if (sltToName.options[i].value != 'Added') {
        addOption(sltFriendsList, sltToName.options[i].text, sltToName.options[i].value, 0);
      }
      sltToName.remove(i);
      i--;
    }
  }
}
function addAll()
{
  var sltFriendsList = document.getElementById('sltFriendsList');
  var sltToName = document.getElementById('sltToName');
  for (i= 0; i < sltFriendsList.length; i++) {
    for (j= 0; j < sltToName.length; j++) {
      if (sltFriendsList.options[i].text == sltToName.options[j].text) {
        sltToName.remove(j);
      }
    }
    addOption(sltToName, sltFriendsList.options[i].text, sltFriendsList.options[i].value, 0);
  }
  sltFriendsList.options.length = 0;
}
function removeAll()
{
  var sltFriendsList = document.getElementById('sltFriendsList');
  var sltToName = document.getElementById('sltToName');
  sltFriendsList.options.length = 0;
  sltToName.options.length = 0;
  getFriendsList();
}
function addOption(sltBox, value, text, maximumAllowed)
{
  var elOptNew = document.createElement('option');
    elOptNew.text = value;
    elOptNew.value = text;
    
    if (sltBox.options.length < maximumAllowed || maximumAllowed == 0) {
      try {
        sltBox.add(elOptNew, null); // standards compliant; doesn't work in IE
      }
      catch(ex) {
        sltBox.add(elOptNew); // IE only
      }
    } else {
      alert('You cannot send to more than ' + maximumAllowed + ' people!');
    }
}
function findUser()
{
toggleDiv('FindUsers', '');
toggleDiv('FindUserCover', '');
}
function CloseFindUser() 
{
toggleDiv('FindUsers', 'none');
toggleDiv('FindUserCover', 'none');
}
function searchForUsername()
{
var user = document.getElementById('txtFindUser').value;
if (user.length == 0) {
alert('You must enter a username to search for!');
} else {
/*FridayAd.Web.Community.UserControls.Messaging.Mailbox.FindUser(user, searchForUsername_callback);  // asynchronous call
toggleLoading('');*/
//COMMENT OUT BECAUSE IT WAS USED TO SPAM SENDING IN MAILBOX*/
}
}
function searchForUsername_callback(res)
{
document.getElementById('UsersFound').innerHTML = res.value;
toggleLoading('none');
}
function InitialiseMailbox(floatingDiv)
{
window.scrollTo(0, 0);
toggleDiv('DarkShadder', '');
toggleDiv('IframeCover', '');
if (document.getElementById('MailboxViewPane').innerHTML == '') {
getMessageList();
getFirstMessage();
}
if (floatingDiv == true) {
toggleDiv('MyInboxControls', '');
}
}
function CreateNewMail(Username)
{
window.scrollTo(0, 0);
toggleDiv('DarkShadder', '');
toggleDiv('IframeCover', '');
toggleDiv('MyInboxControls', '');
newMessage();
addUsername(Username);
}
function CloseMailbox()
{
toggleDiv('DarkShadder', 'none');
toggleDiv('IframeCover', 'none');
}