function OpenEditFood(entryid)
{
	var wnd;
	wnd = window.open('/food/edit_entry/' + entryid, 'edit_food_entry', 'width=305,height=230,resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no');
	wnd.focus();
	return false;
}

function OpenEditExercise(entryid)
{
	var wnd;
	wnd = window.open('/exercise/edit_entry/' + entryid, 'edit_exercise_entry', 'width=305,height=230,resizable=no,scrollbars=no,menubar=no,toolbar=no,directories=no,location=no,status=no');
	wnd.focus();
	return false;
}

function CheckNumeric(e, elementid)
{
	strWork = '0123456789\b\t\f\n\r';
	blnValidChar = false;					// Valid character flag

	if(window.event) {
		key = window.event.keyCode; 
	}
	else if(e.which) {
		// netscape
		key = e.which; 
	}
	else {
		// no event, so pass through
		return true;
	}
	if(!blnValidChar)
		for(i=0;i < strWork.length;i++)
			if(key == strWork.charCodeAt(i) || key == 46 || (key >= 37 && key <= 40) || (key >= 96 && key <= 105)) {  // allow delete key and arrow keys also
				blnValidChar = true;
				break;
			}
	document.getElementById(elementid).focus();
	return blnValidChar;
}

function UpdateCalories(index)
{
	var minutes = document.getElementById("favorites_"+index+"_quantity").value;
	var mets = document.getElementById("favorites_"+index+"_mets").value;
	var original_minutes = document.getElementById("favorites_"+index+"_original_minutes").value;
	var original_calories = document.getElementById("favorites_"+index+"_original_calories").value;
	var caloriesburned = mets * $('current_weight').value * (minutes / 60);
	if (minutes != original_minutes)
		document.getElementById("favorites_"+index+"_calories").value = Math.round(caloriesburned);
	else
		document.getElementById("favorites_"+index+"_calories").value = Math.round(original_calories);
}

function RefreshNutrients()
{
	var protein = (document.getElementById('nutrient_goal_protein_ratio').value - 0) / 100;
	var fat = (document.getElementById('nutrient_goal_fat_ratio').value - 0) / 100;
	var carb = (document.getElementById('nutrient_goal_carb_ratio').value - 0) / 100;
	var calorietarget = document.getElementById('nutrient_goal_calories').value - 0;	

	var gramsprotein = Math.round(calorietarget * protein / 4);
	var gramsfat = Math.round(calorietarget * fat / 9);
	var gramscarbs = Math.round(calorietarget * carb / 4);

	document.getElementById('protein_target').innerHTML = String(gramsprotein);
	document.getElementById('fat_target').innerHTML = String(gramsfat);
	document.getElementById('carb_target').innerHTML = String(gramscarbs);
	return;
}

function AdjustProfile(bmr)
{
	bmr = Math.round(bmr / 10) * 10;
	var calorietarget = document.getElementById('nutrient_goal_calories').value - 0;	
	var caloriedeficit = Math.round((calorietarget - bmr) * -1);
	var weightloss = Math.round(caloriedeficit / 50) / 10;
	if (Math.floor(weightloss) == weightloss)
		weightloss += '.0';
	
	document.getElementById('calorie_target').innerHTML = String(calorietarget);
	document.getElementById('calorie_deficit').innerHTML = String(caloriedeficit);
	document.getElementById('weight_loss').innerHTML = String(weightloss);
}


function ProteinAdjust()
{
	var protein = document.getElementById('nutrient_goal_protein_ratio').value - 0;
	var fat = document.getElementById('nutrient_goal_fat_ratio').value - 0;
	var carb = document.getElementById('nutrient_goal_carb_ratio').value - 0;

	var total = protein + fat + carb;
	if (total != 100) {
		if (protein + carb < 100) {
			fat = 100 - protein - carb; 
		}
		else {
			fat = 5;
			carb = 100 - protein - fat;
		} 
	}

	document.getElementById('nutrient_goal_carb_ratio').value = carb;
	document.getElementById('nutrient_goal_fat_ratio').value = fat;
	RefreshNutrients();
}

function FatAdjust()
{
	var protein = document.getElementById('nutrient_goal_protein_ratio').value - 0;
	var fat = document.getElementById('nutrient_goal_fat_ratio').value - 0;
	var carb = document.getElementById('nutrient_goal_carb_ratio').value - 0;

	var total = protein + fat + carb;
	if (total != 100) {
		if (fat + carb < 100) {
			protein = 100 - fat - carb; 
		}
		else {
			protein = 5;
			carb = 100 - fat - protein;
		} 
	}

	document.getElementById('nutrient_goal_carb_ratio').value = carb;
	document.getElementById('nutrient_goal_protein_ratio').value = protein;
	RefreshNutrients();
}

