var sidebarHistory = Array();
var sidebarIndex = 0;
var submenuHistory = Array();
var submenuIndex = -1;
$(document).ready(function () {
	searchForm();
	inviteForm();
	eatingForm();
	friendButtons();
	dailyValuesCalculator();
	
	//$('div.food-attributes').append('<a href="javascript:;" onclick="toggleAttributesMore(this)" class="more-link">...</a>');
	$('.feed-ingredients').css('display','none');
	$('.expanded-food-attributes').css('display','none');
	$('.expanded-ingredient-attributes').css('display','none');
	$('.highlighted .feed-ingredients').css('display','block');
	
	sidebarHistory[sidebarIndex] = $('#right-panel').html();
	tip($('#my_day_starts'),'Midnight snacker? If you want us to start tracking your daily totals sometime other than midnight, set the time here.');
	
	window.onbeforeunload = checkEditing;
	
});

var numEditing = 0;
function checkEditing() {
	if (0 < numEditing) {
		return 'You have unsaved changes to a recipe. If you leave the page, your changes will be lost.';
	}
}

function eatingForm(){
	
	var formText = "Use Twitter to enter food separated by commas\n(include #nutritteralpha in public tweets or Direct Message @nutritter for private)";
	var foodTextField = $("#add-food-id");
	foodTextField.attr("value",formText).bind('focus',function(){ 
		if(this.value.substr(0,30) == formText.substr(0,30)) { this.value = ''; this.style.color = '#333'; }
	    }).bind('blur',function() {
		 if(this.value == '') { this.value = formText; this.style.color = '#999'; }
	    }).bind('keydown', function(e) {
	    	if (e.which==13) { $("#update-log-button").click();	return false; }
	    });
	
	$("#update-log-button").bind('click', function(){
		if (foodTextField.attr('value').substr(0,30) == formText.substr(0,30)) { foodTextField.attr('value',''); }
	});
}
	


function searchForm(){	
    var formText = "Keywords (comma seperated)";
    $("#search-input-id").attr("value",formText).bind('focus',function(){ 	    
	    if(this.value == formText) { this.value = ''; this.style.color = '#333'; }
	});    
}

function inviteForm(){	
    var formText = "Type in your friends e-mail address";
    $("#invite-input-id").attr("value",formText).bind('focus',function(){ 	    
	    if(this.value == formText) { this.value = ''; this.style.color = '#333'; }
	});    
}


function friendButtons() {
	$('.add_friend_bttn').click(function() {
		var name = $(this).attr('href').substring($(this).attr('href').indexOf('usr-')+4);

		if (0 < $('#friend-request-box').length) {
			$('#friend-request-box').remove();
		}
		var pos = $(this).position();
		var left = pos.left+$(this).width();
		$(this).after('<div id="friend-request-box" style="top:'+pos.top+'px; left:'+left+'px;" class="friend_request_box nutritter_form"><h3>Send friend request to '+name
				+'<a class="close" title="Close" onclick="closeFriendRequest(\''+name+'\');"><img src="/img/icon-close.gif" alt="Close"/></a>'
				+'</h3><form><div class="field"><label for="add_friend_message-'+name+'">'
				+'Message (optional):</label><textarea rows="4" id="add_friend_message-'
				+name+'" name="message"></textarea></div><div class="submit"><img src="/img/loading.gif" class="loading"/><input type="submit" class="bttn" value="Send"/></div></form></div>');
		
		$('#friend-request-box form').submit(function() {
			$('#friend-request-box .loading').show();
			var message = $('#friend-request-box textarea').attr('value');
			$.get('/dispatch.php/?_check=requestFriendship&target='+name+'&message='+message, function(data) {
				$('#friend-request-box form').html(data);
				$('#friend-request-box').prev().parent().replaceWith('<div class="existing-relationship">Friendship requested</div>');
			});
			return false;
		});
		return false;
	});
}

function closeFriendRequest(name) {
	$('#friend-request-box').remove();
}

