Event.observe(window, 'load', init);

var guestbookID = 1;
var noOfMessagesToShow = 10; // number of messaged to be displayed on each page
var updateInterval = 10000; // look for new message every 10 second
var inEditMode = false;
var inSearchMode = false;
var firstMessage = 0;

var images = new Array();

function preloadImage(filename)
{
  images[filename] = new Image();
  images[filename].src = "images/"+filename;
}


/**************************************/
/* Init                               */
/**************************************/
function init()
{
	$('guestbookID').innerHTML = guestbookID;

  Event.observe('postMessage', 'click', postMessage);
  Event.observe('previewButton', 'click', preview);
  Event.observe('noPostMessage', 'click', noPostMessage);

  Event.observe('postMessage', 'mouseover', postMessageMouseOver);
  Event.observe('previewButton', 'mouseover', previewMouseOver);
  Event.observe('noPostMessage', 'mouseover', noPostMessageMouseOver);
  Event.observe('postMessage', 'mouseout', postMessageMouseOut);
  Event.observe('previewButton', 'mouseout', previewMouseOut);
  Event.observe('noPostMessage', 'mouseout', noPostMessageMouseOut);
  
  Event.observe('doSearch', 'click', doSearch);
  Event.observe('noSearch', 'click', noSearch);

  Event.observe('doSearch', 'mouseover', doSearchMouseOver);
  Event.observe('noSearch', 'mouseover', noSearchMouseOver);
  Event.observe('doSearch', 'mouseout', doSearchMouseOut);
  Event.observe('noSearch', 'mouseout', noSearchMouseOut);

  Event.observe('toggleSearch', 'click', toggleSearch);
  Event.observe('toggleEdit', 'click', toggleEdit);

	Event.observe('forwardUp', 'click', forward);
	Event.observe('forwardDown', 'click', forward);
	Event.observe('forwardUp', 'mouseover', forwardUpMouseOver);
	Event.observe('forwardDown', 'mouseover', forwardDownMouseOver);
	Event.observe('forwardUp', 'mouseout', forwardUpMouseOut);
	Event.observe('forwardDown', 'mouseout', forwardDownMouseOut);
	Event.observe('backwardUp', 'click', backward);
	Event.observe('backwardDown', 'click', backward);
	Event.observe('backwardUp', 'mouseover', backwardUpMouseOver);
	Event.observe('backwardDown', 'mouseover', backwardDownMouseOver);
	Event.observe('backwardUp', 'mouseout', backwardUpMouseOut);
	Event.observe('backwardDown', 'mouseout', backwardDownMouseOut);
  
  

  Event.observe('name', 'blur', getIcon);

	//pollMessages(true);
	setInterval('pollMessages(false)',updateInterval);

  preloadImage('cancel.png');
  preloadImage('cancel_hover.png');
  preloadImage('preview.png');
  preloadImage('preview_hover.png');
  preloadImage('write.png');
  preloadImage('write_hover.png');
  preloadImage('write_disabled.png');
  preloadImage('search.png');
  preloadImage('search_hover.png');
  preloadImage('newer.png');
  preloadImage('newer_hover.png');
  preloadImage('older.png');
  preloadImage('older_hover.png');
  preloadImage('reply.png');
  preloadImage('reply_hover.png');

}
  
function preview()
{
	var name = $F('name').replace(/^\s+|\s+$/, '');
	var text = $F('text').replace(/^\s+|\s+$/, '');
	var email= $F('email');

	if(name=="" || text=="")
	{
		showErrorMessage('Du måste ange både namn och text för ditt inlägg!');
	}
	else
	{
		name = encodeURIComponent(name);
		text = encodeURIComponent(text);
		var email = encodeURIComponent(email);
		var iconID = $F('iconID');
		var repliesToID = $F('repliesToID');
		var editMessage = $F('editMessage');

		new Ajax.Request('server2.php',
											 {method: 'post',
												parameters: 'action=doPreview&name=' + name + '&text=' + text + '&email=' + email + '&iconID=' + iconID + '&repliesToID=' + repliesToID + '&guestbookID=' + guestbookID + '&editMessage=' + editMessage,
												onSuccess: previewSuccess});
	}
}

function previewSuccess(e)
{
	$('previewMessage').innerHTML = e.responseText;
	Element.show('previewMessage');
}

function pollMessages(reload)
{
	if(firstMessage<0) firstMessage = 0;

	var e = new GetN();
	e.N = noOfMessagesToShow;
  e.firstMessage = firstMessage;
  e.guestbookID = guestbookID;
  e.reload = reload;

  e.get();
}

function showErrorMessage(msg)
{
	$('errorMessage').innerHTML = msg;
	Element.show('errorMessage');

	setTimeout('hideErrorMessage()',8000);
}

function hideErrorMessage()
{
	// Här kan man lägga in en uttoning av objektet istället för att börja dölja det...
	Element.hide('errorMessage');
}

function playSound(sound)
{
	if(sound == 'notify')
	{
		$('sound').innerHTML = '<embed src="sound/notify.wav" hidden="true" autostart="true" loop="false">';
	}
}

function editMessage(editMessageID)
{
  new Ajax.Request('server2.php',
                     {method: 'post',
                      parameters: 'action=getMessage&id='+editMessageID,
                      onSuccess: editMessageSuccess});
}

