document.write("<scr" + "ipt type='text/javascript' src='/_ssi/js/_messages.js'><\/scr" + "ipt>");

$(document).ready(function() {
	$('#bmiResults').hide();

	$('#tab-1 p.message.error').hide();	
	$('#tab-1 span.formError').hide();
	
	$('#tab-2 p.message.error').hide();
	$('#tab-2 span.formError').hide();
});

function calculateBMI(isMetric)
{
	if (isMetric == 1) {
		var weight = $('#weight').val();
		if (!weight || weight != parseFloat(weight)) {
			$('#mCalcWeight').addClass("error");
			$('#mCalcWeight span.formError').show();
		}
		else {
			$('#mCalcWeight').removeClass("error");
			$('#mCalcWeight span.formError').hide();
		}
		
		var height = $('#height').val();
		if (!height || height != parseFloat(height)) {
			$('#mCalcHeight').addClass("error");
			$('#mCalcHeight span.formError').show();
		}
		else {
			$('#mCalcHeight').removeClass("error");
			$('#mCalcHeight span.formError').hide();
		}

		var waist = parseFloat($('#mwaist').val());
//		if (!waist || waist != parseInt(waist)) {
//		    $('#mCalcWaist').addClass("error");
//		    $('#mCalcWaist span.formError').show();
//		}
//		else {
//		    $('#mCalcWaist').removeClass("error");
//		    $('#mCalcWaist span.formError').hide();
//		}

		var gender = $('#mgender').val();
		if (!gender) {
			$('#mCalcGender').addClass("error");
			$('#mCalcGender span.formError').show();
		}
		else {
			$('#mCalcGender').removeClass("error");
			$('#mCalcGender span.formError').hide();
		}
		
		if (weight && height && gender) {
			$('#tab-2 p.message.error').hide();
			
			//rFunc("/_ssi/ajax/_updateStartTarget.asp", "strMetricStart="+ weight);
			
			var bmiVal = weight / ((height/100) * (height/100));
			showMessage(bmiVal, weight, height, waist, gender, isMetric);
			SFTracker._trackPageview('/virtual/task-BMI/step-calculate/units-metric/height-'+ height +'/weight-'+ weight +'/waist-'+ waist +'/bmi-'+ bmiVal);
		}
		else {
			$('#bmiResults').hide();
			$('#tab-2 p.message.error').show();
		}
	}
	else {
		var feet = $('#feet').val();
		var inch = $('#inches').val();

		if (feet.length == 0 || inch.length == 0) {		
			$('#iCalcHeight').addClass("error");
			$('#iCalcHeight span.formError').show();
		}
		else {
			var height = parseInt(feet * 12) + parseInt(inch);

			$('#iCalcHeight').removeClass("error");
			$('#iCalcHeight span.formError').hide();
		}
			
		var stones = $('#stone').val();
		if (!stones || stones != parseInt(stones)) {
			$('#iCalcWeight').addClass("error");
			$('#iCalcWeight span.formError').show();
		}
		else {
			$('#iCalcWeight').removeClass("error");
			$('#iCalcWeight span.formError').hide();
		}

		var pounds = $('#pounds').val();
		if (!pounds && pounds != parseInt(pounds)) {
			pounds = 0;
		}
		
		var weight = parseInt(stones * 14) + parseInt(pounds);

		var waist = parseInt($('#waist').val());

//		if (!waist || waist != parseInt(waist)) {
//		    $('#iCalcWaist').addClass("error");
//		    $('#iCalcWaist span.formError').show();
//		}
//		else {
//		    $('#iCalcWaist').removeClass("error");
//		    $('#iCalcWaist span.formError').hide();
//		}

		
		var gender = $('#gender').val();
		if (!gender) {
			$('#iCalcGender').addClass("error");
			$('#iCalcGender span.formError').show();
		}
		else {
			$('#iCalcGender').removeClass("error");
			$('#iCalcGender span.formError').hide();
		}

		if (weight && height  && gender) {
			$('#tab-1 p.message.error').hide();
			
			//rFunc("/_ssi/ajax/_updateStartTarget.asp", "strStoneStart="+ stones +"&strPoundsStart="+ pounds);
				
			var bmiVal = (weight / (height * height)) * 703;
			showMessage(bmiVal, weight, height, (waist * 2.54), gender);
			SFTracker._trackPageview('/virtual/task-BMI/step-calculate/units-metric/height-' + feet + '-' + inch + '/weight-' + stones + '-' + pounds + '/waist-' + waist + '/bmi-' + bmiVal);
		}
		else {
			$('#bmiResults').hide();
			$('#tab-1 p.message.error').show();
		}
	}
}