function tip(el, text) {
	var t;
	el.bind('mouseover',function(){
		if (0 == $('#tool-tip').length) {
			var pos = el.position();
			var left = pos.left+el.outerWidth();
			var tooltip = $('<div id="tool-tip" class="tooltip" style="position:absolute; top:'+pos.top+'px; left:'+left+'px">'+text+'</div>');
			el.after(tooltip);
			tooltip.fadeIn('fast');
			tooltip.bind('mouseover',function(){ clearTimeout(t); });
			tooltip.bind('mouseout',function(){ t = setTimeout("hideTip()", 1000); });
		} else {
			clearTimeout(t);
		}
	}).bind('mouseout',function(){
		t = setTimeout("hideTip()", 1000);
	});
}

function hideTip(){
	$('#tool-tip').fadeOut('fast', function(){ $('#tool-tip').remove(); });
}



function toggleDailyTotals(){
	$("#usr-panel-daily-totals .extra_fields").toggle();
	$("#usr-panel-daily-totals .basic_fields").toggle();
}

function toggleIngredients(oid){
	$("#"+oid+"-ingredients").toggle();
}


function toggleAttributes(oid){
	$("#"+oid+"-food-part .expanded-food-attributes").toggle();
	$("#"+oid+"-food-part .minimized-food-attributes").toggle();
}

function toggleIngredientAttributes(feedid,oid){
	$("#"+feedid+"-food-part #"+feedid+"-"+oid+"-ingredient-part .expanded-ingredient-attributes").toggle();
	$("#"+feedid+"-food-part #"+feedid+"-"+oid+"-ingredient-part .minimized-ingredient-attributes").toggle();
}

function toggleAttributesMore(e){

	var myid = $(e).parent().parent().attr('id');
	var temp = myid.split('-');
	toggleAttributes(temp[0]);
	
}

var confirmFoodLock = false;
function confirmFood(oid) {
	if (confirmFoodLock) {
		return;
	}
	confirmFoodLock = true;
	$('#'+oid+'-loading').show();
	
	$.get('/dispatch.php?_check=confirm&oid='+oid,
		function(data) {
			var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
			$('#'+oid+'-user-part').parent().replaceWith(rslt.left);
			$("#right-panel").html(rslt.right);
			$('#'+oid+'-food-part .expanded-food-attributes').css('display','none');
			$('#'+oid+'-food-part .expanded-ingredient-attributes').css('display','none');
			$('#'+oid+'-food-part .feed-ingredients').css('display','none');
			var confirmFoodLock = false;
	});
}


var didYouMeanLock = false;
function showDidYouMean(oid) {
	if (didYouMeanLock) {
		return;
	}
	didYouMeanLock = true;
	$('#'+oid+'-loading').show();
	
	//get position of feed item
	var pos = $('#'+oid+'-user-part').parent().position();
	
	$.get('/dispatch.php?_check=didYouMean&oid='+oid,
		function(html) {
			//save old feed item
			saveFeedItemHtml(oid);
			$("#right-panel").html(html);
			$("#right-panel .panel-right").css('margin-top', pos.top);
			$('#right-panel .expanded-food-attributes').css('display','none');
			$('#'+oid+'-loading').hide();
			browseBrands();
			updateSidebarHistory();
			didYouMeanLock = false;
	});
}


var showAddIngredientLock = false;
function showAddIngredient(oid) {
	if (showAddIngredientLock) { return; }
	showAddIngredientLock = true;
	//$("#"+oid+"-ingredients").show();
	if (0 < $('#did-you-mean-wrap').length) {
		$('#'+oid+'-customize-loading').show();
	} else {
		$('#'+oid+'-loading').show();
	}
	//get position of feed item
	var pos = $('#'+oid+'-user-part').parent().position();
	
	$.get('/dispatch.php?_check=showAddIngredient&oid='+oid,
		function(html) {
			$("#right-panel").html(html);
			updateSubmenuHistory();
			var pos = $('#'+oid+'-user-part').parent().position();
			$("#right-panel .panel-right").css('margin-top', pos.top);
			addIngredientSearch();
			addNewBrand();
			browseBrands();
			createIngredient();
			$('#'+oid+'-loading').hide();
			updateSidebarHistory();
			showAddIngredientLock = false;
	});
}

