/*Ajax-Funktionen
 @author: Norman Albusberger
 @version: 2.0
 * Jetzt auch mit Radios und Checkboxen T�r����!!
 -------------------------------------------------
 */
//Funktion die busy.gif einblendet
//Variable ist das aktive XML-Objekt

var http = ajaxobjekt();
var showAlternativeAjaxLoader = false;

function busy(variable) {
	if(showAlternativeAjaxLoader==true){
		var element = "ajaxContainer";
	}
	else{
		var element = "busy";
	}
 	if (variable.readyState == 4) {
		document.getElementById(element).style.display = 'none';
	} else {
		document.getElementById(element).style.display = 'block';
	}
}

// Wird nur von ajaxaction benötigt um je nach Browser
// ein XML-Request zu erzeugen
function ajaxobjekt() {
	var ro;
	var browser = navigator.appName;
	if (browser == "Microsoft Internet Explorer")
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	else
		ro = new XMLHttpRequest();
	return ro;
}
/**
 * 
 * @returns {Boolean}
 */
function setFalse(){
	return false;
}

function ajaxaction(url,alternativeAjaxLoader) {
	http.abort();
	if(alternativeAjaxLoader){
		showAlternativeAjaxLoader = true;
	}
	else{
		showAlternativeAjaxLoader = false;
	}
	if (http.readyState != 3) {
		
		// http.onreadystatechange = setFalse;
		var urlstring = url;
		http.open('get', urlstring);
		http.onreadystatechange = updateObjects;
		http.send(null);
		
		busy(http);
		
	}
	return false;
}

function ajax_post_action(form, url,alternativeAjaxLoader) {
	http.abort();
	if(alternativeAjaxLoader){
		showAlternativeAjaxLoader = true;
	}
	else{
		showAlternativeAjaxLoader = false;
	}
	// http.onreadystatechange = setFalse();
	var _body = make_ajax_string(form);
	// alert(_body);
	http.open('POST', url, true);
	http.onreadystatechange = updateObjects;
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 http.setRequestHeader("Content-length", _body.length);
 http.setRequestHeader("Connection", "close");
	http.send(_body);
	
	busy(http);
	return false;
}

// wird von ajax_post benötigt
// baut einen POST-String aus den Formular-Daten der übergebenen Form
function make_ajax_string(form) {
	var eid;
	var e;
	var body = '';

	for ( var x = 0; x < document.forms[form].length; x++) {
		eid = document.forms[form].elements[x].id;
		e = document.forms[form].elements[x];

		// Für Checkboxen und Radiobuttons seperate Übergabe
		// da sonst der Value immer üertragen wird

		if ((e != null && e.type == "checkbox")
				|| (e != null && e.type == "radio")) {
			if (e.checked == true) {
				body += "&" + eid + "=" + e.value;
			}
		} else {
			elementvalue = encodeURIComponent(document.forms[form].elements[x].value);
			body += "&" + eid + "=" + elementvalue;
		}
	}
	body.length - 1;
	return body;
}

function trim(text) {
	return text.replace(/^\s+/, '').replace(/\s+$/, '');
}

function updateObjects() {
	var response;
	var update = new Array();
	// steuert die Ladeanzeige
	busy(http);
	if (http.readyState == 4) {
		showAlternativeAjaxLoader = false;
		response = trim(http.responseText);

		if (response.length > 0) {
			// alert(response);
			// ist ein Redirect enthalten
			if (response.indexOf("##redirect##") != -1) {
				// wenn ja, wohin
				var redirection = response.split("##");
				for ( var r = 0; r < redirection.length; r++) {
					if (redirection[r] == "redirect") {
						var redirecturl = redirection[r + 1];
						document.location.href = redirecturl;
					}
				}
			} else if (response.indexOf("##error##") != -1) {
				// gibt es eine derbe Fehlermeldung
				var error = response.split("##");
				for ( var r = 0; r < error.length; r++) {
					if (error[r] == "error") {
						var errorMessage = error[r + 1];
						alert(errorMessage);
					}
				}
			} else {
				// nöö, normal weiter "parsen"
				if (response.indexOf("##openModal##") != -1) {
					response = response.replace("##openModal##", "");
					showlayer('modal_screenlock');
				} else if (response.indexOf("##closeModal##") != -1) {
					response = response.replace("##closeModal##", "");

					hidelayer('modal_screenlock');
				}

				response = trim(response);

				if (response.length > 0 && response.indexOf('|' != -1)) {
					update = response.split('|');
					for ( var i = 0; i < update.length; i += 2) {
						if (ajax_parse(i) == false) {
							target = document.getElementById(update[i]);
							if (target) {
								target.innerHTML = update[i + 1];
							} else {

								alert('Div ' + update[i]
										+ ' nicht gefunden. Response:\n'
										+ response);
							}
						}
					}
				}
			}
		}
	}
	function ajax_parse(i) {
		if (update[i] == "msg" && update[i + 1] != "" || update[i] == "error"
				&& update[i + 1] != "") {
			return alert(update[i + 1]);
		} else if (update[i] == "CloseWindow" && update[i + 1] != "") {
			hidelayer(update[i + 1]);
			return true;
		} else if (update[i] == "ShowWindow" && update[i + 1] != "") {
			showlayer(update[i + 1]);
			return true;
		} else if (update[i] == "ShowWindowInline" && update[i + 1] != "") {
			showlayerInline(update[i + 1]);
			return true;
		} else if (update[i] == "Do" && update[i + 1] != "") {
			eval(update[i + 1]);
			return true;
		} else if (update[i] == "redirect" && update[i + 1] != "") {
			document.location.href = update[i + 1];
			return true;
		} else if (update[i] == "focus" && update[i + 1] != "") {
			document.getElementById(update[i + 1]).focus();
			return true;
		} else if (update[i] == "activateRTE" && update[i + 1] != "") {
			activateRTE(update[i + 1]);
			return true;
		} else if (update[i + 1] && update[i + 1].length >= 9
				&& update[i + 1].substr(0, 9) == "ShowChart" && update[i] != "") {
			showChart(update[i], update[i + 1]);
			return true;
		} else {
			return false;
		}
	}
}

