function $(id) {
  return document.getElementById(id);
}

function countdown(nb_seconds) {
  if (remaining_seconds < 0) {
    nb_days = 0;
    nb_hours = 0;
    nb_minutes = 0;
    nb_seconds = 0;
  } else {
    nb_days = Math.floor(nb_seconds/(3600*24));
    nb_hours = Math.floor(nb_seconds/3600)%24;
    nb_minutes = Math.floor(nb_seconds/60)%60;
    nb_seconds = nb_seconds%60;
  }
  $('countdown').innerHTML = nb_days+' jour(s) '+nb_hours+' h '+nb_minutes+' m '+nb_seconds+' s';
  setTimeout('countdown('+(nb_seconds-1)+')', 990);
}

function toggle_notifications() {
  if ($('notifications').style.display == 'none') {
    new Ajax.Updater('notifications_list', 'pages/notifications.php', {
      method: 'post',
      onSuccess: function() {$('notifications').style.display = 'block';}
    });
  } else {
    $('notifications').style.display = 'none';
  }
}

// ********************
// HOME
// ********************

function news() {
  new Ajax.Updater('news_list', 'pages/news_list.php', {
    method: 'post',
    parameters: $('news_filter_form').serialize()+"&offset=0"
  });
}

function more_news(offset) {
  $('more_news').remove();
  new Ajax.Updater('news_list', 'pages/news_list.php', {
    method: 'post',
    parameters: $('news_filter_form').serialize()+"&offset="+offset,
    insertion: Insertion.Bottom
  });
}

// ********************
// NEWS
// ********************

function news_comments(news_id) {
  new Ajax.Updater('news_comments', 'pages/news_comments.php', {
    method: 'post',
    parameters: {news_id: news_id, offset: 0}
  });
}

function more_news_comments(news_id, offset) {
  $('more_comments').remove();
  new Ajax.Updater('news_comments_list', 'pages/news_comments.php', {
    method: 'post',
    parameters: {news_id: news_id, offset: offset},
    insertion: Insertion.Bottom
  });
}

function add_news_comment() {
  new Ajax.Request('pages/add_news_comment.php', {
    method: 'post',
    parameters: $('add_news_comment_form').serialize(true),
    onSuccess: function() {news_comments($('news_id').value);}
  });
  // window.location.href="#Koommentaires";
  $('add_news_comment_form').reset();
}

// TODO: response empty ?
function edit_news_comment(comment_id) {
  new Ajax.Updater('news_comment_text-'+comment_id, 'pages/edit_news_comment.php', {
    method: 'post',
    parameters: $('edit_news_comment_form-'+comment_id).serialize()+'&comment_id='+comment_id
  });
}

function delete_news_comment(comment_id) {
  new Ajax.Request('pages/delete_news_comment.php', {
    method: 'post',
    parameters: {comment_id: comment_id},
    onSuccess: function() {news_comments($('news_id').value);}
  });
}

function vote_news(news_id) {
  new Ajax.Updater('news_votes', 'pages/vote_news.php', {
    method: 'post',
    parameters: {news_id: news_id}
  });
}

function up_news(news_id) {
  new Ajax.Request('pages/up_news.php', {
    method: 'post',
    parameters: {news_id: news_id},
    onSuccess: function() {news();}
  });
}

function edit_comment(id) {
  if ($("edit_comment_text-"+id).style.display == "none") {
    $("read_comment_text-"+id).style.display = "none";
    $("edit_comment_text-"+id).style.display = "block";
  } else {
    $("edit_comment_text-"+id).style.display = "none";
    $("read_comment_text-"+id).style.display = "block";
  }
}

// ********************
// MORNING
// ********************

function morning_comments() {
  new Ajax.Updater('morning_comments', 'pages/morning_comments.php', {
    method: 'post',
    parameters: {offset: 0}
  });
}

function more_morning_comments(offset) {
  $('more_comments').remove();
  new Ajax.Updater('morning_comments_list', 'pages/morning_comments.php', {
    method: 'post',
    parameters: {offset: offset},
    insertion: Insertion.Bottom
  });
}

function add_morning_comment() {
  new Ajax.Request('pages/add_morning_comment.php', {
    method: 'post',
    parameters: $('add_morning_comment_form').serialize(true),
    onSuccess: function() {morning_comments();}
  });
  $('add_comment_section').remove();
}

// TODO: response empty ?
function edit_morning_comment(comment_id) {
  new Ajax.Updater('morning_comment_text-'+comment_id, 'pages/edit_morning_comment.php', {
    method: 'post',
    parameters: $('edit_morning_comment_form-'+comment_id).serialize()+'&comment_id='+comment_id
  });
}

function delete_morning_comment(comment_id) {
  new Ajax.Request('pages/delete_morning_comment.php', {
    method: 'post',
    parameters: {comment_id: comment_id},
    onSuccess: function() {morning_comments();}
  });
}

// ********************
// CHAT
// ********************

function chat() {
  new Ajax.PeriodicalUpdater('chat_messages', 'pages/chat_messages.php', {
    method: 'post',
    frequency: 10
  });
  new Ajax.PeriodicalUpdater('chat_online', 'pages/chat_online.php', {
    method: 'post',
    frequency: 10
  });
}

