function BackendConnection(gatewayURL) {
	if (!(this.gatewayURL = gatewayURL)) {
		this.gatewayURL = "/gateway.php";
	}
	this.VO = {};
	var that = this;

	var handleResponse = function(data) {
		if(data && data._explicitType !== undefined) {
			var object = {};
			if(that.VO[data._explicitType] !== undefined) {
				object = new that.VO[data._explicitType];
			}
			for(var i in data) {
				if(i != "_explicitType") {
					object[i] = data[i]; 
				}
			}
			return object;
		}
		return data;
	};

	this.callRemoteFunction = function(serviceName, methodName, resultHandler, faultHandler, arguments) {
		var parameters = [];
		for(var i = 3; i < arguments.length; ++i) {
			parameters.push(arguments[i]);
		}
		var callData = JSON.stringify({serviceName: serviceName, methodName: methodName, parameters: parameters});
		$.post(this.gatewayURL + "?contentType=application/json", callData, function(data) {resultHandler(handleResponse(data));}).error(faultHandler);
	};
}