var addIngredientSearchLock = false;
function addIngredientSearch() {
	if (!$('#add-child-search')) { return; }
	
	var formText = 'search here';
	if ($('#add-child-search #Keywords-id').attr('value') == '') { $('#add-child-search #Keywords-id').css('color','#999').attr("value",formText); }
	$('#add-child-search #Keywords-id').bind('focus',function(){ 
		if(this.value == formText) { this.value = ''; this.style.color = '#333'; }
    }).bind('blur',function() {
	 if(this.value == '') { this.value = formText; this.style.color = '#999'; }
    });
	
	$('#add-child-search').submit(function() {
		//validate form
		var oid = $("#add-child-search-addIngredient").attr('value');
		var keywords = $("#Keywords-id").attr('value');
		
		if (!keywords || !oid || addIngredientSearchLock) {
			return false;
		}
		addIngredientSearchLock = true;
		$('#right-panel-'+oid+'-loading').show();
		$('#ingredient-search .error').hide();
		rightSidebarSearch(keywords, oid, 1);
		return false;
	});
	$('#search-food-wrap .pagination-menu a').click(function() {
		var oid = $("#add-child-search-addIngredient").attr('value');
		var keywords = $("#original_search").attr('value');
		var page = 1;
		var j = $(this).attr('href').indexOf('pg-');
		if (0 < j) { page = $(this).attr('href').substring(j+3, $(this).attr('href').indexOf('/', j+3)); }
		submenuIndex--;
		rightSidebarSearch(keywords, oid, page);
		return false;
	});
}

function rightSidebarSearch(keywords, oid, page) {
	$.get('/dispatch.php?_check=rightPanelSearch&keywords='+keywords+'&addIngredient='+oid+'&page='+page,
			function(data) {
				var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
				$('#right-panel-'+oid+'-loading').hide();
				if (rslt.searchSuccess) {
					$("#add-ingredients-cntnr").html(rslt.html);
					
				} else {
					$("#right-panel").html(rslt.html);
					$("#right-panel .panel-right").css('margin-top', $('#'+oid+'-user-part').parent().position().top);
				}
				$('#right-panel .expanded-food-attributes').css('display','none');
				updateSubmenuHistory();
				addIngredientSearch();
				browseBrands();
				addIngredientSearchLock = false;
		});
}

function deleteKeyword(oid) {
	if (confirm('Are you sure you want to permanently delete this recipe?')) {
		$('#'+oid+'-food-part').animate({'opacity':'-=1'}, "slow", function() { $('#'+oid+'-food-part').remove(); });
		$.get('/profile/rmk-'+oid);
	}
	return;
}


var deleteFeedItemLock = false;
function deleteFeedItem(oid) {
	if (!confirm('Are you sure you want to permanently remove this food?')) { return; }
	if (deleteFeedItemLock) { return; }
	deleteFeedItemLock = true;
	
	$.get('/dispatch.php?_check=deleteFeedItem&oid='+oid,
		function(html) {
			$('#'+oid+'-user-part').parent().animate({'opacity':'-=1'}, "slow", function() {
				//remove date if this is the last food eaten that day
				if ($('#'+oid+'-user-part').parent().prev().attr('tagName') == 'H3' 
				    && $('#'+oid+'-user-part').parent().next().attr('tagName') == 'H3') {
					$('#'+oid+'-user-part').parent().prev().remove();
				}
				$('#'+oid+'-user-part').parent().remove();
				
				$("#right-panel").html(html);
				deleteFeedItemLock = false;
			});
	});	
}

function toggleServingSelect(oid) {
	$('#serving-select-'+oid).toggle();
	if($('#serving-select-'+oid).css('display') == 'block'){
		$('#serving-select-'+oid+' .num-servings').select();
	}
}

