﻿/*<remarks>
====================================================================
Name: GroundTransportation.js
Description: The java sript file used in schedule shuttle search page.
Construction Date: 04/24/2009
Author: Ankush Bindlish

Last Revision Date: Ankush Bindlish
Last Revision By: 
Last Revision Change:
 
Last Revision Date: Satyam Kumar
Last Revision By: 06/12/09
Last Revision Change: SiteCore Fixes
====================================================================
Copyright (C) 2009 Vail Resort All Rights Reserved.
====================================================================
<remarks>
*/
var daysCount = 5;
var passengerCount = 2;
var cartProductGUID = '';

$(document).ready(function() {
        
        $('[id$=txtArrivalDate]').bind("change", function(){
        
            if($('[id$=txtArrivalDate]').val() != ''){
                var NewDate=new Date( $('[id$=txtArrivalDate]').val());
                NewDate.setDate(NewDate.getDate()+1);
                $('[id$=txtDepartDate]').datepicker('option', 'minDate', NewDate );
                $('[id$=txtDepartDate]').datepicker('setDate', NewDate);                
            }
        });
        $('[id$=txtArrivalDate]').datepicker("option", "onSelect", function(){
        
            if($('[id$=txtArrivalDate]').val() != ''){        
                var NewDate=new Date( $('[id$=txtArrivalDate]').val());
                NewDate.setDate(NewDate.getDate()+1);
                $('[id$=txtDepartDate]').datepicker('option', 'minDate', NewDate );
                $('[id$=txtDepartDate]').datepicker('setDate', NewDate);                
            }
        });
        
        if($('[id$=txtArrivalDate]').val() != ''){
            var NewDate=new Date( $('[id$=txtArrivalDate]').val());
            NewDate.setDate(NewDate.getDate()+1);
            $('[id$=txtDepartDate]').datepicker('option', 'minDate', NewDate );
            //$('[id$=txtDepartDate]').datepicker('setDate', NewDate);                
        }
        
// check for Quick Estimator, as  hdnIsPrivateShuttleSaleable not available on Quick Estimator.
//if Schedule Shuttle is loaded
if($("input[id$=hidIsPrivate]").val()!=undefined && $("input[id$=hidIsPrivate]").val().toLowerCase() == 'false')
{
    //If schedule Shuttle is not saleable then hide controls
    if ($("input[id$=hdnIsScheduledShuttleSaleable]").val().toLowerCase() == 'false') {
        $(".shuttleScheduleContainer").addClass("hideDiv");
    }
}
else if($("input[id$=hdnIsPrivateShuttleSaleable]").val() != undefined)
{
    
    //If Private Shuttle is not saleable then hide controls
    if ($("input[id$=hdnIsPrivateShuttleSaleable]").val().toLowerCase() == 'false') {
        $(".privateShuttleWrapperClass").addClass("hideDiv");
    }
 }
    gtDisplayContinueModal();
    // added alternate row color on the private shuttle search result page
    $('.privateShuttleTable tbody tr:even').css('backgroundColor', '#f0f0f0');
    $('.privateShuttleTable tbody tr:even').addClass("alternateRow");
    //$(".privateShuttleResultBox").removeClass("hideDiv");
    
    if ($("[id$='_hdnScheduledShuttle']").length > 0) {
        var query = window.location.search.substring(1).toLowerCase();
        if (query.indexOf('search=') != -1) {
            if (Number(query.length) > 0) {
                var parms = query.split('&');
                for (var i = 0; i < parms.length; i++) {
                    var pos = parms[i].indexOf('=');
                    if (pos > 0) {
                        var key = parms[i].substring(0, pos);
                        var val = parms[i].substring(pos + 1);
                        qsParm[key] = val;
                    }
                }

                if (qsParm['search']) {
                    var str = qsParm['search'].split(',');
                    var fullUrl = parent.document.URL.toLowerCase();
                    if (fullUrl.indexOf('private') != -1) {
                        if(str.length == 10 )
                        {                            
                            $("select[id $= ddlPassengersCount]")[0].selectedIndex = (eval(str[7]) - 1);
                            $(".radioGroup :radio").eq(eval(str[4])).trigger("click");
                            ArrivalDisplaySearchFilter(str[4], false);
                        }
                        else
                        {
                            //$("select[id $= ddlChangeAirport]")[0].selectedValue = str[0];
                            $("select[id $= ddlPassengersCount]")[0].selectedIndex = (eval(str[1]) - 1);                        
                            $(":text[id $= txtArrivalDate]").val(str[5]);
                            $(":text[id $= txtDepartDate]").val(str[6]);
                            $(".radioGroup :radio").eq(eval(str[2])).trigger("click");
                            ArrivalDisplaySearchFilter(str[2], false);
                        }                        
                    }
                    else if (fullUrl.indexOf('scheduled') != -1) {
                        cartProductGUID = str[5];
                        if(str.length == 10 )
                        {
                            //$("select[id $= ddlChangeAirport]")[0].selectedIndex = eval(str[0]);
                            $("select[id $= ddlPassengersCount]")[0].selectedIndex = (eval(str[7]) - 1);
                            $(".radioGroup :radio").eq(eval(str[4])).trigger("click");
                            ArrivalDisplaySearchFilter(str[4], false);                            
                            $(":text[id $= txtArrivalDate]").val(
						    str[0].split("%")[0]);
                            $(":text[id $= txtDepartDate]").val(
						    str[1].split("%")[0]);

                            var airportName = $(".ddlChangeAirportClass option").eq($(".ddlChangeAirportClass")[0].selectedIndex).text(); //str[0];
                            var passengerCount = str[7];
                            var arrivalDate = str[0].split("%")[0];
                            var departDate = str[1].split("%")[0];
                            var tripDirectionStatus = str[4];
                            var arrivalTime = str[0].replace(/%20/, ' ').replace(/%20/, ' ').split(' ')[1];
                            var departTime = str[1].replace(/%20/, ' ').replace(/%20/, ' ').split(' ')[1];
                            var isPrivate = 'false';

                        }
                        else
                        {                            
                            //$("select[id $= ddlChangeAirport]")[0].selectedIndex = eval(str[0]);
                            $("select[id $= ddlPassengersCount]")[0].selectedIndex = (eval(str[1]) - 1);
                            $(".radioGroup :radio").eq(eval(str[2])).trigger("click");
                            ArrivalDisplaySearchFilter(str[2], false);
                            $(":text[id $= txtArrivalDate]").val(
						    str[3].split("%")[0]);
                            $(":text[id $= txtDepartDate]").val(
						    str[4].split("%")[0]);

                            var airportName = $(".ddlChangeAirportClass option").eq($(".ddlChangeAirportClass")[0].selectedIndex).text(); //str[0];
                            var passengerCount = str[1];
                            var arrivalDate = str[3].split("%")[0];
                            var departDate = str[4].split("%")[0];
                            var tripDirectionStatus = str[2];
                            var arrivalTime = str[3].replace(/%20/, ' ').replace(/%20/, ' ').split(' ')[1];
                            var departTime = str[4].replace(/%20/, ' ').replace(/%20/, ' ').split(' ')[1];
                            var isPrivate = 'false';
                        }
                        var serviceURL = "/vailresorts/sites/PlanningAndBooking/WebServices/GroundTransportationService.svc/GetScheduledResult"
                        //Show loading icon on ajax call 
                        $(".searchContentWrapper").showLoading();
                        $.ajax({
                            type: "POST",
                            url: serviceURL,
                            data: "{\"airportName\" : \"" + airportName + "\",\"passengerCount\" : \"" + passengerCount + "\",\"arrivalDate\" : \"" + arrivalDate + "\",\"arrivalTime\" : \"" + arrivalTime + "\",\"departDate\" : \"" + departDate + "\",\"departTime\" : \"" + departTime + "\",\"tripDirectionStatus\" : \"" + tripDirectionStatus + "\",\"isPrivate\" : \"" + isPrivate + "\"}",
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            success: function(msg) {
                                $('#ajaxContentContainer').removeClass('loading');
                                $(".searchContentWrapper").html(msg.d);
                                $(".scheduledSearchResultBox").removeClass("hideDiv");
                                gtDisplayContinueModal();
                                var price = $("[id$='_hdPrice']").val();
                                var tempNum3=new Number(parseFloat(price) * parseInt(passengerCount));
                                $("[id$='_lblCost']").html('$' + (tempNum3).toFixed(2));
                            },
                            error: function(xhr, status, error) {
                                handlePnB_GT_Error(xhr, status, error);
                            }
                        });
                    }
                }
            }
        }
    }
    ArrivalDisplaySearchFilter($(".hidTripStatus").val(), true);
    $('.btnSearchShuttle').unbind('click').bind('click', function() {
        var airportName;
        var passengerCount = $(".ddlPassengersCountClass").val(); //5;
        var arrivalDate = $(".txtArrivalDateClass").val(); //"5/3/2009";
        var departDate = $(".txtDepartDateClass").val(); //"15/04/2009";
        var arrivalTime = '';
        var departTime = '';
        var tripDirectionStatus = $("input[class='radioBox']:checked").val();
        var isPrivate = "true";
        if (document.getElementById("hidIsPrivate") != null) {
            isPrivate = document.getElementById("hidIsPrivate").value;
        }

        for (i = 0; i < Page_Validators.length; i++) {
            if (!Page_Validators[i].isvalid) {
                return false;
            }
        }

        // On the page Load of Private Shuttle Result screen Hide/Display Arrival/Return Textbox
        if (isPrivate == "false") {
            airportName = $(".ddlChangeAirportClass option").eq($(".ddlChangeAirportClass")[0].selectedIndex).text();
            //arrivalTime = $(".txtArrivalTimeClass option").eq($(".txtArrivalTimeClass")[0].selectedIndex).text();
            //departTime = $(".txtDepartTimeClass option").eq($(".txtDepartTimeClass")[0].selectedIndex).text();
            var serviceURL = "/vailresorts/sites/PlanningAndBooking/WebServices/GroundTransportationService.svc/GetScheduledResult"
            //Show loading icon on ajax call 
            $(".searchContentWrapper").showLoading({loadingStr: "Please wait a moment while we search for your results"});
            $(".scheduledSearchResultBox").removeClass("hideDiv");
            $.ajax({
                type: "POST",
                url: serviceURL,
                data: "{\"airportName\" : \"" + airportName + "\",\"passengerCount\" : \"" + passengerCount + "\",\"arrivalDate\" : \"" + arrivalDate + "\",\"arrivalTime\" : \"" + arrivalTime + "\",\"departDate\" : \"" + departDate + "\",\"departTime\" : \"" + departTime + "\",\"tripDirectionStatus\" : \"" + tripDirectionStatus + "\",\"isPrivate\" : \"" + isPrivate + "\"}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $('#ajaxContentContainer').removeClass('loading');
                    $(".searchContentWrapper").html(msg.d);
					
					$('.openModal').click(function(e) {
						e.preventDefault();
						var urlContent = $(this).attr('href');
						var objDialog = $('body > .ui-dialog .iFrameModalEmail');
						$('iframe', objDialog)
							.attr('src',urlContent)
							.attr('width','100%')
							.attr('height','100%')
							.attr('scrolling','no');
						try { $('.iFrameModalEmail').dialog('open'); } catch (e){}
						return false;
					});	
					
                    gtDisplayContinueModal();
                    var price = $("[id$='_hdPrice']").val();
                    var tempnum1 =new Number(price);
                    $("[id$='_lblCost']").html('$' + tempnum1.toFixed(2));
                    var tempnum2=new Number(parseFloat(price) * parseInt(passengerCount));
                    $("[id$='_lblCost']").html('$' + tempnum2.toFixed(2));

                },
                error: function(xhr, status, error) {
                    handlePnB_GT_Error(xhr, status, error);
                }
            });
            return false;
        }
        else {
            airportName = $(".ddlChangeAirportClass").val();
            //arrivalTime = $(".txtArrivalTimeClass").val();
            //departTime = $(".txtDepartTimeClass").val();
            var serviceURL = "/vailresorts/sites/PlanningAndBooking/WebServices/GroundTransportationService.svc/GetScheduledResult"
            var guid = "";
            if(document.location.search.split("=").length>1)
            {
                var searchTerms = document.location.search.split("=")[1].split(",");
                if ( searchTerms.length == 8 )
                {
                    guid = searchTerms[7];
                }
           }

            //Show loading icon on ajax call 
            $(".privateShuttleResult").showLoading({loadingStr: "Please wait a moment while we search for your results"});
            $.ajax({
                type: "POST",
                url: serviceURL,
                data: "{\"airportName\" : \"" + airportName + "\",\"passengerCount\" : \"" + passengerCount + "\",\"arrivalDate\" : \"" + arrivalDate + "\",\"arrivalTime\" : \"" + arrivalTime + "\",\"departTime\" : \"" + departTime + "\",\"departDate\" : \"" + departDate + "\",\"tripDirectionStatus\" : \"" + tripDirectionStatus + "\",\"isPrivate\" : \"" + isPrivate + "\",\"productGUID\" : \"" + guid + "\"}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    window.location = msg.d;
                },
                error: function(xhr, status, error) {
                    handlePnB_GT_Error(xhr, status, error);
                }
            });
            return false;
        }
    }); // Click function
    $("ul.radioGroup li input").click(function() {
        var radioValue = $("input[class='radioBox']:checked").val();        
        ArrivalDisplaySearchFilter(radioValue, false);
    });

    // Function hide and display Arrival/Return row on the basis of Radio button selection
    function ArrivalDisplaySearchFilter(radioValue, boolChk) {        
        var t=$("[id$=hdMinDate]").val();
        var arrivalDate = $('.txtArrivalDateClass');
        //var arrivalTime = $('.txtArrivalTimeClass');
        var departureDate = $('.txtDepartDateClass');
        //var departureTime = $('.txtDepartTimeClass');          
        switch (eval(radioValue)) {
            case 0:
                    arrivalDate
                    .attr("disabled", false)
                    .datepicker( 'enable');
                    arrivalDate.datepicker('setDate', new Date(t));
                    //arrivalTime.attr("disabled", false);
                    departureDate
                    .attr("disabled", false)
                    .datepicker( 'enable');
                    
                    $("[id$=liArrival]").css("display","block"); 
                    $("[id$=liReturn]").css("display","block"); 
                  departureDate.datepicker('setDate', new Date(t)); 
                  var NewDate=new Date( $('[id$=txtArrivalDate]').val());
                  NewDate.setDate(NewDate.getDate()+1);
                  departureDate.datepicker('option', 'minDate', NewDate);
                  departureDate.datepicker("setDate", "+7d"); 
                  
                break;
            case 1:     
                  departureDate                                      
                    .attr("disabled", true)
                    .datepicker( 'disable');
                  
                  arrivalDate
                    .attr("disabled", false)
                    .datepicker( 'enable')                 
                 
                    $("[id$=liArrival]").css("display","block"); 
                    $("[id$=liReturn]").css("display","none"); 
                    arrivalDate.datepicker('setDate', new Date(t));
                          
                break;
            case 2:
                  arrivalDate
                    .attr("disabled", true)
                    .datepicker('disable');
                                    
                  departureDate
                    .attr("disabled", false)
                    .datepicker('enable')
                    .datepicker('option', 'minDate', new Date(t))
                    .datepicker('setDate', new Date(t));
                  
                  $("[id$=liArrival]").css("display","none"); 
                  $("[id$=liReturn]").css("display","block");                  
                  
                break;
        }
        if (radioValue != "" && boolChk) {
            var checkedBtn = $("input[class='radioBox']").val(radioValue);
            $(checkedBtn).attr("checked", "checked");
        }
    }

    //Method to get the estimator price
    $('#btnGetEstimate').click(function() {
        
        var drdDays = document.getElementById('drdDays');
        drdPeople = document.getElementById('drdPeople');
        drdDaysIndex = drdDays.selectedIndex;
        drdPeopleIndex = drdPeople.selectedIndex;

        daysCount = $("#drdDays").val();
        passengerCount = $("#drdPeople").val();
        RenderOutput();

    }); // Click function
    //Render the output for Quick Price Estimator
    function RenderOutput() {

        var serviceURL = "/vailresorts/sites/PlanningAndBooking/WebServices/GroundTransportationService.svc/GetEstimatorPrice"
        $("#divAjax").showLoading({
            callback: autoAdjustIframeModalHeight,
            loadingStr: "Please wait a moment while we search for your results"
        });
        $.ajax({
            type: "POST",
            url: serviceURL,
            data: "{\"daysCount\" : \"" + daysCount + "\",\"passengerCount\" : \"" + passengerCount + "\"}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                $('#ajaxContainer').html(msg.d);
                $('.resultPriceEstimates').removeClass("hideDiv");
                //calculateIframeHeight();
                $('#drdDays').prop('selectedIndex', drdDaysIndex);
                $('#drdPeople').prop('selectedIndex', drdPeopleIndex);
                $('.noOfDay').html(drdPeople);
                autoAdjustIframeModalHeight();
            },
            error: function(xhr, status, error) {
                handlePnB_GT_Error(xhr, status, error);
            }
        }); // Ajax call
    }

    //Method to get the estimator price on day's change
    $('#drdDays').change(function() {
        var drdDays = document.getElementById('drdDays');
        drdPeople = document.getElementById('drdPeople');
        drdDaysIndex = drdDays.selectedIndex;
        drdPeopleIndex = drdPeople.selectedIndex;

        daysCount = $("#drdDays").val(); //"5";
        passengerCount = $("#drdPeople").val(); //2;
        RenderOutput();
    }); // Click function
    //Method to get the estimator price on people's  change
    $('#drdPeople').change(function() {
        var drdDays = document.getElementById('drdDays');
        drdPeople = document.getElementById('drdPeople');
        drdDaysIndex = drdDays.selectedIndex;
        drdPeopleIndex = drdPeople.selectedIndex;

        daysCount = $("#drdDays").val(); //"5";
        passengerCount = $("#drdPeople").val(); //2;
        RenderOutput();
    }); // Click function
});  //document ready ends
function calculateIframeHeight() {
    var height = $("body").height();
    window.parent.setIframeHeight(height);

    height = $("body").height();
    window.parent.setIframeHeight(height);
}
function setIframeHeight(height) {
    $('.iFrameModalQuickPrice').height(height);
}

