var menuplanner = new Object();

menuplanner.Connect = function(component, method, url, params) {
	this.component = component;
	this.method = method;
	this.url = url;
	this.params = params;
}

menuplanner.Connect.prototype = {

	getTransport: function() {
		var transport;
		if (window.XMLHttpRequest) 
			transport = new XMLHttpRequest(); 
		else if (window.ActiveXObject) {
			try {
				transport = new ActiveXObject('Msxml2.XMLHTTP');
			} catch (err) {
				transport = new ActiveXObject('Microsoft.XMLHTTP');
			}
		}
		return transport;
	},
	
	sendRequest: function(callbackFunction, arg1) {
		var request = this.getTransport();
		request.open(this.method, this.url, true);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		var oThis = this;
		request.onreadystatechange = function() { oThis.handleAjaxResponse(callbackFunction, request, arg1); };
		request.send(this.params);
	},
	
	handleAjaxResponse: function(callbackFunction, request, arg1) {
		if (request.readyState == 4) {
			if (this.isSuccess(request)) {
				if (request.responseText == "<timeout/>") {
					location.replace("/menuplanner/index.jsp");
				} else {
					if (request.responseText.charAt(0) == '{') {
						if (this.checkForError(request)) return;
					}
					callbackFunction.call(this.component, request, arg1);
				}
			} else {
				alert("The Dietetics Online Website has encountered an error: " + request.status);
			}
		}
	},
	
	checkForError: function(request) {
		var json = eval("("+request.responseText+")");
		if (json.ErrorMessage == undefined) {
			return false;
		}
		displayInfo(json.ErrorMessage.message);
		return true;
	},
	
	isSuccess: function(request) {
		return request.status == 0 || (request.status >= 200 && request.status < 300);
	}
	
}

menuplanner.Goal = function() {}

menuplanner.Goal.prototype = {

	addGoal: function(goaltype, goaltext) {
		var params = "addgoal=true&goaltype=" + goaltype + "&goaltext=" + goaltext;
		new menuplanner.Connect(this, "POST", "client/goals.html", params).sendRequest(this.updateGoals);
	},
	
	deleteGoal: function(id) {
		var params = "deletegoal=true&goalid=" + id;
		new menuplanner.Connect(this, "POST", "client/goals.html", params).sendRequest(this.updateGoals);
	},
	
	updateGoal: function(goalId, achieved) {
		var params = "updategoal=true";
		params = params + "&goalid=" + goalId;
		params = params + "&achieved=" + achieved;
		new menuplanner.Connect(this, "POST", "client/goals.html", params).sendRequest(this.updateGoals);
	},
	
	displayGoals: function() {
		new menuplanner.Connect(this, "POST", "client/goals.html").sendRequest(this.updateGoals);
	},
	
	updateGoals: function(request) {
		var goalsTableDiv = document.getElementById('goalsTableDiv');
		goalsTableDiv.innerHTML = request.responseText;
	}
}

menuplanner.Menu = function() {}

menuplanner.Menu.prototype = {

	updateMeal: function(menuId, mealId, menuItemId) {
		var params = "menuId=" + menuId + "&mealId=" + mealId + "&menuItemId=" + menuItemId;
		new menuplanner.Connect(this, "POST", "client/updateMeal.html", params).sendRequest(this.updateMenu);
	},

	displayMenu: function() {
		new menuplanner.Connect(this, "POST", "client/menu.html").sendRequest(this.updateMenu);
	},
	
	updateMenu: function(request) {
		var menuDiv = document.getElementById('menuHolderId');
		menuDiv.innerHTML = request.responseText;
	}
	
}

menuplanner.MenuItemGroup = function() {}

menuplanner.MenuItemGroup.prototype = {

	getGroups: function(type, selectedGroupId) {
		var params = "type=" + type;
		new menuplanner.Connect(this, "POST", "client/getMenuItemGroups.html", params).sendRequest(this.displayGroups, selectedGroupId);
	},
	
	displayGroups: function(request, selectedGroupId) {
		var selectDiv = document.getElementById('select1DivId');
		selectDiv.innerHTML = request.responseText;
		var selectX = document.getElementById('groupSelectId');
		var i = 0;
		for (var i = 0; i < selectX.length; i++) {
			if (selectX.options[i].value == selectedGroupId) {
				selectX.options[i].selected = "true";
			}
		}
	}
}