function deleteIngredient(oid, ing_oid) {
	if (0 < $('#profile-body-wrap').length) {
		if (confirm('Are you sure you want to permanently delete this food?')) {
			$('#'+ing_oid+'-food-part').animate({'opacity':'-=1'}, "slow", function() { $('#'+ing_oid+'-food-part').remove(); });
			$.get('/profile/rmf-'+ing_oid);
		}
		return;
	}
	
	if (1 == $('#'+oid+'-ingredients .ingredient').length) {
		alert('You cannot delete the last ingredient.');
		return;
	}

	if (0 == $('#'+oid+'-'+ing_oid+'-ingredient-part .ingredient-to-add').length) {
		$('#'+oid+'-ingredients').append('<input type="hidden" class="ingredient-to-delete" name="deleted[]" value="' + ing_oid + '"/>');
	} else {
		$('#'+oid+'-'+ing_oid+'-ingredient-part .ingredient-to-update').remove();
		$('#'+oid+'-'+ing_oid+'-ingredient-part .ingredient-to-add').remove();
	}
	//save old feed item
	saveFeedItemHtml(oid);
	$('#'+oid+'-'+ing_oid+'-ingredient-part').animate({'opacity':'-=1'}, "fast");
	makePendingMatch(oid, ing_oid, function() {});
}


function addIngredientToFood(ing_oid, oid) {
	//get servings, show loading 
	var servings = $('#serving-select-'+ing_oid+' .num-servings').attr('value');
	if (isNaN(servings) || servings==0) { alert('Please add some servings.'); return; }
	var bttn = $('#serving-select-'+ing_oid+' .save-servings');

	//save old feed item
	saveFeedItemHtml(oid);
	
	if (0 < $('#did-you-mean-wrap').length) {
		$('#'+oid+'-ingredients .suggested-ing').attr('name','deleted[]');
		$('#'+oid+'-ingredients .ingredient-to-add').remove();
	}
	$('#serving-select-'+ing_oid+' .save-servings').replaceWith('<span class="loading"><img src="/img/loading.gif" alt=""></span>');
	$('#'+oid+'-ingredients').append('<input type="hidden" class="ingredient-to-update" name="ingredients[' + ing_oid + ']" value="' + servings + '"/>');
	$('#'+oid+'-ingredients').append('<input type="hidden" class="ingredient-to-add" name="ingredient-to-add[]" value="' + ing_oid + '"/>');

	makePendingMatch(oid, ing_oid, function(ing_oid) {
		$('#serving-select-'+ing_oid).hide();
		$('#serving-select-'+ing_oid+' .loading').replaceWith(bttn);
		$('#serving-select-'+ing_oid).parent().append('<div id="'+ing_oid+'-alert" class="alert">Food added! Remeber to save your recipe. '
			+'<a onclick="closeAlert(\''+ing_oid+'\'); return false;" /></div>');
	});
}

function editFeedItem(oid) {
	saveFeedItemHtml(oid);
	$('#'+oid+'-loading').show();
	showAddIngredient(oid);
	makePendingMatch(oid, '', function() {});
}

var savedFeedItems = Array();
makePendingMatchLock = false
function makePendingMatch(oid, ing_oid, callback) {
	if (makePendingMatchLock) { return; }
	makePendingMatchLock = true;
	
	var inputs = $('#'+oid+'-food-part input').serialize();
	var time = $('#'+oid+'-food-part .tstamp select').serialize();

	$.get('/dispatch.php?_check=getPendingFeedItem&feed_oid='+oid+'&'+inputs+'&'+time,
		function(data) {
			var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
			//make pending
			$('#'+oid+'-user-part').parent().replaceWith(rslt.left);			
			$('#'+oid+'-food-part .expanded-ingredient-attributes').hide();
			$('#'+oid+'-food-part .expanded-food-attributes').hide();
			callback(ing_oid);
			makePendingMatchLock = false;
			numEditing++;
	});
}

