"use strict";var appName="paddy_shop_locator",underscore=angular.module("underscore",[]),mainApp,serviceBase,mouse_is_inside;underscore.factory("_",function(){return window._});mainApp=angular.module(appName,["ui.router","ngResource","LocalForageModule","jkuri.timepicker","angular-loading-bar","ngSanitize","angularUtils.directives.dirPagination","ngFileUpload","mp.datePicker"]);mainApp.constant("Constants",{MvcValues:MvcValues,WeekDays:["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]});serviceBase="/";mainApp.constant("ngAuthSettings",{apiServiceBaseUri:serviceBase,clientId:"storeLocator"});mainApp.constant("Enums",{});mainApp.config(["$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider",function(n,t,i,r){n.state("root",{abstract:!0,template:'<ui-view autoscroll="false"/>'});t.otherwise("/");i.html5Mode(!0);r.interceptors.push("authInterceptorService")}]);mainApp.run(["$rootScope","$anchorScroll","$state","Constants","httpManager","$location","authService",function(n,t,i,r,u,f,e){e.fillAuthData();n.showLoading=!1;n.$on("$stateChangeStart",function(){n.showLoading=!0});n.$on("$stateChangeSuccess",function(){t();n.showLoading=!1});n.safeApply=function(n){var t=this.$root.$$phase;t=="$apply"||t=="$digest"?n&&typeof n=="function"&&n():this.$apply(n)}}]);mouse_is_inside=!1;$(document).on("mouseenter",".date-picker",function(){mouse_is_inside=!0});$(document).on("mouseleave",".date-picker",function(){mouse_is_inside=!1});$(document).on("mouseup","body",function(){$(".date-picker").hasClass("show")&&(mouse_is_inside||$(".date-picker").removeClass("show"))});mainApp.provider("randomPath",function(){var n=Math.floor(Math.random()*9999999+1e6);this.newPath=function(t){return t.indexOf("?")>-1?t+"&rnd="+n:t+"?rnd="+n};this.$get=function(){return this}});mainApp.config(["$stateProvider","randomPathProvider",function(n,t){n.state("root.refresh",{url:"/refresh",templateUrl:t.newPath("js/controllers/refresh/refresh.html"),controller:"RefreshCtrl"}).state("root.home",{url:"/",templateUrl:t.newPath("js/controllers/home-public/home.html"),controller:"HomeCtrl",data:{isStorePage:!1,isLocationPage:!1}}).state("root.store",{url:"/store/:storeName",templateUrl:t.newPath("js/controllers/home-public/home.html"),controller:"HomeCtrl",params:{storeName:{value:"",squash:!0}},data:{isStorePage:!0,isLocationPage:!1}}).state("root.location",{url:"/location/:latitude/:longitude",templateUrl:t.newPath("js/controllers/home-public/home.html"),controller:"HomeCtrl",params:{latitude:{value:0},longitude:{value:0}},data:{isStorePage:!1,isLocationPage:!0}}).state("root.login",{url:"/login",templateUrl:t.newPath("js/controllers/login/login.html"),controller:"LoginCtrl"}).state("root.adminRedirct",{url:"/admin",template:"",controller:"AdminCtrl"}).state("root.admin",{templateUrl:t.newPath("js/controllers/admin/admin.html"),controller:"AdminCtrl",abstract:!0}).state("root.admin.descriptions",{url:"/admin/descriptions",templateUrl:t.newPath("js/controllers/globalDescriptions/globalDescriptions.html"),controller:"GlobalDescriptionsCtrl"}).state("root.admin.list",{url:"/admin/list",templateUrl:t.newPath("js/controllers/listStores/listStores.html"),controller:"ListStoresCtrl"}).state("root.admin.createStore",{url:"/admin/store/new",templateUrl:t.newPath("js/controllers/createEditStore/createEditStore.html"),controller:"CreateEditStoreCtrl",data:{isCreate:!0,isEdit:!1}}).state("root.admin.editStore",{url:"/admin/store/edit/:id",templateUrl:t.newPath("js/controllers/createEditStore/createEditStore.html"),controller:"CreateEditStoreCtrl",controllerAs:"vm",data:{isCreate:!1,isEdit:!0}}).state("root.admin.userList",{url:"/admin/users",templateUrl:t.newPath("js/controllers/listUsers/listUsers.html"),controller:"ListUsersCtrl"}).state("root.admin.userEdit",{url:"/admin/users/edit/:id",templateUrl:t.newPath("js/controllers/editCreateUser/editCreateUser.html"),controller:"EditCreateUsersCtrl",data:{isCreate:!1,isEdit:!0}}).state("root.admin.userNew",{url:"/admin/users/new",templateUrl:t.newPath("js/controllers/editCreateUser/editCreateUser.html"),controller:"EditCreateUsersCtrl",data:{isCreate:!0,isEdit:!1}})}]);angular.module("jkuri.timepicker",[]).directive("ngTimepicker",["$document",function(n){var t=function(n,t){n.initTime=t.initTime||"11:00";n.step=t.step||"15";n.showMeridian=n.$eval(t.showMeridian)||!1;n.meridian=t.meridian||"AM";n.theme=t.theme||""};return{restrict:"EA",scope:!0,require:"?ngModel",link:function(i,r,u,f){t(i,u);i.opened=!1;var o=function(){var n=i.initTime.split(":");i.hour=n[0];i.minutes=n[1]},e=function(){var n;i.showMeridian?(n=i.hour+":"+i.minutes,i.viewValue=n+" "+i.meridian,n=s()+":"+i.minutes,f.$setViewValue(n)):(n=i.hour+":"+i.minutes,i.viewValue=n,f.$setViewValue(n))},s=function(){var n=parseInt(i.hour,10);return i.hour===12&&i.meridian==="PM"?12:i.hour===12&&i.meridian==="AM"?"00":i.meridian==="PM"?n+12:parseInt(n,10)<10?"0"+n:n},h=function(){var n=i.initTime.split(":");i.hour=n[0];i.minutes=n[1];n=i.hour+":"+i.minutes;i.viewValue=n;f.$setViewValue(n)};i.showTimepicker=function(){i.opened=!0};i.incrementHour=function(){i.showMeridian?parseInt(i.hour,10)<12?(parseInt(i.hour,10)===11&&i.toggleMeridian(),i.hour=parseInt(i.hour,10)+1):parseInt(i.hour,10)===12&&(i.hour=1):i.hour=parseInt(i.hour,10)<23?parseInt(i.hour,10)+1:0;parseInt(i.hour,10)<10&&(i.hour="0"+i.hour);e()};i.decreaseHour=function(){i.showMeridian?parseInt(i.hour,10)===1?i.hour=12:(parseInt(i.hour,10)===12&&i.toggleMeridian(),i.hour=parseInt(i.hour,10)-1):i.hour=parseInt(i.hour,10)===0?23:parseInt(i.hour,10)-1;parseInt(i.hour,10)<10&&(i.hour="0"+i.hour);e()};i.incrementMinutes=function(){i.minutes=parseInt(i.minutes,10)+parseInt(i.step,10);i.minutes>59&&(i.minutes="00",i.incrementHour());e()};i.decreaseMinutes=function(){i.minutes=parseInt(i.minutes,10)-parseInt(i.step,10);parseInt(i.minutes,10)<0&&(i.minutes=60-parseInt(i.step,10),i.decreaseHour());parseInt(i.minutes,10)===0&&(i.minutes="00");e()};i.toggleMeridian=function(){i.meridian=i.meridian==="AM"?"PM":"AM";e()};n.on("click",function(n){r===n.target||r[0].contains(n.target)||i.$apply(function(){i.opened=!1})});o();e()},template:'<input type="text" ng-focus="showTimepicker()" ng-value="viewValue" class="ng-timepicker-input" ng-readonly="true"><div class="ng-timepicker" ng-show="opened" ng-class="{\'red\': theme === \'red\', \'green\': theme === \'green\', \'blue\': theme === \'blue\'}">  <table>    <tbody>    <tr>        <td class="act noselect" ng-click="incrementHour()"><i class="fa fa-angle-up"><\/i><\/td>        <td><\/td>        <td class="act noselect" ng-click="incrementMinutes()"><i class="fa fa-angle-up"><\/i><\/td>        <td class="act noselect" ng-click="toggleMeridian()" ng-show="showMeridian"><i class="fa fa-angle-up"><\/i><\/td>      <\/tr>      <tr>        <td><input type="text" ng-model="hour" ng-readonly="false"><\/td>        <td>:<\/td>        <td><input type="text" ng-model="minutes" ng-readonly="false"><\/td>        <td ng-show="showMeridian"><input type="text" ng-model="meridian" ng-readonly="true"><\/td>      <\/tr>      <tr>        <td class="act noselect" ng-click="decreaseHour()"><i class="fa fa-angle-down"><\/i><\/td>        <td><\/td>        <td class="act noselect" ng-click="decreaseMinutes()"><i class="fa fa-angle-down"><\/i><\/td>        <td class="act noselect" ng-click="toggleMeridian()" ng-show="showMeridian"><i class="fa fa-angle-down"><\/i><\/td>      <\/tr>  <\/table><\/div>'}}]);mainApp.directive("passwordVerify",function(){return{require:"ngModel",link:function(n,t,i,r){r.$parsers.unshift(function(t){var u=n.$eval(i.passwordVerify);return u!==t?(r.$setValidity("passwordVerify",!1),undefined):(r.$setValidity("passwordVerify",!0),t)})}}});mainApp.directive("stTimepicker",["$document",function(n){var t=function(n,t){n.initTime=t.initTime||"11:00";n.step=t.step||"15";n.showMeridian=n.$eval(t.showMeridian)||!1;n.meridian=t.meridian||"AM"};return{restrict:"EA",scope:!0,require:"?ngModel",link:function(i,r,u,f){t(i,u);i.opened=!1;var o=function(){var n=i.initTime.split(":");i.hour=n[0];i.minutes=n[1]},e=function(){var n;i.showMeridian?(n=i.hour+":"+i.minutes,i.viewValue=n+" "+i.meridian,n=s()+":"+i.minutes,f.$setViewValue(n)):(n=i.hour+":"+i.minutes,i.viewValue=n,f.$setViewValue(n))},s=function(){var n=parseInt(i.hour,10);return i.hour===12&&i.meridian==="PM"?12:i.hour===12&&i.meridian==="AM"?"00":i.meridian==="PM"?n+12:parseInt(n,10)<10?"0"+n:n},h=function(){var n=i.initTime.split(":");i.hour=n[0];i.minutes=n[1];n=i.hour+":"+i.minutes;i.viewValue=n;f.$setViewValue(n)};i.showTimepicker=function(){i.opened=!0};i.incrementHour=function(){i.showMeridian?parseInt(i.hour,10)<12?(parseInt(i.hour,10)===11&&i.toggleMeridian(),i.hour=parseInt(i.hour,10)+1):parseInt(i.hour,10)===12&&(i.hour=1):i.hour=parseInt(i.hour,10)<23?parseInt(i.hour,10)+1:0;parseInt(i.hour,10)<10&&(i.hour="0"+i.hour);e()};i.decreaseHour=function(){i.showMeridian?parseInt(i.hour,10)===1?i.hour=12:(parseInt(i.hour,10)===12&&i.toggleMeridian(),i.hour=parseInt(i.hour,10)-1):i.hour=parseInt(i.hour,10)===0?23:parseInt(i.hour,10)-1;parseInt(i.hour,10)<10&&(i.hour="0"+i.hour);e()};i.incrementMinutes=function(){i.minutes=parseInt(i.minutes,10)+parseInt(i.step,10);i.minutes>59&&(i.minutes="00",i.incrementHour());e()};i.decreaseMinutes=function(){i.minutes=parseInt(i.minutes,10)-parseInt(i.step,10);parseInt(i.minutes,10)<0&&(i.minutes=60-parseInt(i.step,10),i.decreaseHour());parseInt(i.minutes,10)===0&&(i.minutes="00");e()};i.setTime=function(){e()};n.on("click",function(n){r===n.target||r[0].contains(n.target)||i.$apply(function(){i.opened=!1})});o();e()},template:'<div class="st-timepicker">          <select ng-model="hour" ng-change="setTime()">               <option value="00">00<\/option>               <option value="01">01<\/option>               <option value="02">02<\/option>               <option value="03">03<\/option>               <option value="04">04<\/option>               <option value="05">05<\/option>               <option value="06">06<\/option>               <option value="07">07<\/option>               <option value="08">08<\/option>               <option value="09">09<\/option>               <option value="10">10<\/option>               <option value="11">11<\/option>               <option value="12">12<\/option>               <option value="13">13<\/option>               <option value="14">14<\/option>               <option value="15">15<\/option>               <option value="16">16<\/option>               <option value="17">17<\/option>               <option value="18">18<\/option>               <option value="19">19<\/option>               <option value="20">20<\/option>               <option value="21">21<\/option>               <option value="22">22<\/option>               <option value="23">23<\/option>          <\/select>          <span>:<\/span>          <select ng-model="minutes" ng-change="setTime()">               <option value="00">00<\/option>               <option value="01">01<\/option>               <option value="02">02<\/option>               <option value="03">03<\/option>               <option value="04">04<\/option>               <option value="05">05<\/option>               <option value="06">06<\/option>               <option value="07">07<\/option>               <option value="08">08<\/option>               <option value="09">09<\/option>               <option value="10">10<\/option>               <option value="11">11<\/option>               <option value="12">12<\/option>               <option value="13">13<\/option>               <option value="14">14<\/option>               <option value="15">15<\/option>               <option value="16">16<\/option>               <option value="17">17<\/option>               <option value="18">18<\/option>               <option value="19">19<\/option>               <option value="20">20<\/option>               <option value="21">21<\/option>               <option value="22">22<\/option>               <option value="23">23<\/option>               <option value="24">24<\/option>               <option value="25">25<\/option>               <option value="26">26<\/option>               <option value="27">27<\/option>               <option value="28">28<\/option>               <option value="29">29<\/option>               <option value="30">30<\/option>               <option value="31">31<\/option>               <option value="32">32<\/option>               <option value="33">33<\/option>               <option value="34">34<\/option>               <option value="35">35<\/option>               <option value="36">36<\/option>               <option value="37">37<\/option>               <option value="38">38<\/option>               <option value="39">39<\/option>               <option value="40">40<\/option>               <option value="41">41<\/option>               <option value="42">42<\/option>               <option value="43">43<\/option>               <option value="44">44<\/option>               <option value="45">45<\/option>               <option value="46">46<\/option>               <option value="47">47<\/option>               <option value="48">48<\/option>               <option value="49">49<\/option>               <option value="50">50<\/option>               <option value="51">51<\/option>               <option value="52">52<\/option>               <option value="53">53<\/option>               <option value="54">54<\/option>               <option value="55">55<\/option>               <option value="56">56<\/option>               <option value="57">57<\/option>               <option value="58">58<\/option>               <option value="59">59<\/option>          <\/select><\/div>'}}]);mainApp.factory("appInfo",function(){function t(t){t?(t.hasOwnProperty("busy")&&(n.status.busy=t.busy),t.hasOwnProperty("message")&&(n.status.message=t.message)):(n.status.busy=!1,n.status.message="")}var n={status:{busy:!1,message:""},setInfo:t};return n});mainApp.factory("authService",["$http","$q","$localForage","ngAuthSettings",function(n,t,i,r){var o=r.apiServiceBaseUri,f={},u={isAuth:!1,userName:"",useRefreshTokens:!1},s=function(t){return e(),n.post(o+"api/account/register",t).then(function(n){return n})},h=function(f){var h="grant_type=password&username="+f.userName+"&password="+f.password,s;return f.useRefreshTokens&&(h=h+"&client_id="+r.clientId),s=t.defer(),n.post(o+"token",h,{headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(n){f.useRefreshTokens?i.setItem("authorizationData",{token:n.access_token,userName:f.userName,refreshToken:n.refresh_token,useRefreshTokens:!0}):i.setItem("authorizationData",{token:n.access_token,userName:f.userName,refreshToken:"",useRefreshTokens:!1});u.isAuth=!0;u.userName=f.userName;u.useRefreshTokens=f.useRefreshTokens;s.resolve(n)}).error(function(n){e();s.reject(n)}),s.promise},e=function(){i.removeItem("authorizationData");u.isAuth=!1;u.userName="";u.useRefreshTokens=!1},c=function(){var n=i.getItem("authorizationData").then(function(n){n&&(u.isAuth=!0,u.userName=n.userName,u.useRefreshTokens=n.useRefreshTokens)})},l=function(){var u=t.defer();return i.getItem("authorizationData").then(function(t){if(t){if(t.useRefreshTokens){var f="grant_type=refresh_token&refresh_token="+t.refreshToken+"&client_id="+r.clientId;n=n||$injector.get("$http");n.post(o+"token",f,{headers:{"Content-Type":"application/x-www-form-urlencoded"}}).success(function(n){i.setItem("authorizationData",{token:n.access_token,userName:n.userName,refreshToken:n.refresh_token,useRefreshTokens:!0}).then(function(){u.resolve(n)})}).error(function(n){e();u.reject(n)})}}else u.reject()}),u.promise},a=function(r){var f=t.defer();return n.get(o+"api/account/ObtainLocalAccessToken",{params:{provider:r.provider,externalAccessToken:r.externalAccessToken}}).success(function(n){i.setItem("authorizationData",{token:n.access_token,userName:n.userName,refreshToken:"",useRefreshTokens:!1});u.isAuth=!0;u.userName=n.userName;u.useRefreshTokens=!1;f.resolve(n)}).error(function(n){e();f.reject(n)}),f.promise},v=function(r){var f=t.defer();return n.post(o+"api/account/registerexternal",r).success(function(n){i.setItem("authorizationData",{token:n.access_token,userName:n.userName,refreshToken:"",useRefreshTokens:!1});u.isAuth=!0;u.userName=n.userName;u.useRefreshTokens=!1;f.resolve(n)}).error(function(n){e();f.reject(n)}),f.promise};return f.saveRegistration=s,f.login=h,f.logOut=e,f.fillAuthData=c,f.authentication=u,f.refreshToken=l,f.obtainAccessToken=a,f.externalAuthData={provider:"",userName:"",externalAccessToken:""},f.registerExternal=v,f}]);mainApp.factory("httpManager",["$q","$http","$resource","$log",function(n,t,i){var r=function(i,r,u){var e=r||angular.noop,f=n.defer();return i.timeout||(i.timeout=2e4),t(i).success(function(n){var t={};return t=u!=null&&u!=undefined?{Response:n,ExtraData:u}:n,f.resolve(t),e(t)}).error(function(n){return f.reject(n),e(n)}.bind(this)),f.promise};return{resource:function(n,t,r,u){return i(n,t,r,u)},post:function(n,t,i,u){var f={method:"POST",url:n,data:t};return r(f,i,u)},put:function(n,t,i,u){var f={method:"PUT",url:n,data:t};return r(f,i,u)},get:function(n,t,i,u){var f={method:"GET",url:n,data:t};return r(f,i,u)},"delete":function(n,t,i,u){var f={method:"DELETE",url:n,data:t};return r(f,i,u)}}}]);mainApp.filter("highlight",["$sce",function(n){return function(t,i){return i&&(t=t.replace(new RegExp("("+i+")","gi"),'<span class="highlighted">$1<\/span>')),n.trustAsHtml(t)}}]);mainApp.factory("authInterceptorService",["$rootScope","$q","$location","$localForage","$injector",function(n,t,i,r,u){var f,e=function(n){var i=t.defer();return n.headers=n.headers||{},r.getItem("authorizationData").then(function(t){t&&(n.headers.Authorization="Bearer "+t.token);i.resolve(n)},function(){i.resolve(n)}).catch(function(){i.resolve(n)}),i.promise},o=function(n){var r=t.defer(),f;return n.status===401?(f=u.get("authService"),f.refreshToken().then(function(){s(n.config,r)},function(){f.logOut();i.path("/login");r.reject(n)})):r.reject(n),r.promise},s=function(n,t){f=f||u.get("$http");f(n).then(function(n){t.resolve(n)},function(n){t.reject(n)})};return{request:e,responseError:o}}]);mainApp.controller("AdminCtrl",["$rootScope","$scope","$state","authService",function(n,t,i,r){function u(){}t.$state=i;i.current.name=="root.adminRedirct"&&i.go("root.admin.list",{},{location:"replace"});t.logOut=function(){r.logOut();i.go("root.login")};u()}]);mainApp.controller("CreateEditStoreCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","Constants","$window","$timeout","Upload",function(n,t,i,r,u,f,e,o,s){function y(){if(t.isNew=i.current.data.isCreate,t.isNew===!1)u.post("/api/store/GetStore",{StoreId:r.id}).then(function(n){n.ErrorResponse||(n.Payload?(t.store=n.Payload,a()):t.store={},t.isLoading=!1)}).catch(function(n){t.isLoading=!1;console.error(n)});else{t.store.OpeningHours=[];for(var n=1;n<8;n++)t.store.OpeningHours.push({DayOfWeek:n});a()}}function a(){var n=document.createElement("script");n.type="text/javascript";n.src="http://maps.googleapis.com/maps/api/js?language=en-GB&region=GB&key="+f.MvcValues.GMapsApiKey+"&callback=initialiseMap";document.body.appendChild(n)}function l(n){c===null?(c=new google.maps.Marker({map:h,position:n,raiseOnDrag:!0,draggable:!0,visible:!0,clickable:!1}),google.maps.event.addListener(c,"dragend",function(){try{var n=c.getPosition();h.panTo(n);v(n)}catch(t){}})):c.setPosition(n);v(n)}function p(){google.maps.event.addListener(h,"dblclick",function(n){try{l(n.latLng)}catch(t){console.error(t)}})}function v(i){n.safeApply(function(){t.store.Latitude=i.lat();t.store.Longitude=i.lng()})}function w(n,t,i){n.geocode({address:t},function(n,t){t===google.maps.GeocoderStatus.OK?(i.setCenter(n[0].geometry.location),i.setZoom(17),l(n[0].geometry.location)):alert("Geocode was not successful for the following reason: "+t)})}function b(n){u.post("/api/store/CreateStore",{Store:n}).then(function(n){if(n.ErrorResponse){console.error(n.ErrorResponse);alert("An error occured creating the store.");return}alert("Store created successfully");i.go("root.admin.list")}).catch(function(n){alert("An error occured creating the store.");console.error(n)})}function k(n){u.post("/api/store/UpdateStore",{Store:n}).then(function(n){if(n.ErrorResponse){console.error(n.ErrorResponse);alert("An error occured updating the store.");return}alert("Store updated successfully")}).catch(function(n){alert("An error occured updating the store.");console.error(n)})}var h,c=null;t.isLoading=!0;t.store={};t.WeekDays=f.WeekDays;t.GMapsApiKey=f.MvcValues.GMapsApiKey;t.CDNBaseUrl=f.MvcValues.CDNBaseUrl;t.upload=function(n){var i=n.name.substr((~-n.name.lastIndexOf(".")>>>0)+2);s.upload({url:"/api/photo",data:{file:s.rename(n,t.store.Id+"."+i)}}).then(function(n){console.log("Success "+n.config.data.file.ngfName+" uploaded. Response: "+n.data);t.store.ImageName=n.config.data.file.ngfName;t.imageStatus="Image uploaded succesfully";u.post("/api/store/SetImageName",{Id:t.store.Id,ImageName:t.store.ImageName}).then(function(n){n.ErrorResponse}).catch(function(n){console.error(n)})},function(n){console.log("Error status: "+n.status)},function(n){var i=parseInt(100*n.loaded/n.total);console.log("progress: "+i+"% "+n.config.data.file.name);t.imageStatus="Uploading image: "+i+"%"})};t.lookupAddress=function(){var n="",i;t.store.Address1&&(n+=t.store.Address1+", ");t.store.Address2&&(n+=t.store.Address2+", ");t.store.Address3&&(n+=t.store.Address3+", ");t.store.Address4&&(n+=t.store.Address4+", ");t.store.Address5&&(n+=t.store.Address5+", ");t.store.PostCode!=t.store.Address1&&t.store.PostCode!=t.store.Address2&&t.store.PostCode!=t.store.Address3&&t.store.PostCode!=t.store.Address4&&t.store.PostCode!=t.store.Address5&&(n+=t.store.PostCode+", ");n.length>0&&(n=n.slice(0,-2));i=new google.maps.Geocoder;w(i,n,h)};t.toggleCalendar=function(n){console.log(n);$("#"+n).toggleClass("show")};t.onTimeSet=function(){$(".date-picker").removeClass("show")};t.save=function(n){n.$valid&&(t.isNew?b(t.store):k(t.store))};t.hideStore=function(){t.store.Hidden==!0&&(t.store.Hidden=confirm("Are you sure you want to hide this store?")?!0:!1)};t.deleteImage=function(){confirm("Are you sure you want to remove this image?")&&(t.store.ImageName="")};e.initialiseMap=function(){var n=null,r,i;t.isNew===!1&&(n=new google.maps.LatLng(t.store.Latitude,t.store.Longitude));r=17;i={zoom:r,disableDoubleClickZoom:!0,disableDefaultUI:!1};n!=null?(i.center=n,i.zoom=17):(i.center=new google.maps.LatLng(52.335339071889415,-1.307373046875),i.zoom=6);h=new google.maps.Map(document.getElementById("mapcontainer"),i);p();n!=null&&(h.setCenter(n),l(n))};y();t.$on("$destroy",function(){h=null})}]);mainApp.controller("EditCreateUsersCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","authService",function(n,t,i,r,u){function f(){t.isNew=i.current.data.isCreate;t.isNew===!1&&u.post("/api/user/GetUser",{Id:r.id}).then(function(n){n.ErrorResponse||(t.user=n.Payload?n.Payload:[])}).catch(function(n){console.error(n)})}function e(n){u.post("/api/account/register",n).then(function(n){n.ErrorResponse||(alert("User created successfully"),i.go("root.admin.userList"))}).catch(function(n){console.error(n)})}function o(n){u.post("/api/user/UpdateUser",n).then(function(n){n.ErrorResponse||alert("User updated successfully")}).catch(function(n){console.error(n)})}t.user={};t.submitted=!1;t.save=function(n){t.submitted=!0;n.$valid&&(t.isNew?e(t.user):o(t.user))};f()}]);mainApp.controller("GlobalDescriptionsCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","authService",function(n,t,i,r,u){function f(){u.get("/api/store/GetGlobalDescriptions").then(function(n){n.ErrorResponse||(t.descriptions=n.Payload?n.Payload:[])}).catch(function(n){console.error(n)})}function e(n){u.post("/api/store/UpdateGlobalDescriptions",n).then(function(n){n.ErrorResponse||alert("Descriptions updated successfully")}).catch(function(n){console.error(n)})}t.descriptions={};t.submitted=!1;t.save=function(n){t.submitted=!0;n.$valid&&e(t.descriptions)};f()}]);mainApp.controller("HomeCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","$q","Constants","$localForage","$window","$sce",function(n,t,i,r,u,f,e,o,s,h){function ot(n,i){if(w(),console.log(i),a!=null){var r=t.stores[i];ut=a.getPosition();ft=new google.maps.LatLng(r.Latitude,r.Longitude);et.lat=r.Latitude;et.lng=r.Longitude;t.mapUrl=r.MapURL;console.log(t.mapUrl);nt=new google.maps.DirectionsService;v=new google.maps.DirectionsRenderer(yt);v.setMap(c);t.showDirections=!0;vt(nt,v,ut,ft,n);$("body").scrollTo($("#map"))}else console.error("No start point for directions definied")}function w(){t.showDirections=!1;v!=null&&v.setMap(null);v=null;$("#directions").html("")}function bt(){i.current.data.isStorePage==!0&&(t.isStorePage=!0,rt=r.storeName);i.current.data.isLocationPage==!0&&(t.isLocationPage=!0,p.lat=r.latitude,p.lng=r.longitude);t.GMapsApiKey=e.MvcValues.GMapsApiKey;t.CDNBaseUrl=e.MvcValues.CDNBaseUrl;t.fov=90;t.pitch=0;kt()}function kt(){var n=document.createElement("script");n.type="text/javascript";n.src="//maps.googleapis.com/maps/api/js?language=en-GB&region=GB&libraries=geometry,places&key="+e.MvcValues.GMapsApiKey+"&callback=initialiseMap";document.body.appendChild(n)}function dt(){}function st(){navigator.geolocation?navigator.geolocation.getCurrentPosition(function(n){var t=new google.maps.LatLng(n.coords.latitude,n.coords.longitude);c.setCenter(t);k(t);b(t,!0)},function(){ht(!0)}):ht(!1)}function ht(){}function gt(){d=new google.maps.places.Autocomplete(g,{});d.addListener("place_changed",ni)}function ni(){var n=d.getPlace();ct(n)}function ct(n){n.geometry?(w(),c.panTo(n.geometry.location),c.setZoom(15),k(n.geometry.location),b(n.geometry.location)):g.placeholder="Enter a city"}function lt(){for(var n=0;n<l.length;n++)l[n]&&l[n].setMap(null);l=[]}function ti(n){return function(){l[n].setMap(c)}}function b(i,r){var f={Latitude:i.lat(),Longitude:i.lng()},e="/api/store/FindStores";console.log(t.isStorePage);t.isStorePage==!0&&(f.storeName=rt,e="/api/store/FindStoresByName");u.post(e,f).then(function(i){i.ErrorResponse||(n.isLocalStorageNameSupported&&localStorage.setItem("ppRefreshToken",JSON.stringify(i.Payload.RefreshToken)),t.isNearest=r,i.Payload?(t.stores=i.Payload,t.isStorePage==!0&&t.stores.length>0&&t.stores[0].StoreName==rt&&k(new google.maps.LatLng(t.stores[0].Latitude,t.stores[0].Longitude)),y=0,lt(),t.stores.length>0&&ii(i.Payload)):(t.stores=[],y=0,lt()))}).catch(function(){})}function ii(n){var r=new google.maps.LatLngBounds,i,u,f,e;for(a&&r.extend(a.getPosition()),tt={url:pt,scaledSize:new google.maps.Size(40,66)},it={url:wt,scaledSize:new google.maps.Size(40,66)},i=0;i<n.length;i++)u=new google.maps.LatLng(n[i].Latitude,n[i].Longitude),r.extend(u),f=(i+1).toString(),e=y==i?it:tt,l[i]=new MarkerWithLabel({icon:e,position:u,labelContent:f,labelClass:"map-pin",labelAnchor:new google.maps.Point(10,60),zIndex:999+i}),google.maps.event.addListener(l[i],"click",function(n,t){return function(){at("result-"+t,t)}}(l[i],i)),setTimeout(ti(i),i*100);t.isStorePage==!0?(c.setCenter(new google.maps.LatLng(n[0].Latitude,n[0].Longitude)),c.setZoom(17)):c.fitBounds(r);t.isStorePage=!1}function at(n,r){var u=t.stores[r];w();i.go("root.store",{storeName:u.StoreName},{notify:!1});y>-1&&l[y].setIcon(tt);angular.element("#"+n).hasClass("open")?angular.element("#"+n).removeClass("open"):(angular.element(".map-result").not("#"+n).removeClass("open"),angular.element("#"+n).addClass("open"),l[r].setIcon(it),c.setCenter(l[r].getPosition()),setTimeout(function(){ri(n)},205));y=r}function k(n){a===null?(a=new google.maps.Marker({map:c,position:n,raiseOnDrag:!1,draggable:!1,visible:!0,clickable:!1}),google.maps.event.addListener(a,"dragend",function(){try{var n=a.getPosition();b(n,!1);c.panTo(n)}catch(t){}})):a.setPosition(n)}function vt(n,t,i,r,u){t.setPanel(document.getElementById("directions"));n.route({origin:i,destination:r,travelMode:u},function(n,i){i===google.maps.DirectionsStatus.OK?t.setDirections(n):window.alert("Directions request failed due to "+i)})}function ri(n){$("body").scrollTo($("#"+n));$(".map-results--inner").scrollTo($("#"+n))}function ui(){var n=new google.maps.places.AutocompleteService;n.getPlacePredictions({input:t.searchLocation},function(n,i){if(i!=google.maps.places.PlacesServiceStatus.OK){alert(i);return}if(n.length>0){var r=n[0],u=new google.maps.places.PlacesService(c);u.getDetails({placeId:r.place_id},function(n,i){i===google.maps.places.PlacesServiceStatus.OK&&(t.searchLocation=r.description,ct(n))})}})}var c=null,l=[],d,g=document.getElementById("search-box"),a=null,nt=null,v=null,yt={suppressMarkers:!0},pt="/img/inactive.png",wt="/img/pin.png",tt,it,rt="",p={lat:"",lng:""},ut,ft,et={lat:0,lng:0},y=-1;t.isStorePage=!1;t.isLocationPage=!1;t.showDirections=!1;t.travelMode="DRIVING";t.latlongs=et;t.mapUrl="";t.hideDirections=function(){w()};t.travelModeChanged=function(n){n&&(t.travelMode=n);t.showDirections?vt(nt,v,ut,ft,t.travelMode):ot(t.travelMode,y)};t.selectStore=function(n,t){at(n.currentTarget.id,t)};t.trustHtml=function(n){return h.trustAsHtml(n)};t.getDirections=function(n,i){n.stopPropagation();t.travelMode="DRIVING";ot(t.travelMode,i)};t.geoLocate=function(){st()};t.searchClick=function(){ui()};s.initialiseMap=function(){var n,r,u,i;n=t.isLocationPage==!0?new google.maps.LatLng(p.lat,p.lng):new google.maps.LatLng(51.5001754,-.13323260000004211);r=17;u={zoom:r,center:n,disableDoubleClickZoom:!0,disableDefaultUI:!1,mapTypeControl:!1,mapTypeControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT}};c=new google.maps.Map(document.getElementById("map"),u);c.set("lastZoom",c.getZoom());dt();gt();i=document.createElement("script");i.type="text/javascript";i.src="Scripts/MarkerWithLabel.js";document.body.appendChild(i);c.setCenter(n);k(n);b(n,!1);t.isStorePage==!1&&t.isLocationPage==!1&&st()},function(n){function t(t,r){if(t=="keydown"){var u=r;r=function(t){var r=$(".pac-item-selected").length>0,i;t.which!=13||r||(i=$.Event("keydown",{keyCode:40,which:40}),u.apply(n,[i]));u.apply(n,[t])}}i.apply(n,[t,r])}var i=n.addEventListener?n.addEventListener:n.attachEvent;n.addEventListener?n.addEventListener=t:n.attachEvent&&(n.attachEvent=t)}(g);bt()}]);mainApp.controller("ListStoresCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","authService",function(n,t,i,r,u){function f(){u.get("/api/store/GetStores").then(function(n){n.ErrorResponse||(n.Payload?(t.stores=n.Payload,t.pager.total=t.stores.length):(t.stores=[],t.pager.total=0))}).catch(function(n){t.stores=[];t.pager.total=0;console.error(n)})}t.stores=[];t.pager={page:1,limit:20};t.pageChanged=function(){};f()}]);mainApp.controller("ListUsersCtrl",["$rootScope","$scope","$state","$stateParams","httpManager","authService",function(n,t,i,r,u){function f(){u.get("/api/user/GetUsers").then(function(n){n.ErrorResponse||(t.users=n.Payload?n.Payload:[])}).catch(function(n){console.error(n)})}t.stores=[];f()}]);mainApp.controller("LoginCtrl",["$scope","$state","authService",function(n,t,i){n.loginData={userName:"",password:""};n.message="";n.login=function(){n.loginData.useRefreshTokens=!0;i.login(n.loginData).then(function(){t.go("root.admin.list")},function(t){n.message=t.error_description})}}]);mainApp.controller("RefreshCtrl",["$scope","$state","authService",function(n,t,i){n.authentication=i.authentication;n.tokenRefreshed=!1;n.tokenResponse=null;n.refreshToken=function(){i.refreshToken().then(function(t){n.tokenRefreshed=!0;n.tokenResponse=t},function(){t.go("root.login")})};n.refreshToken()}]);mainApp.controller("SignupCtrl",["$scope","$state","$timeout","authService",function(n,t,i,r){n.savedSuccessfully=!1;n.message="";n.registration={userName:"",password:"",confirmPassword:""};n.signUp=function(){r.saveRegistration(n.registration).then(function(){n.savedSuccessfully=!0;n.message="User has been registered successfully, you will be redicted to login page in 2 seconds.";u()},function(t){var u=[],r,i;for(r in t.data.modelState)for(i=0;i<t.data.modelState[r].length;i++)u.push(t.data.modelState[r][i]);n.message="Failed to register user due to:"+u.join(" ")})};var u=function(){var n=i(function(){i.cancel(n);t.go("root.login")},2e3)}}])