﻿// JScript File


/****************************** cookie code ***********************************************/

function ed_setCookie(c_name,value,expireminutes)
{
    var exdate=new Date();
    exdate.setMinutes(exdate.getMinutes() + expireminutes);
    document.cookie=c_name+ "=" +escape(value)+ ((expireminutes==null) ? "" : ";expires="+exdate.toGMTString());
} 


function ed_getCookie(c_name)
{
    if (document.cookie.length>0)
    {
        c_start=document.cookie.indexOf(c_name + "=");
        if (c_start!=-1)
        { 
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) {
                c_end=document.cookie.length;
            }
            return unescape(document.cookie.substring(c_start,c_end));
        } 
    }
    return "";
} 

var RECIPE_DELIM = '|';
var RECIPE_COOKIE = 'recipeCookie';
var MAX_RECIPES = 5;

function pushLastSearchedRecipe(recipe) 
{
    var cookieArray = getLastSearchedRecipes();
    
    // set first recipe to be most recent viewed (aka the arg)
    var cookieString = recipe;
    
    // get all but the last recipe (bump it)
    // and push onto the cookieString
    for (i = 0; i < MAX_RECIPES - 1 && i < cookieArray.length; i++) {
        cookieString += RECIPE_DELIM + cookieArray[i];
    }
    
    ed_setCookie(RECIPE_COOKIE, cookieString, null);
}

function getLastSearchedRecipes() {
    var cookieString = ed_getCookie(RECIPE_COOKIE);
    var cookieArray = cookieString.split(RECIPE_DELIM);
    return cookieArray;
        
}

function getLastSearchedRecipesString() {
    return ed_getCookie(RECIPE_COOKIE);
}

function popLastSearchedRecipe() {
    var cookieArray = getLastSearchedRecipes();
    if (cookieArray.length <= 0) {
        return '';
    }
    var retRecipe = cookieArray[0];
    
    var cookieString = '';
    for (i = 1; i < MAX_RECIPES && i < cookieArray.length; i++) {
        if (cookieString == '') {
            cookieString += cookieArray[i];
        } else {
            cookieString += RECIPE_DELIM + cookieArray[i];
        }
    }
    
    ed_setCookie(RECIPE_COOKIE, cookieString, null);
    return retRecipe;
}

function getLastSearchedRecipe() {
    var cookieArray = getLastSearchedRecipes();
    if (cookieArray.length <= 0) {
        return '';
    }
    return cookieArray[0];
}

function clearCookie() {
    ed_setCookie(RECIPE_COOKIE, '', null);
}

/***********************************************************************************************/

function GetNextPreviousFromRecipeSearch(currentRecipeID, productID, cuisineID, courseID, ingredientID, preptimeID, sort, func_success, func_failure, context) 
{
	AjaxServices.GetNextPreviousFromRecipeSearch(currentRecipeID, productID, cuisineID, courseID, ingredientID, preptimeID, sort, func_success, func_failure, context);	
	return false;
}

function GetNextPreviousFromRecipeSearch_Error(args)
{
	alert("An error occurred on the server. Please try again.");
} 



var recipeRatingIDs = new Array();
function AddRecipeRatingID(id) 
{
	recipeRatingIDs[recipeRatingIDs.length] = id;
}

function GetRecipeRatings(contextObj) 
{

	var idStr = recipeRatingIDs.join(";") + ';';
	AjaxServices.GetRecipeRatings(idStr, GetRecipeRatings_Success, RecipeRatings_Failure, contextObj);
}

function GetRecipeRatings_Success(result, contextObj) 
{
	if (result == null) {
		return;
	}
	
	for (var i=0; i<result.length; i++) {
	    var div = $get(contextObj.baseDivID + result[i].ID);
		
		//TODO: set the proper innerHTML of the div
		var html = "";
		for (var j = 0; j < 5; j++) {
		    var img;
		    var r = j+1;
		    if (j < result[i].Rating) {
                img = contextObj.imgPath + 'star.gif';
		    } else {
                img = contextObj.imgPath + 'star_right.gif';
		    }
		    var onClick = 'AddRecipeRating({ baseDivID: \'' + contextObj.baseDivID + '\', imgPath: \'' + contextObj.imgPath + '\', rating: ' + r + '},' + result[i].ID + ');';
		    var onMouseOut = 'this.src = \'' + img + '\'';
		    var onMouseOver = 'this.src = \'' + contextObj.imgPath + 'star_selected.gif\'';
		    
		    html += '<a href="#">';
		    html += '<img onclick="'+onClick+'" onMouseOut="'+onMouseOut+'" onmouseover="'+onMouseOver+'" src="' + img + '"/>';
		    html += '</a>';
		}
		
		div.innerHTML = html;
	}
	
}

function RecipeRatings_Failure() {
	//do nothing here.
	
}

var RECIPE_RATED_COOKIE = 'recipeRated';

function AddRecipeRating(contextObj, recipeID) 
{
    
    var hasVoted = ed_getCookie(RECIPE_RATED_COOKIE + recipeID);
    if (hasVoted == '') {
	    AjaxServices.AddRecipeRating(recipeID, contextObj.rating, AddRecipeRating_Success, RecipeRatings_Failure, contextObj);
	} else {
	    alert('You have already voted for this recipe.');
	}
}

function AddRecipeRating_Success(result, contextObj)
{
	if (result == null) {
		return;
	}
	
	ed_setCookie(RECIPE_RATED_COOKIE + result.ID, 'rated', null);
	
	var div = $get(contextObj.baseDivID + result.ID);
	
	var html = "";
	var r = contextObj.rating - 1;
	
	for (var i = 0; i < 5; i++) {
	    var img;
	    if (i == r) 
	    {
	        img = contextObj.imgPath + 'star_selected.gif';
	    }
	    else if (i < result.Rating) 
	    {
            img = contextObj.imgPath + 'star.gif';
        } 
        else 
        {
            img = contextObj.imgPath + 'star_right.gif';
	    }
	    
	    html += '<img src="' + img +'"/>';
	}
	
	div.innerHTML = html;
}