﻿
var TimeInitCalled = false;

function CalculatePriceUsed() {
    var NoOfBoats = getNumberOfBoats();

    if (clientctgDateParams.Get("AllowDiscount") == true && NoOfBoats >= clientctgData.Get("BoatQtyDisc") && clientctgDateParams.Get("IsLongWeekend") == false) {
        clientPricePerCanoe.SetText(clientctgData.Get("CanoeDiscPrice").toString());
        clientPricePerKayak.SetText(clientctgData.Get("KayakDiscPrice").toString());
    }
    else {
        clientPricePerCanoe.SetText(clientctgData.Get("CanoePrice").toString());
        clientPricePerKayak.SetText(clientctgData.Get("KayakPrice").toString());
    }
    clientPriceExtraChild.SetText(clientctgData.Get("ExtraChild").toString());

    if (clientctgData.Get("MinBoatsBooking") == 0) {
        clientMinBoatsBooking.SetVisible(false);
        clientMinBoatsBooking.SetText("");
    }
    else {
        clientMinBoatsBooking.SetText("* Requires a minimum of " + clientctgData.Get("MinBoatsBooking").toString() + " boats booking.");
        clientMinBoatsBooking.SetVisible(true);
    }
    //Since the prices could have changed, recalc the dollar totals

    DisplayLongWeekend();
}


function getNumberOfBoats() {
    var NumOfBoats = clienttxtNoCanoes.GetNumber() + clienttxtNoKayaks.GetNumber();
    
    return NumOfBoats;
}


function setCalculateBoatPeople() {
    var TotalCalcPeople = CalculateBoatPeople();

    clienttxtNoPeople.SetNumber(TotalCalcPeople);
    clienttxtNoPeople.SetMaxValue(TotalCalcPeople + clienttxtNoCanoes.GetNumber())

    if (clienttxtNoCanoes.GetNumber() == 0 && clienttxtNoKayaks.GetNumber() == 0) {
        clienttxtNoPeople.SetEnabled(false);
    }
    else {
        clienttxtNoPeople.SetEnabled(true);
    }
}


function CalculateBoatPeople() {
    var CanoePeople = clienttxtNoCanoes.GetNumber() * 2;
    var KayakPeople = clienttxtNoKayaks.GetNumber() * 1;

    var TotalCalcPeople = CanoePeople + KayakPeople;

    return TotalCalcPeople;
}


function CalculateExtraPeople() {
    var TotalCalcPeople = CalculateBoatPeople();
    var ExtraPeople = clienttxtNoPeople.GetNumber() - TotalCalcPeople;

    if (ExtraPeople < 0) {
        ExtraPeople = 0;
    }
    return ExtraPeople;
}


function CalculateDollarTotals() {
    //Recheck the price
    CalculatePriceUsed();
    
    var NoOfBoats = getNumberOfBoats();
    var TotalPeople = clienttxtNoPeople.GetNumber();
    var ExtraPeople = CalculateExtraPeople();

    DisplayHSTWarning();

    if (ExtraPeople == 0) {
        clientExtraPeople.SetVisible(false);
    }
    else {
        clientExtraPeople.SetVisible(true);
        if (ExtraPeople == 1) {
            clientExtraPeople.SetText("( 1 extra child up to 100lbs. )");
        }
        else {
            clientExtraPeople.SetText("( " + ExtraPeople + " extra children up to 100lbs. )");
        }
    }

    var ExtraPersonCharge = ExtraPeople * clientPriceExtraChild.GetText();
    //var CanoeCharge = clientPricePerCanoe.GetText() * clienttxtNoCanoes.GetNumber();
    var CanoeCharge = clientctgData.Get("CanoePrice") * clienttxtNoCanoes.GetNumber();
    var CanoeDiscCharge = clientctgData.Get("CanoeDiscPrice") * clienttxtNoCanoes.GetNumber();
    //var KayakCharge = clientPricePerKayak.GetText() * clienttxtNoKayaks.GetNumber();
    var KayakCharge = clientctgData.Get("KayakPrice") * clienttxtNoKayaks.GetNumber();
    var KayakDiscCharge = clientctgData.Get("KayakDiscPrice") * clienttxtNoKayaks.GetNumber();

    //debugger;
    clienttxtCanoeTotal.SetText(CanoeCharge.toString());
    clienttxtKayakTotal.SetText(KayakCharge.toString());
    clienttxtExtraChildTotal.SetText(ExtraPersonCharge.toString());   
    
    var Subtotal = CanoeCharge + KayakCharge + ExtraPersonCharge;
    clienttxtSubTotal.SetText(Subtotal.toString());

    var BigGroupCharge = 0;
    if (cbNoGroupCharge.GetChecked() == false) {
        clienttxtGroupCharge.inputElement.style.color = '#000000';
        if (TotalPeople > clientctgData.Get("GroupTransport")) {
            BigGroupCharge = parseInt(TotalPeople / clientctgData.Get("GroupTransport")) * clientctgData.Get("GroupTransportCost");
        }
    }
    else {
        clienttxtGroupCharge.inputElement.style.color = '#ff3333';
    }
    clienttxtGroupCharge.SetText(BigGroupCharge.toString());

    var Discount = 0;
    if (clientctgDateParams.Get("AllowDiscount") == true && NoOfBoats >= clientctgData.Get("BoatQtyDisc")) {
        Discount = (CanoeCharge + KayakCharge) - ( CanoeDiscCharge + KayakDiscCharge);
    }
    
    clienttxtDiscount.SetText(Discount.toString());
    
    var EstimatedCharge = Subtotal + BigGroupCharge - Discount;
    clienttxtEstimatedCharge.SetText(EstimatedCharge.toString());
}


function CheckMinBoats() {
    var NumOfBoats = getNumberOfBoats();
    var MinBoats = clientctgData.Get("MinBoatsBooking");
    var lResult = true;
    var ErrorMessage = "";
    if (MinBoats == 0) {
        MinBoats = 1;
    }

    if (MinBoats > NumOfBoats) {
        lResult = false;
        if (MinBoats == 1) {
            alert("Booking requires at least " + MinBoats + " boat booked.");
        }
        else {
            alert("Booking requires at least " + MinBoats + " boats booked.");
        }
        clienttxtNoCanoes.Focus();
    }

    return lResult;
}

function DisplayLongWeekend() {
    if (clientctgDateParams.Get("IsLongWeekend")) {
        clientLongWeekendWarning.SetVisible(true);
    }
    else {
        clientLongWeekendWarning.SetVisible(false);
    }
}

function DisplayHSTWarning() {
    var HSTDate = new Date;
    HSTDate.setDate(1);
    HSTDate.setMonth(6); // January = 0
    HSTDate.setFullYear(2010);

    var clientDate = new Date;
    clientDate = clientDateSelected.GetDate();
    var CompareDate = new Date;

    CompareDate.setDate(clientDate.getDate());
    CompareDate.setMonth(clientDate.getMonth());
    CompareDate.setFullYear(clientDate.getFullYear());



    if (CompareDate >= HSTDate) {
        clientHSTWarning.SetVisible(true)
        clientHSTWarning2.SetVisible(true)
        clientPricePerCanoe.inputElement.style.color = '#ff3333';
        clientPricePerKayak.inputElement.style.color = '#ff3333';
    }
    else {
        clientHSTWarning.SetVisible(false)
        clientHSTWarning2.SetVisible(false)
        clientPricePerCanoe.inputElement.style.color = '#000000';
        clientPricePerKayak.inputElement.style.color = '#000000';
    }
}
