// JavaScript voor nieuwe berichten
$(document).ready(function() {
	var currentPage = 1;

  // Laat alle li-elementen verschijnen
  jQuery.slideEach = function(array, interval, callback) {
    if (!array.length) return;
    var i = 0;
    next();

    function next() {
      if (callback.call(array[i], i, array[i]) !== false) {
        if (++i < array.length)
          setTimeout(next, interval);
      }
    }

    return array;
  };

  jQuery.fn.slideEach = function(interval, callback) {
    return jQuery.slideEach(this, interval, callback);
  };
 
  $('#messages li').slideEach(200, function() {
    $(this).slideDown();
  });

  // Functionaliteit om een andere pagina van berichten te tonen
  /*function urldecode(str) {
    return decodeURIComponent((str + '').replace(/\+/g, '%20'));
  }*/
  function urldecode(str) {
    return unescape((str + '').replace(/\+/g, '%20'));
  }

  $('a.page').bind('click', function() {
  	var page = $(this).text();
  	if (page == currentPage) return false;

  	$.ajax({
      type:'POST',
      url:'ajax_getMessages.php',
      data:{page: page},
      dataType:'xml',
      error: function(){
        $('.error').text('Er is een fout opgetreden.');
      },
      success: function(xmlDoc, textStatus){
      	//var xmlString = (new XMLSerializer()).serializeToString(xmlDoc);
      	//alert(xmlString);
      	// Maak een kopie van het eerste li-element
      	var $li = $('#divmessages ul li').first().clone();
      	// Verwijder alle aanwezige li-elementen
      	$('#divmessages ul li').hide("fast").remove();
      	// Doorloop het XML-document
      	var messages = xmlDoc.getElementsByTagName('message');
      	for (i = 0; i < messages.length; i++) {
      		var tmpDatum = '';
      		var tmpTijd = '';
      		var tmpAfzender = '';
      		var tmpTekst = '';
      		$newMsg = $li.clone();
      		for (el = 0; el < messages[i].childNodes.length; el++) {
      			if (messages[i].childNodes[el].nodeType == 1) {
      				switch (messages[i].childNodes[el].nodeName) {
      					case 'datum' : tmpDatum = urldecode(messages[i].childNodes[el].firstChild.nodeValue); break;
      					//case 'tijd' : tmpTijd = unescape(messages[i].childNodes[el].firstChild.nodeValue); break;
      					case 'afzender' : tmpAfzender = urldecode(messages[i].childNodes[el].firstChild.nodeValue); break;
      					case 'tekst' : tmpTekst = urldecode(messages[i].childNodes[el].firstChild.nodeValue); break;
      					default : break;
      				}
      			}
      		}
      		$newMsg.find('.msgbody').find('.txtMessage').text(tmpTekst);
      		$newMsg.find('.msgfooter').text('Geplaatst op ' + tmpDatum + ' door ' + tmpAfzender);
      		$newMsg.hide().appendTo('#divmessages ul');
      	}
      	// Laat alle nieuwe li-elementen weer verschijnen
      	$('#messages li').slideEach(200, function() {
          $(this).slideDown();
        });
      	currentPage = page;
      }
    });
  	return false;
  });

  // Functionaliteit om naar de bovenkant van het scherm te gaan
  $('a[href=#top]').bind('click', function() {
    $('html, body').animate({scrollTop:0}, 'slow');
    return false;
  });

  // Functionaliteit bij het typen in de textarea
  $('#txtNewMessage').bind('keyup', function() {
    var len = $(this).val().length;
    if (len == 0) {
      $('.error').text('De inhoud van het bericht is leeg');
    }
    else {
      $('.error').html('&nbsp;');
    }
  });

  // Functionaliteit om een nieuw bericht te plaatsen
  $('#btnNewMessage').bind('click', function() {
    var newMessage = $('#txtNewMessage').val();
    if (newMessage === '') {
      $('.error').text('De inhoud van het bericht is leeg');
      return false;
    }

    var txtSender = $('#txtSender').val();
    if (txtSender === '') txtSender = 'Anoniem';

    $.ajax({
      type:'POST',
      url:'ajax_postMessage.php',
      data:{message: newMessage, sender:txtSender},
      dataType:'html',
      error: function(){
        $('.error').text('Er is een fout opgetreden.');
      },
      success: function(html, textStatus){
        if (html != '') {
          $('.error').text(html);
        }
        var $newItem = $('#messages li:first').clone();
        $newItem.find('p').text(newMessage);
        var mydate = new Date();
        var strDate = mydate.getDate()+'-'+(mydate.getMonth()+1)+'-'+mydate.getFullYear();

        $newItem.find('.msgfooter').text('Geplaatst op '+strDate+' door '+txtSender);
        $newItem.hide().prependTo('#messages').slideDown('slow');
        $('#txtNewMessage').val('');
        $('#txtSender').val('');

        // Toon de laatste 10 berichten
        $('#messages li').each(function(index) {
          if (index >= 10) {
            $(this).remove();
          }
        });
      }
    });
  });
});
