www/js/prod_new.js

Wed, 29 Jan 2020 13:26:01 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 29 Jan 2020 13:26:01 +0100
changeset 602
10b61aacb1c1
parent 533
be8691b7d634
child 615
9034e65b0d7a
permissions
-rw-r--r--

New products field log_ispindel. Add check for ispindel log to crontasks.php Added log_ispindel to prod_edit, pprod_divide, prod_new and prod_duplicate. Renamed some log_fermentation vergisting names into klimaatkast.

/*****************************************************************************
 * Copyright (C) 2018-2020
 *
 * 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() {

 // 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,
   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,
   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);
  }
 });

 var recipe_type = 2,
 style_type = 0,
 tun_material = 0,
 wizard = (function() { // Creating wizard module

  //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(),
    m = d.getMonth() + 1,
    b = d.getFullYear() + '-',
    newrow, data;
    if (m < 10)
     b = b + '0';
    b = b + m + '-';
    if (d.getDate() < 10)
     b = b + '0';
    b = b + d.getDate();
    newrow = {
     record: -1,
     name: $('#name').val(),
     code: $('#code').val(),
     birth: b,
     stage: 0,
     notes: $('#notes').val(),
     log_brew: 0,
     log_fermentation: 0,
     log_ispindel: 0,
     inventory_reduced: 0,
     locked: 0,
     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_mash_efficiency: 0,
     brew_sparge_ph: 0.0,
     brew_sparge_temperature: 85,
     brew_sparge_est: 0,
     brew_preboil_volume: 0,
     brew_preboil_sg: 0,
     brew_preboil_ph: 0.0,
     brew_preboil_efficiency: 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: 1,
     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: 1,
     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,
     wg_amount: parseFloat($('#eq_mash_volume').jqxNumberInput('decimal')),
     wg_calcium: 0,
     wg_sulfate: 0,
     wg_chloride: 0,
     wg_sodium: 0,
     wg_magnesium: 0,
     wg_total_alkalinity: 0,
     wg_ph: 7.0,
     wb_calcium: 0,
     wb_sulfate: 0,
     wb_sodium: 0,
     wb_chloride: 0,
     wb_magnesium: 0,
     wb_total_alkalinity: 0,
     wb_ph: 0,
     starter_enable: 0,
     divide_type: 0,
     divide_size: 0,
     divide_factor: 1,
     divide_parts: 0,
     divide_part: 0
    };
    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) {
      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, template: 'success', width: 150});
    $('#nextButtonEq').jqxButton({ theme: theme, width: 150});
    $('#backButtonEq').jqxButton({ theme: theme, template: 'success', width: 150});
    $('#nextButtonCompleted').jqxButton({ theme: theme, template: 'success', width: 150});
    $('#backButtonCompleted').jqxButton({ theme: theme, template: 'success', 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');
    $('#nextButtonBase').jqxButton({ template: 'success' });
    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');
    $('#nextButtonStyle').jqxButton({ template: 'success' });
    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');
    $('#nextButtonEq').jqxButton({ template: 'success' });
    return true;
   }
  };
 } ());

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

mercurial