function ContinueButtonClick(me) {
    maskMe(me);

    var SKU = $("[id$='_hdnscheduledSku']").val();
    var airportName;
    var isPrivate = "true";
    if (document.getElementById("hidIsPrivate") != null) 
    {
        isPrivate = document.getElementById("hidIsPrivate").value;
    }
    if (isPrivate == "false") 
    {
        airportName = $(".ddlChangeAirportClass option").eq($(".ddlChangeAirportClass")[0].selectedIndex).text();
    }
    else
    {
        airportName = $(".ddlChangeAirportClass").val();
    }
    var passengerCount = $(".ddlPassengersCountClass").val(); //5;
    var arrivalDate = $(".txtArrivalDateClass").val(); //"5/3/2009";
    var departDate = $(".txtDepartDateClass").val(); //"15/04/2009";
    var arrivalTime = ''; //$(".txtArrivalTimeClass option").eq($(".txtArrivalTimeClass")[0].selectedIndex).text();
    var departTime = ''; //$(".txtDepartTimeClass option").eq($(".txtDepartTimeClass")[0].selectedIndex).text();

    var tripDirectionStatus = $("input[class='radioBox']:checked").val();
    var isPrivate = "false";
    var price = $(me).closest(".searchContentWrapper").find("[id$=lblCost]").html().split('$')[1];
    var productGUIDInCart = cartProductGUID;
    $.ajax({
        type: "POST",
        async: false,
        url: "/vailresorts/sites/PlanningAndBooking/WebServices/GroundTransportationService.svc/RedirectToCartSummary",
        data: "{\"SKU\" : \"" + SKU + "\",\"airportName\" : \"" + airportName + "\",\"passengerCount\" : \"" + passengerCount + "\",\"arrivalDate\" : \"" + arrivalDate + "\",\"arrivalTime\" : \"" + departTime + "\",\"departTime\" : \"" + arrivalTime + "\",\"departDate\" : \"" + departDate + "\",\"tripDirectionStatus\" : \"" + tripDirectionStatus + "\",\"isPrivate\" : \"" + isPrivate + "\",\"price\" : \"" + price + "\",\"cartProductGUID\" : \"" + productGUIDInCart + "\"}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var response = msg.d;
            if (response.indexOf('http') == '0') {
                //window.close();
                parent.window.location = msg.d;
            }
        },
        error: function(xhr, status, error) {
            handlePnB_GT_Error(xhr, status, error);
        }
    });
    return false;
}

