dojo.provide("data.GenRequest");

data.GenRequest.init = function(args){

	var params = {};
	params.dojoParams = args;

	params.hasCustomSuccessCallback = false;
	params.hasCustomErrorCallback = false;
	params.onSuccessCallBack = data.GenRequest.genericOnSuccessCallback;
	params.onErrorCallBack = data.GenRequest.genericOnErrorCallback;

	if (params.dojoParams.load !== undefined) {
		params.hasCustomSuccessCallback = true;
		params.customSuccessCallback = params.dojoParams.load;
		params.dojoParams.load = dojo.hitch(params, params.onSuccessCallBack);

	}else {
		params.hasCustomSuccessCallback = false;
		params.dojoParams.load = dojo.hitch(params, params.onSuccessCallBack);
	}

	return params;
	
};

data.GenRequest.genericOnSuccessCallback = function (response, httpArgs){

   if (this.hasCustomSuccessCallback){
	  try {
		this.customSuccessCallback(response, httpArgs) ;
	  }catch(e){
		 console.error(e);
		throw e;
	  }
   }
};

data.GenRequest.xhrGet = function (args){
  var params = data.GenRequest.init(args);
  var requestHandler = dojo.xhrGet(params.dojoParams);
  return requestHandler;
};

data.GenRequest.xhrPost = function (args){
  var params = data.GenRequest.init(args);
  var requestHandler = dojo.xhrPost(params.dojoParams);
  return requestHandler;
};

