﻿function GetFavorites()
{
    if (userProfile != null)
    {
        showIndicator();
        NetByDesign.IDXPlus.Services.UserFavorites.GetFavorites(userProfile.UserId,GetFavoritesCallback,UserFavoritesError);
    }
}

function GetFavoritesCallback(favoriteResults)
{
    currentResults.Favorites = favoriteResults;
    var tab = $get("favoritesTab");
    tab.innerHTML = favoriteResults.length + ' ' + tab.title;
    tab.ResultCount = favoriteResults.length;
    
    if (tab == activeTab) 
    {
        displayFavorites();
        if (!isPagerHidden())
        {
            togglePager();
        }
    }
    
    stopIndicator();
    
}


function displayFavorites()
{
    //Map
    map.clearOverlays();
    

    var summaryItem = '';
    var summary = '';
    var infoBox = '';
    for(var i = 0;i < currentResults.Favorites.length;i++)
    {
        //Create listing summary
        if (currentResults.Favorites[i].FavoriteType == 'Community')
        {
            summaryItem = createCommunityFavoriteSummary_Normal(currentResults.Favorites[i],i);
        }
        else
        {
            summaryItem = createResidentialFavoriteSummary(currentResults.Favorites[i],i,'Favorites');
        }
        summary += summaryItem;              
        
    }
    $get('infoBoxContainer').innerHTML = summary;
    $get('infoBoxContainer').scrollTop = 0;    
}

function AddToFavorites(favoriteType,favoriteKey, feedbackItemIndex)
{

    //Make sure user has logged in.
    if (!IsUserLoggedIn() || userProfile == null)
    {
        alert('You must log in or register.');
        return;
    }
    
    var favType;
    
    switch(favoriteType)
    {
        case 'NewHomes':
            favType = 'New Home';
            break;
        case 'Residential':
            favType = 'Resale Home';
            break;
        default:
            favType = favoriteType;
            break;
    }
    
    NetByDesign.IDXPlus.Services.UserFavorites.AddFavorite(userProfile.UserId,favType,favoriteKey,1,'From Service',AddToFavoritesCallback,UserFavoritesError,feedbackItemIndex)
}


function AddToFavoritesCallback(favoriteResults, feedbackItemIndex)
{
    GetFavorites();
    //ShowInfoItemFeedback(feedbackItemIndex, "Listing added to your favorites tab above.");
    ShowFavoritesTransfer(feedbackItemIndex);
}


function UserFavoritesError(message)
{
    Sys.Debug.traceDump(message);
}

function DeleteFavorite(favoriteId)
{
    if (confirm('Are you sure you want to delete this from your Favorites?'))
    {
        showIndicator();
        NetByDesign.IDXPlus.Services.UserFavorites.DeleteFavorite(favoriteId, DeleteFavoritesCallback,UserFavoritesError)
    }
}

function DeleteFavoritesCallback(favoriteResults)
{

    GetFavorites();
}


function createResidentialFavoriteSummary(favorite,index,source)
{
    var summaryItem =  '<div class="summaryItem">';
    var mapIconId = source + "_" +index;
    summaryItem += '<div class="summaryHeader">';
    summaryItem += favorite.Subdivision + ' - <span class="summaryHeaderCity">' + favorite.City;
    summaryItem += '</span></div>';
    if (favorite.Photo != '')
    {
        summaryItem += '<img src="'+favorite.Photo+'?size=150" class="summaryPhoto" onerror="this.style.display=\'none\'" />';    
    }
    summaryItem += '<div class="summaryDetails">';
    if (favorite.ListStatus == 'CONTG' || favorite.ListStatus == 'contg')
    {
        summaryItem += '<span class="summaryContingent">CONTINGENT</span><br/>';
    }
    summaryItem += '<span class="summaryAddress">'+  favorite.Address + '</span><br />';
    summaryItem += String.format('{0:c0}',favorite.SqrFtTotal).substr(1) + ' square feet<br/>';
    summaryItem += favorite.BedRooms + ' bedrooms<br/>';
    summaryItem += favorite.FullBaths + ' full / ' + favorite.HalfBaths + ' half bathrooms<br/>';
    summaryItem += favorite.Garage + ' car garage<br/>';
    summaryItem += favorite.Acres + ' acres<br />';
    summaryItem += '<span class="summaryListPrice">$' + String.format('{0:c0}',favorite.ListPrice).substr(1) + '</span><br/>';
    summaryItem += '<img src="http://idximages.net-by-design.com/tmlslogothumbnai.gif" alt="TMLS IDX" />';
    
    summaryItem += '<div id="'+ source + '_'+ index +'"></div>'
    summaryItem += '</div>';
    summaryItem += '<div class="summaryFooter">';    
    summaryItem += '<a href="#" onclick="DeleteFavorite(\''+favorite.FavoriteId+'\');return false;">remove</a>&nbsp;';
    summaryItem += '<a href="#" onclick="GetResidentialListing('+ favorite.FavoriteKey + ','+index+',\'request\');return false;">request info</a>';
    summaryItem += '&nbsp;';    
    summaryItem += '<a href="#" onclick="GetResidentialListing('+ favorite.FavoriteKey + ','+index+',\'details\');return false;">details</a>';
    summaryItem += '&nbsp;';
    summaryItem += '<a href="#" onclick="GetResidentialListing('+ favorite.FavoriteKey + ','+index+',\'print\');return false;">print</a>';
    summaryItem += '&nbsp;';
    summaryItem += '<a href="#" onclick="GetResidentialListing('+ favorite.FavoriteKey + ','+index+',\'photos\');return false;">photos</a>';
    summaryItem += '&nbsp;';
    if (favorite.VirtualTour != "")
    {
        summaryItem += '<a href="http://'+ favorite.VirtualTour + '" target="_blank">tour</a>';
        summaryItem += '&nbsp;';
    }
    summaryItem += '<a href="#" onclick="GetResidentialListing('+ favorite.FavoriteKey + ','+index+',\'map\');return false;">map</a>';
    
    //summaryItem += favorite.GeoCode.LevelDescription + '<br/>';    
    summaryItem += '</div>'
    summaryItem += '</div>';
    
    return summaryItem;
        
        
}