function editMessageSuccess(e)
{
	var xml = e.responseXML;
	var messages = $A(xml.getElementsByTagName('Message'));

	if(messages.length>0)
	{
		var eID = messages[0].childNodes[0].childNodes[0].nodeValue;
		var eName = messages[0].childNodes[1].childNodes[0].nodeValue;
		var eEmail = messages[0].childNodes[2].childNodes[0].nodeValue;
		var eText = messages[0].childNodes[3].childNodes[0].nodeValue;

		if(eID!=0)
		{
			$('editMessage').value = eID;
			$('repliesToID').value = 0;

			$('name').value = eName;

			if(eEmail!="-") $('email').value = eEmail;
			else $('email').value = "";

			$('text').innerHTML = eText;

			getIcon();

			inEditMode = false;
			toggleEdit();
			$('editAction').innerHTML = "Ändrar inlägg id "+ eID;
			$('postMessage').value = "Uppdatera";

			return;
		}
	}

	$('editMessage').value = 0;
	showErrorMessage("Det gick inte att ändra inlägget!");
}

function toggleHide(id)
{
  new Ajax.Request('server2.php',
                     {method: 'post',
                      parameters: 'action=toggleHidden&id='+id,
                      onSuccess: toggleHideSuccess});
}

function toggleHideSuccess(r)
{
	pollMessages(true);
}

function reply(repliesToID)
{
  var repliesToNumber = $("number_" + repliesToID).innerHTML.split(' ')[1];
  
	var replyToName = $('name_'+repliesToID).innerHTML;

	inEditMode = false;
	toggleEdit();

  $('editAction').innerHTML = "Svara på klotter "+ repliesToNumber;
	$('postMessage').value = "Svara";
	$('repliesToID').value = repliesToID;
	$('editMessage').value = 0;
	$('text').innerHTML = replyToName + '&gt;&gt;&nbsp;';
  $('name').focus();
}

function toggleEdit()
{
	inEditMode = !inEditMode;

	if(inEditMode)
	{
		Element.hide('search');
		Element.hide('searchMessages');
		Element.hide('previewMessage');
		$('editAction').innerHTML = "Skriv ett nytt klotter";
		Element.show('edit');
		Element.show('messageContainer');

		inSearchMode=false;
	}
	else
	{
		Element.hide('edit');
		Element.hide('previewMessage');
	}
}

function toggleSearch()
{
	inSearchMode = !inSearchMode;

	if(inSearchMode)
	{
		Element.show('search');
		Element.show('searchMessages');
		Element.hide('edit');
		Element.hide('messageContainer');
		Element.hide('previewMessage');

		inEditMode = false;
	}
	else
	{
		Element.hide('previewMessage');
		Element.hide('search');
		Element.hide('searchMessages');
		Element.show('messageContainer');
	}
}

function getIcon()
{
  if($F('name'))
  {
     new Ajax.Request('server2.php',
                       {method: 'post',
                        parameters: 'action=getIcon&guestbookID=' + guestbookID + '&name=' + encodeURIComponent($F('name')),
                        onSuccess: getIconSuccess});
  }
  else
  {
		Element.hide('icon');
    $('iconID').value = 0;
    $('icon').src = '';
  }
}

function getIconSuccess(r)
{
	var xml = r.responseXML;
  var iconID = xml.getElementsByTagName('ID')[0].firstChild.data;

  if(iconID!=0)
  {
    $('icon').src = "/guestbook/images/users/" + xml.getElementsByTagName('Filename')[0].firstChild.data;
  	Element.show('icon');
    $('iconID').value = iconID;
  }
  else
  {
		Element.hide('icon');
    $('iconID').value = 0;
    $('icon').src = '';
  }
}

function forward()
{
	firstMessage=firstMessage-noOfMessagesToShow;
	pollMessages(true);
}

function backward()
{
	firstMessage=firstMessage+noOfMessagesToShow;
	pollMessages(true);
}

function forwardDownMouseOver()
{
  $('forwardDown').src=images['newer_hover.png'].src;
}
function forwardDownMouseOut()
{
  $('forwardDown').src=images['newer.png'].src;
}
function forwardUpMouseOver()
{
  $('forwardUp').src=images['newer_hover.png'].src;
}
function forwardUpMouseOut()
{
  $('forwardUp').src=images['newer.png'].src;
}
function backwardDownMouseOver()
{
  $('backwardDown').src=images['older_hover.png'].src;
}
function backwardDownMouseOut()
{
  $('backwardDown').src=images['older.png'].src;
}
function backwardUpMouseOver()
{
  $('backwardUp').src=images['older_hover.png'].src;
}
function backwardUpMouseOut()
{
  $('backwardUp').src=images['older.png'].src;
}

function postMessageMouseOver()
{
  $('postMessage').src=images['write_hover.png'].src;
}
function postMessageMouseOut()
{
  $('postMessage').src=images['write.png'].src;
}

function previewMouseOver()
{
  $('previewButton').src=images['preview_hover.png'].src;
}
function previewMouseOut()
{
  $('previewButton').src=images['preview.png'].src;
}

function noPostMessageMouseOver()
{
  $('noPostMessage').src=images['cancel_hover.png'].src;
}
function noPostMessageMouseOut()
{
  $('noPostMessage').src=images['cancel.png'].src;
}

function doSearchMouseOver()
{
  $('doSearch').src=images['search_hover.png'].src;
}
function doSearchMouseOut()
{
  $('doSearch').src=images['search.png'].src;
}

function noSearchMouseOver()
{
  $('noSearch').src=images['cancel_hover.png'].src;
}
function noSearchMouseOut()
{
  $('noSearch').src=images['cancel.png'].src;
}

function replyMouseOver(id)
{
  $("replyIcon_" + id).src=images['reply_hover.png'].src;
}
function replyMouseOut(id)
{
  $("replyIcon_" + id).src=images['reply.png'].src;
}