menuplanner.MenuItem = function() {}

menuplanner.MenuItem.prototype = {

	getMenuItem: function(id) {
		var params = "menuitemid=" + id;
		new menuplanner.Connect(this, "POST", "client/getMenuItems.html", params).sendRequest(this.displayMenuItemDescription);
	},

	getMenuItems: function() {
	},
	
	getFilteredMenuItems: function(itemGroupId, selectedMenuItemId) {
		var params = "itemGroupId=" + itemGroupId;
		new menuplanner.Connect(this, "POST", "client/getFilteredMenuItems.html", params).sendRequest(this.displayMenuItems, selectedMenuItemId);
	},
	
	displayMenuItem: function() {
	},
	
	displayMenuItems: function(request, selectedMenuItemId) {
		var selectDiv2 = document.getElementById('select2DivId');
		selectDiv2.innerHTML = request.responseText;
		var selectX = document.getElementById('itemSelectId');
		for (var i = 0; i < selectX.length; i++) {
			if (selectX.options[i].value == selectedMenuItemId) {
				selectX.options[i].selected = "true";
			}
		}
	},
	
	displayMenuItemDescription: function(request) {
		var descriptionDiv = document.getElementById('descriptionDivId');
		descriptionDiv.innerHTML = "";
		var textarea = document.createElement("textarea");
		textarea.style.height = "140px";
		textarea.style.width = "200px";
		textarea.readOnly = "true";
		textarea.className = "smalltext";
		textarea.value = request.responseText;
		descriptionDiv.appendChild(textarea);
	}
}

menuplanner.Client = function() {}

