// JavaScript Document
var number = /^[0-9]{0,3}\.?[0-9]*$/;

$(document).ready( function(){
	$("#bmiIndicator").css("visibility", "hidden");
	
	$("#goalSlidder").draggable({
		axis: 			'x',
		containment: 	'parent',
		stop: 			pointerToBMI,
		drag: 			pointerToBMI
	});
	
	$("input[name='weight']").change(function() {
		if (okay()) {
			displayPointer();
		} else {
			hidePointer();
		}
	});
	
	$("input[name='feet']").change(function() {
		if (okay()) {
			displayPointer();
		} else {
			hidePointer();	
		}
	});
	
	$("input[name='inches']").change(function() {
		if (okay()) {
			displayPointer();
		} else {
			hidePointer();	
		}
	});
	
	$("input[name='bmiGoal']").change(function() {
		if ($("input[name='bmiGoal']").val() != "" && number.test($("input[name='bmiGoal']").val())) {
			var goal = $("input[name='bmiGoal']").val() * 1;
			var percent = 100 * ((goal - $(".continuum0 span").text()) / ($(".continuum12 span").text()-$(".continuum0 span").text()));
			percent = (percent < 0) ? -1 : percent;
			percent = (percent > 100) ? 101 : percent;
			$("#goalSlidder").css("left", percent+"%");
			$("#goalSlidder").find("span").text(goal.toFixed(1));
			if (okay()) {
				displayPointer();
			}
		} else {
			$("span#weightGoal").html("&nbsp;");
			$("span#difference").html("&nbsp;");
			$("input[name='bmiGoal']").val("")
			$("#goalSlidder").find("span").html("&nbsp;");
			$("#goalSlidder").css("left", "0px");
		}
	});
});

function okay() {
	var okay = true;
	
	if (!number.test($("input[name='weight']").val()) | $("input[name='weight']").val() == "") {
		$("input[name='weight']").val("");
		okay = false;
	} 
	if ($("input[name='feet']").val() >= 10 | !number.test($("input[name='feet']").val()) | $("input[name='feet']").val() == "") {
		$("input[name='feet']").val("");
		okay = false;
	} 
	if ($("input[name='inches']").val() >= 12 | !number.test($("input[name='inches']").val()) | $("input[name='inches']").val() == "") {
		$("input[name='inches']").val("");
		okay = false;
	}
	
	//check for age and sex and upload information
	return okay;
}

function displayPointer() {
	var weight = $("input[name='weight']").val() * 1;
	var feet =  $("input[name='feet']").val() * 1;
	var inches = $("input[name='inches']").val() * 1;
	var height = (feet * 12) + inches;
	
	var bmi = (703 * weight) / (height * height);
	if (bmi) {
		$("span#bmi").text(bmi.toFixed(1));
		//calculate where the indicator needs to be
		var location = 100 * ((bmi - $(".continuum0 span").text()) / ($(".continuum12 span").text()-$(".continuum0 span").text()));
		location = (location < 0) ? -1 : location;
		location = (location > 100) ? 101 : location;
		$("#bmiIndicator").css("left", location+"%")
		
		//display the pointer
		$("#bmiIndicator").css("visibility", "visible").find("span").text(bmi.toFixed(1));
	}
	
	if ($("input[name='bmiGoal']").val() != "" & number.test($("input[name='bmiGoal']").val())) {
		//calcualte goals
		var bmiGoal = $("input[name='bmiGoal']").val();
		if (bmi) {
			var weightGoal = Math.ceil((height * height * bmiGoal) / 703);
			$("span#weightGoal").text(weightGoal);
			var difference = weight - weightGoal;
			if (difference >= 0) {
				$("em#gainLoss").text("Loss");
			} else {
				difference *= -1;
				$("em#gainLoss").text("Gain");
			}
			$("span#difference").text(difference);
		}
	}
}

function hidePointer() {
	//clear calculated fields
	$("span#bmi").html("&nbsp;");
	$("span#weightGoal").html("&nbsp;");
	$("span#difference").html("&nbsp;");
	
	//hide the pointer
	$("#bmiIndicator").css("visibility", "hidden");
}

// Take the slider value and put it into the goal field
function pointerToBMI() {
	var bmi = (parseInt($("#goalSlidder").css("left")) / parseInt($("#goalSlidder").parent().css("width"))) * ($(".continuum12 span").text()-$(".continuum0 span").text()) + 10;
	$("#goalSlidder").find("span").text(bmi.toFixed(1));
	$("input[name='bmiGoal']").val(bmi.toFixed(1));
	displayPointer();
}
