
// display 'lightbox' layer
///////////////////////////
function showLightbox() {
	$('select,object,embed').hide();
	$('body').append('<div id="lightbox"></div>');
	$('#lightbox').css({ width: '100%', height: '100%' });
}

// remove 'lightbox' layer
//////////////////////////
function removeLightbox() {
	$('#lightbox').remove();
	$('select,object,embed').show();
}

// raise Error
//////////////
function raiseError(errorText,formId) {
	errorText = errorText.replace(/^Error#/,'');
	if (errorText=='required') {
		$('#'+formId+' .required').css('color','red');
		alert('Alle erforderlichen Felder müssen ausgefüllt werden!');
	} else if (errorText=='auth_false')
		location.href = '/admin/';
	else
		alert(errorText);
}

// set Params like active, show_in_menu,...
///////////////////////////////////////////
function setParam(obj,page,element,elementType) {
	value = 1;
	if ($(obj).children('span').hasClass('true'))
		value = 0;
	query = 'params[param]='+$(obj).attr('class')+'&params[value]='+value+'&params[page]='+page;
	query+= '&params[element]='+element+'&params[element_type]='+elementType;
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/setParam',	success: function(response) {
			if (response=='true') {
				if (value==0)	$(obj).html('<span class="false"></span>');
				else			$(obj).html('<span class="true"></span>');
			} else raiseError(response,'');
		}
	});
}

// edit PageParams, edit PageOptions
////////////////////////////////////
function editPage(formId,id) {
	query = $('#'+formId).serialize()+'&id='+id;
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/edit'+formId, success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,formId);
			} else {
				$('#success').remove();	scroll(0,0);
				$('#tabs').before('<p class="message" id="success">Änderungen gespeichert.</p>');
				$('#'+formId).parent().html(response);
			}
		}
	});
}

// addElement: add an Element of def. ElementType
/////////////////////////////////////////////////
function addElement() {
	elementType = $('#elementTypes option:selected').val();
	loadForm(elementType,0);
}

// loadList: load a list of existing Elements of an ElementType
///////////////////////////////////////////////////////////////
function loadList() {
	showLightbox();
	elementType = $('#elementTypesAdd option:selected').val();
	query = 'page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1')+'&elementType='+elementType;
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/loadList',	success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,'');
				removeLightbox();
			} else {
				scroll(0,0);
				$('body').append('<div id="formContainer"></div>');
				$('#formContainer').html(response).append('<a href="#" id="closeFormContainer">Schließen</a>');
				$('#closeFormContainer').click( function() { $('#formContainer').remove(); removeLightbox(); });
				// collapseLists
				collapseLists();
			}
		}
	});
}

// update the list of Elements
//////////////////////////////
function updateElementsList() {
	query = 'page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1');
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/updateElementsList',	success: function(response) {
			scroll(0,0);
			$('#elementsTab').html(response);
			$('#elements').sortable({ stop: function() { resortElements(); } });
		}
	});
}

// loadForm: load a form for an ElementType
///////////////////////////////////////////
function loadForm(elementType,element) {
	showLightbox();
	query = 'page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1')+'&elementType='+elementType+'&element='+element;
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/loadForm',	success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,'');
				removeLightbox();
			} else {
				scroll(0,0);
				$('body').append('<div id="formContainer"></div>');
				$('#formContainer').html(response).append('<a href="#" id="closeFormContainer">Schließen</a>');
				$('#closeFormContainer').click( function() { removeEditors(); $('#formContainer').remove(); removeLightbox(); });
				// tiny editors
				initEditors();
				start_updateSessionIdle();
			}
		}
	});
}

// addExistingElement
/////////////////////
function addExistingElement(elementType,element) {
	query = 'page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1')+'&';
	query += 'elementType='+elementType+'&element='+element;
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/addExistingElement',	success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,'newElement');
			} else {
				scroll(0,0);
				updateElementsList();
				$('#formContainer').remove();
				removeLightbox();
				$('#success').remove();
				$('#tabs').before('<p class="message" id="success">Element eingefügt.</p>');
			}
		}
	});
}

// saveElement: save the form content
/////////////////////////////////////
function saveElement(elementId,elementTypeId) {
	query = 'element='+elementId+'&elementType='+elementTypeId+'&page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1');
	// serialize
	$.each( $('#editElement').serializeArray(), function(key,obj) {
		query += '&'+$(obj).attr('name')+'='+encodeURIComponent($(obj).val());
	});
	$.each( $('#editElement textarea.editor, #editElement textarea.editor_text'), function(key,obj) {
		query += '&'+$(obj).attr('name')+'='+encodeURIComponent(tinyMCE.get($(obj).attr('id')).getContent());
	});
	// checkboxes
	$.each( $('#editElement input[type=checkbox]'), function(key,obj) {
		if (!$(obj).attr('checked')) query += '&'+$(obj).attr('name')+'=0';
	});
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/saveElement',	success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,'editElement');
			} else {
				removeEditors();
				scroll(0,0);
				updateElementsList();
				$('#formContainer').remove();
				removeLightbox();
				$('#success').remove();
				$('#tabs').before('<p class="message" id="success">Element gespeichert.</p>');
				stop_updateSessionIdle();
			}
		}
	});
}

// delete Element
/////////////////
function deleteElement(elementTypeId,elementId) {
	if (confirm('Sind Sie sicher?')) {
		query = 'element='+elementId+'&elementType='+elementTypeId+'&page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1');
		$.ajax({
			data: query, type: 'POST', url: '/admin/ajax/deleteElement',	success: function(response) {
				if (response.match(/^Error/)) {
					raiseError(response,'');
				} else {
					scroll(0,0);
					updateElementsList();
					$('#success').remove();
					$('#tabs').before('<p class="message" id="success">Element gelöscht.</p>');
				}
			}
		});
	}
}

// resort Elements
//////////////////
function resortElements() {
	query = 'page='+$('#elements').attr('class').replace(/page-([0-9]+).*/,'$1')+'&';
	$.each( $('#elements li'), function(key,obj) {
		id 		= $(obj).attr('id').replace(/element-([0-9]+)-elementType-[0-9]+/,'$1');
		eTyp 	= $(obj).attr('id').replace(/element-[0-9]+-elementType-([0-9]+)/,'$1');
		query += 'elements['+key+'][id]='+id+'&elements['+key+'][eTyp]='+eTyp+'&';
	});
	$.ajax({
		data: query, type: 'POST', url: '/admin/ajax/resortElements',	success: function(response) {
			if (response.match(/^Error/)) {
				raiseError(response,'');
			} else
				updateElementsList();
		}
	});
	$.each( $('#elements li'), function(key,obj) {
		// odd class
		$(obj).attr('class','');
		if (key%2==0) 	$(obj).addClass('row0');
		else			$(obj).addClass('row1');
	});
}

/////////////
/* Session */
/////////////
var interval = false;
function start_updateSessionIdle()	{ interval = setInterval('updateSessionIdle()',300000); }
function updateSessionIdle() 		{ $.ajax({ data: 'page=1', type: 'POST', url: '/admin/ajax/updateIdle' }); }
function stop_updateSessionIdle() 	{ window.clearInterval(interval); }
