﻿function DetermineReadyExamplesAction()
{
    try {
        var rucksackNumber = Number(document.getElementById("Select1").selectedIndex);
        var determineReportsMain = document.getElementById("DetermineReportsMain");
        if(rucksackNumber >= 0) {
            var response = Default.CalculateReadyExamples(rucksackNumber);
            determineReportsMain.innerHTML = response.value;
            determineReportsMain.style.visibility = 'visible';
        }
        else
            determineReportsMain.innerHTML = ""; 
    } catch(e) {
        alert("CalculateOptimization exception: " + e.message);
    }
}

var CalculateOptimalDecisionIntervalID;
var CalculateOptimalDecisionWithNumberIntervalID;

function CalculateOptimalDecisionWithNumberAction()
{
    try {
        var rucksackNumber = Number(document.getElementById("DetermineRucksackNumberText").value);
        if(!(Number(rucksackNumber)))
        {
            alert("Input data has an incorrect format. Pleas try again.");
            return;
        }
        var response = Default.CalculateReadyExamplesWithNumberAsync(rucksackNumber - 1, "CheckingGetOptimalDecisionWithNumberResponce");
        if(response.value == "")
            CalculateOptimalDecisionWithNumberIntervalID = setInterval("CheckingGetOptimalDecisionWithNumberResponce();", 500);
        else {
            var determineReportsMain = document.getElementById("DetermineReportsMain");
            determineReportsMain.innerHTML = response.value;
            determineReportsMain.style.visibility = 'visible';
        }
    } catch(e) {
        alert("CalculateOptimization exception: " + e.message);
    }
}

function CalculateOptimalDecision()
{
    try {
        var response = Default.CalculateOptimizationAsync("CheckingGetOptimalDecisionResponce");
        CalculateOptimalDecisionIntervalID = setInterval("CheckingGetOptimalDecisionResponce();", 500);
    } catch(e) {
        alert("CalculateOptimization exception: " + e.message);
    }
}

//function CheckingCalculateOptimalDecisionResponce()
//{
//    var response = Default.CheckingCalculateOptimalDecision();
//    if(response.value == "End") {
//        clearInterval(CalculateOptimalDecisionIntervalID);
//    }
//    else if(response.value != "")
//    {
//        var determineReportsMain = document.getElementById("DetermineReportsMain");
//        determineReportsMain.innerHTML = response.value;
//        determineReportsMain.style.visibility = 'visible';
//    }
//}

function OnExampleChange()
{
    try {
//        var rucksackNumber = Number(document.getElementById("Select1").selectedIndex);
//        var determineReportsMain = document.getElementById("ReadyExampleView");
//        if(rucksackNumber >= 0) {
//            var response = Default.GetReadyExamplesView(rucksackNumber);
//            determineReportsMain.innerHTML = response.value;
//        }
//        else 
//            determineReportsMain.innerHTML = "";
    } catch(e) {
        alert("OnExampleChange exception: " + e.message);
    }
}

function OwnExampleAddMoreAction()
{
    try {
        var sQLInputData = document.getElementById("OwnExampleInputDataPanel");
        var inputDataCount = document.getElementById("OwnExampleInputDataCount");
        var prevCostValues = new Hash();
        var prevVolumeValues = new Hash();
        var newCount = 1 + Number(inputDataCount.innerHTML);
        for(var i = 1; i < newCount; i++) {
            prevCostValues["OwnExampleSQLAddCost" + i] = document.getElementById("OwnExampleSQLAddCost" + i).value;
            prevVolumeValues["OwnExampleSQLAddVolume" + i] = document.getElementById("OwnExampleSQLAddVolume" + i).value;
        }
        inputDataCount.innerHTML = newCount;
        sQLInputData.innerHTML = sQLInputData.innerHTML + "<div id=\"OwnExampleSQLAdd" + newCount + "\"><input id=\"OwnExampleSQLAddCost" + newCount + "\" type=\"text\" /> <input id=\"OwnExampleSQLAddVolume" + newCount + "\" type=\"text\" /></div>";
        var cost;
        var volume;
        for(var i = 1; i < newCount; i++) {
            cost = document.getElementById("OwnExampleSQLAddCost" + i);
            cost.value = prevCostValues["OwnExampleSQLAddCost" + i];
            volume = document.getElementById("OwnExampleSQLAddVolume" + i);
            volume.value = prevVolumeValues["OwnExampleSQLAddVolume" + i];
        }
    } catch(e) { alert("OwnExampleAddMoreAction exception: " + e.message); }
}

function bOwnExampleLessAction()
{
    try{
        var inputDataCount = document.getElementById("OwnExampleInputDataCount");
        var newCount = Number(inputDataCount.innerHTML);
        if(newCount <= 1)
            return;
        document.getElementById("OwnExampleInputDataPanel").removeChild(document.getElementById("OwnExampleSQLAdd" + newCount));
        inputDataCount.innerHTML = newCount - 1;
   } catch(e) { alert("bOwnExampleLessAction exception: " + e.message); }
}

function OwnExampleResolveAction()
{
    try {
        var inputDataCount = Number(document.getElementById("OwnExampleInputDataCount").innerHTML);
        var inputData = "";
        var determineReportsMain = document.getElementById("DetermineReportsMain");
        for(var i = 1; i <= inputDataCount; i++) {
            var costN = Number(document.getElementById("OwnExampleSQLAddCost" + i).value);
            var volN = Number(document.getElementById("OwnExampleSQLAddVolume" + i).value);
            if(!(costN > 0 && volN > 0)) {
                alert("Input data has an incorrect format. Pleas try again.");
                determineReportsMain.innerHTML = "";
                return;
            }
            var inputCost = document.getElementById("OwnExampleSQLAddCost" + i).value;
            var inputVolume = document.getElementById("OwnExampleSQLAddVolume" + i).value;
            inputData = inputData + inputCost + "|" + inputVolume + ";";
        }
        var maxVolumeN = Number(document.getElementById("OwnExampleAddMaxVolume").value);
        if(!(maxVolumeN > 0)) {
            determineReportsMain.innerHTML = "";
            alert("Input data has an incorrect format. Pleas try again.");
            return;
        }
        var response = Default.ResolveOwnExampleAction(inputData, maxVolumeN);
        determineReportsMain.innerHTML = response.value;
        determineReportsMain.style.visibility = 'visible';
    } catch(e) { alert("OwnExampleResolveAction exception: " + e.message); }
}


function CheckingGetOptimalDecisionResponce()
{
    var response = Default.CheckingServiceResponse("CheckingGetOptimalDecisionResponce");
    if(response.value != null)
    {
        clearInterval(CalculateOptimalDecisionIntervalID);
        var determineReportsMain = document.getElementById("DetermineReportsMain");
        determineReportsMain.innerHTML = response.value;
        determineReportsMain.style.visibility = 'visible';
    }
}

function CheckingGetOptimalDecisionWithNumberResponce()
{
    var response = Default.CheckingServiceResponse("CheckingGetOptimalDecisionWithNumberResponce");
    if(response.value != null)
    {
        clearInterval(CalculateOptimalDecisionWithNumberIntervalID);
        var determineReportsMain = document.getElementById("DetermineReportsMain");
        determineReportsMain.innerHTML = response.value;
        determineReportsMain.style.visibility = 'visible';
    }
}