{"version":3,"sources":["scripts/app-eb90d7cf47.js"],"names":["modules","angular","module","TeamController","$scope","$rootScope","$timeout","StaffService","init","destroyListener","$on","event","tab","vm","activeTab","triggerMenuActiveLinkUpdate","getWidth","qty","$broadcast","state","this","data","getData","memberDialog","open","$inject","controller","StrategyController","ProjectsController","ProjectsService","showCurrent","type","currentProjects","current","list","currentType","showCurrentList","showProjectTypeSelect","undefined","showFinishedProjects","NewsController","$window","$sce","NewsService","ENV","setContent","index","setNewsData","window","innerWidth","element","addClass","newsDialog","content","activeNewsArticle","searchString","replaceString","news","length","copy","api","replace","activeContentIndex","style","top","initContent","selectFirst","onFetch","trustSrc","src","addition","location","origin","url","trustAsResourceUrl","imgPrefix","config","autoHideScrollbar","theme","advanced","updateOnContentResize","scrollInertia","HomeController","$interval","StatsService","BannerService","localStorageService","slideBackground","i","find","removeClass","next","prev","count","fetch","destroySlider","cancel","openVideoPopup","videoDialog","video","ua","get","en","banners","stats","ContactUsController","ContactService","uiGmapIsReady","getInTouch","submitted","form","$valid","map","center","latitude","longitude","control","refresh","zoom","marker","idKey","coords","promise","then","triggerResize","dispatchEvent","Event","gmap","getGMap","google","maps","Marker","position","lat","lng","title","ifhVideoDialog","ClientVideoDialogController","closeDialog","restrict","templateUrl","scope","controllerAs","bindToController","directive","ifhTeamMemberDialog","TeamMemberController","$log","$destroy","$watch","updateDialog","id","oldId","getIndex","arr","enableKeyListeners","on","onKeyDown","indexInManagers","indexInExecutives","staff","executives","managers","members","currentMember","previous","$applyAsync","selectedID","keyCode","off","ifhTeamMember","MemberController","openMemberDialog","dialogData","member","ifhSplitter","SplitterController","ifhProjectsTimeline","projects","ProjectsTimelineController","$document","years","tempMapping","len","project","year","Date","date","getFullYear","toString","indexOf","push","sort","j","l","scrollTo","wrapper","duScrollToElementAnimated","ifhNewsDialog","ClientProjectDialogController","indexInCompleted","indexInCurrent","images","projectsList","completed","result","numberLoaded","scrollTop","ifhProjectCardCompleted","ProjectCardCompletedController","openDialog","projectDialog","_generateRandomImage","random","noImageAvailable","thumbnail","timelineImg","Math","floor","ifhProjectCard","ProjectCardController","ClientNewsDialogController","ifhNewsCategories","NewsCategoriesController","$state","changeType","go","activeState","name","links","text","toState","ifhMenuToggle","menuOpened","MenuToggleController","toggleMenu","closeMenu","openMenu","$body","ifhMenu","MenuController","$location","onStateChange","navigate","opened","skipEventBroadcast","link","isActive","activateTab","hash","isSubItem","axis","dictionary","scroller","ifhLoginDialog","showing","LoginController","AdminService","login","onError","msg","error","logIn","credentials","closePopUp","backdrop","target","parents","password","adminData","ifhClientLoader","ifhHeader","loginShowing","HeaderController","openLoginPopup","href","changeLang","lang","lang_chose","set","reload","languages","language_name","ifhFooter","FooterController","currentYear","ifhDirectorCard","DirectorController","director","$resource","onSuccess","response","success","loading","resource","lang_id","factory","$mdToast","successCallback","a","b","fetching","directors","advisers","person","method","addNewLines","proj","description","split","join","forEach","callback","LanguageService","add","update","remove","HttpInterceptors","$q","$injector","request","timeout","responseError","rejection","message","statusText","debug","show","simple","textContent","reject","service","DictionaryService","options","forClient","_dictionaryToObject","key","value","dataModel","showError","save","phone","email","question","slice","errCallback","res","role","user","redirectToAdmin","hostname","adminURL","ClientController","newValue","backDropToRight","scroll","selector","skipTimeout","runBlock","run","routerConfig","$stateProvider","$urlRouterProvider","abstract","otherwise","$logProvider","$httpProvider","uiGmapGoogleMapApiProvider","localStorageServiceProvider","debugEnabled","setPrefix","interceptors","defaults","withCredentials","headers","common","Accept","configure","v","constant","$templateCache","put"],"mappings":"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","file":"scripts/app-eb90d7cf47.js","sourcesContent":["(function () {\r\n 'use strict';\r\n\r\n var modules = [\r\n 'ifh.ENV',\r\n 'ngAnimate',\r\n 'ngMessages',\r\n 'ngSanitize',\r\n 'ngAria',\r\n 'ngResource',\r\n 'ui.router',\r\n 'ngMaterial',\r\n 'LocalStorageModule',\r\n 'ngScrollbars',\r\n 'duScroll',\r\n 'uiGmapgoogle-maps',\r\n 'slickCarousel'\r\n ];\r\n\r\n angular.module('ifh', modules);\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('TeamController', TeamController);\r\n\r\n /** @ngInject */\r\n function TeamController($scope, $rootScope, $timeout, StaffService) {\r\n var vm = this;\r\n\r\n vm.data = StaffService.getData();\r\n\r\n vm.memberDialog = {\r\n open: false\r\n };\r\n\r\n vm.getWidth = getWidth;\r\n vm.triggerMenuActiveLinkUpdate = triggerMenuActiveLinkUpdate;\r\n\r\n init();\r\n\r\n function init() {\r\n var destroyListener = $rootScope.$on('client.team-tab-change', function (event, tab) {\r\n vm.activeTab = tab;\r\n });\r\n\r\n $scope.$on('$destroy', destroyListener);\r\n\r\n vm.activeTab = vm.activeTab || 0;\r\n $timeout(triggerMenuActiveLinkUpdate, 500)\r\n }\r\n\r\n function getWidth(qty) {\r\n if (qty % 4 === 0) {\r\n return 25;\r\n } else if (qty % 3 === 0) {\r\n return 33;\r\n } else {\r\n return 25;\r\n }\r\n }\r\n\r\n function triggerMenuActiveLinkUpdate() {\r\n $rootScope.$broadcast('menu-link-change', {\r\n state: 'client.team',\r\n tab: vm.activeTab\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('StrategyController', StrategyController);\r\n\r\n /** @ngInject */\r\n function StrategyController() {\r\n //var vm = this;\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('ProjectsController', ProjectsController);\r\n\r\n /** @ngInject */\r\n function ProjectsController($scope, $rootScope, $timeout, ProjectsService) {\r\n var vm = this;\r\n\r\n vm.activeTab = 1;\r\n vm.data = ProjectsService.getData();\r\n\r\n vm.showCurrent = showCurrent;\r\n vm.showProjectTypeSelect = showProjectTypeSelect;\r\n vm.showFinishedProjects = showFinishedProjects;\r\n vm.triggerMenuActiveLinkUpdate = triggerMenuActiveLinkUpdate;\r\n\r\n init();\r\n\r\n function init() {\r\n var destroyListener = $rootScope.$on('client.projects-tab-change', function (event, tab) {\r\n vm.activeTab = tab;\r\n });\r\n\r\n $scope.$on('$destroy', destroyListener);\r\n\r\n vm.activeTab = vm.activeTab || 0;\r\n $timeout(triggerMenuActiveLinkUpdate, 500);\r\n }\r\n\r\n function showCurrent(type) {\r\n vm.currentProjects = vm.data.data.current[type].list;\r\n vm.currentType = type;\r\n vm.showCurrentList = true;\r\n }\r\n\r\n function showProjectTypeSelect() {\r\n vm.activeTab = 0;\r\n vm.showCurrentList = false;\r\n vm.currentType = undefined;\r\n vm.currentProjects = [];\r\n triggerMenuActiveLinkUpdate();\r\n }\r\n\r\n function showFinishedProjects() {\r\n vm.activeTab = 1;\r\n vm.showCurrentList = false;\r\n vm.currentType = undefined;\r\n vm.currentProjects = [];\r\n triggerMenuActiveLinkUpdate();\r\n }\r\n\r\n function triggerMenuActiveLinkUpdate() {\r\n $rootScope.$broadcast('menu-link-change', {\r\n state: 'client.projects',\r\n tab: vm.activeTab\r\n });\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('NewsController', NewsController);\r\n\r\n /** @ngInject */\r\n function NewsController($timeout, $window, $sce, NewsService, ENV) {\r\n var vm = this;\r\n\r\n vm.imgPrefix = ENV.api;\r\n vm.data = NewsService.getData();\r\n vm.config = {\r\n autoHideScrollbar: false,\r\n theme: 'minimal-dark',\r\n advanced: {\r\n updateOnContentResize: true\r\n },\r\n scrollInertia: 0\r\n };\r\n vm.newsDialog = {\r\n open: false\r\n };\r\n\r\n vm.setContent = setContent;\r\n vm.initContent = initContent;\r\n vm.trustSrc = trustSrc;\r\n\r\n function setContent(index, type) {\r\n setNewsData(index, type);\r\n\r\n if ($window.window.innerWidth < 960) {\r\n angular.element('body').addClass('no-scroll');\r\n vm.newsDialog.content = vm.activeNewsArticle;\r\n vm.newsDialog.open = true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function setNewsData(index, type) {\r\n var news = vm.data.data[type];\r\n var content, searchString, replaceString;\r\n\r\n if (!news || !news.length) {\r\n return;\r\n }\r\n\r\n vm.activeNewsArticle = angular.copy(news[index]);\r\n\r\n content = news[index].content || '';\r\n\r\n if ((vm.activeTab === 0 || vm.activeTab === 2) && content) {\r\n searchString = 'img src=\"/InterforumHoldings/';\r\n replaceString = 'img src=\"' + ENV.api + 'InterforumHoldings/';\r\n vm.activeNewsArticle.content = content.replace(searchString, replaceString);\r\n }\r\n\r\n vm.activeContentIndex = index;\r\n\r\n $timeout(function () {\r\n angular.element('.mCSB_container')[1].style.top = 0;\r\n });\r\n }\r\n\r\n function initContent(type) {\r\n var news = vm.data.data[type];\r\n\r\n if (news && news.length) {\r\n selectFirst();\r\n } else {\r\n NewsService.onFetch(selectFirst);\r\n }\r\n\r\n function selectFirst() {\r\n setNewsData(0, type);\r\n }\r\n }\r\n\r\n function trustSrc(src) {\r\n var addition = ENV.api === 'http://localhost:3003' ? ENV.api : $window.location.origin + ENV.api;\r\n addition += src;\r\n var url = 'http://docs.google.com/gview?url=' + addition + '&embedded=true';\r\n\r\n return $sce.trustAsResourceUrl(url);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('HomeController', HomeController);\r\n\r\n /** @ngInject */\r\n function HomeController($scope, $interval, $timeout, $window, ENV, StatsService, BannerService, localStorageService) {\r\n var vm = this;\r\n var i = 0;\r\n var count = 2;\r\n var current = 1;\r\n var next = 2;\r\n var destroySlider;\r\n vm.ua = localStorageService.get('lang_id') === '0';\r\n vm.en = localStorageService.get('lang_id') === '1' || localStorageService.get('lang_id') === null || localStorageService.get('lang_id') === undefined;\r\n vm.videoDialog = {\r\n open: false\r\n };\r\n\r\n vm.banners = BannerService.getData();\r\n vm.stats = StatsService.getData();\r\n vm.imgPrefix = ENV.api;\r\n\r\n vm.openVideoPopup = openVideoPopup;\r\n\r\n init();\r\n\r\n function slideBackground() {\r\n if (!i) {\r\n angular.element('.home-slider')\r\n .find('.next')\r\n .addClass('show slide-' + next);\r\n i = 1;\r\n } else {\r\n angular.element('.home-slider')\r\n .find('.next')\r\n .removeClass('show slide-' + next)\r\n .prev()\r\n .removeClass('slide-' + current)\r\n .addClass('slide-' + next);\r\n i = 0;\r\n current = (count > current) ? (current + 1) : 1;\r\n next = (count != next) ? (next + 1) : 1;\r\n }\r\n }\r\n\r\n function init() {\r\n BannerService.fetch();\r\n StatsService.fetch();\r\n\r\n $timeout(function () {\r\n destroySlider = $interval(slideBackground, 2500);\r\n\r\n $scope.$on('$destroy', function () {\r\n $interval.cancel(destroySlider);\r\n });\r\n }, 2500);\r\n }\r\n\r\n function openVideoPopup() {\r\n vm.videoDialog.open = true;\r\n vm.videoDialog.video = 'ss';\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('ContactUsController', ContactUsController);\r\n\r\n /** @ngInject */\r\n function ContactUsController($window, $timeout, ContactService, uiGmapIsReady, localStorageService) {\r\n var vm = this;\r\n\r\n vm.ua = localStorageService.get('lang_id') === '0';\r\n vm.en = localStorageService.get('lang_id') === '1';\r\n\r\n vm.data = ContactService.getData();\r\n\r\n vm.getInTouch = function () {\r\n vm.submitted = true;\r\n\r\n if (vm.form.$valid) {\r\n ContactService.getInTouch();\r\n }\r\n };\r\n\r\n vm.map = {\r\n center: {\r\n latitude: 42.107012,\r\n longitude: -87.772450\r\n },\r\n control: {},\r\n refresh: true,\r\n zoom: 18,\r\n marker: {\r\n idKey: 'marker1',\r\n coords: {\r\n latitude: 42.107012,\r\n longitude: -87.772450\r\n }\r\n }\r\n };\r\n\r\n\r\n uiGmapIsReady.promise(1).then(function () {\r\n var gmap = vm.map.control.getGMap();\r\n\r\n new $window.google.maps.Marker({\r\n position: {\r\n lat: 42.107012,\r\n lng: -87.772450\r\n },\r\n map: gmap,\r\n title: ''\r\n });\r\n $timeout(triggerResize, 2000);\r\n $timeout(triggerResize, 3000);\r\n $timeout(triggerResize, 5000);\r\n\r\n function triggerResize() {\r\n vm.map.control.refresh({\r\n latitude: 42.107012,\r\n longitude: -87.772450\r\n });\r\n $window.dispatchEvent(new Event('resize'));\r\n }\r\n\r\n\r\n\r\n });\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhVideoDialog', ifhVideoDialog);\r\n\r\n /** @ngInject */\r\n function ifhVideoDialog() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/video-dialog/video-dialog.html',\r\n scope: {\r\n data: '='\r\n },\r\n controller: ClientVideoDialogController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function ClientVideoDialogController() {\r\n var vm = this;\r\n\r\n vm.closeDialog = closeDialog;\r\n\r\n function closeDialog() {\r\n vm.data.open = false;\r\n angular.element('body').removeClass('no-scroll');\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhTeamMemberDialog', ifhTeamMemberDialog);\r\n\r\n /** @ngInject */\r\n function ifhTeamMemberDialog() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/team-member-dialog/team-member-dialog.html',\r\n scope: {\r\n data: '='\r\n },\r\n controller: TeamMemberController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function TeamMemberController($scope, $log, ENV, StaffService) {\r\n var vm = this;\r\n\r\n vm.imgPrefix = ENV.api;\r\n vm.staff = StaffService.getData();\r\n\r\n vm.closeDialog = closeDialog;\r\n vm.previous = previous;\r\n vm.next = next;\r\n\r\n init();\r\n\r\n function init() {\r\n var $destroy = $scope.$watch('vm.data.selectedID', updateDialog);\r\n $scope.$on('$destroy', $destroy);\r\n }\r\n\r\n function updateDialog(id, oldId) {\r\n var indexInManagers, indexInExecutives, index;\r\n\r\n if (!id) {\r\n return;\r\n }\r\n\r\n indexInExecutives = getIndex(id, vm.staff.executives);\r\n indexInManagers = getIndex(id, vm.staff.managers);\r\n\r\n if (indexInExecutives > -1) {\r\n vm.members = vm.staff.executives;\r\n index = indexInExecutives;\r\n } else if (indexInManagers > -1) {\r\n vm.members = vm.staff.managers;\r\n index = indexInManagers;\r\n }\r\n\r\n vm.currentMember = vm.members[index];\r\n vm.previous = vm.members[index - 1];\r\n vm.next = vm.members[index + 1];\r\n\r\n if (id && !oldId) {\r\n enableKeyListeners();\r\n }\r\n\r\n function getIndex(id, arr) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].id === id) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n function enableKeyListeners() {\r\n angular.element('body').on('keydown', onKeyDown);\r\n }\r\n }\r\n\r\n function previous() {\r\n $scope.$applyAsync(function () {\r\n if (vm.previous && vm.previous.id) {\r\n vm.data.selectedID = vm.previous.id;\r\n }\r\n });\r\n }\r\n\r\n function next() {\r\n $scope.$applyAsync(function () {\r\n if (vm.next && vm.next.id) {\r\n vm.data.selectedID = vm.next.id;\r\n }\r\n });\r\n }\r\n\r\n function onKeyDown(event) {\r\n if (event.keyCode === 37) {\r\n previous();\r\n } else if (event.keyCode === 39) {\r\n next();\r\n }\r\n }\r\n\r\n function closeDialog() {\r\n vm.data.open = false;\r\n vm.data.selectedID = null;\r\n angular.element('body').off('keydown', onKeyDown);\r\n angular.element('body').removeClass('no-scroll');\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhTeamMember', ifhTeamMember);\r\n\r\n /** @ngInject */\r\n function ifhTeamMember(ENV) {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/team-member/team-member.html',\r\n scope: {\r\n member: '=',\r\n dialogData: '='\r\n },\r\n controller: MemberController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function MemberController() {\r\n var vm = this;\r\n\r\n vm.imgPrefix = ENV.api;\r\n\r\n vm.openMemberDialog = openMemberDialog;\r\n\r\n function openMemberDialog() {\r\n angular.element('body').addClass('no-scroll');\r\n vm.dialogData.selectedID = vm.member.id;\r\n vm.dialogData.open = true;\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhSplitter', ifhSplitter);\r\n\r\n /** @ngInject */\r\n function ifhSplitter() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/splitter/splitter.html',\r\n scope: {\r\n type: '='\r\n },\r\n controller: SplitterController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n }\r\n\r\n function SplitterController() {\r\n //var vm = this;\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhProjectsTimeline', ifhProjectsTimeline);\r\n\r\n /** @ngInject */\r\n function ifhProjectsTimeline() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/projects-timeline/proejcts-timeline.html',\r\n scope: {\r\n projects: '='\r\n },\r\n controller: ProjectsTimelineController,\r\n controllerAs: 'timeline',\r\n bindToController: true\r\n };\r\n }\r\n\r\n function ProjectsTimelineController($scope, $document) {\r\n var vm = this;\r\n\r\n vm.data = [];\r\n\r\n vm.scrollTo = scrollTo;\r\n\r\n var $destroy = $scope.$watch('vm.projects', init);\r\n $scope.$on('$destroy', $destroy);\r\n\r\n function init() {\r\n var years = [];\r\n var tempMapping = {};\r\n\r\n if (!vm.projects) {\r\n return;\r\n }\r\n\r\n //get distinct years among all projects\r\n for (var i = 0, len = vm.projects.length; i < len; i++) {\r\n var project = vm.projects[i];\r\n var year = (project.year || new Date(project.date).getFullYear()).toString();\r\n\r\n if (years.indexOf(year) === -1) {\r\n years.push(year);\r\n }\r\n\r\n tempMapping[year] = tempMapping[year] || {projects: []};\r\n tempMapping[year].projects.push(project);\r\n }\r\n\r\n //sort years chronologically\r\n years.sort();\r\n\r\n //find corresponding projects for each year and build an object like {'1997': {projects: [{}, {}]}}\r\n for (var j = 0, l = years.length; j < l; j++) {\r\n vm.data.push({\r\n year: years[j],\r\n projects: tempMapping[years[j]].projects\r\n });\r\n }\r\n }\r\n\r\n function scrollTo(year) {\r\n var wrapper = $document.find('.year' + year);\r\n $document.duScrollToElementAnimated(wrapper, 0, 600);\r\n }\r\n\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhProjectDialog', ifhNewsDialog);\r\n\r\n /** @ngInject */\r\n function ifhNewsDialog() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/project-dialog/project-dialog.html',\r\n scope: {\r\n data: '='\r\n },\r\n controller: ClientProjectDialogController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function ClientProjectDialogController($scope, ENV, ProjectsService) {\r\n var vm = this;\r\n\r\n vm.imgPrefix = ENV.api;\r\n vm.projectsList = ProjectsService.getData();\r\n\r\n vm.closeDialog = closeDialog;\r\n\r\n init();\r\n\r\n function init() {\r\n var $destroy = $scope.$watch('vm.data.selectedID', updateDialog);\r\n $scope.$on('$destroy', $destroy);\r\n }\r\n\r\n function updateDialog(id, oldId) {\r\n var indexInCompleted, indexInCurrent, index, position;\r\n vm.data.project = {\r\n images: false\r\n };\r\n\r\n if (!id) {\r\n return;\r\n }\r\n\r\n indexInCompleted = getIndex(id, vm.projectsList.data.completed);\r\n\r\n for (var i = 0; i < vm.projectsList.data.current.length; i++) {\r\n var result = getIndex(id, vm.projectsList.data.current[i].list);\r\n if (result > -1) {\r\n indexInCurrent = result;\r\n position = i;\r\n }\r\n\r\n }\r\n\r\n if (indexInCompleted > -1) {\r\n vm.data.projectsList = vm.projectsList.data.completed;\r\n index = indexInCompleted;\r\n } else if (indexInCurrent > -1) {\r\n vm.data.projectsList = vm.projectsList.data.current[position].list;\r\n index = indexInCurrent;\r\n }\r\n\r\n $scope.$applyAsync(function () {\r\n vm.data.project = vm.data.projectsList[index];\r\n vm.data.project.numberLoaded = true;\r\n vm.data.previous = vm.data.projectsList[index - 1];\r\n vm.data.next = vm.data.projectsList[index + 1];\r\n });\r\n\r\n\r\n if (id && !oldId) {\r\n enableKeyListeners();\r\n }\r\n\r\n function getIndex(id, arr) {\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].id === id) {\r\n return i;\r\n }\r\n }\r\n\r\n return -1;\r\n }\r\n\r\n function enableKeyListeners() {\r\n angular.element('body').on('keydown', onKeyDown);\r\n }\r\n }\r\n\r\n function previous() {\r\n $scope.$applyAsync(function () {\r\n if (vm.previous && vm.previous.id) {\r\n vm.data.selectedID = vm.data.previous.id;\r\n }\r\n });\r\n }\r\n\r\n function next() {\r\n $scope.$applyAsync(function () {\r\n if (vm.next && vm.next.id) {\r\n vm.data.selectedID = vm.data.next.id;\r\n }\r\n });\r\n }\r\n\r\n function onKeyDown(event) {\r\n if (event.keyCode === 37) {\r\n previous();\r\n } else if (event.keyCode === 39) {\r\n next();\r\n }\r\n }\r\n\r\n function closeDialog() {\r\n vm.data.open = false;\r\n angular.element('.js-dialog-content').scrollTop(0);\r\n angular.element('body').removeClass('no-scroll');\r\n angular.element('body').off('keydown', onKeyDown);\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhProjectCardCompleted', ifhProjectCardCompleted);\r\n\r\n /** @ngInject */\r\n function ifhProjectCardCompleted() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/project-card-completed/project-card-completed.html',\r\n scope: {\r\n project: '='\r\n },\r\n controller: ProjectCardCompletedController,\r\n controllerAs: 'projectCardCompleted',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function ProjectCardCompletedController(ENV, $timeout) {\r\n var vm = this;\r\n\r\n vm.openDialog = openDialog;\r\n\r\n $timeout(_generateRandomImage, 1000);\r\n\r\n vm.projectDialog = {\r\n open: false\r\n };\r\n\r\n function openDialog() {\r\n angular.element('body').addClass('no-scroll');\r\n vm.projectDialog.open = true;\r\n vm.projectDialog.selectedID = vm.project.id;\r\n }\r\n\r\n function _generateRandomImage() {\r\n var noImageAvailable = 'assets/images/no-thumbnail.png';\r\n var project = vm.project;\r\n var images = project.images;\r\n var qty = images && images.length;\r\n var random;\r\n\r\n if (!project.thumbnail && !qty) {\r\n project.timelineImg = noImageAvailable;\r\n } else if (project.thumbnail && !qty) {\r\n project.timelineImg = '/personal-area' + project.thumbnail;\r\n project.images = ['/personal-area' + project.thumbnail];\r\n } else if (project.thumbnail && qty) {\r\n project.timelineImg = '/personal-area' + project.thumbnail;\r\n } else {\r\n random = Math.floor(Math.random() * qty);\r\n project.timelineImg = ENV.api + images[random] || noImageAvailable;\r\n }\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhProjectCard', ifhProjectCard);\r\n\r\n /** @ngInject */\r\n function ifhProjectCard() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/project-card/project-card.html',\r\n scope: {\r\n project: '='\r\n },\r\n controller: ProjectCardController,\r\n controllerAs: 'projectCard',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function ProjectCardController(ENV, $timeout) {\r\n var vm = this;\r\n\r\n vm.openDialog = openDialog;\r\n\r\n $timeout(_generateRandomImage, 10);\r\n\r\n vm.projectDialog = {\r\n open: false\r\n };\r\n\r\n function openDialog() {\r\n angular.element('body').addClass('no-scroll');\r\n vm.projectDialog.open = true;\r\n vm.projectDialog.selectedID = vm.project.id;\r\n }\r\n\r\n function _generateRandomImage() {\r\n var noImageAvailable = 'assets/images/no-thumbnail.png';\r\n var project = vm.project;\r\n var images = project.images;\r\n var qty = images && images.length;\r\n var random;\r\n\r\n if (!project.thumbnail && !qty) {\r\n project.timelineImg = noImageAvailable;\r\n } else if (project.thumbnail && !qty) {\r\n project.timelineImg = ENV.api + '/InterforumHoldings' + project.thumbnail;\r\n project.images = ['/InterforumHoldings' + project.thumbnail];\r\n } else if (project.thumbnail && qty) {\r\n project.timelineImg = ENV.api + '/InterforumHoldings' + project.thumbnail;\r\n } else {\r\n random = Math.floor(Math.random() * qty);\r\n project.timelineImg = ENV.api + images[random] || noImageAvailable;\r\n }\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhNewsDialog', ifhNewsDialog);\r\n\r\n /** @ngInject */\r\n function ifhNewsDialog() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/news-dialog/news-dialog.html',\r\n scope: {\r\n data: '='\r\n },\r\n controller: ClientNewsDialogController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function ClientNewsDialogController() {\r\n var vm = this;\r\n\r\n vm.closeDialog = closeDialog;\r\n\r\n function closeDialog() {\r\n vm.data.open = false;\r\n angular.element('#news-dialog-content').scrollTop(0);\r\n angular.element('body').removeClass('no-scroll');\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhNewsCategories', ifhNewsCategories);\r\n\r\n /** @ngInject */\r\n function ifhNewsCategories() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/news-categories/news-categories.html',\r\n controller: NewsCategoriesController,\r\n controllerAs: 'vm'\r\n };\r\n }\r\n\r\n function NewsCategoriesController($state, $rootScope) {\r\n var vm = this;\r\n\r\n vm.activeState = $state.current.name;\r\n vm.changeType = changeType;\r\n\r\n vm.links = [\r\n // {\r\n // state: 'client.press-releases',\r\n // text: 'menuReleases'\r\n // },\r\n {\r\n state: 'client.publications',\r\n text: 'menuPublications'\r\n },\r\n {\r\n state: 'client.archive',\r\n text: 'menuArchive'\r\n },\r\n {\r\n state: 'client.testimonials',\r\n text: 'menuTestimonials'\r\n }\r\n ];\r\n\r\n function changeType(state) {\r\n angular.element('body')[0].scrollTop = 0;\r\n $state.go(state);\r\n }\r\n\r\n /*eslint-disable */\r\n $rootScope.$on('$stateChangeSuccess', function (event, toState) {\r\n /*eslint-enable */\r\n vm.activeState = toState.name;\r\n });\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhMenuToggle', ifhMenuToggle);\r\n\r\n /** @ngInject */\r\n function ifhMenuToggle() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/menu-toggle/menu-toggle.html',\r\n scope: {\r\n menuOpened: '='\r\n },\r\n controller: MenuToggleController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n }\r\n\r\n function MenuToggleController() {\r\n var vm = this;\r\n var $body = angular.element('body');\r\n\r\n vm.toggleMenu = toggleMenu;\r\n\r\n function toggleMenu() {\r\n if (vm.menuOpened) {\r\n closeMenu();\r\n } else {\r\n openMenu();\r\n }\r\n }\r\n\r\n function openMenu() {\r\n vm.menuOpened = true;\r\n $body.addClass('no-scroll');\r\n }\r\n\r\n function closeMenu() {\r\n vm.menuOpened = false;\r\n $body.removeClass('no-scroll');\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhMenu', ifhMenu);\r\n\r\n /** @ngInject */\r\n function ifhMenu() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/menu/menu.html',\r\n scope: {\r\n opened: '=',\r\n dictionary: '=',\r\n scroller: '='\r\n },\r\n controller: MenuController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function MenuController($rootScope, $scope, $state, $timeout, $location) {\r\n var vm = this;\r\n\r\n vm.links = [\r\n {\r\n state: 'client.home',\r\n text: 'menuHome',\r\n isSubItem: false\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock1',\r\n isSubItem: true,\r\n activateTab: 'lang-home-1'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock2',\r\n isSubItem: true,\r\n activateTab: 'lang-home-2'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock3',\r\n isSubItem: true,\r\n activateTab: 'lang-home-3'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock4',\r\n isSubItem: true,\r\n activateTab: 'lang-home-4'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock5',\r\n isSubItem: true,\r\n activateTab: 'lang-home-5'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock6',\r\n isSubItem: true,\r\n activateTab: 'lang-home-6'\r\n },\r\n {\r\n state: 'client.home',\r\n text: 'menuHomeBlock7',\r\n isSubItem: true,\r\n activateTab: 'lang-home-7'\r\n },\r\n {\r\n state: 'client.team',\r\n text: 'menuTeam',\r\n isSubItem: false\r\n },\r\n // {\r\n // state: 'client.team',\r\n // text: 'menuAdvisers',\r\n // isSubItem: true,\r\n // activateTab: 0\r\n // },\r\n // {\r\n // state: 'client.team',\r\n // text: 'menuManagers',\r\n // isSubItem: true,\r\n // activateTab: 1\r\n // },\r\n // {\r\n // state: 'client.team',\r\n // text: 'menuDirectors',\r\n // isSubItem: true,\r\n // activateTab: 2\r\n // },\r\n // {\r\n // state: 'client.strategy',\r\n // text: 'menuInvestmentStrategy',\r\n // isSubItem: false\r\n // },\r\n // {\r\n // state: 'client.projects',\r\n // text: 'menuProjectsCurrent',\r\n // isSubItem: true,\r\n // activateTab: 0\r\n // },\r\n // {\r\n // state: 'client.projects',\r\n // text: 'menuProjectsFinished',\r\n // isSubItem: true,\r\n // activateTab: 1\r\n // },\r\n // {\r\n // state: 'client.news',\r\n // text: 'menuTestimonials',\r\n // // text: 'menuNewsRoom',\r\n // isSubItem: false\r\n // },\r\n // {\r\n // state: 'client.press-releases',\r\n // text: 'menuReleases',\r\n // isSubItem: true\r\n // },\r\n // {\r\n // state: 'client.publications',\r\n // text: 'menuPublications',\r\n // isSubItem: true\r\n // },\r\n // {\r\n // state: 'client.archive',\r\n // text: 'menuArchive',\r\n // isSubItem: true\r\n // },\r\n // {\r\n // state: 'client.testimonials',\r\n // text: 'menuTestimonials',\r\n // isSubItem: true\r\n // },\r\n {\r\n state: 'client.contact-us',\r\n text: 'menuContactUs',\r\n isSubItem: false\r\n }\r\n ];\r\n\r\n vm.config = {\r\n autoHideScrollbar: false,\r\n theme: 'minimal-dark',\r\n axis: 'y',\r\n advanced: {\r\n updateOnContentResize: true\r\n },\r\n scrollInertia: 0\r\n };\r\n\r\n vm.navigate = navigate;\r\n\r\n init();\r\n\r\n function init() {\r\n onStateChange($state.current.name);\r\n\r\n var destroyListener = $rootScope.$on('menu-link-change', function (event, data) {\r\n onStateChange(data.state, data.tab, true);\r\n });\r\n\r\n $scope.$on('$destroy', destroyListener);\r\n }\r\n\r\n function navigate(state, tab) {\r\n var $body = angular.element('body');\r\n\r\n vm.opened = false;\r\n $body.removeClass('no-scroll');\r\n\r\n $state.go(state);\r\n $body[0].scrollTop = 0;\r\n\r\n $timeout(function () {\r\n onStateChange(state, tab);\r\n }, 300);\r\n }\r\n\r\n function onStateChange(state, tab, skipEventBroadcast) {\r\n for (var i = 0; i < vm.links.length; i++) {\r\n var link = vm.links[i];\r\n\r\n link.isActive = link.state === state && link.activateTab === tab;\r\n\r\n if (link.isActive && (tab || tab === 0) && !skipEventBroadcast) {\r\n $rootScope.$broadcast(state + '-tab-change', tab);\r\n }\r\n }\r\n\r\n if(tab !== undefined && tab.indexOf('lang-') !== -1) {\r\n $location.hash('#' + tab);\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhLoginDialog', ifhLoginDialog);\r\n\r\n /** @ngInject */\r\n function ifhLoginDialog() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/login-dialog/login-dialog.html',\r\n scope: {\r\n showing: '='\r\n },\r\n controller: LoginController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n }\r\n\r\n /** @ngInject */\r\n function LoginController($timeout, AdminService) {\r\n var vm = this;\r\n\r\n vm.credentials = {\r\n login: '',\r\n password: ''\r\n };\r\n vm.adminData = AdminService.getData();\r\n\r\n vm.login = login;\r\n vm.closePopUp = closePopUp;\r\n\r\n function login() {\r\n vm.error = '';\r\n\r\n AdminService.logIn(vm.credentials, onError);\r\n\r\n function onError(msg) {\r\n vm.error = msg;\r\n }\r\n }\r\n\r\n function closePopUp(event) {\r\n var backdrop;\r\n\r\n if (angular.element(event.target).parents('form').length) {\r\n return;\r\n }\r\n\r\n backdrop = angular.element('.backdrop');\r\n backdrop.addClass('opaque');\r\n\r\n $timeout(function () {\r\n angular.element('body').removeClass('no-scroll');\r\n vm.showing = false;\r\n\r\n $timeout(function () {\r\n backdrop.removeClass('opaque');\r\n });\r\n }, 300);\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhClientLoader', ifhClientLoader);\r\n\r\n /** @ngInject */\r\n function ifhClientLoader() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/loader/loader.html',\r\n scope: {}\r\n };\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhHeader', ifhHeader);\r\n\r\n /** @ngInject */\r\n function ifhHeader() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/header/header.html',\r\n scope: {\r\n menuOpened: '=',\r\n dictionary: '=',\r\n loginShowing: '='\r\n },\r\n controller: HeaderController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n }\r\n\r\n function HeaderController($window, localStorageService) {\r\n var vm = this;\r\n\r\n vm.lang_chose = localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\";\r\n vm.languages = {\"languages\":[{\"id\":0,\"language_name\":\"UA\"},{\"id\":1,\"language_name\":\"EN\"}]};\r\n localStorageService.set('lang_id', vm.lang_chose);\r\n\r\n vm.changeLang = changeLang;\r\n vm.openLoginPopup = openLoginPopup;\r\n\r\n function openLoginPopup() {\r\n // angular.element('body').addClass('no-scroll');\r\n // vm.loginShowing = true;\r\n $window.location.href = $window.location.origin + '/personal-area/'\r\n }\r\n\r\n function changeLang(lang) {\r\n vm.lang_chose = lang;\r\n localStorageService.set('lang_id', vm.lang_chose);\r\n location.reload();\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhFooter', ifhFooter);\r\n\r\n /** @ngInject */\r\n function ifhFooter() {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/footer/footer.html',\r\n controller: FooterController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n }\r\n\r\n function FooterController() {\r\n var vm = this;\r\n\r\n vm.currentYear = new Date().getFullYear();\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .directive('ifhDirectorCard', ifhDirectorCard);\r\n\r\n /** @ngInject */\r\n function ifhDirectorCard(ENV) {\r\n return {\r\n restrict: 'E',\r\n templateUrl: 'app/components/director-card/director-card.html',\r\n scope: {\r\n director: '='\r\n },\r\n controller: DirectorController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n /** @ngInject */\r\n function DirectorController() {\r\n var vm = this;\r\n\r\n vm.imgPrefix = ENV.api;\r\n }\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('StatsService', StatsService);\r\n\r\n /** @ngInject */\r\n function StatsService($resource, ENV, localStorageService) {\r\n var data = {\r\n loading: false,\r\n data: []\r\n };\r\n var resource = $resource(ENV.api + '/stats');\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch() {\r\n data.loading = true;\r\n\r\n resource.get({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n if (!response.success) {\r\n onError();\r\n }\r\n\r\n data.data = response.data;\r\n data.loading = false;\r\n }\r\n\r\n function onError() {\r\n data.loading = false;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('StaffService', StaffService);\r\n\r\n /** @ngInject */\r\n function StaffService($resource, $mdToast, ENV, localStorageService) {\r\n var data = {\r\n loading: false,\r\n managers: [],\r\n advisers: [],\r\n directors: []\r\n };\r\n var resource = $resource(ENV.api + '/staff/:id', null,\r\n {\r\n fetch: {\r\n method: 'GET'\r\n }\r\n });\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch(successCallback) {\r\n data.fetching = true;\r\n resource.fetch({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n data.fetching = false;\r\n\r\n if (!response.success) {\r\n onError();\r\n return;\r\n }\r\n\r\n data.executives = [];\r\n data.managers = [];\r\n data.directors = [];\r\n data.advisers = [];\r\n\r\n for (var i = 0, arr = response.data, len = arr.length; i < len; i++) {\r\n var person = arr[i];\r\n\r\n switch (person.type) {\r\n case 0:\r\n data.managers.push(person);\r\n break;\r\n case 1:\r\n data.executives.push(person);\r\n break;\r\n case 2:\r\n data.directors.push(person);\r\n break;\r\n case 3:\r\n data.advisers.push(person);\r\n }\r\n }\r\n\r\n data.executives.sort(sort);\r\n data.managers.sort(sort);\r\n data.directors.sort(sort);\r\n data.advisers.sort(sort);\r\n\r\n function sort(a, b) {\r\n return a.position - b.position;\r\n }\r\n\r\n successCallback && successCallback();\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('ProjectsService', ProjectsService);\r\n\r\n /** @ngInject */\r\n function ProjectsService($resource, ENV, localStorageService) {\r\n var data = {\r\n fetching: false,\r\n data: {}\r\n };\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch(successCallback) {\r\n data.fetching = true;\r\n $resource(ENV.api + '/projects').get({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n var current, completed;\r\n\r\n data.fetching = false;\r\n\r\n if (!response.success) {\r\n onError();\r\n return;\r\n }\r\n\r\n current = response.data.current;\r\n completed = response.data.completed;\r\n\r\n completed.forEach(addNewLines);\r\n current.forEach(function (type) {\r\n type.list.forEach(addNewLines);\r\n });\r\n\r\n data.data = response.data;\r\n successCallback && successCallback();\r\n\r\n function addNewLines(proj) {\r\n if (proj.description) {\r\n proj.description = proj.description.split('\\n').join('
');\r\n }\r\n }\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('NewsService', NewsService);\r\n\r\n /** @ngInject */\r\n function NewsService($resource, ENV, localStorageService) {\r\n var data = {\r\n loading: false,\r\n data: {}\r\n };\r\n var resource = $resource(ENV.api + '/news/:id', null,\r\n {\r\n fetch: {\r\n method: 'GET'\r\n }\r\n });\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch,\r\n onFetch: onFetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch(successCallback) {\r\n data.fetching = true;\r\n resource.fetch({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n data.fetching = false;\r\n\r\n if (!response.success) {\r\n onError();\r\n return;\r\n }\r\n\r\n data.data = response.data;\r\n\r\n // if (data.data.testimonials && data.data.testimonials.length > 1) {\r\n // data.data.testimonials.reverse();\r\n // }\r\n\r\n successCallback && successCallback();\r\n\r\n data.onFetch && data.onFetch();\r\n delete data.onFetch;\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n }\r\n }\r\n\r\n function onFetch(callback) {\r\n data.onFetch = callback;\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('LanguageService', LanguageService);\r\n\r\n /** @ngInject */\r\n function LanguageService($resource, $mdToast, ENV) {\r\n var data = {\r\n loading: false,\r\n languages: []\r\n };\r\n var resource = $resource(ENV.api + '/language/:id', null,\r\n {\r\n fetch: {\r\n method: 'GET'\r\n },\r\n add: {\r\n method: 'POST'\r\n },\r\n update: {\r\n method: 'PUT'\r\n },\r\n remove: {\r\n method: 'DELETE'\r\n }\r\n });\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch(successCallback) {\r\n data.fetching = true;\r\n resource.fetch(onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n data.fetching = false;\r\n data.languages = response.data;\r\n\r\n if (!response.success) {\r\n onError();\r\n return;\r\n }\r\n successCallback && successCallback();\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n }\r\n }\r\n\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .service('HttpInterceptors', HttpInterceptors);\r\n\r\n /** @ngInject */\r\n function HttpInterceptors($q, $log, $injector) {\r\n\r\n return {\r\n request: function (config) {\r\n config.timeout = 15000;\r\n return config;\r\n },\r\n\r\n response: function (response) {\r\n return response;\r\n },\r\n\r\n responseError: function (rejection) {\r\n var $mdToast = $injector.get('$mdToast');\r\n var msg = rejection.data && rejection.data.error && rejection.data.error.message || rejection.statusText || 'Unknown Error';\r\n\r\n $log.debug('XHR rejection: ', rejection);\r\n $mdToast.show($mdToast.simple().textContent(msg).position('top right'));\r\n\r\n return $q.reject(rejection);\r\n }\r\n };\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('DictionaryService', DictionaryService);\r\n\r\n /** @ngInject */\r\n function DictionaryService($resource, $timeout, ENV, localStorageService) {\r\n var data = {\r\n loading: false,\r\n data: {}\r\n };\r\n var resource = $resource(ENV.api + '/dictionary');\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch(options) {\r\n data.fetching = true;\r\n\r\n resource.get({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n if (!response.success) {\r\n onError();\r\n }\r\n\r\n if (options && options.forClient) {\r\n _dictionaryToObject(response.data);\r\n } else {\r\n data.data = response.data;\r\n }\r\n\r\n if (options && options.forClient) {\r\n $timeout(function () {\r\n data.fetching = false;\r\n }, 1000);\r\n } else {\r\n data.fetching = false;\r\n }\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n }\r\n }\r\n\r\n function _dictionaryToObject(dictionary) {\r\n data.data = {};\r\n\r\n for (var i = 0, len = dictionary.length; i < len; i++) {\r\n data.data[dictionary[i].key] = dictionary[i].value;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('ContactService', ContactService);\r\n\r\n /** @ngInject */\r\n function ContactService($resource, ENV) {\r\n var dataModel = {\r\n name: '',\r\n phone: '',\r\n email: '',\r\n question: ''\r\n };\r\n\r\n var data = {\r\n data: angular.copy(dataModel),\r\n submitted: false,\r\n loading: false\r\n };\r\n\r\n return {\r\n getData: getData,\r\n getInTouch: getInTouch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function getInTouch() {\r\n data.fetching = true;\r\n data.showError = false;\r\n\r\n $resource(ENV.api + '/email').save(data.data, onSuccess, onError);\r\n\r\n function onSuccess() {\r\n data.fetching = false;\r\n data.submitted = true;\r\n data.data = angular.copy(dataModel);\r\n }\r\n\r\n function onError() {\r\n data.fetching = false;\r\n data.showError = true;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('BannerService', BannerService);\r\n\r\n /** @ngInject */\r\n function BannerService($resource, ENV, localStorageService) {\r\n var data = {\r\n loading: false,\r\n data: []\r\n };\r\n var resource = $resource(ENV.api + '/banner');\r\n\r\n return {\r\n getData: getData,\r\n fetch: fetch\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function fetch() {\r\n data.loading = true;\r\n\r\n resource.get({lang_id: localStorageService.get('lang_id') ? localStorageService.get('lang_id') : \"1\"}, onSuccess, onError);\r\n\r\n function onSuccess(response) {\r\n if (!response.success) {\r\n onError();\r\n }\r\n\r\n data.data = response.data.slice(0,3);\r\n data.loading = false;\r\n }\r\n\r\n function onError() {\r\n data.loading = false;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .factory('AdminService', AdminService);\r\n\r\n /** @ngInject */\r\n function AdminService($resource, $window, ENV) {\r\n var data = {\r\n loading: false\r\n };\r\n\r\n return {\r\n getData: getData,\r\n logIn: logIn\r\n };\r\n\r\n function getData() {\r\n return data;\r\n }\r\n\r\n function logIn(credentials, errCallback) {\r\n if (ENV.name === 'local') {\r\n redirectToAdmin();\r\n return;\r\n }\r\n\r\n data.loading = true;\r\n $resource(ENV.api + '/login').save(credentials, onSuccess, onError);\r\n\r\n function onSuccess(res) {\r\n var role = res && res.user && res.user.role;\r\n\r\n if (!res.success || !role) {\r\n onError();\r\n return;\r\n }\r\n\r\n data.loading = false;\r\n redirectToAdmin();\r\n }\r\n\r\n function onError(res) {\r\n var msg = res && res.data && res.data.error && res.data.error.message ||\r\n 'Unknown error has occurred. Please try again in a little while.';\r\n\r\n errCallback && errCallback(msg);\r\n data.loading = false;\r\n }\r\n\r\n function redirectToAdmin() {\r\n $window.location = 'http://' + $window.location.hostname + ENV.adminURL;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .controller('ClientController', ClientController);\r\n\r\n /** @ngInject */\r\n function ClientController($scope, $document, $timeout, DictionaryService, StaffService, NewsService, ProjectsService) {\r\n var vm = this;\r\n\r\n vm.dictionary = DictionaryService.getData();\r\n vm.menuOpened = false;\r\n vm.loginShowing = false;\r\n vm.scroller = {\r\n scroll: function (selector, tab, skipTimeout) {\r\n var wrapper = $document.find(selector);\r\n\r\n if (skipTimeout) {\r\n scroll();\r\n } else {\r\n $timeout(scroll, 300);\r\n }\r\n\r\n function scroll() {\r\n $document.duScrollToElementAnimated(wrapper, 0, 1000);\r\n }\r\n }\r\n };\r\n\r\n vm.closeMenu = closeMenu;\r\n\r\n init();\r\n\r\n function init() {\r\n var destroyListener = $scope.$watch('client.menuOpened', function (newValue) {\r\n if (newValue) {\r\n vm.backDropToRight = true;\r\n } else {\r\n $timeout(function () {\r\n vm.backDropToRight = false;\r\n }, 400);\r\n }\r\n });\r\n $scope.$on('$destroy', destroyListener);\r\n\r\n DictionaryService.fetch({forClient: true});\r\n StaffService.fetch();\r\n NewsService.fetch();\r\n }\r\n\r\n function closeMenu() {\r\n vm.menuOpened = false;\r\n angular.element('body').removeClass('no-scroll');\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .run(runBlock);\r\n\r\n /** @ngInject */\r\n function runBlock($log) {\r\n $log.debug('Debug enabled, runBlock end.');\r\n }\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .config(routerConfig);\r\n\r\n /** @ngInject */\r\n function routerConfig($stateProvider, $urlRouterProvider) {\r\n $stateProvider\r\n .state('client', {\r\n url: '',\r\n abstract: true,\r\n templateUrl: 'app/pages/client.html',\r\n controller: 'ClientController',\r\n controllerAs: 'client'\r\n })\r\n .state('client.home', {\r\n url: '/home',\r\n templateUrl: 'app/pages/home/home.html',\r\n controller: 'HomeController',\r\n controllerAs: 'home'\r\n })\r\n .state('client.team', {\r\n url: '/team',\r\n templateUrl: 'app/pages/team/team.html',\r\n controller: 'TeamController',\r\n controllerAs: 'team'\r\n })\r\n // .state('client.strategy', {\r\n // url: '/investment-strategy',\r\n // templateUrl: 'app/pages/strategy/strategy.html',\r\n // controller: 'StrategyController',\r\n // controllerAs: 'strategy'\r\n // })\r\n .state('client.projects', {\r\n url: '/projects',\r\n templateUrl: 'app/pages/projects/projects.html',\r\n controller: 'ProjectsController',\r\n controllerAs: 'projects'\r\n })\r\n .state('client.news', {\r\n url: '/news',\r\n // templateUrl: 'app/pages/news/news.html',\r\n // controller: 'NewsController',\r\n templateUrl: 'app/pages/news/testimonials/testimonials.html',\r\n controller: 'NewsController',\r\n controllerAs: 'news'\r\n })\r\n // .state('client.press-releases', {\r\n // url: '/news/press-releases',\r\n // templateUrl: 'app/pages/news/press-releases/press-releases.html',\r\n // controller: 'NewsController',\r\n // controllerAs: 'news'\r\n // })\r\n // .state('client.publications', {\r\n // url: '/news/publications',\r\n // templateUrl: 'app/pages/news/publications/publications.html',\r\n // controller: 'NewsController',\r\n // controllerAs: 'news'\r\n // })\r\n // .state('client.archive', {\r\n // url: '/news/archive',\r\n // templateUrl: 'app/pages/news/archive/archive.html',\r\n // controller: 'NewsController',\r\n // controllerAs: 'news'\r\n // })\r\n // .state('client.testimonials', {\r\n // url: '/news/testimonials',\r\n // templateUrl: 'app/pages/news/testimonials/testimonials.html',\r\n // controller: 'NewsController',\r\n // controllerAs: 'news'\r\n // })\r\n .state('client.contact-us', {\r\n url: '/contact-us',\r\n templateUrl: 'app/pages/contact-us/contact-us.html',\r\n controller: 'ContactUsController',\r\n controllerAs: 'contactUs'\r\n });\r\n\r\n $urlRouterProvider.otherwise('/home');\r\n }\r\n\r\n})();\r\n\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh');\r\n //.constant();\r\n\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('ifh')\r\n .config(config);\r\n\r\n /** @ngInject */\r\n function config($logProvider, $httpProvider, ENV, uiGmapGoogleMapApiProvider, localStorageServiceProvider) {\r\n // Enable log\r\n $logProvider.debugEnabled(ENV.debugEnabled);\r\n\r\n localStorageServiceProvider.setPrefix('ifh');\r\n\r\n $httpProvider.interceptors.push('HttpInterceptors');\r\n\r\n $httpProvider.defaults.withCredentials = true;\r\n $httpProvider.defaults.headers.common.Accept = 'application/json';\r\n $httpProvider.defaults.headers.common['Content-Type'] = 'application/json';\r\n $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';\r\n\r\n uiGmapGoogleMapApiProvider.configure({\r\n key: 'AIzaSyBsZLlZ9j9bwOuAvOisoTOFoCg0yNwR3TY',\r\n v: '3.22'\r\n });\r\n }\r\n\r\n})();\r\n\nangular.module(\"ifh.ENV\", [])\n.constant(\"ENV\", {\"name\":\"prod\",\"api\":\"/api\",\"adminURL\":\"/admin\",\"debugEnabled\":false});\n\nangular.module(\"ifh\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/pages/client.html\",\"
{{::projectCard.project.name}}
View project
{{::projectCardCompleted.project.name}}
{{::client.dictionary.data.contactCompanyName}}, {{contactUs.ua ? \\'Київ\\' : \\'Kyiv\\'}}
{{::client.dictionary.data.contactAddress}}
{{contactUs.ua ? \\'Телефон:\\' : \\'Phone:\\'}} {{::client.dictionary.data.contactPhone}}
{{contactUs.ua ? \\'Факс:\\' : \\'Fax:\\'}} {{::client.dictionary.data.contactFax}}
{{::client.dictionary.data.contactCompanyName}}, Рахів
90625, Закарпатська область, м.Рахів, вул. Привокзальна,13
{{::client.dictionary.data.contactCompanyName}}, Rakhiv
13 Pryvokzalna street, Rakhiv town, Transcarpathian oblast, 90625, Ukraine
{{::client.dictionary.data.contactFormSubmittedMessage}}
{{::client.dictionary.data.contactFormSubTitle}}
{{::client.dictionary.data.aboutText}}
Категорія | Рудна маса (т) | Марка (г/т) | Au (т) |
---|---|---|---|
Оцінені | 1 210 687.25 | 6.20 | 7.50 |
Передбачувані | 2 988 659.32 | 7.94 | 23.73 |
Вього | 4 199 346.57 | 31.23 |
fresh air hole | Tunnel No.2 |
exhausted air crushing & processing plant | Transport slope No.2 |
direction of mine water pumping Tunnel No.3a | Transport slope No.1 |
Transport slope No.1 | Tunnel No.3b |
Category | Ore Mass (t) | Grade (g/t) | Au (t) |
---|---|---|---|
Measured | 1 210 687.25 | 6.20 | 7.50 |
Inferred | 2 988 659.32 | 7.94 | 23.73 |
Grand Total | 4 199 346.57 | 31.23 |
fresh air hole | Tunnel No.2 |
exhausted air crushing & processing plant | Transport slope No.2 |
direction of mine water pumping Tunnel No.3a | Transport slope No.1 |
Transport slope No.1 | Tunnel No.3b |
{{::client.dictionary.data.investmentText}}
{{::client.dictionary.data.investmentLocation}}
{{::client.dictionary.data.investmentStructure}}
{{::client.dictionary.data.investmentRelationships}}
{{::client.dictionary.data.investmentType}}
{{::newsArticle.date | date:\\'MM/dd/yyyy\\'}}
{{::newsArticle.name}}
{{::newsArticle.date | date:\\'MM/dd/yyyy\\'}}
{{::newsArticle.name}}
{{::newsArticle.date | date:\\'MM/dd/yyyy\\'}}
{{::newsArticle.name}}
{{news.activeNewsArticle.name}}
{{::newsArticle.date | date:\\'MM/dd/yyyy\\'}}
{{::newsArticle.name}}
{{news.activeNewsArticle.name}}