function CarbAdjust()
{
	var protein = document.getElementById('nutrient_goal_protein_ratio').value - 0;
	var fat = document.getElementById('nutrient_goal_fat_ratio').value - 0;
	var carb = document.getElementById('nutrient_goal_carb_ratio').value - 0;

	var total = protein + fat + carb;
	if (total != 100) {
		if ((carb + fat) < 100) {
			
			protein = 100 - fat - carb; 
		}
		else {
			protein = 5;
			fat = 100 - protein - carb;
		} 
	}
	document.getElementById('nutrient_goal_protein_ratio').value = protein;
	document.getElementById('nutrient_goal_fat_ratio').value = fat;
	RefreshNutrients();
}

function CaloriesAdjust(bmr)
{
	RefreshNutrients();
	AdjustProfile(bmr);
}

function showMemberSubmitted()
{
//	food_name = $('which_food').options[$('which_food').selectedIndex].text;
//	if (food_name.charAt(0) == '*') {
//		Dialog.alert( {url: '/food/member_submitted/', options: {method: 'get'}},  {windowParameters: {className: 'alphacube', height: '410', width: '525', recenterAuto: false}, okLabel: "Close"} ); 
//	}
}

function toggleUnits(select_id)
{
	new_index = $(select_id).selectedIndex;
	$('preference_weight_unit').selectedIndex = new_index;
	if($('preference_goal_weight_unit')) {
		$('preference_goal_weight_unit').selectedIndex = new_index;
	}
	$('preference_feet_unit').selectedIndex = new_index;
	$('preference_inches_unit').selectedIndex = new_index;
}

function toggleUnitsNew()
{
	var new_unit = "";
	var weight_unit = "";
	var feet_unit = "";
	var inches_unit = "";
	var units_toggle = "";
	if ($('preference_weight_unit').value == 'pounds') {
		new_unit = "kilograms";
		weight_unit = "kg";
		feet_unit = "meters";
		inches_unit = "cm";
		units_toggle = "switch to english (lbs)";
	} else {
		new_unit = "pounds";
		weight_unit = "lbs";
		feet_unit = "feet";
		inches_unit = "inches";
		units_toggle = "switch to metric (kg)";
	}
	$('preference_weight_unit').value = new_unit;
	$$('.weight_unit').each(function(element) { element.innerHTML = weight_unit; });
	$('feet_unit').innerHTML = feet_unit;
	$('inches_unit').innerHTML = inches_unit;
	$('units_toggle').innerHTML = units_toggle;
}

function beforeBMICalc() {
	if (isNaN($('weight').value))
	{
		alert("Your current weight must be numeric.");
		$('weight').focus();
		return (false);
	}
	if ($('weight').value == "")
	{
		alert("Please enter your current weight.");
		$('weight').focus();
		return (false);
	}

	if (isNaN($('feet').value))
	{
		alert("Your height must be numeric.");
		$('feet').focus();
		return (false);
	}
	
	if ($('feet').value == "")
	{
		alert("Please enter your height.");
		$('feet').focus();
		return (false);
	}

	if (isNaN($('inches').value))
	{
		alert("Your height must be numeric.");
		$('inches').focus();
		return (false);
	}

	if ($('inches').value == "")
	{
		alert("Please enter your height.");
		$('inches').focus();
		return (false);
	}
	$('output').style.display = 'none';
	$('inputs').style.display = 'none';
	return (true);
}

function beforeBMRCalc() {
	if (isNaN($('weight').value))
	{
		alert("Your current weight must be numeric.");
		$('weight').focus();
		return (false);
	}
	if ($('weight').value == "")
	{
		alert("Please enter your current weight.");
		$('weight').focus();
		return (false);
	}

	if (isNaN($('feet').value))
	{
		alert("Your height must be numeric.");
		$('feet').focus();
		return (false);
	}
	
	if ($('feet').value == "")
	{
		alert("Please enter your height.");
		$('feet').focus();
		return (false);
	}

	if (isNaN($('inches').value))
	{
		alert("Your height must be numeric.");
		$('inches').focus();
		return (false);
	}

	if ($('inches').value == "")
	{
		alert("Please enter your height.");
		$('inches').focus();
		return (false);
	}
	if (isNaN($('age').value))
	{
		alert("Your age must be numeric.");
		$('age').focus();
		return (false);
	}

	if ($('age').value == "")
	{
		alert("Please enter your age.");
		$('age').focus();
		return (false);
	}
	if (!$('sex_m').checked && !$('sex_f').checked)
	{
		alert("Please tell us your gender.");
		return (false);
	}
	$('output').style.display = 'none';
	$('inputs').style.display = 'none';
	return (true);
}

