var i = 0;
var imageList = [];
var size;
var heroImageFilePath;

var Home = (function () {
    var checkMobileSize = function() {
        var isMobile = window.matchMedia('(max-width: 767px)');
        if (isMobile.matches) {
            $('.header-search').find('h1').addClass('cu-color');
        } else {
            $('.header-search').find('h1').removeClass('cu-color');
        }
    };

    $(window).on('resize', function () {
        checkMobileSize();
    });

    var initResearch = function () {
        checkMobileSize();
        $(".build-button").on("click", function () {
            var make = $(".research-make-text").first().text();
            var model = $(".research-model-text").first().text();
            if (checkFilledResearch(make, model)) {
                goToResearchPage(make, model);
            } else {
                invalidResearchRequest(this);
            }
        });

        $(".research-make-button").on('click', function () {
            $(".build-button").tooltip('destroy');
        });

        $('.research-make-dropdown li').on('click', function () {
            $(".research-model-dropdown").empty();
            Home.GetModelFromMakes($(this).text());
            $(".research-model-button").prop("disabled", false);
            var text = $(this).text();
            $(".research-make-text").text(text);
        });
    };

    var invalidResearchRequest = function (elm) {
        $(elm).tooltip({ placement: 'bottom', trigger: 'manual' }).tooltip('show');
    };

    var goToResearchPage = function (make, model) {
        var baseUrl = window.location.protocol + '//' + window.location.host + '/' + 'Research/Details';
        var urlParams = '?make=' + make + '&model=' + model;
        var redirectUrl = baseUrl + urlParams;
        document.location.href = redirectUrl;
    };

    var checkFilledResearch = function (make, model) {

        if (make === "Select a Make" || model === "Select a Model") {
            return false;
        } else {
            return true;
        }
    }

    var getModelFromMakes = function (make) {
        var mainUrl = window.location.protocol + '//' + window.location.host + '/';
        var url = mainUrl + "Home/GetModels/?make=" + make;
        $.ajax({
            url: url,
            dataType: "json",
            type: "GET",
            success: function (results) {
                $.each(results, function (i, result) {
                    let cleanContent = DOMPurify.sanitize(result);
                    $(".research-model-dropdown").append('<li class="option" name="' + cleanContent + '" value="' + cleanContent + '"><a>' + cleanContent + '</a></li>');
                });
                $(".research-model-text").text("Select a Model");
                $('.research-model-dropdown li').on('click', function () {
                    var text = $(this).text();
                    $(".research-model-text").text(text);
                });
                $(".research-model-button").on('click', function () {
                    $(".build-button").tooltip('destroy');
                });
            }
        });
    };

    var changeHeroImage = function () {
        var $heroImages = $('#hero-images');
        var imageUrl = heroImageFilePath + "AutoSMART/HeroImages/Combined/" + imageList[i];
        var $heroImage = $("<div class='hero-image' style='background-image: url(\"" + imageUrl + "\"); " + size + "'></div>");
        $heroImages.append($heroImage);

        var $currentSlide = $($heroImages).children().first();
        var $nextSlide = $($heroImages).children().first().next();
        $nextSlide.css("top", "-410px");

        $($nextSlide).animate({ opacity: 1 }, {
            duration: 1000,
            complete: function () {
                $($currentSlide).css("opacity", "0");
                $nextSlide.css("top", "0px");
                $currentSlide.remove();
            }
        });

        i = (i < (imageList.length - 1)) ? (i + 1) : 0;
    }


    var initHeroImage = function () {
        var isMobile = window.matchMedia("only screen and (max-width: 760px)");
        var retina = (window.devicePixelRatio > 1.5) ? "@2x.jpg" : ".jpg";
        size = (window.devicePixelRatio > 1.5) ? "background-size: 1440px 410px;" : "";
        var heroImageList = $('#hero-image-list').val().replace(/.jpg/g, retina);
        var imageArray = heroImageList.split(",");
        $.each(imageArray, function (i, value) {
            if (imageArray[i] != "") {
                imageList.push(imageArray[i]);
            }
        });

        heroImageFilePath = $('#hero-file-path').val();
        var $heroImages = $('#hero-images');
        $heroImages.empty();

        var imageUrl = heroImageFilePath + "AutoSMART/HeroImages/Combined/" + imageList[0];

        if (isMobile.matches) {
            var randomImage = Math.floor(Math.random() * imageList.length);
            imageUrl = heroImageFilePath + "AutoSMART/HeroImages/Combined/" + imageList[randomImage];
        }

        var $heroImage = $("<div class='hero-image' style='background-image: url(\"" + imageUrl + "\"); " + size + "'></div>");

        $heroImages.append($heroImage);
        $heroImages.children().first().css("opacity", "1");

        if (!isMobile.matches) {
            if (imageList.length > 1) {
                i++;
                setInterval(changeHeroImage, 6000);
            }
        } else {
            $('#hero-images-xs img').prop('src', imageUrl);
        }
    }

    return {
        InitResearch: initResearch,
        InitHeroImage: initHeroImage,
        GetModelFromMakes: getModelFromMakes,
        ChangeHeroImage: changeHeroImage
    };
})();

