// JavaScript Document

// MAIN Calculator functions
var error;

function calculate(type)
{
	if (type == 'bmi')
	{
		clear(type);
		error = checkFields(type);
		if ( error != '' )
		{
			writeError(type,error);
			return false;
		}
		else
		{
			var height = parseFloat($('#bmi_height').val())/100;
			var weight = parseFloat($('#bmi_weight').val());
			var bmi_result = Math.round(weight*100 / Math.pow(height,2) );
			var bmi_result = bmi_result / 100;
			var bmi_text;
			
			if (bmi_result < 18.5) bmi_text = 'Túlzottan sovány';
			else if (18.5 < bmi_result && bmi_result < 24.9) bmi_text = 'Ideális (egészséges) testsúlyú';
			else if (24.9 < bmi_result && bmi_result < 29.9)	bmi_text = 'Túlsúlyos';
			else if (bmi_result > 29.9) bmi_text = 'Veszélyesen túlsúlyos / elhízott';
			else writeError('bmi','Hibás érték!');

			$('#bmi .calculated').text(bmi_result);
			$('#bmi .resultSet em').text(bmi_text);
			$('#bmi .resultSet').fadeIn('normal');
			
			if ( $('#acs .resultSet').css('display') == 'block' ) {
				calculate('acs');
			}
			if ( $('#nesz .resultSet').css('display') == 'block' ) {
				calculate('nesz');
			}
		}
	}
	
	if (type == 'acs')
	{
		clear(type);
		error = checkFields(type);
		if ( error != '' )
		{
			writeError(type,error);
			return false;
		}
		else
		{
			var sex = $('input[name=sex]:checked').val();
			var age = parseInt($('#age option:selected').val());
			var weight = parseFloat($('#bmi_weight').val());
			var acs_result;

			if ( sex == 'male' )
			{
				switch(age){
					case 1: acs_result = 60.9*weight-54; break;
					case 2: acs_result = 22.7*weight+495; break;
					case 3: acs_result = 17.5*weight+651; break;
					case 4: acs_result = 15.3*weight+679; break;
					case 5: acs_result = 11.6*weight+879; break;
					case 6: acs_result = 13.5*weight+487; break;
				}
			}
			else
			{
				switch(age){
					case 1: acs_result = 60*weight-51; break;
					case 2: acs_result = 22.5*weight+499; break;
					case 3: acs_result = 12.2*weight+746; break;
					case 4: acs_result = 14.7*weight+496; break;
					case 5: acs_result = 8.7*weight+829; break;
					case 6: acs_result = 10.5*weight+596; break;
				}
			}

			acs_result = Math.round(acs_result * 100)/100;
			$('#acs .calculated').text(acs_result);
			$('#acs .resultSet').fadeIn('normal');

			if ( $('#nesz .resultSet').css('display') == 'block' ) {
				calculate('nesz');
			}
		}
	}
	
	if (type == 'nesz')
	{
		clear(type);
		error = checkFields(type);
		if ( error != '' )
		{
			writeError(type,error);
			return false;
		}
		else
		{
			var sport = parseInt($('input[name=sport]:checked').val());
			var work = parseInt($('input[name=work]:checked').val());
			var sex = $('input[name=sex]:checked').val();
			var acs = parseFloat($('#acs .calculated').text());
			var nesz_multi, nesz_result;

			if ( sex == 'male' )
				if ( sport == 0 )
					if ( work == 0 ) nesz_multi = 1.4;
					else if ( work == 1 ) nesz_multi = 1.6;
					else nesz_multi = 1.7;
				else if ( sport == 1 )
					if ( work == 0 ) nesz_multi = 1.5;
					else if ( work == 1 ) nesz_multi = 1.7;
					else nesz_multi = 1.8;
				else
					if ( work == 0 ) nesz_multi = 1.6;
					else if ( work == 1 ) nesz_multi = 1.8;
					else nesz_multi = 1.9;
			else
				if ( sport == 0 )
					if ( work == 0 ) nesz_multi = 1.4;
					else if ( work == 1 ) nesz_multi = 1.5;
					else nesz_multi = 1.5;
				else if ( sport == 1 )
					if ( work == 0 ) nesz_multi = 1.5;
					else if ( work == 1 ) nesz_multi = 1.6;
					else nesz_multi = 1.6;
				else
					if ( work == 0 ) nesz_multi = 1.6;
					else if ( work == 1 ) nesz_multi = 1.7;
					else nesz_multi = 1.7;
			
			nesz_result = Math.round((nesz_multi * acs * 100))/100;

			$('#nesz .calculated').text(nesz_result);
			$('#nesz .resultSet').fadeIn('normal');
		}
	}
	
}

function clear(type)
{
	$('#' + type + ' .error p').css('visibility','hidden');
	if ( $('#' + type + ' .resultSet').css('display') == 'block' )
	{
		$('#' + type + ' .resultSet').fadeOut().children('.calculated').text('');
	}
}

function writeError(type,value)
{
	$('#' + type + ' .error p').text(value).css('visibility','visible');
}

function checkFields(type)
{
	// regexp = [0-9]+(?:[.,][0-9]+)?
	if ( type == 'bmi' ) {
		var height = $('#bmi_height').val();
		var weight = $('#bmi_weight').val();

		if ( height == '' || weight == '' )
			return "Kérjük töltse ki mindkét mezőt!";
		else if ( !/^[0-9]+(?:[.,][0-9]+)?$/.test(height) || !/^[0-9]+(?:[.,][0-9]+)?$/.test(weight) )
			return "Kérjük a mezőkbe csak számokat írjon!";
		else
			return '';
	}
	
	if ( type == 'acs' ) {
		if ( $('#bmi .calculated').text() == '' )
			return "Az Alapanyagcsere meghatározásához szükség van a BMI értékre!";
		else if ( $('#age option:selected').val() == '0' )
			return "Kérjük válassza ki életkorát a listából!";
		else
			return '';
	}

	if ( type == 'nesz' ) {
		if ( $('#bmi .calculated').text() == '' || $('#acs .calculated').text() == '' )
			return "A számításhoz szükség van az Alapanyagcsere és BMI értékekre!";
		else
			return '';
	}

	else return false;
}

$(document).ready( function(){
	$('button').click( function(e){ e.preventDefault(); });
});