﻿        var FuelMultiplier = 3.15;
        
        
        var locs = [];
        var locFunctions = [];

        jQuery.validator.addMethod("phoneMC", function(phone_number, element) {
            phone_number = phone_number.replace(/\s+/g, "");
            return this.optional(element) || phone_number.length > 7 && phone_number.match(/^[\d\s\+]+$/);
        }, "!");


        $(document).ready(function() {
            var url = window.location.toString();
            $("#nav > a").each(function() {
                var theEle = $(this), theHref = theEle.attr("href");
                if (theHref.length > 1 && url.indexOf(theHref) > 0) {
                    theEle.addClass("selected");
                }
            });
            if ($("#nav > a.selected").length == 0) {
                $("#nav > :first").addClass("selected");
            }

            $("#gallery").innerfade({ speed: "slow", timeout: 6000 });
            $("#gallery").show();

            $("#synopGetNew").click(function(e) {
                e.preventDefault();
                bookingFlipper();

            });

            $("#synopClose").click(function(e) {
                e.preventDefault();
                $("#yourQuote").toggle();
                $("#quoteSynop").toggle();
            });

            configPageImages(30);

            $(".quoteField").change(function(e) {
                //calculate();
                $("#quoteDetails").slideUp();
            });
            if ($("#ReturnTrip:checked").attr("checked")) {
                //$("#divReturnTime").css("display", "block");
            }
            $("#bookingForm").validate({
                rules: {
                    DropOffTimeHours: {
                        required: {
                            depends: function(element) {
                                return $("#ReturnTrip:checked").attr("checked")
                            }
                        }
                    },
                    DropOffTimeMinutes: {
                        required: {
                            depends: function(element) {
                                return $("#ReturnTrip:checked").attr("checked")
                            }
                        }
                    },
                    DropOffTimePeriod: {
                        required: {
                            depends: function(element) {
                                return $("#ReturnTrip:checked").attr("checked")
                            }
                        }
                    },
                    PhoneNumber: {
                        phoneMC: true
                    }
                }
            });
            jQuery.validator.messages.required = "!";
            jQuery.validator.messages.email = "!";

            $("#PickupDate").datepicker({ dateFormat: "dd/mm/yy" });

            initQuote();

            $("#bookingForm").submit(function(e) {
                var pickup = locs[$("#PickupLoc").val()],
                dest = locs[$("#DropOffLoc").val()];

                $("#PickupLocation").val(pickup.Name);
                $("#PickupCode").val(pickup.Code);
                $("#PickupSegment").val(pickup.Segment);

                $("#DropOffLocation").val(dest.Name);
                $("#DropOffCode").val(dest.Code);
                $("#DropOffSegment").val(dest.Segment);

            });

            $("#goBack").click(function(e) {
                e.preventDefault();
                bookingFlipper();
            });

            $("#makeBooking").click(function(e) {
                e.preventDefault();
                bookingFlipper();
            });

            $("#ReturnTrip").click(function() {
                $("#divReturnTime").slideToggle("normal");
            });

            $("#PickupTimeHours").change(function() {
                var PTH = $("#DepartureTime").val();
                if (PTH != "1") {
                    return;
                }
                var theVal = parseInt($(this).val()), AMORPM = $("#PickupTimePeriod");
                AMORPM.children().remove();
                if (theVal == 7) {
                    AMORPM.append("<option></option>");
                    AMORPM.append("<option value=\"AM\">AM</option>");
                    AMORPM.append("<option value=\"PM\">PM</option>");
                }
                else if (theVal > 7 && theVal < 12) {
                    AMORPM.append("<option value=\"AM\">AM</option>");
                }
                else {
                    AMORPM.append("<option value=\"PM\">PM</option>");
                }
            });
        });
    
    function bookingFlipper() {
        if (!validateStage1()) {
            return false;
        }
        
        if (!$("#amount").html().length > 0) {
            return false;
        }

        var PTH = $("#PickupTimeHours"), AMORPM = $("#PickupTimePeriod");
        AMORPM.children().remove();
        PTH.children().remove();
        PTH.append("<option></option>");
        var hourTime = new Date();
        
        switch ($("#DepartureTime").val()) {
            case "1":
                hourTime.setHours(1);
                    
                for (var i = 0; i < 12; i++) {
                    PTH.append("<option value=\"" + hourTime.getHours() + "\">" + hourTime.getHours() + "</option>");
                    hourTime.setHours(hourTime.getHours() + 1);
                }
                AMORPM.append("<option></option>");

                break;
            case "2":
                hourTime.setHours(8);
                for (var i = 0; i < 4; i++) {
                    PTH.append("<option value=\"" + hourTime.getHours() + "\">" + hourTime.getHours() + "</option>");
                    hourTime.setHours(hourTime.getHours() + 1);
                }
                AMORPM.append("<option value=\"PM\">PM</option>");
                break;
            case "3":
                hourTime.setHours(12);

                for (var i = 0; i < 7; i++) {
                    if (hourTime.getHours() > 12) {
                        hourTime.setHours(1);
                    }
                    PTH.append("<option value=\"" + hourTime.getHours() + "\">" + hourTime.getHours() + "</option>");
                    hourTime.setHours(hourTime.getHours() + 1);
                }
                AMORPM.append("<option value=\"AM\">AM</option>");
                break;
        }


        $("#synopPickupLoc").html($("#PickupLoc :selected").text());
        $("#synopQuoteAmount").html($("#QuoteAmount").text());
        $("#synopDropOffLoc").html($("#DropOffLoc :selected").text());
        $("#synopNumPassengers").html($("#Passengers :selected").text());
        $("#synopPickupTime").html($("#DepartureTime :selected").text());
        $("#synopQuoteAmount").html($("#amount").text());
        
        $("#yourQuote").toggle();
        $("#quoteSynop").toggle();
        
        $("#quoteForm").toggle();
        $("#quoteStage2").toggle();
    }



    function configPageImages(maxRnd) {
        var rnd = Math.floor(Math.random() * maxRnd) + 1;

        $("#insetPhoto").html("<a href=\"content/images/gallery/" + rnd + ".jpg\" rel=\"lightbox[gallery]\" ><img src=\"content/images/gallery/th_" + rnd + ".jpg\" alt=\"Enlarge Image\" /></a>");
    }