menuplanner.Client.prototype = {

	loadClient: function() {
		var params = "";
		new menuplanner.Connect(this, "POST", "client/loadClient.html", params).sendRequest(this.setupHomepage);
	},

	createClient: function(firstname, lastname, sex, dob, menuTemplate, kilojouleRequirement, username, password, weight, bfp, recommendedEE, bmr) {
		var params = "firstname=" + firstname;
		params = params + "&lastname=" + lastname;
		params = params + "&sex=" + sex;
		params = params + "&dob=" + dob;
		params = params + "&menuTemplate=" + menuTemplate;
		params = params + "&kilojouleRequirement=" + kilojouleRequirement;
		params = params + "&username=" + username;
		params = params + "&password=" + password;
		params = params + "&weight=" + weight;
		params = params + "&bfp=" + bfp;
		params = params + "&recommendedEE=" + recommendedEE;
		params = params + "&bmr=" + bmr;
		new menuplanner.Connect(this, "POST", "admin/createClient.html", params).sendRequest(this.clientCreated);
	},

	updateClient: function(firstname, lastname, sex, dob, menuTemplate, kilojouleRequirement, username, password, weight, bfp, recommendedEE, bmr) {
		var params = "firstname=" + firstname;
		params = params + "&lastname=" + lastname;
		params = params + "&sex=" + sex;
		params = params + "&dob=" + dob;
		params = params + "&menuTemplate=" + menuTemplate;
		params = params + "&kilojouleRequirement=" + kilojouleRequirement;
		params = params + "&username=" + username;
		params = params + "&password=" + password;
		params = params + "&weight=" + weight;
		params = params + "&bfp=" + bfp;
		params = params + "&recommendedEE=" + recommendedEE;
		params = params + "&bmr=" + bmr;
		new menuplanner.Connect(this, "POST", "admin/updateClient.html", params).sendRequest(this.clientUpdated);
	},

	clientSearch: function(firstname, lastname, username) {
		var params = "firstname=" + firstname + "&lastname=" + lastname + "&username=" + username;
		new menuplanner.Connect(this, "POST", "admin/clientSearch.html", params).sendRequest(this.displaySearchResults);
	},
	
	displayClient: function(clientId) {
		var params = "clientId=" + clientId;
		new menuplanner.Connect(this, "POST", "admin/displayClient.html", params).sendRequest(this.displayClientDetails);
	},
	
	clientCreated: function(request) {
		displayInfo("Client Created Successfully!!");
		clearClientFields();
	},
	
	clientUpdated: function(request) {
		displayInfo("Client Updated Successfully!!");
		clearClientFields();
	},
	
	setupHomepage: function(request) {
		var json = eval("("+request.responseText+")");
		
		var welcomeText = document.getElementById('homepageWelcomeTextId');
		welcomeText.innerHTML = "Welcome " + json.homepage.clientName + " to MD Health's Dietetics Online";
		
		var recipeImgHolder = document.getElementById('homepageRecipeImgId');
		var img = document.createElement("img");
		img.setAttribute("src", json.homepage.recipe.imageUrl);
		recipeImgHolder.appendChild(img);
		
		var recipeDescription = document.getElementById('homepageRecipeDescriptionId');
		recipeDescription.innerHTML = json.homepage.recipe.description;
		
		var recipeLink = document.getElementById('homepageRecipeLinkId');
		if (recipeLink != null) {
			recipeLink.setAttribute("href", json.homepage.recipe.fileUrl);
		}
		
		var exerciseImgHolder = document.getElementById('homepageExerciseImgId');
		var exerciseImg = document.createElement("img");
		exerciseImg.setAttribute("src", json.homepage.exercise.imageUrl);
		exerciseImgHolder.appendChild(exerciseImg);
		
		var exerciseDescription = document.getElementById('homepageExerciseDescriptionId');
		exerciseDescription.innerHTML = json.homepage.exercise.description;
		
		var exerciseLink = document.getElementById('homepageExerciseLinkId');
		if (exerciseLink != null) {
			exerciseLink.setAttribute("href", json.homepage.exercise.fileUrl);
		}
		
		var factImgHolder = document.getElementById('homepageFactImgId');
		var factImg = document.createElement("img");
		factImg.setAttribute("src", json.homepage.factorfiction.imageUrl);
		factImgHolder.appendChild(factImg);
		
		var factDescription = document.getElementById('homepageFactDescriptionId');
		factDescription.innerHTML = json.homepage.factorfiction.description;
		
		var factLink = document.getElementById('homepageFactLinkId');
		if (factLink != null) {
			factLink.setAttribute("href", json.homepage.factorfiction.fileUrl);
		}
	},
	
	displayClientDetails: function(request) {
		var json = eval("("+request.responseText+")");
		document.getElementById('currentClientId').innerHTML = "Current Client is " + json.ClientDetails.firstname + " " + json.ClientDetails.lastname;
		document.getElementById('createClientFirstname').value = json.ClientDetails.firstname;
		document.getElementById('createClientLastname').value = json.ClientDetails.lastname;
		document.getElementById('createClientDob').value = json.ClientDetails.dob;
		document.getElementById('createClientKilojouleRequirement').value = json.ClientDetails.kilojouleRequirement;
		document.getElementById('createClientUsername').value = json.ClientDetails.username;
		document.getElementById('createClientPassword').value = json.ClientDetails.password;
		document.getElementById('createClientWeight').value = json.ClientDetails.weight;
		document.getElementById('createClientBFP').value = json.ClientDetails.bfp;
		document.getElementById('createClientRecommendedEE').value = json.ClientDetails.recommendedEE;
		document.getElementById('createClientBMR').value = json.ClientDetails.bmr;
		
		var sex = document.getElementById('createClientSex').value = json.ClientDetails.sex;
		
		var button = document.getElementById('createClientButtonId');
		button.value = "Update";
		button.onclick = function() { updateClient()} ;
	},
	
	displaySearchResults: function(request) {
		var div = document.getElementById('clientSearchResultsDiv');
		div.innerHTML = request.responseText;
	}
}

menuplanner.Activity = function() {}

