var randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
var belegabrechnenaktiv = false;
var grabatt = 0;
var grabatteur = 0;
var lkaddr = '0';
var waehrung = 'EUR';
var zahlungselzwang = false;
var kassiererId = 0;
var grabattSaved = 0;
var steuerfrei = false;
var ustid = '';
var saveCust = false;
var logouttimer = null;
var logouttimerabschluss = null;

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

function calcrueckgeld() {
  var isTip = !!$('#tip:visible').length;

  var rueckgeld = '';
  if(isTip) {
    var betrag2 = $('#betrag').val().replace(',', '.');
    var tip = $('#tip').val().replace(',', '.');
    if (!isNaN(betrag2) && !isNaN(tip)) {
      rueckgeld = (parseFloat(tip) + parseFloat(betrag2)).toFixed(2);
      if (rueckgeld < 0 || isNaN(rueckgeld)) {
        rueckgeld = '';
      } else {
        rueckgeld = rueckgeld.replace('.', ',');
      }
      $('#zahlbetrag').val(rueckgeld);
    }
  }
  else {
    var betrag = $('#zahlbetrag').val().replace(',', '.');
    var gezahlt = $('#gezahlt').val().replace(',', '.');

    if (!isNaN(betrag) && !isNaN(gezahlt)) {
      rueckgeld = (parseFloat(gezahlt) - parseFloat(betrag)).toFixed(2);
    }
    if (rueckgeld < 0 || isNaN(rueckgeld)) {
      rueckgeld = '';
    } else {
      rueckgeld = rueckgeld.replace('.', ',');
    }
    $('#rueckgeld').val(rueckgeld);
  }
}

function kontoauswahl() {
  $('#kontoauswahldiv').dialog('close');
  var wert = $('#kontoauswahlwert').val();
  var grund = $('#kontoauswahlgrund').val();
  var typ = $('#kontoauswahltyp').val();
  kontoauswahlbuchen(wert,grund,typ);
}

function zvtcheckConnection()
{
  var zvtConnectionOk = false;
  $.ajax({
    url: 'index.php?module=pos&action=list&cmd=checkconnection',
    type: 'POST',
    dataType: 'json',
    async:false,
    data: {
      uid: Math.floor((Math.random() * 90000000) + 10000000)
    },
    success: function (jdata) {
      zvtConnectionOk = jdata.status;
      if(typeof jdata.message != 'undefined') {
        alert(jdata.message);
      }
    }
  });

  return zvtConnectionOk;
}

function zvtsend()
{
  var ptype = $('input[name=ptype]:checked').val();
  var zahlbetrag = parseFloat($('#zahlbetrag').val().replace(',', '.'));
  var intervalzvt = setInterval(function(){
    $.ajax({
      url: 'index.php?module=pos&action=list&cmd=getpaymentstatus&uid=',
      type: 'POST',
      dataType: 'json',
      data: {
      },
      success: function (jdata) {
        if(typeof jdata.intermediatestatus != 'undefined') {
          $('#zvtinfo').html(jdata.intermediatestatus);
        }
      }
    });
  },1000);
  if(zahlbetrag > 0 && (ptype === 'ec' || ptype === 'kredit')) {
    $('#zvtinfo').html('');

    $.ajax({
      url: 'index.php?module=pos&action=list&cmd=updatetotals&uid=',
      type: 'POST',
      dataType: 'json',
      data: {total: zahlbetrag, uid: Math.floor((Math.random() * 90000000) + 10000000)},
      success: function (jdata) {
        $('#zvtinfo').html('');
        if(intervalzvt) {
          clearInterval(intervalzvt);
        }
      }
    });
  }
}

function finsale_click()
{
  var logouttimeabschluss = parseInt($('#logoutkas').data('logouttimeabschluss'));

  var ktype = $('input[name=ktype]:checked').val();
  var ptype = $('input[name=ptype]:checked').val();

  var totalAmount = $('#sutotal').text().replace(',', '.');

  totalAmount = parseFloat(totalAmount);
  if (totalAmount < 0) {
    alert('Die Gesamtsumme darf nicht kleiner als 0,00 EUR sein.');
    return false;
  }

  if ( ktype === 'sk' && $('#adresse').val().length == 0 ) {
    $("#skempty").dialog('open');
    return false;
  }
  else if ( ktype === 'sk' && $('#adresse').val().length > 0 && !checkStammkunde($('#adresse').val(), kassiererId, totalAmount)) {
    alert('Stammkunde nicht korrekt.');
    return false;
  }
  else if(ktype === 'lk' && !checkLaufkundschaft(kassiererId)) {
    alert('Es ist keine Adresse als Laufkundschaft eingetragen.');
    return false;
  }
  else if(ktype === 'lk' && $('#loadlauf').data('checkamountthreshold') == '1' && totalAmount >= 200) {
    alert('Bei Summen größer als 200 EUR muss eine Kundenadresse angegeben werden');
    return false;
  }
  if(ptype === 'ec' || ptype === 'kredit') {
    if($('tr.zvtrow').length) {
      $('#zvtinfo').html('');
      $('tr.zvtrow').show();
    }
    /*$.ajax({
      url: 'index.php?module=pos&action=list&cmd=updatetotals&uid=',
      type: 'POST',
      dataType: 'json',
      data: {total: totalAmount,uid:Math.floor((Math.random() * 90000000) + 10000000)},
      success: function (jdata) {

      }
    });*/
  }
  else {
    if($('tr.zvtrow').length) {
      $('tr.zvtrow').hide();
    }
  }
  if((ktype==='nk' && !$("#t_name").html()) || $('#wk > tbody > tr').length == 0) {
    $("#emptywarn").dialog('open');
  }
  else if(zahlungselzwang && !$('#payment input[name=ptype]:checked').val()) {
    $('#zahlwarn').dialog('open');
  }
  else {
    $("#gezahlt").val('');
    $("#rueckgeld").val('');
    $('#tip').val('0');
    $("#finconf").dialog('open');

    //$.post( "index.php?module=pos&action=display", { total: $('#sutotal').html() } ); 

    $('#zahlbetrag').val($('#sutotal').html());
    if(ptype==='bar')
    {
      $('tr.trbar').css('display','');
      $('tr.trec').css('display','none');
      $('table.numblock').css('display','');
      $('#gezahlt').focus();
    } else {
      if(ptype === 'ec' || ptype === 'kredit') {
        $('table.numblock').css('display','');
        $('tr.trec').css('display','');
        $('#tip').focus();
        $('#betrag').val($('#sutotal').html());
      }
      else {
        $('table.numblock').css('display','none');
        $('#gezahlt').focus();
      }
      $('tr.trbar').css('display','none');



      var btn = $("#finconf").next().find('button').first().next();
      if(btn !== null)
      {
        btn.focus();
        setTimeout(function(){btn.focus();},50);
        $("#finconf").parent().find('*').on('keypress',function(event){
          if (event.which == 13) {
            $("#finconfconf").dialog('close');
            $('#artikelnummerprojekt').focus();
          }
        });
      }
    }
  }
  return false;
}

function kontoauswahlbuchen(wert,grund,typ) {
  if(typ === 'entnahme')
  {
    if(!grund) {
      $('#entnahme').prop('checked', false);
      alert('Sie müssen einen Grund eingeben. Entnahme wurde nicht gebucht.');
      return;
    }
    randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
    var storeobj = {};
    storeobj['kasid'] = $('#tabs-1').data('on');

    storeobj['addr'] = {};

    storeobj['addrid'] = '';

    storeobj['wk'] = [];
    var nart = {};
    nart['id']      = "entnahme";
    nart['artikel'] = "entnahme";
    nart['kurztext_de'] = 'Entnahme: ' + grund;
    nart['nummer']  = "entnahme";
    nart['tax']     = '0';
    nart['preis']   = wert;

    nart['amount']  = '1';
    nart['rabatt']  = '0';

    storeobj['wk'].push(nart);

    storeobj['ptype']   = "bar";
    storeobj['rtype']   = "entnahme";

    storeobj['inbem']   = $('#inbem').val();
    storeobj['freit']   = $('#freit').val();

    storeobj['grabatt'] = '0';
    storeobj['grabatteur'] = '0';

    storeobj['kassiererId'] = kassiererId;
    storeobj['randnumber'] = randnumber;
    var jsonString = JSON.stringify(storeobj);

    $.ajax({
      url: 'index.php?module=pos&action=finsess',
      type: 'POST',
      dataType: 'json',
      data: { sessdata: jsonString},
      success: function(jdata) {
        if(typeof jdata.error != 'undefined')
        {
          alert(jdata.error);
        }else{
          $('#entconf').dialog('open');
        }
        $('#artikelnummerprojekt').focus();
        $('#entnahme').prop('checked', false);
        if(typeof reloadsite != 'undefined'){
          reloadsite();
        }
      }
    });
  }else if(typ === 'einlage')
  {
    if(!grund) {
      $('#einlage').prop('checked', false);
      alert('Sie müssen einen Grund eingeben. Einlage wurde nicht gebucht.');
      return;
    }
    randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
    var storeobj = {};
    storeobj['kasid'] = $('#tabs-1').data('on');

    storeobj['addr'] = {};

    storeobj['addrid'] = "";

    storeobj['wk'] = [];
    var nart = {};
    nart['id']      = "einnahme";
    nart['artikel'] = "einnahme";
    nart['kurztext_de'] = 'Einlage: ' + grund;
    nart['nummer']  = "einnahme";
    nart['tax']     = '0';
    nart['preis']   = wert;

    nart['amount']  = '1';
    nart['rabatt']  = '0';

    storeobj['wk'].push(nart);

    storeobj['ptype']   = "bar";
    storeobj['rtype']   = "einlage";

    storeobj['inbem']   = $('#inbem').val();
    storeobj['freit']   = $('#freit').val();

    storeobj['grabatt'] = '0';
    storeobj['grabatteur'] = '0';

    storeobj['kassiererId'] = kassiererId;
    storeobj['randnumber'] = randnumber;
    var jsonString = JSON.stringify(storeobj);

    $.ajax({
      url: 'index.php?module=pos&action=finsess',
      type: 'POST',
      dataType: 'json',
      data: { sessdata: jsonString},
      success: function(jdata) {
        $('#einconf').dialog('open');
        //$('#artikelnummerprojekt').focus();
        $('#einlage').prop('checked', false);
        if(typeof reloadsite != 'undefined')reloadsite();
      }
    });
  }
}

function getKonto(el)
{
  var grund = $(el).parents('tr').first().find('td').first().text();
  if(grund+'' !== '') {
    $('#kontoauswahlgrund').val(grund);
    kontoauswahl();
  }
}

function entnahmeclick(wert)
{
  if($('#kontoauswahldiv').length > 0) {
    $('#kontoauswahltyp').val('entnahme');
    $('#kontoauswahlwert').val(wert);
    $('#kontoauswahllegend').text('Betrag für Entnahme: ' + wert + ' EUR');
    $('#kontoauswahldiv').dialog('open');
    $('#kontoauswahlgrund').focus();
  }else{
    var grund = prompt('Entnahme(' + wert + ' EUR): Grund?');
    kontoauswahlbuchen(wert, grund, 'entnahme');
  }
}

function einlageclick(wert)
{
  if($('#kontoauswahldiv').length > 0) {
    $('#kontoauswahltyp').val('einlage');
    $('#kontoauswahlwert').val(wert);
    $('#kontoauswahllegend').text('Betrag für Einlage: ' + wert + ' EUR');
    $('#kontoauswahldiv').dialog('open');
    $('#kontoauswahlgrund').focus();
  }else {
    var grund = prompt('Einlage(' + wert + ' EUR): Grund?');
    kontoauswahlbuchen(wert, grund, 'einlage');
  }

}

function checkLogoutTimeout() {
  if (logouttimer) {
    clearTimeout(logouttimer);
  }
  var logouttime = parseInt($('#logoutkas').data('logouttime'));
  if(logouttime > 0) {
    logouttimer = setTimeout(function () {
      if(kassiererId && !logouttimerabschluss) {
        $('#logoutkas').trigger('click');
      } else{
        if(kassiererId) {
          checkLogoutTimeout();
        }
      }
    }, logouttime * 1000);
  }
}

