function confirmSubmit(langEntries, context)
{
	var message = langKeyPrint(langEntries, 'delete_record_from_db') + '\n';
	
	if (context)
	{
		message += '\n ' + langKeyPrint(langEntries, 'warning') + ':  ' + context;
	}
	  
	var agree=confirm(message);
	
	if (agree)
	{
		return true;
	}
	else{
		return false;
	}
}

function submitLangForm(langEntries, theForm)
{
	var why = "";
	why += isEmpty(langEntries, theForm.name.value, langKeyPrint(langEntries, 'lang_name'));
	why += isEmpty(langEntries, theForm.code.value, langKeyPrint(langEntries, 'lang_code'));

	if (why != "") {
	   alert(why);
	}
	else{
		theForm.submit();
	}
}

function submitLangKeysForm(langEntries, theForm)
{
	tinyMCE.triggerSave();
	var why = "";
	if (theForm.lang_key != undefined) { why += isEmpty(langEntries, theForm.lang_key.value, langKeyPrint(langEntries, 'lang_key')); }
	why += checkDropdown(langEntries, theForm.cat_flag.selectedIndex,  langKeyPrint(langEntries, 'cat_flag'));
    var myReg = new RegExp("type_id", "i");
	var count = 0;
    
	for (i=0;i<theForm.elements.length; i++)
	{
		results = theForm.elements[i].name.search(myReg);
		
		if (results > -1 && theForm.elements[i].type == 'checkbox')
		{
			if (theForm.elements[i].checked)
			{
				count++;
			}
		}
	}
	
	if (count < 1)
	{
	  why += langKeyPrint(langEntries, 'script_type_not_filled_in');
	}
	
/* 	var mceAreas = $('form_wrapper').select('[class="mceEditor"]'); */
/* 	mceAreas.collect(function(ele) { */
/* 		if (ele.id.indexOf('entry') > -1) */
/* 		{ */
/* 			ele.value = stripBRTag(ele.value); */
/* 			printOut('test', 'To Submit: ' + ele.value); */
/* 		} */
/* 	}); */
	
	if (why != "") {
	   alert(why);
	}
	else{
		theForm.submit();
	}
}

function submitLangEntriesForm(langEntries, theForm)
{
	var why = "";
	why += isEmpty(langEntries, theForm.lg_entry.value, langKeyPrint(langEntries, 'lang_entry'));
	why += checkDropdown(langEntries, theForm.fk_lang_keys_id.selectedIndex,  langKeyPrint(langEntries, 'lang_key'));
	why += checkDropdown(langEntries, theForm.fk_lang.selectedIndex,  langKeyPrint(langEntries, 'languages'));

	if (why != "") {
	   alert(why);
	}
	else{
		theForm.submit();
	}
}

function submitFeedbackForm(langEntries, theForm)
{
	var why = "";
	why += isEmpty(langEntries, theForm.subject.value, langKeyPrint(langEntries, 'subject'));
	why += isEmpty(langEntries, theForm.message.value, langKeyPrint(langEntries, 'message'));
	why += isEmpty(langEntries, theForm.email_url.value, langKeyPrint(langEntries, 'email_url'));

	if (why != "") {
	   alert(why);
	}
	else{
		theForm.submit();
	}
}

var validation_PE_toggle = 'on';
var forms = [];
var formsToggle = 'go';
var dates = [];
var errCount = 0;
var record_form = 'record_form';
var record_key;

