
/*
 * Use JQuery Ajax API for all ajax calls.
 */

// AjaxNI - gets nutrition data from the server. It ties up with a FoodInfo
// object via the FoodInfo's submit handler.

function AjaxNI() {
	this.fdataArr = new Array();
}

function _setCallbackData (cbData) {
	this.cbData = cbData;
}
AjaxNI.prototype.setCallbackData = _setCallbackData;

function _getCallbackData () {
	return this.cbData;
}
AjaxNI.prototype.getCallbackData = _getCallbackData;

// Collect all the food measures...
function _addFoodItem(fmItem) {
	this.fdataArr[this.fdataArr.length] = fmItem;
}
AjaxNI.prototype.addFoodItem = _addFoodItem;

// get nutrition info for the list of food measures and update the nutritionInfo
// data structure. 
function _initNutritionInfo(fmArr, cbHandler) {
	this.fdataArr = fmArr;
	this.cbHandler = cbHandler;

	// To help sort out scope within the success callback,  thisObj is declared 
	// here and then used in the callback.
	var thisObj = this;
    var success = function (res) {
			thisObj.nutritionInfo = res;
			thisObj.cbHandler(thisObj);
			if (thisObj.niUpdateHandler) 
				thisObj.niUpdateHandler(thisObj.niTotals);
        };

    var request = $.getJSON("get_food_info.jsp"+this.getRequestParams(), success);
}
AjaxNI.prototype.initNutritionInfo = _initNutritionInfo;


function _getNutritionInfo() {
	return this.nutritionInfo;
	// return this.nutritionInfo.Results;
}
AjaxNI.prototype.getNutritionInfo = _getNutritionInfo;

function _getRequestParams() {
	var ret = "?d=1211";
	var ic = 0;
	for (var ix=0;ix<this.fdataArr.length;ix++) {
		var fdata = this.fdataArr[ix];
		if (fdata.fdAliasId == undefined || fdata.fdAliasId == null)
			continue;

			
		ret += "&fdId"+ic+"="+fdata.fdAliasId;
		ret += "&qty"+ic+"="+fdata.qty;
		ret += "&unitId"+ic+"="+fdata.unitId;
		if (fdata.fdAliasId == "-1")
			ret += "&name"+ic+"="+fdata.fdAliasName;
		ic++
	}
	ret += "&numItems="+ic;
	return ret;
}
AjaxNI.prototype.getRequestParams = _getRequestParams;

function _getFoodInfo() {
	return fdataArr;
/*
	var ret = new Array();
	for (var ix=0;ix<this.fdataArr.length;ix++) {
		ret[ix] = fdataArr.fInfo;
	}
	return ret;
*/
}
AjaxNI.prototype.getFoodInfo = _getFoodInfo;

function _setNutritionInfoUpdateHandler(cb) {
	this.niUpdateHandler = cb;
}
AjaxNI.prototype.setNutritionInfoUpdateHandler = _setNutritionInfoUpdateHandler; 
function _getNITotals() {
	return this.niTotals;
}
AjaxNI.prototype.getNITotals = _getNITotals;