$(document).ready(function(){
  checkLogoutTimeout();
  $('*').on('click',function() {
    checkLogoutTimeout();
  });
  $('*').on('keydown',function() {
    if(logouttimerabschluss) {
      clearTimeout(logouttimerabschluss);
    }
    checkLogoutTimeout();
  });
  $('input[name=ptype]').on('change',function() {
    var $trinkgeld = $('#trinkgeld');
    if($trinkgeld !== undefined) {
      var eccredit = $($trinkgeld).data('eccredit');
      var ptype = $('input[name=ptype]:checked').val();
      if(typeof ptype == 'undefined') {
        ptype = '';
      }
      if(typeof eccredit != 'undefined' && eccredit == '1') {
        if(ptype !== 'ec' && ptype !== 'kredit') {
          $($trinkgeld).prop('disabled', true);
          $($trinkgeld).toggleClass('grey', true);
        } else {
          $($trinkgeld).prop('disabled', false);
          $($trinkgeld).toggleClass('grey', false);
        }
      }
    }
  });

  $('input[name=ptype]').first().trigger('change');

  $('#grabatt').css({
    display: 'none'
  });

  // dialoge
  $("#storeconfconf, #entconf, #emptywarn, #zahlwarn, #einconf").dialog({
    modal: true,
    bgiframe: true,
    closeOnEscape:false,
    autoOpen: false,
    buttons: {
      'OK': function() {
        $(this).dialog('close');
        $('#artikelnummerprojekt').focus();
      }
    }
  });

  $("#finconfconf").dialog({
    modal: true,
    bgiframe: true,
    closeOnEscape:false,
    autoOpen: false,
    buttons: {
      'OK': function() {
        $(this).dialog('close');
        $('#artikelnummerprojekt').focus();
        setAbschlusstimer();
      }
    },open: function( event, ui ) {
      var btn = $(this).next().find('button').first();
      if(btn !== null)
      {
        btn.focus();
        setTimeout(function(){btn.focus();},50);
        $(this).parent().find('*').on('keypress',function(event){
          if (event.which == 13) {
            $("#finconfconf").dialog('close');
            $('#artikelnummerprojekt').focus();
            setAbschlusstimer();
          }
        });
      }
    }
  });

  $.ajax({
    url: 'index.php?module=pos&action=list&cmd=getuserinfo',
    type: 'POST',
    dataType: 'json',
    data: {},
    success: function(data) {
      if(data === 'admin'){

        $("#kashin").dialog({
          modal: true,
          bgiframe: true,
          closeOnEscape:false,
          autoOpen: false,
          width:"350px",
          dialogClass: "no-close",
          open: function () {
            $(this).off('submit').on('submit', function () {
              var kanr = $('#kanr2').val();
              loginkas(kanr);
              $(this).dialog('close');
              return false;
            });
          },
          buttons: {
            'OK': function() {
              loginkas($('#kanr2').val());
              $(this).dialog('close');
              $('#artikelnummerprojekt').focus();
            },
            'ABBRECHEN': function() {
              $(this).dialog('close');
              window.location.href = 'index.php';
            }
          }
        });
      }else{
        $("#kashin").dialog({
          modal: true,
          bgiframe: true,
          closeOnEscape:false,
          autoOpen: false,
          dialogClass: "no-close",
          open: function () {
            $(this).off('submit').on('submit', function () {
              var kanr = $('#kanr2').val();
              loginkas(kanr);
              $(this).dialog('close');
              $('#artikelnummerprojekt').focus();
              return false;
            });
          },
          buttons: {
            'OK': function() {
              loginkas($('#kanr2').val());
              $(this).dialog('close');
              $('#artikelnummerprojekt').focus();
            }
          }
        });
      }
    },
    beforeSend: function() {

    }
  });


  $("#resetconf").dialog({
    modal: true,
    bgiframe: true,
    closeOnEscape:false,
    autoOpen: false,
    buttons: {
      'NEIN': function() {
        $(this).dialog('close');
      },
      'JA': function() {

        storePOSSession("resetsess");

        $(this).dialog('close');
        $('#artikelnummerprojekt').focus();
      }
    }
  });

  $("#skempty").dialog({
    modal: true,
    bgiframe: true,
    closeOnEscape:false,
    autoOpen: false,
    buttons: {
      'OK': function() {
        $(this).dialog('close');
        $('#artikelnummerprojekt').focus();
      }
    }
  });
  
  $("#finconf").dialog({
    modal: true,
    minWidth:800,
    minHeight:400,
    bgiframe: true,
    closeOnEscape:false,
    autoOpen: false,
    buttons: {
      'NEIN': function() {
        $(this).dialog('close');
        $('#artikelnummerprojekt').focus();
      },
      'JA': function() {
        var ptype = $('input[name=ptype]:checked').val();
        if(ptype === 'bar')
        {
          var betrag = $('#zahlbetrag').val().replace(',','.');
          var gezahlt = $('#gezahlt').val().replace(',','.');
          if(gezahlt == '') {
            gezahlt = 0;
          }
          var rueckgeld = (parseFloat(gezahlt) - parseFloat(betrag));
          if(rueckgeld < 0 || isNaN(gezahlt) || isNaN(rueckgeld))
          {
            alert('Es wurde zu wenig eingezahlt - der Vorgang kann nicht abgeschlossen werden!');
            return;
          }
          $.ajax({
            url: '',
            dataType: 'json',
            async: false,
            data: {
              module: 'pos',
              action: 'loadkassstand',
              kassiererId: kassiererId
            },
            success: function(jdata) {
              kontostand = parseFloat(jdata.kontostand);
            }
          });
          if(kontostand < rueckgeld)
          {
            alert('Sie haben nicht ausreichend Rückgeld in der Kasse.');
            return;
          }
        }
        if(ptype === 'ec' || ptype === 'kredit') {
          var tip = $('#tip').val().replace(',','.');
          if(tip == '') {
            tip = 0;
          } else {
            tip = parseFloat(tip);
          }

          if(tip > 0) {
            var kontostand = 0;
            var konto = 0;
            $.ajax({
              url: '',
              dataType: 'json',
              async: false,
              data: {
                module: 'pos',
                action: 'loadkassstand',
                kassiererId: kassiererId
              },
              success: function(jdata) {
                kontostand = parseFloat(jdata.kontostand);
                konto = jdata.konto;
              }
            });
            if(kontostand < tip) {
              if(konto == 0) {
                alert('Es ist kein Kassenbuch hinterlegt.');
                return;
              }
              else {
                alert('Sie haben nicht ausreichend Bargeld in der Kasse.');
                return;
              }
            }
          }
          if(tip < 0 || isNaN(tip))
          {
            alert('Es wurde ein negatives Trinkgeld ausgewählt - der Vorgang kann nicht abgeschlossen werden!');
            return;
          }
        }
        storePOSSession(belegabrechnenaktiv?'belegabrechnen':'finsess');
        resetFields();
        $(this).dialog('close');
      }
    }
  });
  
  
  resetFields();
  
  // check for active session
  $.getJSON( '', {
    module: "pos",
    action: "checkkass"
  }).done(function( jdata ) {

    if(jdata.check!=='ERR') {
      kassiererId = jdata.kid;
      $('#kassiererId').val(kassiererId);
      kanr = jdata.kid;
      $('#tabs-1 input').removeAttr('disabled');
      $('#tabs-1').data('on',kanr);
      lkaddr = jdata.lkadresse; 
      // $('#logoutkas').show();
      $('#loggedinkas').html(' ' + jdata.kname);
      $('#filiale').html(' ' + jdata.filiale);
      //$('#kanr').html(kanr);
      loadPOSSession(kanr);
      $('#artikelnummerprojekt').focus();
    } else {
      $('#kashin').dialog('open');
    }
  });

  waehrung = $('#waehrung').html();
  
  // felder sperren bis sich Kassierer anmeldet
  //$('#tabs-1 input').prop('disabled','disabled'); -- by bene, duke 29.03.
  $('#loadkass input').removeAttr('disabled');
  
  
  $('#rabatt2').on('click',function() {
    var ggrabatt = prompt("Rabatt in %");
    if(!ggrabatt) {
      ggrabatt = 0;
    } else if (ggrabatt > 100) {
      ggrabatt = 0;
    }

    grabattSaved = ggrabatt;

    $('#wk tbody .rabatt').val(ggrabatt);
    $('#grabatt').html(ggrabatt+'%');
    
    grabatt = 0;
    $('#wk > tbody > tr').each(function() {
      updatearttotal($(this));
    });
    updatetotals();
    grabatt = 0;

  });

  // @todo
  $('#rabatteur').on('click',function() {
    grabatteur = prompt("Rabatt in " + waehrung);
    if(!grabatteur) {
      grabatteur = '0,00';
    }
    grabatteur = parseFloat(grabatteur.replace(',','.'));
    
    if (grabattSaved != 0) {
      grabatt = 0;
      ggrabatt = grabattSaved;

    }
    $('#wk > tbody > tr').each(function() {
      updatearttotal($(this));
    });
    updatetotals();
    grabatt = 0;
  });


  $('#schublade').on('click',function() {

    $.ajax({
      url: '',
      dataType: 'json',
      async: false,
      data: {
        module: 'pos',
        action: 'ladeoeffnen',
        kassiererId: kassiererId,
        rueckgeld: $('#rueckgeld').val()
      },
      success: function(jdata) {
        //kontostand = jdata.kontostand;
      }
    });

      $('#schublade').prop('checked', false);

  });

  $('#einlage').on('click',function(){
    var wert = prompt("Wert in " + waehrung + "?");
    if(!wert || wert <= 0) {
      $('#einlage').prop('checked', false);
      return;
    }
    wert = parseFloat(wert.replace(',','.'));

    einlageclick(wert);
    
    /*$.getJSON( '', {
      module: "pos",
      action: "finsess",
      sessdata: jsonString
    }).done(function( jdata ) {
      $('#einconf').dialog('open');
      //$('#artikelnummerprojekt').focus();
      $('#einlage').prop('checked', false);
      if(typeof reloadsite != 'undefined')reloadsite();
    });*/
  });

  $('#entnahme').on('click',function() {
    var wert = prompt("Wert in " + waehrung + "?");
    if(!wert || wert <= 0) {
      $('#entnahme').prop('checked', false);
      return;
    }

    var kontostand = 0;
    $.ajax({
      url: '',
      dataType: 'json',
      async: false,
      data: {
        module: 'pos',
        action: 'loadkassstand',
        kassiererId: kassiererId
      },
      success: function(jdata) {
        kontostand = jdata.kontostand;
      }
    });

    if (parseFloat(kontostand) < parseFloat(wert)) {
      alert('Sie haben nicht ausreichend Bargeld in der Kasse.');
      $('#entnahme').prop('checked', false);
      return;
    }

    wert = parseFloat(wert.replace(',','.'));

    entnahmeclick(wert);
    
    /*
    $.getJSON( '', {
      module: "pos",
      action: "finsess",
      sessdata: jsonString
    }).done(function( jdata ) {
      $('#entconf').dialog('open');
      $('#artikelnummerprojekt').focus();
      $('#entnahme').prop('checked', false);
      if(typeof reloadsite != 'undefined')reloadsite();
    });*/
    
  });

  $('#trinkgeld').on('click',function() {
    var eccredit = $(this).data('eccredit');
    var ptype = $('input[name=ptype]:checked').val()+'';
    if(typeof ptype == 'undefined') {
      ptype = '';
    }
    if(typeof eccredit != 'undefined' && eccredit) {
      if(ptype !== 'ec' && ptype !== 'kredit') {
        $(this).prop('checked', false);
        return;
      }
    }
    var wert = prompt("Wert in " + waehrung + "?");
    if(!wert || wert <= 0) {
      $('#trinkgeld').prop('checked', false);
      $(this).prop('checked', false);
      return;
    }

    var kontostand = 0;
    $.ajax({
      url: '',
      dataType: 'json',
      async: false,
      data: {
        module: 'pos',
        action: 'loadkassstand',
        kassiererId: kassiererId
      },
      success: function(jdata) {
        kontostand = jdata.kontostand;
      }
    });

    if (parseFloat(kontostand) < parseFloat(wert)) {
      alert('Sie haben nicht ausreichend Bargeld in der Kasse.');
      $('#trinkgeld').prop('checked', false);
      return;
    }

    wert = parseFloat(wert.replace(',','.'));
    var grund = prompt('Trinkgeld(' + wert + ' EUR): Kunde?');
    if(!grund) {
      $('#trinkgeld').prop('checked', false);
      alert('Sie müssen einen Grund eingeben. Trinkgeld wurde nicht gebucht.');
      return;
    }
    randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
    var storeobj = {};
    storeobj['kasid'] = $('#tabs-1').data('on');
    storeobj['addr'] = {};
    storeobj['addrid'] = "";
    
    storeobj['wk'] = [];
    var nart = {};
    nart['id']      = "entnahme";
    nart['artikel'] = "entnahme";
    nart['kurztext_de'] = 'Trinkgeld: ' + grund;
    nart['nummer']  = "entnahme";
    nart['tax']     = '0';
    nart['preis']   = wert;
    
    nart['amount']  = '1';
    nart['rabatt']  = '0';

    storeobj['wk'].push(nart);

    storeobj['ptype']   = ptype;
    storeobj['rtype']   = "entnahme";
    
    storeobj['inbem']   = $('#inbem').val();
    storeobj['freit']   = $('#freit').val();

    storeobj['grabatt'] = '0';
    storeobj['grabatteur'] = '0';
    
    storeobj['kassiererId'] = kassiererId;
    storeobj['randnumber'] = randnumber;
    var jsonString = JSON.stringify(storeobj);


    $.ajax({
        url: 'index.php?module=pos&action=finsess',
        type: 'POST',
        dataType: 'json',
        data: { sessdata: jsonString},
        success: function(jdata) {
          if(typeof jdata.error != 'undefined')
          {
            alert(jdata.error);
          }else{
            $('#entconf').dialog('open');
          }
          $('#artikelnummerprojekt').focus();
          $('#trinkgeld').prop('checked', false);
        }});
    
    /*$.getJSON( '', {
      module: "pos",
      action: "finsess",
      sessdata: jsonString
    }).done(function( jdata ) {
      $('#entconf').dialog('open');
      $('#artikelnummerprojekt').focus();
      $('#trinkgeld').prop('checked', false);
    });*/
  });
  
  
  $('#abortsale').on('click',function() {
    $("#resetconf").dialog('open');
  });

  
  $('#finsale').on('click',function() {
    return finsale_click();
  });
  
  $('table.numblock').find('td').on('click',function(){
    var nr = $(this).html()
    {
      var el = '#gezahlt';
      if($('#tip:visible').length) {
        el = '#tip';
      }
      if(nr != '')
      {
        if(nr === 'DEL' || nr === '&crarr;')
        {
          $(el).val('');
          calcrueckgeld();
          $(el).focus();
        }else if(nr == ','){
          if($(el).val() != '' && ($(el).val().indexOf(',') == -1))
          {
            $(el).val($(el).val()+''+nr);
            calcrueckgeld();
            $(el).focus();
          }
        }else if(nr == parseInt(nr)){
          $(el).val($(el).val()+''+nr);
          calcrueckgeld();
          $(el).focus();
        }else{
          $(el).val('');
          calcrueckgeld();
          $(el).focus();
        }
      }
      
    }
    
    
  });
  

  
  $('#storesale').on('click',function() {
      vorgangspeichern();
      //storePOSSession('storesess');
      return false;
  });
  
  
  
  $('#loadkass').on('submit',function() {
    var kanr = $('#kanr').html();
    if(!kanr) return false;
    loginkas(kanr);
    return false;
  }); 
  
  $('#logoutkas').on('click',function() {
    resetFields();
    logoutkas();
    return false;
  });
  
  
  $('#loadaddr').on('submit',function(event) {
    event.preventDefault();
    var kunr = $('#adresse').val();
    if(!kunr) return false;
    loadAddr(kunr);
    return false;
  });


  $('#adresse').on('focus',function() {
    $('input[name=ktype]').prop('checked', false);
    $('input[name=ktype]').first().prop('checked',true);
    $('input[name=ktype]').first().attr('checked','checked');
    var skInput = $('input[value="sk"]');
    skInput.prop('checked', true);

    // $('input[name=ktype]').prop('checked', false);
    // $('input[name=ktype]').removeProp('checked');
    // $('input[name=ktype][value=sk]').prop('checked',true);
    // $('input[value="sk"]').prop('checked', true);

  });

  $('#adresse').on('focusout',function() {
    var kunr = $('#adresse').val();
    if(!kunr) return false;
    loadAddr(kunr);
  });
  
  
  
  $('input[name=ktype]').on('change',function() {
    var ktype = $(this).val();

    $('.rechnungsadresse_container').find('#t_name').text('');
    $('#adjcust').hide();

    if(ktype==='lk' || ktype==='nk'){
      $('#modalcont input[type=text]').val('');
      $('#ob1 span').html('');
      $('#adresse').val('');
    }
    
    if (ktype === 'lk') {
      $('.rechnungsadresse_container').find('#t_name').text('Laufkundschaft');
       // $('#adjcust').show();
    }

    if(ktype==='nk'){
      //tinyMCE.get('infoauftragserfassung_pos').setContent('');
      $('.rechnungsadresse_container').find('#t_name').text('');
      $('#modaloverlay').show(300);
      $('#adjcust').show();
    }
  });
  
  
  $('#adjcust').on('click',function() {
    $('#ob1 span').each(function(i,e) {
      var tid = $(this).prop('id').split('t_');
      if (tid[1] !== 'typ' && tid[0] != '') {
        $('#'+tid[1]).val($(this).html());
      }
    });
    $('#modaloverlay').show(300); 
  });

  $('#storecust').on('click',function() {

    $('.mkErrors').remove();

    if ($('#modalcont').find('input#name').val().length == 0) {
      if (!$('#modalcont').hasClass('mkerror')) {
        $('#modalcont').addClass('mkerror');
        $('#modalcont').find('input#name').after('<span style="color: red;" class="mkErrors"><br>Bitte Name angeben.</span>');
      }
      return false;
    }

    $('#modalcont').removeClass('mkerror');

    var storeobj = {}; 

    storeobj['kassierer'] = kassiererId;

    storeobj['kundennummer'] = $('#adresse').val();
    storeobj['addr'] = {};

    $('#ob1 span').each(function(i,e) {
      var tid = $(this).prop('id').split('t_');
      storeobj['addr'][tid[1]] = $('#'+tid[1]).val();
    });

    storeobj['addr']['infoauftragserfassung'] = $.base64Encode( $('#infoauftragserfassung_pos').val() );

    $.ajax({
      url: '',
      data: {
        module: 'pos',
        action: 'storecust',
        obj: storeobj
      },
      dataType: 'json',
      beforeSend: function() {
        //App.loading.open();
      },
      success: function(data) {
        if (data.status == 1) {
          $('#adresse').val(data.kundennummer);
          //$('#loadaddr input[type="radio"]').prop('checked', false);
          //$('#loadaddr input[type="radio"]').removeAttr('checked');
          //$('#loadaddr input[type="radio"]').first().prop('checked', true);
          $('input[name=ktype][value=sk]').prop('checked',true);
          $('input[name=ktype][value=sk]').attr('checked','checked');
          loadAddr(data.kundennummer);
          $('#modaloverlay').hide(300); 



        } else {
          // TODO: Fehlermeldungen?
        }
        //App.loading.close();

      }
    });


    /*

    $('#ob1 span').each(function(i,e) {
      var tid = $(this).prop('id').split('t_');
      $(this).html($('#'+tid[1]).val());
    });

    */

    saveCust = true;

  });
  
  $('#xbutt, #abortcust').on('click',function() { $('#modaloverlay').hide(300); });

  
  
  $('#typ').on('change',function() {
    var namein = $('#name').parent();
    var nameinfo = namein.prev();
    var ansprow = namein.parent().next();
    if($(this).val() === 'firma') {
      nameinfo.html('Firmenname');
      $('#ansprtit').show();
      $('#ansprechpartner').show();
    } else {
      nameinfo.html('Vor- und Nachname');
      $('#ansprtit').hide();
      $('#ansprechpartner').hide();
    }
  });
  
  
  $('#loadart').on('submit',function() {

    var adresseId = $('#adresse').val();
    var artean = $('#artikelnummerprojekt').val();
    artean = artean.split(' ');
    artean = artean[ 0 ];
    if(!artean) return false;
    $.getJSON( '', {
      module: "pos",
      action: "loadart",
      artean: artean,
      kassenkennung: kassiererId,
      addrid: adresseId
    }).done(function( jdata ) {
      if(jdata.check) {alert('Artikel nicht gefunden'); $('#artikelnummerprojekt').val(''); return false; }
      //if(typeof jdata.rabattartikel != 'undefined' && jdata.rabattartikel == 1){alert('Rabattartikel sind nicht zulässig'); return false; }
      addarticle(jdata);
      var tabletbody = $('table#wk > tbody > tr').last();
      checkseriennummern($(tabletbody).find('.amount'));
      $('#artikelnummerprojekt').val('');
    });
    return false;
  });
  
  // @TODO: Chrome hat scheinbar probleme mit .prop()
  if (is_chrome) {
    //$('input[value="sk"]').attr('checked', '');
  }

  //tinyMCEsetup();

  $('#kontoauswahlgrund').on('keydown', function (event) {

    if (event.which == 13) {
      kontoauswahl();
    }});

  // Ende document.ready
  });

  function checkLaufkundschaft(a_kassiererId)
  {
    var output;

    $.ajax({
      url: '',
      async: false,
      data: {
        module: 'pos',
        action: 'list',
        cmd: 'checklaufkundschaft',
        kassierer: a_kassiererId
      },
      dataType: 'json'
    }).done(function(jdata) {
      output = jdata;
    });

    if (typeof output.status && output.status == true) {
      return true;
    }

    return false;
  }
  
  function checkStammkunde(a_kundennummer, a_kassiererId, totalAmount) {

    var output;

    $.ajax({
      url: '',
      async: false,
      data: {
        module: 'pos',
        action: 'checkstammkunde',
        kundennummer: a_kundennummer,
        kassierer: a_kassiererId,
        amount: totalAmount
      },
      dataType: 'json'
    }).done(function(jdata) {
      output = jdata;
    });

    if (typeof output.status && output.status == true) {
      return true;
    }

    return false;

  }

  function loadAddr(kunr) {
    $.getJSON( '', {
      module: "pos",
      action: "loadaddr",
      kunr: kunr,
      kanr: kassiererId
    }).done(function( jdata ) {
      var ktype = $('input[name=ktype]:checked').val();
      if(ktype==='sk' && (typeof jdata.check == 'undefined' || jdata.check!=='ERR')) {
        $.each(jdata, function(i, e) {        
          $('#ob1 #t_'+i).html(e);
        $('#adjcust').show();

          if (i === 'infoauftragserfassung') {
            $('#infoauftragserfassung_pos').val(e);
            if(e!='')
            {
              //tinyMCE.get('infoauftragserfassung_pos').setContent(e);
            }
          } else {
            $('#modalcont').find('#' + i).val(e);            
          }

          if(i==='typ')
          {
            var namein = $('#name').parent();
            var nameinfo = namein.prev();
            if(e==='firma')
              nameinfo.html('Firmenname');
            else
              nameinfo.html('Vor- und Nachname');
          }
        });
        // $('#inbem').val(jdata['infoauftragserfassung']);
        $('#artikelnummerprojekt').focus();
      } else {
        $('#adresse').val('');
        if(ktype==='sk')
        {
          alert('Kein Kunde gefunden');
        }
      }
    });  
  }  
  
  function addarticlestorno(jdata)
  {
    var pos = $('#stornotab table tbody').find('tr').length + 1;
    var html = '<tr><td class="pos">'+pos+'</td><td class="artikel">'+jdata['artikel']+'</td><td class="nummer">'+jdata['nummer']+'</td><td><input type="text" size="5" class="menge"></td><td class="amount">'+jdata['amount']+'<input type="hidden" class="tax" value="'+jdata['tax']+'" /><input type="hidden" class="preis" value="'+jdata['preis']+'" /><input type="hidden" class="rabatt" value="'+jdata['rabatt']+'" /><input type="hidden" class="artid" value="'+jdata['id']+'" />';
    if(typeof jdata['preis_genau'] != 'undefined')
    {
      html += '<input type="hidden" class="preisgenau" value="'+jdata['preis_genau']+'" />';
    }
    if(typeof jdata['erloes'] != 'undefined')
    {
      html += '<input type="hidden" class="erloes" value="'+jdata['erloes']+'" />';
    }
    html += '</td></tr>';
    $('#stornotab table tbody').append(html);
  }
  
  function teilstornieren()
  {
    if($('#rechnungid').val() != '')
    {
      var ktype = $('input[name=ktype]:checked').val();
      var ptype = $('input[name=ptype]:checked').val();
      var totalAmount = $('#sutotal').text().replace(',', '.');
      totalAmount = parseFloat(totalAmount);
      if (totalAmount < 0) {
        alert('Die Gesamtsumme darf nicht kleiner als 0 sein.');
        return false;
      }

      if ( ktype === 'sk' && $('#adresse').val().length == 0 ) {
        $("#skempty").dialog('open');
        return false;
      } else if ( ktype === 'sk' && $('#adresse').val().length > 0 && !checkStammkunde($('#adresse').val(), kassiererId)) {
          alert('Stammkunde nicht korrekt.');
          return false;
      }

      if((ktype==='nk' && !$("#t_name").html()) || $('#wk > tbody > tr').length == 0) {
        $("#emptywarn").dialog('open');
      } else if(zahlungselzwang && !$('#payment input[name=ptype]:checked').val()) {
        $('#zahlwarn').dialog('open');
      } else {
        if(ptype === 'bar')
        {
          $.ajax({
            url: 'index.php?module=pos&action=loadkassstand&kassiererId='+kassiererId,
            type: 'POST',
            dataType: 'json',
            data: { },
            success: function(data) {
              if(parseFloat(data.kontostand) < totalAmount)
              {
                alert('Der Kassenstand ist kleiner als der Stornierbetrag!');
              }else{
                var anz = $('#wk > tbody > tr').length;
                if(anz > 0)
                {
                  var betrag = $('#sutotal').html();
                  if(confirm('Es wird eine Gutschrift erstellt. Sicher weitermachen?'))
                  {
                    storePOSSession('teilstornieren');
                  }
                }else{
                  
                }
              }
          }});
        }else{
          var anz = $('#wk > tbody > tr').length;
          if(anz > 0)
          {
            var betrag = $('#sutotal').html();
            if(confirm('Es wird eine Gutschrift in Höhe von '+betrag+' erstellt. Sicher weitermachen?'))
            {
              storePOSSession('teilstornieren');
            }
          }else{
            
          }
        }
      }
    }
  }
  
  function stornieren()
  {
    var ktype = $('input[name=ktype]:checked').val();
    var ptype = $('input[name=ptype]:checked').val();
    var totalAmount = $('#sutotal').text().replace(',', '.');
    totalAmount = parseFloat(totalAmount);
    if (totalAmount < 0) {
      alert('Die Gesamtsumme darf nicht kleiner als 0 sein.');
      return false;
    }

    if ( ktype === 'sk' && $('#adresse').val().length == 0 ) {
      $("#skempty").dialog('open');
      return false;
    } else if ( ktype === 'sk' && $('#adresse').val().length > 0 && !checkStammkunde($('#adresse').val(), kassiererId)) {
        alert('Stammkunde nicht korrekt.');
        return false;
    }

    if((ktype==='nk' && !$("#t_name").html()) || $('#wk > tbody > tr').length == 0) {
      $("#emptywarn").dialog('open');
    } else if(zahlungselzwang && !$('#payment input[name=ptype]:checked').val()) {
      $('#zahlwarn').dialog('open');
    } else {
      if(ptype === 'bar')
      {
        $.ajax({
          url: 'index.php?module=pos&action=loadkassstand&kassiererId='+kassiererId,
          type: 'POST',
          dataType: 'json',
          data: { },
          success: function(data) {
            if(parseFloat(data.kontostand) < totalAmount)
            {
              alert('Der Kassenstand ist kleiner als der Stornierbetrag!');
            }else{
              var anz = $('#wk > tbody > tr').length;
              if(anz > 0)
              {
                var betrag = $('#sutotal').html();
                if(confirm('Es wird eine Gutschrift in Höhe von '+betrag+' erstellt. Sicher weitermachen?'))
                {
                  storePOSSession('stornieren');
                }
              }else{
                
              }
            }
        }});
      }else{
        var anz = $('#wk > tbody > tr').length;
        if(anz > 0)
        {
          var betrag = $('#sutotal').html();
          if(confirm('Es wird eine Gutschrift in Höhe von '+betrag+' erstellt. Sicher weitermachen?'))
          {
            storePOSSession('stornieren');
          }
        }else{
          
        }
      }
    }
  }
  
  function komplettstornieren()
  {
    if($('#rechnungid').val() != '')
    {        
      var ktype = $('input[name=ktype]:checked').val();
      var ptype = $('input[name=ptype]:checked').val();
      var totalAmount = $('#sutotal').text().replace(',', '.');
      totalAmount = parseFloat(totalAmount);
      if (totalAmount < 0) {
        alert('Die Gesamtsumme darf nicht kleiner als 0 sein.');
        return false;
      }

      if ( ktype == 'sk' && $('#adresse').val().length == 0 ) {
        $("#skempty").dialog('open');
        return false;
      } else if ( ktype == 'sk' && $('#adresse').val().length > 0 && !checkStammkunde($('#adresse').val(), kassiererId)) {
          alert('Stammkunde nicht korrekt.');
          return false;
      }

      if((ktype==='nk' && !$("#t_name").html()) || $('#wk > tbody > tr').length == 0) {
        $("#emptywarn").dialog('open');
      } else if(zahlungselzwang && !$('#payment input[name=ptype]:checked').val()) {
        $('#zahlwarn').dialog('open');
      } else {
        if(ptype === 'bar')
        {
          $.ajax({
            url: 'index.php?module=pos&action=loadkassstand&kassiererId='+kassiererId,
            type: 'POST',
            dataType: 'json',
            data: { },
            success: function(data) {
              if(parseFloat(data.kontostand) < totalAmount)
              {
                alert('Der Kassenstand ist kleiner als der Stornierbetrag!');
              }else{
                var anz = $('#wk > tbody > tr').length;
                if(anz > 0)
                {
                  var betrag = $('#sutotal').html();
                  if(confirm('Es wird eine Gutschrift in Höhe von '+betrag+' erstellt. Sicher weitermachen?'))
                  {
                    storePOSSession('komplettstornieren');
                  }
                }else{
                  
                }
              }
          }});
        }else{
          var anz = $('#wk > tbody > tr').length;
          if(anz > 0)
          {
            var betrag = $('#sutotal').html();
            if(confirm('Es wird eine Gutschrift in Höhe von '+betrag+' erstellt. Sicher weitermachen?'))
            {
              storePOSSession('komplettstornieren');
            }
          }else{
            
          }
        }
      }
    }
  }
  
  function teilstornouebernehmen()
  {
    resetFields();
    steuerfrei = ($('#teilstornosteuerfrei').val()==1)?true:false;
    ustid = $('#teilstornoustid').val();
    var anzteile = $('#stornotab table tbody').find('tr').length;
    $('#stornotab table tbody').find('tr').each(function(){
      var storeart = {};
      storeart['artikel'] = $(this).find('.artikel').text();
      storeart['id'] = $(this).find('.artid').val();
      storeart['tax'] = $(this).find('.tax').val();
      if($(this).find('.taxorig').length) {
        storeart['taxorig'] = $(this).find('.taxorig').val();
      }
      storeart['nummer'] = $(this).find('.nummer').text();
      storeart['amount'] = $(this).find('.menge').val()+'';
      storeart['preis'] = $(this).find('.preis').val();
      storeart['rabatt'] = $(this).find('.rabatt').val();
      var preisgenau = $(this).find('.preisgenau').val();
      if(typeof preisgenau != 'undefined')
      {
        storeart['preis_genau'] = preisgenau;
      }
      var erloes = $(this).find('.erloes').val();
      if(typeof erloes != 'undefined')
      {
        storeart['erloes'] = erloes;
      }
      if(storeart['amount'] != '' && storeart['amount'] != '0')addarticle(storeart, anzteile);
    });
    $('#wk .editname').remove();
    $('#wk .preisEditLink').remove();
    $('#wk .delwkart').remove();
    $('#wl input').prop('disabled', true);
    $('#wl input').prop('readonly', true);
    $('#finsale').hide();
    $('#stornobutton').hide();
    
    //$('#abortsale').hide();
    $('#stornoabbrechen').show();
    $('#teilstornobutton').show();
    $('#stornoabbrechen').css('display','inline-block');
    $('#teilstornobutton').css('display','inline-block');
    $('#belegeladendiv').dialog('close');
    $('#stornotab').hide();
    $('#abbrechnenbutton').hide();
  }

 
  if(document.getElementById('gezahlt') != null){
     document.getElementById('gezahlt').addEventListener ('keydown', function (event) {

     if (event.which == 13) {
       calcrueckgeld();
       $('#finconf').next('div').find('button').first().next().trigger('click');
     }
    });
  }

  if(document.getElementById('tip') != null){
    document.getElementById('tip').addEventListener ('keydown', function (event) {

      if (event.which == 13) {
        calcrueckgeld();
        $('#finconf').next('div').find('button').first().next().trigger('click');
      }
    });
    document.getElementById('tip').addEventListener ('keyup', function (event) {
      if (event.which != 13) {
        calcrueckgeld();
      }
    });
  }

  function belegabrechnen()
  {
    if($('#rechnungid').val() != '')
    {
      var totalAmount = $('#sutotal').text().replace(',', '.');
      totalAmount = parseFloat(totalAmount);
      if (totalAmount < 0) {
        alert('Die Gesamtsumme darf nicht kleiner als 0 sein.');
        return false;
      }
      if(confirm('Soll der Beleg wirklich über die Kasse abgerechnet werden?'))
      {
        var ptype = $('input[name=ptype]:checked').val();

        if(ptype==='bar')
        {
          belegabrechnenaktiv = true;
          $('tr.trbar').css('display','');
          $('tr.trec').css('display','none');
          $("#gezahlt").val('');
          $('#tip').val('0');
          $("#rueckgeld").val('');
          $("#finconf").dialog('open');
         // $.post( "index.php?module=pos&action=display", { total: $('#sutotal').html() } ); 
          $('#zahlbetrag').val($('#sutotal').html());
          $('tr.trbar').css('display','');
          $('table.numblock').css('display','');
          $('#gezahlt').focus();
        }
        else {
          if(ptype === 'ec' || ptype === 'kredit') {
            $('table.numblock').css('display','');
            $('tr.trec').css('display','');
          }
          else {
            $('table.numblock').css('display','none');
          }
          $('tr.trbar').css('display','none');
          $('#tip').val('0');
          storePOSSession('belegabrechnen');
        }
      }
    }
  }
  
  function stornoabbr()
  {
    $('#stornoabbrechen').hide();
    $('#stornobutton').show();
    $('#stornobutton').css('display','inline-block');
    $('#teilstornobutton').hide();
    $('#abbrechnenbutton').hide();
    $('#komplettstornobutton').hide();
    $('#finsale').show();
    $('#abortsale').show();
    $('#finsale').css('display','inline-block');
    $('#abortsale').css('display','inline-block');
    resetFields();
  }
  
  /*
  function teilstornieren()
  {
    stornieren();
    return;
    var storeobj = {};
    storeobj['wk'] = [];
    $('#wk > tbody > tr').each(function(i,e) {
      var nart = {};
      nart['id']      = $(this).prop('id');
      nart['artikel'] = $(this).find('.artikel').html().replace(/\"/g,'&quot;');
      nart['kurztext_de'] = $(this).prop('title').replace(/\"/g,'&quot;');
      nart['nummer']  = $(this).find('.nummer').html();
      nart['tax']     = $(this).find('.tax').html();
      nart['preis']   = $(this).find('.preisinp').val();
      
      nart['amount']  = $(this).find('.amount').val().replace(',','.');
      nart['rabatt']  = $(this).find('.rabatt').val();

      storeobj['wk'].push(nart);
    });
    
    $.ajax({
      url: 'index.php?module=pos&action=loadsess&cmd=stornorechnung&kasid='+kassiererId,
      type: 'POST',
      dataType: 'json',
      data: { artarr : JSON.stringify(storeobj)},
      success: function(data) {
        $('#buttonabbrechen').hide();
        $('#stornoabbrechen').hide();
        $('#teilstornobutton').hide();
        $('#stornobutton').show();    
        $('#finsale').css('display','inline-block');
        $('#abortsale').css('display','inline-block');
        $('#stornobutton').css('display','inline-block');
        resetFields();
      },
      beforeSend: function() {

      }
    });
    
  }*/
  
  function seriennummernuebernehmen()
  {
    var artikelnr = $('#seriennummernartikelnr').val();
    var html = '';
    $('#seriennummerndiv table tbody').children('tr').each(function(){
      if(html != '')html += ',';
      html += $(this).find('.seriennummereingabe').val();
    });
    $('#wk > tbody > tr').each(function(i,e) {
      if($(e).find('.nr').html() == artikelnr)
      {
        $(e).find('.seriennummernliste').val(html);
        return;
      }
    });
  }
  
  function seriennummernopen(elem)
  {
    var name = $(elem).find('.artikel').html();
    var menge = ($(elem).find('.amount').val()+'').replace(',','.');
    var artikelnr = $(elem).find('.nr').html();
    var seriennummern = $(elem).find('.seriennummern').val();
    var artikelid = $(elem).prop('id');
    $('#seriennummernartikelid').val(artikelid);
    $('#seriennummernartikelnr').val(artikelnr);
    var html = '';
    var html2 = '<script>';
    if(seriennummern)
    {
      var seriennummernliste = ($(elem).find('.seriennummernliste').val()+'').split(',');
      $('#seriennummernartikel').html(name);
      $('#seriennummerndiv table tbody').find('tr').remove();
      var first = true;
      for(i = 0; i < menge; i++)
      {
        html = '<tr><td><input type="text" class="seriennummereingabe" id="seriennummer_'+i+'" value="'
        if(typeof seriennummernliste[ i ] != 'undefined')
        {
          html += seriennummernliste[ i ];
          if(seriennummernliste[ i ] == '' && first)
          {
            html2 += '$("#seriennummer_'+i+'").focus();';
            first = false;
          }
        }else{
          if(first)
          {
            html2 += '$("#seriennummer_'+i+'").focus();';
            first = false;
          }
        }
        html += '" /></td></tr>';
        $('#seriennummerndiv table tbody').append(html);
        html2 += '$( "#seriennummer_' + i + '").autocomplete({ source: "index.php?module=ajax&action=filter&rmodule=pos&raction=list&rid=&filtername=lagerseriennummern&artikel='+artikelid+'", select: function( event, ui ) { var text = ui.item.value;  $( "#seriennummer_' + i + '" ).val( text );              return false;              }            });';
        
      }
      html2 += '</script>';
      $('#seriennummerndiv table tbody').find('td').first().append(html2);
      $('#seriennummerndiv').dialog('open');
    }
  }
  
  function artikeltextuebernehmen()
  {
    var nr = $('#artikeltextdivnr').val();
    var artikel = $('#artikeltextdivartikel').val();
    var anabregs_text = $('#artikeltextdivanabregs_text').val();
    $('#wk > tbody > tr').each(function(i,e) {
      if($(e).find('.nr').html() == nr)
      {
        $(e).find('.artikel').html(artikel);
        $(e).find('.anabregs_text').html(anabregs_text);
        return;
      }
    });
  }
  
  function changeArtikelName(elem)
  {
    var par = $(elem).parents('tr').first();
    var nr = $(par).find('.nr').html();
    var artikel = $(par).find('.artikel').html();
    var anabregs_text = $(par).find('.anabregs_text').html();
    $('#artikeltextdivnr').val(nr);
    $('#artikeltextdivartikel').val(artikel);
    $('#artikeltextdivanabregs_text').val(anabregs_text);
    $('#artikeltextdiv').dialog('open');
  }
  
  function checkseriennummern(elem)
  {
    var par = $(elem).parents('tr').first();
    var seriennummern = $(par).find('.seriennummern').val();
    if(seriennummern)
    {
      var seriennummernliste = ($(par).find('.seriennummernliste').val()+'').split(',');
      var anzbelegt = 0;
      $(seriennummernliste).each(function(i,e) {if(e != '')anzbelegt++});
      var menge = ($(elem).val()+'').replace(',','.');
      if(anzbelegt < menge)seriennummernopen(par);
    }
  }
  
  function updateRabattartikel()
  {
    var preis = 0;
    $('#wk > tbody > tr').each(function(i,e) {
      var porto = parseInt($(this).find('.porto').first().html());
      var rabattartikel = parseInt($(this).find('.rabattartikel').first().html());
      var keinrabatterlaubt = parseInt($(this).find('.keinrabatterlaubt').first().html());
      if(porto == 0 && keinrabatterlaubt == 0 && rabattartikel == 0)
      {
        if(brutto)
        {
          var tbrutto = parseFloat($(this).data('total')); // find('.gesamt').html());
          // var tmwst = parseFloat($(this).find('.tax').html());
          // var tara = (tbrutto / 100) * tmwst;
          var tmwst = parseFloat($(this).find('.tax').html());
          var ltmwst = (tmwst + 100) / 100;
          var tnetto = tbrutto / ltmwst;
          var trabatt = parseFloat($(this).find('.rabatt').val().replace(',','.'));
          preis = preis + tbrutto;
        }else{
          var tnetto = parseFloat($(this).data('total')); // find('.gesamt').html());
          // var tmwst = parseFloat($(this).find('.tax').html());
          // var tara = (tbrutto / 100) * tmwst;
          var tmwst = parseFloat($(this).find('.tax').html());
          var ltmwst = (tmwst + 100) / 100;
          var tbrutto = tnetto * ltmwst;
          var trabatt = parseFloat($(this).find('.rabatt').val().replace(',','.'));
          preis = preis + tnetto;
        }

      }
    });
    $('#wk > tbody > tr').each(function(i,e) {
      var porto = parseInt($(this).find('.porto').first().html());
      var rabattartikel = parseInt($(this).find('.rabattartikel').first().html());
      var keinrabatterlaubt = parseInt($(this).find('.keinrabatterlaubt').first().html());
      if(rabattartikel == 1)
      {
        var prozent = $(this).find('.rabatt_prozent').html()+'';
        $(this).data('total', -preis * parseFloat(prozent.replace(',','.')) / 100);
        $(this).find('.preisNormal td').first().html(((-preis * parseFloat(prozent.replace(',','.')) / 100).toFixed(2)+'').replace('.',','));
        $(this).find('.preisinp').val(((-preis * parseFloat(prozent.replace(',','.')) / 100).toFixed(2)+'').replace('.',','));
        $(this).find('.rabatt').val('0');
        $(this).find('.amount').val('1');
      }
    });
  }
  
  
  function getRabattBetrag(prozent, tax)
  {
    var preis = 0;
    $('#wk > tbody > tr').each(function(i,e) {
      var porto = parseInt($(this).find('.porto').first().html());
      if(isNaN(porto))porto = 0;
      var rabattartikel = parseInt($(this).find('.rabattartikel').first().html());
      if(isNaN(rabattartikel))rabattartikel = 0;
      var keinrabatterlaubt = parseInt($(this).find('.keinrabatterlaubt').first().html());
      if(isNaN(keinrabatterlaubt))keinrabatterlaubt = 0;
      if(porto == 0 && keinrabatterlaubt == 0 && rabattartikel == 0)
      {
        if(brutto)
        {
          var tbrutto = parseFloat($(this).data('total')); // find('.gesamt').html());
          if(isNaN(tbrutto))tbrutto = 0;
          // var tmwst = parseFloat($(this).find('.tax').html());
          // var tara = (tbrutto / 100) * tmwst;
          var tmwst = parseFloat($(this).find('.tax').html());
          if(isNaN(tmwst))tmwst = 0;
          var ltmwst = (tmwst + 100) / 100;
          var tnetto = tbrutto / ltmwst;
          var trabatt = parseFloat($(this).find('.rabatt').val().replace(',','.'));
          preis = preis + tbrutto;
        }else{
          var tnetto = parseFloat($(this).data('total')); // find('.gesamt').html());
          if(isNaN(tnetto))tnetto = 0;
          // var tmwst = parseFloat($(this).find('.tax').html());
          // var tara = (tbrutto / 100) * tmwst;
          var tmwst = parseFloat($(this).find('.tax').html());
          if(isNaN(tmwst))tmwst = 0;
          var ltmwst = (tmwst + 100) / 100;
          var tbrutto = tnetto * ltmwst;
          var trabatt = parseFloat($(this).find('.rabatt').val().replace(',','.'));
          preis = preis + tnetto;
        }

      }
    });
    
    var erg = -preis * parseFloat((prozent+'').replace(',','.')) / 100;
    if(isNaN(erg))erg = 0;
    return erg;
  }
  
  function addarticle(jdata, anz_teile) {
    var trs = $('#wk > tbody > tr');
    if(trs.length) {
      var $lastRow = trs[trs.length - 1];
      if(sumarticles == '1' && $lastRow.id == jdata['id']) {
        $($lastRow).find('.amount').val(parseFloat(($($lastRow).find('.amount').val()+'').replace(',','.'))+1);
        grabatt = 0;
        $('#wk > tbody > tr').each(function() {
          updatearttotal($(this));
        });
        updatetotals();
        grabatt = 0;

        $('#artikelnummerprojekt').focus();
        return;
      }
    }

    var newart = $('#defart').clone();
    newart.attr('id', jdata['id']);
    delete(jdata['id']);
    var tpreis = jdata['preis'];
    var seriennummern = 0;
    if(typeof jdata['seriennummern'] != 'undefined')seriennummern = jdata['seriennummern'];
    if(typeof jdata['rabattartikel'] != 'undefined' && typeof jdata['rabatt_prozent'] != 'undefined'
        && parseFloat(jdata['rabattartikel']) == 1)
    {
      jdata['preis'] = getRabattBetrag(jdata['rabatt_prozent'], jdata['tax']);
      tpreis = jdata['preis']+'';
      jdata['rabatt'] = 0;
    }else{
      tpreis = tpreis + '';
    }
    jdata['preis'] = tpreis.replace(',','.');
    jdata['preis'] = Math.round(jdata['preis'] * 100) / 100;
    if('amount' in jdata) {
      newart.find('.amount').val(jdata['amount'].replace(',','.'));
      delete(jdata['amount']);
    }
    if('rabatt' in jdata) {
      newart.find('.rabatt').val(parseFloat(jdata['rabatt']).toFixed(0));
      delete(jdata['rabatt']);
    }
    
    jQuery.each(jdata, function(i,e) {
      newart.find('.'+i).html(e);
    });
    if(newart.find('.taxorig').length) {
      newart.find('.taxorig').html(jdata['tax']);
    }
    if(steuerfrei) {
      newart.find('.tax').html('0%');
    }

    var preisAusgabe = parseFloat(newart.find('.preis').html()).toFixed(2).replace('.',',');
    var preisHtml = '';
    preisHtml += '<table width="100%" cellspacing="0" cellpadding="0">';

      preisHtml += '<tr class="preisNormal">';
        preisHtml += '<td>';
          preisHtml += preisAusgabe;
        preisHtml += '</td>';

        preisHtml += '<td>';
          preisHtml += '<a class="preisEditLink" href="javascript:;" onclick="changeArtikelPreis(this)">';
            preisHtml += '<img alt="ändern" src="themes/new/images/edit.svg" border="0" valign="middle">';
          preisHtml += '</a>';
          preisHtml += '<input class="seriennummern" type="hidden" value="' + seriennummern + '" />';
          preisHtml += '<input class="seriennummernliste" type="hidden" value="" />';
        preisHtml += '</td>';
      preisHtml += '</tr>';

      preisHtml += '<tr class="preisEdit" style="display: none;">';
        preisHtml += '<td>';
          preisHtml += '<input type="text" class="preisinp" name="preis" value="' + preisAusgabe + '" size="6">';
        preisHtml += '</td>';

        preisHtml += '<td>';
          //preisHtml += '<a class="preisSaveLink" href="javascript:;" onclick="saveArtikelPreis(this);"><img src="themes/new/images/edit.svg" border="0" valign="middle"></a>';
        preisHtml += '</td>';
      preisHtml += '</tr>';
      

    preisHtml += '</table>';
    newart.find('.preis').html(preisHtml);

    // newart.find('.preis').html('<span class="preisNormal">' + preisAusgabe + '</span>');
    // newart.find('.preis').append('<a class="preisEditLink"><img src="themes/new/images/edit.svg" border="0" valign="middle"></a>');
    // newart.find('.preis').append('<span class="preisEdit"><input type="text" name="preis" value="' + preisAusgabe + '" size="6" style="display:none;"></span>');

    var ges = ''+jdata['preis'];
    newart.find('.gesamt').html(ges.replace('.',','));
    newart.find('.nr').html($('#wk > tbody > tr').length + 1);
    newart.attr('title',jdata['kurztext_de']);

    if(typeof jdata['preis_genau'] != 'undefined')
    {
      newart.find('.preisgenau').html(jdata['preis_genau']);
      newart.find('.preisgenauex').html(1);
      newart.find('.gesamtpreisgenau').html(1);
    }
    if(typeof jdata['erloes'] != 'undefined')
    {
      newart.find('.erloes').html(jdata['erloes']);
    }
    
    $('#wk > tbody ').append(newart);
    
    if(typeof anz_teile == 'undefined')anz_teile = $('#wk > tbody > tr').length;
    
    if(anz_teile < 8)
    {
      $('#wkcontainer').animate({scrollTop : ($('#wk > tbody > tr').length+1)*27},(100 ));
    }else{
      
      $('#wkcontainer').animate({scrollTop : ($('#wk > tbody > tr').length+1)*27},(10 ));
    }
    
    grabatt = 0;
    $('#wk > tbody > tr').each(function() {
      updatearttotal($(this));
    });
    updatetotals();
    grabatt = 0;
    
    $('#artikelnummerprojekt').focus();
    
    
    // löschen eines Eintrags
    $('.delwkart').on('click', function() {
      // Zeilen neu nummerieren
      var row = $(this).parent().parent();
      var table = row.parent();
      row.remove();
      table.find('.nr').each(function(i) {
        $(this).html(i+1);
      });
      
      grabatt = 0;
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
      
      $('#artikelnummerprojekt').focus();
      return false;
    });
    
    
    
    // Verändern der Produktmenge
    $('.amount').on('keyup', function() {
      if(!$(this).val()) return;
      grabatt = 0;
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
    });
    
    $('.amount').on('change', function() {
      checkseriennummern(this);
    });

    $('.preisinp').on('keyup', function() {
      if(!$(this).val()) return;
      $(this).parent('table').first().parents('tr').first().find('.preisgenauex').html('');
      grabatt = 0;
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
    });

    // Verändern des Rabatts
    $('.rabatt').on('keyup', function(event) {

      var newval;
      var oldval = parseFloat($(this).val());

      if (event.which == 38) {
        newval = oldval+1;
      } else if (event.which == 40) {
        newval = oldval-1;
      } else {
       newval = $(this).val().replace(/[^0-9\.]/g,'');
      }

      if (newval < 0 || newval.length == 0) {
        newval = 0;
      }

      if (newval > 100) {
        newval = 0;
      }

      $(this).val(newval);
    });

    $('.rabatt').on('keyup', function() {
      if(!$(this).val()) return;
      grabatt = 0;
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
    });
  }

  
  function updatearttotal(art) {
    var rabatt = parseFloat(art.find('.rabatt').val()) / 100;
    // var total = parseFloat(art.find('.preis').html().replace(',','.')) * parseInt(art.find('.amount').val());

    var preis = art.find('.preisinp').val();
    var preis_genau = 0;
    var preisgenauex = ''+art.find('.preisgenauex').html();
    var preisgenau = ''+parseFloat(art.find('.preisgenau').html());
    if(preisgenauex != '')
    {
      preis = preisgenau;
    }
    
    if (typeof preis == "undefined") {
      return;
    }

    // wenn menge < 0 mache künstlich 1 draus hauptsache nicht negativ
    var amount = art.find('.amount').val();

    if(parseFloat(amount.replace(',', '.'))<0 || amount.search("-") >= 0)
    {
      grabatt = 0;
      amount=1;
      art.find('.amount').val(1);
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
    }

    var total = parseFloat( parseFloat(preis.replace(',', '.')) * parseFloat(amount.replace(',', '.')) );
    lrabatt = total * rabatt;
    if(typeof brutto == 'undefined' || !brutto)
    {
      // basierend auf org wert
      lrabatt = total * rabatt;
      var total = parseFloat( parseFloat(preis.replace(',', '.')) * parseFloat(amount.replace(',', '.')) -   (parseFloat(preis.replace(',', '.')) * parseFloat(amount.replace(',', '.')) / 100 * rabatt * 100) );
    }

    grabatt += lrabatt;

    art.data('total',total);
    total -= lrabatt;

    if(brutto)
    {
      if(preisgenauex!='')art.find('.gesamtpreisgenau').html(total);
      total = total.toFixed(2);
    } else {
      total = total + (parseFloat(preis.replace(',', '.')) * parseFloat(amount.replace(',', '.')) / 100 * rabatt * 100);
      if(preisgenauex!='')art.find('.gesamtpreisgenau').html(total);
      total = total.toFixed(2);
    }
    art.find('.gesamt').html(total.replace('.',','));
  }
  
  function updatetotals() {
    totaltaraNorm = 0.0;
    totaltaraErm = 0.0;
    totalbrutto = 0.0;
    totalnetto = 0.0;

    updateRabattartikel();
    var grabattbrutto = 0;
    $('#wk > tbody > tr').each(function(i,e) {
      var rabatt = parseFloat($(this).find('.rabatt').val()) / 100;
      if(typeof brutto != 'undefined' &&  brutto)
      {
        var tbrutto = parseFloat($(this).data('total')); // find('.gesamt').html());
        // var tmwst = parseFloat($(this).find('.tax').html());
        // var tara = (tbrutto / 100) * tmwst;
        var taxContent = $(this).find('.tax').html();
        var tmwst = parseFloat(
            taxContent.replace("%", "").replace(",", ".")
        );
        if(steuerfrei)tmwst = 0;
        var ltmwst = (tmwst + 100) / 100;
        var tnetto = tbrutto / ltmwst;
      }else{
        var tnetto = parseFloat($(this).data('total')); // find('.gesamt').html());
        // var tmwst = parseFloat($(this).find('.tax').html());
        // var tara = (tbrutto / 100) * tmwst;
        var tmwst = parseFloat($(this).find('.tax').html());
        if(steuerfrei)tmwst = 0;
        var ltmwst = (tmwst + 100) / 100;
        var tbrutto = tnetto * ltmwst;
        grabattbrutto += tbrutto * rabatt;
      }
      
      tnetto = Math.round(tnetto * 100) / 100;
      var tara = tbrutto - tnetto;

      var taxnorm = parseFloat($('#taxnorm').html());
      var taxerm  = parseFloat($('#taxerm').html());
      if(tmwst == taxnorm)      totaltaraNorm += tara;
      else if(tmwst == taxerm)  totaltaraErm += tara;
      totalbrutto += tbrutto;
      totalnetto += tnetto;
    });


    if(typeof brutto == 'undefined' || !brutto)
    {
      totalbrutto = parseFloat((Math.round(totalbrutto*100, 2)/100.0).toFixed(2));
    }

    grabatt     = parseFloat(grabatt);
    //if(typeof brutto == 'undefined' || !brutto)grabatt = parseFloat(grabattbrutto);
    grabatteur  = parseFloat(grabatteur);


    // Minimal 0
    if (grabatteur.length == 0 || isNaN(grabatteur)) {
      grabatteur = 0;
    }

    // Minimal 0
    if (grabatt.length == 0 || isNaN(grabatt)) {
      grabatt = 0;
    }


    if(typeof brutto != 'undefined' &&  brutto)
      var totaltotal = totalbrutto - grabatt - grabatteur;
    else
      var totaltotal = totalbrutto - grabatteur;
    
    /*
    totaltara19 = Math.round(totaltara19 * 100) / 100;
    totaltara7 = Math.round(totaltara7 * 100) / 100;
    totalbrutto = Math.round(totalbrutto * 100) / 100;
    totalnetto = Math.round(totalnetto * 100) / 100;
    */
    
    if(steuerfrei)
    {
      totaltaraNorm = 0;
      totaltaraErm = 0;
    }
    
    totaltaraNorm = totaltaraNorm.toFixed(2);
    totaltaraErm  = totaltaraErm.toFixed(2);
    totalbrutto = totalbrutto.toFixed(2);
    totalnetto  = totalnetto.toFixed(2);
    totaltotal  = totaltotal.toFixed(2);
    grabatt     = grabatt.toFixed(2);
    grabatteur  = grabatteur.toFixed(2);
    
    
    $('#sunetto').  html(totalnetto.replace('.',','));
    $('#taranorm').   html(totaltaraNorm.replace('.',','));
    $('#taraerm').    html(totaltaraErm.replace('.',','));
    $('#subrutto'). html(totalbrutto.replace('.',','));
    $('#trabatt').  html('-' + grabatt.replace('.',','));
    $('#trabatteur').html('-' + grabatteur.replace('.',','));
    $('#sutotal').  html(totaltotal.replace('.',','));
    
    
    var anzteile = 0;
    $('#wk > tbody > tr').each(function(i,e) {
      var portoartikel = parseInt($(this).find('.porto').html());
      var rabattartikel = parseInt($(this).find('.rabattartikel').html());
      if(portoartikel == 0 && rabattartikel == 0)
      {
        var anzt = parseFloat( ($(this).find('.amount').val()+'').replace(',','.') );
        if(!isNaN(anzt))anzteile += anzt;
      }
    });
    $('#anzteile').html((anzteile+'').replace('.',','));
  }
  
  function VorgangNeu()
  {
    if(vorgangname = prompt('Bitte neue Bezeichnung eingeben'))
    {
      $('#vorgangname').val(vorgangname);
      storePOSSession('neuervorgang');
    }
    
  }
  
  function LadeVorgang(vorgangid)
  {
    resetFields();
    $('#tabs-1').removeData('on');
    $('#vorgangladendiv').dialog('close');
    loadPOSSession(kassiererId, vorgangid);
  }

  function vorgangspeichern()
  {
    if(true || $('#vorgangname').val()+'' != '')
    {
      storePOSSession('neuervorgang');
    }else{
      storePOSSession('storesess');
    }
    resetFields();
  }
  
  function Deletevorgang(vorgangid)
  {
    if(confirm('Wollen Sie den Vorgang wirklich löschen?'))
    {
      $.ajax({
          url: 'index.php?module=pos&action=list&action=loadsess&cmd=deletevorgang',
          type: 'POST',
          dataType: 'json',
          data: { vorgang: vorgangid},
          success: function(jdata) {
            var oTable = $('#pos_vorgaenge').DataTable( );
            oTable.ajax.reload();
          }
      });
    }
    
  }

  function getPositions()
  {
    var pos = [];
    $('#wk > tbody > tr').each(function(i,e) {
      var nart = {};
      nart['id']      = $(this).prop('id');
      nart['artikel'] = $(this).find('.artikel').html().replace(/\"/g,'&quot;');
      nart['kurztext_de'] = $(this).prop('title').replace(/\"/g,'&quot;');
      nart['nummer']  = $(this).find('.nummer').html();
      nart['tax']     = $(this).find('.tax').html();
      if($(this).find('.tax').length) {
        nart['taxorig'] = $(this).find('.tax').html();
      }
      nart['preis']   = $(this).find('.preisinp').val();
      nart['preisgenauex']   = $(this).find('.preisgenauex').html();
      nart['preisgenau']   = $(this).find('.preisgenau').html();
      nart['erloes']   = $(this).find('.erloes').html();
      nart['amount']  = $(this).find('.amount').val().replace(',','.');
      nart['rabatt']  = $(this).find('.rabatt').val();
      nart['anabregs_text'] = $(this).find('.anabregs_text').html().replace(/\"/g,'&quot;');
      nart['rabattartikel'] = $(this).find('.rabattartikel').html();
      nart['rabatt_prozent'] = $(this).find('.rabatt_prozent').html();
      nart['keinrabatterlaubt'] = $(this).find('.keinrabatterlaubt').html();
      nart['porto'] = $(this).find('.porto').html();
      nart['seriennummernliste'] = $(this).find('.seriennummernliste').val();

      pos.push(nart);
    });
    return pos;
  }
  
  function storePOSSession(actioncomm) {
    var storeobj = {};
    storeobj['kasid'] = $('#tabs-1').data('on');
    if ($("#tabs-1").data('sid')) storeobj['sid'] = $("#tabs-1").data('sid');
    var gezahlt = 0;
    gezahlt = $('#gezahlt').val();
    var tip = $('#tip').val();
    storeobj['addr'] = {};
    if(steuerfrei) {
      storeobj['steuerfrei'] = 1;
    }
    if(ustid != '')storeobj['ustid'] = ustid;
    $('#ob1 span').each(function(i,e) {
      var tid = $(this).prop('id').split('t_');
      storeobj['addr'][tid[1]] = $(this).html();
    });
    // storeobj['addr']['land'] = $('#ob1 #t_land').html();
   
    if(actioncomm==="finsess")
    storeobj['addr']['infoauftragserfassung'] = $.base64Encode( $('#infoauftragserfassung_pos').val() );
    else
    storeobj['addr']['infoauftragserfassung'] = $('#infoauftragserfassung_pos').val();
    // ENDE ANPASSUNG FUER Uebertragung HTML in JSON 

    //storeobj['addr']['infoauftragserfassung'] = $('#infoauftragserfassung_pos').val();
    
    storeobj['addrid'] = $('#adresse').val();
    var ktype = $('input[name=ktype]:checked').val();
    
    if(ktype === 'lk') storeobj['addrid'] = lkaddr;
    else if(ktype === 'nk') storeobj['addrid'] = 'NEW';
    
    storeobj['addrstore'] = "nostore";
    if($('#storenewcust').is(':checked')) storeobj['addrstore'] = "store";
    if (saveCust) {
      storeobj['addrstore'] = "store";
      saveCust = false;
    }
    storeobj['wk'] = [];
    $('#wk > tbody > tr').each(function(i,e) {
      var nart = {};
      nart['id']      = $(this).prop('id');
      nart['artikel'] = $(this).find('.artikel').html().replace(/\"/g,'&quot;');
      nart['kurztext_de'] = $(this).prop('title').replace(/\"/g,'&quot;');
      nart['nummer']  = $(this).find('.nummer').html();
      nart['tax']     = $(this).find('.tax').html();
      if($(this).find('.taxorig').length) {
        nart['taxorig']     = $(this).find('.taxorig').html();
      }
      nart['preis']   = $(this).find('.preisinp').val();
      nart['preisgenauex']   = $(this).find('.preisgenauex').html();
      nart['preisgenau']   = $(this).find('.preisgenau').html();
      nart['amount']  = $(this).find('.amount').val().replace(',','.');
      nart['rabatt']  = $(this).find('.rabatt').val();
      nart['anabregs_text'] = $(this).find('.anabregs_text').html().replace(/\"/g,'&quot;');
      nart['rabattartikel'] = $(this).find('.rabattartikel').html();
      nart['rabatt_prozent'] = $(this).find('.rabatt_prozent').html();
      nart['keinrabatterlaubt'] = $(this).find('.keinrabatterlaubt').html();
      nart['porto'] = $(this).find('.porto').html();
      nart['seriennummernliste'] = $(this).find('.seriennummernliste').val();

      storeobj['wk'].push(nart);
    });
    
    
    storeobj['ptype']   = $('#payment input[name=ptype]:checked').val();
    storeobj['rtype']   = $('#retyp input[name=rtype]:checked').val();
    
    storeobj['inbem']   = $('#inbem').val();
    storeobj['freit']   = $('#freit').val();
    grStr = $('#grabatt').html();
    grArr = grStr.split('%');
    storeobj['grabatt'] = grArr[0];
    storeobj['grabatteur'] = grabatteur;
    storeobj['gezahlt'] = gezahlt;
    storeobj['tip'] = tip;
    storeobj['soll'] = $('#sutotal').text().replace(',', '.');
    storeobj['kassiererId'] = kassiererId;
    var actioncomm2 = actioncomm;
    if(actioncomm === 'belegabrechnen')
    {
      storeobj['cmd'] = 'belegabrechnen';
      storeobj['rechnungid'] = $('#rechnungid').val();
      storeobj['belegtyp'] = $('#belegtyp').val();
      actioncomm2 = 'finsess';
    }
    if(actioncomm === 'teilstornieren')
    {
      storeobj['cmd'] = 'teilstornieren';
      storeobj['rechnungid'] = $('#rechnungid').val();
      storeobj['belegtyp'] = $('#belegtyp').val();
      actioncomm2 = 'finsess';
    }
    if(actioncomm === 'komplettstornieren')
    {
      storeobj['cmd'] = 'komplettstornieren';
      storeobj['rechnungid'] = $('#rechnungid').val();
      storeobj['belegtyp'] = $('#belegtyp').val();
      actioncomm2 = 'finsess';
    }
    if(actioncomm === 'stornieren')
    {
      storeobj['cmd'] = 'stornieren';
      actioncomm2 = 'finsess';
    }
    if(actioncomm === 'neuervorgang')
    {
      storeobj['cmd'] = 'neuervorgang';
      storeobj['vorgangname'] = storeobj['addr']['name'];//$('#vorgangname').val();
      actioncomm2 = 'storesess';
    }    
    
    var vorgangid = $('#vorgangid').val();
    if(vorgangid)storeobj['vorgangid'] = vorgangid;
    storeobj['randnumber'] = randnumber;
    var jsonString = JSON.stringify(storeobj);
    
    $.ajax({
        url: 'index.php?module=pos&action='+actioncomm2,
        type: 'POST',
        dataType: 'json',
        data: { sessdata: jsonString},
        success: function(jdata) {
          if(actioncomm === 'finsess')
          {
            $('#finconfconf').dialog('open');
          }
          else if(actioncomm === 'resetsess') resetFields();
          else if(actioncomm === 'stornieren')
          {
            resetFields();
            $('#finconfconf').dialog('open');
          }
          else if(actioncomm === 'belegabrechnen')
          {
            stornoabbr();
            $('#finconfconf').dialog('open');
          }
          else if(actioncomm === 'teilstornieren')
          {
            stornoabbr();
            $('#finconfconf').dialog('open');
          }
          else if(actioncomm === 'komplettstornieren')
          {
            stornoabbr();
            $('#fauftrag').each(function(){$(this).val('');});
            $('#frechnung').each(function(){$(this).val('');});
            $('#finconfconf').dialog('open');
          }
          else $('#storeconfconf').dialog('open');
          
          $('#artikelnummerprojekt').focus();
          setAbschlusstimer();
        }
    });

    /*$.getJSON( '', {
      module: "pos",
      action: actioncomm,
      sessdata: jsonString
    }).done(function( jdata ) {
      if(actioncomm == 'finsess') $('#finconfconf').dialog('open');
      else if(actioncomm == 'resetsess') resetFields();
      else $('#storeconfconf').dialog('open');
      
      $('#artikelnummerprojekt').focus();
    });*/
  }


  function setAbschlusstimer(){
    var logouttimeabschluss = parseInt($('#logoutkas').data('logouttimeabschluss'));
    if(logouttimeabschluss > 0) {
      if(logouttimerabschluss) {
        clearTimeout(logouttimerabschluss);
      }
      logouttimerabschluss = setTimeout(function () {
        if(kassiererId) {
          $('#logoutkas').trigger('click');
        }
      }, logouttimeabschluss * 1000);
    }
  }

  function showteilstorno(jdata)
  {
    $('#stornotab table tbody').find('tr').remove();
    if(typeof jdata['Fehler'] != 'undefined')
    {
      stornoabbr();
      alert(jdata['Fehler']);
      return;
    }
    
    if(typeof jdata['zahlungsweise'] != 'undefined')
    {
      switch(jdata['zahlungsweise'])
      {
        case 'bar':
          $('#bar').each(function(){$(this).prop('checked',true)});
        break;
        case 'ec':
        case 'eckarte':
          $('#ec').each(function(){$(this).prop('checked',true)});
        break;
        case 'kredit':
        case 'kreditkarte':
          $('#kredit').each(function(){$(this).prop('checked',true)});
        break;        
        case 'ueb':
        case 'rechnung':
          $('#ueb').each(function(){$(this).prop('checked',true)});
        break;
        default:
          $('#bar').each(function(){$(this).prop('checked',true)});
        break;
      }
    }
    
    if(typeof jdata['belegtyp'] != 'undefined')$('#belegtyp').val(jdata['belegtyp']);
    if(typeof jdata['belegid'] != 'undefined')$('#rechnungid').val(jdata['belegid']);
    if(typeof jdata['steuerfrei'] != 'undefined')$('#teilstornosteuerfrei').val(jdata['steuerfrei']);
    if(typeof jdata['ustid'] != 'undefined')$('#teilstornoustid').val(jdata['ustid']);
    
    if(typeof jdata['originkundennummer'] != 'undefined')
    {
      $('#adresse').val(jdata['originkundennummer']);
      $('#loadaddr').prop('checked',true);
    }
    $.each(jdata['wk'], function(i,e) {
      addarticlestorno(e);
    });
    $('#stornotab').show();
  }
    
  function showdata(jdata)
  {
    resetFields();
    
    if(typeof jdata['steuerfrei'] != 'undefined' && (jdata['steuerfrei'] == '1' || jdata['steuerfrei'] == 1)) {
      steuerfrei = true;
    }
    else{
      steuerfrei = false;
    }
    if(typeof jdata['ustid'] != 'undefined')
    {
      ustid = jdata['ustid'];
    }else{
      ustid = '';
    }
    
    if(typeof jdata['Fehler'] != 'undefined')
    {
      stornoabbr();
      alert(jdata['Fehler']);
      return false;
    }

    if(typeof jdata['zahlungsweise'] != 'undefined')
    {
      switch(jdata['zahlungsweise'])
      {
        case 'bar':
          $('#bar').each(function(){$(this).prop('checked',true)});
        break;
        case 'ec':
        case 'eckarte':
          $('#ec').each(function(){$(this).prop('checked',true)});
        break;
        case 'kredit':
        case 'kreditkarte':
          $('#kredit').each(function(){$(this).prop('checked',true)});
        break;        
        case 'ueb':
        case 'rechnung':
          $('#ueb').each(function(){$(this).prop('checked',true)});
        break;
        default:
          $('#bar').each(function(){$(this).prop('checked',true)});
        break;
      }
    }
    if(typeof jdata['belegtyp'] != 'undefined')$('#belegtyp').val(jdata['belegtyp']);
    $('#rechnungid').val(jdata['belegid']);
    $.each(jdata['addr'], function(i, e) {
      $('#ob1 #t_'+i).html(e);
    });
    var anzteile = $(jdata['wk']).length;
    $.each(jdata['wk'], function(i,e) {
      addarticle(e, anzteile);
    });
    
    if(typeof jdata['status'] != 'undefined' && jdata['status'] == 'abgeschlossen')
    {
      $('#wkcontainer input.amount').prop('disabled', true);
      $('#wkcontainer input.rabatt').prop('disabled', true);
      $('#loadartsubmit').prop('disabled', true);
    }else{
      $('#loadartsubmit').prop('disabled', false);
      $('#wkcontainer input.amount').prop('disabled', false);
      $('#wkcontainer input.rabatt').prop('disabled', false);
    }
    
    if(typeof jdata['originkundennummer'] != 'undefined')
    {
      $('#adresse').val(jdata['originkundennummer']);
      $('#loadaddr').prop('checked',true);
    }
    $('#wk .editname').remove();
    $('#wk .preisEditLink').remove();
    $('#wk .delwkart').remove();
    $('#wl input').prop('disabled', true);
    $('#wl input').prop('readonly', true);
    $('#finsale').hide();
    //$('#abortsale').hide();
    $('#abbrechnenbutton').show();
    $('#stornoabbrechen').show();
    $('#abbrechnenbutton').css('display','inline-block');
    $('#stornoabbrechen').css('display','inline-block');
    $('#komplettstornobutton').hide();
    $('#stornobutton').hide();
    $('#belegeladendiv').dialog('close');
    $('#stornotab').hide();
    return true;
  }
    
  function loadPOSSession(kasid, vorgangid) {
    if(typeof vorgangid == 'undefined')
    {
      vorgangid = 0;
      $('#vorgangid').val('');
    }else{
      if(vorgangid > 0)
      {
        $('#vorgangid').val(vorgangid);
      }else{
        $('#vorgangid').val('');
      }
    }
    
    // check for pending sessions
    $.getJSON( '', {
      module: "pos",
      action: "loadsess",
      kasid: kasid, vorgang:vorgangid
    }).done(function( jdata ) {
      randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
      // no stored session found
      if('check' in jdata && jdata['check'] == "noss") {
        return false;
      }
    
      if('sid' in jdata) {
        $("#tabs-1").data('sid', jdata['sid']);
      }
  
      if (jdata.kassiererId != kassiererId) {
        kassiererId = jdata.kassiererId;
      }

      $.each(jdata['addr'], function(i, e) {
        $('#ob1 #t_'+i).html(e);
      });
      // set address radio button accordingly
      //$('input[name=ktype]').removeProp('checked');
      // Kundenid aus input "Stammkunde" löschen, falls neuer kunde oder laufkundschaft
      $('#adresse').val('');
      if(jdata['addrid'] == "NEW") {
        $('input[name=ktype][value=nk]').prop('checked',true);
        $('input[name=ktype][value=nk]').attr('checked',true);
      } else if(jdata['addrid'] == lkaddr) {
        //$('#adjcust').show();
        $('input[name=ktype][value=lk]').prop('checked',true);
        $('input[name=ktype][value=lk]').attr('checked',true);
      } else {
        $('#adjcust').show();
        $('input[name=ktype][value=sk]').prop('checked',true);
        $('input[name=ktype][value=sk]').attr('checked',true);
        $('#adresse').val(jdata['addrid']);
      }

      // Warenkorb Anfang
      var anzteile = $(jdata['wk']).length
      $.each(jdata['wk'], function(i,e) {
        addarticle(e, anzteile);
      });
      
      if(jdata['grabatt']) {
        if(jdata['grabatt']>0)
          $('#wk tbody .rabatt').val(jdata['grabatt']);
        $("#grabatt").val(jdata['grabatt']+'%');
      }
      if(jdata['grabatteur']) {
        grabatteur = jdata['grabatteur'];
      }
      
      grabatt = 0;
      $('#wk > tbody > tr').each(function() {
        updatearttotal($(this));
      });
      updatetotals();
      grabatt = 0;
      // Warenkorb Ende
      
      $("#"+jdata['ptype']).prop('checked','checked');
      $("#"+jdata['rtype']).prop('checked','checked');

      if (typeof jdata.inbem != "undefined") {
        $("#inbem").val(jdata.inbem);  
      }
      if (typeof jdata.freit != "undefined") {
        $("#freit").val(jdata.freit);  
      }
      /*
      $("#inbem").val(jdata['inbem']);
      $("#freit").val(jdata['freit']);
      */
      if(typeof jdata['sesssionbezeichnung'] != "undefined")
      {
        $('#vorgangname').val(jdata['sesssionbezeichnung']);
      }
      $('#artikelnummerprojekt').focus();
    });

  }
    
    
  function logoutkas() {
    $.getJSON( '', {
      module: "pos",
      action: "logoutkass"
    }).done(function( jdata ) {
      $('#tabs-1 input').prop('disabled','disabled');
      $('#loadkass input').removeAttr('disabled');
      $('#tabs-1').removeData('on');
      // $('#logoutkas').hide();
      $('#loggedinkas').html('');
      $('#filiale').html('');
      $('#kashin').dialog('open');
      randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
    });
  }
  
  
  function loginkas(kanr) {

    if ($("#tabs-1").data('on')) {
      if($("#tabs-1").data('on') == kanr) {
        alert('Kassierer ist bereits angemeldet');
        return false;
      }
      storePOSSession('storesess');
      resetFields();
      $('#tabs-1').removeData('on');
    }
    
    $.getJSON( '', {
      module: "pos",
      action: "loadkass",
      kanr: kanr
    }).done(function( data ) {

      if(data.check != "ERR") {
        $('#tabs-1 input').removeAttr('disabled');
        $('#tabs-1').data('on',kanr);
        lkaddr = data.lkadresse; 
        // $('#logoutkas').show();
        $('#loggedinkas').html(' ' + data.kname);
        $('#filiale').html(' ' + data.filiale);
        //$('#kanr').html(kanr);
        kassiererId = kanr;

        loadPOSSession(kanr);
        window.location.reload();
      } else {
        kassiererId = null;
        alert('Kassierer nicht vorhanden');
        logoutkas();
        randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
      }
    });
  }
  
    
  function resetFields() {
    steuerfrei = false;
    ustid = '';
    randnumber = (Math.random() * (99999999 - 10000000)) + 10000000;
    $('#loadartsubmit').prop('disabled', false);
    $('#wkcontainer input.amount').prop('disabled', false);
    $('#wkcontainer input.rabatt').prop('disabled', false);
    belegabrechnenaktiv = false;
    $('#vorgangid').val('');
    // Adressen Felder
    $('#modalcont input[type=text]').val('');
    $('#ob1 span').html('');
    $('#adresse').val('');
    $('input[name=ktype]').removeProp('checked');


    $('input[name=ktype][value=lk]').prop('checked',true);
    $('.rechnungsadresse_container').find('#t_name').text('Laufkundschaft');
    //$('input[name=ktype][value=sk]').prop('checked',true);

    $('#wk tbody').html('');
    $('#grabatt').text('0%');

    grabatteur = '0.00';
    grabatteur = parseFloat(grabatteur.replace(',','.'));

    grabatt = '0.00';
    grabatt = parseFloat(grabatt.replace(',','.'));

    // $('#trabatteur').val(0.0);
    // $('#trabatteur').text('0.0);

    grabatt = 0;
    updatetotals();
    $('#artikelnummerprojekt').val('');
    
    
    $('#inbem').val('');
    $('#freit').val('');
    
    
    $('#payment input:checked').prop('checked', false);
    $('#retyp input:checked').prop('checked', false);
    if(!zahlungselzwang) $($('#payment input[name=ptype]')[0]).prop('checked', true);
    $($('#retyp input[name=rtype]')[0]).prop('checked', true);
    
    $("#tabs-1").removeData('sid');

  }

function tinyMCEsetup() {

  

  tinyMCE.init({
  selector: '#infoauftragserfassung_pos',
  mode: "textareas",
  theme: "modern",
  menubar: false,
  statusbar: false,
  toolbar_items_size: 'small',
  width: "100%",
  entity_encoding: "raw",
  element_format: "html",
  force_br_newlines: true,
  force_p_newlines: false,
  plugins: [ "textcolor" ],
  toolbar1: "bold italic underline strikethrough |  styleselect formatselect fontsizeselect | searchreplace | forecolor backcolor | restoredraft",
  toolbar2: "",
  toolbar3: "",
  setup: function (editor) {
      editor.on('keyup', function () {

          $('textarea#infoauftragserfassung_pos').val(tinyMCE.get('infoauftragserfassung_pos').getContent());


      });
    }
  });

}
 
function changeArtikelPreis(container) {

  var elem = $(container);
  elem.parent().parent().next().show();
  elem.parent().parent().hide();

  elem.parent().parent().next().find('input').focus();
  elem.parent().parent().next().find('input').keydown(function(e) {


    if (e.which == 13) {

      var newVal = $(this).val();
      if (newVal == '') {
        newVal = 0;
      }

      newVal = newVal.replace(',', '.');
      newVal = parseFloat(newVal).toFixed(2);
      newVal = newVal.replace('.', ',');

      $(this).parent().parent().prev().children('td').first().text( newVal );
      $(this).parent().parent().hide();
      $(this).parent().parent().prev().show();

    } else if ($.inArray(e.keyCode, [45, 46, 8, 9, 27, 13, 110, 188,109]) !== -1 ||
       // Allow: Ctrl+A, Command+A
      (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) || 
       // Allow: home, end, left, right, down, up
      (e.keyCode >= 35 && e.keyCode <= 40)) {
       // let it happen, don't do anything
       return;
    }

    // Ensure that it is a number and stop the keypress
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) && e.keyCode != 173) { // 173 = minus
        e.preventDefault();
    }

  });

  elem.parent().parent().next().find('input').on('focusout',function() {

    var newVal = $(this).val();
    if (newVal == '') {
      newVal = 0;
    }


    newVal = newVal.replace(',', '.');
    newVal = parseFloat(newVal).toFixed(2);
    newVal = newVal.replace('.', ',');

    $(this).parent().parent().prev().children('td').first().text( newVal );
    $(this).parent().parent().hide();
    $(this).parent().parent().prev().show();
    
  });
} 


function PosAbschlussZellenwert(zelle)
{
  var anzahl = $("[name="+zelle+"]").val();

  //TODO nur ganze zahlen oder nichts erlauben

  var wert = zelle.replace('eur00','0.0');
  wert = wert.replace('eur0','0.');
  wert = wert.replace('eur','');
  wert = wert * anzahl;

  wert = parseFloat(wert).toFixed(2);
  wert = wert.replace('.', ',');

  $("[name="+zelle+"label]").html(wert);
  PosAbschlussCalcall();
}

function PosAbschlussCalcall()
{
  var scheine = 0;
  var muenzen = 0;
  $('div.SCHEINE').each(function(){
    var schein = $(this).html().replace(',','.');
    if(schein == '')schein = 0;
    scheine = scheine + parseFloat(schein);
  });
  $('div.MUENZEN').each(function(){
    var muenze = $(this).html().replace(',','.');
    if(muenze == '')muenze = 0;
    muenzen = muenzen + parseFloat(muenze);
  });
  var gesamt = scheine + muenzen;
  scheine =  addCommas(scheine.toFixed(2));
  muenzen = addCommas(muenzen.toFixed(2));
  var gesamt2 = addCommas(gesamt.toFixed(2));
  $('#gesamtscheine').html(scheine +' EUR');
  $('#gesamtmuenzen').html(muenzen +' EUR');
  $('#gesamt').html(gesamt2 + ' EUR');
  var soll = $('#soll').html().replace(' EUR','');
  soll = soll.replace('.','');
  soll = soll.replace(',','.');
  soll = parseFloat(soll);
  var diff = gesamt - soll;
  if(diff == 0)
  {
    $('#differenz').html('0,00 EUR');
    $('#korrekturtext').html('Es ist keine Differenz vorhanden');
  }else{
    diff = addCommas(diff.toFixed(2));
    $('#differenz').html('<span style="color:red">'+diff+' EUR</span>');
    $('#korrekturtext').html('Es ist eine Differenz von '+diff+' EUR vorhanden. Beim Festschreiben wird diese als Differenzbuchung automatisch angelegt und verbucht.');
  }  
}

function addCommas(nStr)
{
    nStr += '';
    var x = nStr.split('.');
    var x1 = x[0];
    var x2 = x.length > 1 ? ',' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + '.' + '$2');
    }
    return x1 + x2;
}