﻿  ///////////////////////////////////////////
 // INSTANTIATE Nutrition Chart values.
/////////////////////////////////////////////

servingSizeMeal=0;
caloriesMeal=0;
totalFatMeal=0
saturatedFatMeal=0;
cholesterolMeal=0;
sodiumMeal=0;
totalCarbMeal=0;
dietaryFiberMeal=0;
proteinMeal=0;
servingSize=0;
calories=0;
totalFat=0
saturatedFat=0;
cholesterol=0;
sodium=0;
totalCarb=0;
dietaryFiber=0;
protein=0;
ingredientsListHTML ="";
extras=0;
edit=999;
landing=999;

  ///////////////////////////////////////////
 // RETURN 2 Decimal place Int for nutrition
/////////////////////////////////////////////

function getGoodNum(num){
    result = Math.round(num * 100) / 100;
    if(result == 999999){
        return 0;
    }else{
        return result;
    }
}

  ///////////////////////////////////////////
 // RETURN 1 Decimal place Int for nutrition
/////////////////////////////////////////////

function getGoodLargeNum(num){
    result = Math.round(num * 10) / 10;
    if(result == 999999){
        return 0;
    }else{
        return result;
    }
}

  ///////////////////////////////////////////
 // ADD current item to the meal total. 
///////////////////////////////////////////

function addItem(){
    if(meal.length > 17){
        alert("Does this meal have anything to do with a dare?  You've reached the maximum number of items for a meal!");
        return;
    }
    meal[mealCounter] = currentItem.slice();
    meal[mealCounter][6] = currentItem[6].slice();
    meal[mealCounter][9] = mealCounter
    edit=mealCounter;
    mealCounter++;
    drawMeal();
    calcMeal();
    drawMealInfo();
    document.getElementById('AddButtonLink').style.visibility ="hidden";
    document.getElementById('resetButton').style.display = 'inline';   
}


  ///////////////////////////////////////////
 // RESET Meal. 
///////////////////////////////////////////

function resetMeal(){
    meal.length=0;
    mealCounter=0;
    calcMeal();
    drawMealInfo();
    edit=999;
    document.getElementById('meal_details').style.display = 'block';
    document.getElementById('meal_items_list').style.display = 'none';
    document.getElementById('resetButton').style.display = 'none';
    document.getElementById('AddButtonLink').style.visibility ="visible";
}


  ///////////////////////////////////////////
 // REMOVE Ingredient from item total. 
///////////////////////////////////////////

function removeIngredient(index){
    if(edit != 999){
        meal[edit][6].splice(index,1);
        meal[edit][1] = currentItem[1];
        calcMeal();
        drawMealInfo();
    }
    currentItem[6].splice(index,1);
    if(currentItem[6]==0){
        calcItem(currentItem);
        document.getElementById('AddButtonLink').style.visibility ="hidden";
        drawItemInfo();
    }else{
        calcItem(currentItem);
        drawItemInfo();
    }
    if(currentItem[6].length == currentItem[7]-1){
        if(currentItem[1].indexOf('(Cu')==-1){              
            currentItem[1] += ' (Customized)';
            document.getElementById('itemName').innerHTML = currentItem[1];
        }
    }
    checkScroller();
}


  ///////////////////////////////////////////
 // ADD ingredient to the item total. 
///////////////////////////////////////////

function addIngredient(index){
    document.getElementById('AddButtonLink').style.visibility ="visible";
    if(currentItem[6].length > 24){
        alert("Sorry pal, we'll only put 25 toppings on per sandwich.");
        return;
    }else{
        if(edit != 999){
            meal[edit][6].push(ingredients[index][0]);
            meal[edit][1] = currentItem[1];
            calcMeal();
            drawMealInfo();
        }
        currentItem[6].push(ingredients[index][0]);
        calcItem(currentItem);
        drawItemInfo();
        checkScroller();
        if(currentItem[6].length == currentItem[7]+1){
            if(currentItem[1].indexOf('(Cu')==-1){              
                currentItem[1] += ' (Customized)';
                document.getElementById('itemName').innerHTML = currentItem[1];
            }
        }
    }
}


  ///////////////////////////////////////////
 // REMOVE Item from meal total. 