function chat_messages() {
  new Ajax.Updater('chat_messages', 'pages/chat_messages.php', {
    method: 'post'
  });
}

function add_chat_message() {
  new Ajax.Request('pages/add_chat_message.php', {
    method: 'post',
    parameters: $('add_chat_message_form').serialize(true),
    onSuccess: function() {chat_messages();}
  });
  $('add_chat_message_form').reset();
  chat_message_to_cancel();
}

function add_chat_action(action, to_id) {
  new Ajax.Request('pages/add_chat_action.php', {
    method: 'post',
    parameters: {action: action, to_id: to_id},
    onSuccess: function() {chat_messages();}
  });
}

function add_chat_media() {
  new Ajax.Request('pages/add_chat_media.php', {
    method: 'post',
    parameters: $('add_chat_media_form').serialize(true),
    onSuccess: function() {chat_messages();}
  });
  $('add_chat_media_form').reset();
}

function edit_chat_status() {
  new Ajax.Request('pages/edit_chat_status.php', {
    method: 'post',
    parameters: {chat_status: $("chat_status").value},
    onSuccess: function() {chat_online();}
  });
}

function delete_chat_message(message_id) {
  new Ajax.Request('pages/delete_chat_message.php', {
    method: 'post',
    parameters: {message_id: message_id},
    onSuccess: function() {chat_messages();}
  });
}

function chat_media(message_id) {
  new Ajax.Updater('chat_media', 'pages/chat_media.php', {
    method: 'post',
    parameters: {message_id: message_id}
  });
}

function chat_message_to(id, pseudo) {
  $('textarea-0').focus();
  $('to').innerHTML = pseudo+'>';
  $('to_id').value = id;
}

function chat_message_to_cancel() {
  $('to').innerHTML = '';
  $('to_id').value = 0;
}

function add_smiley(id, smiley) {
  var textarea = $('textarea-'+id);
  var old_value = textarea.value;
  textarea.value = old_value.substring(0, textarea.selectionStart)+smiley+old_value.substring(textarea.selectionEnd, textarea.textLength);
  textarea.setSelectionRange(textarea.selectionStart + smiley.length, textarea.selectionStart + smiley.length);
  textarea.focus();
}

function action_box(id) {
  if ($("action_box-"+id).style.display == "none") {
    $("action_box-"+id).style.display = "block";
  } else {
    $("action_box-"+id).style.display = "none";
  }
}

// ********************
// PRIVATE MESSAGES
// ********************

function private_messages() {
  new Ajax.Updater('private_messages', 'pages/private_messages.php', {
    method: 'post',
    parameters: {offset: 0}
  });
}

function more_private_messages(offset) {
  $('more_private_messages').remove();
  new Ajax.Updater('private_messages', 'pages/private_messages.php', {
    method: 'post',
    parameters: {offset: offset},
    insertion: Insertion.Bottom
  });
}

function delete_private_message(pm_id) {
  new Ajax.Request('pages/delete_private_message.php', {
    method: 'post',
    parameters: {pm_id: pm_id},
    onSuccess: function() {private_messages();}
  });
}

function display_private_message(id) {
  if ($("pm_text-"+id).style.display == "none") {
    $("pm_text-"+id).style.display = "block";
  } else {
    $("pm_text-"+id).style.display = "none";
  }
}

// ********************
// MEMBER
// ********************

function friends(member_id) {
  new Ajax.Updater('friends', 'pages/friends.php', {
    method: 'post',
    parameters: {member_id: member_id}
  });
}

function friends_pending_in() {
  new Ajax.Updater('friends_pending_in', 'pages/friends_pending_in.php', {
    method: 'post'
  });
}

function friends_pending_out() {
  new Ajax.Updater('friends_pending_out', 'pages/friends_pending_out.php', {
    method: 'post'
  });
}

function accept_friendship(member_id, my_id) {
  new Ajax.Request('pages/accept_friendship.php', {
    method: 'post',
    parameters: {member_id: member_id},
	onSuccess: function() {friends_pending_in(); friends(my_id);}
  });
}

function delete_friendship(member_id, my_id) {
  new Ajax.Request('pages/delete_friendship.php', {
    method: 'post',
    parameters: {member_id: member_id},
    onSuccess: function() {friends(my_id);}
  });
}

function delete_friend_pending_in(member_id) {
  new Ajax.Request('pages/delete_friendship.php', {
    method: 'post',
    parameters: {member_id: member_id},
    onSuccess: function() {friends_pending_in();}
  });
}

function delete_friend_pending_out(member_id) {
  new Ajax.Request('pages/delete_friendship.php', {
    method: 'post',
    parameters: {member_id: member_id},
    onSuccess: function() {friends_pending_out();}
  });
}

function member_news(member_id, offset) {
  $('more_news').remove();
  new Ajax.Updater('news_list', 'pages/member_news.php', {
    method: 'post',
    parameters: {member_id: member_id, offset: offset},
    insertion: Insertion.Bottom
  });
}

