$(function(){
	// hover behavior for edit link
	$('.pages.view.editable').hover(function(){
		if ($(this).find('form').size() == 0) {
			$(this).addClass('hover').find('a.edit').show();
		}
	}, function(){
		if ($(this).find('form').size() == 0) {
			$(this).removeClass('hover').find('a.edit').hide();
		}
	});
	// handle edit link and content swapping
	$('a.edit').hide().click(function(){
		$(this).hide();
		var parent = $(this).parents('.pages.view.editable').removeClass('hover');
		parent.find('.node').load('/pages/edit/page_id:'+parent.attr('id'), null, function(){
			$(this).find('textarea.wysiwyg').ATDtiny();
		});
		return false;
	});
	// monitor save button
	$('.pages.view.editable form').live('submit', function(e){
		e.preventDefault();
		$(this).hide();
		$('div.revisions').hide();
		$('.pages.view.editable div.preview').show().children('.content').html(tinyMCE.activeEditor.getContent());
		return false;
	});
	// publish button
	$('.pages.view.editable div.preview input.publish').live('click', function(){
		if ($(this).hasClass('revision')) {
			url = '/engine/nodes/rollback/node_id:'+$('div.node').attr('id')+'/version_id:'+window.revision;
		} else {
			url = '/pages/edit/page_id:'+$(this).parents('.pages.view.editable').attr('id')
		}
		$.post(
			url,
			$('.pages.view.editable form').serialize(),
			function(resp){
				if (resp.success) {
					ajaxFlash('#ajax_flash', 'Page updated', 'success');
					$('.pages.view.editable div.preview input.publish').removeClass('revision');
					$('.pages.view.editable .node').html(resp.html);
				} else {
					ajaxFlash('#ajax_flash', 'Error updating page', 'error');
				}
			}, 'json'
			);
		return false;
	});
	// resume editing button
	$('.pages.view.editable div.preview input.edit').live('click', function(e){
		$(this).parents('.preview').hide();
		$('.pages.view.editable form, div.revisions').show();
		$('.pages.view.editable div.preview input.publish').removeClass('revision');
		return false;
	});
	// revisions preview
	$('div.revisions a.revision_preview').live('click', function(){
		window.revision = this.href.split('/').pop().split(':').pop();
		$.get(this.href, null, function(data){
			$('.pages.view.editable form, div.revisions').hide();
			$('.pages.view.editable div.preview').show().children('.content').html(data.html);
			$('.pages.view.editable div.preview input.publish').addClass('revision');
		}, 'json');
		return false;
	});
});

function ajaxFlash(selector, message, className) {
	element = $(selector);
	element.html(message).attr('class', 'flash '+className).fadeIn('def', function(){
		setTimeout("element.fadeOut('slow')", 1500);
	});
}