$(function () {
    Home.InitResearch();
});
var Search = (function () {
    var mainUrl = window.location.protocol + '//' + window.location.host + '/';

    var getModels = function (condition, make, isSpecial) {

        if ((condition == null || condition.length == 0 && !isSpecial ) || make == null || make.length == 0) {
            return [];
        }
        var lowercaseCondition = condition.toLowerCase();

        switch (lowercaseCondition) {
            case 'new':
            case 'chrome':
                return getChromeModels(make);
            case 'inventory':
            case 'used':
            case 'old':
            case 'newandused':
            case 'new and used':
                return getInventoryModels(make);
        }

        return [];
    };

    var getChromeModels = function(make) {
        var collection = [];

        $.ajax({
            type: "GET",
            dataType: "json",
            data: { 'make': make },
            cache: true,
            async: false,
            url: mainUrl + '/Build/GetModels'
        }).done(function(makes) {
            collection = makes;
        });

        return collection;
    }
    var getSpecialtyMakes = function (specialtyList) {
        var collection = [];
        var url = mainUrl + '/searchV3/GetSpecialtyMakes/';
        if (specialtyList && specialtyList.length > 0) {
            url += '?specialList=' + specialtyList;
        }

        $.ajax({
            type: "GET",
            dataType: "json",
            cache: true,
            async: false,
            url: url
        }).done(function (makes) {
            collection = makes;
        });

        return collection;
    }
    var getInventoryModels = function(make) {
        var collection = [];

        $.ajax({
            type: "GET",
            dataType: "json",
            data: { 'make': make },
            cache: true,
            async: false,
            url: mainUrl + '/SearchV3/GetModels'
        }).done(function(makes) {
            collection = makes;
        });

        return collection;
    }

    var getMakes = function (condition, isSpecial) {

        if (condition == null || condition.length == 0) {
            return [];
        }
        if (isSpecial) {
            return getSpecialtyMakes();
        }

        var lowercaseCondition = condition.toLowerCase();

        switch (lowercaseCondition) {
            case 'new':
            case 'chrome':
                return getChromeMakes();
            case 'inventory':
            case 'used':
            case 'old':
            case 'newandused':
            case 'new and used':
                return getInventoryMakes();
        }

        return [];
    }
    var getSpecialtyMakesHomePage = function (vehicleTypeId) {

        var collection = [];

        $.ajax({
            type: "GET",
            dataType: "json",
            cache: true,
            async: false,
            url: mainUrl + '/SearchV3/GetSpecialtyMakesHome?vehicleStyleId=' + vehicleTypeId
        }).done(function (makes) {
            collection = makes;
        });
        return collection;
    }

    var getInventoryMakes = function () {
        var collection = [];

        $.ajax({
            type: "GET",
            dataType: "json",
            cache: true,
            async: false,
            url: mainUrl + '/SearchV3/GetMakes'
        }).done(function(makes) {
            collection = makes;
        });

        return collection;
    }

    var getChromeMakes = function () {
        var collection = [];

        $.ajax({
            type: "GET",
            dataType: "json",
            cache: true,
            async: false,
            url: mainUrl + '/Build/GetMakes'
        }).done(function (makes) {
            collection = makes;
        });

        return collection;
    }

    return {
        GetMakes: getMakes,
        GetModels: getModels,
        GetSpecialtyMakes: getSpecialtyMakes,
        GetSpecialtyMakesHomePage: getSpecialtyMakesHomePage
    };
})();

