www/js/prod_new.js

Sun, 25 Aug 2019 13:22:00 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 25 Aug 2019 13:22:00 +0200
changeset 458
47b592993dd5
parent 432
99dcd8488b62
child 459
53fafe474742
permissions
-rw-r--r--

Version 0.3.15. Implemented final pH during packaging. Updated prod_new, prod_duplicate, prod_edit, rec_toproduct for this new field and several other fields added in previous versions.

/*****************************************************************************
 * Copyright (C) 2018-2019
 *
 * Michiel Broek <mbroek at mbse dot eu>
 *
 * This file is part of BMS
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2, or (at your option) any
 * later version.
 *
 * BrewCloud is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with ThermFerm; see the file COPYING.  If not, write to the Free
 * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 *****************************************************************************/


$(document).ready(function () {

	var recipe_type = 2;
	var style_type = 0;
	var tun_material = 0;

	// Tab 1, base
	$("#name").jqxTooltip({ content: 'De naam voor dit brouw project.' });
	$("#name").jqxInput({ theme: theme, width: 640, height: 23 });
	$("#code").jqxTooltip({ content: 'Het unieke code nummer van dit brouw project.' });
	$("#code").jqxInput({ theme: theme, width: 100, height: 23 });
	$("#notes").jqxTooltip({ content: 'De uitgebreide opmerkingen over dit project.' });
	$("#notes").jqxInput({ theme: theme, width: 960, height: 200 });
	$("#type").jqxDropDownList({
		theme: theme,
		source: RecipeTypeAdapter,
		valueMember: 'id',
		displayMember: 'nl',
		width: 180,
		height: 23,
		autoDropDownHeight: true
	});
	$("#type").jqxDropDownList('selectItem', 2);
	$("#type").on('select', function (event) {
		if (event.args) {
			recipe_type = event.args.index;
		}
	});

	// Tab 2, style
	$("#st_name").jqxTooltip({ content: 'De bierstijl naam voor dit recept.'});
	$("#st_name").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#st_category").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie.'});
	$("#st_category").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#st_category_number").jqxTooltip({ content: 'De Amerikaanse bierstijl categorie sub nummer.'});
	$("#st_category_number").jqxInput({ theme: theme, width: 70, height: 23 });
	$("#st_letter").jqxTooltip({ content: 'De bierstijl letter voor dit recept.'});
	$("#st_letter").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#st_guide").jqxTooltip({ content: 'De bierstijl gids voor dit recept.'});
	$("#st_guide").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#st_notes").jqxInput({ theme: theme, width: 800, height: 100 });
	$("#st_type").jqxTooltip({ content: 'Het bierstijl type.'});
	$("#st_type").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#st_og_min").jqxTooltip({ content: 'Het minimum begin SG voor deze bierstijl.'});
	$("#st_og_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 3, readOnly: true });
	$("#st_og_max").jqxTooltip({ content: 'Het maximum begin SG voor deze bierstijl.'});
	$("#st_og_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 3, readOnly: true });
	$("#st_fg_min").jqxTooltip({ content: 'Het minimum eind SG voor deze bierstijl.'});
	$("#st_fg_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 3, readOnly: true });
	$("#st_fg_max").jqxTooltip({ content: 'Het maximum eind SG voor deze bierstijl.'});
	$("#st_fg_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 3, readOnly: true });
	$("#st_ibu_min").jqxTooltip({ content: 'De minimum bitterheid voor deze bierstijl.'});
	$("#st_ibu_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 0, readOnly: true });
	$("#st_ibu_max").jqxTooltip({ content: 'De maximum bitterheid voor deze bierstijl.'});
	$("#st_ibu_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 0, readOnly: true });
	$("#st_color_min").jqxTooltip({ content: 'De minimum kleur voor deze bierstijl.'});
	$("#st_color_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 0, readOnly: true });
	$("#st_color_max").jqxTooltip({ content: 'De maximum kleur voor deze bierstijl.'});
	$("#st_color_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 0, readOnly: true });
	$("#st_carb_min").jqxTooltip({ content: 'Het minimum koolzuur volume voor deze bierstijl.'});
	$("#st_carb_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 1, readOnly: true });
	$("#st_carb_max").jqxTooltip({ content: 'Het maximum koolzuur volume voor deze bierstijl.'});
	$("#st_carb_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 1, readOnly: true });
	$("#st_abv_min").jqxTooltip({ content: 'Het minimum alcohol volume % voor deze bierstijl.'});
	$("#st_abv_min").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 1, readOnly: true });
	$("#st_abv_max").jqxTooltip({ content: 'Het maximum alcohol volume % voor deze bierstijl.'});
	$("#st_abv_max").jqxNumberInput({ inputMode: 'simple', theme: theme, width: 90, height: 23, decimalDigits: 1, readOnly: true });
	$("#st_profile").jqxInput({ theme: theme, width: 800, height: 48 });
	$("#st_ingredients").jqxInput({ theme: theme, width: 800, height: 23 });
	$("#st_examples").jqxInput({ theme: theme, width: 800, height: 48 });
	$("#styleSelect").jqxDropDownList({
		placeHolder: "Kies bierstijl:",
		theme: theme,
		source: styleslist,
		displayMember: "name",
		width: 250,
		height: 27,
		dropDownWidth: 500,
		dropDownHeight: 500,
		renderer: function (index, label, value) {
			var datarecord = styleslist.records[index];
			return datarecord.style_guide + " " + datarecord.style_letter+ " " + datarecord.name;
		}
	});
	$("#styleSelect").on('select', function (event) {
		if (event.args) {
			var index = event.args.index;
			var datarecord = styleslist.records[index];
			$("#st_name").val(datarecord.name);
			$("#st_category").val(datarecord.category);
			$("#st_category_number").val(datarecord.category_number);
			$("#st_letter").val(datarecord.style_letter);
			$("#st_guide").val(datarecord.style_guide);
			style_type = datarecord.type;
			$("#st_type").val(StyleTypeData[datarecord.type].nl);
			$("#st_og_min").val(datarecord.og_min);
			$("#st_og_max").val(datarecord.og_max);
			$("#st_fg_min").val(datarecord.fg_min);
			$("#st_fg_max").val(datarecord.fg_max);
			$("#st_ibu_min").val(datarecord.ibu_min);
			$("#st_ibu_max").val(datarecord.ibu_max);
			$("#st_color_min").val(datarecord.color_min);
			$("#st_color_max").val(datarecord.color_max);
			$("#st_carb_min").val(datarecord.carb_min);
			$("#st_carb_max").val(datarecord.carb_max);
			$("#st_abv_min").val(datarecord.abv_min);
			$("#st_abv_max").val(datarecord.abv_max);
			$("#st_notes").val(datarecord.notes);
			$("#st_profile").val(datarecord.profile);
			$("#st_ingredients").val(datarecord.ingredients);
			$("#st_examples").val(datarecord.examples);
		}
	});

	// Tab 3, equipment
	$("#eq_name").jqxTooltip({ content: 'De naam van deze brouw apparatuur.' });
	$("#eq_name").jqxInput({ theme: theme, width: 250, height: 23 });
	$("#eq_calc_boil_volume").jqxCheckBox({ theme: theme, width: 120, height: 23, disabled: true });
	$("#eq_boil_size").jqxTooltip({ content: 'Normaal kook volume in liters' });
	$("#eq_boil_size").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_batch_size").jqxTooltip({ content: 'Berekende batch grootte in liters aan het eind van de kook.' });
	$("#eq_batch_size").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_tun_volume").jqxTooltip({ content: 'Maisch ketel volume.' });
	$("#eq_tun_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_tun_weight").jqxTooltip({ content: 'Maisch ketel gewicht.' });
	$("#eq_tun_weight").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_tun_height").jqxTooltip({ content: 'Maisch ketel hoogte.' });
	$("#eq_tun_height").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_tun_material").jqxTooltip({ content: 'Maisch ketel materiaal.' });
	$("#eq_tun_material").jqxInput({ theme: theme, width: 180, height: 23 });
	$("#eq_tun_specific_heat").jqxTooltip({ content: 'Maisch ketel warmte geleiding.' });
	$("#eq_tun_specific_heat").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 3 });
	$("#eq_top_up_water").jqxTooltip({ content: 'Extra water in het gistvat.' });
	$("#eq_top_up_water").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_trub_chiller_loss").jqxTooltip({ content: 'Standaard verlies bij het overbrengen naar het gistvat.' });
	$("#eq_trub_chiller_loss").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_evap_rate").jqxTooltip({ content: 'Verdamping in liters per uur.' });
	$("#eq_evap_rate").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 2,  });
	$("#eq_boil_time").jqxTooltip({ content: 'Normale kooktijd in minuten.' });
	$("#eq_boil_time").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 0 });
	$("#eq_top_up_kettle").jqxTooltip({ content: 'Extra water toevoegen tijdens de kook.' });
	$("#eq_top_up_kettle").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_hop_utilization").jqxTooltip({ content: '100% voor kleine installaties, hoger voor grote brouwerijen.' });
	$("#eq_hop_utilization").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 0 });
	$("#eq_notes").jqxTooltip({ content: 'Opmerkingen over deze apparatuur.' });
	$("#eq_notes").jqxInput({ theme: theme, width: 960, height: 100 });
	$("#eq_lauter_volume").jqxTooltip({ content: 'Filterkuip volume.' });
	$("#eq_lauter_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_lauter_height").jqxTooltip({ content: 'Filterkuip hoogte.' });
	$("#eq_lauter_height").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_lauter_deadspace").jqxTooltip({ content: 'Filterkuip verlies in liters.' });
	$("#eq_lauter_deadspace").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_kettle_volume").jqxTooltip({ content: 'Kook ketel volume in liters.' });
	$("#eq_kettle_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_kettle_height").jqxTooltip({ content: 'Kook ketel hoogte in cm.' });
	$("#eq_kettle_height").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_mash_volume").jqxTooltip({ content: 'Maisch water voor de eerste stap.' });
	$("#eq_mash_volume").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_mash_max").jqxTooltip({ content: 'De maximale moutstort in Kg.' });
	$("#eq_mash_max").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#eq_efficiency").jqxTooltip({ content: 'Gemiddeld brouwzaal rendement.' });
	$("#eq_efficiency").jqxNumberInput({ inputMode: 'simple', readOnly: true, theme: theme, width: 90, height: 23, decimalDigits: 1 });
	$("#equipmentSelect").jqxDropDownList({
		placeHolder: "Kies apparatuur:",
		theme: theme,
		source: equipmentlist,
		displayMember: "name",
		width: 250,
		height: 27,
		dropDownWidth: 300,
		renderer: function (index, label, value) {
		var datarecord = equipmentlist.records[index];
			return datarecord.batch_size + " liter " + datarecord.name;
		}
	});
	$("#equipmentSelect").on('select', function (event) {
		if (event.args) {
			var index = event.args.index;
			var datarecord = equipmentlist.records[index];
			$("#eq_name").val(datarecord.name);
			$("#eq_boil_size").val(datarecord.boil_size);
			$("#eq_batch_size").val(datarecord.batch_size);
			$("#eq_tun_volume").val(datarecord.tun_volume);
			$("#eq_tun_weight").val(datarecord.tun_weight);
			$("#eq_tun_specific_heat").val(datarecord.tun_specific_heat);
			tun_material = datarecord.tun_material;
			$("#eq_tun_material").val(MaterialData[datarecord.tun_material].nl);
			$("#eq_tun_height").val(datarecord.tun_height);
			$("#eq_top_up_water").val(datarecord.top_up_water);
			$("#eq_trub_chiller_loss").val(datarecord.trub_chiller_loss);
			$("#eq_evap_rate").val(datarecord.evap_rate);
			$("#eq_boil_time").val(datarecord.boil_time);
			$("#eq_calc_boil_volume").val(datarecord.calc_boil_volume);
			$("#eq_top_up_kettle").val(datarecord.top_up_kettle);
			$("#eq_hop_utilization").val(datarecord.hop_utilization);
			$("#eq_notes").val(datarecord.notes);
			$("#eq_lauter_volume").val(datarecord.lauter_volume);
			$("#eq_lauter_height").val(datarecord.lauter_height);
			$("#eq_lauter_deadspace").val(datarecord.lauter_deadspace);
			$("#eq_kettle_volume").val(datarecord.kettle_volume);
			$("#eq_kettle_height").val(datarecord.kettle_height);
			$("#eq_mash_volume").val(datarecord.mash_volume);
			$("#eq_mash_max").val(datarecord.mash_max);
			$("#eq_efficiency").val(datarecord.efficiency);
		}
	});

	//Creating wizard module
	var wizard = (function () {

		//Adding event listeners
		var _addHandlers = function () {
			$('#name').on('change', function (event) { wizard.validate(true); });
			$('#code').on('change', function (event) { wizard.validate(true); });
			$('#type').on('change', function (event) { wizard.validate(true); });
			$('#styleSelect').on('change', function (event) { wizard.validate(true); });
			$('#equipmentSelect').on('change', function (event) { wizard.validate(true); });
			$('#nextButtonCompleted').click(function () {
				var d = new Date();
				var m = d.getMonth() + 1;
				var b = d.getFullYear() + '-';
				if (m < 10)
					b = b + '0';
				b = b + m + '-';
				if (d.getDate() < 10)
					b = b + '0';
				b = b + d.getDate();
				var newrow = {
					record: -1,
					name: $("#name").val(),
					code: $("#code").val(),
					birth: b,
					stage: 0,
					notes: $("#notes").val(),
					log_brew: false,
					log_fermentation: false,
					inventory_reduced: false,
					locked: false,
					eq_name: $("#eq_name").val(),
					eq_boil_size: parseFloat($("#eq_boil_size").jqxNumberInput('decimal')),
					eq_batch_size: parseFloat($("#eq_batch_size").jqxNumberInput('decimal')),
					eq_tun_volume: parseFloat($("#eq_tun_volume").jqxNumberInput('decimal')),
					eq_tun_weight: parseFloat($("#eq_tun_weight").jqxNumberInput('decimal')),
					eq_tun_specific_heat: parseFloat($("#eq_tun_specific_heat").jqxNumberInput('decimal')),
					eq_tun_material: tun_material,
					eq_tun_height: parseFloat($("#eq_tun_height").jqxNumberInput('decimal')) / 100,
					eq_top_up_water: parseFloat($("#eq_top_up_water").jqxNumberInput('decimal')),
					eq_trub_chiller_loss: parseFloat($("#eq_trub_chiller_loss").jqxNumberInput('decimal')),
					eq_evap_rate: parseFloat($("#eq_evap_rate").jqxNumberInput('decimal')),
					eq_boil_time: parseFloat($("#eq_boil_time").jqxNumberInput('decimal')),
					eq_calc_boil_volume: $("#eq_calc_boil_volume").val(),
					eq_top_up_kettle: parseFloat($("#eq_top_up_kettle").jqxNumberInput('decimal')),
					eq_hop_utilization: parseFloat($("#eq_hop_utilization").jqxNumberInput('decimal')),
					eq_notes: $("#eq_notes").val(),
					eq_lauter_volume: parseFloat($("#eq_lauter_volume").jqxNumberInput('decimal')),
					eq_lauter_height: parseFloat($("#eq_lauter_height").jqxNumberInput('decimal')) / 100,
					eq_lauter_deadspace: parseFloat($("#eq_lauter_deadspace").jqxNumberInput('decimal')),
					eq_kettle_volume: parseFloat($("#eq_kettle_volume").jqxNumberInput('decimal')),
					eq_kettle_height: parseFloat($("#eq_kettle_height").jqxNumberInput('decimal')) / 100,
					eq_mash_volume: parseFloat($("#eq_mash_volume").jqxNumberInput('decimal')),
					eq_mash_max: parseFloat($("#eq_mash_max").jqxNumberInput('decimal')),
					eq_efficiency: parseFloat($("#eq_efficiency").jqxNumberInput('decimal')),
					brew_date_start: '',
					brew_mash_ph: 0.0,
					brew_mash_sg: 1.000,
					brew_sparge_ph: 0.0,
					brew_preboil_volume: 0,
					brew_preboil_sg: 0,
					brew_preboil_ph: 0.0,
					brew_aboil_volume: 0,
					brew_aboil_sg: 0,
					brew_aboil_ph: 0.0,
					brew_aboil_efficiency: 0,
					brew_cooling_method: 0,
					brew_cooling_time: 0,
					brew_cooling_to: 20,
					brew_whirlpool9: 0,
					brew_whirlpool7: 0,
					brew_whirlpool6: 0,
					brew_whirlpool2: 0,
					brew_fermenter_volume: parseFloat($("#eq_batch_size").jqxNumberInput('decimal')) -
							parseFloat($("#eq_trub_chiller_loss").jqxNumberInput('decimal')) +
							parseFloat($("#eq_top_up_water").jqxNumberInput('decimal')),
					brew_fermenter_extrawater: parseFloat($("#eq_top_up_water").jqxNumberInput('decimal')),
					brew_fermenter_tcloss: parseFloat($("#eq_trub_chiller_loss").jqxNumberInput('decimal')),
					brew_aeration_time: 0,
					brew_aeration_speed: 0,
					brew_aeration_type: 0,
					brew_fermenter_sg: 0,
					brew_fermenter_ibu: 0,
					brew_fermenter_color: 0,
					brew_date_end: '',
					og: 0,
					fg: 0,
					primary_start_temp: 0,
					primary_max_temp: 0,
					primary_end_temp: 0,
					primary_end_sg: 0,
					primary_end_date: '',
					secondary_temp: 0,
					secondary_end_date: '',
					tertiary_temp: 0,
					package_date: '',
					package_volume: 0,
					package_infuse_amount: 0,
					package_infuse_abv: 0,
					package_infuse_notes: '',
					package_abv: 0,
					package_ph: 0,
					bottle_amount: 0,
					bottle_carbonation: 0,
					bottle_priming_water: 0,
					bottle_priming_amount: 0,
					bottle_carbonation_temp: 23,
					keg_amount: 0,
					keg_carbonation: 0,
					keg_priming_water: 0,
					keg_priming_amount: 0,
					keg_carbonation_temp: 23,
					keg_forced_carb: false,
					keg_pressure: 0,
					taste_notes: '',
					taste_rate: 0,
					taste_date: '',
					taste_color: '',
					taste_transparency: '',
					taste_head: '',
					taste_aroma: '',
					taste_taste: '',
					taste_mouthfeel: '',
					taste_aftertaste: '',
					st_name: $('#st_name').val(),
					st_letter: $('#st_letter').val(),
					st_guide: $('#st_guide').val(),
					st_type: style_type,
					st_category: $('#st_category').val(),
					st_category_number: parseFloat($("#st_category_number").jqxNumberInput('decimal')),
					st_og_min: parseFloat($("#st_og_min").jqxNumberInput('decimal')),
					st_og_max: parseFloat($("#st_og_max").jqxNumberInput('decimal')),
					st_fg_min: parseFloat($("#st_fg_min").jqxNumberInput('decimal')),
					st_fg_max: parseFloat($("#st_fg_max").jqxNumberInput('decimal')),
					st_ibu_min: parseFloat($("#st_ibu_min").jqxNumberInput('decimal')),
					st_ibu_max: parseFloat($("#st_ibu_max").jqxNumberInput('decimal')),
					st_color_min: parseFloat($("#st_color_min").jqxNumberInput('decimal')),
					st_color_max: parseFloat($("#st_color_max").jqxNumberInput('decimal')),
					st_carb_min: parseFloat($("#st_carb_min").jqxNumberInput('decimal')),
					st_carb_max: parseFloat($("#st_carb_max").jqxNumberInput('decimal')),
					st_abv_min: parseFloat($("#st_abv_min").jqxNumberInput('decimal')),
					st_abv_max: parseFloat($("#st_abv_max").jqxNumberInput('decimal')),
					type: recipe_type,
					batch_size: parseFloat($("#eq_batch_size").jqxNumberInput('decimal')),
					boil_size: parseFloat($("#eq_boil_size").jqxNumberInput('decimal')),
					boil_time: parseFloat($("#eq_boil_time").jqxNumberInput('decimal')),
					efficiency: parseFloat($("#eq_efficiency").jqxNumberInput('decimal')),
					est_og: 0.000,
					est_fg: 0.000,
					est_color: 0,
					est_abv: 0.0,
					est_carb: 0.0,
					color_method: 0,
					est_ibu: 0,
					ibu_method: 0,
					mash_name: "",
					mash_ph: 5.4,
					sparge_temp: 85.0,
					sparge_volume: parseFloat($("#eq_boil_size").jqxNumberInput('decimal')) / 2,
					sparge_ph: 5.8,
					sparge_source: 0,
					sparge_acid_type: 0,
					sparge_acid_perc: 80,
					sparge_acid_amount: 0,
					calc_acid: true,
					w1_name: 'Tap water',
					w1_amount: parseFloat($("#eq_mash_volume").jqxNumberInput('decimal')),
					w1_calcium: 0,
					w1_sulfate: 0,
					w1_chloride: 0,
					w1_sodium: 0,
					w1_magnesium: 0,
					w1_total_alkalinity: 0,
					w1_ph: 7.0,
					w1_cost: 0.0,
					wa_acid_name: 0,        // Lactic acid
					wa_acid_perc: 80,
					wa_base_name: 0

				};
				var data = "insert=true&return=" + my_return + "&" + $.param(newrow);
				$.ajax({
					dataType: 'json',
					url: "includes/db_product.php",
					cache: false,
					data: data,
					type: "POST",
					success: function (data, status, xhr) {
						// update command is executed.
						window.location.href = my_return;
					},
					error: function(jqXHR, textStatus, errorThrown) {
					}
				});
			});
			$('.nextButton').click(function () {
				wizard.validate(true);
				$('#jqxTabs').jqxTabs('next');
			});
			$('.backButton').click(function () {
				wizard.validate(true);
				$('#jqxTabs').jqxTabs('previous');
			});
		};

		return {
			//Initializing the wizzard - creating all elements, adding event handlers and starting the validation
			init: function () {
				$('#jqxTabs').jqxTabs({
					theme: theme,
					height: 630,
					width: 1280,
					autoHeight: false,
					position: 'top',
					keyboardNavigation: false
				});
				$('#nextButtonBase').jqxButton({ theme: theme, width: 150 });
				$('#nextButtonStyle').jqxButton({ theme: theme, width: 150});
				$('#backButtonStyle').jqxButton({ theme: theme, width: 150});
				$('#nextButtonEq').jqxButton({ theme: theme, width: 150});
				$('#backButtonEq').jqxButton({ theme: theme, width: 150});
				$('#nextButtonCompleted').jqxButton({ theme: theme, width: 150});
				$('#backButtonCompleted').jqxButton({ theme: theme, width: 150});
				_addHandlers();
				this.validate();
				this.showHint('Validation hints.');
			},

			//Validating all wizard tabs
			validate: function (notify) {
				if (!this.firstTab(notify)) {
					$('#jqxTabs').jqxTabs('disableAt', 1);
					$('#jqxTabs').jqxTabs('disableAt', 2);
					$('#jqxTabs').jqxTabs('disableAt', 3);
					return;
				} else {
					$('#jqxTabs').jqxTabs('enableAt', 1);
				}
				if (!this.secondTab(notify)) {
					$('#jqxTabs').jqxTabs('disableAt', 2);
					$('#jqxTabs').jqxTabs('disableAt', 3);
					return;
				} else {
					$('#jqxTabs').jqxTabs('enableAt', 2);
				}
				if (!this.thirdTab(notify)) {
					$('#jqxTabs').jqxTabs('disableAt', 3);
					return;
				} else {
					$('#jqxTabs').jqxTabs('enableAt', 3);
				}
			},

			//Displaying message to the user
			showHint: function (message, selector) {
				if (typeof selector === 'undefined') {
					selector = '.hint';
				}
				if (message === '') {
					message = 'Ok, je mag doorgaan.';
				}
				$(selector).html('<strong>' + message + '</strong>');
			},

			//Validating the first tab
			firstTab: function (notify) {
				var name = $('#name').val(),
				    code = $('#code').val(),
				    message = '';
				if (name.length < 3) {
					message += 'Je moet een brouw project naam invullen. <br />';
				}
				if (code.length < 3) {
					message += 'Je moet een brouw project code invullen. <br />';
				}
				// Check if code already exists.
				if (message !== '') {
					if (notify) {
						this.showHint(message, '#hintBase');
					}
					return false;
				}
				this.showHint('Ok, je mag doorgaan.', '#hintBase');
				return true;
			},

			//Validating the second tab
			secondTab: function (notify) {
				var stylesel = $('#styleSelect').val(),
				    message = '';
				if (stylesel.length < 3) {
					message += 'Je moet een bierstijl kiezen. <br />';
				}
				if (message !== '') {
					if (notify) {
						this.showHint(message, '#hintStyle');
					}
					return false;
				}
				this.showHint('Ok, je mag doorgaan.', '#hintStyle');
				return true;
			},

			//Validating the third tab
			thirdTab: function (notify) {
				var equipsel = $('#equipmentSelect').val(),
				    message = '';
				if (equipsel.length < 3) {
					message += 'Je moet een brouw installatie kiezen. <br />';
				}
				if (message !== '') {
					if (notify) {
						this.showHint(message, '#hintEq');
					}
					return false;
				}
				this.showHint('Ok, je mag doorgaan.', '#hintEq');
				return true;
			}
		}
	} ());

	//Initializing the wizard
	wizard.init();
});

mercurial