/// /// /// /// /// /// /// /// var _PageManager = function () { this.preparedPages = {} this.createPages = function () { //add mainscreenpage this.preparePages(); if (!Common.usePrintView()) { this.goToCategory("0", true); this.activateCurrentPage(); } } this.preparePages = function () { var placeHolderDiv = document.createElement("div"); placeHolderDiv.id = "placeHolderDiv"; placeHolderDiv.style.top = "0px";//important to prevent body scroll placeHolderDiv.style.position = "absolute"; //important to prevent body scroll placeHolderDiv.style.width = MainView.innerViewWidth + "px"; if (!Common.usePrintView()) { placeHolderDiv.style.left = "-2000px"; placeHolderDiv.style.overflow = "hidden"; //important to prevent body scroll placeHolderDiv.style.height = MainView.innerViewHeight + "px"; } MainView.div.appendChild(placeHolderDiv); //preparing only dish pages (it takes a long time to create them) var lstCategories = DAL.t_Categories.getAllCategories(); for (var i = 0; i < lstCategories.length; i++) { var sCategoryID = lstCategories[i]; if (DAL.mainscreen.categoryHasMainscreenButton(sCategoryID) && !DAL.mainscreen.categoryHasMainscreen(sCategoryID)) { //create dish page var dp = new DishPage([sCategoryID]); placeHolderDiv.appendChild(dp.div); this.preparedPages[sCategoryID] = dp; } } } this.getPagesForCategory = function (sCategoryID) { var arrPages = []; if (sCategoryID == "0" && OpeningPage.bHasOpeningPage) arrPages.push("opening"); bAdd = false; var bIsMainscreenPage = false; if (DAL.mainscreen.categoryHasMainscreen(sCategoryID)) { bAdd = true; bIsMainscreenPage = true; } else if (DAL.mainscreen.categoryHasMainscreenButton(sCategoryID)) { bAdd = true; } if (bAdd) { //check if there are page promotions to add var lstPromotions = DAL.pagePromotions.getPromotionUsageForCategory(sCategoryID, !bIsMainscreenPage); if (lstPromotions && lstPromotions.length > 0) { for (j = 0; j < lstPromotions.length; j++) arrPages.push("p" + lstPromotions[j].iPromotionID) } arrPages.push(sCategoryID); } sParentCategoryID = DAL.t_Categories.getParentCategory(sCategoryID); if (sParentCategoryID) { var prevPages = this.getPagesForCategory(sParentCategoryID); arrPages = prevPages.concat(arrPages); } return arrPages; } this.goToCategory = function (sCategoryID, bGoToOpeningPage) { var iCurrentPageIndex = MainView.scrollView.getCurrentPageIndex(); var arrPagesToShow = this.getPagesForCategory(sCategoryID); //add/remove pages var bModified = false; for (var i = 0; i < arrPagesToShow.length; i++) { var bAddPage = true; if (MainView.scrollView.arrPages.length > i) { var page = MainView.scrollView.arrPages[i]; if (page.categoryID == arrPagesToShow[i]) bAddPage = false; } if (bAddPage) { bModified = true; //remove other pages (to the right) MainView.scrollView.removeAllPagesFromIndex(i); var page = null; if (arrPagesToShow[i] == "opening") { page = new OpeningPage(); } else if (arrPagesToShow[i][0] == "p") { page = new PagePromotionPage(arrPagesToShow[i]); //page promotions } else if (DAL.mainscreen.categoryHasMainscreen(arrPagesToShow[i])) //mainscreen page = new MainscreenPage(arrPagesToShow[i]); else { //dish page page = this.preparedPages[arrPagesToShow[i]]; if (!page) page = new DishPage([arrPagesToShow[i]]); } page.div.categoryID = arrPagesToShow[i]; page.div.page = page; MainView.scrollView.addPage(page.div, false); } } MainView.scrollView.removeAllPagesFromIndex(i);//remove other pages (if exist) //refresh and return to current page MainView.scrollView.refresh(); MainView.scrollView.goToPage(iCurrentPageIndex, true)//return to //go to last page , or previous promotionpage var iDestPage = arrPagesToShow.length - 1; while (iDestPage > 0 && arrPagesToShow[iDestPage - 1][0] == "p") iDestPage--; if (bGoToOpeningPage) iDestPage = 0; setTimeout(function () { MainView.scrollView.goToPage(iDestPage, false) }, 0, iDestPage); } this.getVisiblePages = function () { var arr = []; divPages = MainView.scrollView.getPages(); for (var i = 0; i < divPages.length; i++) { arr.push(divPages[i].page); } return arr; } this.deactivateAllPages = function () { MainView.pageManager._activatePage(); } this.activateCurrentPage = function () { var iCurrentPageIndex = MainView.scrollView.getCurrentPageIndex(); MainView.pageManager._activatePage(iCurrentPageIndex); } this.showPopupPromotions = function (page) { // set an array of popup promotions to show in this page if (!page.arrPopUpPromotions) { page.iNextPopupPromotionIndex = 0; page.arrPopUpPromotions = []; var arrCategories = page.arrCategoriesInPage; if (!arrCategories) return; for (var i = 0; i < arrCategories.length; i++) { var arrPPUs = DAL.pagePromotions.getPromotionUsageForCategory(arrCategories[i], false, true); for (var j = 0; j < arrPPUs.length; j++) page.arrPopUpPromotions.push(arrPPUs[j].iPromotionID); } } //show next popup promotion if (page.arrPopUpPromotions.length > 0) { //get next promotion ID page.iNextPopupPromotionIndex++; page.iNextPopupPromotionIndex = page.iNextPopupPromotionIndex % page.arrPopUpPromotions.length; var sPromotionID = page.arrPopUpPromotions[page.iNextPopupPromotionIndex]; //get next promotion Content sPromotionID = DAL.pagePromotions.getNextPromotionContent(sPromotionID); page.arrPopUpPromotions[page.iNextPopupPromotionIndex] = sPromotionID; //remove old promotions (if exist) var lst = page.div.getElementsByClassName("divPagePromotionPopup"); for (i = 0; i < lst.length; i++) page.div.removeChild(lst[i]); //show promotion var sImage = DAL.pagePromotions.getPromotionContentLargeImage(sPromotionID); if (sImage) { //create div (wrapper) var divPromotion = document.createElement("div"); divPromotion.style.position = "absolute"; divPromotion.style.left = divPromotion.style.top = "0px"; divPromotion.style.backgroundColor = "black"; divPromotion.style.width = "100%"; divPromotion.style.height = "100%"; divPromotion.className = "divPagePromotionPopup"; divPromotion.onclick = function (e) { this.parentElement.removeChild(this); }; //add video or image if (VideoPlayer.IsVideoFile(sImage)) { divPromotion.appendChild(new VideoPlayer(sImage, null, true).div) } else { var img = document.createElement("img"); img.src = sImage; img.style.objectFit = "contain"; img.style.objectPosition = "top"; img.style.maxWidth = "100%"; //img.style.width = MainView.innerViewWidth + "px"; //img.style.height= "auto"; divPromotion.appendChild(img); } page.div.appendChild(divPromotion); } } } this._activatePage = function (iPageIndexToActivate) { if (iPageIndexToActivate == null || iPageIndexToActivate == undefined) iPageIndexToActivate = -1; MainView.toolbars.setBackButtonVisibility(); var arr = MainView.pageManager.getVisiblePages() for (var i = 0; i < arr.length; i++) { var page = arr[i]; if (i == iPageIndexToActivate) { if (!page.activated) { if (page.activate) { this.showPopupPromotions(page); page.activate(); } page.activated = true; } } else { if (page.activated) { if (page.deactivate) page.deactivate(); page.activated = false; } } } } };