
var ing_array = [{m_ingredient:'Кальмары', 
									m_val: '500', 
									m_first_val:'500',
									m_unit:'г', 
									us_val:toDecimal('17.636980949999998'), 
									us_first_val:'17.636980949999998', 
									us_unit:'унция'}, {m_ingredient:'Куриные яйца', 
									m_val: '10', 
									m_first_val:'10',
									m_unit:'шт', 
									us_val:toDecimal('10'), 
									us_first_val:'10', 
									us_unit:'шт'}, {m_ingredient:'Крабовые палочки', 
									m_val: '150', 
									m_first_val:'150',
									m_unit:'г', 
									us_val:toDecimal('5.291094285'), 
									us_first_val:'5.291094285', 
									us_unit:'унция'}, {m_ingredient:'Икра красная', 
									m_val: '150', 
									m_first_val:'150',
									m_unit:'г', 
									us_val:toDecimal('5.291094285'), 
									us_first_val:'5.291094285', 
									us_unit:'унция'}, {m_ingredient:'Майонез', 
									m_val: '350', 
									m_first_val:'350',
									m_unit:'г', 
									us_val:toDecimal('12.345886664999998'), 
									us_first_val:'12.345886664999998', 
									us_unit:'унция'}, {m_ingredient:'Петрушка', 
									m_val: '', 
									m_first_val:'',
									m_unit:'по вкусу', 
									us_val:toDecimal('NaN'), 
									us_first_val:'NaN', 
									us_unit:'по вкусу'}, {m_ingredient:'Укроп', 
									m_val: '', 
									m_first_val:'',
									m_unit:'по вкусу', 
									us_val:toDecimal('NaN'), 
									us_first_val:'NaN', 
									us_unit:'по вкусу'}];

