 // JavaScript Documentss
$(function(){
    if(!$(".slimTitle")[0]){
        suggest.init();
    }
    else if($(".slimTitle").text() == "Food Journal"){
        dateManager.init();
        foodLog.init();
        suggest.init();
        qucikTool.init();
        $('.nyroModal').nyroModal({
            closeButton: '<a href="#" class="nyroModalClose nyroModalCloseButton nmReposition closeBtn" title="close"></a>',
            showCloseButton: true
        });
        $('.nyroModal').trigger('click');
    }
    else if($(".slimTitle").text() == "Search Results"){
        qucikTool.init();
    }
    else if($(".slimTitle").text() == "Food Detail"){
        fooddetail.init();
    }
    $('.after7day').nyroModal({
        showCloseButton: false,
        closeOnEscape: false,
        closeOnClick: false
    });
    $('.after7day').trigger('click');
            //let input only accept number
    $('#qiantity').keypress(function(e){

      var code = (e.keyCode ? e.keyCode : e.which);
      if((code>=48 && code<=57)||code==8||code==9||code==110||code==37||code==39||code==46){
      }else{
        return false;
      }
    });    
	$('#serving').keypress(function(e){

      var code = (e.keyCode ? e.keyCode : e.which);
      if((code>=48 && code<=57)||code==8||code==9||code==110||code==37||code==39||code==46){
      }else{
        return false;
      }
    });    
        
})

var suggest = {
    //NDB_No: 0,
    init: function(){
        //search suggest
		$("#searchWord").autocomplete('/findfoods/searchSuggest',{
            minChar: 1,
            max: 100,
            width: 720,
            scrollHeight: 380,
            autoFill: false,
            formatItem: function(row, i, max) {
                var flg=row[0];
                if (flg=="a"){
                     var formatHtml = "<table class='suggestItem' style='background:#FFF;width: 100%'><tr><td>" +
                                    "<h4 style='line-height:50px'> No search result found. You can try a different search or create a new item.</h4></tr></table>";
					$("#search_link a + a").hide()

                }else{
                var formatHtml = "<table class='suggestItem'><tr><td style='overflow: hidden; width: 250px;text-align: left;'><img src=" + row[0] + ">" +
                                    "<h3>" + row[1] + "</h3><p>By " + row[2] + "</p></td><td>&nbsp;</td><td>" + row[13] + "</td><td>" + row[7] + "</td></tr></table>";
				$("#search_link a + a").show()
                                    /*<td>" + row[7] +
                                    "</td><td>" + row[8] + "</td><td>" + row[9] + "</td><td>" + row[10] + "</td><td>" + row[11] +
                                    "</td></tr></table>";
                                    */
                }
                return formatHtml;
                //return "<img src='" + row[0] + "'/><div style='width:255px; overflow:hidden'><h3>" + row[1] + "</h3><p>" + row[2] + "</p></div>";
                //return "<img src='" + row[0] + "'/><h3>" + row[1] + "</h3><p>" + row[2] + "</p>" + "<p>" + row[3] + "</p>" + "<p>" + row[4] + "</p>" +  "<p>" + row[5] + "</p>";
            },
            formatResult: function(row) {
            	return row[1];
            },
            formatMatch: function(row) {
                suggest.init(row);
            },
            isShowFrame: true
        }).result(function (evt, data, formatted) {
            suggest.setItemData(data);
        });
    },
    
    setItemData: function(data){
        //this.NDB_No = data[3];
        if(!$("#NDB_No")[0]){
            $("<input type='hidden' id='NDB_No' value='" + data[3] + "'>").appendTo('body');
        } else{
            $("#NDB_No").val(data[3]);
        }
        
        var num = data[14],
            unitValArray = data[4].split("-");
            unitArray = data[5].split("~");
			
		// if user delete #qiantity number, I can use the #initSeqNum value to input #initSeqNum
		if(!$("#initSeqNum")[0]){
            $("<input type='hidden' id='initSeqNum' value='" + num + "'>").appendTo('body');
        } else{
            $("#initSeqNum").val(num);
        }
		
        $("#qiantity").val(num);
        $("#unit").parent().children("ul").children("li").remove()
        
        for(var i = 0; i < unitValArray.length; i++){
           var strdata= data[6];
           if (num>1){
              strdata=strdata.singularize();
           }
           
          
        $("#unit").parents('dl').children('dt').children('span').text(strdata);
            //$("#unit").append("<option value='" + unitValArray[i] + "'>" + unitArray[i] + "</option>");
            if(data[6] == unitArray[i]){

                $("#unit").val(unitValArray[i]);
            }
            $("#unit").parent().children("ul").append("<li data-valueofkey='" + unitValArray[i] +
                    "' onmousemove='SetSelectInput(this,3);' onmouseout='SetSelectInput(this,2);' onclick='SetSelectInput(this,1);'>" + unitArray[i].singularize() + "</li>");
        }
    },

    addItemToLog: function(data, textStatus, jqXHR){
        if(!data.error){
            foodLog.selectMeal(data);
            $("#searchWord").val("");
            $(".fakeSelect02 .diyselect span").text("Breakfast");
            $("#meal").val("B");
            $("#qiantity").val("1");
            $(".serving02 .diyselect span").text("Serving");
			$(".serving02 dd ul").html("<li data-valueofkey='Serving' onmousemove='SetSelectInput(this,3);' onmouseout='SetSelectInput(this,2);' onclick='SetSelectInput(this,1);'>Serving</li>");
        } else {
            //alert(data.error); 
        }
    },
    add: function(callbackFun){
		var seqnum = $("#qiantity").val();
		if(!seqnum){
			var initSeqNum = $("#initSeqNum").val();
			$("#qiantity").val(initSeqNum);
		}
		
        var getDate = $('#datepicker').datepicker('getDate');
        var date = all.getAjaxDateFormat(getDate);
        /*
        alert("-date: " + date + " -NDB_No: " + this.NDB_No +
                " -BLDS: " + $("#meal").val() + " -seqnum: " + $("#qiantity").val() + " -seq: " + $("#unit option:selected").val());
        */
		
        $.ajaxSet
        $.ajax({
            url: '/findfoods/addFoodlog',
            type: 'POST',
            data:{
                date: date,
                NDB_No: $("#NDB_No").val(),
                BLDS: $("#meal").val(),
                seqnum: seqnum,
                seq: $("#unit").val()
            },
            dataType: 'json',
            timeout: 5000,
            error: function(){},
            success: callbackFun
        });
		$("#unit").parents('dl').children('dd').children('span').text('123');
        $("#unit").val("");
    }
}
var dateManager = {
    //monthArr: new Array(12),
    //monthArr: ['January','February','March','April','May','June','July','August','September','October','November','December'],
    init: function(){
        //$("#datepicker03").datepicker();
        //$("#datepicker").val(all.getDateFormat());
        
        //date picker
        $( "#datepicker" ).datepicker({
            //dateFormat:'M d D',
            //dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
            //monthNamesShort: ['Jan.','Feb.','Mar.','Apr.','Maj.','Jun.','Jul.','Aug.','Sep.','Okt.','Nov.','Dec.'],
            //currentText: 'Now',
            dateFormat:'MM d, yy',
            changeMonth: true,
            changeYear: true,
			/*
			beforeShow: function(input, inst){
				var d=all.getAjaxDateFormat(d);
				if(date == d){
					$('.ui-datepicker,.ui-datepicker-buttonpane, button.ui-datepicker-current').css('font-weight','400');
					
					//alert(1);
				}else{
					$('#this-day').css("color","green");
				}
			},
			*/
            showButtonPanel: true,
            yearRange: 'c-2:c',
            onClose: function(dateText, inst){
                foodLog.getFoodLog($("#datepicker").datepicker('getDate'));
            }
        });
		
        $("#datepickerBg").click(function() {
           $("#datepicker").datepicker('show');
        });
        
    },
    
    /* mover to all.js
    getDateFormat: function(date){
        if(!date){
            var date = new Date();
        }
        var monthArr = ['January','February','March','April','May','June','July','August','September','October','November','December'],
            date_year = date.getFullYear(),
            date_month = this.monthArr[date.getMonth()],
            date_date = date.getDate(),
        return date_month + " " + date_date + ", " + date_year;
    },
    */

    changeDay: function(numDay){
        var getDate = $('#datepicker').datepicker('getDate');
        var dateParse = Date.parse(getDate);
        var lastDate = dateParse + numDay * 86400000;
        var d = new Date();
        d.setTime(lastDate);
        $("#datepicker").datepicker("setDate", all.getDateFormat(d));
        foodLog.getFoodLog(d);
    }
}