function custRound(x, places) {
	return (Math.round(x*Math.pow(10, places)))/Math.pow(10, places)

}

function switchCalc(source) {
	if (source == 'metric')
	{
		$('errorMessages').hide();
		
		$('metriccalc').hide();
		$('imperialcalc').show();
	}
	else
	{
		$('errorMessages').hide();
		
		$('imperialcalc').hide();
		$('metriccalc').show();
		
	}
}

function showResults() {
	$('#bmiResults').hide();
	$('errorMessages').hide();
	$('#bmiResults').show();
}

function resetCalc() {
	resetBlurb();
	$('errorMessages').hide();
	$('results').hide();
	$('metriccalc').hide();
	$('imperialcalc').show();
}

function showBlurb(bmiVal, cNum, cSub) {
	cNum = parseInt(cNum) - 1;
	cSub = parseInt(cSub);
		
	$('#bmiMessage').html(bmiMessage[cNum][0][cSub]);
	$('#bmiMessageDesc').html(bmiMessage[cNum][1][cSub]);
	$('#bmiMessageC2A').html(bmiMessage[cNum][2][cSub]);
	
	rFunc("/_ssi/ajax/_updateBMIResult.asp", "strBMIResult="+ bmiVal +"&strBMIMessage="+ escape(bmiMessage[cNum][1][cSub]));
}

function calcTarget(weight, height, targetBMI, targetWeight, targetWaist, desiredWaist, isMetric) {
    var bmiC2A = $('#bmiMessageC2A').html();
    var bmiDesc = $('#bmiMessageDesc').html();

    if (desiredWaist) {
        if (isMetric == 1) {
            bmiDesc = bmiDesc.replace(/\[waist_desired\]/g, custRound(desiredWaist, 2) + 'cm');
        }
        else {
            bmiDesc = bmiDesc.replace(/\[waist_desired\]/g, custRound((desiredWaist / 2.54), 0) + '&quot;');
        }
    }
	if (targetWaist) {
		if (isMetric == 1) {
		    bmiC2A = bmiC2A.replace(/\[waist_target\]/g, custRound(targetWaist, 2) + 'cm');
		    bmiDesc = bmiDesc.replace(/\[waist_target\]/g, custRound(targetWaist, 2) + 'cm');
		}
		else {
		    bmiC2A = bmiC2A.replace(/\[waist_target\]/g, custRound((targetWaist / 2.54), 0) + '&quot;');
		    bmiDesc = bmiDesc.replace(/\[waist_target\]/g, custRound((targetWaist / 2.54), 0) + '&quot;');
		}
	}
	else {
		if (isMetric == 1) {
			var mWeight = weight;
			var mHeight = height;
		}
		else {
			var mWeight = (weight * 0.45359);
			var mHeight = (height * 2.54);
			
			if (targetWeight) {
				targetWeight = (targetWeight * 0.45359);
			}
		}
		
		if (targetWeight) {
			if (isMetric == 1) {
				targetBMI = (targetWeight / (mHeight * mHeight)) * 703;
			}
			else {
				targetBMI = (targetWeight / ((mHeight/100) * (mHeight/100)));
			}
		}
		else {
			targetWeight = targetBMI * ((mHeight/100) * (mHeight/100));
		}

		if (targetWeight > mWeight) {
			var targetWeightLoss = (targetWeight - mWeight);	
		}
		else {
			var targetWeightLoss = (mWeight - targetWeight);
		}

		if (isMetric == 1) {
		    bmiC2A = bmiC2A.replace(/\[weight_type\]/g, 'kgs');
		    bmiDesc = bmiDesc.replace(/\[weight_type\]/g, 'kgs');
		}
		else {
			targetWeightLoss = (targetWeightLoss / 0.45359);
			bmiC2A = bmiC2A.replace(/\[weight_type\]/g, 'lbs');
			bmiDesc = bmiDesc.replace(/\[weight_type\]/g, 'lbs');
		}
		
		if (targetWeightLoss < 0.5) {
			targetWeightLoss = 1;
		}
		
		bmiC2A = bmiC2A.replace(/\[weight_2_loose\]/g,custRound(targetWeightLoss,0));
		bmiC2A = bmiC2A.replace(/\[bmi_target\]/g,custRound(targetBMI,2));
		bmiC2A = bmiC2A.replace(/\[metric\]/g, isMetric);
		bmiDesc = bmiDesc.replace(/\[weight_2_loose\]/g, custRound(targetWeightLoss, 0));
		bmiDesc = bmiDesc.replace(/\[bmi_target\]/g, custRound(targetBMI, 2));
		bmiDesc = bmiDesc.replace(/\[metric\]/g, isMetric);

		if (isMetric == 1) {
			bmiC2A = bmiC2A.replace(/\[weekly_weight_loss\]/g,'0.5kg');
			bmiC2A = bmiC2A.replace(/\[weeks_target\]/g,custRound((targetWeightLoss/0.5),0));
			bmiC2A = bmiC2A.replace(/\[weight_target\]/g, custRound(targetWeight, 2));
			bmiDesc = bmiDesc.replace(/\[weekly_weight_loss\]/g, '0.5kg');
			bmiDesc = bmiDesc.replace(/\[weeks_target\]/g, custRound((targetWeightLoss / 0.5), 0));
			bmiDesc = bmiDesc.replace(/\[weight_target\]/g, custRound(targetWeight, 2));
		}
		else {	
			bmiC2A = bmiC2A.replace(/\[weekly_weight_loss\]/g,'1-2lbs');
			bmiC2A = bmiC2A.replace(/\[weeks_target\]/g,custRound(targetWeightLoss,0));
			bmiC2A = bmiC2A.replace(/\[weight_target\]/g, custRound(targetWeight, 2));
			bmiDesc = bmiDesc.replace(/\[weekly_weight_loss\]/g, '1-2lbs');
			bmiDesc = bmiDesc.replace(/\[weeks_target\]/g, custRound(targetWeightLoss, 0));
			bmiDesc = bmiDesc.replace(/\[weight_target\]/g, custRound(targetWeight, 2));
		}
	}

	$('#bmiMessageC2A').html(bmiC2A);
	$('#bmiMessageDesc').html(bmiDesc);
}

