﻿/// <reference path="Controller.js" />
/// <reference path=" ../../Omniture.js" />

function OmnitureModel() {

    this.SendHomeHotelOmniture = function (searchParameters) {
        try {
            s.pageName = 'default.aspx';
            s.channel = '';
            s.events = 'event1';
            s.products = 'hoteis';
            s.pageType = '';

            s.prop12 = searchParameters.Location;
            s.prop13 = searchParameters.CheckIn.Month + '/' + searchParameters.CheckIn.Day + '/' + searchParameters.CheckIn.Year;
            a.prop14 = searchParameters.CheckOut.Month + '/' + searchParameters.CheckOut.Day + '/' + searchParameters.CheckOut.Year;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }


    this.SendInsuranceOmniture = function () {
        try {
            s.server = ServerHost;
            s.products = 'aereo';
            s.events = 'event16';
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendErrorOmniture = function (sender) {
        try {
            s.server = ServerHost;
            s.products = 'aereo';
            s.events = 'event5';
            s.eVar18 = "Problemas de processamento";
            if (sender)
                if (sender.dataProcessOrder)
                    if (sender.dataProcessOrder.ErrorMessage.length > 140)
                        s.eVar18 = sender.dataProcessOrder.FriendlyErrorMessage.substring(0, 140);
                    else
                        s.eVar18 = sender.dataProcessOrder.FriendlyErrorMessage;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    function CalculaNumeroDias(data1, data2) {
        return (((Date.parse(FormatUSDSimpleDateValues(data2))) - (Date.parse(FormatUSDSimpleDateValues(data1)))) / (24 * 60 * 60 * 1000)).toFixed(0);
    }

    this.SendMasterPricerOmniture = function (response) {
        try {
            if (response.ShoppingCart.AirItems.length > 0) {
                s.pageName = 'aereo:compra';
                s.pageType = '';
                s.server = ServerHost;
                s.products = 'aereo';

                var isRoundTrip = response.ShoppingCart.AirItems[0].FlightGroups.length > 1;
                var companies = '';

                if (isRoundTrip) {
                    s.prop1 = 'round trip';
                    s.prop2 = response.ShoppingCart.AirItems[0].FlightGroups[0].OriginLong;
                    s.prop3 = response.ShoppingCart.AirItems[0].FlightGroups[1].OriginLong;
                    s.prop4 = FormatSimpleDateValues(response.ShoppingCart.AirItems[0].FlightGroups[0].Flights[0].DepartureDateTimeValues);
                    s.prop5 = FormatSimpleDateValues(response.ShoppingCart.AirItems[0].FlightGroups[1].Flights[0].DepartureDateTimeValues);
                }
                else {
                    s.prop1 = 'one way';
                    s.prop2 = response.ShoppingCart.AirItems[0].FlightGroups[0].DestinationLong;
                    s.prop3 = 'nenhum';
                    s.prop4 = FormatDate(response.ShoppingCart.AirItems[0].FlightGroups[0].Flights[0].DepartureDateTime);
                    s.prop5 = 'nenhum';
                }

                if (response.ShoppingCart.AirItems[0].FlightGroups[0].Flights.length > 1) {
                    s.prop6 = 'nao';
                } else { s.prop6 = 'sim'; }


                s.prop7 = response.Summary.Adults;
                s.prop8 = response.Summary.Childs;
                s.prop9 = response.Summary.Babies;

                if (response.ShoppingCart.AirItems[0].FlightGroups.length > 1) {
                    for (var i = 0; i < response.ShoppingCart.AirItems[0].FlightGroups[0].Flights.length; i++) {
                        companies += response.ShoppingCart.AirItems[0].FlightGroups[0].Flights[i].CiaName
                        companies += ':';
                    }
                    for (var i = 0; i < response.ShoppingCart.AirItems[0].FlightGroups[1].Flights.length; i++) {
                        companies += response.ShoppingCart.AirItems[0].FlightGroups[1].Flights[i].CiaName
                    }
                }
                else {
                    for (var i = 0; i < response.ShoppingCart.AirItems[0].FlightGroups[0].Flights.length; i++) {
                        companies += response.ShoppingCart.AirItems[0].FlightGroups[0].Flights[i].CiaName
                        companies += ':';
                    }
                }

                s.prop10 = companies;

                switch (response.ShoppingCart.AirItems[0].FlightGroups[0].CabinType) {
                    case 0:
                        s.prop11 = 'primeira classe';
                        break
                    case 1:
                        s.prop11 = 'executiva';
                        break
                    case 2:
                        s.prop11 = 'economica';
                        break

                }

                s.ssl = "https:" == document.location.protocol;
                s.t();
            }
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendPesqMasterPricerOmniture = function (oSearchParam) {
        try {
            s.pageName = 'aereo:selecionar-voo';
            s.pageType = '';
            s.server = ServerHost;
            s.products = 'Aereo:';
            s.events = 'event1';

            if (oSearchParam.IsRoundTrip) {
                s.prop1 = 'round trip';
            }
            else {
                s.prop1 = 'one way';
            }

            if (oSearchParam.Origin.indexOf('(') > -1 || oSearchParam.Origin.indexOf('---') > -1) {
                s.prop2 = 'pesq:' + oSearchParam.Origin;
            }
            else {
                s.prop2 = 'cliente:' + oSearchParam.Origin;
            }

            if (oSearchParam.Destination.indexOf('(') > -1 || oSearchParam.Origin.indexOf('---') > -1) {
                s.prop3 = 'pesq:' + oSearchParam.Destination;
            }
            else {
                s.prop3 = 'cliente:' + oSearchParam.Destination
            }
            ;
            if (oSearchParam.Dates.length > 1) {
                s.prop4 = FormatSimpleDateValues(oSearchParam.Dates[0]);
                if (oSearchParam.Dates[1] != null)
                    s.prop5 = FormatSimpleDateValues(oSearchParam.Dates[1]);
            }
            else {
                s.prop4 = FormatSimpleDateValues(oSearchParam.Dates[0]);
                s.prop5 = 'nenhum';
            }
            if (oSearchParam.NonStop) {
                s.prop6 = 'sim'; //voos diretos
            }
            else {
                s.prop6 = 'nao';
            }
            s.prop7 = oSearchParam.Adult;
            s.prop8 = oSearchParam.Children;
            s.prop9 = oSearchParam.Baby;

            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendPesqHotelMasterPricerOmniture = function (oSearchParam, totalHotels) {
        try {
            s.pageName = 'hoteis:selecionar-hotel';
            s.pageType = '';
            s.server = ServerHost;
            s.products = 'Hotel';
            s.events = 'event1';
            s.channel = '';


            s.prop12 = oSearchParam.Location;
            s.prop13 = FormatSimpleDateValues(oSearchParam.CheckIn);
            s.prop14 = FormatSimpleDateValues(oSearchParam.CheckOut);
            s.prop15 = oSearchParam.RoomsRequest.length;
            s.prop16 = oSearchParam.RoomsRequest.select(function (r) { return parseInt(r.Adults, 0); }).sum();
            s.prop17 = oSearchParam.RoomsRequest.select(function (r) { return parseInt(r.ChildAges.length, 0); }).sum();

            s.prop27 = totalHotels;

            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendCheckOutOmniture = function (response) {
        try {
            if (response.Order != null) {
                if (response.Order && response.Order.OrderItems[0].BookingAirs.length > 0) {
                    var revenue = response.Summary.ServiceTaxesAmount;
                    var valorTotal = response.Order.TotalAmount;
                    var dataIda = response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].Flights[0].DepartureDateTimeValues;
                    var dataVolta = null;
                    var companies = '';
                    var companiesFlights = '';
                    var flightGroups = response.Order.OrderItems[0].BookingAirs[0].FlightGroups.length;

                    if (response.Order.OrderItems[0].BookingAirs[0].FlightGroups.length > 1) {
                        dataVolta = response.Order.OrderItems[0].BookingAirs[0].FlightGroups[1].Flights[0].DepartureDateTimeValues;
                    }
                    else {
                        dataVolta = dataIda;
                    }

                    s.pageName = 'aereo:confirmacao';
                    s.pageType = '';
                    s.server = ServerHost;
                    s.events = 'purchase,event7,event9';

                    for (var iBookingAirs = 0; iBookingAirs < response.Order.OrderItems[0].BookingAirs.length; iBookingAirs++) {
                        for (var i = 0; i < response.Order.OrderItems[0].BookingAirs[iBookingAirs].FlightGroups.length; i++) {
                            companies += response.Order.OrderItems[0].BookingAirs[iBookingAirs].FlightGroups[i].MajorityAirCompanyName;
                            companiesFlights += "/";
                        }
                    }

                    s.products = 'aereo;aereo - ' + companies + ';' + CalculaNumeroDias(dataIda, dataVolta) + ';' + valorTotal + ';event7=' + revenue + ';event9=' + response.Order.Id;
                    s.formList = "frmCheckOut";
                    s.purchaseID = response.Order.Id;

                    s.eVar2 = response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].OriginCity;
                    s.eVar3 = response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].DestinationCity;
                    s.eVar19 = companiesFlights;
                    s.eVar20 = 'aereo:' + response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].OriginCity + ':' + response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].DestinationCity + ':' + navigator.appName;

                    var isRoundTrip = response.Order.OrderItems[0].BookingAirs[0].FlightGroups.length > 1;

                    if (isRoundTrip) {
                        s.eVar1 = 'round trip';
                        s.eVar4 = FormatSimpleDateValues(dataIda);
                        s.eVar5 = FormatSimpleDateValues(dataVolta);
                    }
                    else {
                        s.eVar1 = 'one way';
                        s.eVar4 = FormatSimpleDateValues(dataIda);
                        s.eVar5 = 'nenhum';
                    }

                    if (response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].Flights.length > 1 ||
                    (isRoundTrip && response.Order.OrderItems[0].BookingAirs[0].FlightGroups[1].Flights.length > 1)) {
                        s.eVar6 = 'nao';
                    }
                    else {
                        s.eVar6 = 'sim';
                    }

                    s.eVar7 = response.Summary.Adults;
                    s.eVar8 = response.Summary.Childs;
                    s.eVar9 = response.Summary.Babies;

                    s.eVar10 = response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].Flights[0].CiaName;

                    switch (response.Order.OrderItems[0].BookingAirs[0].FlightGroups[0].Flights[0].CabinType) {
                        case 0:
                            s.eVar11 = 'primeira classe';
                            break
                        case 1:
                            s.eVar11 = 'executiva';
                            break
                        case 2:
                            s.eVar11 = 'economica';
                            break
                    }

                    s.ssl = "https:" == document.location.protocol;
                    s.t();

                }
                else {
                    s.pageName = 'Hoteis:compra';
                    s.server = ServerHost;
                    s.channel = '';
                    s.pageType = '';
                    s.events = 'scAdd,prodView,scCheckout';
                    s.products = 'Hotel;Hotel - ' + Sources[response.Order.OrderItems[0].HotelBookings[0].Broker];
                    s.t();
                }
            }
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.CountDetailsHotel = function () {
        try {
            s.pageName = 'hoteis:DetalheHotel';
            s.products = 'Hotel';
            s.events = 'event23';
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendConfirmationHotelOmniture = function (confirmation) {
        try {
            s.pageName = 'hoteis:confirmacao';
            s.server = ServerHost;
            s.channel = '';
            s.events = 'purchase';
            s.products = 'Hotel';
            s.purchaseID = confirmation.Order.Id;
            s.eVar12 = confirmation.Search.Location;
            s.eVar13 = FormatSimpleDateValues(confirmation.Search.CheckIn);
            s.eVar14 = FormatSimpleDateValues(confirmation.Search.CheckOut);
            s.eVar15 = confirmation.Search.RoomsRequest.length;
            s.eVar16 = confirmation.Search.RoomsRequest.select(function (r) { return parseFloat(r.Adults, 0); }).sum();
            s.eVar17 = confirmation.Search.RoomsRequest.select(function (r) { return parseFloat(r.ChildAges.length, 0); }).sum(); ;
            s.eVar34 = confirmation.Order.Payments[0].CreditCardProvider;

            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.InsertAutomaticTags = function (strCampaign, strServer) {
        try {
            s.campaign = strCampaign;
            s.server = strServer;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendHomeAirHotelOmniture = function (searchParameters) {
        try {
            s.pageName = 'pacotes-turisticos.aspx';
            s.channel = '';
            s.events = 'event1';
            s.products = 'pacotes';
            s.pageType = '';

            if (searchParameters.IsRoundTrip) {
                s.prop18 = 'ida e volta';
            }
            else {
                s.prop18 = 'somente ida';
            }

            s.prop20 = searchParameters.Destination;
            s.prop22 = searchParameters.CheckIn.Month + '/' + searchParameters.CheckIn.Day + '/' + searchParameters.CheckIn.Year;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.SendMasterPricerAirHotelOmniture = function (parameters) {
        try {
            s.pageName = 'pacotes:selecionar-pacote';
            s.channel = '';
            s.events = 'event1';
            s.products = 'pacotes';

            if (parameters.IsRoundTrip) {
                s.prop32 = 'ida e volta'
            }
            else {
                s.prop32 = 'somente ida';
            }

            s.prop33 = parameters.Origin;
            s.prop34 = parameters.Destination;
            s.prop35 = parameters.CheckIn.Month + '/' + parameters.CheckIn.Day + '/' + parameters.CheckIn.Year;
            s.prop36 = parameters.CheckOut.Month + '/' + parameters.CheckOut.Day + '/' + parameters.CheckOut.Year;
            s.prop38 = parameters.Adults;
            s.prop39 = parameters.Children;
            s.prop40 = parameters.Baby;
            s.prop43 = parameters.RoomsRequest.length;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.InsertAutomaticTags = function (strCampaign, strServer) {
        try {
            s.campaign = strCampaign;
            s.server = strServer;
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }

    this.CountDetailsHotel = function () {
        try {
            s.pageName = 'hoteis:DetalheHotel';
            s.products = 'Hotel';
            s.events = 'event23';
            s.t();
        }
        catch (ex) {
            PublishStringClientError(ex);
        }
    }
}