function submitTextsForm(langEntries)
{
	var pre = 'text_disp_date_';
	var suf = ['y', 'mo', 'd', 'h', 'm'];
	var date_sels = [];
	suf.each(function(i) {
		date_sels.push(pre + i);
	});
	var err = '';
	tinyMCE.triggerSave();

	forms = [];
	forms.push(record_form);

	var recordForm = Form.getElements($(record_form));

	catsSel = [];
	for (i=0; i < recordForm.length; i++)
	{
		if (recordForm[i].name == 'cats_sel_arr[]')
		{
			for (x=0; x < recordForm[i].length; x++)
			{
				if (recordForm[i][x].selected) { catsSel.push(recordForm[i][x].value); }
			}
		}
		else if (recordForm[i].name == 'page_flag')
		{
			err += checkDropdown(langEntries, recordForm[i].selectedIndex,  langKeyPrint(langEntries, 'page_flag'));
		}
	}
	
	if (catsSel.length == 0) { err += langKeyPrint(langEntries, 'categories') + ' ' + langKeyPrint(langEntries, 'multi_no_sel') + '\n\n'; }

	for (i=0; i<langs.length; i++)
	{
		var formID = 'texts_' + langs[i][2];
		forms.push(formID);
		var theForm = $(formID);
		//printOut('test', formID);
		var err_by_lang = '';
		errCount = 0;

		var sels = Form.getElements(theForm);
		var dateStr = '{';
		for (x=0; x<sels.length; x++)
		{
			if (date_sels.indexOf(sels[x].name) > -1)
			{
				//printOut('test', 'Fenway: "' + sels[x].name + '":' + sels[x][sels[x].selectedIndex].value);
				dateStr += '"' + sels[x].name + '":"' + sels[x][sels[x].selectedIndex].value + '"';
				if (!sels[x].name.endsWith('m')) { dateStr += ','; }
			}
		}
		
		dateStr += '}';
		dates.push(dateStr);

		err_by_lang += registerChange(isEmpty(langEntries, theForm.title.value, langKeyPrint(langEntries, 'texts_title')));
		err_by_lang += registerChange(isEmpty(langEntries, theForm.keywords.value, langKeyPrint(langEntries, 'texts_keywords')));
		err_by_lang += registerChange(isEmpty(langEntries, theForm.description.value, langKeyPrint(langEntries, 'texts_description')));
		err_by_lang += registerChange(isEmpty(langEntries, eval('theForm.text_entry_' + langs[i][2] + '.value'), langKeyPrint(langEntries, 'texts_entry')));
		
		err_by_lang += registerChange(checkDropdown(langEntries, theForm.hidden_id.selectedIndex,  langKeyPrint(langEntries, 'status')));
		
		printOut('test', 'errCount: ' + errCount);
		
		// Do not throw warning or submit form that is empty
		if (errCount > 4) 
		{ 
			forms.pop(); 
		}
		else if (err_by_lang != '') 
		{
			 err += '\n\n' + langs[i][1] + ' Language Form: \n\n' + err_by_lang;
		}
	}
	
	printOut('test', 'forms.inspect(): ' + forms.inspect());

	if (err != '') 
	{
		err += '\n\nSubmit with errors?';
	
		var agree=confirm(err);
		
		if (agree)
		{
			peFormsSubmit();
			printOut('test', 'Submit');
		}
	}
	else{
		peFormsSubmit();
	}
}

function peFormsSubmit()
{
	printOut('test', 'server_url_home: ' + server_url_home);

	new PeriodicalExecuter(function(pe) { 
		
		//printOut('test', 'pe funct!');
		//printOut('test', 'formsToggle: ' + formsToggle);
		//printOut('test', 'dates: ' + dates.inspect());
		
		if (forms.length > 0 && formsToggle == 'go')
		{
			formsToggle = 'pause';
			//printOut('test', 'pe func: ' + forms.inspect());
			var theForm = $(forms[0]);
			if (theForm.name == record_form)
			{
				new Ajax.Request(
					server_url_home, 
					{ 
						method: 'post', 
						parameters: { 
										id: theForm.id.value,
										interface: 'record_keys',
										action: 'edit',
										record_type: 'texts',
										cats_sel_arr: catsSel.toJSON(),
										page_flag: theForm.page_flag.selectedIndex,
										address_identifier: theForm.address_identifier.value
									},
						onSuccess: getRecordKeysId,
						onFailure: reportError
					}
				); 
			}
			else{
				record_key = (record_key != '') ? record_key : theForm.id.value;
				new Ajax.Request(
					server_url_home, 
					{ 
						method: 'post', 
						parameters: { 
										id: record_key,
										text_id: theForm.text_id.value,
										interface: 'texts',
										action: 'edit',
										fk_users_id: theForm.fk_users_id.value,
										fk_lang: theForm.fk_lang.value,
										hidden_id: theForm.hidden_id.selectedIndex,
										title: theForm.title.value,
										text_disp_date: dates.shift(),
										keywords: theForm.keywords.value,
										notes: theForm.notes.value,
										description: theForm.description.value,
										text_entry: eval('theForm.text_entry_' + theForm.fk_lang.value + '.value')
									},
						onSuccess: showResults,
						onFailure: reportErrorValidation
					}
				); 
			}
		}
		else if (forms.length == 0) {
			pe.stop();
			var location = server_url_home + '?interface=texts&action=display&id=' + record_key;
			printOut('test', '<hr />Done Forms!  Go to: ' + location);
			window.location = location;
		}
		else if (validation_PE_toggle == 'off') {
			pe.stop();
			printOut('test', '<hr />PE Stopped');
		}
	}, 0.1);
}

