{"version":3,"sources":["scripts/app-30e73fe526.js"],"names":["angular","module","webDevTec","getTec","data","title","url","description","logo","this","service","translationConfig","$translateProvider","EN","HOME","CLIENTS","ORIGINTRAIL_CONNECTIONS","BLOG","LOG_IN","FIRST_NAME","LAST_NAME","FOLLOW_US","COMPANY","GET_IN_TOUCH","COPYRIGHT","TAKE_ADVANTAGE","API_DOCS_CAN_BE","API_DOCS_CAN_BE2","OT_API_FREE_FOR_USE","OT_API_FREE_FOR_USE2","API_REQUEST_FORM","NAME","NAME_PLACEHOLDER","COMPANY_NAME","COMPANY_NAME_PLACEHOLDER","EMAIL","EMAIL_PLACEHOLDER","EXPLAIN_USE","EXPLAIN_PLACEHOLDER","SLOGAN","SLOGAN_LONG","REQUEST_API_KEY","API_THANK_YOU","API_THANK_YOU2","API_THANK_YOU3","CONTACT_US_WITH_FORM","WE_WILL_BE_IN_TOUCH","YOUR_REQUEST","SUBMIT_REQUEST","LEARN_MORE","REQUEST_DEMO","TRANSPARENCY_NORM","CREATE_VALUE","FOOD_PRODUCERS","FOOD_PRODUCERS_TEXT","RETAILERS","RETAILERS_TEXT","FOOD_SERVICE","FOOD_SERVICE_TEXT","TEST_DRIVE_ORIGINTRAIL","TRACKING_RAW_INGREDIENTS","SHOW_ORIGIN","OR_INPUT_A_BARCODE","AND_EXPIRY_DATE","AND_LOT_NUMBER","THE_INGREDIENTS_WERE_SOURCED_FROM","PT_2_SUPPLIERS","WANT_TO_SHARE_THE_STORY","WANT_TO_SHARE_TEXT","OUR_CLIENTS_STORIES","THE_STORY_OF","MLEKARNA_CELEIA","CELEIA_QUOTE","DARJA_NAME","DARJA_FUNCTION","DOWNLOAD_WHITEPAPER","NATURETA","NATURETA_QUOTE","MARKO_NAME","MARKO_FUNCTION","PERUTNINA_PTUJ","PERUTNINA_TEXT_1","PERUTNINA_TEXT_2","AS_SEEN_ON_PICTURE","ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT","ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT_TEXT","SOURCING","SOURCING_TEXT","PROCESSING","PROCESSING_TEXT","DISTRIBUTION","DISTRIBUTION_TEXT","RETAIL_AND_RESTAURANTS","RETAIL_AND_RESTAURANTS_TEXT","HOME_AND_RESTAURANT","HOME_AND_RESTAURANT_TEXT","OUR_PARTNERS_AND_INVESTORS","BUILDING_THE_GLOBAL_NETWORK","FEATURED_IN","READY_TO_TAKE_ADVANTAGE","ARE_YOU_DEVELOPING_NEXT_GEN_TECH","OUR_OPEN_API","REQUEST_API_ACCESS","ABOUT_US","ABOUT_US_TEXT_1","ABOUT_US_TEXT_2","ABOUT_US_TEXT_3","TOMAZ_QUOTE_1","TOMAZ_QUOTE_2","TOMAZ_NAME","TOMAZ_TITLE","BRANA_QUOTE_1","BRANA_QUOTE_2","BRANA_NAME","BRANA_TITLE","ZIGA_QUOTE_1","ZIGA_QUOTE_2","ZIGA_NAME","ZIGA_TITLE","BACK","FARMS","THIS_PRODUCT_CONTAINS","SHOW_ALL","ALL_INGREDIENTS","ORIGIN_INGREDIENT_DESCRIPTION","CERTIFICATES","TRY_ANOTHER_PRODUCT","LOADING","SEARCH","ENTER_PRODUCT_BARCODE","BARCODE_INSTRUCTION_STEP_1","BARCODE_INSTRUCTION_STEP_2","BARCODE_INSTRUCTION_STEP_3","NO_PRODUCT_FIND","VIEW_TRAIL","CHOOSE_EXPIRY_DATE","VIEW_TRAIL_TEXT","PICK_DATE_TRAIL_TEXT","INGREDIENTS","FINDING_SPECIFIC_INFO_BY_CLICKING_ON_MAP_PINS","NUTRITION_INFORMATION","NUTRITION_INFORMATION_DESCRIPTION","CALORIES","TOTAL_FAT","TOTAL_CARBOHYDRATE","SUGAR","FROM_THAT_SUGAR","SATURATED_FAT","FROM_THAT_SATURATED_FAT","FIBER","PROTEIN","SODIUM","SALT","CALCIUM","VITAMIN_A","VITAMIN_B6","VITAMIN_B12","VITAMIN_C","VITAMIN_D","VITAMIN_E","PHOSPHORUS","MAGNESIUM","IRON","SELEN","GLUTENE","GLUTENE_FREE","PER_100G","meat","dairy","vegetables","CHICKEN","MILK","COW_MILK","MIXED_MILK","YOGHURT","SOUR_MILK","CURD","CURDLED_MILK","DAIRY_CREAM","CREAM","KAYMAK","BUTTER","CHEESE","SALAD","MIXED_VEGETABLES","RED_CARROTS","YELLOW_CARROTS","ONIONS","TUBERS","YOGURT","PROBIOTIC_YOGURT","SPREAD","COTTAGE_CHEESE","KEFIR","GOAT_MILK","SHEEP_MILK","FRESH_MEAT","MEAT_PRODUCTS","ANIMAL_FAT_AND_SPREADS","CHICKEN_MEAT","PORK_MEAT","TURKEY","SHEEP_MEAT","BEEF","WILD_ANIMALS","DUCK_MEAT","PEPPER","TOMATO","CUCUMBER","CABBAGE","RADICCHIO","ENDIVE","KRISTAL_SALAD","POTATO","ZUCCHINI","ONION","RED_CABBAGE","SWEDES","CAULIFLOWER","HOT_PEPPERS","EGGPLANT","BLACK_RADISH","CHINESE_CABBAGE","SOUR_CABBAGE","SOUR_TURNIPS","RED_TURNIPS","SPROUTS","BRUSSELS_SPROUTS","BROCCOLI","EARLY_POTATOES","PACKED_VEGETABLES","SELFPICKED_VEGETABLES","PICKLED_VEGETABLES","LETTUCE","BEANS","PARSLEY","GARLIC","SHALLOTS","MINCED_AND_CANDIED_FRUIT","SELFPICKED_FRUIT_","PACKED_FRUIT_","APPLE","APRICOT","AVOCADO","BANANA","BILBERRY","BLACKBERRY","BLACKCURRANT","BLUEBERRY","BOYSENBERRY","CANTALOUPE","CURRANT","CHERRY","CHERIMOYA","CLOUDBERRY","COCONUT","CRANBERRY","DAMSON","DATE","DRAGONFRUIT","DURIAN","ELDERBERRY","FEIJOA","FIG","GOJI_BERRY","GOOSEBERRY","GRAPE","RAISIN","GRAPEFRUIT","GUAVA","HUCKLEBERRY","JABOUTICABA","JACKFRUIT","JAMBUL","JUJUBE","JUNIPER_BERRY","KIWI_FRUIT","KIWANO","KUMQUAT","LEMON","LIME","LOQUAT","LYCHEE","MANGO","MARION_BERRY","MELON","HONEYDEW","WATERMELON","MIRACLE_FRUIT","MULBERRY","NECTARINE","OLIVE","ORANGE","BLOOD_ORANGE","CLEMENTINE","MANDARINE","TANGERINE","PAPAYA","PASSIONFRUIT","PEACH","PEAR","PERSIMMON","PHYSALIS","PLUM","PINEAPPLE","PUMPKIN","POMEGRANATE","POMELO","PURPLE_MANGOSTEEN","QUINCE","RASPBERRY","SALMON_BERRY","BLACK_RASPBERRY","RAMBUTAN","REDCURRANT","SALAL_BERRY","SATSUMA","STAR_FRUIT","STRAWBERRY","SQUASH","TAMARILLO","UGLI_FRUIT","Mon","Tue","Wed","Thu","Fri","Sat","Sun","January","February","March","April","May","June","July","August","September","October","November","December","SELECT_LOT","PLEASE_CHOOSE","PLEASE_CHOOSE_ANOTHER_DATE","ABOUT","ORIGIN_TRAIL_ABOUT","ORIGIN_TRAIL_DOWNLOAD","JOIN_US","SI","PRODUCT_ORIGIN_TRAIL","FARM_TRAIL_TEXT","FACTORY_TRAIL_TEXT","WERHOUSE_TRAIL_TEXT","STORE_TRAIL_TEXT","YOU_TRAIL_TEXT","TRAIL_NOT_FOUND_DESCRIPTION","THIS_FACILITY_PRODUCES","fruit","CN","FIRST_NAME_PLACEHOLDER","LAST_NAME_PLACEHOLDER","BUSINESS_EMAIL","BLOCKCHAIN","WELCOME_DASHBOARD_1","FAQ","FORWARD","WELCOME_DASHBOARD_2","LATEST_COMMENTS","ATTENTION","FIX","CHOOSE_CATEGORY","CHOOSE_TYPE","MISSING","MISSING_PRODUCT_TYPE","FOR","MISSING_FACILITIES_LOCATION","CHOOSE","FACILITIES","WELCOME","HELLO","CATALOGUE","SHOWCASE","PRODUCERS","LOG_OUT","SETTINGS","CLOSE","CANCEL","YES","NO","LOAD_OLD","SERVER_ERROR","DESCRIPTION","DESCRIPTION_EN","EDIT","ADDRESS","CITY","LANUGAGE","REQUIRED_FIELD","USER","SAVE_MODAL","LOCATION","SET","LAT","LON","FIRST_TEXT_PAGINATION","LAST_TEXT_PAGINATION","PREVIOUS_TEXT_PAGINATION","NEXT_TEXT_PAGINATION","USERNAME","PASSWORD","FORGOT_PASSWORD","FAILED_LOGIN","LOGING","LOGIN","REGISTER_TITLE","PRIMARY_PRODUCER","PRIMARY_PRODUCER_REG_LINK","ENTERPRISE_PRODUCER","ENTERPRISE_PRODUCER_LINK","CONFIRM_PASSWORD","PHONE_NUMBER","SUBJECT","MESSAGE","SUBMIT","REQ_VALID","PASS_MATCH_ERROR","REGISTRATION_SUCCESSFUL","USERNAME_IS_TAKEN","COUNTRY","WEBISTE","MID_OR_TAX","DASHBOARD_LANGUAGE","ALL_LANGUAGE_DESCRIPTION_ERROR","SETTING_UPDATE_SUCCESS","SETTING_UPDATE_ERROR","DO_YOU_WANT_TO_LOG_OUT","specialty_products","all","AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","XK","CHOOSE_PRODUCT_TYPE","PRODUCT","PRODUCTS","CONSUMER","IMPORTED_PRODUCTS","PRODUCT_NAME","PRODUCT_PICTURE","PRODUCT_UPDATE_ERROR","AVERAGE_RATING","RATE_NUMBER","PLEASE_ENTER_DISPLAY_NAME","PRODUCT_TYPE","NO_COMMENTS_FOR_THIS_PRODUCT","INGREDIENT","HIGHER_QUALITY_SI","HONEY_SWEETENER_SI","LOW_FAT_SI","WITH_WHEAT_SI","GMO_FREE_SI","FACILITY","SHOWING","PAGE","OF","ENTRIES","SHOWCASE_TITLE","SHOWCASE_TEXT_P1","SHOWCASE_TEXT_P2","CHECK_ORIGIN","MEET_THE_FARMERS","PROVIDED","HELP","PRODUCER","VIEW_MORE","COUNTRY_OF_ORIGIN","MORE_FROM","FOR_ASSISTANCE_WECHAT","MAP","SUPPLIERS","BRAND","GO_TO_WEBSITE","FARMERS","SHOW_MORE","SHOW_LESS","PHYSICAL_STORES","ONLINE_RETAIL","ORIGINTRAIL_TRANSPARENCY","CONTACT","translations","preferredLanguage","$inject","config","xHttp","$log","$rootScope","$http","$state","apiUrl","headers","Content-Type","language","provider","ajax","method","relativeUrl","callback","errorCallback","pickup","id_facility","idpickup","validData","targetUrl","indexOf","success","response","debug","meta","code","error","post","put","get","delete","ProspehAnalytics","$timeout","$window","$location","initAnalytics","analyticsID","ga","pageView","path","event","eventCategory","eventName","eventText","setUserID","userId","factory","modalService","$uibModal","close","modalInstance","whitePaperModal","index","open","templateUrl","controller","WhitePaperCtrl","$scope","$uibModalInstance","wformdata","zelenedoline","natureta","perutnina","showThanks","requestWhitePapers","message","message_type","console","log","mapService","CustomMarker","lat","lon","map","args","image","farm_name","clickCallback","latlng","google","maps","LatLng","setMap","icon","pin","createMap","elementId","document","getElementById","googleLatLon","parseFloat","lng","options","innerWidth","center","zoom","mapTypeId","gestureHandling","mapTypeControlOptions","style","MapTypeControlStyle","HORIZONTAL_BAR","position","ControlPosition","TOP_RIGHT","Map","repositionMap","createMarker","mapObject","facility_id","marker","Marker","set","addListener","selectedFarmId","selectedMarker","latLng","setCenter","setMapOnAll","markers","i","length","undefined","size","Size","scaledSize","origin","Point","anchor","prototype","OverlayView","onAdd","self","z","div","createElement","htmlcode","innerHTML","zIndex","cursor","visibiility","dataset","marker_id","panes","getPanes","floatPane","appendChild","draw","addDomListener","trigger","point","getProjection","fromLatLngToDivPixel","left","x","top","y","remove","parentNode","removeChild","onRemove","getPosition","preloader","$q","Preloader","imageLocations","imageCount","loadCount","errorCount","states","PENDING","RESOLVED","REJECTED","state","deferred","defer","promise","preloadImages","load","constructor","isInitiated","isRejected","isResolved","loadImageLocation","handleImageError","imageLocation","reject","handleImageLoad","notify","percent","Math","ceil","resolve","$","Image","$apply","target","src","prop","apiService","getCatalogue","params","pageQ","page","limitQ","limit","categoryQ","category","providerQ","call","getShowcase","getTrailData","product","batchData","exp_date","String","substring","id_encoded","getIcons","icons","getProviderData","id","getProviderDataFromFacilityId","getProduct","product_image","replace","searchProducers","searchString","getMoreProviderData","id_provider","video_url","getProviders","otNavbar","NavbarController","moment","vm","color","directive","restrict","scope","controllerAs","bindToController","githubContributor","getContributors","getContributorsComplete","getContributorsFailed","toJson","apiHost","then","otPlugin","otPluginController","leafletData","popupContent","farms","bounds","activeSlide","pluginLoaded","providerVideo","providerFacility","currentProduct","playerVars","controls","autoplay","story","name","activateSlide","closePlugin","trail","$destroy","jQuery","openFarmPage","farm","defaults","tileLayer","maxZoom","weight","opacity","retinaUrl","popup","defaultIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupAnchor","otIcon","L","tiles","attribution","layers","baselayers","world","type","visible","layerOptions","overlays","slideWidth","width","myInterval","noWrapSlides","active","cons","f","farmlist","max_lat","max_lon","min_lat","min_lon","Number","xmarkers","markerClusterGroup","fimg","fn","bindPopup","addLayer","getMap","fid","currentFacility","pid","getFacilityData","showFacilityView","normalEnglish","input","charAt","toUpperCase","substr","toLowerCase","filter","startFrom","start","slice","RequestApiController","$document","toastr","submitRequest","formdata","formSubmittedSuccessfully","api_key","RequestDemoController","MainController","$compile","product_id","facilityClickCallback","getDistance","abs","inArray","array","facility","l","getClosestFacility","facilities","excludeThese","result","d","minDistance","clearCustomMarkers","chosen_facility_markers","drawPinsAndClusters","map_bounds","getBounds","markerCluster","MarkerClusterer","styles","textColor","height","getNorthEast","getSouthWest","chosen_facilities","customMarkerIndex","farmNorthEast","push","farmNorthWest","farmSouthEast","farmSouthWest","fitBounds","initialDraw","initInfographic","scrollCtrl","isMobile","a","test","navigator","userAgent","vendor","window","opera","ScrollMagic","Controller","narrationTween1","TweenMax","fromTo","ease","Power2","easeOut","narrationTween11","to","easeIn","narrationTween2","narrationTween22","narrationTween3","narrationTween33","narrationTween4","narrationTween44","narrationTween5","scale_tween2","scale_tween3","scale_tween4","phone_tween","infographicRowHeight","outerHeight","blockchain","Scene","triggerElement","duration","setPin","nar1In","setTween","nar2In","nar3In","nar4In","nar5In","nar1Out","nar2Out","nar3Out","nar4Out","narration","scene3","scene4","scene5","scene6","phoneAnimation","file1Animation","file2Animation","file3Animation","file4Animation","smallScreen","screen","availWidth","css","narrationMobile","narMobileTween1","narMobileTween1out","narMobileTween2","narMobileTween2out","narMobileTween3","narMobileTween3out","narMobileTween4","narMobileTween4out","narMobileTween5","narmobile1In","narmobile1Out","narmobile2In","narmobile2Out","narmobile3In","narmobile3Out","narmobile4In","narmobile4Out","narmobile5In","file1_tween_mobile","file2_tween_mobile","file3_tween_mobile","file4_tween_mobile","addScene","file1_tween","file2_tween","file3_tween","file4_tween","lang","celeiaVideo","$on","$event","player","mute","playVideo","innerHeight","vpEl","products","searchProduct","selectedProduct","selectedDate","selectedLot","expiryDates","lots","slide","facilitiesByIngredient","farmPage","sideDrawer","productSwitch","ingredients_module","samples","static_image","active_image","product_name","id_product","ean13","ean8","expiry_date","traceability_type","lot","windowWidth","tag","firstScriptTag","getElementsByTagName","insertBefore","activateTab","search","barCode","value","showTrail","enterBarcode","selectProduct","removeBarCode","showExpiryDates","selectDate","date","showLots","selectLot","loadSample","openWPModal","closeModal","activateIngredient","getTrail","productTypes","temp_farms","pt","extend","checkOrigin","id_product_selected","trailObj","el","element","append","farmType","fbt","LatLngBounds","notFindTrail","nextFarm","nextIndex","prevFarm","removeMarkers","infImages","preloadedImgs","isLoading","isSuccessful","info","percentLoaded","AboutController","navDark","storyElHeight","team","linkedin","twitter","shadow","TopCtrl","$translate","environment","siteUrl","windowHeight","mobileMenu","moreInfo","env","languages","short_name","changeLanguage","key","use","toggleMenu","scrollTo","ancObj","isEmptyObject","animate","scrollTop","goToState","stateParameters","hash","go","on","scrollY","runBlock","toState","toParams","fromState","fromParams","body","documentElement","run","routerConfig","$stateProvider","$urlRouterProvider","$locationProvider","otherwise","html5Mode","hashPrefix","constant","malarkey","$logProvider","toastrConfig","debugEnabled","allowHtml","timeOut","positionClass","preventDuplicates","progressBar","$templateCache"],"mappings":"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","file":"scripts/app-30e73fe526.js","sourcesContent":["(function() {\n 'use strict';\n\n angular\n .module('websitev3', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ngMessages', 'ngAria', 'ngResource', 'ui.router', 'ui.bootstrap', 'youtube-embed', 'toastr', 'pascalprecht.translate',\n 'nemLogging',\n 'ui-leaflet',\n ]);\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .service('webDevTec', webDevTec);\n\n /** @ngInject */\n function webDevTec() {\n var data = [\n {\n 'title': 'AngularJS',\n 'url': 'https://angularjs.org/',\n 'description': 'HTML enhanced for web apps!',\n 'logo': 'angular.png'\n },\n {\n 'title': 'BrowserSync',\n 'url': 'http://browsersync.io/',\n 'description': 'Time-saving synchronised browser testing.',\n 'logo': 'browsersync.png'\n },\n {\n 'title': 'GulpJS',\n 'url': 'http://gulpjs.com/',\n 'description': 'The streaming build system.',\n 'logo': 'gulp.png'\n },\n {\n 'title': 'Jasmine',\n 'url': 'http://jasmine.github.io/',\n 'description': 'Behavior-Driven JavaScript.',\n 'logo': 'jasmine.png'\n },\n {\n 'title': 'Karma',\n 'url': 'http://karma-runner.github.io/',\n 'description': 'Spectacular Test Runner for JavaScript.',\n 'logo': 'karma.png'\n },\n {\n 'title': 'Protractor',\n 'url': 'https://github.com/angular/protractor',\n 'description': 'End to end test framework for AngularJS applications built on top of WebDriverJS.',\n 'logo': 'protractor.png'\n },\n {\n 'title': 'Bootstrap',\n 'url': 'http://getbootstrap.com/',\n 'description': 'Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.',\n 'logo': 'bootstrap.png'\n },\n {\n 'title': 'Angular UI Bootstrap',\n 'url': 'http://angular-ui.github.io/bootstrap/',\n 'description': 'Bootstrap components written in pure AngularJS by the AngularUI Team.',\n 'logo': 'ui-bootstrap.png'\n },\n {\n 'title': 'Sass (Node)',\n 'url': 'https://github.com/sass/node-sass',\n 'description': 'Node.js binding to libsass, the C version of the popular stylesheet preprocessor, Sass.',\n 'logo': 'node-sass.png'\n }\n ];\n\n this.getTec = getTec;\n\n function getTec() {\n return data;\n }\n }\n\n})();\n\n(function() {\n // 'use strict';\n\n angular\n .module('websitev3')\n .config(translationConfig);\n\n /** @ngInject */\n function translationConfig($translateProvider) {\n\n var EN = {\n // novo\n\n //nav\n HOME: 'Home',\n CLIENTS: 'Clients',\n ORIGINTRAIL_CONNECTIONS: 'OriginTrail Connections',\n BLOG: 'Blog',\n LOG_IN: 'Log in',\n\n\n // general\n //\n FIRST_NAME: 'First name',\n LAST_NAME: 'Last name',\n // footer\n\n FOLLOW_US: 'Follow us',\n COMPANY: 'Company',\n GET_IN_TOUCH: 'Get in touch',\n COPYRIGHT: 'Copyright © 2017. OriginTrail. All rights reserved',\n\n // request api page\n TAKE_ADVANTAGE: 'Take advantage of our OriginTrail Open API',\n API_DOCS_CAN_BE: 'API docs can be found',\n API_DOCS_CAN_BE2: 'here',\n\n OT_API_FREE_FOR_USE: 'OriginTrail API is free for non-commercial requests. If you are considering commercial uses we would like to',\n OT_API_FREE_FOR_USE2: 'get in touch',\n API_REQUEST_FORM: 'API key request form',\n NAME: 'Name',\n NAME_PLACEHOLDER: 'John Smith',\n COMPANY_NAME: 'Company name',\n COMPANY_NAME_PLACEHOLDER: 'Superfood Ltd.',\n EMAIL: 'Email',\n EMAIL_PLACEHOLDER: 'john@superfood.com',\n EXPLAIN_USE: 'Explain in a few lines what your intended API use-case is',\n EXPLAIN_PLACEHOLDER: 'We will use this API to change to world!',\n\n SLOGAN: 'Empowering quality food',\n SLOGAN_LONG: 'We help you build genuine transparency to stand out in the marketplace and increase trust in your brand',\n REQUEST_API_KEY: 'Request API key',\n API_THANK_YOU: 'Thank you for the request!',\n API_THANK_YOU2: 'Your api key is',\n API_THANK_YOU3: 'Please keep it stored safely. Good luck developing applications with our API!',\n\n\n // request demo\n CONTACT_US_WITH_FORM: 'Contact us using the form below',\n WE_WILL_BE_IN_TOUCH: 'We will be in touch shortly',\n YOUR_REQUEST: 'Your request',\n SUBMIT_REQUEST: 'Submit request',\n\n LEARN_MORE: 'Learn more',\n REQUEST_DEMO: 'Request demo',\n TRANSPARENCY_NORM: '#Transparency is the new norm',\n CREATE_VALUE: 'Create value from the data you already collect',\n\n\n\n\n\n FOOD_PRODUCERS: 'Food producers',\n FOOD_PRODUCERS_TEXT: 'Let us take full advantage of the data you already collect to build transparency and increase trust in your brand. By tracking origin of your quality ingredients and finished product movement down the supply chain you will prove authenticity and stand out in the marketplace.',\n\n RETAILERS: 'Retailers',\n RETAILERS_TEXT: 'Effectively answer demands of shoppers online and offline for more transparency. Merge real-time data from partners along the entire supply chain to provide shoppers with trustworthy information on product authenticity at point of sale.',\n\n FOOD_SERVICE: 'Food service',\n FOOD_SERVICE_TEXT: 'Take advantage of the care with which you select products served to your guests and show their exact origin effortlessly with OriginTrail. Use genuine transparency to tell the story from “farm-to-plate”and build trust in your service.',\n\n TEST_DRIVE_ORIGINTRAIL: 'Test drive OriginTrail',\n TRACKING_RAW_INGREDIENTS: 'Test drive OriginTrail',\n\n SHOW_ORIGIN: 'Show origin',\n OR_INPUT_A_BARCODE: 'or input a product barcode',\n AND_EXPIRY_DATE: 'and expiry date',\n AND_LOT_NUMBER: 'and the LOT number in this case',\n\n THE_INGREDIENTS_WERE_SOURCED_FROM: 'The ingredients were sourced from these',\n PT_2_SUPPLIERS: 'suppliers',\n\n WANT_TO_SHARE_THE_STORY: 'Want to share the story of your products?',\n WANT_TO_SHARE_TEXT: 'OriginTrail platform lets you communicate everything that makes your product special across all devices in a way that is the most in line with your goals and activities.',\n OUR_CLIENTS_STORIES: \"Our clients' stories\",\n\n THE_STORY_OF: 'The story of',\n MLEKARNA_CELEIA: 'Mlekarna Celeia',\n CELEIA_QUOTE: 'Shoppers kept asking us, where does the milk in our products originate from - which farm, which cow. Thanks to the OriginTrail solution, we were able to answer their questions and show the key difference from competitors.',\n DARJA_NAME: 'Darja Teržan',\n DARJA_FUNCTION: 'Chief Marketing Officer',\n DOWNLOAD_WHITEPAPER: 'Download whitepaper',\n NATURETA: 'Natureta',\n NATURETA_QUOTE: 'Each year, food scandals hamper consumer confidence, thus knowing the origin of food indeed is their right. Already at this moment, there are differences among food producers in regard to the level of information we provide to consumers and we believe the importance of that will even increase in the future',\n MARKO_NAME: 'Marko Konič',\n MARKO_FUNCTION: 'Chief Executive Officer',\n\n PERUTNINA_PTUJ: 'Perutnina Ptuj',\n PERUTNINA_TEXT_1: 'OriginTrail was used to show true value of highest quality PPR line - premium poultry breeding. Products were offered not only in domestic market but also in various non-adjacent ones, including Switzerland. Perutnina Ptuj is the first in Slovenia to introduce a new standard that follows the latest findings on the well-being of animals and more than exceeds the legislative requirements. The animals are comfortable in the barns with plenty of sunlight, room to move and natural feed.',\n PERUTNINA_TEXT_2: 'PPR line was successfully launched on the store shelves together with our OriginTrail Slovenian app',\n AS_SEEN_ON_PICTURE: '(as seen in picture on the right)',\n\n\n ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT: 'OriginTrail Connections - China project',\n ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT_TEXT: 'OriginTrail is partnering up with network of partners along the entire supply chain - quality producers in Europe and distributors, importers, retailers and restaurants in China that will provide real-time data in OriginTrail blockchain to ensure product authenticity.',\n\n SOURCING: 'Sourcing',\n SOURCING_TEXT: 'Providing data on exact time and location of raw ingredient production together with certificates each producer holds.',\n\n PROCESSING: 'Processing',\n PROCESSING_TEXT: 'All the information showing how quality ingredients are turned into final products and to whom those products are being shipped, in what quantities and when.',\n DISTRIBUTION: 'Distribution',\n DISTRIBUTION_TEXT: 'All available distribution information, ensuring the same quantities of products have arrived at the importer’s warehouse.',\n\n\n RETAIL_AND_RESTAURANTS: 'Retail and restaurants',\n RETAIL_AND_RESTAURANTS_TEXT: 'Confirmation of all the data received beforehand to ensure authenticity of the products offered to end-customers.',\n\n HOME_AND_RESTAURANT: 'Home and restaurant',\n HOME_AND_RESTAURANT_TEXT: 'Proven authenticity and information beyond label.',\n\n OUR_PARTNERS_AND_INVESTORS: 'Our partners & investors',\n BUILDING_THE_GLOBAL_NETWORK: 'Building the global network of quality products',\n FEATURED_IN: 'Featured in',\n\n READY_TO_TAKE_ADVANTAGE: 'Ready to take advantage of the growing food transparency trend?',\n\n\n ARE_YOU_DEVELOPING_NEXT_GEN_TECH: 'Are you developing next generation food tech?',\n\n OUR_OPEN_API: 'Our Open API is at your disposal, free for non commercial use.',\n REQUEST_API_ACCESS: 'Request API access',\n\n // about us page\n\n ABOUT_US: 'About us',\n ABOUT_US_TEXT_1: 'We created OriginTrail with the vision to empower food providers who are taking special care when sourcing ingredients to create high-quality products. A passionate team of OriginTrail founders has devoted the last 5 years to raise trust in such products through a seamless online solution that uses data about ingredient origin to communicate food traceability and transparency to consumers. In times of the biggest production of food ever, we increase confidence in quality food brands and improve their visibility worldwide.',\n ABOUT_US_TEXT_2: 'Over the years, our team has grown adding more talent in business, web development, and food supply chain fields to its core. Today we are expanding the OriginTrail solution and presenting the community of OriginTrail food providers to retail buyers across the globe, creating new business opportunities for both sides.',\n ABOUT_US_TEXT_3: 'Want to know more? Contact us to get more information on how we can help your food business gain the advantage it deserves!',\n\n TOMAZ_QUOTE_1: 'Food transparency is the new norm.',\n TOMAZ_QUOTE_2: 'We are excited to be part of one of the most important trends in food industry that just might transform it in its core. Brands that will be able to respond to these demands in timely fashion are the ones that are going to see benefits on the bottom-line and we are here to help them achieve that.',\n TOMAZ_NAME: 'Tomaž Levak',\n TOMAZ_TITLE: 'Chief Executive Officer',\n\n BRANA_QUOTE_1: 'OriginTrail is here to make the lives of our partners easier and make sure they reach their business goals.',\n BRANA_QUOTE_2: 'This means we make sure all technical implementation is quick and efficient. We use data that is already available today and implement OriginTrail without making changes to product packaging.',\n BRANA_NAME: 'Branimir Rakić',\n BRANA_TITLE: 'Chief Technical Officer',\n\n ZIGA_QUOTE_1: 'We are proud to have helped our partners in dairy, meat and produce sectors achieve great results through genuine transparency.',\n ZIGA_QUOTE_2: 'We are now deepening our collaboration with retailers to offer our partners even better exposure both in physical stores as well as in e-commerce.The latter will even increase the need to share more information about food with buyers. At OriginTrail we are ready to help food brands face the challenge!',\n ZIGA_NAME: 'Žiga Drev',\n ZIGA_TITLE: 'Chief Operations Officer',\n\n BACK: 'Back',\n FARMS: 'Farms',\n THIS_PRODUCT_CONTAINS: 'This product contains:',\n SHOW_ALL: 'All',\n ALL_INGREDIENTS: 'All ingredients',\n ORIGIN_INGREDIENT_DESCRIPTION: \"(Check the origin of every ingredient by clicking on it's icon)\",\n\n CERTIFICATES: 'Certificates',\n TRY_ANOTHER_PRODUCT: 'How about trying another product? Click here',\n LOADING: 'Loading...',\n SEARCH: 'Search',\n ENTER_PRODUCT_BARCODE: 'Enter product barcode',\n BARCODE_INSTRUCTION_STEP_1: '1. Find the barcode on packaging',\n BARCODE_INSTRUCTION_STEP_2: '2. Enter the number shown under the barcode',\n BARCODE_INSTRUCTION_STEP_3: '3. Get more information about your product',\n NO_PRODUCT_FIND: 'No product was found',\n VIEW_TRAIL: 'Click to view trail',\n CHOOSE_EXPIRY_DATE: 'Input expiry date',\n VIEW_TRAIL_TEXT: 'To access the trail of origin put in date of expiration',\n PICK_DATE_TRAIL_TEXT: 'Pick production date',\n INGREDIENTS: 'Ingredients',\n FINDING_SPECIFIC_INFO_BY_CLICKING_ON_MAP_PINS: 'Find specific info about the facility by clicking on map pins',\n NUTRITION_INFORMATION: 'Nutrition Information',\n NUTRITION_INFORMATION_DESCRIPTION: 'Info per 100 grams of product content',\n\n CALORIES: 'Calories',\n TOTAL_FAT: 'Fat',\n TOTAL_CARBOHYDRATE: 'Carbohydrate',\n SUGAR: 'Sugar',\n FROM_THAT_SUGAR: '- of that sugar',\n SATURATED_FAT: 'Saturated fat',\n FROM_THAT_SATURATED_FAT: '- of that saturated',\n FIBER: 'Fiber',\n PROTEIN: 'Protein',\n SODIUM: 'Sodium',\n SALT: 'Salt',\n CALCIUM: 'Calcium',\n VITAMIN_A: 'Vitamin A',\n VITAMIN_B6: 'Vitamin B6',\n VITAMIN_B12: 'Vitamin B12',\n VITAMIN_C: 'Vitamin C',\n VITAMIN_D: 'Vitamin D',\n VITAMIN_E: 'Vitamin E',\n PHOSPHORUS: 'Fosfor',\n MAGNESIUM: 'Magnesium',\n IRON: 'Iron',\n SELEN: 'Selen',\n GLUTENE: 'Gluten',\n GLUTENE_FREE: 'Gluten free',\n PER_100G: 'Per 100g',\n\n\n meat: \"Meat\",\n dairy: \"Dairy\",\n vegetables: \"Vegetables\",\n CHICKEN: \"Chicken\",\n MILK: \"Milk\",\n COW_MILK: \"Cow Milk\",\n MIXED_MILK: \"Mix Milk\",\n YOGHURT: \"Yogurt\",\n SOUR_MILK: \"Sour Milk\",\n CURD: \"Curd\",\n CURDLED_MILK: \"Curdled Milk\",\n DAIRY_CREAM: \"Dairy Cream\",\n CREAM: \"Cream\",\n KAYMAK: \"Kaymak\",\n BUTTER: \"Butter\",\n CHEESE: \"Cheese\",\n SALAD: \"Salad\",\n MIXED_VEGETABLES: \"Mixed vegetables\",\n RED_CARROTS: \"Red carrots\",\n YELLOW_CARROTS: \"Yellow carrots\",\n ONIONS: \"Onions\",\n TUBERS: \"Tubers\",\n YOGURT: \"Yogurts \",\n PROBIOTIC_YOGURT: \"Probiotic yogurts \",\n SPREAD: \"Spreads \",\n COTTAGE_CHEESE: \"Cottage Cheese\",\n KEFIR: \"Kefir \",\n GOAT_MILK: \"Goat milk\",\n SHEEP_MILK: \"Sheep milk\",\n FRESH_MEAT: \"Fresh meat\",\n MEAT_PRODUCTS: \"Meat products\",\n ANIMAL_FAT_AND_SPREADS: \"Animal fat and spreads\",\n CHICKEN_MEAT: \"Chicken meat\",\n PORK_MEAT: \"Pork meat\",\n TURKEY: \"Turkey \",\n SHEEP_MEAT: \"Sheep meat\",\n BEEF: \"Beef\",\n WILD_ANIMALS: \"Wild animals \",\n DUCK_MEAT: \"Duck meat \",\n PEPPER: \"Peppers\",\n TOMATO: \"Tomatos\",\n CUCUMBER: \"Cucumber\",\n CABBAGE: \"Cabbage\",\n RADICCHIO: \"Radicchio\",\n ENDIVE: \"Endive\",\n KRISTAL_SALAD: \"Kristal salad\",\n POTATO: \"Potato\",\n ZUCCHINI: \"Zucchini\",\n ONION: \"Onion\",\n RED_CABBAGE: \"Red cabbage\",\n SWEDES: \"Swedes\",\n CAULIFLOWER: \"Cauliflower\",\n HOT_PEPPERS: \"Hot peppers\",\n EGGPLANT: \"Eggplant\",\n BLACK_RADISH: \"Black radish\",\n CHINESE_CABBAGE: \"Chinese cabbage\",\n SOUR_CABBAGE: \"Sourkraut\",\n SOUR_TURNIPS: \"Sour turnips\",\n RED_TURNIPS: \"Red turnips\",\n SPROUTS: \"Sprouts\",\n BRUSSELS_SPROUTS: \"Brussels sprouts\",\n BROCCOLI: \"Broccoli\",\n EARLY_POTATOES: \"Early potatos\",\n PACKED_VEGETABLES: \"Packed vegetables\",\n SELFPICKED_VEGETABLES: \"Selfpicked vegetables \",\n PICKLED_VEGETABLES: \"Pickled vegetables\",\n LETTUCE: \"Lettuce\",\n BEANS: \"Beans\",\n PARSLEY: \"Parsley\",\n GARLIC: \"Garlic\",\n SHALLOTS: \"Shallots\",\n MINCED_AND_CANDIED_FRUIT: \"Minced and candied fruit\",\n SELFPICKED_FRUIT_: \"Selfpicked fruit \",\n PACKED_FRUIT_: \"Packed Fruit \",\n APPLE: \"Apple\",\n APRICOT: \"Apricot\",\n AVOCADO: \"Avocado\",\n BANANA: \"Banana\",\n BILBERRY: \"Bilberry\",\n BLACKBERRY: \"Blackberry\",\n BLACKCURRANT: \"Blackcurrant\",\n BLUEBERRY: \"Blueberry\",\n BOYSENBERRY: \"Boysenberry\",\n CANTALOUPE: \"Cantaloupe\",\n CURRANT: \"Currant\",\n CHERRY: \"Cherry\",\n CHERIMOYA: \"Cherimoya\",\n CLOUDBERRY: \"Cloudberry\",\n COCONUT: \"Coconut\",\n CRANBERRY: \"Cranberry\",\n DAMSON: \"Damson\",\n DATE: \"Date\",\n DRAGONFRUIT: \"Dragonfruit\",\n DURIAN: \"Durian\",\n ELDERBERRY: \"Elderberry\",\n FEIJOA: \"Feijoa\",\n FIG: \"Fig\",\n GOJI_BERRY: \"Goji berry\",\n GOOSEBERRY: \"Gooseberry\",\n GRAPE: \"Grape\",\n RAISIN: \"Raisin\",\n GRAPEFRUIT: \"Grapefruit\",\n GUAVA: \"Guava\",\n HUCKLEBERRY: \"Huckleberry\",\n JABOUTICABA: \"Jabouticaba\",\n JACKFRUIT: \"Jackfruit\",\n JAMBUL: \"Jambul\",\n JUJUBE: \"Jujube\",\n JUNIPER_BERRY: \"Juniper berry\",\n KIWI_FRUIT: \"Kiwi fruit\",\n KIWANO: \"Kiwano\",\n KUMQUAT: \"Kumquat\",\n LEMON: \"Lemon\",\n LIME: \"Lime\",\n LOQUAT: \"Loquat\",\n LYCHEE: \"Lychee\",\n MANGO: \"Mango\",\n MARION_BERRY: \"Marion berry\",\n MELON: \"Melon\",\n HONEYDEW: \"Honeydew\",\n WATERMELON: \"Watermelon\",\n MIRACLE_FRUIT: \"Miracle fruit\",\n MULBERRY: \"Mulberry\",\n NECTARINE: \"Nectarine\",\n OLIVE: \"Olive\",\n ORANGE: \"Orange\",\n BLOOD_ORANGE: \"Blood Orange\",\n CLEMENTINE: \"Clementine\",\n MANDARINE: \"Mandarine\",\n TANGERINE: \"Tangerine\",\n PAPAYA: \"Papaya\",\n PASSIONFRUIT: \"Passionfruit\",\n PEACH: \"Peach\",\n PEAR: \"Pear\",\n PERSIMMON: \"Persimmon\",\n PHYSALIS: \"Physalis\",\n PLUM: \"Plum/prune (dried plum)\",\n PINEAPPLE: \"Pineapple\",\n PUMPKIN: \"Pumpkin\",\n POMEGRANATE: \"Pomegranate\",\n POMELO: \"Pomelo\",\n PURPLE_MANGOSTEEN: \"Purple Mangosteen\",\n QUINCE: \"Quince\",\n RASPBERRY: \"Raspberry\",\n SALMON_BERRY: \"Salmon berry\",\n BLACK_RASPBERRY: \"Black raspberry\",\n RAMBUTAN: \"Rambutan\",\n REDCURRANT: \"Redcurrant\",\n SALAL_BERRY: \"Salal berry\",\n SATSUMA: \"Satsuma\",\n STAR_FRUIT: \"Star fruit\",\n STRAWBERRY: \"Strawberry\",\n SQUASH: \"Squash\",\n TAMARILLO: \"Tamarillo\",\n UGLI_FRUIT: \"Ugli fruit\",\n\n Mon: 'Mon',\n Tue: 'Tue',\n Wed: 'Wed',\n Thu: 'Thu',\n Fri: 'Fri',\n Sat: 'Sat',\n Sun: 'Sun',\n\n January: 'January',\n February: 'February',\n March: 'March',\n April: 'April',\n May: 'May',\n June: 'June',\n July: 'July',\n August: 'August',\n September: 'September',\n October: 'October',\n November: 'November',\n December: 'December',\n\n SELECT_LOT: 'Input LOT number from product label',\n PLEASE_CHOOSE: 'Pick lot number',\n PLEASE_CHOOSE_ANOTHER_DATE: 'Sorry, a product with this expiration date was not found. Please choose another date',\n\n ABOUT: 'About OriginTrail',\n ORIGIN_TRAIL_ABOUT: 'To check the origin of products even faster you can download our application Izvor - by OriginTrail for your Android and iOS smartphone',\n ORIGIN_TRAIL_DOWNLOAD: '',\n JOIN_US: 'Join us'\n };\n\n\n var SI = {\n\n BACK: 'Nazaj',\n FARMS: 'Kmetij',\n LOADING: 'Nalaganje...',\n SEARCH: 'Išči',\n CERTIFICATES: 'Certifikati',\n ENTER_PRODUCT_BARCODE: 'Vnesite črtno kodo izdelka',\n BARCODE_INSTRUCTION_STEP_1: '1. Najdite črtno kodo na izdelku',\n BARCODE_INSTRUCTION_STEP_2: '2. Vnesite številke, ki so zapisane pod kodo.',\n BARCODE_INSTRUCTION_STEP_3: '3. Preberite več o izdelku',\n NO_PRODUCT_FIND: 'Izdelek ni bil najden',\n VIEW_TRAIL: 'Kliknite, da preverite izvor izdelka',\n CHOOSE_EXPIRY_DATE: 'Izberite datum izteka roka',\n VIEW_TRAIL_TEXT: 'Izberite datum izteka roka',\n PICK_DATE_TRAIL_TEXT: 'Pick production date trail',\n INGREDIENTS: 'Sestavine',\n FINDING_SPECIFIC_INFO_BY_CLICKING_ON_MAP_PINS: 'Najdite podrobnejše informacije s klikom na označbe na zemljevidu.',\n\n PRODUCT_ORIGIN_TRAIL: 'Sled izvora izdelka',\n FARM_TRAIL_TEXT: 'Kmetije, ki so pridelale sestavine za vaš izdelek',\n FACTORY_TRAIL_TEXT: 'Za vas so proizvedli okusen končni izdelek',\n WERHOUSE_TRAIL_TEXT: 'Na kratko shranili vaš izdelek ter poskrbeli, da je ostal svež.',\n STORE_TRAIL_TEXT: '',\n YOU_TRAIL_TEXT: 'Vy',\n TRAIL_NOT_FOUND_DESCRIPTION: 'Žal izdelka s tem datumom izteka roka nismo našli. Prosimo, ponovno vnesite datum, ki je odtisnjen na izdelku.',\n THIS_FACILITY_PRODUCES: 'Tukaj proizvajajo:',\n\n NUTRITION_INFORMATION: 'Nutricionistične informacije',\n NUTRITION_INFORMATION_DESCRIPTION: 'Povprečne hranilne vrednosti so prikazane za 100g izdelka.',\n\n CALORIES: 'Kalorije',\n TOTAL_FAT: 'Maščobe',\n TOTAL_CARBOHYDRATE: 'Ogljikovi hidrati',\n SUGAR: 'Sladkor',\n FROM_THAT_SUGAR: '- Od tega sladkorji',\n SATURATED_FAT: 'Nasičene maščobe',\n FROM_THAT_SATURATED_FAT: '- Od tega nasičene',\n FIBER: 'Prehranske vlaknine',\n PROTEIN: 'Beljakovine',\n SODIUM: 'Natrij',\n SALT: 'Sol',\n CALCIUM: 'Kalcij',\n VITAMIN_A: 'Vitamin A',\n VITAMIN_B6: 'Vitamin B6',\n VITAMIN_B12: 'Vitamin B12',\n VITAMIN_C: 'Vitamin C',\n VITAMIN_D: 'Vitamin D',\n VITAMIN_E: 'Vitamin E',\n PHOSPHORUS: 'Fosfor',\n MAGNESIUM: 'Magnezij',\n IRON: 'Železo',\n SELEN: 'Selen',\n GLUTENE: 'Gluten',\n GLUTENE_FREE: 'Brez glutena',\n PER_100G: 'Na 100g',\n\n meat: \"Meso in mesni izdelki\",\n dairy: \"Mleko in mlečni izdelki\",\n vegetables: \"Zelenjava\",\n fruit: \"Sadje\",\n CHICKEN_MEAT: \"Piščančje meso\",\n CHICKEN: \"Piščanec\",\n COW_MILK: \"Kravje mleko\",\n MIXED_MILK: \"Mešano mleko\",\n YOGHURT: \"Jogurt\",\n SOUR_MILK: \"Kislo mleko\",\n CURD: \"Skuta\",\n CURDLED_MILK: \"Kefir\",\n DAIRY_CREAM: \"Mlečna smetana\",\n CREAM: \"Smetana\",\n KAYMAK: \"Kajmak\",\n BUTTER: \"Maslo\",\n CHEESE: \"Sir\",\n SALAD: \"Solata\",\n MIXED_VEGETABLES: \"Mešana zelenjava\",\n RED_CARROTS: \"Rdeče korenje\",\n YELLOW_CARROTS: \"Rumeno korenje\",\n PARSLEY: \"Peteršilj\",\n SWEDES: \"Koleraba\",\n ONIONS: \"Čebula\",\n TUBERS: \"Gomolj\",\n RADICCHIO: \"Radič\",\n MILK: \"Mleko\",\n YOGURT: \"Jogurti\",\n PROBIOTIC_YOGURT: \"Probiotični Jogurti\",\n SPREAD: \"Namazi\",\n COTTAGE_CHEESE: \"Skute\",\n KEFIR: \"Kefir\",\n GOAT_MILK: \"Kozje Mleko\",\n SHEEP_MILK: \"Ovčje Mleko\",\n FRESH_MEAT: \"Svežo Meso\",\n MEAT_PRODUCTS: \"Mesni Izdelki\",\n ANIMAL_FAT_AND_SPREADS: \"Živalske Maščobe In Namazi\",\n PORK_MEAT: \"Svinjsko Meso \",\n TURKEY: \"Puranje Meso \",\n SHEEP_MEAT: \"Ovčje Meso \",\n BEEF: \"Goveje Meso\",\n WILD_ANIMALS: \"Divjačinsko Meso\",\n DUCK_MEAT: \"Račje Meso\",\n PEPPER: \"Paprika\",\n TOMATO: \"Paradižnik\",\n CUCUMBER: \"Kumare\",\n CABBAGE: \"Zelje\",\n SOUR_CABBAGE: \"Kislo Zelje\",\n ENDIVE: \"Endivja\",\n KRISTAL_SALAD: \"Solata Kristal\",\n POTATO: \"Krompir\",\n ZUCCHINI: \"Bučke\",\n ONION: \"Čebula\",\n RED_CABBAGE: \"Rdeče Zelje\",\n CAULIFLOWER: \"Cvetača\",\n HOT_PEPPERS: \"Feferoni\",\n EGGPLANT: \"Jajčevec\",\n BLACK_RADISH: \"Črna Redkev\",\n CHINESE_CABBAGE: \"Kitajsko Zelje\",\n SOUR_TURNIPS: \"Kisla Repa\",\n RED_TURNIPS: \"Rdeča Pesa\",\n SPROUTS: \"Ohrovt\",\n BRUSSELS_SPROUTS: \"Brstični Ohrovt \",\n BROCCOLI: \"Brokoli\",\n EARLY_POTATOES: \"Zgodnji Krompir \",\n PACKED_VEGETABLES: \"Pakirana Zelenjava \",\n SELFPICKED_VEGETABLES: \"Razsuta Zelenjava \",\n PICKLED_VEGETABLES: \"Vložena Zelenjava \",\n LETTUCE: \"Zelena\",\n BEANS: \"Fižol\",\n GARLIC: \"Česen\",\n SHALLOTS: \"Šalotka \",\n MINCED_AND_CANDIED_FRUIT: \"Mleto In Kandirano Sadje\",\n SELFPICKED_FRUIT_: \"Razsuto Sadje \",\n PACKED_FRUIT_: \"Pakirano Sadje \",\n APPLE: \"Jabolko\",\n APRICOT: \"Marelice\",\n AVOCADO: \"Avokado\",\n BANANA: \"Banana\",\n BILBERRY: \"Borovnica\",\n BLACKBERRY: \"Blackberry\",\n BLACKCURRANT: \"Blackcurrant\",\n BLUEBERRY: \"Borovnica\",\n BOYSENBERRY: \"Boysenove Robide\",\n CANTALOUPE: \"Melone\",\n CURRANT: \"Ribez\",\n CHERRY: \"Češnja\",\n CHERIMOYA: \"Cherimoya\",\n CLOUDBERRY: \"Cloudberry\",\n COCONUT: \"Kokos\",\n CRANBERRY: \"Brusnica\",\n DAMSON: \"Damson\",\n DATE: \"Datum\",\n DRAGONFRUIT: \"Dragonfruit\",\n DURIAN: \"Durian\",\n ELDERBERRY: \"Bezeg\",\n FEIJOA: \"Feijoa\",\n FIG: \"Fig\",\n GOJI_BERRY: \"Goji Jagodami\",\n GOOSEBERRY: \"Kosmulja\",\n GRAPE: \"Grape\",\n RAISIN: \"Rozin\",\n GRAPEFRUIT: \"Grenivka\",\n GUAVA: \"Guava\",\n HUCKLEBERRY: \"Huckleberry\",\n JABOUTICABA: \"Jabouticaba\",\n JACKFRUIT: \"Kruhovec\",\n JAMBUL: \"Jambul\",\n JUJUBE: \"Žižola\",\n JUNIPER_BERRY: \"Brinove Jagode\",\n KIWI_FRUIT: \"Kivi\",\n KIWANO: \"Kiwano\",\n KUMQUAT: \"Kumquat\",\n LEMON: \"Lemon\",\n LIME: \"Apno\",\n LOQUAT: \"Loquat\",\n LYCHEE: \"Liči\",\n MANGO: \"Mango\",\n MARION_BERRY: \"Marion Jagodami\",\n MELON: \"Melon\",\n HONEYDEW: \"Mane\",\n WATERMELON: \"Lubenica\",\n MIRACLE_FRUIT: \"Čudež Sadje\",\n MULBERRY: \"Murve\",\n NECTARINE: \"Nektarine\",\n OLIVE: \"Olive\",\n ORANGE: \"Oranžna\",\n BLOOD_ORANGE: \"Blood Orange\",\n CLEMENTINE: \"Clementine\",\n MANDARINE: \"Mandarine\",\n TANGERINE: \"Tangerine\",\n PAPAYA: \"Papaja\",\n PASSIONFRUIT: \"Marakuja\",\n PEACH: \"Breskev\",\n PEAR: \"Hruška\",\n PERSIMMON: \"Dragun\",\n PHYSALIS: \"Physalis\",\n PLUM: \"Sliva / Sliv (Suhe Slive)\",\n PINEAPPLE: \"Ananas\",\n PUMPKIN: \"Buče\",\n POMEGRANATE: \"Šipek\",\n POMELO: \"Pomelo\",\n PURPLE_MANGOSTEEN: \"Vijolična Mangosteen\",\n QUINCE: \"Kutina\",\n RASPBERRY: \"Malina\",\n SALMON_BERRY: \"Losos Jagodami\",\n BLACK_RASPBERRY: \"Črna Malina\",\n RAMBUTAN: \"Rambutan\",\n REDCURRANT: \"Rdeči Ribez\",\n SALAL_BERRY: \"Salal Jagodičja\",\n SATSUMA: \"Satsuma\",\n STAR_FRUIT: \"Karambola\",\n STRAWBERRY: \"Jagoda\",\n SQUASH: \"Squash\",\n TAMARILLO: \"Tamarillo\",\n UGLI_FRUIT: \"Ugli Sadje\",\n\n Mon: 'Pon',\n Tue: 'Tor',\n Wed: 'Sre',\n Thu: 'Čet',\n Fri: 'Pet',\n Sat: 'Sob',\n Sun: 'Ned',\n\n January: 'Januar',\n February: 'Februar',\n March: 'Marec',\n April: 'April',\n May: 'Maj',\n June: 'Junij',\n July: 'Julij',\n August: 'Avgust',\n September: 'September',\n October: 'Oktober',\n November: 'November',\n December: 'December',\n\n SELECT_LOT: 'Input LOT number from product label',\n PLEASE_CHOOSE: 'Pick lot number',\n PLEASE_CHOOSE_ANOTHER_DATE: 'Sorry, a product with this expiration date was not found. Please choose another date',\n\n\n ABOUT: 'Več o sistemu OriginTrail',\n ORIGIN_TRAIL_ABOUT: 'Za hitrejše preverjanje porekla izdelkov si lahko prenesete našo aplikacijo Izvor - by OriginTrail za vaš pametni mobilni telefon.',\n ORIGIN_TRAIL_DOWNLOAD: '',\n JOIN_US: 'Join us'\n };\n\n\n var CN = {\n\n //nav\n HOME: '主页',\n CLIENTS: '合作伙伴',\n ORIGINTRAIL_CONNECTIONS: 'OriginTrail在行动',\n BLOG: '博客',\n LOG_IN: '登录',\n\n FIRST_NAME: '名字',\n FIRST_NAME_PLACEHOLDER: '吴',\n LAST_NAME: '姓',\n LAST_NAME_PLACEHOLDER: '彦祖',\n BUSINESS_EMAIL: '企业邮箱',\n // footer\n\n FOLLOW_US: '关注我们',\n COMPANY: '公司简介',\n GET_IN_TOUCH: '联系我们',\n COPYRIGHT: '版权所有, 2017.OriginTrail.',\n\n // request api page\n TAKE_ADVANTAGE: '获取OriginTrail的开源应用程序接口 (API)',\n API_DOCS_CAN_BE: '获取API文件请点击',\n API_DOCS_CAN_BE2: '这里',\n\n OT_API_FREE_FOR_USE: 'OriginTrail的API文件面向非商业合作伙伴免费开放。如果您有意向进行商业合作,请点击',\n OT_API_FREE_FOR_USE2: '这里。',\n API_REQUEST_FORM: 'API密钥申请表格',\n NAME: '姓名',\n NAME_PLACEHOLDER: '吴彦祖',\n COMPANY_NAME: '公司',\n COMPANY_NAME_PLACEHOLDER: 'XXX有限公司',\n EMAIL: '邮箱',\n EMAIL_PLACEHOLDER: 'xxx@163.com',\n EXPLAIN_USE: '简单说明您将如何使用API',\n EXPLAIN_PLACEHOLDER: '我们想用API拯救世界!',\n\n\n REQUEST_API_KEY: '申请API密钥',\n API_THANK_YOU: '感谢您的申请!',\n API_THANK_YOU2: '您的API密钥是',\n API_THANK_YOU3: '请妥善保存,好好使用我们的API!',\n\n\n SLOGAN: '推广高品质食品',\n SLOGAN_LONG: '我们帮助您建立真实的透明化信息体系,提升您的品牌信誉度,使您在市场中卓尔不群',\n\n\n // request demo\n CONTACT_US_WITH_FORM: '填写表格联系我们',\n WE_WILL_BE_IN_TOUCH: '我们将很快通过电子邮件联系我们',\n YOUR_REQUEST: '你的申请',\n SUBMIT_REQUEST: '提交',\n\n LEARN_MORE: '获取更多展示案例信息',\n REQUEST_DEMO: '获取更多展示案例信息',\n TRANSPARENCY_NORM: '#食品可追溯体系是一种全新的潮流',\n CREATE_VALUE: '利用您已获得的数据创造价值',\n\n FOOD_PRODUCERS: '食品生产者',\n FOOD_PRODUCERS_TEXT: '我们将帮助您利用您已获得的数据建立食品信息透明化体系,提高品牌的公信力。通过追踪食材的原产地和最终产品在供应链中的动态,您可以向消费者证明产品的高品质,您的品牌也将在市场中凸显绝佳的竞争力。',\n\n RETAILERS: '零售商',\n RETAILERS_TEXT: '高效的回应线上线下消费者对于食品信息透明化的要求,在销售时提供来自整个供应链、实时更新的产品数据,使消费者信服。',\n\n FOOD_SERVICE: '餐饮服务业',\n FOOD_SERVICE_TEXT: '利用OriginTrail,您可以轻松地向消费者展示产品的原产地,通过信息透明化阐明“从农田到餐桌”的概念,进一步提高服务的可信度。',\n\n TEST_DRIVE_ORIGINTRAIL: '如何使用OriginTrail检索',\n TRACKING_RAW_INGREDIENTS: '利用OriginTrail追踪原材料信息',\n\n SHOW_ORIGIN: '显示原产地',\n OR_INPUT_A_BARCODE: '输入产品条形码',\n AND_EXPIRY_DATE: '失效期',\n // AND_LOT_NUMBER: 'and the LOT number in this case',\n\n THE_INGREDIENTS_WERE_SOURCED_FROM: 'The ingredients were sourced from these',\n PT_2_SUPPLIERS: 'suppliers',\n\n WANT_TO_SHARE_THE_STORY: '想要分享您的产品故事?',\n WANT_TO_SHARE_TEXT: 'OriginTrail平台将根据您的商业目标帮您制订多渠道的产品推广方案,帮助您的产品在竞争者中脱颖而出。',\n OUR_CLIENTS_STORIES: \"成功案例\",\n\n THE_STORY_OF: '',\n MLEKARNA_CELEIA: 'Mlekarna Celeia乳制品品牌的故事',\n CELEIA_QUOTE: '我们的顾客经常问我们,我们产品中的牛奶原产地是哪里,哪一个牧场,哪一头牛?” 感谢OriginTrail提供的解决方案,我们得以回答顾客们的这些问题,同时也彰显出我们和同类竞争者的重要区别。',\n DARJA_NAME: 'Darja Teržan',\n DARJA_FUNCTION: '首席营销官',\n DOWNLOAD_WHITEPAPER: '下载白皮书',\n NATURETA: 'Natureta公司的故事',\n NATURETA_QUOTE: '每年,食品丑闻都在中伤着消费者对食品行业的信心,因此消费者有权了解食品的原产地。现在,不同的食品生产者已经在向消费者提供有价值的信息这一点上产生了高低悬殊,而我们认为向消费者主动提供产品信息在未来是十分重要的。',\n MARKO_NAME: 'Marko Konič',\n MARKO_FUNCTION: '首席执行官',\n\n PERUTNINA_PTUJ: 'Perutnina Ptuj公司的故事',\n PERUTNINA_TEXT_1: 'OriginTrail帮助我们体现出品牌在高品质禽类饲养加工链的真正价值。我们的产品不仅仅在国内市场销售,还远销包括瑞士在内的海外市场。 Perutnina Ptuj是斯洛文尼亚首个制定最新标准,以保障动物权益的公司,我们的标准甚至比法规规定更加严格。我们饲养的动物生长在舒适的环境中,有充足的日照,充分活动的空间和天然的饲料。',\n PERUTNINA_TEXT_2: '高品质禽类饲养加工链和我们的OriginTrail斯洛文尼亚版APP—',\n AS_SEEN_ON_PICTURE: '(见右图)成功的投入市场。',\n\n\n ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT: 'OriginTrail在行动 - 中国',\n ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT_TEXT: 'OriginTrail与整个供应链网络的各个环节均有合作:欧洲的生产商,中国的物流商、进口商、零售商和餐厅均为OriginTrail的区块链提供实时数据,以保证产品信息真实可靠。',\n\n BLOCKCHAIN: '区块链',\n\n SOURCING: '原料',\n SOURCING_TEXT: '基于时间和产地,提供原料生产信息,同时提供每位生产者持有的有效认证凭证(如原产地认证)。',\n\n PROCESSING: '加工',\n PROCESSING_TEXT: '这部分的信息包括:高品质的原料如何转化成最终产品,这些产品将运输到哪里,运输的数量和时间。',\n DISTRIBUTION: '运输',\n DISTRIBUTION_TEXT: '完善的物流信息持续更新,确保全部产品运输至进口商的仓库。',\n\n\n RETAIL_AND_RESTAURANTS: '零售和餐厅',\n RETAIL_AND_RESTAURANTS_TEXT: '确认之前收集的全部信息,以保证终端消费者购买到的是经过认证的正品。',\n\n HOME_AND_RESTAURANT: '家庭与餐厅',\n HOME_AND_RESTAURANT_TEXT: '提供比产品标签更加详细、真实性经过验证的信息。',\n\n OUR_PARTNERS_AND_INVESTORS: '合作伙伴&投资伙伴',\n BUILDING_THE_GLOBAL_NETWORK: '建立高品质产品的全球物联网络',\n FEATURED_IN: '重点推荐',\n\n READY_TO_TAKE_ADVANTAGE: '准备好迎接愈发重要的食品信息透明化趋势了吗?',\n\n\n ARE_YOU_DEVELOPING_NEXT_GEN_TECH: '正在酝酿下一次食品科技革命?',\n\n OUR_OPEN_API: '我们的API文件向非商业合作伙伴免费开放',\n REQUEST_API_ACCESS: '申请API文件',\n\n\n\n ABOUT_US: '关于我们',\n ABOUT_US_TEXT_1: '我们创办OriginTrail的初衷,是想帮助对待食品原料和产品质量格外用心的食品供应商。在过去的5年中,OriginTrail富有热情的创业团队通过无缝对接的线上方案,利用产品原料的原产地数据向消费者阐明食品可追溯体系和信息透明化体系,成功帮助食品供应商建立起消费者对于产品的信任。在当今食品大生产的时代,我们帮助消费者建立对高品质的食品品牌的信心,同时在世界范围内提高食品的信息透明化。',\n ABOUT_US_TEXT_2: '在过去的几年里,我们的团队吸纳了更多商务、网站建设、食品核心供应链方面的贤士。如今,我们将OriginTrail的线上方案持续扩展,同时将OriginTrail食品供应商社区展示给全球的零售商,为供应商和零售商双方提供商业合作机会。',\n ABOUT_US_TEXT_3: '想了解更多?联系我们!让我们为您提供物超所值的食品商业方案。',\n\n TOMAZ_QUOTE_1: '食品可追溯性是食品行业一次重要的变革。',\n TOMAZ_QUOTE_2: '我们非常兴奋的参与到食品工业十分重要的发展趋势中并且希望将其彻底转化为商业模式。能够及时针对这些需求做出反应的品牌在最终会获得丰厚的利润,而我们十分乐意在这里帮助您实现利润的长足增长。',\n TOMAZ_NAME: 'Tomaž Levak 托马希·立瓦克',\n TOMAZ_TITLE: '首席执行官',\n\n BRANA_QUOTE_1: 'OriginTrail帮助我们的合作伙伴生活得更加便利,同时帮助他们达到他们的商业目标。',\n BRANA_QUOTE_2: '这意味着我们确保所有技术方面的应用转化是快速而有效的。我们利用企业已获得的数据在OringinTrail平台进行转化,而合作伙伴不需要改变他们的产品包装。',\n BRANA_NAME: 'Branimir Rakić 布兰米尔·赫拉瑞',\n BRANA_TITLE: '首席技术官',\n\n ZIGA_QUOTE_1: '我们非常自豪,因为我们帮助我们的合作伙伴在乳品、肉品和其他生产部门通过信息透明化获得了良好的结果。',\n ZIGA_QUOTE_2: '现在,我们开始深化和零售商的合作,从而为我们的合作伙伴提供更多的实体店铺和线上销售的服务,而线上贸易可以为消费者提供更多食品信息。OriginTrail已经准备好帮助食品品牌迎接这项挑战!',\n ZIGA_NAME: 'Žiga Drev 萨格·多雷伍',\n ZIGA_TITLE: '首席运营官',\n\n\n\n\n //Home\n WELCOME_DASHBOARD_1: '欢迎来到OriginTrail用户中心 敬请利用此页面进行查询检索',\n FAQ: '常见问题',\n BACK: '返回',\n FORWARD: '转发',\n WELCOME_DASHBOARD_2: '',\n LATEST_COMMENTS: \"最新留言\",\n ATTENTION: \"注意\",\n FIX: \"Fix\",\n CHOOSE_CATEGORY: '选择分类',\n CHOOSE_TYPE: '选择类别',\n MISSING: \"Missing\",\n MISSING_PRODUCT_TYPE: ' 产品类别',\n FOR: 'There are ',\n MISSING_FACILITIES_LOCATION: ' facilities with missing GPS coordinates',\n CHOOSE: '选择',\n\n // Menu\n // HOME: \"主页\",\n FACILITIES: \"设备\",\n WELCOME: '欢迎',\n HELLO: '您好',\n CATALOGUE: '您的分类',\n SHOWCASE: '信息透明化展示',\n PRODUCERS: '生产商',\n LOG_OUT: '退出',\n\n // Breadcrumbs\n SETTINGS: '设置',\n\n // General\n CLOSE: \"关闭\",\n CANCEL: \"取消\",\n YES: \"是\",\n NO: \"否\",\n //BY: \"By\",\n //AT: \"At\",\n LOAD_OLD: \"Load old\",\n SERVER_ERROR: \"Server error\",\n DATE: \"日期\",\n DESCRIPTION: \"描述\",\n DESCRIPTION_EN: \"Description EN\",\n EDIT: \"编辑\",\n ADDRESS: \"地址\",\n CITY: \"城市\",\n LANUGAGE: \"语言\",\n REQUIRED_FIELD: \"required field\",\n USER: \"使用者\",\n SEARCH: \"搜索\",\n NO_PRODUCT_FIND: \"很抱歉,没有查询到相关产品\",\n LOADING: \"加载\",\n SAVE_MODAL: \"保存\",\n LOCATION: \"地点\",\n SET: \"Set\",\n LAT: \"纬度\",\n LON: \"经度\",\n\n\n // Pagination\n FIRST_TEXT_PAGINATION: \"首页\",\n LAST_TEXT_PAGINATION: \"末页\",\n PREVIOUS_TEXT_PAGINATION: \"前一页\",\n NEXT_TEXT_PAGINATION: \"后一页\",\n\n // Login\n USERNAME: \"用户名\",\n PASSWORD: \"密码\",\n FORGOT_PASSWORD: \"忘记密码?\",\n FAILED_LOGIN: \"登录失败\",\n LOGING: \"正在登录\",\n LOGIN: \"登录\",\n\n // Register\n REGISTER_TITLE: \"以何种身份注册OriginTrail\",\n PRIMARY_PRODUCER: \"食品生产商\",\n PRIMARY_PRODUCER_REG_LINK: \"作为初级生产者注册\",\n ENTERPRISE_PRODUCER: \"企业\",\n ENTERPRISE_PRODUCER_LINK: \"作为enterprise producer注册\",\n // EMAIL: \"邮箱地址\",\n CONFIRM_PASSWORD: \"确认密码\",\n PHONE_NUMBER: \"手机号码\",\n SUBJECT: \"Subject\",\n MESSAGE: \"留言\",\n SUBMIT: \"提交\",\n REQ_VALID: \"Field not valid\",\n PASS_MATCH_ERROR: \"密码不匹配\",\n REGISTRATION_SUCCESSFUL: \"注册成功\",\n USERNAME_IS_TAKEN: \"该用户名已被注册\",\n\n // Settings\n COUNTRY: \"国家\",\n WEBISTE: \"网站\",\n // COMPANY: \"公司\",\n // NAME: \"姓名\",\n MID_OR_TAX: \"Mid or Tax\",\n DASHBOARD_LANGUAGE: '用户中心语言',\n ALL_LANGUAGE_DESCRIPTION_ERROR: \"请填写全部描述\",\n SETTING_UPDATE_SUCCESS: \"成功更新设置\",\n SETTING_UPDATE_ERROR: \"更新设置有误\",\n\n // Logout\n DO_YOU_WANT_TO_LOG_OUT: \"确认退出?\",\n\n\n // Categories\n CERTIFICATES: '证书',\n TRY_ANOTHER_PRODUCT: '试试查找别的产品?点击这里',\n //LOADING: '加载中',\n //SEARCH: '查找',\n ENTER_PRODUCT_BARCODE: '请输入产品条形码',\n BARCODE_INSTRUCTION_STEP_1: '1. 在包装上找到条形码',\n BARCODE_INSTRUCTION_STEP_2: '2. 输入条形码下方的数字',\n BARCODE_INSTRUCTION_STEP_3: '3. 获取更多有关该产品的信息',\n //NO_PRODUCT_FIND: '很抱歉,没有查询到相关产品',\n VIEW_TRAIL: 'Click to view trail',\n CHOOSE_EXPIRY_DATE: '请输入产品有效期',\n VIEW_TRAIL_TEXT: 'To access the trail of origin put in date of expiration',\n PICK_DATE_TRAIL_TEXT: '选择生产日期',\n INGREDIENTS: '配料',\n FINDING_SPECIFIC_INFO_BY_CLICKING_ON_MAP_PINS: 'Find specific info about the facility by clicking on map pins',\n NUTRITION_INFORMATION: '营养成分表',\n NUTRITION_INFORMATION_DESCRIPTION: '每100g产品',\n\n CALORIES: '热量',\n TOTAL_FAT: '脂肪',\n TOTAL_CARBOHYDRATE: '碳水化合物',\n SUGAR: '糖',\n FROM_THAT_SUGAR: '--糖',\n SATURATED_FAT: '饱和脂肪',\n FROM_THAT_SATURATED_FAT: '--饱和脂肪',\n FIBER: '膳食纤维',\n PROTEIN: '蛋白质',\n SODIUM: '钠',\n SALT: '盐',\n CALCIUM: '钙',\n VITAMIN_A: '维生素A',\n VITAMIN_B6: '维生素B6',\n VITAMIN_B12: '维生素B12',\n VITAMIN_C: '维生素C',\n VITAMIN_D: '维生素D',\n VITAMIN_E: '维生素E',\n PHOSPHORUS: '磷',\n MAGNESIUM: '镁',\n IRON: '铁',\n SELEN: '硒',\n GLUTENE: '麸质',\n GLUTENE_FREE: '不含麸质',\n PER_100G: '每100g',\n\n meat: \"肉类\",\n dairy: \"乳制品\",\n vegetables: \"蔬菜\",\n fruit: \"水果\",\n specialty_products: '特产品',\n all: '全部产品',\n CHICKEN: \"鸡肉\",\n MILK: \"液体奶\",\n COW_MILK: \"牛奶\",\n MIXED_MILK: \"混合奶\",\n YOGHURT: \"酸奶\",\n SOUR_MILK: \"乳酸菌饮料\",\n CURD: \"凝固型乳制品\",\n CURDLED_MILK: \"凝固型牛奶\",\n DAIRY_CREAM: \"乳制品奶油\",\n CREAM: \"奶油\",\n KAYMAK: \"土耳其奶油\",\n BUTTER: \"黄油\",\n CHEESE: \"奶酪\",\n SALAD: \"沙拉\",\n MIXED_VEGETABLES: \"混合蔬菜\",\n RED_CARROTS: \"胡萝卜\",\n YELLOW_CARROTS: \"黄萝卜\",\n ONIONS: \"洋葱\",\n TUBERS: \"块茎类\",\n YOGURT: \"酸奶 \",\n PROBIOTIC_YOGURT: \"益生菌酸奶 \",\n SPREAD: \"涂抹奶酪 \",\n COTTAGE_CHEESE: \"农夫奶酪\",\n KEFIR: \"开菲尔\",\n GOAT_MILK: \"山羊奶\",\n SHEEP_MILK: \"绵羊奶\",\n FRESH_MEAT: \"新鲜肉类\",\n MEAT_PRODUCTS: \"肉制品\",\n ANIMAL_FAT_AND_SPREADS: \"动物油脂及涂抹油脂\",\n CHICKEN_MEAT: \"鸡肉\",\n PORK_MEAT: \"猪肉\",\n TURKEY: \"火鸡肉\",\n SHEEP_MEAT: \"羊肉\",\n BEEF: \"牛肉\",\n WILD_ANIMALS: \"野生动物\",\n DUCK_MEAT: \"鸭肉\",\n PEPPER: \"胡椒\",\n TOMATO: \"番茄\",\n CUCUMBER: \"黄瓜\",\n CABBAGE: \"卷心菜\",\n RADICCHIO: \"紫叶菊苣\",\n ENDIVE: \"菊苣\",\n KRISTAL_SALAD: \"Kristal salad\",\n POTATO: \"土豆/马铃薯\",\n ZUCCHINI: \"西葫芦\",\n ONION: \"洋葱\",\n RED_CABBAGE: \"紫甘蓝\",\n SWEDES: \"芜菁\",\n CAULIFLOWER: \"白花菜\",\n HOT_PEPPERS: \"辣椒\",\n EGGPLANT: \"茄子\",\n BLACK_RADISH: \"黑皮萝卜\",\n CHINESE_CABBAGE: \"白菜\",\n SOUR_CABBAGE: \"德国酸菜\",\n SOUR_TURNIPS: \"酸萝卜\",\n RED_TURNIPS: \"红萝卜\",\n SPROUTS: \"Sprouts\",\n BRUSSELS_SPROUTS: \"抱子甘蓝\",\n BROCCOLI: \"西兰花\",\n EARLY_POTATOES: \"Early potatos\",\n PACKED_VEGETABLES: \"包装蔬菜\",\n SELFPICKED_VEGETABLES: \"自采摘蔬菜\",\n PICKLED_VEGETABLES: \"泡菜\",\n LETTUCE: \"生菜\",\n BEANS: \"豆类\",\n PARSLEY: \"洋香菜\",\n GARLIC: \"大蒜\",\n SHALLOTS: \"红葱头\",\n MINCED_AND_CANDIED_FRUIT: \"罐头切块水果\",\n SELFPICKED_FRUIT_: \"自采摘水果 \",\n PACKED_FRUIT_: \"包装水果\",\n APPLE: \"苹果\",\n APRICOT: \"杏\",\n AVOCADO: \"牛油果\",\n BANANA: \"香蕉\",\n BILBERRY: \"覆盆子\",\n BLACKBERRY: \"黑莓\",\n BLACKCURRANT: \"黑醋栗\",\n BLUEBERRY: \"蓝莓\",\n BOYSENBERRY: \"Boysenberry\",\n CANTALOUPE: \"甜瓜\",\n CURRANT: \"醋栗\",\n CHERRY: \"樱桃\",\n CHERIMOYA: \"释迦果\",\n CLOUDBERRY: \"野生黄莓\",\n COCONUT: \"椰子\",\n CRANBERRY: \"蔓越莓\",\n DAMSON: \"李子\",\n //DATE: \"椰枣\",\n DRAGONFRUIT: \"火龙果\",\n DURIAN: \"榴莲\",\n ELDERBERRY: \"接骨木果\",\n FEIJOA: \"斐济果\",\n FIG: \"无花果\",\n GOJI_BERRY: \"枸杞\",\n GOOSEBERRY: \"灯笼果\",\n GRAPE: \"葡萄\",\n RAISIN: \"葡萄干\",\n GRAPEFRUIT: \"葡萄柚\",\n GUAVA: \"番石榴\",\n HUCKLEBERRY: \"越橘\",\n JABOUTICABA: \"嘉宝果\",\n JACKFRUIT: \"菠萝蜜\",\n JAMBUL: \"莲雾\",\n JUJUBE: \"鲜枣\",\n JUNIPER_BERRY: \"杜松果\",\n KIWI_FRUIT: \"奇异果\",\n KIWANO: \"刺角瓜\",\n KUMQUAT: \"金桔\",\n LEMON: \"柠檬\",\n LIME: \"青柠\",\n LOQUAT: \"枇杷\",\n LYCHEE: \"荔枝\",\n MANGO: \"芒果\",\n MARION_BERRY: \"Marion berry\",\n MELON: \"甜瓜\",\n HONEYDEW: \"白兰瓜\",\n WATERMELON: \"西瓜\",\n MIRACLE_FRUIT: \"神秘果\",\n MULBERRY: \"桑葚\",\n NECTARINE: \"油桃\",\n OLIVE: \"橄榄\",\n ORANGE: \"橙子\",\n BLOOD_ORANGE: \"血橙\",\n CLEMENTINE: \"橘子\",\n MANDARINE: \"柑橘\",\n TANGERINE: \"橘子\",\n PAPAYA: \"木瓜\",\n PASSIONFRUIT: \"百香果\",\n PEACH: \"桃\",\n PEAR: \"梨\",\n PERSIMMON: \"柿子\",\n PHYSALIS: \"灯笼果\",\n PLUM: \"梅子/梅干\",\n PINEAPPLE: \"菠萝\",\n PUMPKIN: \"南瓜\",\n POMEGRANATE: \"石榴\",\n POMELO: \"柚子\",\n PURPLE_MANGOSTEEN: \"山竹\",\n QUINCE: \"木梨\",\n RASPBERRY: \"覆盆子\",\n SALMON_BERRY: \"美洲大树莓\",\n BLACK_RASPBERRY: \"黑覆盆子\",\n RAMBUTAN: \"红毛丹\",\n REDCURRANT: \"红加仑\",\n SALAL_BERRY: \"北美白竹树果\",\n SATSUMA: \"无核小蜜橘\",\n STAR_FRUIT: \"杨桃\",\n STRAWBERRY: \"草莓\",\n SQUASH: \"贝贝南瓜\",\n TAMARILLO: \"树番茄\",\n UGLI_FRUIT: \"丑橘\",\n\n\n \"AD\": \"安道尔\",\n \"AE\": \"阿联酋\",\n \"AF\": \"阿富汗\",\n \"AG\": \"安地卡及巴布達\",\n \"AI\": \"安圭拉\",\n \"AL\": \"阿尔巴尼亚\",\n \"AM\": \"亞美尼亞\",\n \"AO\": \"安哥拉\",\n \"AQ\": \"南极洲\",\n \"AR\": \"阿根廷\",\n \"AS\": \"美属萨摩亚\",\n \"AT\": \"奥地利\",\n \"AU\": \"澳大利亚\",\n \"AW\": \"阿鲁巴\",\n \"AX\": \"奧蘭\",\n \"AZ\": \"阿塞拜疆\",\n \"BA\": \"波斯尼亚和黑塞哥维那\",\n \"BB\": \"巴巴多斯\",\n \"BD\": \"孟加拉国\",\n \"BE\": \"比利時\",\n \"BF\": \"布吉納法索\",\n \"BG\": \"保加利亚\",\n \"BH\": \"巴林\",\n \"BI\": \"布隆迪\",\n \"BJ\": \"贝宁\",\n \"BL\": \"圣巴泰勒米\",\n \"BM\": \"百慕大\",\n \"BN\": \"文莱\",\n \"BO\": \"玻利维亚\",\n \"BQ\": \"加勒比荷兰\",\n \"BR\": \"巴西\",\n \"BS\": \"巴哈马\",\n \"BT\": \"不丹\",\n \"BV\": \"布韦岛\",\n \"BW\": \"博茨瓦纳\",\n \"BY\": \"白俄羅斯\",\n \"BZ\": \"伯利兹\",\n \"CA\": \"加拿大\",\n \"CC\": \"科科斯(基林)群島\",\n \"CD\": \"刚果(金)\",\n \"CF\": \"中非\",\n \"CG\": \"刚果(布)\",\n \"CH\": \"瑞士\",\n \"CI\": \"科特迪瓦\",\n \"CK\": \"庫克群島\",\n \"CL\": \"智利\",\n \"CM\": \"喀麦隆\",\n \"CN\": \"中国\",\n \"CO\": \"哥伦比亚\",\n \"CR\": \"哥斯达黎加\",\n \"CU\": \"古巴\",\n \"CV\": \"佛得角\",\n \"CW\": \"库拉索\",\n \"CX\": \"圣诞岛\",\n \"CY\": \"賽普勒斯\",\n \"CZ\": \"捷克\",\n \"DE\": \"德國\",\n \"DJ\": \"吉布提\",\n \"DK\": \"丹麥\",\n \"DM\": \"多米尼克\",\n \"DO\": \"多米尼加\",\n \"DZ\": \"阿尔及利亚\",\n \"EC\": \"厄瓜多尔\",\n \"EE\": \"爱沙尼亚\",\n \"EG\": \"埃及\",\n \"EH\": \"阿拉伯撒哈拉民主共和国\",\n \"ER\": \"厄立特里亚\",\n \"ES\": \"西班牙\",\n \"ET\": \"衣索比亞\",\n \"FI\": \"芬兰\",\n \"FJ\": \"斐济\",\n \"FK\": \"福克蘭群島\",\n \"FM\": \"密克羅尼西亞聯邦\",\n \"FO\": \"法罗群岛\",\n \"FR\": \"法国\",\n \"GA\": \"加彭\",\n \"GB\": \"英國\",\n \"GD\": \"格瑞那達\",\n \"GE\": \"格鲁吉亚\",\n \"GF\": \"法属圭亚那\",\n \"GG\": \"根西\",\n \"GH\": \"加纳\",\n \"GI\": \"直布罗陀\",\n \"GL\": \"格陵兰\",\n \"GM\": \"冈比亚\",\n \"GN\": \"几内亚\",\n \"GP\": \"瓜德罗普\",\n \"GQ\": \"赤道几内亚\",\n \"GR\": \"希臘\",\n \"GS\": \"南乔治亚和南桑威奇群岛\",\n \"GT\": \"危地马拉\",\n \"GU\": \"關島\",\n \"GW\": \"几内亚比绍\",\n \"GY\": \"圭亚那\",\n \"HK\": \"香港\",\n \"HM\": \"赫德岛和麦克唐纳群岛\",\n \"HN\": \"宏都拉斯\",\n \"HR\": \"克罗地亚\",\n \"HT\": \"海地\",\n \"HU\": \"匈牙利\",\n \"ID\": \"印尼\",\n \"IE\": \"爱尔兰\",\n \"IL\": \"以色列\",\n \"IM\": \"马恩岛\",\n \"IN\": \"印度\",\n \"IO\": \"英屬印度洋領地\",\n \"IQ\": \"伊拉克\",\n \"IR\": \"伊朗\",\n \"IS\": \"冰島\",\n \"IT\": \"義大利\",\n \"JE\": \"澤西\",\n \"JM\": \"牙买加\",\n \"JO\": \"约旦\",\n \"JP\": \"日本\",\n \"KE\": \"肯尼亚\",\n \"KG\": \"吉尔吉斯斯坦\",\n \"KH\": \"柬埔寨\",\n \"KI\": \"基里巴斯\",\n \"KM\": \"科摩罗\",\n \"KN\": \"圣基茨和尼维斯\",\n \"KP\": \"朝鲜\",\n \"KR\": \"韩国\",\n \"KW\": \"科威特\",\n \"KY\": \"开曼群岛\",\n \"KZ\": \"哈萨克斯坦\",\n \"LA\": \"老挝\",\n \"LB\": \"黎巴嫩\",\n \"LC\": \"圣卢西亚\",\n \"LI\": \"列支敦斯登\",\n \"LK\": \"斯里蘭卡\",\n \"LR\": \"利比里亚\",\n \"LS\": \"賴索托\",\n \"LT\": \"立陶宛\",\n \"LU\": \"卢森堡\",\n \"LV\": \"拉脫維亞\",\n \"LY\": \"利比亞\",\n \"MA\": \"摩洛哥\",\n \"MC\": \"摩納哥\",\n \"MD\": \"摩尔多瓦\",\n \"ME\": \"蒙特內哥羅\",\n \"MF\": \"法属圣马丁\",\n \"MG\": \"马达加斯加\",\n \"MH\": \"马绍尔群岛\",\n \"MK\": \"馬其頓\",\n \"ML\": \"马里\",\n \"MM\": \"緬甸\",\n \"MN\": \"蒙古\",\n \"MO\": \"澳門\",\n \"MP\": \"北馬里亞納群島\",\n \"MQ\": \"马提尼克\",\n \"MR\": \"毛里塔尼亚\",\n \"MS\": \"蒙特塞拉特\",\n \"MT\": \"馬爾他\",\n \"MU\": \"模里西斯\",\n \"MV\": \"馬爾地夫\",\n \"MW\": \"马拉维\",\n \"MX\": \"墨西哥\",\n \"MY\": \"马来西亚\",\n \"MZ\": \"莫桑比克\",\n \"NA\": \"纳米比亚\",\n \"NC\": \"新喀里多尼亞\",\n \"NE\": \"尼日尔\",\n \"NF\": \"诺福克岛\",\n \"NG\": \"奈及利亞\",\n \"NI\": \"尼加拉瓜\",\n \"NL\": \"荷蘭\",\n // \"NO\": \"挪威\",\n \"NP\": \"尼泊尔\",\n \"NR\": \"瑙鲁\",\n \"NU\": \"纽埃\",\n \"NZ\": \"新西蘭\",\n \"OM\": \"阿曼\",\n \"PA\": \"巴拿马\",\n \"PE\": \"秘魯\",\n \"PF\": \"法屬玻里尼西亞\",\n \"PG\": \"巴布亚新几内亚\",\n \"PH\": \"菲律賓\",\n \"PK\": \"巴基斯坦\",\n \"PL\": \"波蘭\",\n \"PM\": \"圣皮埃尔和密克隆\",\n \"PN\": \"皮特凯恩群岛\",\n \"PR\": \"波多黎各\",\n \"PS\": \"巴勒斯坦\",\n \"PT\": \"葡萄牙\",\n \"PW\": \"帛琉\",\n \"PY\": \"巴拉圭\",\n \"QA\": \"卡塔尔\",\n \"RE\": \"留尼汪\",\n \"RO\": \"羅馬尼亞\",\n \"RS\": \"塞爾維亞\",\n \"RU\": \"俄羅斯\",\n \"RW\": \"卢旺达\",\n \"SA\": \"沙烏地阿拉伯\",\n \"SB\": \"所罗门群岛\",\n \"SC\": \"塞舌尔\",\n \"SD\": \"苏丹\",\n \"SE\": \"瑞典\",\n \"SG\": \"新加坡\",\n \"SH\": \"聖赫勒拿\",\n \"SI\": \"斯洛維尼亞\",\n \"SJ\": \"斯瓦尔巴群岛和扬马延岛\",\n \"SK\": \"斯洛伐克\",\n \"SL\": \"塞拉利昂\",\n \"SM\": \"圣马力诺\",\n \"SN\": \"塞内加尔\",\n \"SO\": \"索馬利亞\",\n \"SR\": \"苏里南\",\n \"SS\": \"南蘇丹\",\n \"ST\": \"聖多美和普林西比\",\n \"SV\": \"薩爾瓦多\",\n \"SX\": \"荷屬聖馬丁\",\n \"SY\": \"叙利亚\",\n \"SZ\": \"斯威士兰\",\n \"TC\": \"特克斯和凯科斯群岛\",\n \"TD\": \"乍得\",\n \"TF\": \"法属南部领地\",\n \"TG\": \"多哥\",\n \"TH\": \"泰國\",\n \"TJ\": \"塔吉克斯坦\",\n \"TK\": \"托克勞\",\n \"TL\": \"东帝汶\",\n \"TM\": \"土库曼斯坦\",\n \"TN\": \"突尼西亞\",\n \"TO\": \"汤加\",\n \"TR\": \"土耳其\",\n \"TT\": \"千里達及托巴哥\",\n \"TV\": \"图瓦卢\",\n \"TW\": \"臺灣\",\n \"TZ\": \"坦桑尼亚\",\n \"UA\": \"烏克蘭\",\n \"UG\": \"乌干达\",\n \"UM\": \"美國本土外小島嶼\",\n \"US\": \"美國\",\n \"UY\": \"乌拉圭\",\n \"UZ\": \"乌兹别克斯坦\",\n \"VA\": \"梵蒂冈\",\n \"VC\": \"聖文森及格瑞那丁\",\n \"VE\": \"委內瑞拉\",\n \"VG\": \"英屬維爾京群島\",\n \"VI\": \"美屬維爾京群島\",\n \"VN\": \"越南\",\n \"VU\": \"瓦努阿圖\",\n \"WF\": \"瓦利斯和富圖納\",\n \"WS\": \"萨摩亚\",\n \"YE\": \"葉門\",\n \"YT\": \"马约特\",\n \"ZA\": \"南非\",\n \"ZM\": \"尚比亞\",\n \"ZW\": \"辛巴威\",\n \"XK\": \"科索沃\",\n\n\n // Product\n CHOOSE_PRODUCT_TYPE: '选择产品类别',\n PRODUCT: \"单个产品\",\n PRODUCTS: \"多个产品\",\n CONSUMER: \"消费者\",\n IMPORTED_PRODUCTS: \"进口产品\",\n PRODUCT_NAME: \"产品名称\",\n PRODUCT_PICTURE: \"产品图片\",\n PRODUCT_UPDATE_ERROR: \"产品更新出现错误\",\n AVERAGE_RATING: \"Average rating\",\n RATE_NUMBER: \"Rate number\",\n PLEASE_ENTER_DISPLAY_NAME: \"请输入展示名称\",\n PRODUCT_TYPE: \"产品类别\",\n NO_COMMENTS_FOR_THIS_PRODUCT: \"对此产品没有任何评论\",\n INGREDIENT: \"配料\",\n\n // Stamps\n HIGHER_QUALITY_SI: \"更高质量 SI\",\n HONEY_SWEETENER_SI: \"以蜂蜜作为甜味剂 SI\",\n LOW_FAT_SI: \"低脂 SI\",\n WITH_WHEAT_SI: \"含有小麦 SI\",\n GMO_FREE_SI: \"非转基因 SI\",\n\n //Facilities\n FACILITY: \"Facility\",\n\n // ------- translate from here\n\n // Pagination\n SHOWING: \"正在加载\",\n PAGE: '页',\n //TO: \"跳转到\",\n OF: \"当前页\",\n ENTRIES: \"进入\",\n\n\n // showcase page\n SHOWCASE_TITLE: 'OriginTrail展示页',\n SHOWCASE_TEXT_P1: '欢迎使用查询功能,全部产品均已应用OriginTrail实时信息透明化系统,方便您快速的查询到每件产品中主要原料的种植者/生产者',\n\n SHOWCASE_TEXT_P2: '我们在“产品分类”中为您准备的所有产品的展示方式和您将这些产品添加到您的分类中的展示方式相同',\n AND_LOT_NUMBER: ' 生产批号',\n CHECK_ORIGIN: '查询生产源',\n MEET_THE_FARMERS: '查询种植者',\n PROVIDED: '已提供',\n HELP: '帮帮我',\n // producers page\n PRODUCER: '生产者',\n VIEW_MORE: '显示更多',\n\n\n // product page\n COUNTRY_OF_ORIGIN: '来源国',\n MORE_FROM: '更多',\n\n // wechat popup\n FOR_ASSISTANCE_WECHAT: '想了解更多,请在微信上关注我们: OriginTrail',\n\n MAP: '地图',\n SUPPLIERS: '供应商',\n BRAND: '牌',\n GO_TO_WEBSITE: '网站',\n FARMERS: '农民',\n SHOW_MORE: '展示更多',\n SHOW_LESS: '显示较少',\n PHYSICAL_STORES: '实体店',\n ONLINE_RETAIL: '网上零售',\n ORIGINTRAIL_TRANSPARENCY: 'OriginTrail 透明度 在',\n CONTACT: '联系',\n\n JOIN_US: '加入我们'\n };\n\n\n $translateProvider.translations('en', EN);\n $translateProvider.translations('si', SI);\n $translateProvider.translations('cn', CN);\n // $translateProvider.useSanitizeValueStrategy('sanitize');\n\n $translateProvider.preferredLanguage('cn');\n\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .service('xHttp', xHttp);\n\n /** @ngInject */\n function xHttp($log, $rootScope, $http, $state, apiUrl) {\n\n var headers = {\n 'Content-Type': 'application/json',\n // 'Accept': '*',\n 'language': 'EN',\n 'provider': 'ALL'\n };\n\n return {\n 'ajax': function(method, relativeUrl, callback, errorCallback, data) {\n\n\n\n // if (localStorageService.get('userId')) {\n // headers.user = localStorageService.get('userId');\n // }\n\n // headers.iduser = localStorageService.get('userId');\n if ($rootScope.pickup && $rootScope.pickup.id_facility) {\n headers.idpickup = $rootScope.pickup.id_facility;\n }\n var validData = data ? data : '';\n // var validHeaders = headers ? headers : null;\n var targetUrl = (relativeUrl.indexOf('http') != -1) ? relativeUrl : apiUrl + relativeUrl;\n\n $http({\n method: method,\n url: targetUrl,\n headers: headers,\n data: validData\n }).success(function(response) {\n $log.debug('Successful AJAX call.');\n\n // Status: ok\n if (response.meta && response.meta.code === 200) {\n callback(response);\n return;\n }\n\n // Status: Unauthorised\n if (response.meta && response.meta.code === 400) {\n $log.debug('Ajax error');\n\n if (errorCallback) {\n errorCallback(response);\n return;\n }\n }\n\n // Status: Error faild\n if (response.meta && response.meta.code === 501 && errorCallback) {\n errorCallback(response);\n return;\n }\n //Status: Error faild\n if (response.meta && response.meta.code === 201 && errorCallback) {\n errorCallback(response);\n return;\n }\n\n //Status: Error, missed password in user settings\n if (response.meta && response.meta.code === 202) {\n callback(response);\n return;\n }\n\n // Status: Error faild\n if (response.meta && response.meta.code === 500 && errorCallback) {\n errorCallback(response);\n return;\n }\n\n // Status Value Is Less Then Requiered\n if (response.meta && response.meta.code === 204 && errorCallback) {\n errorCallback(response);\n return;\n }\n\n if (response) {\n callback(response);\n return;\n }\n\n }).error(function(response) {\n $log.debug('Ajax error');\n $log.debug(response);\n\n // Error Callback if exist\n if (errorCallback) {\n errorCallback(response);\n }\n });\n },\n 'post': function(relativeUrl, data, callback, errorCallback) {\n return this.ajax('POST', relativeUrl, callback, errorCallback, data);\n },\n 'put': function(relativeUrl, data, callback, errorCallback) {\n return this.ajax('PUT', relativeUrl, callback, errorCallback, data);\n },\n 'get': function(relativeUrl, callback, errorCallback) {\n return this.ajax('GET', relativeUrl, callback, errorCallback);\n },\n 'delete': function(relativeUrl, callback, errorCallback) {\n return this.ajax('DELETE', relativeUrl, callback, errorCallback);\n }\n };\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('ProspehAnalytics', ProspehAnalytics);\n\n function ProspehAnalytics($timeout, $window, $log, $location) {\n\n var analytics = {};\n\n function initAnalytics(analyticsID) {\n\n $timeout(function() {\n if ($window.ga) {\n $window.ga('create', analyticsID, 'auto');\n $log.debug('Google Analytics initiated');\n }\n\n });\n\n }\n\n function pageView() {\n if ($window.ga) {\n $window.ga('send', 'pageview', $location.path());\n $log.debug('GA - pageview sent: ' + $location.path());\n }\n }\n\n function event(eventCategory, eventName, eventText) {\n if ($window.ga) {\n $window.ga('send', 'event', eventCategory, eventName, eventText);\n $log.debug('GA - event sent: ' + eventName);\n return true;\n } else {\n return false;\n }\n\n }\n\n function setUserID(userId) {\n if ($window.ga) {\n $window.ga('set', 'userId', userId);\n return true;\n } else {\n return false;\n }\n }\n\n\n return {\n initAnalytics: initAnalytics,\n pageView: pageView,\n event: event,\n setUserID: setUserID\n };\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('modalService', modalService);\n\n /** @ngInject */\n function modalService($log, $uibModal, $timeout, xHttp) {\n\n var modalInstance;\n\n\n function close() {\n if (modalInstance) {\n modalInstance.close();\n }\n }\n\n // whitepaper modal\n\n function whitePaperModal(index) {\n\n modalInstance = $uibModal.open({\n templateUrl: 'app/components/modals/whitepapers.html',\n controller: WhitePaperCtrl,\n });\n return modalInstance;\n }\n\n function WhitePaperCtrl($scope, $uibModalInstance, $log) {\n\n $scope.wformdata = {\n zelenedoline: false,\n natureta: false,\n perutnina: false,\n };\n $scope.showThanks = false;\n $scope.requestWhitePapers = function() {\n $log.debug($scope.wformdata);\n var data = {\n message: $scope.wformdata,\n message_type: 'whitepapers'\n };\n xHttp.post('site-message', data, function(response) {\n console.log(response);\n if (response=='OK'){\n $scope.showThanks = true;\n }\n });\n };\n\n $scope.close = function() {\n close();\n };\n }\n\n return {\n whitePaperModal: whitePaperModal,\n close: close\n };\n }\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('mapService', mapService);\n\n /** @ngInject */\n function mapService($log, $rootScope, $window, $timeout) {\n var pin = null;\n // var z = 1;\n var google = $window.google;\n if (google !== undefined) {\n pin = {\n url: \"/assets/images/farm_pin.png\",\n size: new google.maps.Size(144, 144), // the orignal size\n scaledSize: new google.maps.Size(50, 50), // the new size you want to use\n origin: new google.maps.Point(0, 0), // position in the sprite\n anchor: new google.maps.Point(25, 50),\n };\n }\n\n function CustomMarker(lat, lon, map, args, image, farm_name, clickCallback) {\n this.latlng = new google.maps.LatLng(lat, lon);\n this.args = args;\n this.setMap(map);\n this.image = image ? image : null;\n this.farm_name = farm_name ? farm_name : null;\n this.clickCallback = clickCallback ? clickCallback : null;\n }\n\n CustomMarker.prototype = new google.maps.OverlayView();\n\n CustomMarker.prototype.onAdd = function() {\n var self = this,\n z = 1;\n var div = document.createElement('div');\n var htmlcode =\n '
\"\"\"Farm';\n\n if (self.farm_name) {\n htmlcode += '
' + self.farm_name + '
';\n } else {\n htmlcode += '';\n\n }\n\n div.innerHTML = htmlcode;\n div.style.position = 'absolute';\n div.style.zIndex = z++; // da se ne bi preklapale slike sa pinovima\n div.style.cursor = 'pointer';\n div.style.visibiility = 'visible';\n if (typeof(self.args.marker_id) !== 'undefined') {\n div.dataset.marker_id = self.args.marker_id;\n }\n this.div = div;\n var panes = this.getPanes();\n panes.floatPane.appendChild(div);\n };\n CustomMarker.prototype.draw = function() {\n\n var self = this,\n div = this.div;\n\n google.maps.event.addDomListener(div, \"click\", function(event) {\n google.maps.event.trigger(self, \"click\");\n if (self.clickCallback) {\n\n self.clickCallback(self.args.marker_id);\n }\n });\n\n var point = this.getProjection().fromLatLngToDivPixel(this.latlng);\n if (point) {\n div.style.left = (point.x - 50) + 'px';\n div.style.top = (point.y - 100) + 'px';\n }\n };\n\n CustomMarker.prototype.remove = function() {\n if (this.div) {\n this.div.parentNode.removeChild(this.div);\n this.div = null;\n }\n };\n CustomMarker.prototype.onRemove = function() {\n this.div.parentNode.removeChild(this.div);\n this.div = null;\n };\n\n CustomMarker.prototype.getPosition = function() {\n return this.latlng;\n };\n\n function icon() {\n return pin;\n }\n\n function createMap(elementId, lat, lon, title, callback) {\n\n $timeout(function() {\n if (document.getElementById(elementId)) {\n var myLatlng = new google.maps.LatLng(parseFloat(lat), parseFloat(lon));\n var googleLatLon = {\n lat: parseFloat(lat),\n lng: parseFloat(lon)\n };\n var isDraggable = $window.innerWidth > 480 ? true : false;\n\n var options = {\n // draggable: isDraggable,\n center: googleLatLon,\n // scrollwheel: false,\n zoom: 10,\n mapTypeId: 'satellite',\n gestureHandling: 'cooperative',\n mapTypeControlOptions: {\n style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,\n position: google.maps.ControlPosition.TOP_RIGHT\n },\n };\n\n var map = new google.maps.Map(document.getElementById(elementId), options);\n var icon = pin;\n\n repositionMap(map, lat, lon);\n\n if (callback) {\n callback(map);\n }\n } else {\n $log.debug('ne pravim mapu');\n }\n }, 1);\n }\n\n function createMarker(mapObject, lat, lon, title, facility_id, clickCallback) {\n lat = parseFloat(lat);\n lon = parseFloat(lon);\n\n var myLatlng = new google.maps.LatLng(lat, lon);\n\n var googleLatLon = {\n lat: lat,\n lng: lon\n };\n var isDraggable = $window.innerWidth > 480 ? true : false;\n\n\n var options = {\n draggable: isDraggable,\n center: googleLatLon,\n scrollwheel: false,\n zoom: 12,\n mapTypeId: 'satellite',\n };\n\n //var map = new google.maps.Map(document.getElementById(mapElementId), options);\n\n\n var marker = new google.maps.Marker({\n map: mapObject,\n title: title,\n icon: pin,\n position: googleLatLon\n });\n marker.set('id', facility_id);\n google.maps.event.addListener(marker, 'click', function() {\n $rootScope.selectedFarmId = marker.get('id');\n\n $rootScope.selectedMarker = marker;\n if (clickCallback) {\n clickCallback($rootScope.selectedFarmId);\n }\n\n });\n return marker;\n // repositionMap(map, lat, lon);\n }\n\n function repositionMap(map, lat, lon) {\n var latLng = new google.maps.LatLng(lat, lon);\n map.setCenter(latLng);\n }\n\n function setMapOnAll(markers, map) {\n for (var i = 0; i < markers.length; i++) {\n markers[i].setMap(map);\n }\n\n }\n\n return {\n icon: icon,\n createMap: createMap,\n CustomMarker: CustomMarker,\n createMarker: createMarker,\n repositionMap: repositionMap,\n setMapOnAll: setMapOnAll\n };\n }\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('preloader', preloader);\n\n /** @ngInject */\n function preloader($q, $rootScope) {\n // I manage the preloading of image objects. Accepts an array of image URLs.\n function Preloader(imageLocations) {\n // I am the image SRC values to preload.\n this.imageLocations = imageLocations;\n // As the images load, we'll need to keep track of the load/error\n // counts when announing the progress on the loading.\n this.imageCount = this.imageLocations.length;\n this.loadCount = 0;\n this.errorCount = 0;\n // I am the possible states that the preloader can be in.\n this.states = {\n PENDING: 1,\n LOADING: 2,\n RESOLVED: 3,\n REJECTED: 4\n };\n // I keep track of the current state of the preloader.\n this.state = this.states.PENDING;\n // When loading the images, a promise will be returned to indicate\n // when the loading has completed (and / or progressed).\n this.deferred = $q.defer();\n this.promise = this.deferred.promise;\n }\n // ---\n // STATIC METHODS.\n // ---\n // I reload the given images [Array] and return a promise. The promise\n // will be resolved with the array of image locations.\n Preloader.preloadImages = function(imageLocations) {\n var preloader = new Preloader(imageLocations);\n return (preloader.load());\n };\n // ---\n // INSTANCE METHODS.\n // ---\n Preloader.prototype = {\n // Best practice for \"instnceof\" operator.\n constructor: Preloader,\n // ---\n // PUBLIC METHODS.\n // ---\n // I determine if the preloader has started loading images yet.\n isInitiated: function isInitiated() {\n return (this.state !== this.states.PENDING);\n },\n // I determine if the preloader has failed to load all of the images.\n isRejected: function isRejected() {\n return (this.state === this.states.REJECTED);\n },\n // I determine if the preloader has successfully loaded all of the images.\n isResolved: function isResolved() {\n return (this.state === this.states.RESOLVED);\n },\n // I initiate the preload of the images. Returns a promise.\n load: function load() {\n // If the images are already loading, return the existing promise.\n if (this.isInitiated()) {\n return (this.promise);\n }\n this.state = this.states.LOADING;\n for (var i = 0; i < this.imageCount; i++) {\n this.loadImageLocation(this.imageLocations[i]);\n }\n // Return the deferred promise for the load event.\n return (this.promise);\n },\n // ---\n // PRIVATE METHODS.\n // ---\n // I handle the load-failure of the given image location.\n handleImageError: function handleImageError(imageLocation) {\n this.errorCount++;\n // If the preload action has already failed, ignore further action.\n if (this.isRejected()) {\n return;\n }\n this.state = this.states.REJECTED;\n this.deferred.reject(imageLocation);\n },\n // I handle the load-success of the given image location.\n handleImageLoad: function handleImageLoad(imageLocation) {\n this.loadCount++;\n // If the preload action has already failed, ignore further action.\n if (this.isRejected()) {\n return;\n }\n // Notify the progress of the overall deferred. This is different\n // than Resolving the deferred - you can call notify many times\n // before the ultimate resolution (or rejection) of the deferred.\n this.deferred.notify({\n percent: Math.ceil(this.loadCount / this.imageCount * 100),\n imageLocation: imageLocation\n });\n // If all of the images have loaded, we can resolve the deferred\n // value that we returned to the calling context.\n if (this.loadCount === this.imageCount) {\n this.state = this.states.RESOLVED;\n this.deferred.resolve(this.imageLocations);\n }\n },\n // I load the given image location and then wire the load / error\n // events back into the preloader instance.\n // --\n // NOTE: The load/error events trigger a $digest.\n loadImageLocation: function loadImageLocation(imageLocation) {\n var preloader = this;\n // When it comes to creating the image object, it is critical that\n // we bind the event handlers BEFORE we actually set the image\n // source. Failure to do so will prevent the events from proper\n // triggering in some browsers.\n var image = $(new Image())\n .load(\n function(event) {\n // Since the load event is asynchronous, we have to\n // tell AngularJS that something changed.\n $rootScope.$apply(\n function() {\n preloader.handleImageLoad(event.target.src);\n // Clean up object reference to help with the\n // garbage collection in the closure.\n preloader = image = event = null;\n }\n );\n }\n )\n .error(\n function(event) {\n // Since the load event is asynchronous, we have to\n // tell AngularJS that something changed.\n $rootScope.$apply(\n function() {\n preloader.handleImageError(event.target.src);\n // Clean up object reference to help with the\n // garbage collection in the closure.\n preloader = image = event = null;\n }\n );\n }\n )\n .prop(\"src\", imageLocation);\n }\n };\n // Return the factory instance.\n return (Preloader);\n }\n\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('apiService', apiService);\n\n\n function apiService($log, xHttp) {\n var icons = null;\n\n function getCatalogue(params, callback) {\n\n var pageQ = params.page ? '&page=' + params.page : '';\n var limitQ = params.limit ? '&limit=' + params.limit : '';\n var categoryQ = params.category ? 'category=' + params.category : '';\n var providerQ = params.provider ? 'provider=' + params.provider : '';\n\n var call = '/catalogue?' + categoryQ + providerQ + pageQ + limitQ;\n xHttp.get(call, function(response) {\n if (callback) {\n callback(response.data);\n }\n });\n }\n\n function getShowcase(params, callback) {\n\n var pageQ = params.page ? '&page=' + params.page : '';\n var limitQ = params.limit ? '&limit=' + params.limit : '';\n\n var call = '/showcase?' + pageQ + limitQ;\n xHttp.get(call, function(response) {\n if (callback) {\n callback(response.data);\n }\n });\n }\n\n\n function getTrailData(product, batchData, callback) {\n\n if (batchData.exp_date) {\n batchData.exp_date = String(batchData.exp_date).substring(0, 10);\n } else {\n batchData.exp_date = null;\n }\n\n if (product && product.id_encoded) {\n xHttp.post('http://46.101.254.189/mobile/trail/' + product.id_encoded, batchData, function(response) {\n\n if (callback && response.response) {\n callback(response.response);\n }\n },\n function() {\n $log.debug('trail not found');\n\n if (callback) {\n callback(null);\n }\n });\n\n\n\n\n\n } else {\n $log.debug('getTrailData input is invalid');\n }\n\n\n }\n\n function getIcons(callback) {\n if (!icons) {\n xHttp.get('http://46.101.254.189/mobile/iconsv2', function(response) {\n\n if (response.code === 200 && response.response) {\n icons = response.response;\n } else {\n $log.debug('icons not retrieved');\n }\n if (callback) {\n callback(icons);\n }\n });\n\n } else {\n if (callback) {\n callback(icons);\n }\n }\n\n }\n\n function getProviderData(id, callback) {\n if (id) {\n xHttp.get('http://46.101.254.189/mobile/provider_id/' + id, function(response) {\n if (response.meta && response.meta.code === 200) {\n if (callback) {\n callback(response.data);\n }\n } else {\n $log.debug('something is wrong with the facility response');\n if (callback) {\n callback(null);\n }\n }\n });\n }\n }\n\n function getProviderDataFromFacilityId(id, callback) {\n if (id) {\n xHttp.get('http://46.101.254.189/mobile/provider/' + id, function(response) {\n if (response.meta && response.meta.code === 200) {\n if (callback) {\n callback(response.data);\n }\n } else {\n $log.debug('something is wrong with the facility response');\n if (callback) {\n callback(null);\n }\n }\n });\n }\n }\n\n function getProduct(id, callback) {\n if (id) {\n\n xHttp.get('/product/id/' + id, function(response) {\n $log.debug(response);\n if (response) {\n\n if (typeof response.data.product_image === 'String') {\n response.data.product_image = response.data.product_image.replace(\".png\", \"-200x200.png\");\n }\n if (callback) {\n\n callback(response.data);\n }\n\n }\n\n });\n }\n\n\n }\n\n function searchProducers(searchString, callback) {\n\n if (searchString) {\n searchString = String(searchString);\n xHttp.get('/provider_autocomplete?provider=' + searchString, function(response) {\n if (callback && response.meta.code === 200) {\n callback(response.data);\n }\n });\n }\n }\n\n function getMoreProviderData(id_provider, callback) {\n xHttp.get('/provider/' + id_provider, function(response) {\n\n if (response.meta && response.meta.code === 200) {\n if (callback) {\n if (response.data.video_url && response.data.video_url.indexOf('youtube') !== -1) {\n response.data.video_url = response.data.video_url.replace('https://www.youtube.com/embed/', '');\n } else {\n response.data.video_url = null;\n }\n callback(response.data);\n }\n } else {\n if (callback) {\n callback(null);\n }\n }\n });\n }\n\n function getProviders(callback) {\n xHttp.get('/providers', function(response) {\n $log.debug(response);\n if (response.meta && response.meta.code === 200) {\n if (callback) {\n\n callback(response.data);\n }\n } else {\n if (callback) {\n callback(null);\n }\n }\n });\n }\n\n return {\n getCatalogue: getCatalogue,\n getShowcase: getShowcase,\n getProduct: getProduct,\n getTrailData: getTrailData,\n getIcons: getIcons,\n getProviderData: getProviderData,\n getProviderDataFromFacilityId: getProviderDataFromFacilityId,\n getMoreProviderData: getMoreProviderData,\n searchProducers: searchProducers,\n getProviders: getProviders\n };\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .directive('otNavbar', otNavbar);\n\n /** @ngInject */\n function otNavbar() {\n var directive = {\n restrict: 'E',\n templateUrl: 'app/components/navbar/navbar.html',\n scope: {\n color: '='\n },\n controller: NavbarController,\n controllerAs: 'vm',\n bindToController: true\n };\n\n return directive;\n\n /** @ngInject */\n function NavbarController(moment, $rootScope, $window) {\n var vm = this;\n\n // \"vm.creation\" is avaible by directive option \"bindToController: true\"\n console.log(vm.color);\n }\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .factory('githubContributor', githubContributor);\n\n /** @ngInject */\n function githubContributor($log, $http) {\n var apiHost = 'https://api.github.com/repos/Swiip/generator-gulp-angular';\n\n var service = {\n apiHost: apiHost,\n getContributors: getContributors\n };\n\n return service;\n\n function getContributors(limit) {\n if (!limit) {\n limit = 30;\n }\n\n return $http.get(apiHost + '/contributors?per_page=' + limit)\n .then(getContributorsComplete)\n .catch(getContributorsFailed);\n\n function getContributorsComplete(response) {\n return response.data;\n }\n\n function getContributorsFailed(error) {\n $log.error('XHR Failed for getContributors.\\n' + angular.toJson(error.data, true));\n }\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .directive('otPlugin', otPlugin);\n\n function otPlugin() {\n\n var directive = {\n restrict: 'E',\n templateUrl: 'app/components/__ot_plugin/ot-plugin.html',\n scope: {\n trail: '=',\n // product_id: '=',\n product: '=',\n },\n controller: otPluginController\n };\n\n /** @ngInject */\n function otPluginController($log, $scope, $timeout, apiService, leafletData) {\n\n var popupContent, farms = null,\n self = $scope;\n $scope.markers = [];\n $scope.bounds = null;\n $scope.activeSlide = 0;\n self.pluginLoaded = 0;\n self.providerVideo = null;\n self.providerFacility = null;\n\n self.currentProduct = self.product;\n\n\n self.playerVars = {\n controls: 1,\n autoplay: 1\n };\n $scope.story = [{\n id: 1,\n name: 'MAP'\n }, {\n id: 2,\n name: 'SUPPLIERS'\n }, {\n id: 3,\n name: 'BRAND'\n }, ];\n\n\n $scope.activateSlide = function(index) {\n\n if (index < 0) {\n $scope.activeSlide = 0;\n } else if (index > $scope.story.length - 1) {\n $scope.activeSlide = $scope.story.length - 1;\n } else {\n $scope.activeSlide = index;\n }\n\n };\n\n $scope.closePlugin = function() {\n self.pluginLoaded = 0;\n\n $timeout(function() {\n self.trail = null;\n self.$destroy();\n jQuery('#origintrail-plugin').remove();\n }, 100);\n\n };\n $scope.openFarmPage = function(farm) {\n $log.debug(farm);\n };\n\n\n self.defaults = {\n tileLayer: 'http://{s}.tile.opencyclemap.org/cycle/{z}/{x}/{y}.png',\n maxZoom: 20,\n path: {\n weight: 10,\n color: '#800000',\n opacity: 1\n },\n icon: {\n url: \"http://origin-trail.com/files/farm_pin.png\",\n retinaUrl: \"http://origin-trail.com/files/farm_pin.png\",\n size: [25, 41],\n anchor: [12, 40],\n popup: [0, -40],\n },\n };\n\n self.defaultIcon = {\n iconUrl: \"http://origin-trail.com/files/farm_pin.png\",\n iconSize: [50, 50], // size of the icon\n shadowSize: [0, 0], // size of the shadow\n iconAnchor: [25, 50], // point of the icon which will correspond to marker's location\n shadowAnchor: [0, 0], // the same for the shadow\n popupAnchor: [0, -50] // point from which the popup should open relative to the iconAnchor\n };\n\n\n var otIcon = L.icon({\n iconUrl: \"http://origin-trail.com/files/farm_pin.png\",\n iconSize: [50, 50], // size of the icon\n shadowSize: [0, 0], // size of the shadow\n iconAnchor: [25, 50], // point of the icon which will correspond to marker's location\n shadowAnchor: [0, 0], // the same for the shadow\n popupAnchor: [0, -50] // point from which the popup should open relative to the iconAnchor\n });\n\n\n self.tiles = {\n // url: \"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n url: 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\n options: {\n attribution: '© OpenStreetMap contributors'\n }\n };\n\n self.layers = {\n baselayers: {\n // mapbox_light: {\n // name: 'Mapbox Light',\n // url: \"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",\n // type: 'xyz',\n // layerOptions: {\n // apikey: 'pk.eyJ1IjoiYnVmYW51dm9scyIsImEiOiJLSURpX0pnIn0.2_9NrLz1U9bpwMQBhVk97Q',\n // mapid: 'bufanuvols.lia22g09'\n // }\n // },\n world: {\n name: \"Imagery\",\n type: \"agsDynamic\",\n url: \"http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer\",\n visible: false,\n layerOptions: {\n layers: [0, 1, 2, 3],\n opacity: 1,\n attribution: \"Copyright:© 2014 Esri, DeLorme, HERE, TomTom\"\n }\n }\n },\n overlays: {\n\n }\n };\n\n $scope.slideWidth = jQuery('.frame').width();\n\n jQuery('.slide').width($scope.slideWidth);\n jQuery('.slides-container').width(3 * $scope.slideWidth);\n $scope.myInterval = 5000;\n $scope.noWrapSlides = false;\n $scope.active = 0;\n farms = self.trail.path[0].cons[0].f;\n self.farms = farms;\n self.farmlist = farms;\n var max_lat = -2000,\n max_lon = -2000,\n min_lat = 2000,\n min_lon = 2000;\n var marker = null;\n\n self.center = {\n lat: Number(self.trail.path[0].lat),\n lng: Number(self.trail.path[0].lon),\n zoom: 5\n };\n var xmarkers = L.markerClusterGroup();\n\n\n for (var i = 0; i < farms.length; i++) {\n\n max_lat = (farms[i].lat > max_lat) ? farms[i].lat : max_lat;\n max_lon = (farms[i].lon > max_lon) ? farms[i].lon : max_lon;\n min_lat = (farms[i].lat < min_lat) ? farms[i].lat : min_lat;\n min_lon = (farms[i].lon < min_lon) ? farms[i].lon : min_lon;\n\n\n marker = L.marker(new L.LatLng(farms[i].lat, farms[i].lon), {\n icon: otIcon,\n });\n\n popupContent = '
';\n\n if (farms[i].fimg) {\n popupContent += '';\n }\n popupContent += '
' + farms[i].fn + '
';\n marker.bindPopup(popupContent);\n\n xmarkers.addLayer(marker);\n\n\n }\n leafletData.getMap().then(function(map) {\n map.addLayer(xmarkers);\n });\n\n $timeout(function() {\n self.pluginLoaded = 1;\n\n apiService.getProviderDataFromFacilityId(self.trail.path[0].fid, function(data) {\n $timeout(function() {\n\n self.currentFacility = data;\n self.providerFacility = data;\n\n apiService.getProduct(self.trail.path[0].pid, function(product) {\n\n $timeout(function() {\n self.currentProduct = product;\n farms = self.trail.path[0].cons[0].f;\n self.farms = farms;\n self.farmlist = farms;\n self.pluginLoaded = 1;\n });\n\n\n });\n\n\n }, 100);\n\n });\n\n\n\n $scope.getFacilityData = function(id, index) {\n apiService.getProviderDataFromFacilityId(id, function(data) {\n $timeout(function() {\n self.currentFacility = data;\n self.showFacilityView = true;\n });\n\n });\n };\n\n\n });\n\n\n }\n\n return directive;\n\n }\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .filter('normalEnglish', normalEnglish);\n\n /** @ngInject */\n function normalEnglish() {\n return function(input) {\n return (!!input) ? input.charAt(0).toUpperCase() + input.substr(1).toLowerCase().replace('_', ' ') : '';\n };\n }\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .filter('startFrom', startFrom);\n\n /** @ngInject */\n function startFrom() {\n return function(input, start) {\n start = +start; //parse to int\n if (input) {\n return input.slice(start);\n } else {\n return [];\n }\n\n };\n }\n})();\n (function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .controller('RequestApiController', RequestApiController);\n\n /** @ngInject */\n function RequestApiController($scope, $rootScope, $log, $timeout, $window, $document, toastr, xHttp, mapService, ProspehAnalytics) {\n $log.debug('RequestApiController');\n $scope.submitRequest = function() {\n $log.debug($scope.formdata);\n $scope.formSubmittedSuccessfully = false;\n var data = {\n message: $scope.formdata,\n message_type: 'request-api'\n };\n xHttp.post('request-api-key', data, function(response) {\n console.log(response);\n if (response.data && response.data.api_key) {\n $scope.formSubmittedSuccessfully = true;\n $scope.api_key = response.data.api_key;\n }\n ProspehAnalytics.event('request-API', 'requested', 'Requested API');\n });\n ProspehAnalytics.event('request-API', 'requestAPIPage', 'Got to request API page');\n };\n }\n })();\n (function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .controller('RequestDemoController', RequestDemoController);\n\n /** @ngInject */\n function RequestDemoController($scope, $rootScope, $log, $timeout, $window, $document, toastr, xHttp, mapService, ProspehAnalytics) {\n $log.debug('RequestDemoController');\n $scope.submitRequest = function() {\n $log.debug($scope.formdata);\n $scope.showThanks = false;\n var data = {\n message: $scope.formdata,\n message_type: 'request-demo'\n };\n xHttp.post('site-message', data, function(response) {\n console.log(response);\n if (response == 'OK') {\n $scope.showThanks = true;\n }\n ProspehAnalytics.event('request-demo', 'requested', 'Requested demo');\n });\n ProspehAnalytics.event('request-demo', 'requestDemoPage', 'Got to request demo page');\n };\n }\n })();\n (function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .controller('MainController', MainController);\n\n /** @ngInject */\n function MainController($scope, $rootScope, $log, $timeout, $window, $compile, toastr, xHttp, modalService, mapService, preloader, ProspehAnalytics) {\n\n // init\n var trail = null,\n farms = null,\n google = $window.google,\n markerCluster = null;\n $scope.markers = [];\n $scope.lang = 'EN';\n //video\n $scope.playerVars = {\n controls: 1,\n autoplay: 1\n };\n $scope.celeiaVideo = 'tsxBR-vZc-E';\n $scope.$on('youtube.player.ready', function($event, player) {\n player.mute();\n });\n $scope.$on('youtube.player.ended', function($event, player) {\n $log.debug('playing cause of repeat');\n player.playVideo();\n });\n\n var videoEl = null,\n playing = false,\n initialDraw = true,\n windowHeight = $window.innerHeight;\n $scope.vpEl = null;\n // trail related\n $scope.products = [];\n $scope.searchProduct = {};\n $scope.selectedProduct = null;\n $scope.selectedDate = null;\n $scope.selectedLot = null;\n $scope.expiryDates = [];\n $scope.lots = [];\n $scope.slide = false;\n $scope.showFacilityView = false;\n $scope.currentFacility = null;\n $scope.facilitiesByIngredient = {};\n $scope.farmPage = 0;\n $scope.sideDrawer = false;\n\n $scope.productSwitch = [{\n name: 'Who we are',\n active: true\n }, {\n name: 'Product description',\n active: false\n }, {\n name: 'Nutritional values',\n active: false\n }, ];\n\n\n $scope.ingredients_module = {};\n $scope.ingredients_module.switch = {\n all: true\n };\n $scope.bounds = null;\n\n\n\n\n\n $scope.samples = [{\n active: false,\n static_image: 'assets/images/sample_01_static@2x.png',\n active_image: 'assets/images/sample_01_focus@2x.png',\n product_name: 'BOŽIČNI DESERTNI JOGURT 6,1% m.m. 180 g',\n id_product: '889c85e234a0417c65827b9d7355f8a0de1e204e',\n product_image: 'http://46.101.254.189/upload/c3c211d9a88c5256a3387d9ccecd08d94e7e1b83/product_images/3831051001107.png',\n ean13: '3831051001107',\n ean8: null,\n expiry_date: '2017-02-22',\n traceability_type: 'BT'\n }, {\n active: false,\n static_image: 'assets/images/sample_02_static@2x.png',\n active_image: 'assets/images/sample_02_focus@2x.png',\n product_name: 'ZELENJAVA JUŠNA 420 G GRUNT',\n id_product: '1cf02f5f8f187660d7d0086a1ac71eb663c7f371',\n product_image: 'http://46.101.254.189/upload/90ab5ad5bf552ab17bda6e557ee3ad690c75fcc6/product_images/1cf02f5f8f187660d7d0086a1ac71eb663c7f371.png',\n ean13: '3831029513090',\n ean8: null,\n expiry_date: '2016-10-05',\n traceability_type: 'BT'\n }, {\n active: false,\n static_image: 'assets/images/sample_03_static@2x.png',\n active_image: 'assets/images/sample_03_focus@2x.png',\n product_name: 'Natur premium piščanec',\n id_product: '9c8f6c79b94177a6e5c1fd38e9634d92b8e737ec',\n product_image: 'http://46.101.254.189/upload/79a97804edb4494b305cc713b65a55be9ba8289d/product_images/2623068.png',\n ean13: '3831051553425',\n ean8: null,\n expiry_date: '2017-02-05',\n lot: '1201195361',\n traceability_type: 'BTL'\n }, {\n active: false,\n static_image: 'assets/images/sample_04_static@2x.png',\n active_image: 'assets/images/sample_04_static@2x.png',\n product_name: 'Tolminska Skuta 500g',\n id_product: 'a1f367faf72bd4f7d7a5313bf389829f53006d30',\n product_image: 'http://46.101.254.189/upload/79a97804edb4494b305cc713b65a55be9ba8289d/product_images/2623068.png',\n ean13: '3830011073048',\n ean8: null,\n expiry_date: '2017-02-05',\n traceability_type: 'BT'\n }\n\n ];\n\n //at runtime\n $timeout(function() {\n if ($rootScope.windowWidth > 991) {\n var storyElHeight = jQuery(\".story\").height();\n // jQuery('.story-container').height(storyElHeight - 90);\n }\n\n\n }, 1000);\n\n // Load the IFrame Player API code asynchronously.\n var tag = document.createElement('script');\n tag.src = \"https://www.youtube.com/player_api\";\n var firstScriptTag = document.getElementsByTagName('script')[0];\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n\n\n\n\n $scope.activateTab = function(index) {\n var l = $scope.productSwitch.length;\n for (var i = 0; i < l; i++) {\n if (index === i) {\n $scope.productSwitch[i].active = true;\n } else {\n $scope.productSwitch[i].active = false;\n }\n }\n };\n\n\n $scope.search = function(barCode) {\n\n if ($scope.selectedProduct && barCode !== $scope.selectedProduct.ean13 && barCode !== $scope.selectedProduct.ean8) {\n $scope.selectedProduct = null;\n }\n $scope.searchProduct.value = barCode;\n if (barCode) {\n $scope.showTrail = false;\n xHttp.get('find_product_by_code/' + barCode, function(response) {\n var products = response.response;\n $scope.selectedDate = null;\n for (var i in products) {\n if (products[i].product_image) {\n products[i].product_image = products[i].product_image.replace(\".png\", \"-200x200.png\");\n }\n }\n $scope.products = products;\n });\n } else {\n $scope.products = [];\n }\n $scope.enterBarcode = true;\n };\n\n $scope.selectProduct = function(product) {\n $scope.searchProduct.value = product.ean13 ? product.ean13 : (product.ean8 ? product.ean8 : '0');\n $scope.selectedProduct = product;\n\n $scope.selectedDate = null;\n $scope.selectedLot = null;\n ProspehAnalytics.event('iframe', 'selectProduct', 'Clicked on product in dropdown');\n };\n\n $scope.removeBarCode = function() {\n $scope.searchProduct.value = '';\n $scope.selectedProduct = null;\n $scope.selectedDate = null;\n $scope.selectedLot = null;\n };\n\n\n $scope.showExpiryDates = function(product) {\n\n $scope.expiryDates = [];\n ProspehAnalytics.event('iframe', 'showExpiryDates', 'Showing expiry dates');\n xHttp.get('product/get_dates/' + product.id_product, function(response) {\n var l = response.data.length,\n i = 0;\n if (l && l > 0) {\n for (i = 0; i < l; i++) {\n $scope.expiryDates.push(response.data[i].exp_date.substring(0, 10));\n }\n } else {\n $log.debug('no expiry date data');\n }\n });\n };\n\n $scope.selectDate = function(date) {\n $scope.selectedDate = date;\n ProspehAnalytics.event('iframe', 'selectDate', 'Selected date');\n };\n\n\n $scope.showLots = function(product, date) {\n var i = 1;\n var data = {\n exp_date: date,\n id_product: product.id_product\n };\n $scope.lots = [];\n ProspehAnalytics.event('iframe', 'showLots', 'showing lots');\n\n xHttp.post('get_lot/', data, function(response) {\n var lots = response.response;\n for (var i = 0; i < lots.length; i++) {\n\n $scope.lots.push(lots[i].lot);\n }\n });\n };\n $scope.selectLot = function(lot) {\n $scope.selectedLot = lot;\n ProspehAnalytics.event('iframe', 'selectLot', 'Selected lot');\n\n };\n\n $scope.loadSample = function(index, callback) {\n for (var i = 0; i < $scope.samples.length; i++) {\n if (i === index) {\n $scope.samples[i].active = true;\n } else {\n $scope.samples[i].active = false;\n }\n\n }\n\n $timeout(function() {\n $scope.searchProduct = {};\n $scope.searchProduct.value = $scope.samples[index].ean13;\n $scope.selectedProduct = $scope.samples[index];\n\n $scope.selectedDate = $scope.samples[index].expiry_date;\n $scope.selectedLot = $scope.samples[index].lot ? $scope.samples[index].lot : null;\n\n if (callback) {\n callback(false, false, false, false);\n }\n });\n\n };\n\n $scope.openWPModal = function() {\n modalService.whitePaperModal();\n ProspehAnalytics.event('whitepapers', 'openWPModal', 'Clicked on wp modal');\n };\n $scope.closeModal = function() {\n modalService.close();\n };\n\n\n $scope.activateIngredient = function(type) {\n\n if (type === 'all') {\n $scope.ingredients_module.switch.all = true;\n $scope.getTrail();\n } else {\n $scope.ingredients_module.switch.all = false;\n\n for (var i = 0; i < $scope.productTypes.length; i++) {\n $scope.ingredients_module.switch[$scope.productTypes[i].type] = $scope.productTypes[i].type === type ? true : false;\n }\n // pocistimo markere\n $scope.setMapOnAll();\n clearCustomMarkers();\n $scope.markers = [];\n markerCluster = null;\n var marker = null;\n var temp_farms = [];\n for (i = 0; i < $scope.farms.length; i++) {\n\n if ($scope.ingredients_module.switch.all || $scope.farms[i].pt === type) {\n marker = mapService.createMarker($scope.map, $scope.farms[i].lat, $scope.farms[i].lon, $scope.farms[i].fn, $scope.farms[i].fid, facilityClickCallback);\n temp_farms.push($scope.farms[i]);\n $scope.markers.push(marker);\n $scope.bounds.extend(marker.getPosition());\n\n\n }\n }\n drawPinsAndClusters($scope.map, temp_farms);\n\n }\n };\n\n function getTrailData(product, batchData, callback) {\n if (batchData.exp_date) {\n batchData.exp_date = String(batchData.exp_date).substring(0, 10);\n } else {\n\n batchData.exp_date = null;\n }\n if (product && product.product_id) {\n xHttp.post('http://46.101.254.189/mobile/trail/' + product.product_id, batchData, function(response) {\n if (callback && response.response) {\n callback(response.response);\n }\n },\n function() {\n $log.debug('trail not found');\n\n if (callback) {\n callback(null);\n }\n });\n\n } else {\n $log.debug('getTrailData input is invalid');\n }\n\n\n }\n $scope.checkOrigin = function(product, date, lot) {\n\n var id_product_selected = product.id_product ? product.id_product : $scope.selectedProduct.id_product;\n $scope.selectedDate = date ? date : $scope.selectedDate;\n $scope.selectedLot = lot ? lot : $scope.selectedLot;\n\n if (id_product_selected) {\n\n getProduct(id_product_selected, function(product) {\n $timeout(function() {\n $scope.currentProduct = product;\n $log.debug($scope.currentProduct);\n\n getTrailData(product, {\n exp_date: date,\n lot: lot,\n }, function(trailObj) {\n\n $timeout(function() {\n\n $scope.trail = trailObj;\n\n var el = $compile('')($scope);\n angular.element('#wrapper').append(el);\n\n });\n\n });\n });\n\n });\n }\n\n };\n\n\n $scope.getTrail = function(id_product, selectedDate, selectedLot, farmType) {\n\n var id_product_selected = id_product ? id_product : $scope.selectedProduct.id_product;\n $scope.selectedDate = selectedDate ? selectedDate : $scope.selectedDate;\n $scope.selectedLot = selectedLot ? selectedLot : $scope.selectedLot;\n\n var data = {};\n data.exp_date = $scope.selectedDate ? $scope.selectedDate : null;\n data.lot = $scope.selectedLot ? $scope.selectedLot : null;\n if (id_product_selected) {\n\n getProduct(id_product_selected, function(product) {\n $scope.currentProduct = product;\n $log.debug(product);\n });\n }\n\n\n\n\n xHttp.post('trail/' + $scope.selectedProduct.id_product, data, function(response) {\n $scope.productTypes = response.response.path[0].cons[0].fbt;\n\n\n for (var i = 0; i < $scope.productTypes.length; i++) {\n $scope.ingredients_module.switch[$scope.productTypes[i].type] = false;\n }\n\n\n\n if (response.response) {\n trail = response.response;\n // $scope.slide = true; // pomerimo u desno\n $scope.bounds = new google.maps.LatLngBounds(); // init bounds\n\n getProviderData(trail.path[0].fid, function(data) {\n $timeout(function() {\n $scope.providerFacility = data;\n if (data.video_url !== null && data.video_url.indexOf('http') !== -1) {\n if (data.video_url.indexOf('youtube') !== -1) {\n $scope.providerVideo = data.video_url.replace('https://www.youtube.com/embed/', '');\n }\n\n } else {\n $scope.providerVideo = null;\n }\n\n\n });\n\n });\n\n // $scope.setMapOnAll();\n // mapService.setMapOnAll($scope.markers, null);\n // var map_element_id = 'trail-map';\n // var mapa = angular.element(document.querySelector('#' + map_element_id));\n // mapa.empty();\n\n // mapService.createMap(map_element_id, trail.path[0].lat, trail.path[0].lon, trail.path[0].fn, function(map) {\n // $scope.map = map;\n // $scope.factory_id = trail.path[0].fid;\n\n\n // var rootFacility,\n // farm = null,\n // min_lat = null,\n // min_lon = null,\n // max_lat = null,\n // max_lon = null,\n // chosen_facilities = [],\n // marker = null,\n // // markers = [],\n // i = 0,\n // initialDraw = true;\n // $scope.chosen_facility_markers = [];\n\n // farms = trail.path[0].cons[0].f;\n // $scope.farms = farms;\n // $scope.farmlist = farms;\n\n\n // // markers = [];\n // $timeout(function() {\n // for (i = 0; i < farms.length; i++) {\n // farm = farms[i];\n\n // if (farmType) {\n // if (farm.lat && farm.lon && farm.pt == farmType) {\n // marker = mapService.createMarker(map, farm.lat, farm.lon, farm.fn, farm.fid, facilityClickCallback);\n // $scope.markers.push(marker);\n // $scope.bounds.extend(marker.getPosition());\n // }\n // } else {\n // if (farm.lat && farm.lon) {\n // marker = mapService.createMarker(map, farm.lat, farm.lon, farm.fn, farm.fid, facilityClickCallback);\n // $scope.markers.push(marker);\n // $scope.bounds.extend(marker.getPosition());\n // }\n // }\n\n\n // }\n // google.maps.event.addListenerOnce(map, 'idle', function() {\n // rootFacility = new mapService.CustomMarker(trail.path[0].lat, trail.path[0].lon, $scope.map, {\n // marker_id: trail.path[0].fid\n // }, trail.provider_image, null, facilityClickCallback);\n // $scope.chosen_facility_markers[0] = rootFacility;\n // $scope.bounds.extend(rootFacility.getPosition());\n // drawPinsAndClusters($scope.map, $scope.farms);\n\n\n // });\n // }, 20);\n // });\n }\n\n\n }, function() {\n $scope.notFindTrail = true;\n });\n ProspehAnalytics.event('trail', 'getTrail', 'Getting trail');\n };\n\n function facilityClickCallback(id, index) {\n // $scope.sideDrawer = true;\n\n getProviderData(id, function(data) {\n $timeout(function() {\n $scope.currentFacility = data;\n $scope.showFacilityView = true;\n });\n\n });\n\n }\n\n\n function getProviderData(id, callback) {\n if (id) {\n xHttp.get('provider/' + id, function(response) {\n if (response.meta && response.meta.code === 200) {\n $timeout(function() {\n\n\n if (callback) {\n callback(response.data);\n }\n });\n\n } else {\n $log.debug('something is wrong with the facility response');\n }\n });\n }\n }\n\n $scope.facilityClickCallback = facilityClickCallback;\n\n $scope.nextFarm = function() {\n if ($scope.currentFacility.index || $scope.currentFacility.index === 0) {\n var nextIndex = ($scope.currentFacility.index + 1) % $scope.farmlist.length;\n facilityClickCallback($scope.farmlist[nextIndex].fid, nextIndex);\n } else {\n console.log('index issue');\n }\n };\n\n $scope.prevFarm = function() {\n var nextIndex = ($scope.currentFacility.index - 1);\n if (nextIndex <= 0) {\n nextIndex = $scope.farmlist.length - 1;\n }\n if ($scope.currentFacility.index || $scope.currentFacility.index === 0) {\n facilityClickCallback($scope.farmlist[nextIndex].fid, nextIndex);\n } else {\n console.log('index issue');\n }\n };\n\n //attach to scope\n\n\n function getProduct(id, callback) {\n if (id) {\n xHttp.get('product/id/' + id, function(response) {\n // getNutrition(response);\n\n if (response && response.response.product_image) {\n response.response.product_image = response.response.product_image.replace(\".png\", \"-200x200.png\");\n\n\n }\n if (callback) {\n callback(response.response);\n }\n\n });\n }\n\n }\n\n\n\n\n function getIcons(callback) {\n var icons = null;\n\n xHttp.get('iconsv2', function(response) {\n\n if (response.code == 200 && response.response) {\n icons = response.response;\n }\n if (callback) {\n callback(icons);\n }\n });\n }\n\n function getDistance(farm, lat, lon) {\n return Math.abs(farm.lat - lat) + Math.abs(farm.lon - lon);\n }\n /**\n * returns index of facility if found in array, otherwise false\n * @param {Array} array - Array of facilities\n * @param {Object} facility - facility searched for in array\n * @return {Number || false} - index of facility or false\n */\n function inArray(array, facility) {\n var l, i;\n if (array && array.length && facility) {\n l = array.length;\n for (i = 0; i < l; i++) {\n if (array[i].fid === facility.fid) {\n return i;\n }\n }\n return false;\n } else {\n $log.debug('array (' + String(array) + ') or facility (' + facility + ') not ok');\n return null;\n }\n }\n\n function getClosestFacility(facilities, lat, lon, excludeThese) {\n var result = null,\n i = 0,\n d = null,\n minDistance = 99999999;\n if (facilities) {\n var l = facilities.length;\n for (i = 0; i < l; i++) {\n\n if (excludeThese && excludeThese.length > 0) {\n if (inArray(excludeThese, facilities[i]) !== false) {\n continue;\n }\n }\n d = getDistance(facilities[i], lat, lon);\n if (minDistance > d && facilities[i].fimg !== '' && facilities[i].fimg) {\n minDistance = d;\n result = facilities[i];\n }\n\n }\n return result;\n } else {\n $log.debug('no facilities provided');\n return result;\n }\n\n }\n\n function clearCustomMarkers() {\n if ($scope.chosen_facility_markers) {\n for (var i = 0; i < $scope.chosen_facility_markers.length; i++) {\n $scope.chosen_facility_markers[i].remove();\n }\n }\n\n }\n\n function drawPinsAndClusters(map, farms) {\n\n var map_bounds = map.getBounds();\n if (map) {\n\n // clusterize\n //\n markerCluster = new MarkerClusterer(map, $scope.markers, {\n // imagePath: 'assets/images/farms_cluster',\n styles: [{\n anchor: [0, 0],\n textColor: \"#4CAF50\",\n height: 55,\n width: 55,\n url: 'assets/images/farms_cluster1.png'\n }]\n });\n\n // get the corners of the map\n var max_lat = map_bounds.getNorthEast().lat(),\n max_lon = map_bounds.getNorthEast().lng(),\n min_lat = map_bounds.getSouthWest().lat(),\n min_lon = map_bounds.getSouthWest().lng(),\n chosen_facilities = [];\n\n\n // prodjemo kroz sve farme jos jednom i nacrtamo 4 markera najbliza coskovima\n var customMarkerIndex = 1;\n\n var farmNorthEast = getClosestFacility(farms, max_lat, max_lon, chosen_facilities);\n if (farmNorthEast) {\n chosen_facilities.push(farmNorthEast);\n $scope.chosen_facility_markers[customMarkerIndex] = new mapService.CustomMarker(farmNorthEast.lat, farmNorthEast.lon, map, {\n marker_id: farmNorthEast.fid\n }, farmNorthEast.fimg, farmNorthEast.fn, facilityClickCallback);\n customMarkerIndex++;\n }\n\n\n var farmNorthWest = getClosestFacility(farms, max_lat, min_lon, chosen_facilities);\n if (farmNorthWest) {\n chosen_facilities.push(farmNorthWest);\n $scope.chosen_facility_markers[customMarkerIndex] = new mapService.CustomMarker(farmNorthWest.lat, farmNorthWest.lon, map, {\n marker_id: farmNorthWest.fid\n }, farmNorthWest.fimg, farmNorthWest.fn, facilityClickCallback);\n customMarkerIndex++;\n }\n\n var farmSouthEast = getClosestFacility(farms, min_lat, max_lon);\n if (farmSouthEast) {\n chosen_facilities.push(farmSouthEast);\n $scope.chosen_facility_markers[customMarkerIndex] = new mapService.CustomMarker(farmSouthEast.lat, farmSouthEast.lon, map, {\n marker_id: farmSouthEast.fid\n }, farmSouthEast.fimg, farmSouthEast.fn, facilityClickCallback);\n customMarkerIndex++;\n }\n\n var farmSouthWest = getClosestFacility(farms, min_lat, min_lon, chosen_facilities);\n\n if (farmSouthWest) {\n chosen_facilities.push(farmSouthWest);\n $scope.chosen_facility_markers[customMarkerIndex] = new mapService.CustomMarker(farmSouthWest.lat, farmSouthWest.lon, map, {\n marker_id: farmSouthWest.fid\n }, farmSouthWest.fimg, farmSouthWest.fn, facilityClickCallback);\n customMarkerIndex++;\n }\n\n map.fitBounds($scope.bounds);\n initialDraw = false;\n }\n }\n\n\n // loadIcons\n\n getIcons(function(icons) {\n $scope.icons = icons;\n });\n\n $scope.setMapOnAll = function() {\n if ($scope.markers && $scope.markers.length > 0) {\n mapService.setMapOnAll($scope.markers, null);\n clearCustomMarkers();\n if (markerCluster) {\n markerCluster.removeMarkers($scope.markers);\n }\n $scope.markers = [];\n }\n\n };\n\n\n function responsivizeInfographic() {\n var iWidth = jQuery('#infographic .container').width();\n $('#narration').width(iWidth * 0.25);\n $('#blockchain').width(iWidth * 0.25);\n }\n\n\n // infographic stuff\n\n $scope.infImages = [\n './assets/images/infographic/flying_01_milk_can@2x.png',\n './assets/images/infographic/01_landscape_back@2x.png',\n './assets/images/infographic/01_landscape_front@2x.png',\n './assets/images/infographic/flying_02_cheese_box@2x.png',\n './assets/images/infographic/02_landscape_back@2x.png',\n './assets/images/infographic/02_landscape_front@2x.png',\n './assets/images/infographic/flying_02_cheese_box@2x.png',\n './assets/images/infographic/03_landscape_back@2x.png',\n './assets/images/infographic/03_landscape_front@2x.png',\n\n ];\n $scope.preloadedImgs = [];\n\n preloader.preloadImages($scope.infImages).then(\n function handleResolve(imageLocations) {\n $scope.preloadedImgs = imageLocations;\n $scope.isLoading = false;\n $scope.isSuccessful = true;\n\n $timeout(function() {\n initInfographic();\n });\n },\n function handleReject(imageLocation) {\n // Loading failed on at least one image.\n $scope.isLoading = false;\n $scope.isSuccessful = false;\n console.error(\"Image Failed\", imageLocation);\n console.info(\"Preload Failure\");\n },\n function handleNotify(event) {\n $scope.percentLoaded = event.percent;\n console.info(\"Percent loaded:\", event.percent);\n }\n );\n\n function initInfographic() {\n\n var isMobile = (function(a) {\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4));\n })(navigator.userAgent || navigator.vendor || window.opera);\n var scrollCtrl;\n\n\n\n\n scrollCtrl = new ScrollMagic.Controller();\n var narrationTween1 = TweenMax.fromTo('#nar1', 1, {\n opacity: 0\n }, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narrationTween11 = TweenMax.to('#nar1', 1, {\n opacity: '0',\n ease: Power2.easeIn\n }),\n\n narrationTween2 = TweenMax.to('#nar2', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narrationTween22 = TweenMax.to('#nar2', 1, {\n opacity: '0',\n ease: Power2.easeOut\n }),\n narrationTween3 = TweenMax.to('#nar3', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narrationTween33 = TweenMax.to('#nar3', 1, {\n opacity: '0',\n ease: Power2.easeOut\n }),\n narrationTween4 = TweenMax.to('#nar4', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narrationTween44 = TweenMax.to('#nar4', 1, {\n opacity: 0,\n ease: Power2.easeOut\n }),\n narrationTween5 = TweenMax.to('#nar5', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narrationTween55 = TweenMax.to('#nar5', 1, {\n opacity: '0',\n ease: Power2.easeOut\n });\n\n\n\n var scale_tween2 = TweenMax.to('#cheesebox', 0.2, {\n opacity: '1',\n ease: Power2.easeOut\n }),\n scale_tween3 = TweenMax.to('#cheesebox2', 1, {\n opacity: '1',\n ease: Power2.easeOut\n }),\n scale_tween4 = TweenMax.to('#cheese-retail', 1, {\n opacity: '1',\n ease: Power2.easeOut\n }),\n phone_tween = TweenMax.to('#phone', 2, {\n opacity: '1',\n ease: Power2.easeIn\n });\n\n\n\n var infographicRowHeight = $('#sourcing').outerHeight();\n\n var blockchain = new ScrollMagic.Scene({\n triggerElement: \"#sourcing\",\n duration: infographicRowHeight * 4\n })\n .setPin(\"#blockchain\"),\n nar1In = new ScrollMagic.Scene({\n triggerElement: '#sourcing',\n duration: infographicRowHeight / 10\n })\n .setTween(narrationTween1),\n nar2In = new ScrollMagic.Scene({\n triggerElement: '#processing',\n duration: infographicRowHeight / 10\n })\n .setTween(narrationTween2),\n nar3In = new ScrollMagic.Scene({\n triggerElement: '#distribution',\n duration: infographicRowHeight / 10\n })\n .setTween(narrationTween3),\n nar4In = new ScrollMagic.Scene({\n triggerElement: '#retail',\n duration: infographicRowHeight / 10\n })\n .setTween(narrationTween4),\n nar5In = new ScrollMagic.Scene({\n triggerElement: '#shoppers',\n duration: infographicRowHeight / 10\n }).setTween(narrationTween5),\n nar1Out = new ScrollMagic.Scene({\n triggerElement: '#distribution',\n duration: infographicRowHeight / 10\n }).setTween(narrationTween11),\n nar2Out = new ScrollMagic.Scene({\n triggerElement: '#retail',\n duration: infographicRowHeight / 10\n }).setTween(narrationTween22),\n nar3Out = new ScrollMagic.Scene({\n triggerElement: '#shoppers',\n duration: infographicRowHeight / 10\n }).setTween(narrationTween33),\n nar4Out = new ScrollMagic.Scene({\n triggerElement: '#phone',\n duration: infographicRowHeight / 10\n }).setTween(narrationTween44),\n\n\n narration = new ScrollMagic.Scene({\n triggerElement: \"#sourcing\",\n duration: infographicRowHeight * 4\n })\n .setPin(\"#narration\"),\n\n scene3 = new ScrollMagic.Scene({\n triggerElement: \"#sourcing\",\n duration: infographicRowHeight * 1\n })\n .setPin(\"#milk-can\"),\n\n\n scene4 = new ScrollMagic.Scene({\n triggerElement: \"#processing\",\n duration: infographicRowHeight * 1\n })\n .setPin(\"#cheesebox\")\n .setTween(scale_tween2),\n\n scene5 = new ScrollMagic.Scene({\n triggerElement: \"#distribution\",\n duration: infographicRowHeight * 1\n })\n .setPin(\"#cheesebox2\")\n .setTween(scale_tween3),\n\n scene6 = new ScrollMagic.Scene({\n triggerElement: \"#retail\",\n duration: infographicRowHeight * 1\n })\n .setPin(\"#cheese-retail\")\n .setTween(scale_tween4),\n\n phoneAnimation = new ScrollMagic.Scene({\n triggerElement: \"#shoppers\",\n duration: 50\n })\n .setTween(phone_tween);\n\n var file1Animation = new ScrollMagic.Scene({\n triggerElement: \"#sourcing\",\n duration: infographicRowHeight\n }),\n file2Animation = new ScrollMagic.Scene({\n triggerElement: \"#processing\",\n duration: infographicRowHeight\n }),\n\n file3Animation = new ScrollMagic.Scene({\n triggerElement: \"#distribution\",\n duration: infographicRowHeight\n }),\n\n file4Animation = new ScrollMagic.Scene({\n triggerElement: \"#retail\",\n duration: infographicRowHeight\n });\n\n\n if (isMobile) {\n\n // iphone 5 detection\n var smallScreen = screen.availWidth <= 320 ? true : false;\n if (smallScreen) {\n\n\n console.log(smallScreen);\n\n $('#narmobile1,#narmobile2,#narmobile3,#narmobile4,#narmobile5').css('padding-top', '180px');\n }\n\n var narrationMobile = new ScrollMagic.Scene({\n triggerElement: '#sourcing',\n duration: infographicRowHeight * 5\n })\n .setPin('#narration-mobile');\n var narMobileTween1 = TweenMax.to('#narmobile1', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narMobileTween1out = TweenMax.to('#narmobile1', 1, {\n opacity: 0,\n ease: Power2.easeOut\n }),\n narMobileTween2 = TweenMax.to('#narmobile2', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narMobileTween2out = TweenMax.to('#narmobile2', 1, {\n opacity: 0,\n ease: Power2.easeOut\n }),\n narMobileTween3 = TweenMax.to('#narmobile3', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narMobileTween3out = TweenMax.to('#narmobile3', 1, {\n opacity: 0,\n ease: Power2.easeOut\n }),\n narMobileTween4 = TweenMax.to('#narmobile4', 1, {\n opacity: 1,\n ease: Power2.easeOut\n }),\n narMobileTween4out = TweenMax.to('#narmobile4', 1, {\n opacity: 0,\n ease: Power2.easeOut\n }),\n narMobileTween5 = TweenMax.to('#narmobile5', 1, {\n opacity: 1,\n ease: Power2.easeOut\n });\n\n var narmobile1In = new ScrollMagic.Scene({\n triggerElement: '#sourcing',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween1),\n narmobile1Out = new ScrollMagic.Scene({\n triggerElement: '#distribution',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween1out),\n narmobile2In = new ScrollMagic.Scene({\n triggerElement: '#processing',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween2),\n narmobile2Out = new ScrollMagic.Scene({\n triggerElement: '#retail',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween2out),\n narmobile3In = new ScrollMagic.Scene({\n triggerElement: '#distribution',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween3),\n narmobile3Out = new ScrollMagic.Scene({\n triggerElement: '#shoppers',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween3out),\n narmobile4In = new ScrollMagic.Scene({\n triggerElement: '#retail',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween4),\n narmobile4Out = new ScrollMagic.Scene({\n triggerElement: '#shoppers',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween4out),\n narmobile5In = new ScrollMagic.Scene({\n triggerElement: '#shoppers',\n duration: infographicRowHeight / 10\n })\n .setTween(narMobileTween5);\n\n var file1_tween_mobile = TweenMax.fromTo('#file1', 1, {\n opacity: 0,\n left: '-130px',\n top: '0',\n ease: Power2.easeOut\n }, {\n opacity: 1,\n left: '68px',\n top: '54px',\n ease: Power2.easeOut\n }),\n file2_tween_mobile = TweenMax.fromTo('#file2', 1, {\n opacity: 0,\n left: '-130px',\n top: '0',\n ease: Power2.easeOut\n }, {\n opacity: 1,\n left: '110px',\n top: '54px',\n ease: Power2.easeOut\n }),\n file3_tween_mobile = TweenMax.fromTo('#file3', 1, {\n opacity: 0,\n left: '-130px',\n top: '0',\n ease: Power2.easeOut\n }, {\n opacity: 1,\n left: '68px',\n top: '104px',\n ease: Power2.easeOut\n }),\n file4_tween_mobile = TweenMax.fromTo('#file4', 1, {\n opacity: 0,\n left: '-130px',\n top: '0',\n ease: Power2.easeOut\n }, {\n opacity: 1,\n left: '110px',\n top: '104px',\n ease: Power2.easeOut\n });\n\n\n\n // file animation\n console.log('attaching mobile tween');\n file1Animation.setTween(file1_tween_mobile);\n file2Animation.setTween(file2_tween_mobile);\n file3Animation.setTween(file3_tween_mobile);\n file4Animation.setTween(file4_tween_mobile);\n scrollCtrl.addScene([\n narmobile1In, narmobile2In, narmobile3In, narmobile4In, narmobile5In,\n narmobile1Out, narmobile2Out, narmobile3Out, narmobile4Out,\n narrationMobile,\n ]);\n } else {\n // desktop\n console.log('attaching desktop tween');\n var file1_tween = TweenMax.to('#file1', 2, {\n opacity: '1',\n left: '54px',\n top: '86px',\n ease: Power2.easeOut\n }),\n file2_tween = TweenMax.to('#file2', 2, {\n opacity: '1',\n left: '120px',\n top: '86px',\n ease: Power2.easeOut\n }),\n file3_tween = TweenMax.to('#file3', 2, {\n opacity: '1',\n left: '54px',\n top: '170px',\n ease: Power2.easeOut\n }),\n file4_tween = TweenMax.to('#file4', 2, {\n opacity: '1',\n left: '120px',\n top: '170px',\n ease: Power2.easeOut\n });\n file1Animation.setTween(file1_tween);\n file2Animation.setTween(file2_tween);\n file3Animation.setTween(file3_tween);\n file4Animation.setTween(file4_tween);\n\n scrollCtrl.addScene([\n nar1In, nar1Out,\n nar2In, nar2Out,\n nar3In, nar3Out,\n nar4In, nar4Out,\n nar5In,\n narration,\n ]);\n }\n\n // both mobile and desktop\n scrollCtrl.addScene([\n narration,\n blockchain,\n scene3,\n scene4,\n scene5,\n scene6,\n phoneAnimation,\n file1Animation,\n file2Animation,\n file3Animation,\n file4Animation,\n nar1In,\n nar2In,\n nar3In,\n nar4In,\n nar5In,\n ]);\n\n // responsivizeInfographic();\n // $(window).resize(function() {\n // responsivizeInfographic();\n // });\n\n }\n\n $timeout(function() {\n console.log('opali');\n });\n\n }\n })();\n (function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .controller('AboutController', AboutController);\n\n /** @ngInject */\n function AboutController($scope, $rootScope, $log, $timeout, $window, $document, toastr, xHttp, mapService, ProspehAnalytics) {\n\n $log.debug('AboutController');\n // immediate\n $timeout(function() {\n $rootScope.navDark = false;\n\n if ($rootScope.windowWidth > 991) {\n var storyElHeight = jQuery(\".story\").height();\n jQuery('.story-container').height(storyElHeight - 90);\n // jQuery('.story-pic').height(storyElHeight);\n }\n\n }, 150);\n\n $scope.team = [{\n name: 'Tomaž Levak',\n title: 'Chief Executive Officer',\n image: 'assets/images/tomaz.jpg',\n linkedin: 'https://www.linkedin.com/in/tomazlevak/',\n twitter: 'https://twitter.com/mr_theend',\n shadow: true,\n\n }, {\n name: 'Branimir Rakić',\n title: 'Chief Technical Officer',\n image: 'assets/images/branimir.jpg',\n linkedin: 'https://www.linkedin.com/in/branimirrakic/',\n twitter: 'https://twitter.com/branarakic',\n shadow: true,\n\n }, {\n name: 'Žiga Drev',\n title: 'Chief Operations Officer',\n image: 'assets/images/ziga.jpg',\n linkedin: 'https://www.linkedin.com/in/žiga-drev-a2778861/',\n twitter: 'https://twitter.com/drevziga',\n shadow: true,\n }];\n\n }\n })();\n (function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .controller('TopCtrl', TopCtrl);\n\n /** @ngInject */\n function TopCtrl($log, $rootScope, $state, $document, $window, $timeout, $translate, environment, language, siteUrl) {\n $log.debug('TopCtrl');\n\n $rootScope.navDark = false;\n $rootScope.vpEl = null;\n\n $rootScope.windowHeight = $window.innerHeight;\n $rootScope.windowWidth = $window.innerWidth;\n\n $rootScope.mobileMenu = {\n open: false,\n moreInfo: false,\n };\n\n $rootScope.env = environment;\n $rootScope.language = language;\n $rootScope.siteUrl = siteUrl;\n\n $rootScope.languages = [{\n name: 'English',\n short_name: 'en',\n icon: 'assets/images/flags/en.svg'\n }, {\n name: 'Chinese',\n short_name: 'cn',\n icon: 'assets/images/flags/cn.svg'\n }, ];\n $rootScope.changeLanguage = function(key) {\n $translate.use(key);\n };\n $rootScope.toggleMenu = function() {\n $timeout(function() {\n $rootScope.mobileMenu.open = !$rootScope.mobileMenu.open;\n });\n };\n\n $rootScope.scrollTo = function(anchor) {\n $timeout(function() {\n var ancObj = jQuery(anchor);\n if (!jQuery.isEmptyObject(ancObj) && ancObj.position() !== undefined) {\n jQuery('html, body').animate({\n scrollTop: ancObj.position().top - 50,\n }, 400);\n }\n });\n\n };\n\n $rootScope.goToState = function(state, stateParameters, hash) {\n if (state) {\n $timeout(function() {\n $rootScope.mobileMenu.open = false;\n $state.go(state, stateParameters);\n if (hash !== undefined && hash !== null) {\n $rootScope.scrollTo(hash);\n }\n }, 1);\n }\n\n };\n\n $document.on('scroll', function() {\n if ($rootScope.vpEl) {\n if ($window.scrollY > $window.innerHeight / 3 - 20) {\n $timeout(function() {\n $rootScope.navDark = true;\n });\n\n } else {\n $timeout(function() {\n $rootScope.navDark = false;\n });\n }\n } else {\n $rootScope.vpEl = angular.element($('#vps'));\n }\n });\n }\n })();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .run(runBlock);\n\n /** @ngInject */\n function runBlock($log, $document, $rootScope, $state, ProspehAnalytics) {\n\n $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {\n\n document.body.scrollTop = document.documentElement.scrollTop = 0;\n ProspehAnalytics.pageView();\n });\n\n ProspehAnalytics.initAnalytics('UA-52126311-1');\n $log.debug('runBlock end');\n\n }\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .config(routerConfig);\n\n /** @ngInject */\n function routerConfig($stateProvider, $urlRouterProvider, $locationProvider) {\n $stateProvider\n .state('home', {\n url: '/',\n templateUrl: 'app/main/main.html',\n controller: 'MainController',\n })\n .state('request-demo', {\n url: '/request-demo',\n templateUrl: 'app/request-demo/request-demo.html',\n controller: 'RequestDemoController',\n })\n .state('request-api', {\n url: '/request-api',\n templateUrl: 'app/request-api/request-api.html',\n controller: 'RequestApiController',\n })\n .state('about', {\n url: '/about',\n templateUrl: 'app/about/about.html',\n controller: 'AboutController',\n });\n\n\n $urlRouterProvider.otherwise('/');\n $locationProvider.html5Mode(true);\n $locationProvider.hashPrefix('!');\n }\n\n})();\n/* global malarkey:false, moment:false */\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .constant('malarkey', malarkey)\n .constant('moment', moment)\n .constant('apiUrl', 'http://46.101.254.189/mobile/')\n .constant('environment', 'china')\n .constant('language', 'cn')\n .constant('siteUrl', 'http://origintrail.cn');\n\n})();\n(function() {\n 'use strict';\n\n angular\n .module('websitev3')\n .config(config);\n\n /** @ngInject */\n function config($logProvider, toastrConfig) {\n // Enable log\n $logProvider.debugEnabled(true);\n\n // Set options third-party lib\n toastrConfig.allowHtml = true;\n toastrConfig.timeOut = 3000;\n toastrConfig.positionClass = 'toast-top-right';\n toastrConfig.preventDuplicates = true;\n toastrConfig.progressBar = true;\n }\n\n})();\nangular.module(\"websitev3\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/about/about.html\",\"

{{\\'ABOUT_US\\' | translate }}

{{ \\'ABOUT_US_TEXT_1\\' | translate }}

{{ \\'ABOUT_US_TEXT_2\\' | translate }}

{{ \\'ABOUT_US_TEXT_3\\' | translate }}

{{ \\'TOMAZ_QUOTE_1\\' | translate }}

{{\\'TOMAZ_QUOTE_2\\' | translate }}
\\\"\\\"
{{\\'TOMAZ_NAME\\' | translate }}

{{\\'TOMAZ_TITLE\\' | translate }}

\\\"\\\"
\\\"\\\"

{{\\'BRANA_QUOTE_1\\' | translate }}

{{\\'BRANA_QUOTE_2\\' | translate }}
\\\"\\\"
{{\\'BRANA_NAME\\' | translate }}

{{\\'BRANA_TITLE\\' | translate }}

{{\\'ZIGA_QUOTE_1\\' | translate }}

{{\\'ZIGA_QUOTE_2\\' | translate }}
\\\"\\\"
{{\\'ZIGA_NAME\\' | translate }}

{{\\'ZIGA_TITLE\\' | translate }}

\\\"\\\"
\");\n$templateCache.put(\"app/_globals/footer.html\",\"
{{ \\'COPYRIGHT\\' | translate }}
\");\n$templateCache.put(\"app/_globals/navigation.html\",\"\");\n$templateCache.put(\"app/request-api/request-api.html\",\"

{{ \\'TAKE_ADVANTAGE\\' | translate }}

{{ \\'API_DOCS_CAN_BE\\' | translate }} {{ \\'API_DOCS_CAN_BE2\\' | translate }}

{{ \\'OT_API_FREE_FOR_USE\\' | translate }}{{ \\'OT_API_FREE_FOR_USE2\\' | translate }}.

{{\\'API_REQUEST_FORM\\' | translate }}

{{\\'API_THANK_YOU\\' | translate }}
{{\\'API_THANK_YOU2\\' | translate }} {{api_key}}
{{\\'API_THANK_YOU3\\' | translate }}

\");\n$templateCache.put(\"app/request-demo/request-demo.html\",\"

{{\\'READY_TO_TAKE_ADVANTAGE\\' | translate }}

{{\\'CONTACT_US_WITH_FORM\\' | translate }}
{{\\'API_THANK_YOU\\' | translate }} {{\\'WE_WILL_BE_IN_TOUCH\\' | translate }}
\");\n$templateCache.put(\"app/main/main.html\",\"

{{ \\'SLOGAN\\' | translate }}

{{\\'SLOGAN_LONG\\' | translate}}

{{\\'TRANSPARENCY_NORM\\' | translate }}

{{\\'CREATE_VALUE\\' | translate }}
\\\"\\\"

{{\\'FOOD_PRODUCERS\\' | translate }}

{{\\'FOOD_PRODUCERS_TEXT\\' | translate }}

\\\"\\\"

{{ \\'RETAILERS\\' | translate }}

{{ \\'RETAILERS_TEXT\\' | translate }}

\\\"\\\"

{{\\'FOOD_SERVICE\\' | translate }}

{{\\'FOOD_SERVICE_TEXT\\' | translate }}

{{\\'TEST_DRIVE_ORIGINTRAIL\\' | translate }}

{{\\'TRACKING_RAW_INGREDIENTS\\' | translate }}

\\\"\\\"

{{\\'OR_INPUT_A_BARCODE\\' | translate }}

0\\\">
  • \\\"...\\\"

{{\\'AND_EXPIRY_DATE\\' | translate }}

0 && searchProduct.value\\\">

{{\\'AND_LOT_NUMBER\\' | translate }}

0\\\" ng-show=\\\"!selectedLot\\\">
\\\"\\\" \\\"\\\"

{{ \\'WANT_TO_SHARE_THE_STORY\\' | translate }}

{{ \\'WANT_TO_SHARE_TEXT\\' | translate }}

{{\\'OUR_CLIENTS_STORIES\\' | translate }}

{{\\'THE_STORY_OF\\' | translate }} {{\\'MLEKARNA_CELEIA\\' | translate }}

\\\"{{\\'CELEIA_QUOTE\\' | translate }}\\\"
\\\"\\\"
{{\\'DARJA_NAME\\' | translate }}

{{\\'DARJA_FUNCTION\\' | translate }}

\\\"\\\"

{{\\'THE_STORY_OF\\' | translate }} {{\\'NATURETA\\' | translate }}

\\\"{{\\'NATURETA_QUOTE\\' | translate }}\\\"
\\\"\\\"
{{\\'MARKO_NAME\\' | translate }}

{{\\'MARKO_FUNCTION\\' | translate }}

{{\\'THE_STORY_OF\\' | translate}} {{\\'PERUTNINA_PTUJ\\' | translate }}

{{\\'PERUTNINA_TEXT_1\\' | translate }}

{{\\'PERUTNINA_TEXT_2\\' | translate }} Izvor {{\\'AS_SEEN_ON_PICTURE\\' | translate }}

\\\"\\\"
\\\"\\\"

{{\\'ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT\\' | translate}}

{{\\'ORIGINTRAIL_CONNECTIONS_CHINA_PROJECT_TEXT\\' | translate }}

{{\\'SOURCING\\' | translate }}

{{\\'SOURCING_TEXT\\' | translate}}

{{\\'PROCESSING\\' | translate }}

{{\\'PROCESSING_TEXT\\' | translate }}

{{\\'DISTRIBUTION\\' | translate }}

{{\\'DISTRIBUTION_TEXT\\' | translate }}

{{\\'RETAIL_AND_RESTAURANTS\\' | translate }}

{{\\'RETAIL_AND_RESTAURANTS_TEXT\\' | translate }}

{{\\'HOME_AND_RESTAURANT\\' | translate }}

{{\\'HOME_AND_RESTAURANT_TEXT\\' | translate }}

\\\"\\\" \\\"\\\" \\\"\\\" \\\"\\\" \\\"\\\"

{{\\'SOURCING\\' | translate }}

{{\\'SOURCING_TEXT\\' | translate}}

{{\\'PROCESSING\\' | translate }}

{{\\'PROCESSING_TEXT\\' | translate }}

{{\\'DISTRIBUTION\\' | translate }}

{{\\'DISTRIBUTION_TEXT\\' | translate }}

{{\\'RETAIL_AND_RESTAURANTS\\' | translate }}

{{\\'RETAIL_AND_RESTAURANTS_TEXT\\' | translate }}

{{\\'HOME_AND_RESTAURANT\\' | translate }}

{{\\'HOME_AND_RESTAURANT_TEXT\\' | translate }}

\\\"\\\" \\\"\\\" \\\"\\\"
\\\"\\\" \\\"\\\" \\\"\\\"
\\\"\\\" \\\"\\\" \\\"\\\"
\\\"\\\" \\\"\\\" \\\"\\\"
\\\"\\\" \\\"\\\"

{{\\'OUR_PARTNERS_AND_INVESTORS\\' | translate }}

\\\"\\\" \\\"\\\" \\\"\\\"

{{\\'BUILDING_THE_GLOBAL_NETWORK\\' | translate }}

{{\\'FEATURED_IN\\' | translate }}

\\\"\\\" \\\"\\\" \\\"\\\" \\\"\\\" \\\"\\\" \\\"\\\"

{{\\'READY_TO_TAKE_ADVANTAGE\\' | translate }}

{{\\'ARE_YOU_DEVELOPING_NEXT_GEN_TECH\\' | translate }}

{{\\'OUR_OPEN_API\\' | translate }}

\");\n$templateCache.put(\"app/components/__ot_plugin/ot-plugin.html\",\"
\\\"OriginTrail\\\"
close
{{farms[i].fn}}
{{page.name | translate }}

Explore the Origin

\\\"{{currentProduct[language].display_name}}\\\"

{{currentProduct[language].display_name}}

0\\\">
\\\"{{cert.stamp_name
  • {{ \\'CALORIES\\' | translate }} {{currentProduct.calories}} kcal
  • {{ \\'TOTAL_FAT\\' | translate }} {{currentProduct.total_fat}} g
  • {{ \\'SATURATED_FAT\\' | translate }} {{currentProduct.saturated_fat}} g
  • {{ \\'TOTAL_CARBOHYDRATE\\' | translate }} {{currentProduct.total_carbohydrate}} g
  • {{ \\'SUGAR\\' | translate }} {{currentProduct.sugar}} g
  • {{ \\'PROTEIN\\' | translate }} {{currentProduct.protein}} g
  • {{ \\'FIBER\\' | translate }} {{currentProduct.fiber}} g
  • {{ \\'SALT\\' | translate }} {{currentProduct.salt}} g
  • {{ \\'CALCIUM\\' | translate }} {{currentProduct.calcium}} g
  • {{ \\'VITAMIN_A\\' | translate }} {{currentProduct.vitamin_a}} g
  • {{ \\'VITAMIN_B6\\' | translate }} {{currentProduct.vitamin_b6}} g
  • {{ \\'VITAMIN_B12\\' | translate }} {{currentProduct.vitamin_b12}} g
  • {{ \\'VITAMIN_C\\' | translate }} {{currentProduct.vitamin_c}} g
  • {{ \\'VITAMIN_D\\' | translate }} {{currentProduct.vitamin_d}} g
  • {{ \\'VITAMIN_E\\' | translate }} {{currentProduct.vitamin_e}} g

{{\\'FARMERS\\' | translate }}

1\\\">
\\\"\\\"

{{farm.fn}}

{{\\'PROVIDED\\' | translate }}: {{farm.pt | translate }}

\\\"\\\"
\\\"\\\"

{{farms[0].fn}}

{{\\'PROVIDED\\' | translate }}: {{farms[0].pt | translate }}

\\\"\\\"
\\\"{{providerFacility.name}}\\\"

{{providerFacility.address}}

{{providerFacility.name}}

{{\\'GO_TO_WEBSITE\\' | translate }}
0\\\">

{{\\'CERTIFICATES\\' | translate }}

\\\"\\\"
0\\\">
\");\n$templateCache.put(\"app/components/navbar/navbar.html\",\"\");\n$templateCache.put(\"app/components/modals/whitepapers.html\",\"
I want to get the following whitepapers

We will forward you all the whitepapers you choose.

\\\"\\\"
We need some of your info
Thank you for the request! We will be in touch via email shortly
\");}]);"],"sourceRoot":"/source/"}