///////////////////////////////////////////

function removeItem(index){
    if(currentItem[9] == index)
    {
        document.getElementById('AddButtonLink').style.visibility ="visible";
    }
    meal.splice(index,1);
    mealCounter--;
    if(meal.length==0){
        resetMeal();
    }else{
        drawMeal();
    }
    calcMeal();
    drawMealInfo();
    edit=999;
}


  ///////////////////////////////////////////
 // DRAW the meal list section. 
///////////////////////////////////////////

function drawMeal(){
    document.getElementById('meal_details').style.display = 'none';
    mealHTML = "<dl>";
    for (var i = 0, len = meal.length; i < len; ++i){
        mealHTML += "<dd><span class='left'>" + meal[i][1] + "</span><span class='right'>";
        if(meal[i][3] == 'Sub Sandwich' || meal[i][3] == 'Club Sandwich' || meal[i][3] == 'Plain Slims Sandwich' || meal[i][3] == 'Gargantuan' || meal[i][3] == 'Unwich'){
            mealHTML += "<a href='javascript:doEdit("+ i +");' class='remove'>EDIT</a> ";
        }
        mealHTML += "<a href='javascript:removeItem(" + i + ")' class='remove'>X</a></span></dd>";
    }
    mealHTML += "</dl>";
    document.getElementById('meal_items_list').style.display = 'block';
    document.getElementById('meal_items_list').innerHTML = mealHTML;
}


  ///////////////////////////////////////////
 // CALCULATE Nutirition info on item level
///////////////////////////////////////////

function calcItem(item){
    servingSize=0;
    calories=0;
    totalFat=0
    saturatedFat=0;
    cholesterol=0;
    sodium=0;
    totalCarb=0;
    dietaryFiber=0;
    protein=0;
    ingredientsListHTML = '<table border="0" cellpadding="0" cellspacing="0">';
    for (var j = 0, len = item[6].length; j < len; ++j){
        for (var k=0, len = ingredients.length; k < len; ++k){
            if(ingredients[k][0] == item[6][j]){
                ingredientsListHTML += '<tr><td class="left">' +  ingredients[k][1] + '</td>';
                ingredientsListHTML += '<td class="right">';
                if(item[3] == 'Sub Sandwich' || item[3] == 'Club Sandwich' || item[3] == 'Plain Slims Sandwich' || item[3] == 'Gargantuan' || item[3] == 'Unwich'){
                    ingredientsListHTML += '<a href="javascript:removeIngredient(' + j +');" class="remove">X</a>';
                }
                ingredientsListHTML += '</td></tr>';
                servingSize = servingSize + parseFloat(ingredients[k][2]);
                calories = calories + parseFloat(ingredients[k][3]);
                totalFat = totalFat + parseFloat(ingredients[k][4]);
                saturatedFat = saturatedFat + parseFloat(ingredients[k][5]);
                cholesterol = cholesterol + parseFloat(ingredients[k][8]);
                sodium = sodium + parseFloat(ingredients[k][7]);
                totalCarb = totalCarb + parseFloat(ingredients[k][6]);
                dietaryFiber = dietaryFiber + parseFloat(ingredients[k][10]);
                protein = protein + parseFloat(ingredients[k][9]);
            }
        }
    }
    ingredientsListHTML += '</table>';  
}


  ///////////////////////////////////////////
 // DRAW meal Nutrition info. 
///////////////////////////////////////////

function drawMealInfo(){
    document.getElementById('nf_calories_meal').innerHTML = getGoodNum(caloriesMeal) + "";
    document.getElementById('nf_total_fat_meal').innerHTML = getGoodNum(totalFatMeal) + " g";
    document.getElementById('nf_sat_fat_meal').innerHTML = getGoodNum(saturatedFatMeal) + " g";
    document.getElementById('nf_cholesterol_meal').innerHTML = getGoodNum(cholesterolMeal) + " mg";
    if(sodium > 90000)
    {
        document.getElementById('nf_sodium_meal').innerHTML = getGoodLargeNum(sodiumMeal) + " mg";
    }else{
        document.getElementById('nf_sodium_meal').innerHTML = getGoodNum(sodiumMeal) + " mg";
    }
    document.getElementById('nf_carbs_meal').innerHTML = getGoodNum(totalCarbMeal) + " g";
    document.getElementById('nf_dietary_fiber_meal').innerHTML = getGoodNum(dietaryFiberMeal) + " g";
    document.getElementById('nf_protein_meal').innerHTML = getGoodNum(proteinMeal) + " g";
}
         
         
  ///////////////////////////////////////////
 // DRAW item Nutrition info.  