var foodLog = {
    //itemFrom: null,
    itemFromMeal: null,
    itemsData: new Object(),
    mouse_is_inside02: false,
    seq: 0,
    init: function(){
        var date = this.parseDate();
        if(date){
            var d = all.parseTimeObj(date);
            this.getFoodLog(d);
        } else {
            //date = all.getAjaxDateFormat();
            //var d = new Date()
			var d = all.parseTimeZoneObj()
            this.getFoodLog(d);
        }
        $("#datepicker").val(all.getDateFormat(d));
    },
    parseDate:function() {
        var pathArr = location.href.split("?")[1];
        if(!pathArr){
            return false;
        }
        var  attrArr = pathArr.split("&");
        for(var i = 0; i < attrArr.length; i++ ){
            if(attrArr[i].split("=")[0] == "date"){
                return attrArr[i].split("=")[1];
            }
        }
        return false;
    },
    getFoodLog: function(d){
        date = all.getAjaxDateFormat(d)
        $.ajax({
            url: '/findfoods/selectFoodlog',
            type: 'POST',
            data:{
                date: date
            },
            dataType: 'json',
            timeout: 10000,
            error: function(jqXHR, textStatus, errorThrown){
                alert("error:" + textStatus);
            },
            success: function(data){
                foodLog.clearFoodItem();
                foodLog.clearTotal();
                foodLog.selectMeal(data);
            }
        });
    },
    
    selectMeal: function(data){
        /*foodLog.clearTotal();*/
        $.each(['B', 'L', 'D', 'S'], function(index, value){
            if($("#" + value + " tbody tr").size() == 0){
                foodLog.itemTurnOff($("#" + value).children("table").children("thead"));
            }
            if(data[value]){
                for(var i = 0; i < data[value].length; i++){
                    var elmName = "#" + value + " tbody"
                    foodLog.addItem(data[value][i], elmName);
                    foodLog.getMealTotal(value);
                }
                foodLog.itemTurnOn($("#" + value).children("table").children("thead"));
            }
        });  
        foodLog.getAllTotal();
    },
    dragNDrop: function(){  
        //drag and drop
        $(".foodItem tbody tr").draggable({
            axis: "y",
            revert: 'true',
            helper: 'clone',
            //cursor: "move",
            /*
            start: function(event, ui) {
                //alert($(this).parents("li").attr("id"));
                foodLog.itemFrom = $(this).parents("li").attr("id");
            },
            */
            stop: function(event, ui) {
                $(ui.helper).remove();
                foodLog.moveSelfItem(this);
                $(".foodLogUl tbody tr").removeClass("oddBg");
                $(".foodLogUl tbody tr:nth-child(odd)").addClass("oddBg");
            }

        });
        $(".foodItem").droppable({
            tolerance: 'pointer',
            /*
            out: function() {
              $(this).removeClass('hover');
            },
            */

            drop: function(event, ui) {
                if(foodLog.diffFrom(ui.draggable, this)){
                    $(this).children('tbody').append(ui.draggable);
                }
                //check is double
                /*
                if(foodLog.checkIsDup(ui.draggable, this)){
                    $(this).children('tbody').append(ui.draggable);        
                };
                */
                //$(this).removeClass('hover');
                //$(this).addClass('active');
                //mealStatusDraggable(mealElement);
            }
        });

    },
    diffFrom: function(fromElm, toElm){
        this.itemFromMeal = $(fromElm).parents("li").attr("id");
        var itemToMeal = $(toElm).parents("li").attr("id");
        if(itemToMeal == this.itemFromMeal){
            return false;
        }
        return true
    },
    // check is double
    checkIsDup: function(fromElm, toElm){

        var foodIdFrom = $(fromElm).attr("NDB_No");
        this.itemFromMeal = $(fromElm).parents("li").attr("id");
        var itemToMeal = $(toElm).parents("li").attr("id");
        if(itemToMeal == this.itemFromMeal){
            return false;
        }
        var foodIdToArr = $(toElm).children("tbody").children("tr");
        var itemToSize = foodIdToArr.size();
        for(var i = 0; i < itemToSize; i++){
            if(foodIdFrom == foodIdToArr[i].getAttribute("NDB_No")){
                alert("duplicate");
                return false;
            }
        }
        return true
    },
    moveSelfItem: function(toElm){
        var itemToMeal = $(toElm).parents('li').attr("id");
        if(itemToMeal == this.itemFromMeal){
            return;
        }
        var foodIdToArr = $("#" + itemToMeal + " tbody tr");
        var itemToSize = foodIdToArr.size();
        var itemToArr = new Array();
        for(var i = 0; i < itemToSize; i++){
            itemToArr[i] = foodIdToArr[i].getAttribute("id");
        }
        
        var itemFromSize = $("#" + this.itemFromMeal + " tbody tr").size();
        var itemFromArr = new Array();
        for(var i = 0; i < itemFromSize; i++){
            itemFromArr[i] = $("#" + this.itemFromMeal + " tbody tr")[i].getAttribute("id");
        }

        var getDate = $('#datepicker').datepicker('getDate');
        var date = all.getAjaxDateFormat(getDate);
        //alert("itemFromArr: " + itemFromArr + ",itemToMeal: " + itemToMeal + ", itemToArr: " + itemToArr);
        this.checkIsNoItem(foodLog.itemFromMeal);
        this.checkIsNoItem(itemToMeal);
        this.getMealTotal(foodLog.itemFromMeal);
        this.getMealTotal(itemToMeal);
        
        this.moveItem(date, itemFromArr, itemToMeal, itemToArr);
        
      
    },
    checkIsNoItem: function(elmId){
        if($("#" + elmId + " tbody tr").size() == 0){
            this.itemTurnOff($("#" + elmId + " thead")[0]);
        } else {
            this.itemTurnOn($("#" + elmId + " thead")[0]);
        }

    },

    moveItem: function(d, itemFromArr, itemToMeal, itemToArr){

        var data="({date: d," + this.itemFromMeal + ":itemFromArr, " + itemToMeal + ": itemToArr})";
        $.ajax({
            url: '/findfoods/modFoodlog',
            type: 'POST',
            data:eval(data),
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
                /*
                for(var i = 0; i < data.foodlogid.length; i++){
                    var elmName = "tr#" + data.foodlogid[i]
                    $(elmName).remove();
                }
                */
            }
        });
    },
    
    addItem: function(data, elmName){
        //alert(data.NDB_No)
        var itemData = new Object;
        //itemData.id = data.foodlogid;
        itemData.Seq = data.Seq;
        itemData.Unit = data.Unit;
        this.itemsData[data.foodlogid] = itemData;
        var foodDetailLink = "/food_journal/fooddetail/" + data.foodid + "/" + data.Servingid + "/" + data.ServSize.split(' ')[0];
        //this.itemsData.push(itemData);
        var itemHtml = "<tr id=" + data.foodlogid + " NDB_No=" + data.NDB_No + "><td class='th1'><input foodlogid=" + data.foodlogid + " type='checkbox' onclick='foodLog.clearOtherCheck(this)' /></t>" +
                        "<td class='foodData'><div class='hoverFoodImg'>" +
                            "<div class='hoverFoodDetail'>" +
								"<div class='hoverFoodDetailHead'></div>" + 
                                "<div class='arrow01'>" +
                                "</div>" +
                                "<h3 class='nDesc'>" + data.description + "</h3>" +
                                "<p class='paddingB5'>Serving size: <tt class='nServ'>" + data.Nutrition.ServSize + "</tt></p>" +
                                "<ul class='foodDetailUl'><li><p>Amount Per Serving</p></li><li><p><b>Calories <tt class='nCal'>" + data.Nutrition.calories + "</tt></b></p><span>Calories from Fat <tt class='nCalFat'>" + data.Nutrition.calories_from_fat + "</tt></span></li></ul>" +
                                "<ul class='NutritionFace01 foodDetailUl'>" +
                                    "<li><span>% Daily Values*</span></li>" +
                                    "<li><p>Total Fat <tt class='nTotFat'>" + data.Nutrition.total_fat + "</tt>g</p></li>" +
                                    "<li><i>Saturated Fat <tt class='nSatFat'>" + data.Nutrition.saturated_fat + "</tt>g</i></li>" +
                                    "<li><p>Cholesterol <tt class='nCho'>" + data.Nutrition.cholesterol + "</tt>mg</p><span><tt class='nChoPct'>" + data.Nutrition.cholesterol_pct + "</tt>%</span></li>" +
                                    "<li><p>Sodium <tt class='nSod'>" + data.Nutrition.sodium + "</tt>mg</p><span><tt class='nSodPct'>" + data.Nutrition.sodium_pct + "</tt>%</span></li>" +
                                    "<li><p>Total Carbohydrate <tt class='nCarbs'>" + data.Nutrition.carbs + "</tt>g</p></li>" +
                                    "<li><i>Dietary Fiber <tt class='nDieFib'>" + data.Nutrition.dietary_fiber + "</tt>g</i></li>" +
                                    "<li><i>Sugars <tt class='nSugar'>" + data.Nutrition.sugar + "</tt>g</i></li><li><p>Protein <tt class='nPro'>" + data.Nutrition.protein + "</tt>g</p><span><tt class='nProPct'>" + data.Nutrition.protein_pct + "</tt>%</span></li></ul>" +
                                "<ul class='NutritionFace01 foodDetailUl'>" +
                                    "<li><p>Vitamin A</p><span><tt class='nVitA'>" + data.Nutrition.vitamin_a + "</tt>%</span></li>" +
                                    "<li><p>Vitamin C</p><span><tt class='nVitC'>" + data.Nutrition.vitamin_c + "</tt>%</span></li>" +
                                    "<li><p>Calcium</p><span><tt class='nCalcium'>" + data.Nutrition.calcium + "</tt>%</span></li>" +
                                    "<li><p>Iron</p><span><tt class='nIron'>" + data.Nutrition.iron + "</tt>%</span></li>" +
                                "</ul>" +
								"<div class='hoverFoodDetailFoot'></div>" + 
                            "</div>" +
                            "<a class='itemFoodImg foodDetailLink' href='" + foodDetailLink +"'><img width='50' height='50' src='" + data.img + "' /></a>" +
                        "</div>" +
                        "<h4><a class='foodDetailLink blackLink02'  title=\"" + data.descriptionComplete + "\" href='" + foodDetailLink + "'>" + data.description + "</a></h4></td><td class='favor'><a href='javascript:void(0);'>";
		/*
        if(data.isfavorite){
            itemHtml += "<img src='/img/cover/btn_favorOn.png' foodid=" + data.foodid + " value='on' onclick='foodLog.changeFavorStatus(this)' />"
        } else {
            itemHtml += "<img src='/img/cover/btn_favorOff.png' foodid=" + data.foodid + " value='off' onclick='foodLog.changeFavorStatus(this)' />"
        }
		*/
        itemHtml += "</a><!--<br />--><a>By "+data.creator+"</a></td><td class='Portion'><a title='" + data.ServSizeComplete + "' class='servSize blackLink02' Servingid=" + data.Servingid +
                    " onclick='foodLog.modifySer(this);' href='javascript:void(0);'>" + data.ServSize + "</a></td><td class='Calories'>" + data.Calories + "</td>" +
                    "<td class='Fat'>" + data.Fat +"</td><td class='Carbs'>" + data.Carbs + "</td><td class='Protein'>" + data.Protein +
                    //"</td><td class='Fiber'>" + data.Fiber +
                    "</td><td class='Sugars'>" + data.Sugars + "</td><td class='deleteArea'><a onclick='foodLog.delSelfItem(this)'>" +
                    "<img src='/img/cover/btn_delete.png' class='delImg' /></a></td></tr>";

        itemHtml += ""
        $(elmName).append(itemHtml);
        $(".foodLogUl tbody tr:nth-child(odd)").addClass("oddBg");
        foodLog.dragNDrop();
    },
    clearOtherCheck: function(elm){
        var liId = $(elm).parents("li").attr("id");
        $("#" + liId).siblings('li').find('input').removeAttr('checked');
    },
    modifySer: function(elm){
        // to single in inflection.js        
        this.clearModify();
        var itemData = new Object(),
            foodItmeId = $(elm).parents("tr").attr("id"),
            foodNum = $(elm).text().split(" ")[0],
            unit = $(elm).text().split(" ")[1],
            unit=unit.singularize(),
            seq = $(elm).attr("Servingid"),
            modifyHtml;
        itemData = this.itemsData[foodItmeId];
                
        modifyHtml = "<tr class='itemModify'><th class='th1'></th><td></td><td></td><td colspan='8'><div class='sevrPos'><div class='modifyServDiv radius5'>" +
                          "<input id='modifyNum' type='text' class='foodText01 floatL' style='line-height:25px;' value=" + foodNum + "><div class='fakeSelect01 floatL selectMargin01'><dl><dt onclick='AjaxSelectBox(this)'><span>" + unit + "</span></dt>" +
                          "<dd style='display:none'><ul>";
        for(var i = 0; i < itemData.Seq.length; i++){
            var singleunit=itemData.Unit[i].singularize();
                                     
            modifyHtml += "<li data-valueofkey='" + itemData.Seq[i] + "'>" + singleunit + "</li>";
        }

        modifyHtml += "</ul><input id='modifyMuit' type='hidden' value='" + seq + "' /></dd></dl></div>" +
                        "<a href='javascript:void(0);' class='updateBtn floatL' onclick='foodLog.sendModify(this, " + foodItmeId + ");'></a></div></div></td></tr>";
        $($(elm).parents("tr")).after(modifyHtml);
        $($(elm).parents("tr")).addClass("modifying");
         

        $('.itemModify').hover(function(){
            foodLog.mouse_is_inside02=true;
        }, function(){
            foodLog.mouse_is_inside02=false;
        });

        $("body").mousedown(function(){
            if(! foodLog.mouse_is_inside02) {foodLog.clearModify()};
        });
        

        //let input only accept number
        $('#modifyNum').keypress(function(e){

          var code = (e.keyCode ? e.keyCode : e.which);
          if((code>=48 && code<=57)||code==8||code==9||code==110||code==37||code==39||code==46){
          }else{
            return false;
          }
        });
        
        /*
        $(".itemModify").mouseout(function(){
            foodLog.clearModify(elm);
        })
        */
        /*
        <div  class='fakeSelect01'>
          <dl>
            <dt onclick='AjaxSelectBox(this)'>Cup
            </dt>
            <dd style='display:none'>
              <ul>
                <li value='1'>Cup</li>
                <li value='2'>Oz</li>
              </ul><input type="hidden" value="" />
            </dd>
          </dl>
        </div>
        */
    },
    sendModify: function(elm, foodItmeId){
        if(!$("#modifyNum").val()){
            this.clearModify(elm);
            return;
        }
        this.seq = $("#modifyMuit").val();

        $.ajax({
            url: '/findfoods/changePortion',
            type: 'POST',
            data:{
                foodlogid: foodItmeId,
                seqnum: $("#modifyNum").val(),
                seq: this.seq
            },
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
                //foodid=>?,  servingid=> foodLog.seq, ?Έι?=>?
                //{"foodlogid":"60","ServSize":"1 tsp","Calories":32,"Fat":0,"Carbs":8,"Protein":0,"Fiber":0,"Sugars":6}
                $("#" + data.foodlogid + " .servSize").attr("servingid", foodLog.seq);
                $("#" + data.foodlogid + " .servSize").attr("title", data.ServSizeComplete);
                $("#" + data.foodlogid + " .servSize").text(data.ServSize);
                $("#" + data.foodlogid + " .Calories").text(data.Calories);
                $("#" + data.foodlogid + " .Fat").text(data.Fat);
                $("#" + data.foodlogid + " .Carbs").text(data.Carbs);
                $("#" + data.foodlogid + " .Protein").text(data.Protein);
                //$("#" + data.foodlogid + " .Fiber").text(data.Fiber);
                $("#" + data.foodlogid + " .Sugars").text(data.Sugars);
                
                /*Nutrition*/
                $("#" + data.foodlogid + " .nDesc").text(data.description);
                $("#" + data.foodlogid + " .nServ").text(data.Nutrition.ServSize);
                $("#" + data.foodlogid + " .nCal").text(data.Nutrition.calories);
                $("#" + data.foodlogid + " .nCalFat").text(data.Nutrition.calories_from_fat);
                $("#" + data.foodlogid + " .nTotFat").text(data.Nutrition.total_fat);
                $("#" + data.foodlogid + " .nSatFat").text(data.Nutrition.saturated_fat);
                $("#" + data.foodlogid + " .nCho").text(data.Nutrition.cholesterol);
                $("#" + data.foodlogid + " .nChoPct").text(data.Nutrition.cholesterol_pct);
                $("#" + data.foodlogid + " .nSod").text(data.Nutrition.sodium);
                $("#" + data.foodlogid + " .nSodPct").text(data.Nutrition.sodium_pct);
                $("#" + data.foodlogid + " .nCarbs").text(data.Nutrition.carbs);
                $("#" + data.foodlogid + " .nDieFib").text(data.Nutrition.dietary_fiber);
                $("#" + data.foodlogid + " .nSugar").text(data.Nutrition.sugar);
                $("#" + data.foodlogid + " .nPro").text(data.Nutrition.protein);
                $("#" + data.foodlogid + " .nProPct").text(data.Nutrition.protein_pct);
                $("#" + data.foodlogid + " .nVitA").text(data.Nutrition.vitamin_a);
                $("#" + data.foodlogid + " .nVitC").text(data.Nutrition.vitamin_c);
                $("#" + data.foodlogid + " .nCalcium").text(data.Nutrition.calcium);
                $("#" + data.foodlogid + " .nIron").text(data.Nutrition.iron);
                
                /*food deatil link*/
                var foodid = $("#" + data.foodlogid).attr("NDB_No"),
                    num = data.ServSize.split(' ')[0];
                $("#" + data.foodlogid + " .foodDetailLink").attr("href","/food_journal/fooddetail/" + foodid + "/" + foodLog.seq + "/" + num);
                var mealName = $("#" + data.foodlogid).parents("li").attr("id")
                foodLog.calAllTotal(mealName);
            }
        });
        this.clearModify(elm);

    },
    clearModify: function(elm){
        if(elm){
            $($(elm).parents("tbody").children("tr")).removeClass("modifying");
        } else {
            $(".foodLogUl tr").removeClass("modifying");
        }
        $(".itemModify").remove();
    },
    
    getAllTotal: function(){
        var totalArr = this.getColTotal("ul thead tr");
        for(var key in totalArr) {
            if(totalArr[key] == 0){
                totalArr[key] = "";
            }
        }
        $(".foodLogFooter .Calories").text(totalArr['Calories']);
        $(".foodLogFooter .Fat").text(totalArr['Fat']);
        $(".foodLogFooter .Carbs").text(totalArr['Carbs']);
        $(".foodLogFooter .Protein").text(totalArr['Protein']);
        //$(".foodLogFooter .Fiber").text(totalArr['Fiber']);
        $(".foodLogFooter .Sugars").text(totalArr['Sugars']);
        if(all.getDateFormat() == $("#datepicker").val()){
            if(!totalArr['Calories']){
                $("#todayTotal").text(0);
            } else {
                $("#todayTotal").text(totalArr['Calories']);
            }
            myProgress.calProgress();
        }
    },
    clearTotal: function(){
        $(".foodLogUl thead tr .Calories").text("");
        $(".foodLogUl thead tr .Fat").text("");
        $(".foodLogUl thead tr .Carbs").text("");
        $(".foodLogUl thead tr .Protein").text("");
        //$(".foodLogUl thead tr .Fiber").text("");
        $(".foodLogUl thead tr .Sugars").text("");
        $(".foodLogFooter .Calories").text("");
        $(".foodLogFooter .Fat").text("");
        $(".foodLogFooter .Carbs").text("");
        $(".foodLogFooter .Protein").text("");
        //$(".foodLogFooter .Fiber").text("");
        $(".foodLogFooter .Sugars").text("");
    },
    getMealTotal: function(MealId){
        var totalArr = this.getColTotal("#" + MealId + " tbody tr");
        
        for(var key in totalArr) {
            if(totalArr[key] == 0){
                totalArr[key] = "";
            }
        }
        $("#" + MealId + " thead tr .Calories").text(totalArr['Calories']);
        $("#" + MealId + " thead tr .Fat").text(totalArr['Fat']);
        $("#" + MealId + " thead tr .Carbs").text(totalArr['Carbs']);
        $("#" + MealId + " thead tr .Protein").text(totalArr['Protein']);
        //$("#" + MealId + " thead tr .Fiber").text(totalArr['Fiber']);
        $("#" + MealId + " thead tr .Sugars").text(totalArr['Sugars']); 
    },
    getColTotal: function(itemSelecter){
        var itemArr = $(itemSelecter);
        //var itemSize = $("#" + MealId + " tbody tr").size();
        var totalArr = new Array();
        totalArr['Calories'] = 0;
        totalArr['Fat'] = 0;
        totalArr['Carbs'] = 0;
        totalArr['Protein'] = 0;
        //totalArr['Fiber'] = 0;
        totalArr['Sugars'] = 0;
        for(var i = 0; i < itemArr.size();i++ ){
            totalArr['Calories'] += Number($(itemArr[i]).children(".Calories").text());
            totalArr['Fat'] += Number($(itemArr[i]).children(".Fat").text());
            totalArr['Carbs'] += Number($(itemArr[i]).children(".Carbs").text());
            totalArr['Protein'] += Number($(itemArr[i]).children(".Protein").text());
            //totalArr['Fiber'] += Number($(itemArr[i]).children(".Fiber").text());
            totalArr['Sugars'] += Number($(itemArr[i]).children(".Sugars").text());
        }
        return totalArr;
    },
    
    delSelfItem: function(elm) {
        var itemIdArr = new Array();
        itemIdArr[0] = $(elm).parents('tr').attr("id");
        this.delItem(itemIdArr);
    },
    
    delItem: function(itemIdArr){
        $.ajax({
            url: '/findfoods/delFoodlog',
            type: 'POST',
            data:{
                foodlogid: itemIdArr
            },
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
                for(var i = 0; i < data.foodlogid.length; i++){
                    var elmName = "tr#" + data.foodlogid[i]
                    var mealName = $("#" + data.foodlogid[i]).parents("li").attr("id");

                    $(elmName).remove();
                    foodLog.checkIsNoItem(mealName);
                    foodLog.calAllTotal(mealName);
                }
            }
        });
    },
    
    clearFoodItem: function(){
        $(".foodLogUl tbody tr").remove();
    },
    changeFavorStatus: function(elm){
        var foodIdArr = new Array();
        foodIdArr[0] = $(elm).attr("foodid");
        $.ajax({
            url: '/findfoods/addFavorite',
            type: 'POST',
            data:{
                foodid: foodIdArr
            },
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
            }
        })
        this.changeFavorUI(elm);
        
        
    },
    /*
    addFavor: function(elm){
        this.changeFavorUI(elm);
    },
    */
    changeItemTurn: function(elm){
        if($(elm).attr("swVal") == "off"){
            this.itemTurnOn(elm);
        } else {
            this.itemTurnOff(elm);
        }
    },
    itemTurnOn: function(elm){
        $(elm).parent().removeClass("itemTurnOff");
        $(elm).parent().addClass("itemTurnOn");
        $(elm).attr("swVal", "on");
    },
    itemTurnOff: function(elm){
        $(elm).parent().removeClass("itemTurnOn");
        $(elm).parent().addClass("itemTurnOff");
        $(elm).attr("swVal", "off");
    },
    changeFavorUI: function(elm){
        if(elm.getAttribute("value") == "on"){
            elm.setAttribute("value", "off");
            elm.setAttribute("src", "/img/cover/btn_favorOff.png");
        } else {
            elm.setAttribute("value", "on");
            elm.setAttribute("src", "/img/cover/btn_favorOn.png");
        }
    },


    calAllTotal: function(mealName){
        this.getMealTotal(mealName);
        this.getAllTotal();
    }

}
var qucikTool = {
    init: function(){
        $("#datepicker03" ).datepicker({
            dateFormat:'MM d, yy',
            changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            yearRange: 'c-2:c',
            altField: "#dateText"
        });

    },
    showSelect: function(){
        if($("input[type=checkbox]:checked").length == 0){
            alert("There is no item selected!");
            return;
        }
        var mouse_is_inside = false;

        $('.quickToolsSelect, .qTOut').hover(function(){
            mouse_is_inside=true;
        }, function(){
            mouse_is_inside=false;
        });

        $("body").mouseup(function(){
            if(! mouse_is_inside) {qucikTool.closeQT()};
        });
        $(".quickToolsSelect").toggle();
    },
	
    showQT:function(action){
		if($("input[type=checkbox]:checked").length == 0){
            alert("There is no item selected!");
            return;
        }
        $(".qTOut").hide();
        $("#qTAction").text(action);
        $(".qTOut").show();
    },
    closeQT: function(){
        //$("body").mouseup();
        $(".quickToolsSelect").hide();
        $(".qTOut").hide();
    },
    addFoodItems01:function(){
        var getDate = $('#datepicker03').datepicker('getDate');
        var date = all.getAjaxDateFormat(getDate);
        var mealType = $("input[name=mealType]:checked").val();
		if(!mealType){
			alert("You must choose an meal");
			return;
		}
        var itemsArr = new Array();
        var checkedItem = $("input[type=checkbox]:checked");
        for(var i = 0; i < checkedItem.length; i++){
            itemsArr[i] = $(checkedItem[i]).attr("foodlogid");
        }
        //var data = "({ action: " +  $("#qTAction").text() + ", date: " + date + "," + mealType + ":itemsArr})";
        var data = "({ action: $('#qTAction').text().toLowerCase(), date: date," + mealType + ":itemsArr})";
        $.ajax({
            url:'/findfoods/modFoodlog',
            type: 'POST',
            data: eval(data),
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
                var action = $("#qTAction").text(),
                    checkedArr = $("input[type=checkbox]:checked"),
                    toMealType = $("input[name=mealType]:checked").val(),
                    fromMealType = $("input[type=checkbox]:checked").parents("li").attr("id"),
                    i,foodItem;
                if(qucikTool.isLookingDay()){
                    foodLog.selectMeal(data);
					/*
                    for(i = 0; i <checkedArr.length; i++){
                        foodItem = $(checkedArr[i]).parents("tr");
                        
                        $("#" + mealType).find("tbody").append(foodItem);
                    }
                    */
                    if(action == "Move"){
                        for(i = 0; i <checkedArr.length; i++){
                            foodItem = $(checkedArr[i]).parents("tr");

                            $("#" + toMealType).find("tbody").append(foodItem);
                            
                            foodLog.checkIsNoItem(fromMealType);
                            foodLog.checkIsNoItem(toMealType);
                            foodLog.getMealTotal(fromMealType);
                            foodLog.getMealTotal(toMealType);
                        }
                        //$("input[type=checkbox]:checked")
                        
                    }
                } else{
					
					var d = $('#datepicker03').datepicker('getDate'),
						path = "/food_journal?date=" + all.getAjaxDateFormat(d);
					window.location.replace(path);
					/*
                    if(action == "Move"){
                        var mealName = $("input[type=checkbox]:checked").parents("li").attr("id");
                        $("input[type=checkbox]:checked").parents("tr").remove();
                        foodLog.checkIsNoItem(mealName);
                        foodLog.calAllTotal(mealName);
                    }
					*/
                }
                $("input[type=checkbox]:checked").attr("checked", false)
                qucikTool.closeQT();
            }

        });
    },
    addFoodItems02: function(){
        var getDate = $('#datepicker03').datepicker('getDate');
        var date = all.getAjaxDateFormat(getDate);
        var mealType = $("input[name=mealType]:checked").val();
		if(!mealType){
			alert("You must choose an meal");
			return;
		}
        var foodidsArr = new Array();
        var checkedItem = $("input[type=checkbox]:checked");
        for(var i = 0; i < checkedItem.length; i++){
            foodidsArr[i] = $(checkedItem[i]).attr("foodid");
        }
        $.ajax({
            url:'/findfoods/addFoodlogMulti',
            type: 'POST',
            data: {
                foodid: foodidsArr,
                date: date,
                meal: mealType
            },
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
                if(qucikTool.isToday()){
                    var totalCal = Number($("#todayTotal").text());
                    for(var i = 0; i < $("input[type=checkbox]:checked").length; i++){
                        totalCal += Number($($("input[type=checkbox]:checked")[i]).attr("cal"));
                    }
                    $("#todayTotal").text(totalCal);
                    myProgress.calProgress();
                    
                }
				var d = $('#datepicker03').datepicker('getDate'),
						path = "/food_journal?date=" + all.getAjaxDateFormat(d);
					window.location.replace(path);
                
                qucikTool.closeQT();
            }

        });

    },
    isLookingDay: function(){
        if($("#datepicker").val() == $("#dateText").val()){
            return true;
        };
        return false;
    },
    isToday: function(){
        if(all.getDateFormat() == $("#dateText").val() ){
            return true;
        };
        return false;
    },
    delItems: function(){
        var itemIdsArr = new Array();
        var checkedArr = new Array();
        checkedArr = $("input[type=checkbox]:checked");
        for(var i = 0; i < checkedArr.length; i++){
            itemIdsArr[i] = $(checkedArr[i]).parents('tr').attr("id");
        }
        foodLog.delItem(itemIdsArr);
        this.closeQT();
    }
}