function showResults(transport)
{
	html_status = 'on';
	response = (html_status == 'on') ? transport.responseText : transport.responseText.escapeHTML();
	printOut('test', '<div style="background: #ccc">Come Back: ' + response + '</div>');

	var completed = forms.shift();
	printOut('test', completed + ' Finished');
	formsToggle = 'go';
}

function getRecordKeysId(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] != '')
	{
		record_key = vars[0];
	}
	
	printOut('test', '<div style="background: #ddd">Come Back: ' + transport.responseText.escapeHTML() + '</div>');
	printOut('test', 'record_key: ' + record_key);
	var completed = forms.shift();
	printOut('test', completed + ' Finished');
	formsToggle = 'go';
}

function reportErrorValidation(transport)
{
	validation_PE_toggle = 'off';
	printOut('test', 'Sorry. There was an error:');
	printOut('test', '<div style="border: 1px solid">' + transport.responseText + '</div>');
}

function registerChange(errMsg)
{
	if (errMsg != '')
	{
//		printOut('test', 'errMsg: ' + errMsg);
		errCount++;
	}
	
	return errMsg;
}

function submitEventsForm(langEntries, theForm)
{
	tinyMCE.triggerSave();
	
	var form_time = theForm.events_date_y.value + theForm.events_date_mo.value;
	var form_time_range = theForm.events_end_date_y.value + theForm.events_end_date_mo.value;
	var why = "";

	why += isEmpty(langEntries, theForm.title.value, langKeyPrint(langEntries, 'events_title'));
	why += isEmpty(langEntries, theForm.nav_title.value, langKeyPrint(langEntries, 'events_short_title'));
	
	form_time += (theForm.events_date_d.value.length < 2) ? "0" + theForm.events_date_d.value : theForm.events_date_d.value;
	
	if (theForm.date_range_flag.checked == true)
	{
		form_time_range += (theForm.events_end_date_d.value.length < 2) ? "0" + theForm.events_end_date_d.value : theForm.events_end_date_d.value;
		  
		if (form_time_range <= form_time)
		{
			why += "Please select an End Date that is after the Start Date\n";
		}
	}

	why += isEmpty(langEntries, theForm.keywords.value, langKeyPrint(langEntries, 'events_keywords'));
	why += isEmpty(langEntries, theForm.description.value, langKeyPrint(langEntries, 'events_description'));
	why += checkDropdown(langEntries, theForm.fk_lang.selectedIndex,  langKeyPrint(langEntries, 'languages'));
	
	sels = document.getElementsByTagName('select');
	values = '';
	for (i=0; i < sels.length; i++)
	{
		if (sels[i] != undefined)
		{
			if (sels[i].name.search('cats_sel_arr') > -1)
			{
				for (x=0; x < sels[i].length; x++)
				{
					if (sels[i][x].selected) { values += sels[i][x].value; }
				}
			}
		}
	}
	
	if (values == '') { why += langKeyPrint(langEntries, 'categories') + ' ' + langKeyPrint(langEntries, 'multi_no_sel') + '\n'; }
	why += checkDropdown(langEntries, theForm.hidden_id.selectedIndex,  langKeyPrint(langEntries, 'status'));
	
	if (why != "") {
	   alert(why);
	}
	else{
		theForm.submit();
	}
}

function charLimit(event)
{
	var ele = event.element();
	$('char_countdown').update((400 - ele.value.length) + ' characters left');
}

function stripBRTag(str)
{
	printOut('test', 'br: ' + str);

	if (str.unescapeHTML().stripTags().length == 0) 
	{
		printOut('test', 'be gone!');
		str = '';
	}
	else if (str.endsWith('<br/>'))
	{
		regExp = /<br\/>$/;
		printOut('test', 'last: ' + str.replace(regExp, ''));
		str = str.replace(regExp, '');
	}
	
	return str;
}

function printEntry(ele, url, str)
{
	var myReg = new RegExp('[^a-zA-Z0-9_-]+', 'gi');
	
	if (str.search(myReg, str) > -1)
	{
		$(ele).update('<big><b>Illegal Character!</b></big>');
	}
	else{
		$(ele).update(url + 'index.php/<b><big><b>' + str + '</b></big></b>');
	}
}