///////////////////////////////////////////       
         
function drawItemInfo(index){
    document.getElementById('scrollable').innerHTML = ingredientsListHTML;
    document.getElementById('nf_serving_size').innerHTML = getGoodNum(servingSize) + " grams";
    document.getElementById('nf_calories').innerHTML = getGoodNum(calories) + "";
    document.getElementById('nf_total_fat').innerHTML = getGoodNum(totalFat) + " g";
    document.getElementById('nf_sat_fat').innerHTML = getGoodNum(saturatedFat) + " g";
    document.getElementById('nf_cholesterol').innerHTML = getGoodNum(cholesterol) + " mg";
    if(sodium > 9000)
    {
        document.getElementById('nf_sodium').innerHTML = getGoodLargeNum(sodium) + " mg";
    }else{
        document.getElementById('nf_sodium').innerHTML = getGoodNum(sodium) + " mg";
    }
    document.getElementById('nf_carbs').innerHTML = getGoodNum(totalCarb) + " g";
    document.getElementById('nf_dietary_fiber').innerHTML = getGoodNum(dietaryFiber) + " g";
    document.getElementById('nf_protein').innerHTML = getGoodNum(protein) + " g";
}
  
     
  ///////////////////////////////////////////
 // CALCULATE meal nutrition info  
///////////////////////////////////////////       

function calcMeal(){
    servingSizeMeal=0;
    caloriesMeal=0;
    totalFatMeal=0
    saturatedFatMeal=0;
    cholesterolMeal=0;
    sodiumMeal=0;
    totalCarbMeal=0;
    dietaryFiberMeal=0;
    proteinMeal=0;
    for (var i = 0, len = meal.length; i < len; ++i){
        calcItem(meal[i]);
        caloriesMeal=caloriesMeal+parseFloat(calories);
        totalFatMeal=totalFatMeal+parseFloat(totalFat);
        saturatedFatMeal=saturatedFatMeal+parseFloat(saturatedFat);
        cholesterolMeal=cholesterolMeal+parseFloat(cholesterol);
        sodiumMeal=sodiumMeal+parseFloat(sodium);
        totalCarbMeal=totalCarbMeal+parseFloat(totalCarb);
        dietaryFiberMeal=dietaryFiberMeal+parseFloat(dietaryFiber);
        proteinMeal=proteinMeal+parseFloat(protein);
    }
}


  ///////////////////////////////////////////
 // EDIT selected item from Meal          //
///////////////////////////////////////////  

function doEdit(index){
    if(currentItem[9] != meal[index][9]){
        currentItem = meal[index].slice();
        currentItem[6] = meal[index][6].slice();
        document.getElementById('AddButtonLink').style.visibility ="hidden";
        doItemEdit(meal[index]);
        edit=index;
    }
    document.getElementById('infoPane').style.display = 'none';
    document.getElementById('extras_list').style.display = 'block';
    document.getElementById('addExtrasButtonLink').style.display = 'none';
    extras=1;
}


  ///////////////////////////////////////////
 // TOGGLE Extras panel 
/////////////////////////////////////////// 

