var app;(function(n){var t;(function(n){n.APP_AUTH=angular.module("authApp",["ngRoute","ngResource","ngMessages","ui.bootstrap","ui.router","toastr"]);var t=function(){function n(n,t){t.otherwise("/login");n.state("app",{abstract:!0,templateUrl:"/app/layout/layout.tpl.html"}).state("app.login",{url:"/login",controller:"loginCtrl as vm",templateUrl:"/app/components/loginView.html",data:{title:"Login",htmlId:"extr-page"}}).state("app.register",{url:"/register",controller:"registerCtrl as vm",templateUrl:"/app/components/registerView.html",data:{title:"Register",htmlId:"extr-page"}}).state("app.recover",{url:"/recover",controller:"recoverCtrl as vm",templateUrl:"/app/components/recoverView.html",data:{title:"Recover",htmlId:"extr-page"}}).state("app.confirm",{url:"/confirm",controller:"confirmCtrl as vm",templateUrl:"/app/components/confirmView.html",data:{title:"Confirm",htmlId:"extr-page"}})}return n.$inject=["$stateProvider","$urlRouterProvider"],n}();n.APP_AUTH.config(t)})(t=n.auth||(n.auth={}))})(app||(app={})),function(n){var t;(function(){var n=function(){function n(){}return n}()})(t=n.domain||(n.domain={}))}(app||(app={})),function(n){var t;(function(){var n=function(){function n(){}return n}()})(t=n.domain||(n.domain={}))}(app||(app={})),function(n){var t;(function(n){var i=function(){function n(){this.userName="";this.password="";this.passwordKey="";this.emailKey="";this.givenName="";this.middleName="";this.familyName="";this.phone="";this.email=""}return n.prototype.resetData=function(n){n&&(this.userName="");this.password="";this.passwordKey="";this.emailKey="";this.givenName="";this.middleName="";this.familyName="";this.phone="";this.email=""},n}(),t;n.UserData=i;t=function(){function n(){}return n}();n.OperationResult=t})(t=n.domain||(n.domain={}))}(app||(app={})),function(n){var t;(function(t){function r(n){return{profile:n("api/user/profile"),resetByPhone:n("/api/account/reset/phone/:phone",{phone:"@phone"},{password:{method:"POST"}}),resetByEmail:n("/api/account/reset/email/:email",{email:"@email"},{password:{method:"GET"}}),verification:n("/api/account/verify/:user/:code",{user:"@user",code:"@code"},{recognize:{method:"GET"},verifyActivation:{method:"POST"},sendCode:{method:"POST"},verifyPhone:{method:"GET"},verifyCode:{method:"GET"}})}}var i=function(){function t(t,i){this.$resource=t;this.$q=i;this.userData=new n.domain.UserData}return t.prototype.getUserData=function(n){return this.userData.resetData(n),this.userData},t.prototype.findByName=function(n){var t=this.$q.defer();return this.$resource("/api/account/find").save({name:n},function(n){t.resolve(n)}),t.promise},t.prototype.findByEmail=function(n){var t=this.$q.defer();return this.$resource("/api/account/find/email/:email").get({email:n},function(n){t.resolve(n.success)}),t.promise},t.prototype.findByPhone=function(n){var t=this.$q.defer();return this.$resource("/api/account/find/phone/:phone").get({phone:n},function(n){t.resolve(n.success)}),t.promise},t.prototype.findByResetKey=function(n,t){var i=this.$q.defer();return this.$resource("/api/account/find").save({name:n,resetKey:t},function(n){i.resolve(n.success)}),i.promise},t.prototype.registerUser=function(n){var t=this.$q.defer();return this.$resource("/api/account/register").save(n,function(n){t.resolve(n.found)}),t.promise},t.prototype.recoverPassword=function(n){var t=this.$q.defer();return this.$resource("/api/account/recover").save(n,function(n){t.resolve(n.success)}),t.promise},t.prototype.resetPassword=function(n){var t=this.$q.defer();return this.$resource("/api/account/reset").save(n,function(n){n.success?t.resolve(!0):t.reject(n.message)},function(){t.reject()}),t.promise},t.prototype.confirmEmail=function(n){var t=this.$q.defer();return this.$resource("/api/account/confirm").save(n,function(n){n.success?t.resolve(!0):t.reject(n.message)},function(){t.reject()}),t.promise},t.NAME="userAccountService",t.$inject=["$resource","$q"],t}();t.UserAccountService=i;r.$inject=["$resource","utilService"];t.APP_AUTH.service(i.NAME,i)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){var t=function(){function n(n){this.$window=n;this.errorMessage=null}return n.prototype.getErrorMessage=function(){return this.errorMessage==null&&(this.errorMessage=$("body").data("error-message")),this.errorMessage},n.prototype.resetErrorMessage=function(){this.errorMessage=""},n.prototype.getQueryParam=function(n){var t=this.$window.location.search,i,r,u;for(t=t.split("+").join(" "),i={},u=/[?&]?([^=]+)=([^&]*)/g;r=u.exec(t);)i[decodeURIComponent(r[1])]=decodeURIComponent(r[2]);return i[n]},n.prototype.getAntiForgeryToken=function(){return $("body").data("antiforgery")},n.prototype.getExternalProviders=function(){return $("body").data("external-providers")},n.NAME="utilService",n.$inject=["$window"],n}();n.UtilService=t;n.APP_AUTH.service(t.NAME,t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){var t=function(){function t(n,t,i,r,u,f){this.$scope=n;this.$state=t;this.$resource=i;this.toastr=r;this.userAccountService=u;this.utilService=f;n.errorMessage=this.utilService.getErrorMessage();n.externalProviders=this.utilService.getExternalProviders();n.antiForgeryToken=this.utilService.getAntiForgeryToken();n.isLoggingIn=!1;n.userData=u.getUserData(!1);n.invalidPassword=!1;n.errorMessage==="Invalid username or password"&&(n.errorMessage="Ви ввели неправильний пароль!",n.invalidPassword=!0);n.errorMessage&&r.error(n.errorMessage);n.initForm=function(){$("#login-form").find(".styled").uniform()};n.loginAction=function(){return"/identity/login?signin="+f.getQueryParam("signin")};n.passwordFieldType="password";n.showPassword=function(){n.passwordFieldType="text"};n.hidePassword=function(){n.passwordFieldType="password"};n.getExternalProviderClass=function(n){return n.Text==="Facebook"?"indigo":n.Text==="Google"?"danger":n.Text==="Vkontakte"?"blue-800":n.Text==="Twitter"?"info":""};n.getExternalProviderIcon=function(n){return n.Text==="Facebook"?"facebook":n.Text==="Google"?"google":n.Text==="Vkontakte"?"vk":n.Text==="Twitter"?"twitter":""};n.login=function(){n.isLoggingIn=!0;$("#login-form").submit()}}return t.$inject=["$scope","$state","$resource","toastr",n.UserAccountService.NAME,n.UtilService.NAME],t}();angular.module("authApp").controller("loginCtrl",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){var t=function(){function t(n,t,i,r,u){var f=this;this.$scope=n;this.$state=t;this.$resource=i;this.userAccountService=r;this.utilService=u;this.utilService.resetErrorMessage();n.rulesAgreed=!1;n.userData=r.getUserData(!0);n.register=function(){f.userAccountService.registerUser(n.userData).then(function(){f.$state.go("app.confirm")})};n.passwordFieldType="password";n.showPassword=function(){n.passwordFieldType="text"};n.hidePassword=function(){n.passwordFieldType="password"};n.toggleRulesAgreed=function(){n.rulesAgreed=!n.rulesAgreed}}return t.$inject=["$scope","$state","$resource",n.UserAccountService.NAME,n.UtilService.NAME],t}();angular.module("authApp").controller("registerCtrl",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){var t=function(){function t(n,t,i,r){var u=this;this.$scope=n;this.$state=t;this.userAccountService=i;this.utilService=r;this.utilService.resetErrorMessage();n.userData=i.getUserData(!0);n.isRecovering=!1;n.isResetting=!1;n.instructionsSent=!1;n.passwordFieldType="password";n.showPassword=function(){n.passwordFieldType="text"};n.hidePassword=function(){n.passwordFieldType="password"};n.recover=function(){n.isRecovering=!0;u.userAccountService.recoverPassword(n.userData).then(function(){n.isRecovering=!1;n.instructionsSent=!0})};n.reset=function(){n.isResetting=!0;u.userAccountService.resetPassword(n.userData).then(function(){u.$state.go("app.login")},function(n){alert(n)}).finally(function(){n.isResetting=!1})}}return t.$inject=["$scope","$state",n.UserAccountService.NAME,n.UtilService.NAME],t}();angular.module("authApp").controller("recoverCtrl",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){var t=function(){function t(n,t,i,r,u,f){var e=this;this.$scope=n;this.$state=t;this.$resource=i;this.toastr=r;this.userAccountService=u;this.utilService=f;this.utilService.resetErrorMessage();n.errorMessage=this.utilService.getErrorMessage();n.isCodeSending=!1;n.isCodeSent=!1;n.userData=u.getUserData(!1);n.sendCode=function(){n.isCodeSending=!0;n.userData.emailKey="";e.userAccountService.confirmEmail(n.userData).then(function(){n.isCodeSent=!0;e.toastr.success("Код підтвердження відправлено на Вашу поштову скриньку.")},function(n){e.toastr.error(n)}).finally(function(){n.isCodeSending=!1})};n.confirmEmail=function(){n.isConfirming=!0;e.userAccountService.confirmEmail(n.userData).then(function(){e.$state.go("app.login");e.toastr.success("Тепер Ви можете виконати вхід в систему.","E-mail адресу підтверджено")},function(n){e.toastr.error(n)}).finally(function(){n.isConfirming=!1})}}return t.$inject=["$scope","$state","$resource","toastr",n.UserAccountService.NAME,n.UtilService.NAME],t}();angular.module("authApp").controller("confirmCtrl",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(){"use strict";function f(){return{restrict:"A",require:"ngModel",link:function(n,t,i,r){r.$validators.operatorCode=function(n){var t,i;return n?(t=/^\((\d{3})\) /g.exec(n),t==null)?!0:(i=["093","063","073","039","067","068","096","097","098","050","066","095","099"],i.indexOf(t[1])!==-1):!0}}}}function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){var e=i.$parent.vm;f.$asyncValidators.recognizePhone=function(i){var r=n.defer();return t.verification.recognize({user:i},function(n){e.userData.phoneReconized=n.recognized;r.resolve()}),r.promise}}}}function i(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){var e=i.$parent.vm;f.$validators.required=function(n){return e.userData.phoneReconized?!0:!!n};f.$asyncValidators.verifyActivationCode=function(i){var r=n.defer();return e.userData.phoneReconized?r.resolve():t.verification.verifyActivation({user:e.userData.phone,code:i},function(n){n.code?(e.userData.phoneActivationAccount=n.code+" "+n.appartment,r.resolve()):r.reject()}),r.promise};i.$parent.$watch("vm.userData.phoneReconized",function(){f.$validate()})}}}function r(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.duplicatedPhone=function(i){var r=n.defer();return t.find.phone({phone:i},function(n){n.found?r.reject():r.resolve()}),r.promise}}}}function u(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){var e=i.$parent.vm;f.$asyncValidators.verifyCode=function(i){var r=n.defer();return t.verification.verifyCode({user:e.userData.phone,code:i},function(n){n.code?r.resolve():r.reject()}),r.promise}}}}function e(){return{restrict:"A",require:"ngModel",scope:{passwordValue:"=passwordMatchValidator"},link:function(n,t,i,r){r.$validators.passwordMatch=function(t){return t===n.passwordValue};n.$watch("passwordValue",function(){r.$validate()})}}}function o(){return{restrict:"A",require:"ngModel",scope:{otherValue:"=requiredSingleValidator"},link:function(n,t,i,r){r.$validators.requiredSingle=function(t){return!!t&&!n.otherValue||!t&&!!n.otherValue};n.$watch("otherValue",function(){r.$validate()})}}}var n=angular.module("authApp");n.directive("operatorCodeValidator",f);r.$inject=["$q","userAccountService"];n.directive("duplicatePhoneValidator",r);t.$inject=["$q","userAccountService"];n.directive("phoneRecognitionValidator",t);i.$inject=["$q","userAccountService"];n.directive("activationCodeValidator",i);u.$inject=["$q","userAccountService"];n.directive("verificationCodeValidator",u);n.directive("passwordMatchValidator",e);n.directive("requiredSingleValidator",o)}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.duplicatedEmail=function(i){var r=n.defer();return t.findByEmail(i).then(function(n){n?r.reject():r.resolve()}),r.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("duplicateEmailValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.duplicatedUserName=function(i){var r=n.defer();return t.findByName(i).then(function(n){n&&n.success?r.reject():r.resolve()}),r.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("duplicateUserNameValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.uncofirmedEmail=function(i){var r=n.defer();return t.findByName(i).then(function(n){n&&n.verified?r.resolve():r.reject()},function(){r.reject()}),r.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("emailConfirmedValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.invalidUserName=function(i){var r=n.defer();return t.findByName(i).then(function(n){n&&n.success?r.resolve():r.reject()},function(){r.reject()}),r.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("userNameValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",scope:!0,require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.invalidEmail=function(i){var r=n.defer();return t.findByEmail(i).then(function(n){n?r.resolve():r.reject()},function(){r.reject()}),r.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("emailValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(n){var t;(function(n){function t(n,t){return{restrict:"A",require:"ngModel",link:function(i,r,u,f){f.$asyncValidators.invalidResetKey=function(r){var u=n.defer();return t.findByResetKey(i.userData.userName,r).then(function(n){n?u.resolve():u.reject()},function(){u.reject()}),u.promise}}}}t.$inject=["$q",n.UserAccountService.NAME];n.APP_AUTH.directive("resetKeyValidator",t)})(t=n.auth||(n.auth={}))}(app||(app={})),function(){"use strict";function n(){return{restrict:"A",compile:function(n,t){n.removeAttr("smart-masked-input data-smart-masked-input");var i={placeholder:""};t.maskPlaceholder&&(i.placeholder=t.maskPlaceholder);n.mask(t.smartMaskedInput,i)}}}angular.module("authApp").directive("smartMaskedInput",n)}(app||(app={}))