function confirmAjaxSubmit(formname, url, confirmtext) {
	if (confirm(confirmtext) == true) {
		return ajax_post_action(formname, url);
	} else {
		return false;
	}
}

function showChart(elementId, data) {
	var ChartSource = 'sample.xml';
	var ChartWidth = '400';
	var ChartHeight = '300';
	var ChartBgColor = '#FFFFFF';
	var ChartName = 'Chart';
	var ChartId = "Chart";
	var ChartAllowFullScreen = 'false';
	var ChartQuality = 'high';
	var ChartAlign = 'middle';
	params = data.substr(9).replace("(", "").replace(")", "").split(";");
	for ( var pa = 0; pa < params.length; pa++) {
		param = params[pa].split(":");

		if (param.length == 2) {
			if (param[0] != 'source' && param[0] != 'id') {
				param[0] = param[0].toLowerCase();
				param[1] = param[1].toLowerCase();
			}

			if (param[0] == 'source') {
				ChartSource = param[1];
			} else if (param[0] == 'width') {
				ChartWidth = param[1].replace('px', '');
			} else if (param[0] == 'height') {
				ChartHeight = param[1].replace('px', '');
			} else if (param[0] == 'background-color') {
				ChartBgColor = param[1];
			} else if (param[0] == 'id') {
				ChartId = param[1];
			} else if (param[0] == 'allowfullscreen') {
				ChartAllowFullScreen = checkForTrueFalse(param[1]);
			} else if (param[0] == 'align') {
				if (param[1] == 'left' || param[1] == 'l') {
					ChartAlign = 'left';
				} else if (param[1] == 'right' || param[1] == 'r') {
					ChartAlign = 'right';
				} else if (param[1] == 'top' || param[1] == 't') {
					ChartAlign = 'top';
				} else if (param[1] == 'bottom' || param[1] == 'b') {
					ChartAlign = 'bottom';
				} else {
					ChartAlign = 'left';
				}
			} else if (param[0] == 'quality') {
				if (param[1] == 'low' || param[1] == '1') {
					ChartQuality = 'low';
				} else if (param[1] == 'middle' || param[1] == '2') {
					ChartQuality = 'middle';
				} else {
					ChartQuality = 'high';
				}
			} else {
				alert('Unsupported Chart parameter: ' + param[0]);
			}

		}

	}

	chartStr = AC_FL_GetContent(
			'codebase',
			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
			'width', ChartWidth, 'height', ChartHeight, 'scale', 'noscale',
			'salign', 'TL', 'bgcolor', ChartBgColor, 'wmode', 'opaque',
			'movie', '/charts/charts', 'src', '/charts/charts', 'FlashVars',
			'chart_id=' + ChartId
					+ '&library_path=/charts/charts_library&xml_source='
					+ ChartSource, 'id', ChartId, 'name', ChartId, 'menu',
			'true', 'allowFullScreen', ChartAllowFullScreen,
			'allowScriptAccess', 'sameDomain', 'quality', ChartQuality,
			'align', ChartAlign, 'pluginspage',
			'http://www.macromedia.com/go/getflashplayer', 'play', 'true',
			'devicefont', 'false');
	target = document.getElementById(elementId);
	if (target) {
		target.innerHTML = chartStr;
		showlayer(elementId);
	} else {
		alert('Div ' + update[i] + ' nicht gefunden. Response:\n' + response);
	}
}

