
var helperParams = [];

function contentHandler(t, helperName, elemID, onFinished, formid) {
	var res = t.responseText;
	if (elemID == null) {
		var contentHolder = document.getElementById(helperName+"Content")
		var content = res; 
	}
	else {
		var contentHolder = document.getElementById(elemID);
		var tempHolder = document.createElement('div');
		tempHolder.style.display = 'none';
	 	tempHolder.innerHTML = res;
	 	document.body.appendChild(tempHolder);
		var tempContentHolder = document.getElementById(elemID+'Interactive');
	
		var content = tempContentHolder.innerHTML;
	
		document.body.removeChild(tempHolder);
		 
	}
	
	contentHolder.innerHTML = content;
	
	if (onFinished != null) onFinished();
}

function callDelegate(delegatePaths, params, elemID, onFinished, formid, newurl) {

	if (formid != null) {

		var form = document.getElementById(formid);
		if (form != null) {

			for (i=0; i < form.elements.length; i++) {				
				var felem = form.elements[i];
				
				if (felem.type == 'checkbox' && !felem.checked){
					params[felem.name] = 0;
				 	continue;
				 }
				 
				params[felem.name] = felem.value;
			}
		}
	}
	
	if (newurl != null) {
		paramString = '?';
		for (paramName in params) {
			if (typeof params[paramName] != 'function') {
				paramString += paramName + '=' + params[paramName] + '&';
			}	
		}
		for (paramName in helperParams) {
			if (typeof helperParams[paramName] != 'function') {
				paramString += paramName + '=' + helperParams[paramName] + '&';
			}	
		}
		window.location = newurl + paramString;
		return;
	}
	
	for (var i = 0; i<delegatePaths.length;i++) {
		var delegatePath = delegatePaths[i];
		var options = {method: 'post', parameters: params}
		params.delegatePath = delegatePath;
		params.interactiveElement = elemID;
		for (paramName in helperParams) {
			if (typeof helperParams[paramName] != 'function') {
				params[paramName] = helperParams[paramName];
			}	
		}
		options.onSuccess = function(t) {
			var delegateName = (params['delegateName'] != undefined) ? params['delegateName'] : delegatePath.substr(delegatePath.indexOf(".")+1);
			contentHandler(t, delegateName, elemID, onFinished);
		};
		options.onFailure = function(t) {
			var delegateName = (params['delegateName'] != undefined) ? params['delegateName'] : delegatePath.substr(delegatePath.indexOf(".")+1); 
			alert("Es ist ein Fehler im interaktiven Pfad " + delegatePath + " aufgetreten. Bitte wenden Sie sich an den Support.");
			contentHandler(t, delegateName, elemID, onFinished);
		};
		
		new Ajax.Request(getAdmRoot()+'calldelegate.do', options);
	}


}




function callHelperRefresh(helpers, params, elemID, onFinished, formid, newurl) {

	if (formid != null) {
		var form = document.getElementById(formid);
		if (form != null) {
			for (i=0; i < form.elements.length; i++) {
				var felem = form.elements[i];
				if (felem.type == 'checkbox' && !felem.checked) continue;
				if (felem.type == 'radio' && !felem.checked) continue;
				params[felem.name] = felem.value;
			}
		}
		
	}
	
	if (newurl != null) {
		paramString = '?';
		for (paramName in params) {
			if (typeof params[paramName] != 'function') {
				paramString += paramName + '=' + params[paramName] + '&';
			}	
		}
		for (paramName in helperParams) {
			if (typeof helperParams[paramName] != 'function') {
				paramString += paramName + '=' + helperParams[paramName] + '&';
			}	
		}
		window.location = newurl + paramString;
		return;
	}
	
	for (var i = 0; i<helpers.length;i++) {
		var helperName = helpers[i];
		var options = {method: 'get', parameters: params}
		params.helperName = helperName;
		params.interactiveElement = elemID;
		for (paramName in helperParams) {
			if (typeof helperParams[paramName] != 'function') {
				params[paramName] = helperParams[paramName];
			}	
		}
		options.onSuccess = function(t) {
			contentHandler(t, helperName, elemID, onFinished);
		};
		options.onFailure = function(t) {
			alert("Es ist ein Fehler aufgetreten. Bitte wenden Sie sich an den Support.");
			contentHandler(t, helperName, elemID, onFinished);
		};
		
		new Ajax.Request(getAdmRoot()+'reloadhelper.do', options);
	}

}

