/**
 * AjaxJqueryCom - Klasse zur AJAX-Kommunikation mit dem Server.
 * @author Andreas Bethge
 * @copyright 2009, Andreas Bethge | it consulting
 */
 
function AjaxJqueryCom(requestKeyInitialValue){
	
	var requestKey = requestKeyInitialValue;
	var dbg = new AjaxDebugger("#debugWin");
	var url = "../getAjaxResponse.php";
	
	
	this.setUrl = function(value){
		url = value;
	}
	
	this.sendAjaxRequest = function(methodName, data, sendMethod, successCallback){
		
		requestKey++;
		
		// Ajax-Request absetzen
		var msg = new AjaxMessage();
		msg.methodName = methodName;
		// TODO: Key generieren
		/*
		var s = new Date;
		s += s.getMilliseconds();
		*/
		msg.requestKey = requestKey;// = Date.parse(s) + "-" + Math.round(1000000 * Math.random());
		msg.data = JSON.stringify(data);
		
		//alert(msg.data);
		
		dbg.debug(msg.requestKey + ", " + methodName + ", " + sendMethod + "<br/>Daten:<br/>" + msg.data + "<br/>");
		
		
		
		jQuery.ajax(
			{
				url: url,
				type: sendMethod,
				
				// TODO: asynchrone Verarbeitung zulassen
				async: false,
				
				dataType: "json",
				processData: true,
				data: msg,
				
				success: successCallback,
				error: handleError,
				complete: handleComplete
			}
		);				
	}	
	
	var handleError = function(xmlHttpRequest, textStatus, errorThrown){
		alert("Fehler in der Server-Kommunikation:\n" + xmlHttpRequest.responseText);
		jQuery("#debugWin").append("<p style='font-weight: bold; color: red;'>" + xmlHttpRequest.responseText + "</p><p style='font-weight: bold; color: red;'>" + textStatus + "</p><p>" + "" + "</p>");
	}

	var handleComplete = function(){
		//jQuery("#debugWin").append("<p>AJAX-Kommunikation beendet!</p>");
	}
}

