﻿var editorName = 'f1';
var editorBasePath = 'fckeditor/';
var editorToolbarSet = 'edit_inline';

$(document).ready(function() {
	// le due righe seguenti sono necessari per il fuzionamento su Firefox
  FCKeditorAPI = null;
  __FCKeditorNS = null;
	
  $('.editable').click(function(e) {
		editInPlace($(this));
  });
});

function createEditor(content) {
  // dimensioni del contenuto da modificare
  var height = content.outerHeight();
  var width = content.outerWidth();
  
  var editorContainer = document.createElement('div');
  $(editorContainer).addClass('editor').insertBefore(content);
  
  var contentContainer = document.createElement('div');
  $(contentContainer).addClass('content').append(content);
		
	// textarea temporanea: vi viene inserito il contenuto e
  // poi viene rimpiazzata dall'editor.
  // la textarea deve avere lo stesso nome che avrà l'editor.
  var replacing = document.createElement('textarea');
  $(replacing).attr('id', editorName)
		.attr('name', editorName)
		.val(content.html());
  $(editorContainer).prepend(replacing);
  $(contentContainer).css('display', 'none');
	$(editorContainer).append(contentContainer);

  // div che conterrà i pulsanti per salvare o annullare la modifica
  var controlsContainer = document.createElement('div');
  $(controlsContainer).addClass('controls');





  // editor
  var editor = new FCKeditor(editorName);
	with(editor) {
		BasePath = editorBasePath;
		ToolbarSet = editorToolbarSet;
		Width = '330px';
		Height = '200px';
		ReplaceTextarea();
	}
}

function cancelEdit(){
  if(isDirty()) {
    if(!confirm("Il contenuto dell'editor è stato modificato. Continuare? Se si clicca su OK le modifiche effettuate andranno perse.")) return false;
  }
  removeEditor();
  return true;
}

function isDirty() {
	if(FCKeditorAPI) {
		var instance = FCKeditorAPI.GetInstance(editorName);
		return instance && instance.IsDirty();
	}
	return false;
}

function FCKeditor_OnComplete(instance)
{
	instance.Focus();
	//instance.Events.AttachEvent('OnBlur', cancelEdit);
}

function submitContent(e){
	e.preventDefault();
	if(isDirty()) {
		var instance = FCKeditorAPI.GetInstance(editorName);
		instance.ResetIsDirty();
		var editorContainer = $('#' + editorName + '___Frame').parent('.editor');
		var contentContainer = editorContainer.find('.content');
		$.post('process.php', { action: "update", postId: contentContainer.children(':first').attr('id'), postBody: instance.GetXHTML() },
				function(data) {
					// si aggiorna il contenuto con la risposta
					$('#' + data.postId).html(data.postBody);
					alert('Modifiche salvate!');
				}
			, 'json');
	}
	removeEditor();
}

function removeEditor() {
  var editorContainer = $('#' + editorName + '___Frame').parent('.editor');
  var contentContainer = editorContainer.find('.content');
  contentContainer.insertBefore(editorContainer)
		.css('display', '')
		.replaceWith(contentContainer.children());
  editorContainer.remove();
}

function editInPlace(content){
  if(FCKeditorAPI) {
    var instance = FCKeditorAPI.GetInstance(editorName);
    if(!cancelEdit()) return;
  }
  createEditor(content);
}