var makeDropdownChange = function () {
    var make = getSelectedMake();
    MainSearch.GetModels(make, false);
}

var getSelectedMake = function () {
    var selectBox = document.getElementById("mainSearchMakes");
    var make = selectBox.options[selectBox.selectedIndex].value;
    return make;
}

var getSelectedModel = function () {
    var selectBox = document.getElementById("mainSearchModels");
    var model = selectBox.options[selectBox.selectedIndex].value;
    return model;
}

var MainSearch = (function() {

    var isSpecialtySearch = function() {
        var type = $.url(document.location.href.toLowerCase()).param("type");

        return type && type.toLowerCase() === $("#search-filters").data("specialty-flag");
    };

    var search = function () {
        var $mainSearchConditions = $('#mainSearchConditions span.buttonText');
        var arguments = [];
        var condition;

        if ($mainSearchConditions.length > 0) {
            condition = $mainSearchConditions.data('condition').toLowerCase();

            if (condition.length > 0) {
                if (condition == 'specialty vehicles') {
                    var vehicleTypeArg = "";
                    var itemType = $('#vehicle-type-text').data('value');
                    if (itemType.toLowerCase() != 'vehicle type')
                        vehicleTypeArg = "vehicletype=" + itemType + "&";
                    arguments.push( vehicleTypeArg + 'Type=Specialty');
                } else {
                    arguments.push('condition=' + encodeURIComponent(condition));
                }
            }
        }

        var make = getSelectedMake();

        if (make.toLowerCase() != "make" && make.toLowerCase() != "select a make" && make.length > 0) {
            var makeModelArg = 'Makes=' + encodeURIComponent(make);
            var model = getSelectedModel();
            if (model.toLowerCase() != 'model' && model.toLowerCase() != "select a model" && model.length > 0) {
                makeModelArg += '&MakeModel=' + encodeURIComponent(make) + '|' + encodeURIComponent(model);
            }
            arguments.push(makeModelArg);
        }

        document.location.href = window.location.protocol + '//' + window.location.host + '/' + 'Search' + (arguments.length == 0?'':'?' + arguments.join('&'));
    }
    var getMakes = function (condition, conditionText, isSpecial) {
        var mainSearchModelElem = $("#mainSearchModels");
        var mainSearchMakeElem = $("#mainSearchMakes");
        var mainVehicleTypesElem = $("#mainVehicleTypes");

        if (!isSpecial) {
            isSpecial = isSpecialtySearch();
            mainVehicleTypesElem.hide();
            mainSearchModelElem.show();
        }

        var makelist = '';
        var modellist = '';
        $('#mainSearchButton').tooltip({ placement: 'right' });
        mainSearchMakeElem.find('.dropdown-menu').empty();
        mainSearchModelElem.empty();
        mainSearchMakeElem.find(' span.find-make-text').text('Make');

        $('#mainSearchConditions').find('[data-toggle="dropdown"] span').text(conditionText).data('condition', condition);

        if (condition.toLowerCase() == 'condition' || isSpecial) {
            mainSearchMakeElem.find('.dropdown-menu').append(makelist);
            mainVehicleTypesElem.find('[data-toggle="dropdown"] span').text('Vehicle Type').data('value', 'Vehicle Type');
            mainSearchMakeElem.find('button').attr('disabled', 'disabled');
            mainSearchModelElem.find('.makeSelected').append(modellist);
            mainVehicleTypesElem.show();
            mainSearchModelElem.hide();
            return;
        }
        var makes = Search.GetMakes(condition, isSpecial);

        if (makes != undefined && makes.length > 0) {
            var count = makes.length;

            for (var i = 0; i < count; i++) {
                var make = makes[i].Make;
                var makeParam = make.replace(/'/g, "\\'");
                makelist += '<li class="option" onclick="MainSearch.GetModels(\'' + makeParam + '\', true,' + isSpecial + ')"><a>' + make + '</a></li>';
            }
        }
        mainSearchMakeElem.find('button').removeAttr('disabled');
        mainSearchModelElem.find('.makeSelected').attr('disabled', 'disabled');
        mainSearchMakeElem.find('.dropdown-menu').append(makelist);
        mainSearchModelElem.find('.makeSelected').append(modellist);
    };

    var getModels = function (make, isMainSearch, isSpecial) {
        var mainSearchModelElem = $("#mainSearchModels");
        var mainSearchMakeElem = $("#mainSearchMakes");

        if (!isSpecial) {
            isSpecial = isSpecialtySearch();
        }
        $('#mainSearchButton').tooltip('destroy');
        var condition = 'used';
        var modelText = 'Select a Model';

        if (isMainSearch) {
            condition = $('#mainSearchConditions span.buttonText').data('condition');
            modelText = 'Model';
        }
        var modellist = '';
        mainSearchModelElem.empty();
        mainSearchMakeElem.find('[data-toggle="dropdown"] span').text(make);

        if (isSpecial) {
            mainSearchMakeElem.find('button').removeAttr('disabled');
            return;
        }
        var models = Search.GetModels(condition, make, isSpecial);
        var modelDropdown = document.getElementById("mainSearchModels");
        models.unshift({ ID: '', Model: 'Select a Model' });
        if (models != undefined && models.length > 0) {
            var count = models.length;

            for (var i = 0; i < count; i++) {
                var model = models[i].Model;
                modellist += '<li class="option" onclick="MainSearch.UpdateModelButton(\'' + model + '\')"><a>' + model + '</a></li>';
                var option = new Option(model.toString(), model.toString());
                modelDropdown.append(option);
            }
        }
        mainSearchModelElem.find('.makeSelected').append(modellist);
        mainSearchModelElem.find('.makeSelected').removeAttr('disabled');
        $("#mainSearchModels").removeAttr('disabled');
    };

    var findSpecialtyMakes = function (vehicleType, vehicleTypeId, value) {
        $("#mainVehicleTypes").show();
        $("#mainSearchModels").hide();
        var makelist = '';
        $('#mainSearchButton').tooltip({ placement: 'right' });
        $('#mainSearchMakes .dropdown-menu').empty();
        $('#mainSearchMakes span.find-make-text').text('Make');

        $('#mainVehicleTypes').find('[data-toggle="dropdown"] span').text(vehicleType);
        $("#vehicle-type-text").data('value', value);
        var typeId = $('#mainSearchConditions span.buttonText').data('condition');
        if (typeId.toLowerCase() == 0) {
            $('#mainSearchMakes .dropdown-menu').append(makelist);
            return;
        }
        var makes = Search.GetSpecialtyMakesHomePage(vehicleTypeId);

        if (makes != undefined && makes.length > 0) {
            let count = makes.length;
            $('#mainSearchMakes button').removeAttr('disabled');
            for (let i = 0; i < count; i++) {
                let cleanMake = DOMPurify.sanitize(makes[i].Make);
                let makeParam = cleanMake.replace(/'/g, "\\'");
                makelist += '<li class="option" onclick="MainSearch.GetModels(\'' + makeParam + '\', true,' + true + ')"><a>' + cleanMake + '</a></li>';
            }
            $('#mainSearchMakes .dropdown-menu').append(makelist);
        }
    };

    var updateModelButton = function(model) {
        $('#mainSearchModels').find('[data-toggle="dropdown"] span').text(model);
    };

    return {
        Search: search,
        GetMakes: getMakes,
        GetModels: getModels,
        UpdateModelButton: updateModelButton,
        IsSpecialtySearch: isSpecialtySearch,
        FindSpecialtyMakes: findSpecialtyMakes
    };
})();
var Dealer = (function () {
    
    var findADealerMakeSelect = function ($elem) {
        var $btn = $(".find-a-dealer-btn");
        var text = $elem.text();
        $('.dealer-make-text').html(text);
        $btn.tooltip('destroy');

        $btn.removeData("specialty");
        if ($elem.data("specialty")) {
            $btn.data("specialty", true).data("item-type-id", $elem.data("item-type-id"));
        }
    };

    var getSelectedDealer = function () {
        var selectBox = document.getElementById("mainSearchDealers");
        var make = selectBox.options[selectBox.selectedIndex].innerHTML;
        return make;
    }

   var dealerSearch = function () {
        var zip = $("#header-zip").text().trim();
        var make = $('.dealer-make-text').first().text();
        var make = getSelectedDealer();
        var validZip = Global.IsValidZipCode(zip);

        var $btn = $(".find-a-dealer-btn");
        var baseUrl = window.location.protocol + '//' + window.location.host + '/' + 'Dealer';
        var urlParams = '?makemodel=' + make + '&location=' + zip;
        if ($btn.data("specialty")) {
            var itemTypeId = $btn.data("item-type-id");
            urlParams = "?vehicletypeid=" + itemTypeId + "&location=" + zip;
        }

        if (make.toLowerCase() === "select a make") {
            urlParams = "?location=" + zip;
        }

        var redirectUrl = baseUrl + urlParams;
        if (validZip) {
            document.location.href = redirectUrl;
        }
    };
    
    var setDealerCookie = function() {
        $('a[data-role="view-inventory"]').on("click", function () {
            $.cookie("dealer-srp-link", document.location.search, { path: "/" });
        });
    };

    var getDealerCookie = function() {
        var cookieVal = $.cookie("dealer-srp-link");
        if (!cookieVal) return;
        var firstChar = cookieVal.charAt(0);
        if (firstChar === "&") {
            cookieVal.replace("&", "?");
        }
        if (firstChar != "?") {
            cookieVal = "?" + cookieVal;
        }
        var $target = $("div.dealer-listings").find("a");

        var href = "/Dealer/" + cookieVal;
        $target.attr("href", href);
    };

    var resetOptions = function($container) {
        $container.find("label").removeClass("selected");
    };

    var initSpecialtyDropDown = function () {
        var $makesDropdown = $("#makes-dropdown");
        var $container = $("#vehicletype-container");

        $container.find("label").on("click", function () {
            resetOptions($container);
            var $el = $(this);
            $el.addClass('selected');
            var itemType = $el.data("item-type");
            $("#specialty-dropdown").find(".selected-values").text($el.text());
            if (itemType.toLowerCase() === "car") {
                $makesDropdown.show();
            } else {
                $makesDropdown.hide();
            }
            SearchBar.RefreshAddressBar();
        });

        selectSpecialtyType();
    };

    var selectSpecialtyType = function () {
        var $makesDropdown = $("#makes-dropdown");
        var $label = $("#specialty-dropdown").find(".selected-values");
        var vehicleTypeId = $.url().param("vehicletypeid");
        var vehicleType = $('label[data-item-type-id="' + vehicleTypeId + '"]').text();
        $label.text(vehicleType);
        if (vehicleTypeId === 5 || !vehicleTypeId) {
            $makesDropdown.show();
            $label.text($('label[data-item-type-id="5"]').text());
        } else {
            $makesDropdown.hide();
        }
    };

    return {
        FindADealerMakeSelect: findADealerMakeSelect,
        DealerSearch: dealerSearch,
        GetDealerCookie: getDealerCookie,
        SetDealerCookie: setDealerCookie,
        InitSpecialtyDropDown: initSpecialtyDropDown
    };
})();

$(function () {

    $('.find-a-dealer-dropdown li').on('click', function () {
        Dealer.FindADealerMakeSelect($(this));
    });

    $('.find-a-dealer-btn').on('click', function () {
        Dealer.DealerSearch();
    });

});
'use strict';

(function (module) {
    module.service('GoogleAnalyticsService', ['$http', '$q', function ($http, $q) {


        //New for GA4 Stuff
        let dealerRaterViewed = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer, onPageLocation) {
            gtag('event', 'dealer_rater_viewed', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel,
                'AS_on_page_location': onPageLocation
            });
        };
        let contactDealerBtn = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer, onPageLocation) {
            gtag('event', 'contact_dealer_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel,
                'AS_on_page_location': onPageLocation
            });
        };

        let submitLeadBtn = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer, selectedOption, modalTitle) {
            gtag('event', 'contact_dealer_form_submit', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel,
                'AS_request_type': selectedOption,
                'AS_on_page_location': modalTitle
            });
        };

        let editPaymentBtn = function () {
            gtag('event', 'edit_payment_clicked', {});
        };

        let applyForLoanBtn = function () {
            gtag('event', 'apply_for_a_loan_clicked', {});
        };

        let spotlightAdClick = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer) {
            gtag('event', 'spotlight_ad_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel
            });
        };
        let saveVehicleClick = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer) {
            gtag('event', 'save_vehicle_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel
            });
        };

        let removeVehicleClick = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer) {
            gtag('event', 'remove_vehicle_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel
            });
        };

        let whatCanIAffordTabClick = function () {
            gtag('event', 'what_can_I_afford_tab_clicked', {});
        };

        let monthyPaymentCalculatorTabClick = function () {
            gtag('event', 'monthly_payment_calculator_tab_clicked', {});
        };

        let carfaxReportClick = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer) {
            gtag('event', 'carfax_report_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel
            });
        };

        let continueToFinancingClicked = function () {
            gtag('event', 'continue_to_financing_clicked', {
            });
        };

        let similarVehicleClicked = function (dealer, dealerId, condition, year, makeModel, vin, itemId, plusDealer) {
            gtag('event', 'similar_vehicle_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_VIN': vin,
                'AS_item_id': itemId,
                'AS_condition': condition,
                'AS_year': year,
                'AS_make_model': makeModel
            });
        };

        let priceComparisonClick = function () {
            gtag('event', 'price_comparison_clicked', {});
        };

        let priceComparisonTabClick = function () {
            gtag('event', 'price_comparison_tab_clicked', {});
        };

        let viewInventoryClicked = function (dealer, dealerId, condition, plusDealer) {
            gtag('event', 'view_inventory_clicked', {
                'AS_dealer': dealer,
                'AS_dealer_id': dealerId,
                'AS_dealer_plus': plusDealer,
                'AS_condition': condition
            });
        };

        let financeAffordCalculatorBtn = function (desiredMonthlyPayment, loanterms, interestRate, downPayment, tradeInValue, cashRebate, affordabilityPrice) {
            gtag('event', 'affordability_calculator_clicked', {
                'AS_desired_monthly_payment': desiredMonthlyPayment,
                'AS_loan_terms': loanterms,
                'AS_interest_rate': interestRate,
                'AS_down_payment': downPayment,
                'AS_trade_in_value': tradeInValue,
                'AS_cash_rebate': cashRebate,
                'AS_affordability_price': affordabilityPrice
            });
        };

        let financeAffordPaymentVehicleSearchBtn = function (desiredMonthlyPayment, loanterms, interestRate, downPayment, tradeInValue, cashRebate, affordabilityPrice, zipCode) {
            gtag('event', 'affordability_calculator_searched', {
                'AS_desired_monthly_payment': desiredMonthlyPayment,
                'AS_loan_terms': loanterms,
                'AS_interest_rate': interestRate,
                'AS_down_payment': downPayment,
                'AS_trade_in_value': tradeInValue,
                'AS_cash_rebate': cashRebate,
                'AS_affordability_price': affordabilityPrice,
                'AS_zip_code': zipCode
            });
        };

        let kBBwidgetClicked = function () {
            gtag('event', 'KBB_widget_clicked', {});
        };

        let jDPowerWidgetClicked = function () {
            gtag('event', 'JDPower_widget_clicked', {});
        };

        let blackBookwidgetClicked = function () {
            gtag('event', 'BlackBook_widget_clicked', {});
        };

        //End New Stuff for GA$

        let exploreFinancingClick = function () {
            //gtag('event', 'Home Page - Explore Financing Clicked', {});
        };

        let prequalifyContinueBtn = function () {
            //gtag('event', 'Prequalify - Prequalify Continue Button Clicked', {});
        };

        let continueShoppingBtn = function () {
            //gtag('event', 'QQ No Results - Continue Shopping Clicked', {});
        };

        let shopforCarsBtn = function () {
            //gtag('event', 'QQ Results - Shop for Cars Clicked', {});
        };

        /* Vehicle Details Page */

        let appointmentBtn = function () {
            //gtag('event', 'Vehicle Details Page - Schedule an appointment Clicked', {});
        };

        let askQuestionBtn = function () {
            //gtag('event', 'Vehicle Details Page - Ask a question Clicked', {});
        };

        let editPaymentVDPBtn = function () {
            //gtag('event', 'Vehicle Details Page - Edit Payment Clicked', {});
        };

        let editFinancingVDPBtn = function () {
            //gtag('event', 'Vehicle Details Page - Edit Financing Clicked', {});
        };

        let continueFinanceVDPBtn = function () {
            //gtag('event', 'Vehicle Details Page - Continue to Financing Clicked', {});
        };

        /* SRP */

        let editFinancingBtn = function () {
            //gtag('event', 'Search Results Listing - Edit Financing Clicked', {});
        };

        let continueFinanceBtn = function () {
            //gtag('event', 'Search Results Listing - Continue to Financing Clicked', {});
        };

        /* Header */

        let saveFavoriteVehicle = function (itemId) {
            //gtag('event', 'Search Results Listing - Save Vehicle', { 'itemId': itemId });
        };

        /* Build Page */

        let buildSearchNearYou = function () {
            //gtag('event', 'Build Page - Search Inventory', {});
        };

        /* Finance */

        let financeMonthlyPaymentCalculatorBtn = function () {
            //gtag('event', 'Finance Page - Monthly Payment Calculator - Button Clicked', {});
        };

        let financeMonthlyPaymentVehicleSearchBtn = function () {
            //gtag('event', 'Finance Page Monthly Payment Calculator - View Inventory Button Clicked', {})
        };

        let financeApplyLoanBtn = function () {
            //gtag('event', 'Finance Page Apply for a Loan Clicked', {});
        };

        let headerApplyLoanBtn = function () {
            //gtag('event', 'Header Page - Apply for a Loan Clicked', {});
        };

        let srpPreferredApplyLoanBtn = function () {
            //gtag('event', 'SRP Preferred Plus Page - Apply for a Loan Clicked', {});
        };

        let srpApplyLoanBtn = function () {
            //gtag('event', 'SRP Page - Apply for a Loan Clicked', {});
        };

        let vdpPreferredApplyLoanBtn = function () {
            //gtag('event', 'VDP Preferred Plus Page - Apply for a Loan Clicked', {});
        };

        let vdpApplyLoanBtn = function () {
            //gtag('event', 'VDP Page - Apply for a Loan Clicked', {});
        };

        let financeInformationArticleClick = function (text) {
            //gtag('event', 'Finance Page - Information Articles Clicked', { 'text': text });
        };

        let financeResearchToolsClick = function (text) {
            //gtag('event', 'Finance Page - Research Tools Clicked', { 'text': text });
        };

        let financeVehicleSearchBtn = function (make, model) {
            //gtag('event', 'Finance Page - Search Clicked', { 'Make': make, 'Model': model });
        };

        let financeDealerSearchBtn = function (make) {
            //gtag('event', 'Finance Page - Find A Dealer Clicked', { 'Make': make.toString() });
        };

        return {
            SaveFavoriteVehicle: saveFavoriteVehicle,
            BuildSearchNearYou: buildSearchNearYou,
            FinanceAffordCalculatorBtn: financeAffordCalculatorBtn,
            FinanceAffordPaymentVehicleSearchBtn: financeAffordPaymentVehicleSearchBtn,
            FinanceMonthlyPaymentCalculatorBtn: financeMonthlyPaymentCalculatorBtn,
            FinanceMonthlyPaymentVehicleSearchBtn: financeMonthlyPaymentVehicleSearchBtn,
            FinanceApplyLoanBtn: financeApplyLoanBtn,
            FinanceInformationArticleClick: financeInformationArticleClick,
            FinanceResearchToolsClick: financeResearchToolsClick,
            FinanceVehicleSearchBtn: financeVehicleSearchBtn,
            FinanceDealerSearchBtn: financeDealerSearchBtn,
            ViewInventoryClicked: viewInventoryClicked,
            PriceComparisonClick: priceComparisonClick,
            PriceComparisonTabClick: priceComparisonTabClick, 
            KBBwidgetClicked: kBBwidgetClicked,
            JDPowerWidgetClicked: jDPowerWidgetClicked,
            BlackBookwidgetClicked: blackBookwidgetClicked,

            EditFinancingBtn: editFinancingBtn,
            ContinueFinanceBtn: continueFinanceBtn,
            AppointmentBtn: appointmentBtn,
            AskQuestionBtn: askQuestionBtn,
            RemoveVehicleClick: removeVehicleClick,
            SimilarVehicleClicked: similarVehicleClicked,
            CarfaxReportClick: carfaxReportClick,
            EditPaymentVDPBtn: editPaymentVDPBtn,
            EditFinancingVDPBtn: editFinancingVDPBtn,
            ContinueFinanceVDPBtn: continueFinanceVDPBtn,
            ExploreFinancingClick: exploreFinancingClick,
            PrequalifyContinueBtn: prequalifyContinueBtn,
            ContinueShoppingBtn: continueShoppingBtn,
            ShopforCarsBtn: shopforCarsBtn,
            DealerRaterViewed: dealerRaterViewed,
            ContactDealerBtn: contactDealerBtn,//new stuff here down
            SubmitLeadBtn: submitLeadBtn,
            EditPaymentBtn: editPaymentBtn,
            ApplyForLoanBtn: applyForLoanBtn,
            SpotlightAdClick: spotlightAdClick,
            SaveVehicleClick: saveVehicleClick,
            RemoveVehicleClick: removeVehicleClick,
            WhatCanIAffordTabClick: whatCanIAffordTabClick,
            MonthyPaymentCalculatorTabClick: monthyPaymentCalculatorTabClick,
            ContinueToFinancingClicked: continueToFinancingClicked

        }
    }]);

})(angular.module('AutoSMART.Web.Common'));
'use strict';

(function (module) {
    module.service('LoggingService', ['$http', '$q', function ($http, $q) {
        
        var loggingUserAction = function(userActionType, itemId, sourceSectionId) 
        {
            var deferred = $q.defer();


            var link = '/Vehicle/LoggingUserAction';

            var promise = $http({
                method: 'POST',
                url: link,

                headers: {
                    'Content-Type': 'application/json',
                    'Accept': '*/*',
                    //'Accept-Encoding': 'gzip, deflate',
                    'Accept-Language': 'en-US,en;q=0.8'

                },
                data: { userActionType: userActionType, itemId: itemId, sourceSectionId: sourceSectionId  },
            }).then(function (data) {
                if (data == null) return;
                if (data.data) {
                    data = data.data;
                }
                deferred.resolve(data);
            }).catch(function (data) {
                deferred.reject(data);
            });
            return deferred.promise;

            //$.ajax({ url: '/Vehicle/LoggingUserAction', cache: false, data: { userActionType: userActionType, itemId: itemId, sourceSectionId: sourceSectionId  } });
        };
        

        return {
            LoggingUserAction:loggingUserAction
        }
    }]);

})(angular.module('AutoSMART.Web.Common'));
