function getProfileForm() {
  return document.forms['profile'];
}

function getEditProfileForm() {
  return document.forms['editprofile'];
}

function getProfileUsername() {
  return getProfileForm().elements['username'].value;
}

function ajaxGetProfileForm(user_id, type) {
  var args = {
    'url' : '/ajax/handlers/getprofileform.xml',
    'groupName' : 'global'
  };
  var params = {
    'user_id' : user_id,
    'type' : type
  };
  var handlers = {
    'onSuccess' : manageGetProfileForm
  };
  AjaxEngine.makeReplaceCall('getprofileform', args, params, handlers);
  return false;
}

function editProfileDetails(user_id) {
  return ajaxGetProfileForm(user_id, 'details');
}

function editProfileInterests(user_id) {
  return ajaxGetProfileForm(user_id, 'interests');
}

function editProfileInfo(user_id) {
  return ajaxGetProfileForm(user_id, 'info');
}

function askWidgipalship(user_id) {
  return ajaxGetProfileForm(user_id, 'widgipal');
}

function manageGetProfileForm(response, response_data) {
  prefillAndShowPopup(response_data['PopupContent']);
  setTimeout("manageGetProfileFormLazy()", 500);
  return false;
}

function manageGetProfileFormLazy() {
  getEditProfileForm().elements[0].focus();
}

function handleProfileSubmitType(o, e) {
  if (enterPressed(o, e)) {
    return submitProfileForm();
  }
  return true;
}

function handleProfileType(o, e) {
  if (enterPressed(o, e)) {
    return ajaxSaveProfile();
  }
  return true;
}

function showAvatar() {
  hh('wpdc_show_avatar');
  ss('wpdc_edit_avatar');
  return false;
}

function submitProfileForm() {
  showPopupLoader();
  var form = getEditProfileForm();
  form.action = '/ajax/handlers/saveprofile.xml';
  form.target = 'profile_frame';
  form.submit();
  return false;
}

function manageSubmitProfileForm() {
  hidePopupLoader();
  var error_code = '';
  var error_message = '';
  try {
    var response = window.frames['profile_frame'].Response;
    if (response.Error == '1') {
      var status_message = response.StatusMessage;
      error_message = response.Message;
      error_code = response.Code;
      throw "Error";
    }
    var refresh = response.Refresh;
    ajaxRefreshProfile(refresh);
    hidePopup();
    //return showSuccess(response.Message);
    return false;
  } catch(e) {
    if (error_message.length) {
      return showError(error_message);
    } else {
      return showFatalError();
    }
  }
}

function ajaxSaveProfile() {
  var form = getEditProfileForm();
  var args = {
    'url' : '/ajax/handlers/saveprofile.xml',
    'groupName' : 'popup'
  };
  var params = getFormParameters(form);
  var handlers = {
    'onSuccess' : manageSaveProfile
  };
  AjaxEngine.makeInsertCall('saveprofile', args, params, handlers);
  return false;
}

function manageSaveProfile(response, response_data) {
  hidePopup();
  ajaxRefreshProfile(response_data);
  return false;
}

function ajaxGetWidgipals(user_id) {
  var args = {
    'url' : '/ajax/handlers/getwidgipals.xml',
    'groupName' : 'global'
  };
  var params = {
    'user_id' : user_id
  };
  AjaxEngine.makeReplaceCall('getwidgipals', args, params);
  return false;
}

function getDiscussionForm() {
  return document.forms['discussion'];
}

function ajaxGetDiscussionForm(params) {
  var args = {
    'url' : '/ajax/handlers/getdiscussionform.xml',
    'groupName' : 'global'
  };
  var handlers = {
    'onSuccess' : manageGetDiscussionForm
  };
  params['username'] = getProfileUsername();
  AjaxEngine.makeReplaceCall('getdiscussionform', args, params, handlers);
  return false;
}

function askWidgipalship() {
  return ajaxGetDiscussionForm({
    'invitation' : 1
  });
}

function postNewDiscussion() {
  return ajaxGetDiscussionForm({});
}

function replyMessage(parent_id) {
  return ajaxGetDiscussionForm({
    'parent_id' : parent_id
  });
}

function manageGetDiscussionForm(response, response_data) {
  prefillAndShowPopup(response_data['PopupContent']);
  setTimeout("manageGetDiscussionFormLazy()", 500);
  return false;
}

function manageGetDiscussionFormLazy() {
  var form = getDiscussionForm();
  if (typeof(form.elements['username']) != 'undefined') {
    form.elements['username'].focus();
  } else if (typeof(form.elements['title']) != 'undefined') {
    form.elements['title'].focus();
  } else if (typeof(form.elements['text']) != 'undefined') {
    form.elements['text'].focus();
  }
}

function ajaxPostDiscussion() {
  var args = {
    'url' : '/ajax/handlers/postdiscussion.xml',
    'groupName' : 'popup'
  };
  var form = getDiscussionForm();
  var params = getFormParameters(form);
  var handlers = {
    'onSuccess' : managePostDiscussion
  };
  AjaxEngine.makeReplaceCall('postdiscussion', args, params, handlers);
  return false;
}

function postDiscussion() {
  var un = getDiscussionForm().elements['username'];
  if (typeof(un) == 'undefined' || un.disabled) {
    return ajaxPostDiscussion();
  }
  return doLogin('discussion');
}

function handleDiscussionType(o, e) {
  if (enterPressed(o, e)) {
    return postDiscussion();
  }
  return true;
}

function ajaxRefreshProfile(params) {
  var args = {
    'url' : '/ajax/handlers/refreshprofile.xml',
    'groupName' : 'global'
  };
  params['username'] = getProfileUsername();
  AjaxEngine.makeReplaceCall('refreshprofile', args, params);
  return false;
}

function manageProfileLogin() {
  return ajaxRefreshProfile({
    'buttons' : 1,
    'menu' : 1,
    'bar' : 1
  });
}

function managePostDiscussion(response, response_data) {
  return ajaxRefreshProfile({
    'discussions' : 1
  });
}

function ajaxProcessInvitation(params) {
  var args = {
    'url' : '/ajax/handlers/processinvitation.xml',
    'groupName' : 'popup'
  };
  params['username'] = getProfileUsername();
  var handlers = {
    'onSuccess' : manageProcessInvitation
  };
  AjaxEngine.makeReplaceCall('processinvitation', args, params, handlers);
  return false;
}

function acceptInvitation(discussion_id)
{
  return ajaxProcessInvitation({
    'discussion_id' : discussion_id,
    'action' : 'accept'
  });
}

function denyInvitation(discussion_id)
{
  return ajaxProcessInvitation({
    'discussion_id' : discussion_id,
    'action' : 'deny'
  });
}

function confirmDenyInvitation(discussion_id, msg, title) {
  showYesNo(msg, title, function() {hidePopup(); return denyInvitation(discussion_id);});
  return false;
}

function manageProcessInvitation(response, response_data) {
  return ajaxRefreshProfile({
    'widgipals' : 1,
    'discussions' : 1
  });
}