function toggleExtras(){
    if(extras==0){
        document.getElementById('infoPane').style.display = 'none';
        document.getElementById('extras_list').style.display = 'block';
        document.getElementById('addExtrasButtonLink').style.display= 'none';
        //document.getElementById('wheelScroll').style.height= '310px';
        //document.getElementById('wrap').style.height= '298px';
        //document.getElementById('track').style.height= '298px';
        //document.getElementById('scrollable').style.height= '298px';
        //checkScroller();
        //initializeScroller();
        extras=1;
    }else{
        document.getElementById('infoPane').style.display = 'block';
        document.getElementById('extras_list').style.display = 'none';
        document.getElementById('addExtrasButtonLink').style.display= 'block';
        //document.getElementById('wheelScroll').style.height= '180px';
        //document.getElementById('wrap').style.height= '168px';
        //document.getElementById('track').style.height= '168px';
        //document.getElementById('scrollable').style.height= '168px';
        //checkScroller();
        //initializeScroller();
        extras=0;
    }
}


  ///////////////////////////////////////////
 // DRAW item info.  
///////////////////////////////////////////  

function doItem(item){
    edit=999;
    document.getElementById('AddButtonLink').style.visibility ="visible";
    document.getElementById('infoPane').style.display = 'block';
    document.getElementById('extras_list').style.display = 'none';
    document.getElementById('addExtrasButtonLink').style.display = 'block';
    document.getElementById('AddButtonLink').innerHTML = 'ADD TO MEAL';
    document.getElementById('AddButtonLink').href = "javascript:addItem();";
    extras=0;
    document.getElementById('itemName').innerHTML = item[1];
    document.getElementById('itemImage').src = item[2];
    document.getElementById('item_details').innerHTML = item[5];
    document.getElementById('nf_item_name').innerHTML = item[1];
    if(item[3] == 'Chips' || item[3] == 'Cookies' || item[3] == 'Pickles' || item[3] == 'Coke' || item[3] == 'Sprite' || item[3] == 'Lemonade' || item[3] == 'Iced Tea'){
        document.getElementById('addExtrasButton').style.display = 'none';
    }else{
        document.getElementById('addExtrasButton').style.display = 'block';
    }
    
    docNode = document.getElementById('extrasExtras').firstChild;
    if (item[3] == 'Plain Slims Sandwich') {
        document.getElementById('veggies').style.display = 'none';
        document.getElementById('extrasVeggies').style.display = 'none';
        document.getElementById('sauces').style.display = 'none';
        document.getElementById('extrasSauces').style.display = 'none';
        docNode.style.display = 'none';
    } else {
        document.getElementById('veggies').style.display = 'block';
        document.getElementById('extrasVeggies').style.display = 'block';
        document.getElementById('sauces').style.display = 'block';
        document.getElementById('extrasSauces').style.display = 'block';
        docNode.style.display = 'block';
    }
    
    currentItem = item.slice();
    currentItem[6] = item[6].slice();
    currentItem[7]= item[6].length;
    calcItem(currentItem);
    drawItemInfo();
    checkScroller()
}


  ///////////////////////////////////////////
 // DRAW item info FOR EDITING 
///////////////////////////////////////////  

function doItemEdit(item){
    document.getElementById('infoPane').style.display = 'block';
    document.getElementById('extras_list').style.display = 'none';
    document.getElementById('addExtrasButtonLink').style.display = 'block';
    document.getElementById('AddButtonLink').innerHTML = 'ADD TO MEAL';
    document.getElementById('AddButtonLink').href = "javascript:addItem();";
    extras=0;
    document.getElementById('itemName').innerHTML = item[1];
    document.getElementById('itemImage').src = item[2];
    document.getElementById('item_details').innerHTML = item[5];
    document.getElementById('nf_item_name').innerHTML = item[1];
    if(item[3] == 'Chips' || item[3] == 'Cookies' || item[3] == 'Pickles'){
        document.getElementById('addExtrasButton').style.display = 'none';
    }else{
        document.getElementById('addExtrasButton').style.display = 'block';
    }
    currentItem = item.slice();
    currentItem[6] = item[6].slice();
    currentItem[7]= item[6].length;
    calcItem(currentItem);
    drawItemInfo();
    checkScroller()
}

  ///////////////////////////////////////////
 // SORT Menu items by db sort order.  
///////////////////////////////////////////  

function sortMenu(a, b) {
    var x = parseInt(a[4]);
    var y = parseInt(b[4]);
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}   
       
 
  ///////////////////////////////////////////
 // INITIALIZE ACCORDION INFO  
///////////////////////////////////////////  