function UpdateCaloriesBurned() {
	if ($('preference_weight_unit') && ($('preference_weight_unit').selectedIndex == 1)) {
		$('cresults').innerHTML=(Math.round($('mets').value*($('minutes').value / 60)*($('weight').value))) + '';
	}
	else {
		$('cresults').innerHTML=(Math.round($('mets').value*($('minutes').value / 60)*($('weight').value / 2.2046))) + '';
	}	
}

function UpdateCaloriesBurnedMine() {
	if ($('weight_unit') && ($('weight_unit').value == "kilograms")) {
		$('exercise_calories').value=(Math.round($('mets').value*($('exercise_quantity').value / 60)*($('exercise_display_weight').value)));
	}
	else {
		$('exercise_calories').value=(Math.round($('mets').value*($('exercise_quantity').value / 60)*($('exercise_display_weight').value / 2.2046)));
	}	
}

function insertAtCursor(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}

function add_smiley(smiley_name, field_name) {
	// calling the function
	insertAtCursor($(field_name), ":"+smiley_name+": ");
	$(field_name).focus();
}

function toggle_smileys() {
	$('emoticons').toggle();
}

function update_check_boxes(elementid) {
	var check_box = document.getElementById(elementid);
	if (elementid.indexOf("ANY") != -1) {  // user has checked ANY box
		if (check_box.checked) {
			var root_name = elementid.slice(0,elementid.indexOf("ANY"));
			uncheck_all(root_name);
			check_box.checked = true;
		}
	}
	else { 
		if (check_box.checked) {  // user has checked a non-ANY box, so make sure ANY box is unchecked
      // quick hack to handle 2-digit checkbox indexes
      for(var i = 0; i < 2; i++) {
        var any_id = elementid.slice(0,elementid.length - 1 - i) + "ANY";
        var any_box = document.getElementById(any_id);
        if(any_box && any_box.checked)
          any_box.checked = false;
      }
		}
	}
}
function MarkAsChecked(field_name) {
	checked_id = field_name.replace(/description$/,"checked");
	var check_box = document.getElementById(checked_id);
	check_box.checked = true;
}
function toggleShow(id) {
	var answer = document.getElementById("answer_"+id);
	var question = document.getElementById("question_"+id);
	if (answer.style.display == "none") {
		answer.style.display = "block";
		question.style.display = "none";
	}
	else {
		answer.style.display = "none";
		question.style.display = "block";
	}
}
function getRadioValue(element_name) {
	var val = "";
	$$('input[type=radio]').each(function(r) {
		if (r.name == element_name && r.checked) {
			val = r.value;
		}
	});
	return(val);
}
function breakout_of_frame()
{
  if (top.location != location) {
    top.location.href = document.location.href ;
  }
}
function uncheck_all(pattern, form) {
	var frm = document.forms[form];
	var element_id = "";
	for(var i=0;i<frm.elements.length;i++) {
		if(frm.elements[i].type == "checkbox") {
			element_id = frm.elements[i].id;
			if(element_id.match(pattern))
				frm.elements[i].checked = false;
		}
	}
}

function check_all(pattern, form) {
	var frm = document.forms[form];
	var element_id = "";
	for(var i=0;i<frm.elements.length;i++) {
		if(frm.elements[i].type == "checkbox") {
			element_id = frm.elements[i].id;
			if(element_id.match(pattern))
				frm.elements[i].checked = true;
		}
	}
}

function toggleSelectAll(pattern, select_all_id, form) {
	var select_all = $(select_all_id);
	if (select_all.checked) {
		check_all(pattern, form);
	}
	else {
		uncheck_all(pattern, form);
	}
}

function changeMeasure(value) {
	$('measure_left').innerHTML = value;
	$('measure_right').innerHTML = value;
	$('measure').innerHTML = value;
}

function changeScale(option, ruler_start, ruler_end) {
	if (option == 'true') {
		$('scale_left').innerHTML = '0<span id="measure_left">' + $('measure').innerHTML + '</span>';
		$('scale_center').innerHTML = roundOne((ruler_start - ruler_end) / 2);
		$('scale_right').innerHTML = roundOne((ruler_start - ruler_end)) + '<span id="measure_right">' + $('measure').innerHTML + '</span>';
	}
	else {
		$('scale_left').innerHTML = ruler_start + '<span id="measure_left">' + $('measure').innerHTML + '</span>';
		$('scale_center').innerHTML = roundOne((ruler_start + ruler_end) / 2);
		$('scale_right').innerHTML = ruler_end + '<span id="measure_right">' + $('measure').innerHTML + '</span>';		
	}
}