var units = [];
  units[0] = [];
  units[0]['root'] = 'бан';
  units[0]['us_root'] = 'бан';
  units[0]['float'] = 'ки';
  units[0]['us_float'] = 'ки';
  units[0]['five_twenty']= 'ок';
  units[0]['us_five_twenty']= 'ок';
  units[0]['one'] = 'ка';
  units[0]['us_one'] = 'ка';
  units[0]['two_four'] = 'ки';
  units[0]['us_two_four'] = 'ки';
  units[1] = [];
  units[1]['root'] = 'г';
  units[1]['us_root'] = 'унц';
  units[1]['float'] = '';
  units[1]['us_float'] = 'ии';
  units[1]['five_twenty']= '';
  units[1]['us_five_twenty']= 'ий';
  units[1]['one'] = '';
  units[1]['us_one'] = 'ия';
  units[1]['two_four'] = '';
  units[1]['us_two_four'] = 'ии';
  units[2] = [];
  units[2]['root'] = 'дол';
  units[2]['us_root'] = 'дол';
  units[2]['float'] = 'ьки';
  units[2]['us_float'] = 'ьки';
  units[2]['five_twenty']= 'ек';
  units[2]['us_five_twenty']= 'ек';
  units[2]['one'] = 'ька';
  units[2]['us_one'] = 'ька';
  units[2]['two_four'] = 'ьки';
  units[2]['us_two_four'] = 'ьки';
  units[3] = [];
  units[3]['root'] = 'зубчик';
  units[3]['us_root'] = 'зубчик';
  units[3]['float'] = 'а';
  units[3]['us_float'] = 'а';
  units[3]['five_twenty']= 'ов';
  units[3]['us_five_twenty']= 'ов';
  units[3]['one'] = '';
  units[3]['us_one'] = '';
  units[3]['two_four'] = 'а';
  units[3]['us_two_four'] = 'а';
  units[4] = [];
  units[4]['root'] = 'кап';
  units[4]['us_root'] = 'кап';
  units[4]['float'] = 'ли';
  units[4]['us_float'] = 'ли';
  units[4]['five_twenty']= 'ель';
  units[4]['us_five_twenty']= 'ель';
  units[4]['one'] = 'ля';
  units[4]['us_one'] = 'ля';
  units[4]['two_four'] = 'ли';
  units[4]['us_two_four'] = 'ли';
  units[5] = [];
  units[5]['root'] = 'кг';
  units[5]['us_root'] = 'фунт';
  units[5]['float'] = '';
  units[5]['us_float'] = 'а';
  units[5]['five_twenty']= '';
  units[5]['us_five_twenty']= 'ов';
  units[5]['one'] = '';
  units[5]['us_one'] = '';
  units[5]['two_four'] = '';
  units[5]['us_two_four'] = 'а';
  units[6] = [];
  units[6]['root'] = 'л';
  units[6]['us_root'] = 'кварт';
  units[6]['float'] = '';
  units[6]['us_float'] = 'ы';
  units[6]['five_twenty']= '';
  units[6]['us_five_twenty']= '';
  units[6]['one'] = '';
  units[6]['us_one'] = 'а';
  units[6]['two_four'] = '';
  units[6]['us_two_four'] = 'ы';
  units[7] = [];
  units[7]['root'] = 'лист';
  units[7]['us_root'] = 'лист';
  units[7]['float'] = 'а';
  units[7]['us_float'] = 'а';
  units[7]['five_twenty']= 'ов';
  units[7]['us_five_twenty']= 'ов';
  units[7]['one'] = '';
  units[7]['us_one'] = '';
  units[7]['two_four'] = 'а';
  units[7]['us_two_four'] = 'а';
  units[8] = [];
  units[8]['root'] = 'ломтик';
  units[8]['us_root'] = 'ломтик';
  units[8]['float'] = 'а';
  units[8]['us_float'] = 'а';
  units[8]['five_twenty']= 'ов';
  units[8]['us_five_twenty']= 'ов';
  units[8]['one'] = '';
  units[8]['us_one'] = '';
  units[8]['two_four'] = 'а';
  units[8]['us_two_four'] = 'а';
  units[9] = [];
  units[9]['root'] = 'мл';
  units[9]['us_root'] = 'чаш';
  units[9]['float'] = '';
  units[9]['us_float'] = 'ки';
  units[9]['five_twenty']= '';
  units[9]['us_five_twenty']= 'ек';
  units[9]['one'] = '';
  units[9]['us_one'] = 'ка';
  units[9]['two_four'] = '';
  units[9]['us_two_four'] = 'ки';
  units[10] = [];
  units[10]['root'] = 'по вкусу';
  units[10]['us_root'] = 'по вкусу';
  units[10]['float'] = '';
  units[10]['us_float'] = '';
  units[10]['five_twenty']= '';
  units[10]['us_five_twenty']= '';
  units[10]['one'] = '';
  units[10]['us_one'] = '';
  units[10]['two_four'] = '';
  units[10]['us_two_four'] = '';
  units[11] = [];
  units[11]['root'] = 'пуч';
  units[11]['us_root'] = 'пуч';
  units[11]['float'] = 'ка';
  units[11]['us_float'] = 'ка';
  units[11]['five_twenty']= 'ков';
  units[11]['us_five_twenty']= 'ков';
  units[11]['one'] = 'ок';
  units[11]['us_one'] = 'ок';
  units[11]['two_four'] = 'ка';
  units[11]['us_two_four'] = 'ка';
  units[12] = [];
  units[12]['root'] = 'ст. л.';
  units[12]['us_root'] = 'ст. л.';
  units[12]['float'] = '';
  units[12]['us_float'] = '';
  units[12]['five_twenty']= '';
  units[12]['us_five_twenty']= '';
  units[12]['one'] = '';
  units[12]['us_one'] = '';
  units[12]['two_four'] = '';
  units[12]['us_two_four'] = '';
  units[13] = [];
  units[13]['root'] = 'стакан';
  units[13]['us_root'] = 'стакан';
  units[13]['float'] = 'а';
  units[13]['us_float'] = 'а';
  units[13]['five_twenty']= 'ов';
  units[13]['us_five_twenty']= 'ов';
  units[13]['one'] = '';
  units[13]['us_one'] = '';
  units[13]['two_four'] = 'а';
  units[13]['us_two_four'] = 'а';
  units[14] = [];
  units[14]['root'] = 'ч. л.';
  units[14]['us_root'] = 'ч. л.';
  units[14]['float'] = '';
  units[14]['us_float'] = '';
  units[14]['five_twenty']= '';
  units[14]['us_five_twenty']= '';
  units[14]['one'] = '';
  units[14]['us_one'] = '';
  units[14]['two_four'] = '';
  units[14]['us_two_four'] = '';
  units[15] = [];
  units[15]['root'] = 'шт';
  units[15]['us_root'] = 'шт';
  units[15]['float'] = '';
  units[15]['us_float'] = '';
  units[15]['five_twenty']= '';
  units[15]['us_five_twenty']= '';
  units[15]['one'] = '';
  units[15]['us_one'] = '';
  units[15]['two_four'] = '';
  units[15]['us_two_four'] = '';
  units[16] = [];
  units[16]['root'] = 'щепот';
  units[16]['us_root'] = 'щепот';
  units[16]['float'] = 'ки';
  units[16]['us_float'] = 'ки';
  units[16]['five_twenty']= 'ок';
  units[16]['us_five_twenty']= 'ок';
  units[16]['one'] = 'ка';
  units[16]['us_one'] = 'ка';
  units[16]['two_four'] = 'ки';
  units[16]['us_two_four'] = 'ки';

var portion_size = 1;




