﻿var BOTTOM_HELP_HEIGHT = 200;

function AppPrep()
{
}

function OpenMarkerDistanceMenu()
{
    var md = $('MarkerDistance');
    CreateRangesContextMenu(
        '5,10,20,Other', 
        { x:AbsLeft(md), y:AbsTop(md)+md.offsetHeight+1 }, 
        SelectMarkerDistanceValue);
    window.event.cancelBubble = true;
}
function SelectMarkerDistanceValue()
{
    var value = event.srcElement.innerText;
    if (value == "Other")
    {
        CreateRangesContextMenu(
            '1-20,30,40,50',
            { nested:true, x:AbsLeft(event.srcElement)+event.srcElement.offsetWidth+3, y:AbsTop(event.srcElement) },
            SelectMarkerDistanceValue);
        window.event.cancelBubble = true;
    }
    else
        setMarkerDistance(value);
}

function exerState(name)
{
    var s = [];
    s.push(name != null ? name : ExerName); // name! (and not path as it was before)
    s.push("default"); // theme
    s.push(($('PaceMode').value == "FixedMarkerPaceMode") 
        ? getMarkerDistance() // use marker distance, e.g., "10"
        : ($('StrideStrokeLength').value + "x" + $('StridesStrokesBeep').value) // use stride length and strides/beep, e.g., "1.5x4"
        );
        //: (parseFloat($('StrideStrokeLength').value) * parseFloat($('StridesStrokesBeep').value)));
    s.push("meters");
    for (var i = 0; i < exerSegs(); i++)
    {
        var seg = exerRow(i);
        s.push(seg.getDist() + "," + seg.getTime() + "," + seg.getPace() + "," +
            seg.getRest() + ",0");
    }
    return s.join(';');
}
function restoreExerState(resp)
{
    var data = resp.ExerState.split(';');
    SetExerName(data[0]);
    // data[1] is theme
    if (data[2].indexOf('x') > 0) // must be stride-length x strides/beep
    {
        var lb = data[2].split('x');
        setStrideStrokeLength(lb[0]);
        setStridesStrokesBeep(lb[1]);
        $('PaceMode').value = "StrideStrokePaceMode";
    }
    else // must be standard marker distance
    {
        setMarkerDistance(parseInt(data[2]));
        $('PaceMode').value = "FixedMarkerPaceMode";
    }
    DisplayPaceModeOption($('PaceMode').value);
    // data[3] is marker unit, should be always meters for run
    // clear all existing rows
    while (exerSegs() > 0)
        exergrid.deleteRow(1);
    for (var i = 4; i < data.length; i++)
    {
        var row = data[i].split(',');
        appendRow({ Dist:parseInt(row[0]), Time:parseInt(row[1]), Rest:parseInt(row[3]) });
    }
    recalcGlobals();
}

function Equalizer(dir)
{
    var keep = nonEqualizerGlobalTime;
    //-var gtime = getGlobalSwimTime();
    for (var i = 0; i < exerSegs(); i++)
    {
        exerRow(i).setPace(exerRow(i).getPace() + dir * (getGlobalPace() - exerRow(i).getPace()) / 10);
    }
    recalcGlobalSwimTime();
    //recalcGlobals(true);
    //-?setGlobalSwimTime(gtime);
    adjustExerciseTime(getGlobalSwimTime(), keep);
    adjustExerciseTime(getGlobalSwimTime(), keep);
    nonEqualizerGlobalTime = keep;
    // * FullPaceUnitsFactor);
    //window.status = nonEqualizerGlobalTime;
}