var savePendingMatchLock = false;
function savePendingMatch(oid, force) {
	if (savePendingMatchLock) { return; }
	//check for empty name
	if (true == $('#'+oid+'-option-1').attr('checked') && $('#'+oid+'-ingredients .new_name_field').attr('value') == '') {
		alert('Please name your new reciple.');
		return;
	}
	if ($('#'+oid+'-food-part .food-title .new_keyword').attr('value') == '') {
		alert('Please enter a name.');
		return;
	}
	if (!$('#'+oid+'-food-part .food-attributes input').attr('value') || $('#'+oid+'-food-part .food-attributes input').attr('value')==0) {
		deleteFeedItem(oid);
		return;
	}
	if ($('#'+oid+'-option-1').attr('checked') && $('#'+oid+'-food-part .food-title .new_keyword').attr('value') == $('#'+oid+'-food-part .old_name').attr('value')) {
		if(confirm('You already have a recipe named "'+$('#'+oid+'-food-part .food-title .new_keyword').attr('value')+'".  Would you like to replace it?')) {
			force = 1;
		} else {
			return;
		}
	}

	savePendingMatchLock = true;

	var bttn = $('#'+oid+'-ingredients .pending-match-save .save');
	$('#'+oid+'-ingredients .pending-match-save .save').replaceWith('<img style="margin:0 21px;" src="/img/loading.gif" />');
	
	if(!force) { force = 0; }
	var inputs = $('#'+oid+'-food-part input').serialize();
	var time = $('#'+oid+'-food-part .tstamp select').serialize();
	
	$.get('/dispatch.php?_check=savePendingMatch&feed_oid='+oid+'&force='+force+'&'+inputs+'&'+time,
		function(data) {
			var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
			if (rslt.status) {
				numEditing = 0;
				savePendingMatchLock = false;
				window.location.reload();
				return;
			} else {
				numEditing--;
				savePendingMatchLock = false;
				if(confirm('You already have a recipe named "'+$('#'+oid+'-food-part .food-title .new_keyword').attr('value')+'".  Would you like to replace it?')) {
					savePendingMatch(oid, 1);
				}
				$('#'+oid+'-ingredients .pending-match-save img').replaceWith(bttn);
			}
			
	});
}

function createIngredient() {
	$('#add-child-manually').submit(function() {
		var oid = $('#food_feed_id-id').attr('value');
		var data = {};
		data[$('#brand-id').attr('name')] = $('#brand-id').attr('value');
		data[$('#serving_size_units-id').attr('name')] = $('#serving_size_units-id').attr('value');
		$('#add-child-manually input').each(function(i) {
			var val = this.value;
			if (this.name == 'serving_size_quantity' && this.value == 'Serving Size*') { val = ''; }
			if (this.name == 'name' && this.value == 'Name*') { val = ''; }
			if (this.name != 'name' && this.name != 'add_ingredient' 
				&& this.name != 'food_feed_id' && this.name != 'brand_name' && this.name != 'brand_image') {
				val = val.replace(/[^0-9.]*/gi,'');
			}
			data[this.name] = val;
		});
		$('#'+oid+'-food-part input').each(function() { data[this.name] = this.value;  });
		$('#'+oid+'-food-part .tstamp select').each(function() { data[this.name] = this.value;  });

		image_upload.set_data(data);
		image_upload.post_form();
		return false;
	});
}
var image_upload;


function addNewBrand(brand_name) {
	if (0 == $('#field-brand-id').length) { return; }
	if (!brand_name) { brand_name=''; } 
	if (0 == $('#add-brand').length) {
		$('#field-brand-id').after('<div id="add-brand"><h4>Add New Brand</h4>'
				+'<div class="field"><label for="brand_name-id">name:*</label>'
				+'<input id="brand_name-id" class="text" name="brand_name" value="'+brand_name+'"/></div>'
				+'<div id="field-brand_image-id" class="field"><label for="brand_image-id">picture:</label>'
				+'<div id="current_image">no file selected</div><div id="brand_image-id" class="bttn">Browse</div>'
				+'</div>');
	}
	
	$('#brand-id').bind('change', function() {
		if ('add_brand' == $('#brand-id').attr('value')) {
			$('#add-brand').show();
		} else {
			$('#add-brand').hide();
		}
	});
	addFileUpload();
}

