﻿function ChangeMesurement() {
    $('#l' + $("input[id$=_txbMetric]").val()).addClass("choosed");
    if ($.browser.msie) {
        $("#lStandard").corner();
        $("#lMetric").corner();
    }

    $("#lMetric").click(function () {
        if ($("input[id$=_txbMetric]").val() != "Metric") {
            DoChangeMetrics(true);
        }
    });

    $("#lStandard").click(function () {
        if ($("input[id$=_txbMetric]").val() != "Standard") {
            DoChangeMetrics(false);
        }
    });
}

function DoChangeMetrics(isMetric) {
    var obj = isMetric ? WeightInc2Metrics($("input[id$=_txbWeightSt]").val(), $("input[id$=_txbWeightLbs]").val()) :
        WeightMetrics2Inc($("input[id$=_txbWeightSt]").val(), $("input[id$=_txbWeightLbs]").val());

    if ($("input[id$=_txbWeightSt]").val() != "" || $("input[id$=_txbWeightLbs]").val() != "") {
        $("input[id$=_txbWeightSt]").val(isMetric ? obj.kg : obj.st);
        $("input[id$=_txbWeightLbs]").val(isMetric ? obj.g : obj.lb);
    }

    obj = isMetric ? HeightIncToMetrics($("input[id$=_txbHeightFt]").val(), $("input[id$=_txbHeightLns]").val()) :
        HeightMetricsToInc($("input[id$=_txbHeightFt]").val(), $("input[id$=_txbHeightLns]").val());

    if ($("input[id$=_txbHeightFt]").val() != "" || $("input[id$=_txbHeightLns]").val() != "") {
        $("input[id$=_txbHeightFt]").val(isMetric ? obj.m : obj.ft);
        $("input[id$=_txbHeightLns]").val(isMetric ? obj.sm : obj.lns);
    }

    $("span[id$=_lbWeightFirst]").text(isMetric ? weightMetricFirstPartTitle : weightStandartFirstPartTitle);
    $("span[id$=_lbWeightSecond]").text(isMetric ? weightMetricSecondPartTitle : weightStandartSecondPartTitle);
    $("span[id$=_lbHeightFirst]").text(isMetric ? heightMetricFirstPartTitle : heightStandartFirstPartTitle);
    $("span[id$=_lbHeightSecond]").text(isMetric ? heightMetricSecondPartTitle : heightStandartSecondPartTitle);

    $(isMetric ? "#lMetric" : "#lStandard").addClass("choosed").removeAttr('style').removeCorners().redrawCorners();
    $(isMetric ? "#lStandard" : "#lMetric").removeClass("choosed").removeAttr('style').removeCorners().redrawCorners();

    $("input[id$=_txbMetric]").val(isMetric ? "Metric" : "Standard");
}

//weight
function Kg2St(kg) {
    return kg * 0.157473044;
}

function St2Kg(st) {
    return st * 6.35029318;
}

function makeKg(kg, g) {
    return 1.0 * kg + 1.0 * g / 1000;
}

function getGFromKg(kg) {
    return Math.round((kg - Math.floor(kg)) * 1000);
}

function getKgFromKg(kg) {
    return Math.floor(kg);
}

function getLbFromSt(st) {
    return Math.round((st - Math.floor(st)) * 14);
}

function getStFromSt(st) {
    return Math.floor(st);
}

function makeSt(st, lb) {
    return 1.0 * st + 1.0 * lb / 14;
}

function WeightInc2Metrics(st, lbs) {
    var a = St2Kg(makeSt(st, lbs));
    return { kg: getKgFromKg(a), g: getGFromKg(a) };
}

function WeightMetrics2Inc(kg, g) {
    var a = Kg2St(makeKg(kg, g));
    return { st: getStFromSt(a), lb: getLbFromSt(a) };
}

//height
function MToFt(m)
{
    return m * 3.281;
}

function FtToM(ft)
{
    return ft * 0.3048;
}

function MakeM(m, sm)
{
    return 1.0 * m + 1.0 * sm / 100.0;
}

function MakeFt(ft, lns) {

    return 1.0 * ft + 1.0 * lns / 12;
}

function GetMFromM(m)
{
    return Math.floor(m);
}

function GetSmFromM(m)
{
    return Math.round((m - Math.floor(m)) * 100);
}

function GetFtFromFt(ft)
{
    return Math.floor(ft);
}

function GetLnsFromFt(ft)
{
    return Math.round((ft - Math.floor(ft)) * 12);
}

function HeightIncToMetrics(ft, lns)
{
    a = FtToM(MakeFt(ft, lns));
    return{m: GetMFromM(a), sm: GetSmFromM(a)};
}

function HeightMetricsToInc(m, sm)
{
    a = MToFt(MakeM(m, sm));
    return {ft:GetFtFromFt(a), lns:GetLnsFromFt(a) };
}

