///
///
///
///
///
///
///
///
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;
}
}
}
}
};