function roundOne(value) {
	var result = Math.round(value*10)/10;
	if (Math.round(result)*1.0 == result) {
		return Math.round(result);
	}
	else {
		return result;
	}
}

function changeWords(words) {
	$('words').innerHTML = words;
}

function drawOptions(ruler_start, ruler_end) {
	measure = getRadioValue('ticker[measure]');
  changeMeasure(measure);
	scale = getRadioValue('ticker[weight_lost]');
	changeScale(scale, ruler_start, ruler_end);
	words = getRadioValue('ticker[words]');
	changeWords(words);
}

function fixPng(img)
{
		var image = img.getStyle("backgroundImage");
		if (image.match(/^url\(["']?(.*\.png)["']?\)$/i)) {
			image = RegExp.$1;
			var repeat = (img.getStyle('backgroundRepeat') == 'no-repeat' ? 'crop' : 'scale')
			img.setStyle({ backgroundImage: "none", filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=" + repeat + ", src='" + image + "')"});
//			var position = img.getStyle("position");
//			if (position != 'absolute' && position != 'relative')
//				img.style.position = 'relative';
		}
}

function showLightbox(hgt, wdth, src) {
	
	var isIE = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) < 8;

	if ($('fancy_overlay')) {
		
		$('fancy_overlay').show();

		new Ajax.Updater('fancy_content', src, {
			asynchronous:true, evalScripts:true, method:'get',
			onComplete:function(request) { $('fancy_outer').appear({duration: 0.5}); }
		});
		
		$('fancy_outer').style.width = wdth + 'px';
		$('fancy_outer').style.marginLeft = (wdth / 2 * -1) + 'px';	
		
	} else {
		
		var html = '';

		html += '<div id="fancy_overlay"></div>';

		html += '<div id="fancy_wrap">';

		html += '<div class="fancy_loading" id="fancy_loading"><div></div></div>';

		html += '<div id="fancy_outer" style="left: 50%;">';

		html += '<div id="fancy_inner">';

		html += '<div id="fancy_close" style="display:block;"></div>';

		html +=  '<div id="fancy_bg"><div class="fancy_bg fancy_bg_n"></div><div class="fancy_bg fancy_bg_ne"></div><div class="fancy_bg fancy_bg_e"></div><div class="fancy_bg fancy_bg_se"></div><div class="fancy_bg fancy_bg_s"></div><div class="fancy_bg fancy_bg_sw"></div><div class="fancy_bg fancy_bg_w"></div><div class="fancy_bg fancy_bg_nw"></div></div>';

		html += '<div id="fancy_content"></div>';

		html += '</div>';

		html += '</div>';

		html += '</div>';

		$$('body')[0].insert(html);		
		
		$('fancy_overlay').style.filter = "Alpha(Opacity=80)";
		$('fancy_overlay').style.opacity = 0.8;
		$('fancy_overlay').style.display = 'block';

		$('fancy_outer').style.display = 'none';
		$('fancy_outer').style.height = hgt + 'px';
		$('fancy_outer').style.width = wdth + 'px';
		$('fancy_outer').style.marginLeft = (wdth / 2 * -1) + 'px';	
		$('fancy_outer').style.top = (650 - hgt) / 2 + 'px';

		if (isIE) {
			$("fancy_inner").insert({top: '<iframe class="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>'});
			$$("#fancy_close, .fancy_bg, .fancy_title, .fancy_ico").each(function(png){fixPng(png)});
		}

		$('fancy_close').onclick = new Function("hideLightbox()");

		new Ajax.Updater('fancy_content', src, {
			asynchronous:true, evalScripts:true, method: 'get',
			onComplete:function(request) { $('fancy_outer').appear({duration: 0.5}); }
		});

	}
	
	if (isIE) {
		$$('embed, object, select').each(function(element) { if(element) {element.style.visibility = 'hidden'; }});
	}

}

function hideLightbox() {
	var isIE = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5)) < 8;
	$('fancy_overlay').hide();
	$('fancy_outer').hide()
	if (isIE) {
		$$('embed, object, select').each(function(element) { if(element) {element.style.visibility = 'visible'; }});
	}

}

function showLogin() {
	
	showLightbox(310, 380, '/account/new_login');
		
}

function showEditExercise(entryid) {
	
	showLightbox(260,300, '/exercise/edit_entry_new/' + entryid);
	
}

function showEditFood(entryid) {
	
	showLightbox(260,340, '/food/edit_entry_new/' + entryid);
	
}