menuplanner.Activity.prototype = {

	getActivityLevels: function() {
		var params = "";
		new menuplanner.Connect(this, "POST", "client/getActivityLevels.html", params).sendRequest(this.displayActivityLevels);
	},

	getActivities: function(activityLevelId) {
		var params = "activityLevelId=" + activityLevelId;
		new menuplanner.Connect(this, "POST", "client/getActivities.html", params).sendRequest(this.displayActivities);
	},
	
	addActivityTask: function(activityId, durationHrs, durationMins, day, month, year) {
		var params = "activityId=" + activityId;
		params = params + "&durationHrs=" + durationHrs;
		params = params + "&durationMins=" + durationMins;
		params = params + "&day=" + day;
		params = params + "&month=" + month;
		params = params + "&year=" + year;
		var array = new Array(day, month, year);
		new menuplanner.Connect(this, "POST", "client/addActivityTask.html", params).sendRequest(this.displayActivityTasks, array);
	},
	
	deleteActivityTask: function(activityTaskId, day, month, year) {
		document.getElementById('activityCommentId').innerHTML = "";
		var params = "activityTaskId=" + activityTaskId;
		var array = new Array(day, month, year);
		new menuplanner.Connect(this, "POST", "client/deleteActivityTask.html", params).sendRequest(this.displayActivityTasks, array);
	},
	
	displayActivityDay: function(day, month, year) {
		if (!day || !month || !year) {
			var date = new Date();
			day = date.getDate();
			month = date.getMonth();
			year = date.getFullYear();
		}
		var params = "day=" + day;
		params = params + "&month=" + month;
		params = params + "&year=" + year;
		var array = new Array(day, month, year);
		new menuplanner.Connect(this, "POST", "client/displayActivityDay.html", params).sendRequest(this.displayActivityTasks, array);
	},
	
	getCompletedActivityDays: function(month, year) {
		var params = "month=" + month;
		params += "&year=" + year;
		new menuplanner.Connect(this, "POST", "client/getCompletedActivityDays.html", params).sendRequest(this.displayCompletedActivityDays);
	},
	
	getActivityDetailsByDate: function(day, month, year) {
		var params = "day=" + day;
		params = params + "&month=" + month;
		params = params + "&year=" + year;
		new menuplanner.Connect(this, "POST", "client/getActivityDetails.html", params).sendRequest(this.displayActivityDetails);
	},
	
	displayCompletedActivityDays: function(request) {
		var json = eval("("+request.responseText+")");
		reloadActivityCalendar(	json.CompletedActivityDays.completedDays, 
				json.CompletedActivityDays.month,
				json.CompletedActivityDays.year);
	},
	
	displayActivityDetails: function(request) {
		if (request.responseText == "") {
			document.getElementById('expendedEnergyInputId').value = "";
			var totalEnergyInput = document.getElementById('totalEnergyInputId');
			totalEnergyInput.value = "";
			totalEnergyInput.style.backgroundColor = "white";
			document.getElementById('recommendedEnergyInputId').value = "";
			return;
		}
		var json = eval("("+request.responseText+")");
	
		var totalEnergyInput = document.getElementById('totalEnergyInputId');
		
		var activity = json.ActivityDetails.activityEnergy;
		var total = json.ActivityDetails.totalEnergy;
		var recommended = json.ActivityDetails.recommendedEnergy;
		document.getElementById('expendedEnergyInputId').value = activity;
		document.getElementById('totalEnergyInputId').value = total;
		document.getElementById('recommendedEnergyInputId').value = recommended;
		totalEnergyInput.style.backgroundColor = "white";

		var defecit = total - recommended;
		if (defecit > 0) {
			if (defecit < 4000) {
				//green
				totalEnergyInput.style.backgroundColor = "green";
				document.getElementById('activityCommentId').innerHTML = "Good work, you are on your way to achieving your goals.";
			} else {
				//red
				totalEnergyInput.style.backgroundColor = "red";
				document.getElementById('activityCommentId').innerHTML = "If your energy expenditure is consistently high, you may need to balance it with more food.";
			}
		} else {
			if (defecit > -2000) {
				//amber
				totalEnergyInput.style.backgroundColor = "#FECC0B";
				document.getElementById('activityCommentId').innerHTML = "Try to include more activity in your day to help you acheive your goals.";
			} else {
				//red
				totalEnergyInput.style.backgroundColor = "red";
				document.getElementById('activityCommentId').innerHTML = "Your energy expenditure today is very low.";
			}
		}
	},
	
	displayActivityTasks: function(request, dateArray) {
		this.getActivityDetailsByDate(dateArray[0], dateArray[1], dateArray[2]);
		var div = document.getElementById('activityTaskListDiv');
		div.innerHTML = request.responseText;
		new menuplanner.Activity().getCompletedActivityDays(dateArray[1]+1, dateArray[2]);
	},
	
	displayActivities: function(request) {
		var div = document.getElementById('activitiesSelectDiv');
		div.innerHTML = request.responseText;
	},
	
	displayActivityLevels: function(request) {
		var div = document.getElementById('activityLevelSelectDiv');
		div.innerHTML = request.responseText;
	}
}

