﻿//###################### FAVORITE ######################################
function setFavorite(listingID, rating, opt) {
    if(opt===undefined){opt="";}
    if (IsAuthenticated == 'True')  //variable from hosting page
    {
        _currUserListing = new HBM2.Business.FMUserListing.Entities.UserListingEntity();
        _currUserListing.UserRating = rating;
        _currUserListing.ListingId = listingID;

        var userContext = rating + "|" + listingID + "|" + opt;
        var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();
        ratingService.SetRating(listingID, rating, setFavoriteOnSucceeded, setFavoriteOnFailed, userContext);  //returns bool true/false
        document.body.style.cursor = "wait";
    }
    else {
        StartRegistration('AddToNotebook', '', '', listingID, rating);
    }

}
function setFavoriteOnSucceeded(result, userContext) {
    document.body.style.cursor = "default";
    var parsedUserContext = userContext.split("|");
    var rating = parsedUserContext[0];
    var listingID = parsedUserContext[1];
    var opt = parsedUserContext[2];

    var ratingListingID = $("rating_" + listingID);
    if (ratingListingID == null) {
        throw Error("rating_" + listingID + " does not exist!.");
    }
    else
    {
        ratingListingID.value = rating;
    }

    RefreshRatingsUI(rating, listingID, opt);
    NotifySubscribers('AddToNotebook');
}

function RefreshRatingsUI(rating, listingID, opt) {

    var listing = ListingManager.GetListing(listingID);
    if( listing != null)
        listing.UserRating = rating;

    if (opt != "") {
        SwitchFavoriteUIFor(rating, listingID, "_LIST");
        SwitchFavoriteUIFor(rating, listingID, "_COL");
    }
    else {
        SwitchFavoriteUIFor(rating, listingID, "");
    }

}

function SwitchFavoriteUIFor(rating, listingID, opt)
{
    var divFavorite_Add = "divFavorite_Add" + listingID + opt;
    var divFavorite_Remove = "divFavorite_Remove" + listingID + opt;
    var divDiscard = "divDiscard_" + listingID + opt;
    var divUndiscard = "divUnDiscard_" + listingID + opt;

    if (rating > 0)
    {
        SetDisplay( divFavorite_Add, "none");
        SetDisplay( divFavorite_Remove, "block");
        SetDisplay( divDiscard, "block");
        SetDisplay( divUndiscard, "none");

    }
    else if (rating == 0)
    {
        SetDisplay( divFavorite_Add, "block");
        SetDisplay( divFavorite_Remove, "none");
        SetDisplay( divDiscard, "none");
        SetDisplay(divUndiscard, "block");

    }
    else {
        SetDisplay( divFavorite_Add, "block");
        SetDisplay( divFavorite_Remove, "none");
        SetDisplay( divDiscard, "block");
        SetDisplay( divUndiscard, "none");

        ClearListViewNotes(listingID);

    }

    RefreshStars(listingID, rating);

}

function setFavoriteOnFailed(error) {
    document.body.style.cursor = "default";
    alert(error);
}

//###################### DISCARD ######################################
function setDiscard(listingID, rating, opt) {
    if(opt===undefined){opt="";}
    if (IsAuthenticated == 'True')  //variable from hosting page
    {
        _currUserListing = new HBM2.Business.FMUserListing.Entities.UserListingEntity();
        _currUserListing.UserRating = rating;
        _currUserListing.ListingId = listingID;

        var userContext = rating + "|" + listingID + "|" + opt;
        var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();
        ratingService.SetRating(listingID, rating, setDiscardOnSucceeded, setRatingOnFailed, userContext);  //returns bool true/false
        document.body.style.cursor = "wait";
    }
    else {
        StartRegistration('AddToNotebook', '', '', listingID, rating);
    }
}