function initAccordionData(){
    extrasBreadString ='';
    extrasVeggiesString = '';
    extrasExtrasString = '';
    extrasMeatString = '';
    extrasSaucesString = '';
    pepe=0;
    menuItems.sort(sortMenu);

    for (var j = 0, len = menuItems.length; j < len; ++j){
        if(menuItems[j][0] == startItem){landing=j;}
        if(menuItems[j][8] == 'Yes'){
            LowFatString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
        }
        switch (menuItems[j][3]){
            case 'Sub Sandwich':
                SubSandwichesString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                if(menuItems[j][1] == '#1 Pepe®'){pepe=j;}
                break;
            case 'Club Sandwich':
                ClubSandwichesString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Plain Slims Sandwich':
                SlimSandwichesString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Gargantuan':
                GargantuanString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Unwich':
                UnwichString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Chips':
                ChipsString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Cookies':
                CookiesString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Pickles':
                PicklesString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Coke':
                CokeString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Sprite':
                SpriteString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Lemonade':
                LemonadeString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
            case 'Iced Tea':
                IcedTeaString += "<a href='javascript:doItem(menuItems[" + j + "]);'>" + menuItems[j][1] + "</a><br/>";
                break;
        }
    }
    
    // ENL fix 11052008 - Need unwich to appear last in bread extras list without disrupting anything.
    var ENLBreadTweak= "";
    
    for (var k = 0, len = ingredients.length; k < len; ++k){
        switch (ingredients[k][11]){
            case '003':
                extrasVeggiesString += "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                break;
            case '001':
                if(ingredients[k][1].indexOf('Unwich')==-1){  // If this is unwich wrap, don't add -- save for last.
                    extrasBreadString += "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                    break;
                }else{
                    ENLBreadTweak = "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                    break;
                }
            case '005':
                extrasExtrasString += "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                break;
            case '002':
                extrasMeatString += "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                break;
            case '004':
                extrasSaucesString += "<dd><span class='left'>" + ingredients[k][1] + "</span><span class='right'><a href='javascript:addIngredient("+ k +");' class='add'>ADD</a></span></dd>";
                break;
        }
    }
    extrasBreadString += ENLBreadTweak;

    document.getElementById('menuSubSandwiches').innerHTML = SubSandwichesString;
    document.getElementById('menuClubSandwiches').innerHTML = ClubSandwichesString;
    document.getElementById('menuSlimSandwiches').innerHTML = SlimSandwichesString;
    document.getElementById('menuGargantuan').innerHTML = GargantuanString;
    document.getElementById('menuLowCarb').innerHTML = UnwichString;
    document.getElementById('menuLowFat').innerHTML = LowFatString;
    document.getElementById('menuChips').innerHTML = ChipsString;
    document.getElementById('menuCookies').innerHTML = CookiesString;
    document.getElementById('menuPickles').innerHTML = PicklesString;
    document.getElementById('extrasBread').innerHTML = extrasBreadString;
    document.getElementById('extrasVeggies').innerHTML = extrasVeggiesString;
    document.getElementById('extrasExtras').innerHTML = extrasExtrasString;
    document.getElementById('extrasSauces').innerHTML = extrasSaucesString;
    document.getElementById('extrasMeat').innerHTML = extrasMeatString;
    document.getElementById('menuCoke').innerHTML = CokeString;
    document.getElementById('menuSprite').innerHTML = SpriteString;
    document.getElementById('menuLemonade').innerHTML = LemonadeString;
    document.getElementById('menuIcedTea').innerHTML = IcedTeaString;
    if(landing==999){
        doItem(menuItems[pepe]);
    }else{
        doItem(menuItems[landing]);
    } // Initialize page to the Pepe!
}

function doSave(index){
            meal[index] = currentItem.slice();
            meal[index][6] = currentItem[6].slice();
            document.getElementById('infoPane').style.display = 'block';
            document.getElementById('extras_list').style.display = 'none';
            document.getElementById('addExtrasButtonLink').style.display = 'block';
            document.getElementById('AddButtonLink').innerHTML = 'ADD TO MEAL';
            document.getElementById('AddButtonLink').href = "javascript:addItem();";
             calcMeal();
            drawMealInfo();
            
}