var IE; // is set to 1 within IE's conditional comments

function toggleClass(O, className) {
	if (O) {
		O.className=className;
	}
}

function expandTextarea(O) {
	if (O) { 
		O.className='focus';
	}
	return true;
}

function reduceTextarea(O) {
	if (O) { 
		O.className='';
	}
	return true;
}

function reduceAllTextareas(Id) {
	if(Id) {
		var elements = document.getElementsByClassName('focus',Id);
		var nodes = $A(elements);
		nodes.each(function(node){
			node.className='';
		});
	}
}

function unsetSigns() {
	// remove previous confirmation-signs
	var elements = document.getElementsByClassName('confirmation-sign');
	var nodes = $A(elements);
	nodes.each(function(node){
		node.parentNode.removeChild(node);
	});

	// remove previous warning-signs
	elements = document.getElementsByClassName('warning-sign');
	nodes = $A(elements);
	nodes.each(function(node){
		node.parentNode.removeChild(node);
	});

	// remove previous error messages
	elements = document.getElementsByClassName('error');
	nodes = $A(elements);
	nodes.each(function(node){
		node.parentNode.removeChild(node);
	});
	return false;
}

function getMessage(message, field) {
	unsetSigns();
	// prepare request-parameters
	var url ="/_xml/get_message.xml";
	var params = "message=" + message + "&ie=" + IE;
	// send Request
	return new Ajax.Request(url, {method: 'get', parameters: params, onSuccess: function(request) { processGetMessage(request, field) }, onFailure: function(request) { reportError(request)}});
	return false;
}

function processGetMessage(request, field) {
	field.innerHTML = request.responseText;
	return false;
}

function reportError(request) {
	alert ('Ein Fehler ist aufgetreten!');
	return false;
}

function notifyChange(element) {
	var change = $(element + '-changed');
	if (change) {
		change.value = 'changed';
	}
	return false;
}

function notifySaved(element) {
	var change = $(element + '-changed');
	if (change) {
		change.value = '';
	}
	return false;
}

function checkAllSaved() {
	var changes = document.getElementsByClassName('changed');
	var flag = false;
	if (changes) {
		for (var i = 0; i < changes.length; i++) {
			if (changes[i].value != '') {
				var message_div = $(changes[i].name + 'message');
				flag = true;
				if (message_div) {
					getMessage('var.message_general_not_yet_saved', message_div);
				}
			}
		}
		if (flag) {
			return confirm('Sie haben noch nicht alles gespeichert. Wollen Sie trotzdem fortfahren?');
		}
	}
	return true;
}

function saveText(field, message_id) {
	notifySaved(field);
	unsetSigns();
	reduceAllTextareas(field+'-box');

	var contents = $(field);
	var value = contents.value;
	// prepare request-parameters
	var url ="/_xml/save_text.xml";
	var params = "field=" + field + "&id=" + message_id + "&value=" + encodeURIComponent(value) + "&ie=" + IE;
	// send Request
	new Ajax.Request(url, {method: 'post', parameters: params, onSuccess: function(request) { processSaveText(request, message_id, field); }, onFailure: function(request) { reportTextError(request, message_id, field)}});
	return false;
}

function processSaveText(request, message_id, field) {
	// set confirmation to actual field
	var element = $(field);
	if (element) { 
		var message = $(field + '-message');
		if (message) { 
			message.innerHTML = request.responseText; 
		}
	}
	return false;
}


function processSave(request, message_id, field) {
	// set confirmation to actual field
	var message = $(field + '-message');
	if (message) { 
		message.innerHTML = request.responseText;
	}
	return false;
}

function reportTextError(request, message_id, field) {
	var message = $(field + '-message');
	if (message) { 
		message.setAttribute('class', 'warning-sign');
		message.innerHTML = 'Ein Fehler ist aufgetreten'; 
	}
	return false;
}

function reportError(request, message_id, field) {
	var message = $(field + '-message');
	if (message) { 
		message.setAttribute('class', 'warning-sign');
		message.innerHTML = 'Ein Fehler ist aufgetreten'; 
	}
	return false;
}