function toDecimal(num)
{

	if (num.indexOf('NaN') != -1) {
		num = '';
	}
	
	if (num.indexOf('.') != -1) {
		return num.slice(0, num.indexOf('.')+3);
	}
	else {
		return num;
	}
	
}


function getRecipeUnit (p_units, p_unit, p_type)
{
	var root = p_type + 'root';
	var result = new Object ();
	result[root] = "";
	
	for(var i=0; i<p_units.length; i++) {
		if (p_unit.indexOf(p_units[i][root]) == 0 && result[root].length < p_units[i][root].length) {
			result = p_units[i];
		}
	}
	
	return result;
}


function unitas(unit, value, type)
{    
 	var result;
 	
	// дроби  
	if(value.indexOf('/') != -1 || value.indexOf('.') != -1) {
		result = getRecipeUnit (units, unit, type);
		return result[type + 'root'] + result[type + 'float'];
	}
  
	// от 5 до 20, 30, 40 и т.д.
	if((value >= 5 && value <= 20) || !(value%10)) {
		result = getRecipeUnit (units, unit, type);
		return result[type + 'root'] + result[type + 'five_twenty'];
	}
  
	value %= 10;
  
	// 1, 21, 31 и т.д
	if(!((value-1)%10) && value != 11) {
		result = getRecipeUnit (units, unit, type);
		return result[type + 'root'] + result[type + 'one'];
	}
  
	// 2-4, 22-24, 32-34 и т.д.
	if(value >= 2 && value <= 4) {
		result = getRecipeUnit (units, unit, type);
		return result[type + 'root'] + result[type + 'two_four'];
	}  
	
	// 5-9, 25-29, 35-39 и т.д.
	var result = getRecipeUnit (units, unit, type);
	return result[type + 'root'] + result[type + 'five_twenty'];
  
}


function change_system()
{
	var radioObj = $("input[@name='system1']:radio:checked");
	
	var all_params = {
		"0"	: {
			"val"		: "m_val", 
			"unit"		: "m_unit", 
			"prefix"	: ""
		},
		"1"	: {
			"val"		: "us_val", 
			"unit"		: "us_unit", 
			"prefix"	: "us_"
		}
	};
	
	var params = all_params[radioObj.val()];
	
	for (var i=0;i<ing_array.length;i++)
	{
		if( ing_array[i][params.val].indexOf('/') == -1 ) {
			$('#value_' + i).html(ing_array[i][params.val]);
		} 
		else {
		
			var delim = ing_array[i][params.val].substring(0, ing_array[i][params.val].indexOf('/'));
			var delit = ing_array[i][params.val].substring(ing_array[i][params.val].indexOf('/')+1);
		
			if(delim*1 < delit*1) {
				$('#value_' + i).html((delim%delit) + "/" + delit);
			} else {
				$('#value_' + i).html(Math.floor(delim/delit) + " " + (delim%delit) + "/" + delit);
			}
		
		}
		
		$('#unit_' + i).html(unitas(ing_array[i][params.unit], ing_array[i][params.val], params.prefix));
	}
	
}

function GCD(nums)
{
	if(!nums.length)
		return 0;
	
	for(var r, a, i = nums.length - 1, GCDNum = nums[i]; i;)
	for(a = nums[--i]; r = a % GCDNum; a = GCDNum, GCDNum = r);
	
	return GCDNum;
	
}


function recount_value()
{	
	var all_params = [
		{
			"val"		: "m_val", 
			"first_val"	: "m_first_val", 
			"prefix"	: ""
		},
		{
			"val"		: "us_val", 
			"first_val"	: "us_first_val", 
			"prefix"	: "us_"
		}
	];

	for (var i=0; i<ing_array.length; i++) {
		
		for (var p=0; p<all_params.length; p++) {
		
			var params = all_params[p];
			var val = ing_array[i][params.first_val];
			
			if (val.indexOf('/') != -1) {
			
				var perem = parseInt($('#portion_num').val()) / portion_size;
				
				var tmp = 0;
				var delit = val.substring(0, val.indexOf('/'));
				var delim = val.substring(val.indexOf('/')+1);
				
				var tmp = delit * perem;
				
				if ((tmp % delim) == 0) {
					bar = (tmp/delim).toString();
				}
				else if (GCD(tmp, delim) > 1) {
					bar = (tmp/GCD(tmp, delim)).toString() + '/' + (delim/GCD(tmp, delim)).toString();
				}
				else {
					bar = tmp.toString() + '/' + delim.toString();
				}
				
				ing_array[i][params.val] = toDecimal(bar);
			
			}
			else {
			
				var one_port = parseFloat(ing_array[i][params.first_val])/portion_size;
				var ports = parseFloat($('#portion_num').val());
				ing_array[i][params.val] = toDecimal((one_port * ports).toString());
			
			}
		}
		
	}
}