var foodSearch = {
    checkSubmit: function(){
        $('#foodSearch01').submit();
    }
}
var fooddetail = {
    init: function(){
        $('#datepicker').datepicker({
			changeMonth: true,
            changeYear: true,
            showButtonPanel: true,
            dateFormat:'mm/dd/yy'
        });
		$('#datepicker').datepicker("setDate",all.parseTimeZoneObj());
    },
    updata:function(){
		
        var tseqsum=$('#serving').val();
		if(!tseqsum){
			var initSum = $('#initSerNo').val();
			$('#serving').val(initSum);
			return;
		}
        var id=$('#unit01').val();
        $.ajax({
            url:'/food_journal/fss_recount',
            type: 'GET',
            data: {
                fssid: id,
                seqsum: tseqsum
                 
            },
            dataType: 'json',
            error: function(jqXHR, textStatus, errorThrown){
                alert("error: " + textStatus)
            },
            success: function(data){
                if(data.error){
                    if(data.error != 'parsererror') alert("error: " + data.error);
                    return;
                }
				$('#initSerNo').val($('#serving').val());
                
                /*Nutrition*/
                /*
                $(".nServ").text(data.Nutrition.ServSize);
                */
                $(".nCal").text(data.calories);
                $(".nCalFat").text(data.calories_from_fat);

                $(".nTotFat").text(data.total_fat);
                $(".nSatFat").text(data.saturated_fat);
                $(".nCho").text(data.cholesterol);
                $(".nChoPct").text(data.cholesterol_pct);
                $(".nSod").text(data.sodium);
                $(".nSodPct").text(data.sodium_pct);
                $(".nCarbs").text(data.carbs);
                
                $(".nDieFib").text(data.dietary_fiber);
                $(".nSugar").text(data.sugar);
                $(".nPro").text(data.protein);
                $(".nProPct").text(data.protein_pct);
                $(".nVitA").text(data.vitamin_a);
                $(".nVitC").text(data.vitamin_c);
                $(".nCalcium").text(data.calcium);
                $(".nIron").text(data.iron);
            }

        });
        
    },
    goFoodJournal: function(){
        var d = $('#datepicker').datepicker('getDate'),
            path = "/food_journal?date=" + all.getAjaxDateFormat(d);
        window.location.replace(path);
    }
}
