﻿var isValidSplitting;
var splittingInitialized;

function Add()
{
    var partCount = PartCount();
    if (partCount >= 10)
    {
        return;
    }

    SetPartCount(partCount + 1); // Anzahl hochzählen

    AddPart(partCount + 1);

    sum();
}

// Anzahl der vorhanden Lieferaufteiungen
function PartCount() 
{ 
    return parseInt($(".value").length, 10);
}

// Anzahl der Lieferauteilungen aus Dropdown Aufteilung
function PartCountSelectorValue()
{
    return parseInt($("#count").val(), 10); 
}

// Initialisieren mit einer Bestimmten Anzahl
function SetPartCount(val)
{
    $("#count").val(val); 
}

// Entfernt die letzte Lieferaufteilung
function Remove()
{
    var partCount = PartCount();
    if (partCount < 3)
    {
        return;
    }

    SetPartCount(partCount - 1);

    $(".part:last").remove();

    sum();
}

// fügt eine neue Lieferaufteilung hinzu
function AddPart(partNumber)
{
    // Element Clonen
    var element = $(".part:last").clone(true);

    // Id neu setzen
    element[0].id = "p" + partNumber;

    // Element nach letztem einfügen
    $(".part:last").after(element)
	.after("<br class='clear'/>");

    // Lieferaufteilung Text setzen
    $(".part:last .splittingtext").html($(".parttext").html() + "&nbsp;" + partNumber + ":");    
}

// Anzeigen des OK Button
function ShowOk(element) { $(element.parentNode).addClass("selected"); }

// ausblenden des OK Button
function HideOk(element) { $(element.parentNode).removeClass("selected"); sum(); }

// Gibt die Gesamtauflage anhand der aktuellen Auflage zurück
function TotalAmount() {return GetCirculation(); }

function sum()
{
    if (SplittingChecked() == false)
    {
        // Splitting has not been selected - hide splitting
        $('#TotalAmountDiv').hide();
        $('#DeliverySplittingdiv').hide();
        return;
    }

    // Splitting has been selected - show splitting
    $('#TotalAmountDiv').show();
    $('#DeliverySplittingdiv').show();

    var total = TotalAmount(); // get total circulation
    var parts = $(".value");   // get any part

    var containsInvalidSplitting = new Boolean();

    if (!splittingInitialized || splittingInitialized == false)
    {
        InitializeSplitting(total, parts);
        splittingInitialized = true;
    }

    var sum = new Number();
    sum = 0;

    for (var i = 0; i < parts.length; i++)
    {
        var current = parseInt(parts[i].value);
        // Check for invalid splittings
        if (isNaN(current) || current == 0)
        {
            containsInvalidSplitting = true;
            sum += 0;
        }
        else
        {
            sum += current;
        }
    }

    var remaining = new Number();
    // calculate remaining amount
    remaining = total - sum;

    $("#remaining").text(remaining);
    isValidSplitting = (remaining == 0) && (containsInvalidSplitting == false);

    // request new calculation with current splitting
    if (isValidSplitting)
    {
        $('#splittingerror').hide();
        $('.ErrorMessage').hide();
    
        var send = '{splittings:[';
        for (var i = 0; i < parts.length; i++)
        {
            send += parts[i].value;
            if (i < parts.length - 1)
            {
                send += ',';
            }
        }
        send += ']}';

        var x = CoreRequestConfiguration('SetSplitting', send, false);
        if (x == "x")
        {
            alert("error");
            __doPostBack('');
            return;
        }
        else if (x == "noconf")
        {
            alert("noconf");
            return;
        }

        Calculate();
//        // display new calculated prices
//        var array = x.split(';');

//        $('#netSPAN').text(array[0]);
//        $('#vatSPAN').text(array[1]);
//        $('#finalPriceSPAN').text(array[2]);
    }
    else
    {
        $('.ErrorMessage').show();
    }
}

function InitializeSplitting(total, parts)
{
    var count = new Number();
    count = parts.length;
    
    var even = new Boolean();
    even = (total % count) == 0;

    if (even)
    {
        var amount = total / count;

        for (var i = 0; i < parts.length; i++)
        {
            parts[i].value = amount;
        }
    }
    else
    {
        var amount = Math.floor(total / count);
        var overhead = total % count;

        for (var i = 0; i < parts.length; i++)
        {
            parts[i].value = amount + (i == 0 ? overhead : 0);
        }
    }
}

function None()
{ }

// Gibt an ob Lieferaufteilung gewählt ist.
function SplittingChecked()
{
    return $('input.splitting')[0].checked;
}

$(document).ready(function()
{
    $('input.value').keydown(function(e)
    {
        if (IsValidKey(e.keyCode) == false)
        {
            e.preventDefault();
        }
    });

    var content = $('span.parttext').html();

    var elements = $('span.splittingtext');

    for (var i = 0; i < elements.length; i++)
    {
        elements[i].innerHTML = content + '&nbsp;' + (i + 1) + ':';
    }
});

function IsValidKey(keyCode)
{
    //     backspace       del              numbers                              keypad
    return keyCode == 8 || keyCode == 46 || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105);
}