﻿

        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" });

            //fix
            initQuote();
            configDDL(locs);

            $("#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());


    var total = calculateBooking(pickup, dest, pax, time);

    $("#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 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);
}