function addFileUpload() {
	image_upload = new Ajax_upload('#brand_image-id', {
	        action: '/dispatch.php?_check=createIngredient',
	        name:'brand_image',
			onSubmit : function(file , ext){
				if (ext && !(/^(jpg|png|jpeg|gif)$/.test(ext))){
					alert('Error: Invalid image file');
					return false;
				}
			},
			onComplete: function (file, data) {
				this.disable();
				var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
				if (rslt.left) {
					var oid = $('#food_feed_id-id').attr('value');
					saveFeedItemHtml(oid);
					$('#'+oid+'-user-part').parent().replaceWith(rslt.left);
					$('#'+oid+'-food-part .expanded-ingredient-attributes').hide();
					$('#'+oid+'-food-part .expanded-food-attributes').hide();
					sidebarIndex++;
					sidebarBack();
				} else {
					$("#right-panel").html(rslt.right);
					$('#add-child-manually .field-submit').append('<div class="error">* errors on form</div>');
					if (0 < $('#add-brand').length) {
						$('#field-brand-id').after($('#add-brand'));
						$('#add-brand').show();
					}
					createIngredient();
					addIngredientSearch();
					addNewBrand(rslt.name);
				}
			}
	});
	$('#field-brand_image-id input').change(function() {
		
		$('#current_image').html($('#field-brand_image-id input').attr('value')); 
	});
	window.setTimeout(function() { 		
		if ('add_brand' == $('#brand-id').attr('value')) {
			if ('' == $('#brand_name-id').attr('value')) {
				$('#brand_name-id').after('<div class="form-field-error-message">(Required)</div>');
			}
			$('#add-brand').show();
			$('#field-brand_image-id').append('<div class="form-field-error-message">(Re-enter Image)</div>');
		} else {
			$('#add-brand').hide();
		}
	}, 1);

}

function browseBrands() {
	$('#right-panel .browse_lnk a').click(function() {
		if (showBrowseBrandsLock) { return false; }
		$('#right-panel .browse_lnk img').show();
		if (0 < $('#browse-brands').length) { submenuIndex--; }
		showBrowseBrands('letter','',1);
		return false;
	});
	
	$('#add-ingredients-cntnr #browse-brands .pagination-menu a').click(function() {
		if (showBrowseBrandsLock) { return false; }
		var letter = '';
		var page = 1;
		var lnk = $(this).attr('href');
		var i = lnk.indexOf('letter-');
		if (0 < i) { letter = lnk.substring(i+7, lnk.indexOf('/', i+7)); }
		var j = lnk.indexOf('pg-');
		if (0 < j) { page = lnk.substring(j+3, lnk.indexOf('/', j+3)); }
		submenuIndex--;
		showBrowseBrands('letter',letter,page);
		return false;
	});
	
	$('#add-ingredients-cntnr .food-item a').click(function () {
		if (showBrowseBrandsLock) { return false; }
		$(this).parent().siblings('.brand-loading').children('img').show();
		showBrowseBrands('brand',escape($(this).attr('title')),1);
		return false;
	});
	
	$('#add-ingredients-cntnr .food-feed-container .food-brand a').click(function () {
		if (showBrowseBrandsLock) { return false; }
		if (0 < $('#brand_list').length) { submenuIndex--; }
		$(this).parent().parent().prev().find('.avatar-block-avatar').replaceWith('<img src="/img/loading.gif" alt=""/>');
		showBrowseBrands('brand',$(this).attr('title'),1);
		return false;
	});
	
	$('#add-ingredients-cntnr .food-feed-container .avatar-block-avatar a').click(function () {
		var id = $(this).parents('.food-feed-user-part').attr('id');
		var oid = id.substring(12, id.indexOf('-', 12));
		toggleServingSelect(oid); 
		return false;
	});

	$('#brand_list .pagination-menu a').click(function() {
		if (showBrowseBrandsLock) { return false; }
		var brand = '';
		var page = 1;
		var lnk = $(this).attr('href');
		var i = lnk.indexOf('nutrition_facts/');
		if (0 < i) { brand = lnk.substring(i+16, lnk.indexOf('/', i+16)); }
		var j = lnk.indexOf('pg-');
		if (0 < j) { page = lnk.substring(j+3, lnk.indexOf('/', j+3)); }
		submenuIndex--;
		showBrowseBrands('brand',brand,page);
		return false;
	});
}