function setDiscardOnSucceeded(result, userContext) {
    document.body.style.cursor = "default";
    var parsedUserContext = userContext.split("|");
    var rating = parsedUserContext[0];
    var listingID = parsedUserContext[1];
    var opt = parsedUserContext[2];
    var ratingListingID = $("rating_" + listingID);
    if( ratingListingID == null )
        throw Error( "rating_" + listingID + " does not exist!." );

    ratingListingID.value=rating;  
    RefreshRatingsUI(rating, listingID, opt);
    NotifySubscribers('AddToNotebook');

}

//###################### RATING ######################################
function setRating(listingID, rating, opt) {
    if (IsAuthenticated == 'True')  //variable from hosting page
    {
        _currUserListing = new HBM2.Business.FMUserListing.Entities.UserListingEntity();
        _currUserListing.UserRating = rating;
        _currUserListing.ListingId = listingID;

        var userContext = rating + "|" + listingID + "|" + opt;
        var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();
        ratingService.SetRating(listingID, rating, setRatingOnSucceeded, setRatingOnFailed, userContext);  //returns bool true/false
        document.body.style.cursor = "wait";
    }
    else {
        StartRegistration('AddToNotebook', '', '', listingID, rating);
    }
}

function setRatingOnSucceeded(result, userContext) {
    document.body.style.cursor = "default";
    var parsedUserContext = userContext.split("|");
    var rating = parsedUserContext[0];
    var listingID = parsedUserContext[1];
    var opt = parsedUserContext[2];

    var ratingListingID = $("rating_" + listingID);
    if (ratingListingID == null) {
        throw Error("rating_" + listingID + " does not exist!.");
    }
    else
    {
        ratingListingID.value = rating;
    }


    RefreshRatingsUI(rating, listingID, opt);
    NotifySubscribers('AddToNotebook');
}
function setRatingOnFailed(error) {
    document.body.style.cursor = "default";
    alert(error);
}

//###################### Add Notes to Notebook ########################
function addNoteToNotebook(listingID, mlsID, noteContainer,appendToNotes,userRating, opt) {

    if(IsAuthenticated=='True')  //variable from hosting page
    {
        $("divNoteUpdateMessage_"+listingID).innerHTML = "<img src='../App_Themes/Default/Images/Map/Working.gif'> Saving...";
        var notebookNote = document.getElementById(noteContainer).value;
        var userContext = listingID + "|" + opt;

        _currUserListing = new HBM2.Business.FMUserListing.Entities.UserListingEntity();
        _currUserListing.ListingId = listingID;
        _currUserListing.NotebookNote = notebookNote;
        _currUserListing.UserRating = userRating <=0 ? 1 : userRating;

        var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();
        ratingService.AddNoteToNotebook(listingID, mlsID, notebookNote,appendToNotes, addNoteToNotebookOnSucceeded, addNoteToNotebookOnFailed, userContext);  //returns bool true/false
    }
    else
    {
        StartRegistration('AddANote', '', '', listingID, '');
    }
}
function addNoteToNotebookOnSucceeded(result, userContext) {

    var splitted = userContext.toString().split("|");
    var listingId = splitted[0];
    var opt = splitted[1];

    $("divNoteUpdateMessage_" + listingId).innerHTML = "Your note has been saved.";

    RefreshRatingsUI(_currUserListing.UserRating, _currUserListing.ListingId, opt);
    NotifySubscribers('AddToNotebook');

}
function addNoteToNotebookOnFailed(error) {
    alert(error._message);
}
//###################### Add To Favorites with QuickAlert Button ########################
function setFavoritesWithQuickAlertButton(listingID, mlsID, userRating, opt) {
    if(IsAuthenticated=='True')  //variable from hosting page
    {
        document.body.style.cursor = "wait";
        var userContext = listingID + "|" + opt;
        var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();

        _currUserListing = new HBM2.Business.FMUserListing.Entities.UserListingEntity();
        _currUserListing.UserRating = userRating;
        _currUserListing.ListingId = listingID;

        ratingService.SetRating(listingID, userRating, setFavoritesWithQuickAlertButtonOnSucceeded,setFavoritesWithQuickAlertButtonOnFailed, userContext);  //returns bool true/false
    }
    else
    {
        StartRegistration('AddToNotebook', '', '', listingID, '');
    }
}
function setFavoritesWithQuickAlertButtonOnSucceeded(result, userContext) {

    var splitted = userContext.toString().split("|");
    var listingId = splitted[0];
    var opt = splitted[1];

    if (_currUserListing.UserRating == -1)
    {
        $("divQuickAlertAddToFavorites").style.display = "block";
        $("divQuickAlertRemoveFromFavorites").style.display = "none";
    }
    else
    {
        $("divQuickAlertAddToFavorites").style.display = "none";
        $("divQuickAlertRemoveFromFavorites").style.display = "block";
    }
    document.body.style.cursor = "default";
    

    RefreshRatingsUI(_currUserListing.UserRating, _currUserListing.ListingId, opt);
    NotifySubscribers('AddToNotebook');

}
function setFavoritesWithQuickAlertButtonOnFailed(error) {
    document.body.style.cursor = "default";
    alert(error._message);
}

