pip-webui
Version:
HTML5 UI for LOB applications
2 lines • 61.5 kB
JavaScript
!function(){"use strict";var e=angular.module("pipEntry",["ui.router","ngMessages","pipCore","pipRest","pipBasicControls","pipLocations","pipPictures","pipRest.State","pipEntry.Strings","pipEntry.Common","pipEntry.Signin","pipEntry.Signup","pipEntry.PostSignup","pipEntry.RecoverPassword","pipEntry.ResetPassword","pipEntry.VerifyEmail","pipEntry.Templates"]);e.config(["$stateProvider","$locationProvider","$httpProvider","pipAuthStateProvider",function(e,t,a,r){e.state("signin",{url:"/signin?email&server_url&redirect_to",auth:!1,controller:"pipSigninController",templateUrl:"signin/signin.html"}).state("recover_password",{url:"/recover_password?server_url&email",auth:!1,controller:"pipRecoverPasswordController",templateUrl:"recover_password/recover_password.html"}).state("reset_password",{url:"/reset_password?server_url&email&code",auth:!1,controller:"pipResetPasswordController",templateUrl:"reset_password/reset_password.html"}).state("signout",{url:"/signout",auth:!1}).state("signup",{url:"/signup?name&email&server_url",auth:!1,controller:"pipSignupController",templateUrl:"signup/signup.html"}).state("post_signup",{url:"/post_signup?party_id",auth:!1,controller:"pipPostSignupController",templateUrl:"post_signup/post_signup.html",resolve:{$party:["$rootScope","$stateParams","pipRest","pipSession",function(e,t,a,r){var n=r.userId(),i=t.party_id||n;if(i!=n)throw"ERROR_NOT_ALLOWED";return a.parties().get({id:i}).$promise}]}}).state("verify_email",{url:"/verify_email?server_url&email&code",auth:!1,controller:"pipVerifyEmailController",templateUrl:"verify_email/verify_email.html"}).state("verify_email_success",{url:"/verify_email_success",auth:!1,controller:"pipVerifyEmailSuccessController",templateUrl:"verify_email/verify_email_success.html"}),r.signinState("signin"),r.signoutState("signout")}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("post_signup/post_signup.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><pip-post-signup-panel pip-data="data" pip-created="$panel = $control" pip-party="$party"></pip-post-signup-panel><div class="pip-footer"><md-button ng-hide="transaction.busy()" class="md-accent" ng-click="onPostSignupSubmit()" aria-label="CONTINUE">{{::\'CONTINUE\' | translate}}</md-button><md-button ng-show="transaction.busy()" class="md-warn" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></div></pip-card></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("post_signup/post_signup_dialog.html",'<md-dialog class="pip-entry lp0 rp0"><md-dialog-content><pip-post-signup-panel pip-data="data" pip-created="$panel = $control" pip-party="$party"></pip-post-signup-panel></md-dialog-content><md-dialog-actions class="layout-row layout-align-end-center"><md-button ng-hide="transaction.busy()" class="md-accent" ng-click="onPostSignupSubmit()" aria-label="CONTINUE">{{::\'CONTINUE\' | translate}}</md-button><md-button ng-show="transaction.busy()" class="md-warn" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></md-dialog-actions></md-dialog>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("post_signup/post_signup_panel.html",'<div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy()" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2 class="text-overflow">{{\'POST_SIGNUP_TITLE\' | translate}}</h2><p class="bm0 line-height-string">{{\'POST_SIGNUP_TEXT_1\' | translate}}</p><p class="line-height-string m0">{{\'POST_SIGNUP_TEXT_2\' | translate}}</p><form name="form" novalidate=""><div ng-messages="form.$serverError" class="text-error bm8" md-auto-hide="false"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_1002">{{::\'ERROR_1002\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><div class="pip-ref-item"><pip-avatar-edit ng-disabled="transaction.busy()" pip-reset="false" pip-party-id="data.id" pip-created="onPictureCreated($event)" pip-changed="onPictureChanged($control, $event)" class="rm16 flex-fixed"></pip-avatar-edit><div class="pip-content"><p class="pip-title">{{data.name}}</p><p class="pip-subtitle">{{data.email}}</p></div></div><md-input-container class="pip-no-hint bp4"><label>{{\'HINT_ABOUT\' | translate}}</label> <textarea ng-model="data.about" ng-initial="" ng-disabled="transaction.busy()" pip-clear-errors="">\n </textarea></md-input-container><div class="tm2"><p class="text-caption bm0">{{\'GENDER\' | translate}}</p><md-select class="w-stretch tm0 tp0 bp8" ng-disabled="transaction.busy()" ng-model="data.gender" label="{{\'GENDER\' | translate}}" ng-change="onStatusChange(data)" pip-clear-errors=""><md-option ng-value="opt.id" ng-repeat="opt in genders track by opt.id">{{ opt.name }}</md-option></md-select></div><div class="tm2"><p class="text-caption bm0">{{::\'BIRTHDAY\' | translate}}</p><pip-date ng-disabled="transaction.busy()" ng-model="data.birthday" pip-time-mode="past" pip-clear-errors="" time-mode="past"></pip-date></div><md-input-container><label>{{::\'LANGUAGE\' | translate}}</label><md-select class="w-stretch tm0 tp0 bp16" ng-disabled="transaction.busy()" ng-model="data.language" ng-change="onStatusChange(data)" pip-clear-errors=""><md-option ng-value="opt.id" ng-repeat="opt in languages track by opt.id">{{ opt.name }}</md-option></md-select></md-input-container></form></div></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("recover_password/recover_password.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><pip-recover-password-panel pip-data="data" pip-created="$panel = $control"></pip-recover-password-panel><div class="pip-footer"><md-button ng-hide="transaction.busy()" ng-click="goBack()" class="rm8" aria-label="CANCEL">{{::\'CANCEL\' | translate}}</md-button><md-button ng-hide="transaction.busy()" class="md-accent" ng-click="onRecover()" aria-label="RECOVER_PWD_RECOVER" ng-disabled="(form.$pristine && !data.email) || data.serverUrl.length == 0 || data.email.length == 0">{{::\'RECOVER_PWD_RECOVER\' | translate}}</md-button><md-button ng-show="transaction.busy()" class="md-warn" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></div></pip-card></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("recover_password/recover_password_dialog.html",'<md-dialog class="pip-entry lp0 rp0"><md-dialog-content><pip-recover-password-panel pip-data="data" pip-created="$panel = $control" pip-goto-reset="pipGotoReset"></pip-recover-password-panel></md-dialog-content><md-dialog-actions class="layout-row layout-align-end-center"><md-button ng-hide="transaction.busy()" ng-click="goBack()" class="rm8" aria-label="CANCEL">{{::\'CANCEL\' | translate}}</md-button><md-button ng-hide="transaction.busy()" class="md-accent" ng-click="onRecover()" aria-label="RECOVER_PWD_RECOVER" ng-disabled="(form.$pristine && !data.email) || data.email== undefined || || data.serverUrl.length == 0 || data.email.length == 0">{{::\'RECOVER_PWD_RECOVER\' | translate}}</md-button><md-button ng-show="transaction.busy()" class="md-warn" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></md-dialog-actions></md-dialog>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("recover_password/recover_password_panel.html",'<div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy()" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2>{{\'RECOVER_PWD_TITLE\' | translate}}</h2><p class="text-primary tm0 bm16">{{\'RECOVER_PWD_TEXT_1\' | translate}}</p><p class="text-primary tm0 bm16">{{\'RECOVER_PWD_TEXT_2\' | translate}}</p><form name="form" novalidate=""><div ng-messages="form.$serverError" class="text-error bm8" md-auto-hide="false"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><a ng-hide="showServerUrl || fixedServerUrl" ng-click="showServerUrl = true" href="">{{\'ENTRY_CHANGE_SERVER\' | translate}}</a><div ng-show="showServerUrl"><md-autocomplete ng-initial="" autofocus="" tabindex="1" class="pip-combobox w-stretch bm8" name="server" ng-enabled="!transaction.busy()" placeholder="{{::\'ENTRY_SERVER_URL\' | translate}}" md-no-cache="true" md-selected-item="data.serverUrl" md-search-text="selected.searchURLs" md-items="item in getMatches()" md-item-text="item" md-selected-item-change="onServerUrlChanged()" md-delay="200" ng-model="data.serverUrl" pip-clear-errors=""><span md-highlight-text="selected.searchURLs">{{item}}</span></md-autocomplete></div><md-input-container class="pip-no-hint" style="padding-bottom: 4px!important;"><label>{{::\'EMAIL\' | translate}}</label> <input name="email" type="email" ng-model="data.email" pip-email-unique="data.email" required="" step="any" pip-clear-errors="" ng-disabled="transaction.busy()" tabindex="2"><div class="hint" ng-if="touchedErrorsWithHint(form, form.email).hint">{{::\'HINT_EMAIL\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.email)" class="md-input-error" md-auto-hide="false"><div ng-message="required">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="email">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="emailUnique">{{::\'ERROR_1104\' | translate}}</div><div ng-message="ERROR_1100">{{::\'ERROR_1100\' | translate}}</div><div ng-message="ERROR_1106">{{::\'ERROR_1106\' | translate}}</div></div></md-input-container></form></div></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("reset_password/reset_password.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><pip-reset-password-panel pip-data="data" pip-created="$panel = $control"></pip-reset-password-panel><div class="pip-footer"><md-button ng-hide="transaction.busy()" ng-click="goBack()" class="rm8" aria-label="CANCEL">{{::\'CANCEL\' | translate}}</md-button><md-button ng-hide="transaction.busy()" ng-click="onReset()" aria-label="ENTRY_SET_PASSWORD" ng-disabled="(form.$pristine && !data.email) || data.serverUrl.length == 0 || data.email.length == 0 || data.code.length == 0 || data.password.length < 6" class="md-accent" type="submit">{{::\'ENTRY_SET_PASSWORD\' | translate}}</md-button><md-button class="md-warn" ng-show="transaction.busy()" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></div></pip-card></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("reset_password/reset_password_dialog.html",'<md-dialog class="pip-entry lp0 rp0"><md-dialog-content><pip-reset-password-panel pip-data="data" pip-created="$panel = $control"></pip-reset-password-panel></md-dialog-content><md-dialog-actions class="layout-row layout-align-end-center"><md-button ng-hide="transaction.busy()" ng-click="goBack()" class="rm8" aria-label="CANCEL">{{::\'CANCEL\' | translate}}</md-button><md-button ng-hide="transaction.busy()" ng-click="onReset()" aria-label="ENTRY_SET_PASSWORD" ng-disabled="(form.$pristine && !data.email) || data.serverUrl.length == 0 || data.email.length == 0 || data.code.length == 0 || data.password.length < 6" class="md-accent" type="submit">{{::\'ENTRY_SET_PASSWORD\' | translate}}</md-button><md-button class="md-warn" ng-show="transaction.busy()" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></md-dialog-actions></md-dialog>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("reset_password/reset_password_panel.html",'<div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy() && showServerError" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2>{{::\'RESET_PWD_PASSWORD\' | translate}}</h2><p class="title-padding bm16">{{::\'RESET_PWD_TEXT\' | translate}}</p><form name="form" novalidate=""><div ng-messages="form.$serverError" class="text-error bm8" md-auto-hide="false"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><a ng-hide="showServerUrl || fixedServerUrl" ng-click="showServerUrl = true" href="">{{::\'ENTRY_CHANGE_SERVER\' | translate}}</a><div ng-show="showServerUrl"><md-autocomplete ng-initial="" autofocus="" tabindex="1" class="pip-combobox w-stretch bm8" name="server" ng-enabled="!transaction.busy()" placeholder="{{::\'ENTRY_SERVER_URL\' | translate}}" md-no-cache="true" md-selected-item="data.serverUrl" md-search-text="selected.searchURLs" md-items="item in getMatches()" md-item-text="item" md-selected-item-change="onServerUrlChanged()" md-delay="200" ng-model="data.serverUrl" pip-clear-errors=""><span md-highlight-text="selected.searchURLs">{{item}}</span></md-autocomplete></div><md-input-container class="pip-no-hint" style="padding-bottom: 4px!important;"><label>{{::\'EMAIL\' | translate}}</label> <input name="email" type="email" ng-model="data.email" required="" step="any" pip-clear-errors="" ng-disabled="transaction.busy()" tabindex="2" pip-email-unique="data.email"><div class="hint" ng-if="touchedErrorsWithHint(form, form.email).hint">{{::\'HINT_EMAIL\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.email)" class="md-input-error" md-auto-hide="false"><div ng-message="required">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="email">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="emailUnique">{{::\'ERROR_1104\' | translate}}</div><div ng-message="ERROR_1100">{{::\'ERROR_1100\' | translate}}</div><div ng-message="ERROR_1106">{{::\'ERROR_1106\' | translate}}</div></div></md-input-container><md-input-container class="pip-no-hint"><label>{{::\'ENTRY_RESET_CODE\' | translate}}</label> <input name="code" ng-disabled="transaction.busy()" ng-model="data.code" required="" tabindex="3" pip-clear-errors=""><div class="hint" ng-if="touchedErrorsWithHint(form, form.code).hint">{{::\'ENTRY_RESET_CODE\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.code)" class="md-input-error" md-auto-hide="false"><div ng-message="required">{{::\'ERROR_CODE_INVALID\' | translate }}</div><div ng-message="ERROR_1108">{{::\'ERROR_1108\' | translate}}</div><div ng-message="ERROR_1109">{{::\'ERROR_1109\' | translate}}</div></div></md-input-container><md-input-container class="pip-no-hint" style="padding-bottom: 4px!important;"><label>{{::\'PASSWORD\' | translate}}</label> <input name="password" ng-disabled="transaction.busy()" pip-clear-errors="" type="password" tabindex="4" ng-model="data.password" required="" minlength="6"><div class="hint" ng-if="touchedErrorsWithHint(form, form.password).hint">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.password)" class="md-input-error" md-auto-hide="false"><div ng-message="required">{{::\'MINLENGTH_PASSWORD\' | translate}}</div><div ng-message="minlength">{{::\'MINLENGTH_PASSWORD\' | translate}}</div><div ng-message="ERROR_1102">{{::\'ERROR_1102\' | translate}}</div><div ng-message="ERROR_1103">{{::\'ERROR_1103\' | translate}}</div><div ng-message="ERROR_1105">{{::\'ERROR_1105\' | translate}}</div></div></md-input-container></form></div></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signin/signin.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><pip-signin-panel pipfixedserverurl="fixedServerUrl"></pip-signin-panel></pip-card></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signin/signin_dialog.html",'<md-dialog class="pip-entry"><md-dialog-content><pip-signin-panel pip-goto-signup-dialog="pipGotoSignupDialog" pip-goto-recover-password-dialog="pipGotoRecoverPasswordDialog"></pip-signin-panel></md-dialog-content></md-dialog>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signin/signin_panel.html",'<div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy()" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2 pip-translate="SIGNIN_TITLE"></h2><form name="form" novalidate=""><div ng-messages="form.$serverError" class="text-error bm8 color-error" md-auto-hide="false"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><a ng-hide="showServerUrl || fixedServerUrl" ng-click="showServerUrl = true" href="" id="link-server-url" pip-test="link-server-url">{{::\'ENTRY_CHANGE_SERVER\' | translate}}</a><div ng-show="showServerUrl"><md-autocomplete ng-initial="" autofocus="" tabindex="1" class="pip-combobox w-stretch bm8" name="server" placeholder="{{::\'ENTRY_SERVER_URL\' | translate}}" md-no-cache="true" md-selected-item="data.serverUrl" md-search-text="selected.searchURLs" md-items="item in getMatches()" md-item-text="item" md-selected-item-change="onServerUrlChanged()" md-delay="200" ng-model="data.serverUrl" ng-disabled="transaction.busy()" pip-clear-errors="" pip-test="autocomplete-server"><span md-highlight-text="selected.searchURLs">{{item}}</span></md-autocomplete></div><md-input-container class="display bp4"><label>{{::\'EMAIL\' | translate}}</label> <input name="email" type="email" ng-model="data.email" required="" step="any" ng-keypress="onEnter($event)" pip-clear-errors="" ng-disabled="transaction.busy()" tabindex="2" pip-test="input-email"><div class="hint" ng-if="touchedErrorsWithHint(form, form.email).hint">{{::\'HINT_EMAIL\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.email)" md-auto-hide="false"><div ng-message="required">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="email">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="ERROR_1100">{{::\'ERROR_1100\' | translate}}</div><div ng-message="ERROR_1106">{{::\'ERROR_1106\' | translate}}</div><div ng-message="ERROR_1114">{{::\'ERROR_1114\' | translate}}</div></div></md-input-container><md-input-container class="display bp4"><label>{{::\'PASSWORD\' | translate}}</label> <input name="password" ng-disabled="transaction.busy()" pip-clear-errors="" type="password" tabindex="3" ng-model="data.password" ng-keypress="onEnter($event)" required="" minlength="6" pip-test="input-password"><div class="hint" ng-if="touchedErrorsWithHint(form, form.password).hint">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.password)" md-auto-hide="false"><div ng-message="required">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-message="minlength">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-message="ERROR_1102">{{::\'ERROR_1102\' | translate}}</div><div ng-message="ERROR_1107">{{::\'ERROR_1107\' | translate}}</div></div></md-input-container><a href="" class="display bm16" ng-click="gotoRecoverPassword()" tabindex="4">{{::\'SIGNIN_FORGOT_PASSWORD\' | translate}}</a><md-checkbox ng-disabled="transaction.busy()" md-no-ink="" class="lm0" aria-label="{{\'SIGNIN_REMEMBER\' | translate}}" tabindex="5" ng-model="data.remember" pip-test-checkbox="remember"><label class="label-check">{{::\'SIGNIN_REMEMBER\' | translate}}</label></md-checkbox><div style="height: 36px; overflow: hidden;"><md-button ng-if="!transaction.busy()" ng-click="onSignin()" aria-label="SIGNIN" class="md-raised md-accent w-stretch m0" tabindex="6" ng-disabled="(data.email == undefined) || data.email.length == 0 || data.serverUrl == \'\' || data.serverUrl == undefined || data.serverUrl.length == 0 || (data.password == undefined)" pip-test="button-signin">{{::\'SIGNIN_TITLE\' | translate}}</md-button><md-button ng-if="transaction.busy()" ng-click="transaction.abort()" class="md-raised md-warn m0 w-stretch" tabindex="5" aria-label="ABORT" pip-test="button-cancel">{{::\'CANCEL\' | translate}}</md-button></div><div class="tm24 layout-row" ng-if="!adminOnly && $mdMedia(\'gt-xs\')"><p class="m0 text-small">{{::\'SIGNIN_NOT_MEMBER\' | translate}} <a href="" ng-click="gotoSignup()" tabindex="6">{{::\'SIGNIN_SIGNUP_HERE\' | translate}}</a></p></div><div class="tm24 divider-top" style="margin-right: -16px; margin-left: -16px; background-color: rgb(238, 238, 238);" ng-if="!adminOnly && $mdMedia(\'xs\')"><div class="h48 layout-row layout-align-center-end"><p class="m0 text-small">{{::\'SIGNIN_NOT_MEMBER\' | translate}}</p></div><div class="h48 layout-row layout-align-center -start"><a class="text-small" ng-click="gotoSignup()" href="" tabindex="6">{{::\'SIGNIN_SIGNUP_HERE\' | translate}}</a></div></div></form></div></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signup/signup.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><pip-signup-panel></pip-signup-panel></pip-card></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signup/signup_dialog.html",'<md-dialog class="pip-entry"><md-dialog-content><pip-signup-panel pip-goto-signin-dialog="pipGotoSigninDialog" pip-post-signup="pipPostSignup"></pip-signup-panel></md-dialog-content></md-dialog>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("signup/signup_panel.html",'<div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy()" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2 pip-translate="SIGNUP_TITLE"></h2><form name="form" novalidate="" autocomplete="off"><input type="email" style="display:none"> <input type="password" style="display:none"><div ng-messages="form.$serverError" class="text-error bm8" md-auto-hide="false"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><a ng-hide="showServerUrl || fixedServerUrl" ng-click="showServerUrl = true" href="">{{::\'ENTRY_CHANGE_SERVER\' | translate}}</a><div ng-show="showServerUrl"><md-autocomplete ng-initial="" autofocus="" tabindex="1" class="pip-combobox w-stretch bm8" name="server" ng-enabled="!transaction.busy()" placeholder="{{::\'ENTRY_SERVER_URL\' | translate}}" md-no-cache="true" md-selected-item="data.serverUrl" md-search-text="selected.searchURLs" md-items="item in getMatches()" md-item-text="item" md-selected-item-change="onServerUrlChanged()" md-delay="200" ng-model="data.serverUrl" ng-disabled="transaction.busy()" pip-clear-errors=""><span md-highlight-text="selected.searchURLs">{{item}}</span></md-autocomplete></div><md-input-container class="display bp4"><label>{{::\'FULLNAME\' | translate}}</label> <input name="signupFullName" ng-disabled="transaction.busy()" autocomplete="off" ng-model="data.name" ng-init="data.name = \'\'" required="" tabindex="2" pip-clear-errors="" ng-keypress="onEnter($event)"><div class="hint text-overflow w-stretch" ng-if="touchedErrorsWithHint(form, form.signupFullName).hint">{{::\'HINT_FULLNAME\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.signupFullName)" md-auto-hide="false"><div ng-message="required">{{::\'HINT_FULLNAME\' | translate}} {{::\'ERROR_FULLNAME_INVALID\' | translate }}</div><div ng-message="ERROR_1101">{{::\'ERROR_1101\' | translate}}</div></div></md-input-container><md-input-container class="display bp4"><label>{{::\'EMAIL\' | translate}}</label> <input name="userEmail" ng-disabled="transaction.busy()" pip-clear-errors="" type="email" tabindex="3" ng-model="data.email" xxng-pattern="/^[_a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,4})$/" required="" pip-email-unique="data.email" ng-keypress="onEnter($event)" pip-test="input-password"><div class="hint" ng-if="touchedErrorsWithHint(form, form.userEmail).hint">{{::\'HINT_EMAIL\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.userEmail)" md-auto-hide="false"><div ng-message="required">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="email">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="emailUnique">{{::\'ERROR_1104\' | translate}}</div><div ng-message="ERROR_1100">{{::\'ERROR_1100\' | translate}}</div><div ng-message="ERROR_1106">{{::\'ERROR_1106\' | translate}}</div><div ng-message="ERROR_1104">{{::\'ERROR_1104\' | translate}}</div><div ng-message="ERROR_1300">{{::\'ERROR_1300\' | translate}}</div><div ng-message="ERROR_1305">{{::\'ERROR_1305\' | translate}}</div><div ng-message="ERROR_1301">{{::\'ERROR_1301\' | translate}}</div><div ng-message="ERROR_1114">{{::\'ERROR_1114\' | translate}}</div></div></md-input-container><md-input-container class="display bp4"><label>{{::\'PASSWORD_SET\' | translate}}</label> <input name="password" ng-disabled="transaction.busy()" pip-clear-errors="" type="password" tabindex="4" ng-model="data.password" required="" minlength="6" ng-keypress="onEnter($event)" pip-test="input-password"><div class="hint" ng-if="touchedErrorsWithHint(form, form.password).hint">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.password)" md-auto-hide="false"><div ng-message="required">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-message="minlength">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-message="ERROR_1102" ng-if="!form.password.$pristine">{{::\'ERROR_1102\' | translate}}</div><div ng-message="ERROR_1107" ng-if="!form.password.$pristine">{{::\'ERROR_1107\' | translate}}</div></div></md-input-container><md-input-container class="display bp4"><label>{{::\'PASSWORD_CONFIRM\' | translate}}</label> <input name="passwordConfirm" type="password" tabindex="4" required="" minlength="6" ng-model="confirmPassword" ng-disabled="transaction.busy()" pip-clear-errors="" compare-to="data.password" ng-keypress="onEnter($event)" pip-test="input-password"><div class="hint" ng-if="touchedErrorsWithHint(form, form.passwordConfirm).hint">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-messages="touchedErrorsWithHint(form, form.passwordConfirm)" md-auto-hide="false"><div ng-message="compareTo">{{::\'PASSWORD_MATCH\' | translate}}</div><div ng-message="required">{{::\'HINT_PASSWORD\' | translate}}</div><div ng-message="minlength">{{::\'HINT_PASSWORD\' | translate}}</div></div></md-input-container><p class="text-small-secondary">{{::\'SIGNUP_TEXT_11\' | translate}} <a href="#/legal/privacy">{{::\'SIGNUP_PRIVACY\' | translate}}</a> {{::\'SIGNUP_TEXT_12\' | translate}} <a href="#/legal/services">{{::\'SIGNUP_SERVICES\' | translate}}</a></p><md-button ng-hide="transaction.busy()" class="md-raised m0 md-accent w-stretch" ng-click="onSignup()" aria-label="SIGNUP" ng-disabled="form.$invalid || (form.$pristine && !data.email) || data.serverUrl.length == 0 || data.email.length == 0 || (!data.password) || (!data.name) || data.name.length == 0 || data.password.length == 0">{{::\'SIGNUP_TITLE\' | translate}}</md-button><md-button ng-show="transaction.busy()" ng-click="transaction.abort()" class="md-raised md-warn m0 w-stretch" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button><div class="tm24 layout-row" ng-if="$mdMedia(\'gt-xs\')"><p class="text-small m0">{{::\'SIGNUP_TEXT_2\' | translate}} <a href="" ng-click="gotoSignin()">{{::\'SIGNUP_SIGNIN_HERE\' | translate}}</a></p></div><div class="tm24 divider-top" ng-if="$mdMedia(\'xs\')" style="margin-right: -16px; margin-left: -16px; background-color: rgb(238, 238, 238);"><div class="h48 layout-row layout-align-center-end"><p class="bm0 text-small">{{::\'SIGNUP_TEXT_2\' | translate}}</p></div><div class="h48 layout-row layout-align-center-start"><p class="bm0 text-small"><a href="" ng-click="gotoSignin()">{{::\'SIGNUP_SIGNIN_HERE\' | translate}}</a></p></div></div></form></div></div>')}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("verify_email/verify_email.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><div class="pip-body"><div class="pip-content"><md-progress-linear ng-show="transaction.busy()" md-mode="indeterminate" class="pip-progress-top"></md-progress-linear><h2>{{\'VERIFY_EMAIL_TITLE\' | translate}}</h2><p class="title-padding">{{\'VERIFY_EMAIL_TEXT_1\' | translate}}</p><form name="form" novalidate=""><div ng-messages="form.$serverError" class="text-error bm8"><div ng-message="ERROR_1000">{{::\'ERROR_1000\' | translate}}</div><div ng-message="ERROR_1110">{{::\'ERROR_1110\' | translate}}</div><div ng-message="ERROR_1111">{{::\'ERROR_1111\' | translate}}</div><div ng-message="ERROR_1112">{{::\'ERROR_1112\' | translate}}</div><div ng-message="ERROR_-1">{{::\'ERROR_SERVER\' | translate}}</div><div ng-message="ERROR_UNKNOWN">{{ form.$serverError.ERROR_UNKNOWN | translate }}</div></div><a ng-hide="showServerUrl || fixedServerUrl" ng-click="showServerUrl = true" href="">{{\'ENTRY_CHANGE_SERVER\' | translate}}</a><div ng-show="showServerUrl"><md-autocomplete ng-initial="" autofocus="" tabindex="1" class="pip-combobox w-stretch bm8" name="server" ng-enabled="!transaction.busy()" placeholder="{{::\'ENTRY_SERVER_URL\' | translate}}" md-no-cache="true" md-selected-item="data.serverUrl" md-search-text="selected.searchURLs" md-items="item in getMatches()" md-item-text="item" md-selected-item-change="onServerUrlChanged()" md-delay="200" ng-model="data.serverUrl" pip-clear-errors=""><span md-highlight-text="selected.searchURLs">{{item}}</span></md-autocomplete></div><md-input-container class="pip-no-hint" style="padding-bottom: 4px!important;"><label>{{::\'EMAIL\' | translate}}</label> <input name="email" type="email" ng-model="data.email" required="" step="any" pip-clear-errors="" ng-disabled="transaction.busy()" tabindex="2"><div ng-messages="touchedErrorsWithHint(form, form.email)" ng-if="!form.email.$pristine" class="md-input-error"><div ng-message="hint" class="pip-input-hint">{{::\'HINT_EMAIL\' | translate}}</div><div ng-message="required">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="email">{{::\'ERROR_EMAIL_INVALID\' | translate }}</div><div ng-message="ERROR_1100">{{::\'ERROR_1100\' | translate}}</div><div ng-message="ERROR_1104">{{::\'ERROR_1104\' | translate}}</div><div ng-message="ERROR_1305">{{::\'ERROR_1305\' | translate}}</div><div ng-message="ERROR_1106">{{::\'ERROR_1106\' | translate}}</div></div></md-input-container><md-input-container class="pip-no-hint"><label>{{::\'ENTRY_RESET_CODE\' | translate}}</label> <input name="code" ng-disabled="transaction.busy()" ng-model="data.code" required="" tabindex="3"><div ng-messages="touchedErrorsWithHint(form, form.code)" ng-if="!form.fullName.$pristine" class="md-input-error"><div ng-message="hint" class="pip-input-hint">{{::\'ENTRY_RESET_CODE\' | translate}}</div><div ng-message="required">{{::\'ERROR_CODE_INVALID\' | translate }}</div><div ng-message="ERROR_1108">{{::\'ERROR_1108\' | translate}}</div></div></md-input-container><p>{{\'VERIFY_EMAIL_TEXT_21\' | translate}} <a ng-click="onRecover()" class="pointer" href="">{{\'VERIFY_EMAIL_RESEND\' | translate}}</a> {{\'VERIFY_EMAIL_TEXT_22\' | translate}}</p></form></div></div><div class="pip-footer"><md-button ng-click="goBack()" ng-hide="transaction.busy()" class="rm8" aria-label="CANCEL">{{::\'CANCEL\' | translate}}</md-button><md-button class="md-accent" ng-click="onVerify()" ng-hide="transaction.busy()" aria-label="VERIFY" ng-disabled="data.code.length == 0 || data.email.length == 0 || (!data.email && form.$pristine) || (!data.code)">{{::\'VERIFY\' | translate}}</md-button><md-button class="md-warn" ng-show="transaction.busy()" ng-click="transaction.abort()" aria-label="ABORT">{{::\'CANCEL\' | translate}}</md-button></div></pip-card></div>');
}])}(),function(e){try{e=angular.module("pipEntry.Templates")}catch(t){e=angular.module("pipEntry.Templates",[])}e.run(["$templateCache",function(e){e.put("verify_email/verify_email_success.html",'<div class="pip-card-container pip-outer-scroll pip-entry"><pip-card width="400"><div class="pip-footer"><md-button ng-click="onContinue()" class="md-accent">{{\'CONTINUE\' | translate}}</md-button></div><div class="pip-body"><div class="pip-content"><h2>{{\'VERIFY_EMAIL_TITLE\' | translate}}</h2><p class="title-padding">{{\'VERIFY_EMAIL_SUCCESS_TEXT\' | translate}}</p></div></div></pip-card></div>')}])}(),function(){"use strict";var e=angular.module("pipEmailUnique",["ngResource","pipRest"]);e.directive("pipEmailUnique",["$http","pipRest",function(e,t){return{restrict:"A",require:"ngModel",link:function(e,a,r,n){var i=r.pipEmailUnique;e.$watch(r.ngModel,_.throttle(function(e){var a=n.$validators.emailUnique;return e&&0!=e.length&&i!=e?(e||n.$setValidity("emailUnique",!0),void t.signupValidate().call({email:e},function(e){n.$setValidity("emailUnique",!0)},function(e){n.$setValidity("emailUnique",!1)})):void n.$setValidity("emailUnique",a)},500))}}}])}(),function(){"use strict";var e=angular.module("pipEntry.Common",[]);e.provider("pipEntry",function(){var e=!1,t=null;this.adminOnly=function(t){e=t},this.fixedServerUrl=function(e){t=e},this.$get=function(){return{adminOnly:function(){return e},fixedServerUrl:function(){return t}}}}),e.factory("pipEntryCommon",["$rootScope","$state","$window","pipAppBar","pipSession","pipRest","pipEntry","pipFormErrors",function(e,t,a,r,n,i,s,o){function l(){r.hideNavIcon(),r.config().appTitleLogo?r.showTitleLogo(r.config().appTitleLogo):r.showTitleLogo("images/piplife_logo.svg"),r.showLanguage(),r.showShadow(),r.hideSearch()}function p(e){function a(t){var a=e.selected.searchURLs&&t&&t.toLowerCase().indexOf(e.selected.searchURLs.toLowerCase())>=0;return a}function r(){return e.selected.searchURLs?(e.data.serverUrl=e.selected.searchURLs,_.filter(e.serverUrls,e.filterItem)):e.showServerUrl}function l(){if(i.serverUrl(e.data.serverUrl),e.selected.searchURLs){var a=e.servers[e.data.serverUrl];a&&"signup"!=t.name&&(e.data.email=a.email,e.data.password=a.password),o.resetFormErrors(e.form,!1),o.resetFieldsErrors(e.form)}}if(e.adminOnly=s.adminOnly(),e.data={serverUrl:i.serverUrl(),email:"signup"!=t.name&&t.params.email?t.params.email:null,password:"",remember:!1,adminOnly:e.adminOnly,name:t.params.name||null,code:t.params.code||null},e.showServerUrl=!1,e.fixedServerUrl=!1,e.data.serverUrl=e.data.serverUrl||n.usedServerUrls(),s.fixedServerUrl()&&(e.data.serverUrl=i.serverUrl(),e.fixedServerUrl=!0),"signup"!=t.name&&(e.data.email=e.data.email||n.lastUsedEmail(e.data.serverUrl)),e.serverUrls=n.usedServerUrls(),e.servers=n.usedServers(),e.selected={},e.selected.searchURLs=e.data.serverUrl,e.data.serverUrl&&!e.data.email&&"signup"!=t.name){var p=e.servers[e.data.serverUrl];e.data.email=(p||{}).email}e.filterItem=a,e.getMatches=r,e.onServerUrlChanged=l,e.isEmpty=_.isEmpty}return{configureAppBar:l,initScope:p}}])}(),function(){"use strict";var e=angular.module("pipEntry.Strings",[]);e.config(["pipTranslateProvider",function(e){e.translations("en",{FULLNAME:"First and last name",EMAIL:"Email",PASSWORD:"Password",LANGUAGE:"Language",GENDER:"Gender",BIRTHDAY:"Birthday",LOCATION:"Location",HINT_FULLNAME:"Use your real name, so others know who you are",HINT_PASSWORD:"Minimum 6 characters",HINT_ABOUT:"Few words about yourself",VERIFY_EMAIL:"Please, verify your email address. ",HINT_EMAIL:"Please, type your email address.",SIGNIN_TITLE:"Sign in",SIGNIN_NOT_MEMBER:"Not a member?",SIGNIN_REMEMBER:"Remember",SIGNIN_FORGOT_PASSWORD:"Forgot password?",SIGNIN_SIGNUP_HERE:" Sign up here",SIGNUP_TITLE:"Sign up",SIGNUP_NOT_MEMBER:"Not a member? Sign up now",SIGNUP_TEXT_11:"By clicking Sign up, you agree to the",SIGNUP_PRIVACY:"privacy statement",SIGNUP_TEXT_12:"and",SIGNUP_SERVICES:"services agreement",SIGNUP_TEXT_2:"Do you have an account?",SIGNUP_SIGNIN_HERE:" Sign in here",SIGNUP_EMAIL_REGISTERED:"This email is already registered",SIGNUP_FULLNAME_WRONG:"xxxx",SIGNUP_EMAIL_WRONG:"xxxx",POST_SIGNUP_TITLE:"Welcome to Pip.Life",POST_SIGNUP_TEXT_1:"Your account was successfully created.",POST_SIGNUP_TEXT_2:"Tell us some more about yourself.",RECOVER_PWD_TITLE:"Forgot password?",RECOVER_PWD_TEXT_1:"Enter the email address you used when you joined and we'll send you instructions to reset your password.",RECOVER_PWD_TEXT_2:"For security reasons, we do NOT store your password. So rest assured that we will never send your password via email.",RECOVER_PWD_RECOVER:"Recover password",RESET_PWD_PASSWORD:"Reset password",RESET_PWD_TEXT:"Enter the email address together with the reset code you received in email from PipLife. Remember the code is only active for 24 hours.",RESET_PWD_SUCCESS_TEXT:"Your password was successfully changed",VERIFY_EMAIL_TITLE:"Email verification",VERIFY_EMAIL_TEXT_1:"Confirm your email address using verification code",VERIFY_EMAIL_TEXT_21:"If you haven't received the code, press ",VERIFY_EMAIL_RESEND:"resend",VERIFY_EMAIL_TEXT_22:"to send it again.",VERIFY_EMAIL_SUCCESS_TEXT:"Your email address was successfully verified. Thank you!",PASSWORD_MATCH:"Passwords don't match",PASSWORD_CONFIRM:"Confirm the password",PASSWORD_SET:"Set a password",ENTRY_CHANGE_SERVER:"Change server",ENTRY_SERVER_URL:"Server URL",ENTRY_RESET_CODE:"Reset code",ENTRY_VERIFICATION_CODE:"Verification code",ENTRY_NEW_PASSWORD:"New password",ENTRY_SET_PASSWORD:"Set Password",ENTRY_FREE:"Free",ENTRY_REPEAT:"Repeat",ERROR_EMAIL_INVALID:"Enter a valid email",ERROR_PASSWORD_INVALID:"Enter a valid password",ERROR_FULLNAME_INVALID:"Enter full name",ERROR_CODE_INVALID:"Enter a code from mail",ERROR_ACCOUNT_NOT_FOUND:"User name or password are incorrect",ERROR_WRONG_PASSWORD:"User name or password are incorrect",ERROR_CODE_WRONG:"Wrong recovery code",ERROR_SERVER:"Server is not responding",ERROR_SERVER_INVALID:"Enter server URL",LANGUAGE_RUSSIAN:"Russian",LANGUAGE_ENGLISH:"English"}),e.translations("ru",{FULLNAME:"Имя и фамилия",EMAIL:"Адрес эл.почты",PASSWORD:"Пароль",LANGUAGE:"Язык",GENDER:"Пол",BIRTHDAY:"Дата рождения",LOCATION:"Местонахождение",HINT_FULLNAME:"Используйте своё настоящее имя, чтобы другие знали с кем имеют дело",HINT_PASSWORD:"Минимум 6 символов",HINT_ABOUT:"Несколько слов о себе",VERIFY_EMAIL:"Подтвердите адрес своей эл.почты",HINT_EMAIL:"Введите адрес своей эл.почты",SIGNIN_TITLE:"Вход в систему",SIGNIN_NOT_MEMBER:"Еще не зарегистрировались?",SIGNIN_REMEMBER:"Запомнить",SIGNIN_FORGOT_PASSWORD:"Забыли пароль?",SIGNIN_SIGNUP_HERE:" Зарегистрироваться здесь",SIGNUP_TITLE:"Регистрация",SIGNUP_NOT_MEMBER:"Новенький? Зарегистрируйтесь сейчас",SIGNUP_TEXT_11:"Нажимая кнопку регистрация, я соглашаюсь с",SIGNUP_SERVICES:"договором об услугах",SIGNUP_TEXT_12:"и",SIGNUP_PRIVACY:"соглашением о личных данных",SIGNUP_TEXT_2:"Уже зарегистрировались?",SIGNUP_SIGNIN_HERE:" Вход здесь",SIGNUP_EMAIL_REGISTERED:"Данный адрес эл.почты уже занят",POST_SIGNUP_TITLE:"Добро пожаловать в Pip.Life",POST_SIGNUP_TEXT_1:"Ваша учетная запись создана.",POST_SIGNUP_TEXT_2:"Несклько слов о о себе",RECOVER_PWD_TITLE:"Забыли пароль?",RECOVER_PWD_TEXT_1:"Введите адрес эл.почты, который вы использовали при регистрации и мы вышлем вам инструкции как изменить пароль.",RECOVER_PWD_TEXT_2:"По соображениям безопасности мы НЕ храним пароли. Таким образом, мы никогда не пошлем ваш пароль по электронной почте.",RECOVER_PWD_RECOVER:"Восстановить пароль",RESET_PWD_PASSWORD:"Изменить пароль",RESET_PWD_TEXT:"Введите адрес эл.почты вместе с кодом, который вы получили в почтовом сообщении от PipLife. Помните, что код действителен только 24 часа.",RESET_PWD_SUCCESS_TEXT:"Ваш пароль успешно изменён",VERIFY_EMAIL_TITLE:"Подтверждение адреса эл.почты",VERIFY_EMAIL_TEXT_1:"Введите код, который вы получили по эл.почте",VERIFY_EMAIL_TEXT_21:"Если вы не получили почтовое сообщение с кодом, нажмите ",VERIFY_EMAIL_RESEND:"отправить снова",VERIFY_EMAIL_TEXT_22:".",VERIFY_EMAIL_SUCCESS_TEXT:"Адрес вашей электронной почты успешно подтвержден. Спасибо!",PASSWORD_MATCH:"Пароли не совпадают",PASSWORD_CONFIRM:"Подтвердите пароль",PASSWORD_SET:"Задайте пароль",ENTRY_CHANGE_SERVER:"Изменить сервер",ENTRY_SERVER_URL:"URL сервера",ENTRY_RESET_CODE:"Код подтверждения",ENTRY_VERIFICATION_CODE:"Код проверки",ENTRY_NEW_PASSWORD:"Новый пароль",ENTRY_SET_PASSWORD:"Изменить пароль",ENTRY_FREE:"бесплатно",ENTRY_REPEAT:"Повторить",ERROR_EMAIL_INVALID:"Введите адрес электронной почты",ERROR_PASSWORD_INVALID:"Введите пароль",ERROR_FULLNAME_INVALID:"Введите полное имя",ERROR_CODE_INVALID:"Введите код",ERROR_ACCOUNT_NOT_FOUND:"Введено неверное имя пользователя или пароль",ERROR_WRONG_PASSWORD:"Введено неверное имя пользователя или пароль",ERROR_CODE_WRONG:"Неправильный код",ERROR_SERVER:"Сервер не отвечает. Проверьте URL сервера.",ERROR_SERVER_INVALID:"Введите URL сервера",LANGUAGE_RUSSIAN:"Русский",LANGUAGE_ENGLISH:"Английский"})}])}(),function(){"use strict";var e=angular.module("pipPasswordMatch",[]);e.directive("compareTo",function(){return{require:"ngModel",scope:{otherModelValue:"=compareTo"},link:function(e,t,a,r){r.$validators.compareTo=function(t){return t==e.otherModelValue},e.$watch("otherModelValue",function(){r.$validate()})}}})}(),function(){"use strict";var e=angular.module("pipEntry.PostSignup",["pipEntry.Common","pipPostSignupPanel"]);e.controller("pipPostSignupController",["$scope","$rootScope","pipAuthState","$party",function(e,t,a,r){function n(){e.$panel&&e.$panel.onPostSignupSubmit()}e.$party=r,e.onPostSignupSubmit=n,e.$panel&&(e.transaction=e.$panel.transacton)}])}(),function(){"use strict";var e=angular.module("pipEntry.PostSignupDialog",["pipEntry.Common","pipPostSignupPanel"]);e.factory("pipPostSignupDialog",["$mdDialog",function(e){return{show:function(t,a,r){e.show({targetEvent:t.event,templateUrl:"post_signup/post_signup_dialog.html",controller:"pipPostSignupDialogController",locals:{params:t},clickOutsideToClose:!0}).then(function(){a&&a()},function(){r&&r()})}}}]),e.controller("pipPostSignupDialogController",["$scope","$rootScope","$location","pipSession","params",function(e,t,a,r,n){function i(){e.$panel&&e.$panel.onPostSignupSubmit()}e.$party=n.$party,e.onPostSignupSubmit=i,e.$panel&&(e.transaction=e.$panel.transacton)}])}(),function(){"use strict";var e=angular.module("pipPostSignupPanel",["pipUtils","pipFocused","pipEntry.Strings"]);e.directive("pipPostSignupPanel",function(){return{restrict:"EA",replace:!0,scope:{data:"=pipData",created:"&pipCreated",$party:"=pipParty"},templateUrl:"post_signup/post_signup_panel.html",controller:"pipPostSignupPanelController"}}),e.controller("pipPostSignupPanelController",["$scope","$rootScope","$location","pipTransaction","pipAuthState","pipSession","pipFormErrors","pipEntryCommon","$state","$mdMedia","pipTranslate","pipEnums","pipRest","pipUtils",function(e,t,a,r,n,i,s,o,l,p,d,c,m,g){function u(t){e.picture&&e.picture.save(function(){},function(e){console.error(e)})}function R(t){e.picture=t.sender}function E(){if(e.form.$invalid)return void s.resetFormErrors(e.form,!0);var t=e.transaction.begin("PROCESSING");t&&m.parties().update(e.data,function(a){if(s.resetFormErrors(e.form,!1),!e.transaction.aborted(t))return e.transaction.end(),g.checkSupported()?void n.goToAuthorized({party_id:a.id}):(i.signout(),void l.go("errors_unsupported"))},function(t){e.error=t,e.transaction.end(e.error),s.resetFormErrors(e.form,!0),s.setFormError(e.form,t,{1e3:"form",1110:"form",1111:"form",1112:"form","-1":"form"})})}e.$mdMedia=p,o.initScope(e),e.showServerError=!0,e.genders=d.translateSet(c.GENDERS),e.languages=d.translateSet(c.LANGUAGES),e.data={id:e.$party.id,name:e.$party.name,email:e.$party.email,about:e.$party.about,language:d.use(),birthday:e.$party.birthday,gender:e.$party.gender||c.GENDER.NOT_SPECIFIED,location:e.$party.location},e.transaction=r("entry.post_signup",e),e.$control={},e.$control.onPostSignupSubmit=E,e.$control.transaction=e.transaction,e.created&&e.created({$control:e.$control}),e.onPictureChanged=u,e.onPictureCreated=R,e.onPostSignupSubmit=E}])}(),function(){"use strict";var e=angular.module("pipEntry.RecoverPassword",["pipEntry.Common","pipRecoverPasswordPanel"]);e.controller("pipRecoverPasswordController",["$scope","$rootScope","pipUtils","pipAuthState","pipTransaction","pipRest","pipFormErrors","pipEntryCommon","$window",function(e,t,a,r,n,i,s,o,l){function p(){l.history.back()}function d(){e.$panel&&e.$panel.onRecover()}o.configureAppBar(),e.goBack=p,e.onRecover=d,e.transaction=n("entry.recover_password",e)}])}(),function(){"use strict";var e=angular.module("pipEntry.RecoverPasswordDialog",["pipEntry.Common","pipRecoverPasswordPanel","pipEntry.ResetPasswordDialog"]);e.factory("pipRecoverPasswordDialog",["$mdDialog",function(e){return{show:function(t,a,r){e.show({targetEvent:t.event,templateUrl:"recover_password/recover_password_dialog.html",controller:"pipRecoverPasswordDialogController",locals:{params:t},clickOutsideToClose:!0}).then(function(){a&&a()},function(){r&&r()})}}}]),e.controller("pipRecoverPasswordDialogController",["$scope","$rootScope","$location","pipSession","params","$mdDialog","pipResetPasswordDialog",function(e,t,a,r,n,i,s){function o(){e.$panel&&e.$panel.onRecover()}function l(){s.show({})}e.onRecover=o,e.$panel&&(e.transaction=e.$panel.transacton),e.goBack=i.cancel,e.pipGotoReset=l}])}(),function(){"use strict";var e=angular.module("pipRecoverPasswordPanel",["pipUtils","pipFocused","pipEntry.Strings"]);e.directive("pipRecoverPasswordPanel",function(){return{restrict:"EA",replace:!0,scope:{data:"=pipData",created:"&pipCreated",gotoReset:"=pipGotoReset"},templateUrl:"recover_password/recover_password_panel.html",controller:"pipRecoverPasswordPanelController"}}),e.controller("pipRecoverPasswordPanelController",["$scope","$rootScope","$location","pipTransaction","pipAuthState","pipSession","pipFormErrors","pipEntryCommon","$state","$mdMedia","pipTranslate","pipEnums","pipRest","pipUtils",function(e,t,a,r,n,i,s,o,l,p,d,c,m,g){function u(){if(e.form.$invalid)return void s.resetFormErrors(e.form,!0);var t=e.transaction.begin("PROCESSING");t&&m.recoverPassword(e.data.serverUrl).call({email:e.data.email},function(a){s.resetFormErrors(e.form,!1),e.transaction.aborted(t)||(e.transaction.end(),e.gotoReset?e.gotoReset():n.go("reset_password",{server_url:e.data.serverUrl,email:e.data.email}))},function(t){e.error=t,e.transaction.end(e.error),s.setFormError(e.form,e.error,{1100:"email",1106:"email",1e3:"form",1110:"form",1111:"form",1112:"form","-1":"form"}),s.resetFormErrors(e.form,!0)})}e.$mdMedia=p,o.initScope(e),e.showServerError=!0,e.touchedErrorsWithHint=s.touchedErrorsWithHint,e.onRecover=u,e.transaction=r("entry.recover_password",e),e.$control={},e.$control.onRecover=u,e.created&&e.created({$control:e.$control})}])}(),function(){"use strict";var e=angular.module("pipEntry.ResetPassword",["pipEntry.Common","pipResetPasswordPanel","pipEmailUnique"]);e.controller("pipResetPasswordController",["$scope","$rootScope","pipUtils","pipAuthState","pipTransaction","pipRest","pipToasts","pipTranslate","pipFormErrors","pipEntryCommon","$window",function(e,t,a,r,n,i,s,o,l,p,d){function c(){d.history.back()}function m(){e.$panel&&e.$panel.onReset()}p.configureAppBar(),e.goBack=c,e.onReset=m,e.transacti