var recordFields = new Array(
								'title',
								'text_disp_date_y',
								'text_disp_date_mo',
								'text_disp_date_d',
								'text_disp_date_h',
								'text_disp_date_m',
								'keywords',
								'description',
								'notes',
								'text_entry'
							);
							
var form_ele = null;
var rec_id = null;
var rec_type = null;
var lang = null;
var active_draft_id = null;

function initDrafts(rec_id_in, rec_type_in, lang_in)
{
	// Stop draftSaver for current language
	draftPEToggle('off');

	// Register variables for record
	if (rec_id_in != '') { rec_id = rec_id_in; }
	if (rec_type_in != '') { rec_type = rec_type_in; }
	form_ele = rec_type + '_' + lang_in;
	lang = lang_in;
	active_draft_id=null;

	printInit();
	
	if (rec_id != null)
	{
		//draftPEToggle('on');
	}
}

function setDraftSaver()
{
	new PeriodicalExecuter(function(pe) { 
		if (eval('peToggle' + lang) == 'off')
		{
			pe.stop();
			printOut('test', 'DraftSaver pe' + lang + ' Stopped.');
		}
		else{
			saveDraft();
			printOut('test', '<hr />Draft <strong>' + active_draft_id + '</strong> Saved - ' + Date());
		}
	}, 10);
}

function printInit()
{
	printOut('test', 'form_ele:  ' + form_ele);
	printOut('test', 'rec_id:  ' + rec_id);
	printOut('test', 'rec_type:  ' + rec_type);
	printOut('test', 'lang:  ' + lang);
	printOut('test', 'active_draft_id:  ' + active_draft_id);
	printOut('test', '<hr />');
}	

function setFormObservers(lang_code)
{
	lang = lang_code;
	var inputs = ['title', 'keywords', 'description', 'notes', 'text_entry'];
	for (i=0; i<inputs.length; i++)
	{
		var formInput = inputs[i] + '_' + lang_code;
		printOut('test', 'inputs: ' + formInput);
		$(formInput).observe('select', triggerDraft);
	}
}

function triggerDraft(event) 
{ 
	var element = Event.element(event);
	printOut('test', 'obs element: ' + element);
	draftPEToggle('on');
	//setDraftSaver();
} 

function saveDraft(draft_title)
{
	errCount = 0;
	printOut('test', 'lang: '+ lang);
	var draft = new Hash();
	var formFields = $(form_ele).getElements();
	var recordFieldsLang = [];
	recordFields.each(function(r, index) {
		recordFieldsLang[index] = r + '_' + lang;
	});

	for (i=0; i<formFields.length; i++)
	{
		printOut('test', formFields[i].id + ' SO: ' + formFields[i].value);

		if (formFields[i].className == 'mceEditor')
		{
			printOut('test', 'fieldname: ' + formFields[i].name);
			var inst = tinyMCE.getInstanceById(formFields[i].name);
			printOut('test', formFields[i].name + ':  ' + inst.getHTML().escapeHTML());
			draft.set('text_entry_' + lang, registerChange(inst.getHTML().escapeHTML()));
		}
		else if (recordFieldsLang.indexOf(formFields[i].id) > -1)
		{
			printOut('test', formFields[i].id + ': ' + formFields[i].value);
			draft.set(formFields[i].id, registerChange(formFields[i].value));
		}
	}
	
//	printOut('test', 'errCount: ' + errCount);
	
	// Check if text fields have been filled with registerChange
	if (errCount > 5 || draft_title != '')
	{
		draft = draft.toJSON();
		printOut('test', 'draft: ' + draft);
		
		var url = 'https://Trovador.local/php/cipovan/comuna/index.php';
	
		var myAjax = new Ajax.Request(
					url, 
					{
						method: 'post', 
						parameters: { 
										id: active_draft_id,
										lang_code: lang,
										interface: 'drafts',
										action: 'edit',
										record_id: rec_id,
										record_type: rec_type,
										title: draft_title,
										cache: draft
									},
						onSuccess: listDrafts,
						onFailure: reportError
					}
		);
	}
}

function saveTitleDraft()
{
	var title = $('draft_title').value;
	saveDraft(title);
	$('draft_title').value = '';
}

