function unloadMSG(){mess="You have unsaved changes. Your changes will not be saved, are you sure you want to navigate away from this page?";return mess;}
function setBunload(on){window.onbeforeunload=(on)?unloadMSG:null;}

function updateTextValue() {
	if (tinyMCE.activeEditor.getContent().length < 1) {
		alert('Content cannot be empty.');
		return false;
	}
	return true;
}

function mceChanged(tinymce_textarea_id) {
	contentChanges++;
	if (contentChanges > 0) {
		setBunload(true);
	}				
}

function cancel() {
	
	if (contentChanges > 0) {
		if (confirm("You have unsaved changes. Your changes will not be saved, are you sure you want to cancel?")) {
			hide_editor(true);
		}
	} else {
		if (emptyPage) {
			hide_editor(true);
		} else {
			hide_editor(false);
		}
	}
}

function edit() {

	showLoading();

	$('edit_buttons').hide();
	
	if (!editInit) {
      tinyMCE.init({
        theme : "advanced",
        convert_urls : false,
		onchange_callback : "mceChanged",
		plugins : "pagelink,fileupload,embed,media,style,layer,table,advhr,inlinepopups,preview,print,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,pagebreak",
		theme_advanced_buttons1_add : "fontselect,fontsizeselect",
		theme_advanced_buttons2 : "forecolor,backcolor,styleprops|,undo,redo,|,visualchars,nonbreaking,blockquote,pagebreak,|,pagelink,unlink,|,fileupload,|,embed,",
		theme_advanced_buttons3_add_before : "tablecontrols,separator",
		theme_advanced_buttons3_add : "advhr,separator,ltr,rtl,separator,fullscreen",
		extended_valid_elements : "iframe[src|style|width|height|frameborder|scrolling],object[width|height|classid|codebase],param[name|value],embed[src|type|style|width|height|flashvars|wmode|scale|bgcolor|name|align|allowscriptaccess]",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
		convert_fonts_to_spans : true,
		// convert_newlines_to_brs : true,
		// font_size_classes : "fsize1,fsize2,fsize3,fsize4,fsize5,fsize6,fsize7"
		font_size_style_values : "9px,11px,13px,15px,17px,19px,24px"
   	  });

	  editInit = true;
	}

	var textedit = new Element('textarea', {'id':'new_content', 'name':'new_content', 'style':'display:none', 'rows':'40', 'cols':'90'});
	var formcontent = emptyPage ? '' : $('form_content').innerHTML;
	textedit.appendChild(document.createTextNode(formcontent));

	$('form_content').update();
	$('form_content').insert(textedit);

	$('new_content').show();
	tinyMCE.execCommand('mceAddControl', false, 'new_content');

	$('save_button').show();
	$('save_button2').show();
	
	$('status').hide();
}

function showLoading()
{
		$('status').show();
		$('status').update('<img src="/images/working.gif" alt="" />');
}

function postForm(pageId, formAuthenticityToken)
{
	var mceContent = tinyMCE.activeEditor.getContent().replace(/\+/g, "&#43");
	mceContent = mceContent.replace(/\\/g, "&#92");
	mceContent = encodeURIComponent(mceContent);
	var changeNote = $F('change_note').replace(/\+/g, "&#43");
	changeNote = changeNote.replace(/\\/g, "&#92");
	changeNote = encodeURIComponent(changeNote);
	
	var url = '/pages/update/' + pageId;
	var pars = 'new_content=' + mceContent + '&change_note=' + changeNote + '&authenticity_token=' + encodeURIComponent(formAuthenticityToken);

	var myAjax = new Ajax.Request( 
		url, 
		{ 
			method: 'post', 
			postBody: pars,
			onLoading: showLoading,
			onComplete: edit_page_callback,
			onFail: edit_page_callback_fail
		}
	);
}						

function hide_editor(cancel)
{
	contentChanges = -1;
	setBunload(false);
	
	$('save_button').hide();
	$('save_button2').hide();
	$('edit_buttons').show();

	var content = tinyMCE.activeEditor.getContent();
	// tinyMCE.execCommand('mceFocus', false, 'new_content'); 
	tinyMCE.execCommand('mceRemoveControl', false, 'new_content');

	if (cancel) {
		$('form_content').update(oldContent)
	}
	else {
		$('form_content').update(content);
		oldContent = content;
	}
}

function edit_page_callback(request)
{
	if (emptyPage) {
		emptyPage = false;
	}
		
	hide_editor(false);
	$('status').update('<div class="notify-box"><p style="color: green">Page updated successfully!</p></div>');
}

function edit_page_callback_fail(request)
{
	alert("Page updated failed somehow ...");
}