/*********************
Function for reading querystring for Childcare nursery page
*********************/
var qsParm = new Array();
function GetQueryStringValues() {
    var query = window.location.search.substring(1);
    var parms = query.split('&');
    for (var i = 0; i < parms.length; i++) {
        var pos = parms[i].indexOf('=');
        if (pos > 0) {
            var key = parms[i].substring(0, pos);
            var val = parms[i].substring(pos + 1);
            qsParm[key] = val;
        }
    }
}
//Function Name : gtDisplayContinueModal
//Purpose : This function is used to open modal window
//Parameters : NA
function gtDisplayContinueModal() {
    if ($('body > .ui-dialog .saveToTripDialog').length == 0) {
        $('.saveToTripDialog').dialog({
            bgiframe: true,
            autoOpen: false,
            width: 980,
            height: 855,
            modal: true,
            resizable: false,
            position: 'center',
            closeOnEscape: true
        });
    }

    $('.privateShuttleTable .linkSave').unbind("click").bind("click", function(e) {
        e.preventDefault();

        // grabs url from href and loads it into the modal window
        var urlContent = $(this).attr('href');

        $('body > .ui-dialog .saveToTripDialog iframe').attr('src', urlContent).attr('width', '100%').attr('height', '100%').attr('scrolling', 'auto');

        $('body > .ui-dialog .saveToTripDialog').dialog('open');
        return false;
    })

    $('.scheduledSearchResultBox .linkSave').unbind("click").bind("click", function(e) {
        e.preventDefault();

        // grabs url from href and loads it into the modal window
        var urlContent = $(this).attr('href');

        $('body > .ui-dialog .saveToTripDialog iframe').attr('src', urlContent).attr('width', '100%').attr('height', '100%').attr('scrolling', 'auto');

        $('body > .ui-dialog .saveToTripDialog').dialog('open');
        return false;
    })
};

function SetHiddenFieldValues() {
    var hd = $("[id$='_hdFormInputs']");
    hd.val($(".ddlChangeAirportClass").val() + "," + $(".ddlPassengersCountClass").val() + "," + $("input[class='radioBox']:checked").val());
}

function handlePnB_GT_Error(xhr, status, error)
{
    var errMsg = getErrorMessage(xhr,status,error);

    if ($(".loadingPlaceholder").length > 0) {
        $(".loadingPlaceholder").hide();
        $(".loadingPlaceholder").parent().html('<div class="largeGboxContainer"><span class="errorMessage">' + errMsg + '</span></div>');
    }
    else {
        $(".errorMessage").html('<div class="largeGboxContainer"><span class="errorMessage">' + errMsg + '</span></div>');
    }
}
function maskMe(target){
    var thisButton = $(target);
    var buttonLayer = $("<img src='/VailResorts/sites/global/assets/img/blank.gif' alt='' class='buttonLayer' />");
    buttonLayer.appendTo("body").css({
        position: "absolute",
        width: $(thisButton).outerWidth(),
        height: $(thisButton).outerHeight(),
        left: $(thisButton).offset().left,
        top: $(thisButton).offset().top
    }).show();
}

