var commonMod=angular.module("commonMod",["ngRoute"]);(function(){"use strict";function n(n,t){t.html5Mode({enabled:!1})}n.$inject=["$routeProvider","$locationProvider"];commonMod.config(n);commonMod.constant("API_URL","https://api2.prod.ga.aws.bmw.com.au/api/")})();commonMod.factory("commonFactory",["$http","$q","configFactory",function(n,t){return{getServerDate:function(){var i=t.defer();return n.get("/Home/GetServerDate").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})}}}]);commonMod.factory("configFactory",["$http","$q","jsonFactory","API_URL",function(n,t,i,r){return{getConfig:function(){var i=t.defer();return n.get("/App/json/appConfig.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getConfigTable:function(){var i=t.defer();return n.get(r+"brandCompanies/1/jsonCache/3").then(function(n){var t=JSON.parse(n.data.json);return i.resolve(t),i.promise},function(n){return i.reject(n),i.promise})}}}]);commonMod.factory("dealerFacotry",["$http","$q",function(n,t){return{getDealers:function(){var i=t.defer();return console.log("dealerFacotry -> getDealers here"),n.get("/App/json/dealers.json").then(function(n){return console.log("dealerFacotry -> getDealers -> promise"),i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getDealersLocations:function(){var i=t.defer();return console.log("dealerFacotry -> getDealersLocations"),n.get("/App/json/dealerLocation.json").then(function(n){return console.log("dealerFacotry -> getDealersLocations -> promise"),i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getStates:function(){var i=t.defer();return console.log("dealerFacotry -> getStates"),n.get("/App/json/states.json").then(function(n){return console.log("dealerFacotry -> getStates -> promise"),i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})}}}]);commonMod.factory("jsonFactory",["$http","$q","API_URL",function(n,t,i){return{getSeries:function(){var i=t.defer();return n.get("/App/json/seriesTitle.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getStaticFilter:function(){var r=t.defer();return n.get(i+"brandCompanies/1/jsonCache/2").then(function(n){var t=JSON.parse(n.data.json);return r.resolve(t),r.promise},function(n){return r.reject(n),r.promise})},getVehicleModels:function(){var i=t.defer();return n.get("/App/json/models.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getModels:function(){var i=t.defer();return n.get("/App/json/model.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getModelSpecList:function(){var i=t.defer();return n.get("/App/json/modelSpecs.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getCategories:function(){var i=t.defer();return n.get("/App/json/category.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getPostCodeZoneAndPrices:function(){var i=t.defer();return n.get("/App/json/postCodeZoneAndPrice.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getConfig:function(){var i=t.defer();return n.get("/App/json/config.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getModelSlides:function(){var i=t.defer();return n.get("https://s3-ap-southeast-2.amazonaws.com/public.prod.bmw.com.au/json/modelSelection.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getSeriesSlides:function(){var i=t.defer();return n.get("https://s3-ap-southeast-2.amazonaws.com/public.prod.bmw.com.au/json/seriesSelection.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getShapeSlides:function(){var i=t.defer();return n.get("https://s3-ap-southeast-2.amazonaws.com/public.prod.bmw.com.au/json/shapeSelection.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getFinanceProducts:function(){var i=t.defer();return n.get("/App/json/financeProducts.json").then(function(n){return i.resolve(n.data),i.promise},function(n){return i.reject(n),i.promise})},getModelsFromJsonCache:function(){var r=t.defer();return n.get(i+"brandCompanies/1/jsonCache/1").then(function(n){var t=JSON.parse(n.data.json);return r.resolve(t),r.promise},function(n){return r.reject(n),r.promise})},getPostCodeZoneAndPricesFromJsonCache:function(){var r=t.defer();return n.get(i+"brandCompanies/1/jsonCache/4").then(function(n){var t=JSON.parse(n.data.json);return r.resolve(t),r.promise},function(n){return r.reject(n),r.promise})}}}]);commonMod.factory("postcodeFactory",["$http","$q","geoService",function(n,t,i){return{getPostcodeDetails:function(i){var r=t.defer();return n.get("/Postcode/GetPostcodeDetail?postcode="+i).then(function(n){return r.resolve(n.data),r.promise},function(n){return r.reject(n),r.promise})},getSuburbByText:function(i){var r=t.defer();return n.get("/Postcode/GetSuburbByText?txt="+i).then(function(n){return r.resolve(n.data),r.promise},function(n){return r.reject(n),r.promise})},getDealerByPostcode:function(t,i){return n.get("/Websites/GetDealerByPostcode?pmaType="+t+"&postcode="+i).then(function(n){return n.data},function(){return 0})},getPostCodeFromPosition:function(t,i){return n({url:"https://maps.googleapis.com/maps/api/geocode/json?latlng="+t.coords.latitude+","+t.coords.longitude+"&sensor=true&key="+i,method:"POST"}).then(function(n){var t,i;if(n.data.results)for(t=0;t<n.data.results.length;t++)if(n.data.results[t].address_components)for(i=0;i<n.data.results[t].address_components.length;t++)if(n.data.results[t].address_components[i].types[0]==="postal_code")return n.data.results[t].address_components[i].long_name;return""},function(){return""})},getPostcodes:function(i){var r=t.defer();return n.get("/Websites/GetSuburbByText?txt="+i).then(function(n){return r.resolve(n.data),r.promise},function(n){return r.reject(n),r.promise})},sortDealers:function(n,t,r,u){for(var f=0;f<u.length;f++)u[f].distance=parseInt(u[f].dealership_id,10)===parseInt(n,10)?0:i.getDistance(t,r,u[f].dealer_location_latitude,u[f].dealer_location_longitude);return u.sort(function(n,t){return n.distance>t.distance?1:t.distance>n.distance?-1:0})}}}]);commonMod.service("geoService",["$http",function(){function n(n){return n*(Math.PI/180)}this.getDistance=function(t,i,r,u){var f=n(r-t),e=n(u-i),o=Math.sin(f/2)*Math.sin(f/2)+Math.cos(n(t))*Math.cos(n(r))*Math.sin(e/2)*Math.sin(e/2),s=2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o));return 6371*s}}]);commonMod.service("gtmService",[function(){this.virtualPageView=function(n){window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:"Pageview",url:n})};this.event=function(n,t,i,r){window.dataLayer=window.dataLayer||[];window.dataLayer.push({event:n,eventCategory:t,eventAction:i,eventLabel:r})};this.userCustomDimension=function(n){window.dataLayer=window.dataLayer||[];window.dataLayer.push({userid:n,event:"useridTrigger"})}}]);commonMod.service("urlBuilderService",["$q","$filter","filterOptionsFactory","finCalcService","configFactory","jsonFactory",function(n,t,i,r,u,f){var o={},s=[],e="#";this.init=function(){n.all([u.getConfig(),f.getModelsFromJsonCache()]).then(function(n){o=n[0];s=n[1]},function(){})};this.buildConfiguratorUrl=function(n){return e="#",model=t("filter")(s,{id:parseInt(n,10)},!0)[0],angular.isDefined(model)&&(e=o.mainUrl+o.configuratorUrl+model.agCode),e};this.buildOverviewUrl=function(n){return e="#",model=t("filter")(s,{id:parseInt(n,10)},!0)[0],angular.isDefined(model)&&model.modelPath&&model.modelPath.trim().length>0&&(e=o.mainUrl+model.modelPath+o.overviewUrl),n==255,e};this.buildFinanceUrl=function(n){return e="#",model=t("filter")(s,{id:parseInt(n,10)},!0)[0],angular.isDefined(model)&&(e=model.financeUrl&&model.financeUrl.trim().length>0?model.financeUrl:o.mainUrl+o.financeUrl+model.agCode),e};this.buildTestDriveUrl=function(n){return e="#",model=t("filter")(s,{id:parseInt(n,10)},!0)[0],angular.isDefined(model)&&model.modelPath&&model.modelPath.trim().length>0&&(e=o.mainUrl+model.modelPath+o.testdriveUrl),e};this.buildeBroucherUrl=function(n){return e="#",model=t("filter")(s,{id:parseInt(n,10)},!0)[0],angular.isDefined(model)&&model.modelPath&&model.modelPath.trim().length>0&&(e=o.mainUrl+model.modelPath+o.eBroucherUrl),e}}]);commonMod.service("utilityService",["$q","$filter","configFactory","jsonFactory",function(n,t){this.getDNtoJSDate=function(n){var i=t("date")(n.replace("/Date(","").replace(")/","").trim(),"medium");return new Date(i)};this.dateAdd=function(n,t,i){var r=new Date(n);switch(t.toLowerCase()){case"year":r.setFullYear(r.getFullYear()+i);break;case"quarter":r.setMonth(r.getMonth()+3*i);break;case"month":r.setMonth(r.getMonth()+i);break;case"week":r.setDate(r.getDate()+7*i);break;case"day":r.setDate(r.getDate()+i);break;case"hour":r.setTime(r.getTime()+i*36e5);break;case"minute":r.setTime(r.getTime()+i*6e4);break;case"second":r.setTime(r.getTime()+i*1e3);break;default:r=undefined}return r};this.getQueryString=function(n){var t=window.location.search.replace("?","").split("&"),r,i;if(n==="parent"&&(t=window.parent.location.search.replace("?","").split("&")),r={},t!=="")for(i=0;i<t.length;i++)r[t[i].split("=")[0]]=t[i].split("=")[1];return r}}])