menuplanner.Trial = function() {}

menuplanner.Trial.prototype = {

	startTrial: function(goaltype, goaltext) {
		var params = "";
		new menuplanner.Connect(this, "POST", "trial/startTrial.html", params).sendRequest(this.login);
	},
	
	disableUser: function(username) {
		var params = "username=" + username;
		new menuplanner.Connect(this, "POST", "trial/disableUser.html", params).sendRequest(this.doNothing);
	},
	
	login: function(request) {
	
		var json = eval("("+request.responseText+")");
		var username = document.getElementById('usernameId');
		var password = document.getElementById('passwordId');
		username.value = json.TrialDetails.username;
		password.value = json.TrialDetails.password;
		document.getElementById('submitId').click();
		username.value="";
		password.value="";
		
		setTimeout(this.disableUser(json.TrialDetails.username), 2000);
	},
	
	doNothing: function(request) {
	}
}

menuplanner.FoodDiary = function() {

}

menuplanner.FoodDiary.prototype = {

	"mealArray" : [],
	"additionalFood" : "",
	"comments" : "",
	"date" : { "day" : 0, "month" : 0, "year" : 0},

	"getFoodDiary" : function(day, month, year, dayOfWeek) {
		this.date.day = day;
		this.date.month = month;
		this.date.year = year;
		var params = "day=" + day;
		params += "&month=" + month;
		params += "&year=" + year;
		params += "&dayOfWeek=" + dayOfWeek;
		new menuplanner.Connect(this, "POST", "client/getFoodDiaryDay.html", params).sendRequest(this.displayFoodDiaryDay);
	},
	
	"getElement" : function(menuItemText, alternativeMenuItemText, mealTypeId, imageId, isMenuItemEaten) {
		var text = "";
		if (isMenuItemEaten == 'true') {
			text = "<td>\n<textarea class=\"foodDiaryMenuItem\" readonly=\"true\">" + menuItemText + "</textarea>\n<input id=\"" + imageId + "\" type=\"checkbox\" checked=\"true\" class=\"smallButton\"></input>\n<textarea id=\"" + mealTypeId + "\" class=\"foodDiaryAlternativeText\">" + alternativeMenuItemText + "</textarea></td>\n";
		} else {
			text = "<td>\n<textarea class=\"foodDiaryMenuItem\" readonly=\"true\">" + menuItemText + "</textarea>\n<input id=\"" + imageId + "\" type=\"checkbox\" class=\"smallButton\"></input>\n<textarea id=\"" + mealTypeId + "\" class=\"foodDiaryAlternativeText\">" + alternativeMenuItemText + "</textarea></td>\n";
		}
		return text;
	},
	
	"getSnackElement" : function(menuItemText, alternativeMenuItemText, mealTypeId, imageId, isMenuItemEaten) {
		var text = "";
		if (isMenuItemEaten == 'true') {
			text = "<td>\n<textarea class=\"foodDiarySnackMenuItem\" readonly=\"true\">" + menuItemText + "</textarea>\n<input id=\"" + imageId + "\" type=\"checkbox\" checked=\"true\" class=\"smallButton\"></input>\n<textarea id=\"" + mealTypeId + "\" class=\"foodDiarySnackAlternativeText\">" + alternativeMenuItemText + "</textarea></td>\n";
		} else {
			var text = "<td>\n<textarea class=\"foodDiarySnackMenuItem\" readonly=\"true\">" + menuItemText + "</textarea>\n<input id=\"" + imageId + "\" type=\"checkbox\" class=\"smallButton\"></input>\n<textarea id=\"" + mealTypeId + "\" class=\"foodDiarySnackAlternativeText\">" + alternativeMenuItemText + "</textarea></td>\n";
		}
		return text;
	},
	
	"displayFoodDiaryDay" : function(request) {
		var json = eval("("+request.responseText+")");
		var text = "<table>";
		var fdm = null;
		mealArray = new Array;
		for (var i=0; i<json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal.length; i++) {
			fdm = new menuplanner.FoodDiaryMeal();
			fdm.menuItemText = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].menuitem.description;
			fdm.isMenuItemEaten = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].isMenuItemEaten;
			fdm.alternativeText = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].alternativeMealText;
			fdm.mealType = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].mealType;
			fdm.comment = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].comment;
			fdm.menuItemId = json.foodDiaryDay.foodDiaryMeals.foodDiaryMeal[i].menuitem.id;
			fdm.alternativeTextId = "altText" + fdm.mealType;
			mealArray[i] = fdm;
			if (fdm.mealType > 3) {
				text += "<tr>" + this.getSnackElement(fdm.getMenuItemText(), fdm.getAlternativeText(), fdm.alternativeTextId, "altImage" + fdm.mealType, fdm.isMenuItemEaten) + "</tr>\n";
			} else {
				text += "<tr>" + this.getElement(fdm.getMenuItemText(), fdm.getAlternativeText(), fdm.alternativeTextId, "altImage" + fdm.mealType, fdm.isMenuItemEaten) + "</tr>\n";
			}
		}
		text += "</table>";
		var div = document.getElementById('foodDiaryDayDiv');
		div.innerHTML = text;
		
		document.getElementById('foodDiaryAdditionalFoodId').value = json.foodDiaryDay.additionalFoods;
		document.getElementById('foodDiaryCommentId').value = json.foodDiaryDay.comments;
			
		for (var i=0; i<mealArray.length; i++) {
			var x = 'altImage'+(i+1);
			var elem = document.getElementById(x);
			//elem.addEventListener('click', mealArray[i].copyMenuItemText, false);
			addEvent(elem, 'click', mealArray[i].copyMenuItemText, false);
		}
		
		if (mealArray.length == 5) {
			document.getElementById('foodDiaryBackgroundDiv').className = "foodDiaryBackground2Snacks";
		} else if (mealArray.length == 6) {
			document.getElementById('foodDiaryBackgroundDiv').className = "foodDiaryBackground3Snacks";
		} else if (mealArray.length == 7) {
			document.getElementById('foodDiaryBackgroundDiv').className = "foodDiaryBackground4Snacks";
		}
	},
	
	"hasInvalidCharacters" : function(text) {
		if (text.indexOf('&') != -1 || text.indexOf('%') != -1 || text.indexOf('"') != -1) {
			displayInfo("Please do not use any of the following characters: & % \"");
			return true;
		}
		return false;
	},
	
	"saveFoodDiary" : function() {

		var additionalFoodText = document.getElementById('foodDiaryAdditionalFoodId').value;
		if (this.hasInvalidCharacters(additionalFoodText) == true) {
			return;
		}
			
		var commentText = document.getElementById('foodDiaryCommentId').value;
		if (this.hasInvalidCharacters(commentText) == true) {
			return;
		}
		
		var mealData = new Array
		for (var i=0; i<mealArray.length; i++) {
			if (this.hasInvalidCharacters(mealArray[i].getEnteredAlternativeText()) == true) {
				return;
			}
		}
		
		for (var i=0; i<mealArray.length; i++) {
			mealData[i] = { "alternativeText" : mealArray[i].getEnteredAlternativeText(), 
							"isEaten" : mealArray[i].isMenuItemEaten,
							"mealType" : mealArray[i].mealType,
							"menuItemId" : mealArray[i].menuItemId,
							"comment" : mealArray[i].comment } 
			//alert(mealArray[i].getEnteredAlternativeText());
		}
		
		var data = { "foodDiaryDetails" : {
			"additionalFood" : additionalFoodText,
			"comments" : commentText,
			"meal" : mealData,
			"date" : {"day" : selectedFoodDiaryDay.date.day, 
					"month" : selectedFoodDiaryDay.date.month, 
					"year" : selectedFoodDiaryDay.date.year } }
		}
		
		var params = "json=" + data.toJSONString();
		new menuplanner.Connect(this, "POST", "client/saveFoodDiaryDay.html", params).sendRequest(this.doNothing2);
		document.getElementById('foodDiaryAdditionalFoodId').value = "";
		document.getElementById('foodDiaryCommentId').value = "";
		
		selectedFoodDiaryDay.getCompletedFoodDiaryDays((selectedFoodDiaryDay.date.month) + 1, selectedFoodDiaryDay.date.year);
		
		selectedFoodDiaryDay = null;
		document.getElementById('foodDiaryCalendarDivId').className = "show";
		document.getElementById('foodDiaryFormDivId').className = "hide";
		document.getElementById('foodDiaryBackgroundDiv').className = "blankFoodDiaryBackground";
	},
	
	"cancelFoodDiary" : function() {
		selectedFoodDiaryDay = null;
		document.getElementById('foodDiaryCalendarDivId').className = "show";
		document.getElementById('foodDiaryFormDivId').className = "hide";
		document.getElementById('foodDiaryBackgroundDiv').className = "blankFoodDiaryBackground";
	},
	
	"doNothing2" : function() {
	},
	
	getCompletedFoodDiaryDays: function(month, year) {
		var params = "month=" + month;
		params += "&year=" + year;
		new menuplanner.Connect(this, "POST", "client/getCompletedFoodDiaryDays.html", params).sendRequest(this.displayCompletedFoodDiaryDays);
	},
	
	displayCompletedFoodDiaryDays: function(request) {
		var json = eval("("+request.responseText+")");
		reloadFoodDiaryCalendar(json.CompletedFoodDiaryDays.completedDays, 
				json.CompletedFoodDiaryDays.month,
				json.CompletedFoodDiaryDays.year);
	}
	
}