//################### Get Notes on List View ###########################

function ClearListViewNotes( listingID )
{
    var divNotes = $("divNotes_" + listingID);

    if( divNotes == null ) return;

    divNotes.style.display = "none";
    $("divListRow_" + listingID).style.height = "110px";
    $('divNoteUpdateMessage_' + listingID).innerHTML = "";
    $("txtBuyerNotes_"+listingID).innerHTML ="";
}

function showListViewNotes(id,mlsListingID) {
     if(IsAuthenticated=='True')  //variable from hosting page
    {
        var obj = $("divNotes_" + id);
        if (obj.style.display == "block") {
            obj.style.display = "none";
            $("divListRow_" + id).style.height = "110px";
            $('divNoteUpdateMessage_' + id).innerHTML = "";
        }
        else {
            obj.style.display = "block";
            $("divListRow_" + id).style.height = "215px";
            var userContext = id;
            var ratingService = new HBM2.BuyerPortal.WebServices.RatingService();
            ratingService.GetListingsNotesString(mlsListingID, "Buyer", showBuyerNotesOnSucceeded, showNotesOnFailed, userContext);
            ratingService.GetListingsNotesString(mlsListingID, "Loan_Officer", showLONotesOnSucceeded, showNotesOnFailed, userContext);
            ratingService.GetListingsNotesString(mlsListingID, "Real_Estate_Agent", showAgentNotesOnSucceeded, showNotesOnFailed, userContext);
        }
    }
    else
     {
        StartRegistration('ViewNotes', '', '', mlsListingID);
    }
}
function showBuyerNotesOnSucceeded(result, userContext) {
    var id = userContext;
    $("txtBuyerNotes_"+id).innerHTML = result;
}
function showLONotesOnSucceeded(result, userContext) {
    if (result != ""){
        result = "<span style=\"font-weight:bold;\">LO Notes</span><br />" + result;
        $("divListRow_"+userContext).style.height = parseInt($("divListRow_"+userContext).style.height.replace(/px,*/g,"")) + 40 + "px";
        var obj = $("divLONotes_"+userContext);
        obj.style.display="block";
        obj.innerHTML = result;
    }
}
function showAgentNotesOnSucceeded(result, userContext) {
    if (result != ""){
        result = "<span style=\"font-weight:bold;\">Agent Notes</span><br />" + result;
        $("divListRow_"+userContext).style.height = parseInt($("divListRow_"+userContext).style.height.replace(/px,*/g,"")) + 40 + "px";
        var obj = $("divAgentNotes_"+userContext);
        obj.style.display="block";
        obj.innerHTML = result;
    }
}
function showNotesOnFailed(result, userContext) {
    $("divNoteUpdateMessage_"+userContext).innerHTML = "Error retrieving notes...";
    }