var cArea = Class.create();
cArea.prototype = {
	initialize: function() {},
	
	//Kästchen ein/ausfahrbar machen
	toggle: function(id, minimizeOthers) {
		if(minimizeOthers) {
			//Alle div-Elemente mit Klassenname "toggle"		
			var toggleLayers = $$("div.toggle");
					
			for(var i=0;i<toggleLayers.length;i++) {
				if(toggleLayers[i].getAttribute("id") != id) {
					if(toggleLayers[i].visible() && !$(id).visible()) {
						Effect.toggle(toggleLayers[i], 'slide', { duration: 0.25 });
					}
				}
			}
		}
		
		Effect.toggle(id, 'slide', { duration: 0.25 });
		//Effect.toggle(id, 'appear', { duration: 0.25 });
	}
}


var cAjaxRequest = Class.create();
cAjaxRequest.prototype = {
	initialize: function() {},
	
	regular: function(hash) {
		if(hash.get("charging") == true) {
			popup.charging();
		}
		
		var Req = new Ajax.Request(hash.get("requestUrl"), {method:"post", 
		parameters: hash, 
		//parameters: {part: "test", para: $("test").value},
		onSuccess: function(Req) {
			//Antwort-Popup (true/false)
			if(hash.get("responseErr") == true) {
				alert(Req.responseText);
			} else {
				if(hash.get("responseMsg") == true) {
					var responseMsgTxt = hash.get("responseMsgTxt").split(",");
					state.overwrite(state.messageCreator(Req.responseText, responseMsgTxt[0], responseMsgTxt[1]));
				}
			}
			
			if(hash.get("overwrite") == true) {
				overwrite.responseText(Req, hash.get("DOMID"));
			}
			
			if(hash.get("charging") == true) {
				popup.cCharging();
			}
		}
		} );
	}, 
	
	callback: function(hash) {
		if(hash.get("charging") == true) {
			popup.charging();
		}
		
		var Req = new Ajax.Request(hash.get("requestUrl"), {method:"post", 
		parameters: hash, 
		onSuccess: function(Req) {			
				//Antwort-Popup (true/false)
				if(hash.get("responseErr") == true) {
					alert(Req.responseText);
				} else {
					if(hash.get("responseMsg") == true) {
						var responseMsgTxt = hash.get("responseMsgTxt").split(",");
						state.overwrite(state.messageCreator(Req.responseText, responseMsgTxt[0], responseMsgTxt[1]));
					}
				}
				
				//Parameter bei callbackmethode mitgeben (true/false)				
				hash.get("callbackPara") == true ? hash.get("callbackMethod")(Req, hash) : hash.get("callbackMethod")();
			}
		} );
	}
}

var cState = Class.create();
cState.prototype = {
	initialize: function() { },
	
	overwrite: function(status) {
		var node = $("statusPopup");
		node.style.visibility = "hidden";
		node.innerHTML = status;
		node.style.visibility = "visible";
		new Effect.Appear(node, {duration: 0.25, from: 0, to: 0.9, afterFinish: function()
		{
			new Effect.Fade(node, {duration: 0.25, from: 0.9, to: 0});
		}});
	},
	
	confirmText: function(text) {
		var node = $("statusPopup");
		node.style.visibility = "hidden";
		node.innerHTML = text;
		node.style.visibility = "visible";
		new Effect.Appear(node, {duration: 0.25, from: 0, to: 0.9});
	},
	
	cConfirmText: function() {
		var node = $("statusPopup");
		new Effect.Fade(node, {duration: 0.25, from: 0.9, to: 0});
	},
	
	messageCreator: function(status, whatNow, whatPast) {
		if(status.match(/1/)) {
			return "Erfolgreich "+whatPast+".";
		} else {
			return "Fehler beim "+whatNow+".";
		}
	}
}

var cPopup = Class.create();
cPopup.prototype = {
	initialize: function() { },
	
	getLayer: function(layer) {
		if(layer == 1) {
			return 1;
		}
		if(layer == 2) {
			return 2;
		}
	}, 
	
	appear: function(layer, textareaID) {
		layer = popup.getLayer(layer);

		$("overLayout"+layer).show();
		$("popup"+layer).show();
		
		try {
			textareaID.focus();
		} catch (Error) {
			//empty
		}
	},
	
	fade: function(layer) {
		layer = popup.getLayer(layer);
		
		$("overLayout"+layer).hide();
		$("popup"+layer).hide();
	},
	
	charging: function() {		
		$("chargingText").innerHTML = "<img src='/bilder/icons/loading.gif' title='Ladevorgang' alt='Ladevorgang' /> Ladevorgang";
		$("chargingPopup").show();
	},
	
	cCharging: function() {
		$("chargingPopup").hide();
	}
}

var cOverwrite = Class.create();
cOverwrite.prototype = {
	initialize: function() {},
	
	//Standard-Containerwechsel für irgendetwas
	string: function(string, node) {		
		var node = $(node);
		node.innerHTML = string;
	}, 
	
	//Standard-Containerwechsel bei AJAX-Request Für Inputs (value)
	value: function(string, node) {		
		var node = $(node);
		node.value = string;
	}, 
	
	//Standard-Containerwechsel bei AJAX-Request
	responseText: function(AjaxReq, node) {		
		var node = $(node);
		node.innerHTML = AjaxReq.responseText;
	}, 
	
	//Containerwechsel bei AJAX-Request für Inputs (value)
	responseValue: function(AjaxReq, node) {		
		var node = $(node);
		node.value = AjaxReq.responseText;
	}
}

var Area = new cArea();
var AjaxRequest = new cAjaxRequest();
var state = new cState();
var popup = new cPopup();
var overwrite = new cOverwrite();


//Wandelt true/false in 1/0 um
function bool(value) {
	if(value) {
		return 1;
	} else {
		return 0;
	}
}




/* muster ajax.request prototype ajax
onUninitialized: function(){test("irgendwann");},
onLoading: function(){test("immer dazwischen");},
onLoaded: function(){test(0);},
onInteractive: function(){test(1);},
onException: function(){test(2);},
onComplete: function(){test(3);},
onSuccess: function(AjaxReq){alert(4);}
	*/