var showBrowseBrandsLock = false;
function showBrowseBrands(type, value, page) {
	if (showBrowseBrandsLock) { return; }
	var oid = $('#add-child-search-addIngredient').attr('value');
	showBrowseBrandsLock = true;
	$.get('/dispatch.php?_check=showBrowseBrands&feed_oid='+oid+'&type='+type+'&value='+value+'&page='+page,
		function(data) {
			var rslt = (data) ? eval( '('+unescape(data)+')' ) : '';
			if (rslt.top) {
				$('#right-panel').html(rslt.top);
				$("#right-panel .panel-right").css('margin-top', $('#'+oid+'-user-part').parent().position().top);
				updateSidebarHistory();
				updateSubmenuHistory();
				addIngredientSearch();
			}
			$('#right-panel .browse_lnk img').hide();
			$('#add-ingredients-cntnr').html(rslt.sub);
			updateSubmenuHistory();
			$('#right-panel .expanded-food-attributes').css('display','none');
			browseBrands();
			showBrowseBrandsLock = false;
	});
}

function saveFeedItemHtml(oid) {
	if (!savedFeedItems[oid]) {
		savedFeedItems[oid] = $('#'+oid+'-user-part').parent().html();
	}
}
function cancelPendingMatch(oid) {
	$('#'+oid+'-user-part').parent().html(savedFeedItems[oid]);
	$('#'+oid+'-user-part').parent().removeClass('editing');
	sidebarOriginal();
	numEditing--;
}


function showAllSearchResults() {
	$('#right-panel #expanded-search-results').show();
	$('#right-panel #search-results-more').hide();
}

function addIngredient(oid) {
	resetSidebar();
	showAddIngredient(oid);
}

function closeAlert(oid) {
	$('#'+oid+'-alert').remove();
}

function renameFocus(oid) {
	$('#'+oid+'-option-1').attr('checked',true);
	$('#'+oid+'-food-part .food-title .new_keyword').focus();
}

function resetSidebar() {
	sidebarIndex = 0;
}
function sidebarOriginal() {
	sidebarIndex = 0;
	$("#right-panel").html(sidebarHistory[sidebarIndex]);
	sidebarHistory = Array();
	sidebarHistory[sidebarIndex] = $("#right-panel").html();
}
function updateSidebarHistory() {
	//update sidebar history
	sidebarIndex++;
	sidebarHistory[sidebarIndex] = $("#right-panel").html();
}
function sidebarBack() {
	sidebarHistory[sidebarIndex] = '';
	sidebarIndex--;
	$("#right-panel").html(sidebarHistory[sidebarIndex]);
	browseBrands();
	addNewBrand();
}

function updateSubmenuHistory() {
	//update sidebar history
	submenuIndex++;
	submenuHistory[submenuIndex] = $("#add-ingredients-cntnr").html();
}
function submenuBack() {
	submenuHistory[submenuIndex] = '';
	submenuIndex--;
	$("#add-ingredients-cntnr").html(submenuHistory[submenuIndex]);

	//run these functions on new sidebar content
	addIngredientSearch();
	createIngredient();
	image_upload = null;
	addNewBrand();
	browseBrands();
}


function IsNumeric(sText){
    var ValidChars = "0123456789.";
    var IsNumber=true;
    var Char;
 
    for (i = 0; i < sText.length && IsNumber == true; i++) { 
	Char = sText.charAt(i); 
	if (ValidChars.indexOf(Char) == -1) 
	{
	    IsNumber = false;
	}
    }
    return IsNumber;   
}