function setStart(weight) {
	rFunc("/_ssi/ajax/_updateStartTarget.asp", "strMetricStart="+ weight);
}

function setTarget(weight) {
	rFunc("/_ssi/ajax/_updateStartTarget.asp", "strMetricTarget="+ weight);
}

function showMessage(bmiVal, weight, height, waist, gender, isMetric) {
	var msg, sub, targetBMI, targetWeight, targetWaist;
	
	msg = null;
	sub = null;
	
	targetBMI = null;
	targetWeight = null;
	targetWaist = null;
	var desiredWaist = 1;
	
	if (!waist) {
		/* BMI Ranges */
		if (bmiVal < 18.5) { msg=1;sub=2;targetBMI=18.5; }
		if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg=2;sub=2; }
		if ((bmiVal >= 25) && (bmiVal < 30)) { msg=3;sub=2;targetBMI=24.5; }
		if ((bmiVal >= 30) && (bmiVal < 35)) { msg=4;sub=2;targetWeight=(weight*0.95); }
		if ((bmiVal >= 35) && (bmiVal < 40)) { msg=5;sub=2;targetWeight=(weight*0.95); }
		if (bmiVal >= 40) { msg=6;sub=2;targetWeight=(weight*0.95); }
	}
	else {
	    if (gender == 'm') {
	        desiredWaist = 93;
		    /* males */
		    if (waist < 68.5) {
		        /* BMI Ranges */
		        if (bmiVal < 18.5) { msg = 1; sub = 0; targetBMI = 18.5; targetWeight = (weight * 0.95); }
		        if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg = 2; sub = 0; }
		        if ((bmiVal >= 25) && (bmiVal < 30)) { msg = 3; sub = 0; targetBMI = 24.5; }
		        if ((bmiVal >= 30) && (bmiVal < 35)) { msg = 4; sub = 0; targetWeight = (weight * 0.95); }
		        if ((bmiVal >= 35) && (bmiVal < 40)) { msg = 5; sub = 0; targetWeight = (weight * 0.95); }
		        if (bmiVal >= 40) { msg = 6; sub = 0; targetWeight = (weight * 0.95); }
		    }
			else if (waist >= 68.5 && waist < 94) {
				/* BMI Ranges */
				if (bmiVal < 18.5) { msg=1;sub=1;targetBMI=18.5; }
				if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg=2;sub=1; }
				if ((bmiVal >= 25) && (bmiVal < 30)) { msg=3;sub=1;targetBMI=24.5; }
				if ((bmiVal >= 30) && (bmiVal < 35)) { msg=4;sub=1;targetWeight=(weight*0.95); }
				if ((bmiVal >= 35) && (bmiVal < 40)) { msg=5;sub=1;targetWeight=(weight*0.95); }
				if (bmiVal >= 40) { msg=6;sub=1;targetWeight=(weight*0.95); }
			}
			else {
				/* BMI Ranges */
				if (bmiVal < 18.5) { msg=1;sub=2;targetBMI=18.5; }
				if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg=2;sub=2;targetWaist=(waist-93); }
				if ((bmiVal >= 25) && (bmiVal < 30)) { msg=3;sub=2;targetBMI=24.5; }
				if ((bmiVal >= 30) && (bmiVal < 35)) { msg=4;sub=2;targetWeight=(weight*0.95); }
				if ((bmiVal >= 35) && (bmiVal < 40)) { msg=5;sub=2;targetWeight=(weight*0.95); }
				if (bmiVal >= 40) { msg=6;sub=2;targetWeight=(weight*0.95); }
			}

		}
		else {
			/* females */
			desiredWaist = 80;
			if( isMetric )
			{
			  desiredWaist = 80;
			} else {
			  desiredWaist = 82;
	        }
	        if (waist < 55.9) {
	            /* BMI Ranges */
	            if (bmiVal < 18.5) { msg = 1; sub = 0; targetBMI = 18.5; }
	            if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg = 2; sub = 0; }
	            if ((bmiVal >= 25) && (bmiVal < 30)) { msg = 3; sub = 0; targetBMI = 24.5; }
	            if ((bmiVal >= 30) && (bmiVal < 35)) { msg = 4; sub = 0; targetWeight = (weight * 0.95); }
	            if ((bmiVal >= 35) && (bmiVal < 40)) { msg = 5; sub = 0; targetWeight = (weight * 0.95); }
	            if (bmiVal >= 40) { msg = 6; sub = 0; targetWeight = (weight * 0.95); }
	        }
			else if (waist >= 55.9 && waist < desiredWaist) {
				/* BMI Ranges */
				if (bmiVal < 18.5) { msg=1;sub=1;targetBMI=18.5; }
				if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg=2;sub=1; }
				if ((bmiVal >= 25) && (bmiVal < 30)) { msg=3;sub=1;targetBMI=24.5; }
				if ((bmiVal >= 30) && (bmiVal < 35)) { msg=4;sub=1;targetWeight=(weight*0.95); }
				if ((bmiVal >= 35) && (bmiVal < 40)) { msg=5;sub=1;targetWeight=(weight*0.95); }
				if (bmiVal >= 40) { msg=6;sub=1;targetWeight=(weight*0.95); }
			}
			else {
				/* BMI Ranges */
				if (bmiVal < 18.5) { msg=1;sub=2;targetBMI=18.5; }
				if ((bmiVal >= 18.5) && (bmiVal < 25)) { msg=2;sub=2;targetWaist=(waist-(desiredWaist-1)); }
				if ((bmiVal >= 25) && (bmiVal < 30)) { msg=3;sub=2;targetBMI=24.5; }
				if ((bmiVal >= 30) && (bmiVal < 35)) { msg=4;sub=2;targetWeight=(weight*0.95); }
				if ((bmiVal >= 35) && (bmiVal < 40)) { msg=5;sub=2;targetWeight=(weight*0.95); }
				if (bmiVal >= 40) { msg=6;sub=2;targetWeight=(weight*0.95); }
			}
		}
	}
	
	showBlurb(bmiVal, msg, sub);
	if (targetBMI || targetWeight || targetWaist || desiredWaist) {
		calcTarget(weight, height, targetBMI, targetWeight, targetWaist, desiredWaist, isMetric);
	}
	
	$('#bmiVal').html(custRound(bmiVal, 2));
	$('#bmiResults').show();
}