function calculate() {

    if (!validateStage1()) {
        return false;
    }

    var pickup = locs[$("#PickupLoc").val()],
        dest = locs[$("#DropOffLoc").val()],
        pax = $("#Passengers").val(),
        time = parseInt($("#DepartureTime").val()),
        paxCharge = 0,
        paxRate = 1,
        timeRate = 1,
        timeCharge = 0,
        total = 0,
        sameSegment = false;


    var baseRate = locFunctions[pickup.Segment][dest.Segment](pickup.Trip, dest.Trip);
    baseRate = Math.ceil((baseRate * FuelMultiplier) / 10) * 10;


    if (pickup.Segment == "HB" && dest.Segment == "HB") {
        sameSegment = true;
    }

    paxCharge = paxCost(pax, sameSegment, baseRate, getPaxRateModifier(time), pickup, dest);
    timeCharge = (baseRate * getTimeRateModifier(time)) - baseRate;

    total = baseRate + paxCharge + timeCharge;

    $("#amount").html(total);
    $("#QuoteAmount").val(total);
    $("#quoteDetails").slideDown();
}


    function validateStage1() {
        var bf = $("#bookingForm");
        if (!bf.validate().element("#PickupLoc")) { return false; };
        if (!bf.validate().element("#DropOffLoc")) { return false; };
        if (!bf.validate().element("#Passengers")) { return false; };
        if (!bf.validate().element("#DepartureTime")) { return false; };
        return true;
    }


function getPaxRateModifier(time) {
    switch (time) {
        case 1:
            return 1;
            break;
        case 2:
            return 1;
            break;
        case 3:
            return 1.5;
            break;

    }
}

function getTimeRateModifier(time) {
    switch (time) {
        case 1:
            return 1;
            break;
        case 2:
            return 1.5;
            break;
        case 3:
            return 2;
            break;

    }
}