function roundPositive(num){
    var ret = Math.round(num);
    if(ret <= 0) {
	ret = 0;
    }
    return ret;
}

function dailyValuesUpdateCalories(){
    var gender = $("#dvcalc-gender").val();
    var currentWeight = $("#dvcalc-weight").val();
    var height = $("#dvcalc-height").val();
    var age = $("#dvcalc-age").val();
    var activityLevel = $("#dvcalc-activity-level").val();
    var desiredWeight = $("#dvcalc-desired-weight").val();
    var numWeeks = $("#dvcalc-num-weeks").val();

    //console.log("\n\n========================= NEW recommendedCals Calculation ======================");

    var bmr = 0;
    if("female" == gender){
	bmr = 665 + (4.35 * currentWeight) + (4.7 * height) - (4.7 * age);
	//console.log("FEMALE\nbmr = 665 + (4.35 * currentWeight<" + currentWeight + ">) + (4.7 * height<" + height + ">) - (4.7 * age<" + age + ">)");
    }
    else {
	bmr = 66 + (6.23 * currentWeight) + (12.7 * height) - (6.8 * age);
	//console.log("MALE\nbmr = 66 + (6.23 * currentWeight<" + currentWeight + ">) + (12.7 * height<" + height + ">) - (6.8 * age<" + age + ">)");
    }
    //console.log("bmr = " + bmr);

    //console.log("bmr = bmr<" + bmr + "> * activityLevel<" + activityLevel + ">");
    bmr = bmr * activityLevel;
    //console.log("bmr = " + bmr);

    var weightDelta = desiredWeight - currentWeight;
    //console.log("weightDelta = desiredWeight<" + desiredWeight + "> - currentWeight<" + currentWeight + ">");
    //console.log("weightDelta = " + weightDelta);

    var lbsPerWeek = weightDelta / numWeeks;
    //console.log("lbsPerWeek = weightDelta<" + weightDelta + "> / numWeeks<" + numWeeks + ">");
    //console.log("lbsPerWeek = " + lbsPerWeek);

    var changeInCaloriesPerDay = lbsPerWeek * 500;
    //console.log("changeInCaloriesPerDay = lbsPerWeek<" + lbsPerWeek + "> * 500");
    //console.log("changeInCaloriesPerDay = " + changeInCaloriesPerDay);

    var numCaloriesPerDay = roundPositive(bmr + changeInCaloriesPerDay);
    //console.log("numCaloriesPerDay = ROUND(bmr<" + bmr + "> + changeInCaloriesPerDay<" + changeInCaloriesPerDay + ">)");
    //console.log("numCaloriesPerDay = " + numCaloriesPerDay);
    
    $("#dvcalc-num-calories").val(numCaloriesPerDay);
}

function dailyValuesUpdateDailyValues(){
    var cals = $("#dvcalc-num-calories").val();
    $("#dvcalc-total-fat").text( roundPositive((cals*0.3)/9) + "g" );
    $("#dvcalc-saturated-fat").text( roundPositive((cals*0.1)/9) + "g" );
    $("#dvcalc-total-carbohydrates").text( roundPositive((cals*0.6)/4) + "g" );
    $("#dvcalc-dietary-fiber").text( roundPositive((cals/1000)*11.5) + "g" );
    $("#dvcalc-protein").text( roundPositive((cals*0.1)/4) + "g" );	        
}

function dailyValuesCalculator(){
    $('#caloric-intake-fields select').change(dailyValuesUpdateCalories);
    $('#caloric-intake-fields input').keyup(dailyValuesUpdateCalories);
    $('#caloric-intake-fields input').change(dailyValuesUpdateCalories);
    
    $('#daily-values-calculator input').keyup(dailyValuesUpdateDailyValues);
    $('#daily-values-calculator input').change(dailyValuesUpdateDailyValues);
    dailyValuesUpdateCalories();
}

