﻿var WaitingForResponse = false;
var LastImageElement = null;
var LastOnStateUrl = '';
var LastOffStateUrl = '';

function FavToggle(imageElement, contentId, onStateUrl, offStateUrl)
{
    if (WaitingForResponse)
        return;

    LastImageElement = imageElement;
    LastOnStateUrl = onStateUrl;
    LastOffStateUrl = offStateUrl;
    
    ToggleFavService.ToggleFav(contentId, onToggleSuccess, onToggleTimeOut, onToggleError);
    
    WaitingForResponse = true;
}

function ResetFavVars()
{
    WaitingForResponse = false;
    LastImageElement = null;
    LastOnStateUrl = '';
    LastOffStateUrl = '';
}

function FavSetOn(imageElement, onStateUrl)
{
    imageElement.src = onStateUrl;
}

function FavSetOff(imageElement, offStateUrl)
{
    imageElement.src = offStateUrl;
}

function DisplayState(isFav)
{
    if (isFav)
        FavSetOn(LastImageElement, LastOnStateUrl);
    else
        FavSetOff(LastImageElement, LastOffStateUrl);
}

function onToggleSuccess(isFav)
{
    DisplayState(isFav);
    ResetFavVars();
}

function onToggleError(isFav)
{
    ResetFavVars();
}

function onToggleTimeOut(isFav)
{
    ResetFavVars();
}