function paxCost(pax, sameSegments, baseRate, paxRate, pickup, dest) {

    var result;

    if (pickup == "PBR" || pickup == "CPI" || pickup == "BWI" ||
        dest == "PBR" || dest == "CPI" || dest == "BWI") {
        result = (pax - 4) * Math.max((baseRate / 4), 10)
    }
    else {
        if (sameSegments) {
            result = (pax - 2) * 10;
        }
        else {
            result = (pax - 4) * Math.max((baseRate / 8), 10);
        }
    }
    result = ((Math.ceil(result / 10) * 10) * paxRate);
    return (result > 0) ? result : 0;

}



function configDDL(locs) {
    var options = "";
    for (var i = 0; i < locs.length; i++) {
        options += "<option value=\"" + i + "\">" + locs[i].Name + "</option>";
    }
    $("#PickupLoc").append(options);
    $("#DropOffLoc").append(options);

    options = "";

    for (var i = 1; i <= 12; i++) {
        options += "<option value=\"" + i + "\">" + i + "</option>";
    }
    $("#Passengers").append(options);
}

function loc(name, code, segment, trip) {
    this.Name = name;
    this.Code = code;
    this.Segment = segment;
    this.Trip = trip;
}

loc.prototype.tripToString = function() {
    return this.Trip + "km";
}



//Segment functions
function yellow(A, B) {
    return A + B;
}
function white(A, B) {
    return Math.max(A, B);
}
function lightGreen(A, B) {
    return (A + B) - 10;
}
function blue(A, B) {
    return (Math.max(A, B) - 2);
}
function orange(A, B) {
    return ((A + B) - 20);
}
function pink(A, B) {
    return (A + B) - 10;
}
function green(A, B) {
    return (A + B) - 38;
}
function purple(A, B) {
    return (A + B) - 25;
}
function grey(A, B) {
    return (A + B) - 4;
}