function clearDrafts()
{
	var url = 'https://Trovador.local/php/cipovan/comuna/index.php';

	var myAjax = new Ajax.Request(
				url, 
				{
					method: 'post', 
					parameters: { 
									lang_code: lang,
									interface: 'drafts',
									action: 'clear_all',
									record_id: rec_id,
									record_type: rec_type
								},
					onSuccess: listDrafts,
					onFailure: reportError
				}
	);
}

function listDrafts(transport)
{
	printOut('test', '<div style="background: #ddd">Come Back: ' + transport.responseText + '</div>');

	var scripts = transport.responseText.extractScripts();
	var vars = [];
	var myReturnedValues = scripts.map(function(script) { 
		vars.push(eval(script)); 
	});
	
	if (vars[0] != '')
	{
		active_draft_id = vars[0];
	}
	
	var draftList = vars[1];
	var draftLinks = '';

	printOut('test', active_draft_id);
	
	draftList.each(function(obj) { 
		 printOut('test', '<a href="javascript:loadDraft(' + obj.cache_id + ')">DraftID ' + obj.cache_id + ', Last Change: ' + obj.date + ' Title: ' + obj.title + '</a>');
		 var title = (typeof obj.title == 'undefined') ? 'Auto Save ID ' + obj.cache_id : obj.title;
		 draftLinks += '<a href="javascript:loadDraft(' + obj.cache_id + ')" title="ID ' + obj.cache_id + ' ' + obj.date + '">' + title + '</a><br />';
	}); 
	
	$('draft_list_' + lang).update(draftLinks);
	
}

function loadDraft(draft_id)
{
	// Save current form values before loading in new values
	saveDraft();
	
	var formFields = $(form_ele).getElements();
	for (i=0; i<formFields.length; i++)
	{
		//printOut('test', 'ids: ' + formFields[i].id);
	}
//			printOut('test', '<hr />');

	new Ajax.Request(
		'https://Trovador.local/php/cipovan/comuna/index.php', 
		{ 
			method: 'post', 
			parameters: { 
							id: draft_id,
							interface: 'drafts',
							action: 'load_draft'
						},
			onSuccess: loadFormFields,
			onFailure: reportError
		}
	); 
}

function loadFormFields(transport)
{
//	printOut('test', transport.responseText);
	
	
	var scripts = transport.responseText.extractScripts();
	var vars = [];
	var myReturnedValues = scripts.map(function(script) { 
		vars.push(eval(script)); 
	});
	
	if (vars[0] != '')
	{
		active_draft_id = vars[0];
	}
	
	printOut('test', active_draft_id);

	var formObj = new Object();
	var keys;
	
	vars[1].each(function(obj) {
		keys = Object.keys(obj.cache.evalJSON(true));
		formObj = Object.clone(obj.cache.evalJSON(true));
	});

	var formFields = $(form_ele).getElements();

	for (i=0; i<keys.length; i++)
	{
		printOut('test', 'valsFile: ' + keys[i]);
		for (q=0; q<formFields.length; q++)
		{
			if (formFields[q].id == keys[i])
			{
				formFields[q].value = formObj[keys[i]].unescapeHTML();
			}
		}
	}
	
	tinyMCE.updateContent('text_entry');
}

function reportError(request)
{
	printOut('test', 'Sorry. There was an error.');
}

function draftPEToggle(toggle)
{
//	printOut('test', 'draftPEToggle: ' + toggle);

	if (toggle == '')
	{
		if (eval('peToggle' + lang) == 'off')
		{
			eval('peToggle' + lang + ' = \'on\'');
			printOut('test', 'peToggle' + lang + ': ' + eval('peToggle' + lang));
			setDraftSaver();
		}
		else if (eval('peToggle' + lang) == 'on')
		{
			eval('peToggle' + lang + ' = \'off\'');
			printOut('test', 'peToggle' + lang + ': ' + eval('peToggle' + lang));
		}
	}
	else {
		if (toggle == 'on')
		{
			eval('peToggle' + lang + ' = \'on\'');
			printOut('test', 'peToggle' + lang + ': ' + eval('peToggle' + lang));
			setDraftSaver();
		}
		else if (toggle == 'off')
		{
			eval('peToggle' + lang + ' = \'off\'');
			printOut('test', 'peToggle' + lang + ': ' + eval('peToggle' + lang));
		}
	}
}
