﻿
function MyRecipeBox () {
    var _cUSERID = 'PorkUser';
    var _cOptions = { path: '/', expires: 10 };
    var _cDeleteOptions = { path: '/', expires: 10 };
    
    this.SavedCountsRetrieve = SavedCountsRetrieve;
    
    this.RecipeBoxRetrieve = RecipeBoxRetrieve;
    this.AddRecipe = AddRecipe;
    this.AddRecipes = AddRecipes;
    this.RemoveRecipe = RemoveRecipe;
    this.UserIDCookieSet = UserIDCookieSet;
    this.UserIDCookieRemove = UserIDCookieRemove;
    
    this.ShoppingListRetrieve = ShoppingListRetrieve;
    this.AddRecipeToShoppingList = AddRecipeToShoppingList;
    this.RemoveShoppingListRecipe = RemoveShoppingListRecipe;
    this.RemoveShoppingListRecipeIngredient = RemoveShoppingListRecipeIngredient;
    this.RemoveShoppingListRecipeByRecipeID = RemoveShoppingListRecipeByRecipeID;
    
    this.MyReviewsRetrieve = MyReviewsRetrieve;
    this.MyReviewsEditReview = MyReviewsEditReview;
    this.MyReviewsSaveReview = MyReviewsSaveReview;
    this.MyReviewsCancelEditReview = MyReviewsCancelEditReview;
    this.MyReviewsRemoveReview = MyReviewsRemoveReview;
    
    this.HideLink = HideLink;
    
    function SavedCountsRetrieve()
    {   
        if($.cookie(_cUSERID) != null)
        {
            Pork.PorkAjax.RecipeBoxGetCounts($.cookie(_cUSERID), SavedCountsRetrieve_callback);
        }
    }
    
    function SavedCountsRetrieve_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            $('#SavedRecipesCount').text(' (' + $(res.value).find('RecipeBoxCounts').attr('RecipesCount') + ')');
            $('#ShoppingListItemsCount').text(' (' + $(res.value).find('RecipeBoxCounts').attr('ShoppingListItemsCount') + ')');
            $('#MyReviewsCount').text(' (' + $(res.value).find('RecipeBoxCounts').attr('ReviewsCount') + ')');     
        }
    }
    
    function RecipeBoxRetrieve()
    {   
        Pork.PorkAjax.RecipeBoxRetrieve($.cookie(_cUSERID), '', RecipeBoxRetrieve_callback);
    }
    function RecipeBoxRetrieve_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            //set the user cookie
            UserIDCookieSet($(res.value).find('Data').attr('UserID'));
            var x = $(res.value).find('Recipes');
            $('#divRecipeBoxDetail').html(x.text());            
        }
    }

    function AddRecipe(recipeID)
    {   
        var a = new Array();
        a[0] = recipeID;        
        var r = BuildRecipeXML(a);        
        RecipeBoxAdd(r);
    }
    function AddRecipes(recipeArr)
    {   
        var a = new Array();
        a = recipeArr;
        var r = BuildRecipeXML(a);
        RecipeBoxAdd(r);
    }
    
    function RecipeBoxAdd(recipeXML)
    {
        Pork.PorkAjax.RecipeBoxRecipeAdd($.cookie(_cUSERID), '', recipeXML, AddRecipe_callback);
    }   
    function AddRecipe_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            //set the user cookie
            UserIDCookieSet($(res.value).find('Data').attr('UserID'));        
        }
    }
    
    function RemoveRecipe(recipeID)
    {
        var a = new Array();
        a[0] = recipeID;        
        var r = BuildRecipeXML(a);
        Pork.PorkAjax.RecipeBoxRecipeRemove($.cookie(_cUSERID), '', r, RemoveRecipe_callback);
    }
    function RemoveRecipe_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            //set the user cookie
            UserIDCookieSet($(res.value).find('Data').attr('UserID'));            
            var x = $(res.value).find('Recipes');
            $('#divRecipeBoxDetail').html(x.text());
            SavedCountsRetrieve();  
        }
    }
    
    function UserIDCookieSet(userID)
    {
        $.cookie(_cUSERID, userID, _cOptions);
    }
    function UserIDCookieRemove()
    {
        $.cookie(_cUSERID, null, _cOptions);
    }
    function BuildRecipeXML(recipeArray)
    {
        var x;
        x = '<Recipes>';
        for (var i = 0; i < recipeArray.length; i++)
        {
            x = x + '<Recipe ID="' + recipeArray[i] + '"/>';
        }
        x = x + '</Recipes>';
        return x;        
    } 
    
    function ShoppingListRetrieve(view)
    {   
        Pork.PorkAjax.ShoppingListRetrieve($.cookie(_cUSERID), view, ShoppingListRetrieve_callback);
    }
    function ShoppingListRetrieve_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            //set the user cookie
            //need to not do this if it is not necessary
            UserIDCookieSet($(res.value).find('Data').attr('UserID'));
            if ($(res.value).find('noresults').val() != null)
            {
                $('#divShoppingListDetail').html($(res.value).find('noresults').text()); 
                $('#PrintShoppingListButtons').hide();
            }
            else
            {
                var x = $(res.value);
                $('#divShoppingListDetail').html(x.text()); 
                $('#PrintShoppingListButtons').show();
            }  
                     
        }
    }
    
    function AddRecipeToShoppingList(recipeID)
    {
        $('#shoppingListRemoveLink' + recipeID).show();
        $('#shoppingListAddLink' + recipeID).hide();
        Pork.PorkAjax.ShoppingListRecipeAdd($.cookie(_cUSERID), recipeID.toString(), AddRecipeToShoppingList_callback);
    }  
    
    function AddRecipeToShoppingList_callback(res)
    {
        if (res.error)
        {
            alert(res.error.Message);
        }
        else
        {
            UserIDCookieSet($(res.value).find('Data').attr('UserID'));
            SavedCountsRetrieve();
        }
    }
    
    function RemoveShoppingListRecipe(shoppingListRecipeItemID)
    {
        Pork.PorkAjax.ShoppingListRecipeRemove($.cookie(_cUSERID), shoppingListRecipeItemID, RemoveShoppingListRecipe_callback);
    }
    
    function RemoveShoppingListRecipe_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            $('#divShoppingListDetail').html(x.text());  
            SavedCountsRetrieve(); 
        }
    }
    
    function RemoveShoppingListRecipeByRecipeID(RecipeID)
    {
        $('#shoppingListRemoveLink' + RecipeID).hide();
        $('#shoppingListAddLink' + RecipeID).show();
        Pork.PorkAjax.ShoppingListRecipeRemoveByRecipeID($.cookie(_cUSERID), RecipeID.toString(), RemoveShoppingListRecipeByRecipeID_callback);
    }
    
    function RemoveShoppingListRecipeByRecipeID_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            SavedCountsRetrieve();
            //$('#divShoppingListDetail').html(x.text());   
        }
    }
    
    function RemoveShoppingListRecipeIngredient(pairID)
    {
        Pork.PorkAjax.ShoppingListRecipeIngredientRemove($.cookie(_cUSERID), pairID, RemoveShoppingListRecipeIngredient_callback);
    }
    
    function RemoveShoppingListRecipeIngredient_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            $('#divShoppingListDetail').html(x.text());   
        }
    }
    
    function MyReviewsRetrieve()
    {
        Pork.PorkAjax.MyReviewsRetrieve($.cookie(_cUSERID), MyReviewsRetrieve_callback);
    }
    
    function MyReviewsRetrieve_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            $('#divMyReviews').html(x.text());  
            $('.hiddenReviewsLink').hide();
            $('.hiddenInput').hide();
        }
    }
    
    function MyReviewsEditReview(RecipeRatingID)
    {
        $('#reviewDisplayStars' + RecipeRatingID).hide();
        $('#reviewEditStars' + RecipeRatingID).show();
        $('#reviewDisplayTitle' + RecipeRatingID).hide();
        $('#reviewInputTitle' + RecipeRatingID).show();
        $('#reviewDisplayComment' + RecipeRatingID).hide();
        $('#reviewInputComment' + RecipeRatingID).show();
        $('#reviewEditLink' + RecipeRatingID).hide();
        $('#reviewSaveLink' + RecipeRatingID).show();
        $('#reviewShareLink' + RecipeRatingID).hide();
        $('#reviewCancelLink' + RecipeRatingID).show();
    }
    
    function MyReviewsSaveReview(RecipeRatingID)
    {
        Pork.PorkAjax.MyReviewsSaveReview(RecipeRatingID.toString(), $('#reviewInputTitle' + RecipeRatingID).val(), $('#reviewInputComment' + RecipeRatingID).val(), $('#reviewInputRating' + RecipeRatingID).val(), MyReviewsSaveReview_callback);
        $('#reviewOriginalTitle' + RecipeRatingID).val($('#reviewInputTitle' + RecipeRatingID).val());
        $('#reviewOriginalComment' + RecipeRatingID).val($('#reviewInputComment' + RecipeRatingID).val());
        $('#reviewDisplayTitle' + RecipeRatingID).html($('#reviewInputTitle' + RecipeRatingID).val());
        $('#reviewDisplayComment' + RecipeRatingID).html($('#reviewInputComment' + RecipeRatingID).val());
        
        if ($('#reviewInputRating' + RecipeRatingID).val() == '1')
        {
            $('#reviewDisplayStars' + RecipeRatingID).html('<img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOff.png"><img src="/Resources/images/2011_StarOff.png"><img src="/Resources/images/2011_StarOff.png">');
        }
        else if ($('#reviewInputRating' + RecipeRatingID).val() == '2')
        {
            $('#reviewDisplayStars' + RecipeRatingID).html('<img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOff.png"><img src="/Resources/images/2011_StarOff.png">');
        }
        else if ($('#reviewInputRating' + RecipeRatingID).val() == '3')
        {
            $('#reviewDisplayStars' + RecipeRatingID).html('<img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOff.png">');
        }
        else if ($('#reviewInputRating' + RecipeRatingID).val() == '4')
        {
            $('#reviewDisplayStars' + RecipeRatingID).html('<img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png"><img src="/Resources/images/2011_StarOn.png">');
        }
        
        $('#reviewDisplayStars' + RecipeRatingID).show();
        $('#reviewEditStars' + RecipeRatingID).hide();
        $('#reviewDisplayTitle' + RecipeRatingID).show();
        $('#reviewInputTitle' + RecipeRatingID).hide();
        $('#reviewDisplayComment' + RecipeRatingID).show();
        $('#reviewInputComment' + RecipeRatingID).hide();
        $('#reviewEditLink' + RecipeRatingID).show();
        $('#reviewSaveLink' + RecipeRatingID).hide();
        $('#reviewShareLink' + RecipeRatingID).show();
        $('#reviewCancelLink' + RecipeRatingID).hide();
    }
    
    function MyReviewsSaveReview_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
        }
    }
    
    function MyReviewsCancelEditReview(RecipeRatingID)
    {
        $('#reviewInputTitle' + RecipeRatingID).val($('#reviewOriginalTitle' + RecipeRatingID).val());
        $('#reviewInputComment' + RecipeRatingID).val($('#reviewOriginalComment' + RecipeRatingID).val());
        $('#reviewDisplayTitle' + RecipeRatingID).html($('#reviewOriginalTitle' + RecipeRatingID).val());
        $('#reviewDisplayComment' + RecipeRatingID).html($('#reviewOriginalComment' + RecipeRatingID).val());
        $('#reviewDisplayStars' + RecipeRatingID).show();
        $('#reviewEditStars' + RecipeRatingID).hide();
        $('#reviewDisplayTitle' + RecipeRatingID).show();
        $('#reviewInputTitle' + RecipeRatingID).hide();
        $('#reviewDisplayComment' + RecipeRatingID).show();
        $('#reviewInputComment' + RecipeRatingID).hide();
        $('#reviewEditLink' + RecipeRatingID).show();
        $('#reviewSaveLink' + RecipeRatingID).hide();
        $('#reviewShareLink' + RecipeRatingID).show();
        $('#reviewCancelLink' + RecipeRatingID).hide();
    }
    
    function MyReviewsRemoveReview(RecipeRatingID)
    {
        Pork.PorkAjax.MyReviewsRemoveReview($.cookie(_cUSERID), RecipeRatingID.toString(), MyReviewsRemoveReview_callback)
        $('#reviewContainer' + RecipeRatingID).hide();  
    }
    
    function MyReviewsRemoveReview_callback(res)
    {
        if (res.error)
            alert(res.error.Message);
        else
        {
            var x = $(res.value);
            SavedCountsRetrieve();
        }   
    }
    
    function HideLink()
    {
        alert('hidelink');
    }
    
}