function initQuote() {

    locs[0] = new loc("Akuna Bay", "AKB", "CC", 32);
    locs[1] = new loc("Alison Point", "ALP", "HB", 8);
    locs[2] = new loc("America Bay", "AMB", "BB", 20);
    locs[3] = new loc("Apple Tree Bay", "ATB", "CW", 38);
    locs[4] = new loc("Avalon", "AVL", "PW", 38);
    locs[5] = new loc("Bar Point", "BPT", "LH", 25);
    locs[6] = new loc("Bayview", "BVW", "PW", 47);
    locs[7] = new loc("Bennets Wharf", "BTW", "PW", 33);
    locs[8] = new loc("Benoni Wharf", "BNW", "MH", 28);
    locs[9] = new loc("Bensville", "BNS", "BT", 51);
    locs[10] = new loc("Berowra Waters", "BRW", "BW", 55);
    locs[11] = new loc("Berowra Waters Inn", "BWI", "BW", 55);
    locs[12] = new loc("Blackwall Point", "BWP", "BT", 48);
    locs[13] = new loc("Bobbin Head", "BBH", "CW", 40);
    locs[14] = new loc("Bonny Doon Wharf", "BDW", "PW", 33);
    locs[15] = new loc("Booker Bay Wharf", "BBW", "BT", 36);
    locs[16] = new loc("Broken Bay Sport & Rec Camp", "BBC", "BB", 20);
    locs[17] = new loc("Brooklyn", "BRK", "HB", 5);
    locs[18] = new loc("Calabash Bay", "CLB", "BW", 46);
    locs[19] = new loc("Careel Bay Wharf", "CBW", "PW", 36);
    locs[20] = new loc("Charlies Place", "CPL", "MG", 58);
    locs[21] = new loc("Cheero Point", "CRO", "MM", 16);
    locs[22] = new loc("Christies Creek", "CRC", "MM", 36);
    locs[23] = new loc("Church Point", "CHP", "PW", 45);
    locs[24] = new loc("Clareville Beach", "CVB", "PW", 38);
    locs[25] = new loc("Coasters Retreat", "COR", "PW", 33);
    locs[26] = new loc("Cobar Point", "CBP", "BW", 35);
    locs[27] = new loc("Cogra Bay", "CGB", "LH", 10);
    locs[28] = new loc("Cohens Creek", "CHC", "UH", 53);
    locs[29] = new loc("Cottage Point", "CTP", "CW", 30);
    locs[30] = new loc("Cottage Point Inn", "CPI", "CW", 30);
    locs[31] = new loc("Cotton Tree Bay", "CTB", "CW", 34);
    locs[32] = new loc("Courangra Point", "CUP", "UH", 50);
    locs[33] = new loc("Currawong Beach", "CWB", "PW", 30);
    locs[34] = new loc("Dangar Island", "DGI", "HB", 5);
    locs[35] = new loc("Davistown", "DVT", "BT", 48);
    locs[36] = new loc("Dead Horse Bay", "DHB", "HB", 8);
    locs[37] = new loc("Elfin Hill Wharf", "EHW", "BT", 54);
    locs[38] = new loc("Elvina Bay", "ELB", "PW", 45);
    locs[39] = new loc("Empire Bay Wharf", "EBW", "BT", 49);
    locs[40] = new loc("Ettalong", "ETT", "BT", 35);
    locs[41] = new loc("Foleys Bay", "FYB", "MM", 29);
    locs[42] = new loc("Foul Weather Reach", "FWR", "UH", 69);
    locs[43] = new loc("Fox Bay", "FXB", "MM", 21);
    locs[44] = new loc("Gentlemans Halt", "GMH", "UH", 43);
    locs[45] = new loc("Gosford Public Wharf", "GPW", "BT", 60);
    locs[46] = new loc("Government Wharf", "GVW", "MH", 41);
    locs[47] = new loc("Great Mackeral Beach", "GMB", "PW", 28);
    locs[48] = new loc("Green Point", "GPT", "BT", 55);
    locs[49] = new loc("Green Point Bay", "GPB", "MM", 24);
    locs[50] = new loc("Greenmans Valley", "GMV", "MH", 40);
    locs[51] = new loc("Gunderman", "GDM", "UH", 73);
    locs[52] = new loc("Gunyah Beach", "GUB", "BB", 11);
    locs[53] = new loc("Hallets Beach", "HLB", "CW", 20);
    locs[54] = new loc("Hardeys Bay", "HDB", "BT", 37);
    locs[55] = new loc("Haycock Reach", "HYR", "UH", 54);
    locs[56] = new loc("HouseBoat Bay", "HBB", "CW", 37);
    locs[57] = new loc("Hungry Beach", "HGB", "BB", 15);
    locs[58] = new loc("Illawong Bay", "ILB", "CC", 28);
    locs[59] = new loc("Jeruselum Bay", "JRB", "CW", 23);
    locs[60] = new loc("Joe Crafts Creek", "JCC", "BW", 43);
    locs[61] = new loc("Kangaroo Point", "KGP", "LH", 15);
    locs[62] = new loc("Kilcare Public Wharf", "KPW", "BT", 39);
    locs[63] = new loc("Kincumber", "KCB", "BT", 58);
    locs[64] = new loc("Koolewong", "KLW", "BT", 52);
    locs[65] = new loc("Laughtondale", "LGD", "UH", 91);
    locs[66] = new loc("Lemon Tree Point", "LTP", "MM", 29);
    locs[67] = new loc("Little Shark Rock Point", "LSP", "CW", 20);
    locs[68] = new loc("Lobster Beach", "LBB", "BB", 30);
    locs[69] = new loc("Looking Glass Bay", "LGB", "CW", 25);
    locs[70] = new loc("Lords Bay", "LDS", "CW", 34);
    locs[71] = new loc("Lovett Bay", "LVB", "PW", 45);
    locs[72] = new loc("Macdonald River", "MDR", "UH", 110);
    locs[73] = new loc("Mangrove Creek", "MGC", "MG", 42);
    locs[74] = new loc("Marlow Creek", "MWC", "MH", 40);
    locs[75] = new loc("Marramarra Creek", "MMC", "BW", 35);
    locs[76] = new loc("McCarrs Creek", "MCC", "PW", 48);
    locs[77] = new loc("Melvys Wharf", "MLW", "MH", 28);
    locs[78] = new loc("Milsons Is. Sport & Rec Camp", "MIC", "LH", 25);
    locs[79] = new loc("Mislon Passage", "MLP", "LH", 25);
    locs[80] = new loc("Mooney Public Wharf", "MPW", "MM", 15);
    locs[81] = new loc("Mooney Workers Club", "MWC", "MM", 15);
    locs[82] = new loc("Morning Bay", "MNB", "PW", 44);
    locs[83] = new loc("Morrow Point", "MWP", "MM", 36);
    locs[84] = new loc("Murphys Bay", "MPB", "BT", 51);
    locs[85] = new loc("Muskoka", "MKK", "UH", 67);
    locs[86] = new loc("Native Dog Bay", "NDB", "MM", 32);
    locs[87] = new loc("Never Fail", "NVF", "MG", 50);
    locs[88] = new loc("Neverfail Bay", "NFB", "BW", 42);
    locs[89] = new loc("Newport Wharf", "NPW", "PW", 46);
    locs[90] = new loc("Oakey Point", "OKP", "BW", 42);
    locs[91] = new loc("Ocean Beach", "OCB", "BB", 30);
    locs[92] = new loc("One Tree Reach", "OTR", "UH", 90);
    locs[93] = new loc("Paddys Bight", "PDD", "UH", 58);
    locs[94] = new loc("Palm Beach", "PMB", "PW", 40);
    locs[95] = new loc("Paradise Beach", "PDB", "PW", 37);
    locs[96] = new loc("Patonga Beach", "PTB", "BB", 30);
    locs[97] = new loc("Pearl Beach", "PLB", "BB", 25);
    locs[98] = new loc("Peat Island", "PTI", "LH", 14);
    locs[99] = new loc("Peats Bight Restaurant", "PBR", "BW", 30);
    locs[100] = new loc("Phegans Bay", "PHB", "BT", 57);
    locs[101] = new loc("Planet Rosevale", "PLR", "UH", 95);
    locs[102] = new loc("Point Clare", "PTC", "BT", 57);
    locs[103] = new loc("Point Frederick", "PFD", "BT", 56);
    locs[104] = new loc("Popran Creek", "PPC", "MG", 55);
    locs[105] = new loc("Portuguese Bay", "PGB", "PW", 33);
    locs[106] = new loc("Possum Beach", "PSB", "BB", 15);
    locs[107] = new loc("Pretty Beach", "PTY", "BT", 37);
    locs[108] = new loc("Pumpkin Point", "PKP", "MH", 28);
    locs[109] = new loc("Refuge Bay", "RFB", "BB", 20);
    locs[110] = new loc("Riverlands Park", "RVP", "UH", 82);
    locs[111] = new loc("Rocky Point Wharf", "RPW", "PW", 45);
    locs[112] = new loc("Scotland Island", "SCI", "PW", 45);
    locs[113] = new loc("Sentry Box Reach", "SBR", "UH", 67);
    locs[114] = new loc("Singletons Mill", "SGM", "UH", 70);
    locs[115] = new loc("Smiths Creek", "SMC", "SC", 35);
    locs[116] = new loc("Spencer", "SPR", "MH", 45);
    locs[117] = new loc("St Huberts Island", "SHI", "BT", 44);
    locs[118] = new loc("Stingray Bay", "STG", "SC", 30);
    locs[119] = new loc("Sunny Corner", "SCR", "BW", 28);
    locs[120] = new loc("Tascott", "TSC", "BT", 52);
    locs[121] = new loc("The Basin", "TBS", "PW", 33);
    locs[122] = new loc("The Rip Bridge", "TRB", "BT", 40);
    locs[123] = new loc("The Ruins", "TRU", "LH", 15);
    locs[124] = new loc("The Tanks", "TNK", "HB", 10);
    locs[125] = new loc("Two Dollar Bay", "TDB", "MM", 29);
    locs[126] = new loc("Umina Beach", "UMB", "BB", 28);
    locs[127] = new loc("Wagstaff Public Wharf", "WPW", "BT", 37);
    locs[128] = new loc("Walbank Point", "WBP", "MM", 29);
    locs[129] = new loc("Waratah Bay", "WTB", "CW", 31);
    locs[130] = new loc("Webbs Creek", "WBC", "UH", 113);
    locs[131] = new loc("Wendoree Park", "WDP", "MG", 47);
    locs[132] = new loc("Winson Bay", "WNB", "CW", 34);
    locs[133] = new loc("Wisemans Ferry", "WFY", "UH", 110);
    locs[134] = new loc("Wobby", "WBB", "HB", 8);
    locs[135] = new loc("Wondabyne", "WDN", "MC", 20);
    locs[136] = new loc("Woody Point", "WDP", "PW", 44);
    locs[137] = new loc("Woy Woy", "WWY", "BT", 50);
    locs[138] = new loc("Woy Woy Inlet", "WWI", "BT", 55);
    locs[139] = new loc("Yattalunga Public Wharf", "YPW", "BT", 54);
    locs[140] = new loc("Yeomans Bay", "YMB", "CW", 21);



    configDDL(locs);

    //Defines the functions for each match of segments
    locFunctions["HB"] = [];

    locFunctions["HB"]["HB"] = white;
    locFunctions["HB"]["CW"] = white;
    locFunctions["HB"]["BB"] = white;
    locFunctions["HB"]["PW"] = white;
    locFunctions["HB"]["LH"] = white;
    locFunctions["HB"]["BT"] = white;
    locFunctions["HB"]["BW"] = white;
    locFunctions["HB"]["UH"] = white;
    locFunctions["HB"]["MM"] = white;
    locFunctions["HB"]["MC"] = white;
    locFunctions["HB"]["MG"] = white;
    locFunctions["HB"]["MH"] = white;
    locFunctions["HB"]["CC"] = white;
    locFunctions["HB"]["SC"] = white;

    locFunctions["CW"] = [];

    locFunctions["CW"]["HB"] = white;
    locFunctions["CW"]["CW"] = white;
    locFunctions["CW"]["BB"] = lightGreen;
    locFunctions["CW"]["PW"] = lightGreen;
    locFunctions["CW"]["LH"] = yellow;
    locFunctions["CW"]["BT"] = lightGreen;
    locFunctions["CW"]["BW"] = yellow;
    locFunctions["CW"]["UH"] = yellow;
    locFunctions["CW"]["MM"] = yellow;
    locFunctions["CW"]["MC"] = yellow;
    locFunctions["CW"]["MG"] = yellow;
    locFunctions["CW"]["MH"] = yellow;
    locFunctions["CW"]["CC"] = orange;
    locFunctions["CW"]["SC"] = orange;

    locFunctions["BB"] = [];

    locFunctions["BB"]["HB"] = white;
    locFunctions["BB"]["CW"] = lightGreen;
    locFunctions["BB"]["BB"] = white;
    locFunctions["BB"]["PW"] = blue;
    locFunctions["BB"]["LH"] = yellow;
    locFunctions["BB"]["BT"] = blue;
    locFunctions["BB"]["BW"] = yellow;
    locFunctions["BB"]["UH"] = yellow;
    locFunctions["BB"]["MM"] = yellow;
    locFunctions["BB"]["MC"] = yellow;
    locFunctions["BB"]["MG"] = yellow;
    locFunctions["BB"]["MH"] = yellow;
    locFunctions["BB"]["CC"] = pink;
    locFunctions["BB"]["SC"] = pink;

    locFunctions["PW"] = [];

    locFunctions["PW"]["HB"] = white;
    locFunctions["PW"]["CW"] = lightGreen;
    locFunctions["PW"]["BB"] = blue;
    locFunctions["PW"]["PW"] = white;
    locFunctions["PW"]["LH"] = yellow;
    locFunctions["PW"]["BT"] = orange;
    locFunctions["PW"]["BW"] = yellow;
    locFunctions["PW"]["UH"] = yellow;
    locFunctions["PW"]["MM"] = yellow;
    locFunctions["PW"]["MC"] = yellow;
    locFunctions["PW"]["MG"] = yellow;
    locFunctions["PW"]["MH"] = yellow;
    locFunctions["PW"]["CC"] = pink;
    locFunctions["PW"]["SC"] = pink;

    locFunctions["LH"] = [];

    locFunctions["LH"]["HB"] = white;
    locFunctions["LH"]["CW"] = yellow;
    locFunctions["LH"]["BB"] = yellow;
    locFunctions["LH"]["PW"] = yellow;
    locFunctions["LH"]["LH"] = white;
    locFunctions["LH"]["BT"] = yellow;
    locFunctions["LH"]["BW"] = white;
    locFunctions["LH"]["UH"] = white;
    locFunctions["LH"]["MM"] = pink;
    locFunctions["LH"]["MC"] = grey;
    locFunctions["LH"]["MG"] = blue;
    locFunctions["LH"]["MH"] = white;
    locFunctions["LH"]["CC"] = yellow;
    locFunctions["LH"]["SC"] = yellow;

    locFunctions["BT"] = [];

    locFunctions["BT"]["HB"] = white;
    locFunctions["BT"]["CW"] = lightGreen;
    locFunctions["BT"]["BB"] = blue;
    locFunctions["BT"]["PW"] = orange;
    locFunctions["BT"]["LH"] = yellow;
    locFunctions["BT"]["BT"] = white;
    locFunctions["BT"]["BW"] = yellow;
    locFunctions["BT"]["UH"] = yellow;
    locFunctions["BT"]["MM"] = yellow;
    locFunctions["BT"]["MC"] = yellow;
    locFunctions["BT"]["MG"] = yellow;
    locFunctions["BT"]["MH"] = yellow;
    locFunctions["BT"]["CC"] = lightGreen;
    locFunctions["BT"]["SC"] = pink;

    locFunctions["BW"] = [];

    locFunctions["BW"]["HB"] = white;
    locFunctions["BW"]["CW"] = yellow;
    locFunctions["BW"]["BB"] = yellow;
    locFunctions["BW"]["PW"] = yellow;
    locFunctions["BW"]["LH"] = white;
    locFunctions["BW"]["BT"] = yellow;
    locFunctions["BW"]["BW"] = white;
    locFunctions["BW"]["UH"] = orange;
    locFunctions["BW"]["MM"] = pink;
    locFunctions["BW"]["MC"] = grey;
    locFunctions["BW"]["MG"] = orange;
    locFunctions["BW"]["MH"] = orange;
    locFunctions["BW"]["CC"] = yellow;
    locFunctions["BW"]["SC"] = yellow;

    locFunctions["UH"] = [];

    locFunctions["UH"]["HB"] = white;
    locFunctions["UH"]["CW"] = yellow;
    locFunctions["UH"]["BB"] = yellow;
    locFunctions["UH"]["PW"] = yellow;
    locFunctions["UH"]["LH"] = white;
    locFunctions["UH"]["BT"] = yellow;
    locFunctions["UH"]["BW"] = orange;
    locFunctions["UH"]["UH"] = white;
    locFunctions["UH"]["MM"] = pink;
    locFunctions["UH"]["MC"] = grey;
    locFunctions["UH"]["MG"] = green;
    locFunctions["UH"]["MH"] = white;
    locFunctions["UH"]["CC"] = yellow;
    locFunctions["UH"]["SC"] = yellow;

    locFunctions["MM"] = [];

    locFunctions["MM"]["HB"] = white;
    locFunctions["MM"]["CW"] = yellow;
    locFunctions["MM"]["BB"] = yellow;
    locFunctions["MM"]["PW"] = yellow;
    locFunctions["MM"]["LH"] = pink;
    locFunctions["MM"]["BT"] = yellow;
    locFunctions["MM"]["BW"] = pink;
    locFunctions["MM"]["UH"] = pink;
    locFunctions["MM"]["MM"] = white;
    locFunctions["MM"]["MC"] = grey;
    locFunctions["MM"]["MG"] = pink;
    locFunctions["MM"]["MH"] = pink;
    locFunctions["MM"]["CC"] = yellow;
    locFunctions["MM"]["SC"] = yellow;

    locFunctions["MC"] = [];

    locFunctions["MC"]["HB"] = white;
    locFunctions["MC"]["CW"] = yellow;
    locFunctions["MC"]["BB"] = yellow;
    locFunctions["MC"]["PW"] = yellow;
    locFunctions["MC"]["LH"] = grey;
    locFunctions["MC"]["BT"] = yellow;
    locFunctions["MC"]["BW"] = grey;
    locFunctions["MC"]["UH"] = grey;
    locFunctions["MC"]["MM"] = grey;
    locFunctions["MC"]["MC"] = white;
    locFunctions["MC"]["MG"] = grey;
    locFunctions["MC"]["MH"] = grey;
    locFunctions["MC"]["CC"] = yellow;
    locFunctions["MC"]["SC"] = yellow;

    locFunctions["MG"] = [];

    locFunctions["MG"]["HB"] = white;
    locFunctions["MG"]["CW"] = yellow;
    locFunctions["MG"]["BB"] = yellow;
    locFunctions["MG"]["PW"] = yellow;
    locFunctions["MG"]["LH"] = blue;
    locFunctions["MG"]["BT"] = yellow;
    locFunctions["MG"]["BW"] = orange;
    locFunctions["MG"]["UH"] = green;
    locFunctions["MG"]["MM"] = pink;
    locFunctions["MG"]["MC"] = grey;
    locFunctions["MG"]["MG"] = white;
    locFunctions["MG"]["MH"] = orange;
    locFunctions["MG"]["CC"] = yellow;
    locFunctions["MG"]["SC"] = yellow;

    locFunctions["MH"] = [];

    locFunctions["MH"]["HB"] = white;
    locFunctions["MH"]["CW"] = yellow;
    locFunctions["MH"]["BB"] = yellow;
    locFunctions["MH"]["PW"] = yellow;
    locFunctions["MH"]["LH"] = white;
    locFunctions["MH"]["BT"] = yellow;
    locFunctions["MH"]["BW"] = orange;
    locFunctions["MH"]["UH"] = white;
    locFunctions["MH"]["MM"] = pink;
    locFunctions["MH"]["MC"] = grey;
    locFunctions["MH"]["MG"] = orange;
    locFunctions["MH"]["MH"] = white;
    locFunctions["MH"]["CC"] = yellow;
    locFunctions["MH"]["SC"] = yellow;

    locFunctions["CC"] = [];

    locFunctions["CC"]["HB"] = white;
    locFunctions["CC"]["CW"] = orange;
    locFunctions["CC"]["BB"] = pink;
    locFunctions["CC"]["PW"] = pink;
    locFunctions["CC"]["LH"] = yellow;
    locFunctions["CC"]["BT"] = lightGreen;
    locFunctions["CC"]["BW"] = yellow;
    locFunctions["CC"]["UH"] = yellow;
    locFunctions["CC"]["MM"] = yellow;
    locFunctions["CC"]["MC"] = yellow;
    locFunctions["CC"]["MG"] = yellow;
    locFunctions["CC"]["MH"] = yellow;
    locFunctions["CC"]["CC"] = white;
    locFunctions["CC"]["SC"] = purple;

    locFunctions["SC"] = [];

    locFunctions["SC"]["HB"] = white;
    locFunctions["SC"]["CW"] = orange;
    locFunctions["SC"]["BB"] = pink;
    locFunctions["SC"]["PW"] = pink;
    locFunctions["SC"]["LH"] = yellow;
    locFunctions["SC"]["BT"] = pink;
    locFunctions["SC"]["BW"] = yellow;
    locFunctions["SC"]["UH"] = yellow;
    locFunctions["SC"]["MM"] = yellow;
    locFunctions["SC"]["MC"] = yellow;
    locFunctions["SC"]["MG"] = yellow;
    locFunctions["SC"]["MH"] = yellow;
    locFunctions["SC"]["CC"] = purple;
    locFunctions["SC"]["SC"] = white;


}