menuplanner.FoodDiaryMeal = function() { 
	var me = this; 
	menuItemText : "text";
	alternativeText : "text";
	isMenuItemEaten : 'false';
	mealType : 0;
	menuItemId : 0;
	alternativeTextId : "";
	comment : "";
	this.copyMenuItemText = function() {
		//alert(me.isMenuItemEaten);
		var text = document.getElementById(me.alternativeTextId).value;
		if (me.isMenuItemEaten == 'true') {
			//alert("menuItem previously eaten, but now is NOT");
			document.getElementById(me.alternativeTextId).value = "";
			me.isMenuItemEaten = 'false';
		} else {
			//alert("menuItem was previously NOT eaten, but now is");
			document.getElementById(me.alternativeTextId).value = me.menuItemText;
			me.isMenuItemEaten = 'true';
		}
	}
}
menuplanner.FoodDiaryMeal.prototype = {
	setAlternativeText:function(text) {
		this.alternativeText = text;
	},
	getMenuItemText:function() {
		return this.menuItemText;
	},
	getAlternativeText:function() {
		return this.alternativeText;
	},
	getEnteredAlternativeText:function() {
		return document.getElementById(this.alternativeTextId).value;
	}
}


menuplanner.Pdf = function() {}

menuplanner.Pdf.prototype = {

	generateMenuPdf: function() {
		var params = "";
		new menuplanner.Connect(this, "POST", "client/generateMenuPdf.html", params).sendRequest(this.displayMenuPdf);
	},
	
	displayMenuPdf: function(request) {
		var generatedFile = request.responseText;
		var newWindow = window.open('http://tc788.metawerx.com.au/' + generatedFile, '_blank');
		newWindow.focus();
	}
}

function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be attached");
  }
} 

var selectedFoodDiaryDay = null;