function createCommunityFavoriteSummary_Normal(community,index)
{    
    var summaryItem =  '<div class="summaryItem">';
    summaryItem += '<div class="summaryHeader">' + community.Subdivision + ', <span class="summaryHeaderCity">' + community.City + '</span></div>';
    if (community.Photo != '')
    {
        summaryItem += '<img src="'+community.Photo+'?size=150" class="summaryPhoto" onerror="this.style.display=\'none\'" />';
    }
    /*
    if (community.Photos.length > 0)        
    {
        summaryItem += '<img src="'+community.Photos[0]+'?size=150" class="summaryPhoto" onerror="this.style.display=\'none\'" />';
    }
    else if(community.Logo != '')
    {        
        summaryItem += '<img src="http://idximages2.net-by-design.com/CommunityMedia/logos/communities/'+community.Logo+'?size=150" class="summaryPhoto" onerror="this.style.display=\'none\'" />';
    }    
    */
    summaryItem += '<div class="summaryDetails">';
    summaryItem += community.Description + '<br/>';
    /*
    if (community.AvailableHomes > 0)
    {
        summaryItem += '<a href="#" onclick="showCommunityDetails(' + index + ',\'homes\');return false;">'+ community.AvailableHomes + ' available homes</a>&nbsp;';
    }
    */
    if (community.Latitude != 0 && community.Longitude != 0)
    {
        //summaryItem += '<span class="summaryPushPinIndexBlue"><a href="#" onclick="showCommunityDetails('+ index + ',\'map\');return false;">'+(index+1) + '</a></span>'
        //summaryItem += '<a href="#" onclick="showCommunityDetails('+ index + ',\'map\');return false;">map</a>';
        //summaryItem += ' / ';
    }
    
    summaryItem += '</div>';
    summaryItem += '<div class="summaryFooter">';
    summaryItem += '<a href="#" onclick="DeleteFavorite(\''+community.FavoriteId+'\');return false;">remove</a>&nbsp;';
    summaryItem += '<a href="#" onclick="GetCommunityDetails(\''+ community.FavoriteKey + '\','+index+',\'request\');return false;">request info</a>&nbsp;';
    summaryItem += '<a href="#" onclick="GetCommunityDetails(\''+ community.FavoriteKey + '\','+index+',\'print\');return false;">print</a>&nbsp;';
    summaryItem += '<a href="#" onclick="GetCommunityDetails(\''+ community.FavoriteKey + '\','+index+',\'details\');return false;">details</a>&nbsp;';
    /*
    if (community.Photos.length > 0)
    {
        //summaryItem += ' / ';
        summaryItem += '<a href="#" onclick="showCommunityDetails('+ index + ',\'photos\');return false;">photos</a>&nbsp;';
    }
    */
    if (community.Latitude != 0 && community.Longitude != 0)
    {
        summaryItem += '<a href="#" onclick="GetCommunityDetails(\''+ community.FavoriteKey + '\','+index+',\'map\');return false;">map</a>';
    }
    summaryItem += '</div>'
    summaryItem += '</div>';
    
    return summaryItem;        
        
}

function GetResidentialListing(mlsNumber,index,type)
{
    if (currentResults.Favorites[index].FullDetails != null)
    {
        if (type == "request")
        {
            requestMoreInfo(index,'Favorite');
        }
        else
        {
            showResidentialDetails(index,type,'Favorite');
        }
    }
    else
    {
        var objectState = {Index:index,Type:type};    
        NetByDesign.IDXPlus.Services.IDXPlusSearch.GetResidentialListing(mlsNumber,GetResidentialListingCallback,errorCallback,objectState);
    }
}

function GetResidentialListingCallback(result,state)
{
    currentResults.Favorites[state.Index].FullDetails = result;
    if(state.Type == 'request')
    {
        requestMoreInfo(state.Index,'Favorite');
    }
    else
    {
        showResidentialDetails(state.Index,state.Type,'Favorite');
    }
}

function GetCommunityDetails(communityId,index,type)
{
    if (currentResults.Favorites[index].FullDetails != null)
    {
        if(state.Type == 'request')
        {
            requestMoreInfo(state.Index,'Favorite');
        }
        else
        {
            showCommunityDetails(index,type,'Favorite');
        }        
    }
    else
    {
        var objectState = {Index:index,Type:type};    
        NetByDesign.IDXPlus.Services.IDXPlusSearch.GetCommunity(communityId,GetCommunityDetailsCallback,errorCallback,objectState);
    }
}

function GetCommunityDetailsCallback(result,state)
{
    if (result.Latitude != 0 && result.Longitude != 0)
    {
        //Add Google Map Marker
        var point = new GLatLng(result.Latitude,result.Longitude);
        var infoBox = createCommunityInfoBox(result,state.Index);
        marker = createMarker(point,infoBox);                    
        result.GMarker = marker;
        map.addOverlay(marker);

    }
    currentResults.Favorites[state.Index].FullDetails = result;
    
    if(state.Type == 'request')
    {
        requestMoreInfo(state.Index,'Favorite');
    }
    else
    {
        showCommunityDetails(index,type,'Favorite');
    } 
    
    showCommunityDetails(state.Index,state.Type,'Favorite');
}


// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();