﻿var _communityCards = {};
var _pageStateValues = new Array();
var _initFacetState;
var _facetResults;
var _facetPageState;
var _updatedCommunityID = 0;
var _updatedCommunityRating = 0;

//function showProgressIndicator() {   
//    $j("#SearchResult").css("display", "none");
//    $j("#SearchResult").html("");    
//    $j("#loading").addClass("loading");
//}

//function hideProgressIndicator() {
//    var _t = setInterval(function() {
//        $j("#SearchResult").css("display", "inline");        
//        $j("#loading").removeClass("loading");   
//        clearInterval(_t);
//    }, 2000);
//}
$j(document).ready(function() {
    //initialize page onload
    pageInit();
});

function pageInit() {

    //get initial facet state
    _initFacetState = facetContextJSON.params;

    //initialize default page state
    _pageStateValues = new Array(_sTab, _sTab, "1", "20", "communityname", "asc");

    if (_sTab === "Q") {
        if (_moveInDate != '')
            _initFacetState.mvdt = _moveInDate;
    }
    
    updateFacetState(_initFacetState);
}

//this method gets called after updateFacetState() is invoked
function syncResults(facetResults, mapResults, facetPageState) {
      
    //initialize
    $j("#NoMatchMessageContainer").hide();

    
    //get details based on the current tab
    if (facetPageState.ct == "C") {
        getCommunityDetails(facetResults, facetPageState)
    }
    else if (facetPageState.ct == "H") {
        switchTab("H");
        getHomeDetails(facetResults, facetPageState)
    }
    else if (facetPageState.ct == "Q") {
        switchQMITab(facetPageState);        
        getQMIDetails(facetResults, facetPageState)
    }
        
    //alert(JSON.stringify(mapResults));
    //sync map with results
    //passes in JSON containing community id, inventory count, and plan count
    syncMap(mapResults);

    if (!$j("#NoMatchMessageContainer").is(':visible')) {
        $j("#sortpagingFooter").show(200);
        $j("#sortpagingHeader").show(200);
    }
    
    $j("#searchResultsUpdating").hide(500);
}

function switchQMITab(facetPageState) {
    //detect if tab change occurred due to move in date being selected
    if ((facetPageState.ct != _pageStateValues[0]) || _sTab === "Q") {
        switchTab("Q");
        _pageStateValues[0] = "Q";
    }
}

/////----------Community Tab

function getCommunityDetails(facetResults, facetPageState) {

    _facetResults = facetResults;
    _facetPageState = facetPageState;
        
    //set no of records founds
    $j('#communityRecCount').text(facetPageState.ic + ' Communities');

    //initialize pager
    initPager(facetPageState);
    
    //build out parameter object
    var params = new Object;
    var neededResults = [];
    for (var requiedCommunity in facetResults)
        if (!_communityCards[facetResults[requiedCommunity].cid])
            neededResults.push(facetResults[requiedCommunity]);

        params.facetResultsJSON = JSON.stringify(neededResults, Lennar.Global.stringifyHandler);
        params.pageStateJSON = JSON.stringify(facetPageState, Lennar.Global.stringifyHandler);
    
    $j.ajax(
    {
        type: "POST",
        data: JSON.stringify(params, Lennar.Global.stringifyHandler),
        url:"/Services/SearchMethods.asmx/GetCommunityDetails",
        contentType: "application/json; charset=utf-8",
        datatype:"json",
        success: communityDetails_onSuccess,
        error: communityDetails_onFailed
    }
    );
}

function communityDetails_onSuccess(e) {
    var response = e.d;
    var parsedResponse = JSON.parse(response);
    for (var responseItem in parsedResponse) {
        _communityCards[parsedResponse[responseItem].cid] = parsedResponse[responseItem];
    }

    var jsonRes = [];
    for (var item in _facetResults) {
        if (typeof _communityCards[_facetResults[item].cid] != "function")
        jsonRes.push(_communityCards[_facetResults[item].cid]);
    }
    $j(document).ready(function() {
        var json = { "jsonResult": jsonRes };
        var output = $j('#CommunitySearchTemp').parseTemplate(json);
        $j('#SearchResult').html(output);

        initializeRatings();
        initializeShareThis();

        //We may have updated a rating and needed to log in.  This will allow us to set the new rating
        if (_updatedCommunityID > 0) {
            if ($j("#cm_" + _updatedCommunityID + "_rtg")) {
                $j("#cm_" + _updatedCommunityID + "_rtg").stars("select", _updatedCommunityRating);
            }
            _communityCards[_updatedCommunityID].rtg = _updatedCommunityRating;
        }

        $j('.contactUsRegion').mouseleave(HideContactUsFlyover);
        $j('.contactUsButton').mouseenter(ShowContactUsFlyover);
        $j('.contactUsButton').toggle(ToggleShowContactUsFlyover, ToggleHideContactUsFlyover);
        $j('.quickMoveInModal').click(function() {
            Lennar.Global.openQMIModal($j(this).attr('cid'));
            return false;
        });
        $j('.photoTourLink').click(function() {
            Lennar.Global.openPhotoTourModal($j(this).attr('href'));
            return false;
        });
        //$j(".photoTourLink").colorbox({ "width": "750px", "height": "740px", "iframe": true, "scrolling": false, "opacity": .6, "title": " " });

    });
}

function initializeShareThis() {
    $j('div.share_button').click(function(event) {
        event.preventDefault();
        Lennar.Global.openShareModal({"element": (event.target ? event.target : event.srcElement)});
    });
}

function communityDetails_onFailed(e) {
    //alert("GetCommunity Error :" + e.responseText);
}  

/////----------Home Tabs

function getHomeDetails(facetResults, facetPageState){

    if (facetResults != undefined && facetResults.length != 0) {
        _facetResults = facetResults;
        _facetPageState = facetPageState;

        //set no of records founds
        $j('#communityRecCount').text(facetPageState.ic + ' Homes');

        //initialize pager
        initPager(facetPageState);

        //build out parameter object
        var params = new Object;
        params.facetResultsJSON = JSON.stringify(facetResults, Lennar.Global.stringifyHandler);
        params.pageStateJSON = JSON.stringify(facetPageState, Lennar.Global.stringifyHandler);

        $j.ajax(
        {
            type: "POST",
            data: JSON.stringify(params, Lennar.Global.stringifyHandler),
            url: "/Services/SearchMethods.asmx/GetHomesDetails",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            success: homeDetails_OnSuccess,
            error: homeDetails_OnFailed
        }
        );
    }
    else {

        $j('#communityRecCount').text('Found: 0 Homes');
        
        $j('#SearchResult').html('');
        $j("#NoMatchMessage").html('<br/>We are unable to find Homes that meet your specified criteria. This is either because there are no homes to match your selected criteria or there are no Homes available to build in ' + _contextString + '.  You may <a href="#" onclick="return launchChatNow();">click here</a> to Chat Now.');
        $j("#NoMatchMessageContainer").show();
        $j("#sortpagingFooter").hide();
        $j("#sortpagingHeader").hide();
    }
    
}

function homeDetails_OnSuccess(e) {
    var response = e.d;
    var jsonRes = JSON.parse(response);
    $j(document).ready(function() {
        var json = { "jsonResult": jsonRes };
        var output = $j('#HomeSearchTemp').parseTemplate(json);
        $j('#SearchResult').html(output);

        initializeRatings();
        initializeShareThis();
        $j('.contactUsRegion').mouseleave(HideContactUsFlyover);
        $j('.contactUsButton').mouseenter(ShowContactUsFlyover);
        $j('.contactUsButton').toggle(ToggleShowContactUsFlyover, ToggleHideContactUsFlyover);
        $j('.quickMoveInModal').click(function() {
            Lennar.Global.openQMIModal($j(this).attr('cid'));
            return false;
        });
    });
}    

function homeDetails_OnFailed(e) {
    //alert("GetHome Error :" + e.responseText);
}

/////---Movein Tab

function getQMIDetails(facetResults, facetPageState) {

    if (facetResults != undefined && facetResults.length != 0) {

        _facetResults = facetResults;
        _facetPageState = facetPageState;

        //set no of records founds
        $j('#communityRecCount').text(facetPageState.ic + ' Homes');

        //initialize pager
        initPager(facetPageState);

        //build out parameter object
        var params = new Object;
        params.facetResultsJSON = JSON.stringify(facetResults, Lennar.Global.stringifyHandler);
        params.pageStateJSON = JSON.stringify(facetPageState, Lennar.Global.stringifyHandler);

        $j.ajax(
        {
            type: "POST",
            data: JSON.stringify(params, Lennar.Global.stringifyHandler),
            url: "/Services/SearchMethods.asmx/GetInventoryDetails",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            success: QMIDetails_OnSuccess,
            error: QMIDetails_OnFailed
        }
        );
    }
    else {
        $j('#SearchResult').html('');
        var nmmsg
        if (_contextString.length == 0) {
            nmmsg = '';
        }
        else {
            nmmsg = ' in ' + _contextString;
        }

        $j('#communityRecCount').text('Found: 0 Homes');

        $j("#NoMatchMessage").html('<br/>We are unable to find Quick Move In Homes that meet your specified criteria. This is either because there are no homes to match your selected criteria or there are no Quick Move In Homes available' + nmmsg + '. You may refine your search to the left or <a href="#" onclick="tabClick(' + "'H'" + ');">click here</a> to view plans' + nmmsg + ' that are available to build.');
        $j("#NoMatchMessageContainer").show();
        $j("#sortpagingFooter").hide();
        $j("#sortpagingHeader").hide();
    }
}

function QMIDetails_OnSuccess(e) {
    var response = e.d;
    var jsonRes = JSON.parse(response);
    $j(document).ready(function() {
        var json = { "jsonResult": jsonRes };
        var output = $j('#MoveinSearchTemp').parseTemplate(json);
        $j('#SearchResult').html(output);

        initializeRatings();
        initializeShareThis();
        $j('.contactUsRegion').mouseleave(HideContactUsFlyover);
        $j('.contactUsButton').mouseenter(ShowContactUsFlyover);
        $j('.contactUsButton').toggle(ToggleShowContactUsFlyover, ToggleHideContactUsFlyover);
        $j('.quickMoveInModal').click(function() {
            Lennar.Global.openQMIModal($j(this).attr('cid'));
            return false;
        });        
    });
}

function QMIDetails_OnFailed(e) {
    //alert('Somthing went wrong.  Here is the response text: ' + e.responseText);
}

function switchTab(type) {
    $j('.tabmovein').removeClass("active");
    $j('.tabhome').removeClass("active");
    $j('.tabCommunity').removeClass("active");

    _pageStateValues[1] = _pageStateValues[0];

    if (type == "C") {
        $j('.tabCommunity').addClass("active");
        _pageStateValues[0] = "C";         
    }
    else if (type == "H") {
        $j('.tabhome').addClass("active");
        _pageStateValues[0] = "H";       
    }
    else if (type == "Q") {
        $j('.tabmovein').addClass("active");
        _pageStateValues[0] = "Q";      
    }
}
function tabClick(type) {

    switchTab(type);

    _pageStateValues = new Array(type, _pageStateValues[1], "1", "20", _pageStateValues[4], _pageStateValues[5]);
    
    updateFacetState(null);
}

function DDLCall(e) {
            
    switch (e.value) {
        case "0":
            _pageStateValues[4] = "price";
            _pageStateValues[5] = "asc";
            break;
        case "1":
            _pageStateValues[4] = "price";
            _pageStateValues[5] = "desc";
            break;
        case "2":
            _pageStateValues[4] = "communityname";
            _pageStateValues[5] = "asc";
            break;
        case "3":
            _pageStateValues[4] = "city";
            _pageStateValues[5] = "asc";
            break;
        default:
            _pageStateValues[4] = "communityname";
            _pageStateValues[5] = "asc";
            break;
    }

    _pageStateValues[2] = "1";
    _pageStateValues[3] = "20";

    updateFacetState(null);
}

function CallHeaderSort(e) {
    //alert('Head'); 
    DDLCall(e);
    //alert($j('#sortHeader').val());
    $j('#sortFooter').val($j('#sortHeader').val());
}

function CallFooterSort(e) {
    //alert('Foot'); 
    DDLCall(e);
    //alert($j('#sortFooter').val());
    $j('#sortHeader').val($j('#sortFooter').val());
}

function ComingSoon() {
    alert('This feature will be available soon');
}

/////---Pager
function initPager(pageState) {
    var pageCount = Math.ceil(pageState.ic / pageState.ps);

    //alert("ItemCount:" + pageState.ic + ";PageSize:"+ pageState.ps + ";PageNumber:" + pageState.pn + ";PageCount:" + pageCount);
    if (pageCount > 1) {
        $j("#divPagerTop").pager({ pagenumber: pageState.pn, pagecount: pageCount, buttonClickCallback: PageClick }).show();
        $j("#divPagerBottom").pager({ pagenumber: pageState.pn, pagecount: pageCount, buttonClickCallback: PageClick }).show();
    }
    else {
        $j("#divPagerTop").hide();
        $j("#divPagerBottom").hide();
    }
}

//Pager Click
PageClick = function(pageClickedNumber) {
        
    if (pageClickedNumber == null) {
        //view all was selected so update requested records in page state values; page number will be reset to 1
        _pageStateValues[2] = 1
        _pageStateValues[3] = _facetPageState.ic;
    }
    else {
        //update selected page in page state values
        _pageStateValues[2] = pageClickedNumber
    }

    //update results
    updateFacetState(null);
}

function ShowContactUsFlyover() {
    $j(this).children('img').attr('src', '/Images/Com/Buttons/contactus_up.gif');
    $j(this).next('.contactUsFlyout').stop(true, true).slideDown(500);

    var contactUsLiveChat = $j(this).next('.contactUsFlyout').children('#divLiveChat');
    if (contactUsLiveChat != null && contactUsLiveChat.children('img').height() < 2) {
        contactUsLiveChat.css('display', 'none');
        contactUsLiveChat.next('.item').children('img').attr('src', '/Images/Com/Icons/fo_request_icon_amber.gif');
    }
}

function HideContactUsFlyover() {
    if ($j(this).children('.contactUsFlyout').data('toggled') != 1) {
        $j(this).children('.contactUsButton').children('img').attr('src', '/Images/Com/Buttons/contactus_side.gif')
        $j(this).children('.contactUsFlyout').slideUp(500);
    }
}

function ToggleShowContactUsFlyover() {
    $j(this).next('.contactUsFlyout').data('toggled', 1);
}

function ToggleHideContactUsFlyover() {
    $j(this).children('img').attr('src', '/Images/Com/Buttons/contactus_side.gif');
    $j(this).next('.contactUsFlyout').data('toggled', 0);
    $j(this).next('.contactUsFlyout').stop(true, true).slideUp(500);
}

function ShowLiveChatWindow(element, divisionNumber, communityNumber) {
    pixel_conversion(1879);
    var url = $j(element).attr('href');
    window.open(String.format('/LogRedirect.aspx?np={0}&DIVID={1}&COMID={2}&ACTION=LIVECHAT&WT.z_event=Hard Lead&WT.z_event_type=Chat Now!', escape(url), divisionNumber, communityNumber), 'chat65896788', 'width=472,height=320');
    return false;
}

function ShowRequestInfoModal(element, communityName, communityId) {
    $j(element).parent().parent().stop(true, true).slideUp(500);
    Lennar.Global.openRFIModal(communityId, '', '');
    return false;
}

function StringFormatStatic() {
    for (var i = 1; i < arguments.length; i++) {
        var exp = new RegExp('\\{' + (i - 1) + '\\}', 'gm');
        arguments[0] = arguments[0].replace(exp, arguments[i]);
    }
    return arguments[0];
}

if (!String.format) {
    String.format = StringFormatStatic;
}

function GetMapDotImageURL(communityId, masterCommunityID) {

//    if (_communities[communityId] == undefined) {

//        communityId = masterCommunityID + "M";
//    }

//    if (_communities[communityId] != undefined) {
//        return _communities[communityId]["mpid"];
//    }
//    else {
        return "singledot";
//    }    
}

function GetLiveChatImageUrl(chatSkill) {
    return String.format('http://sales.liveperson.net/hc/65896788/?cmd=repstate&site=65896788&&ver=1&imageUrl=http://{0}/images/com/LiveChat/small16&skill={1}', document.domain, chatSkill);
}

function GetLiveChatLinkUrl(chatSkill) {
    return String.format('http://sales.liveperson.net/hc/65896788/?cmd=file&file=visitorWantsToChat&site=65896788&byhref=1&SESSIONVAR!skill={0}&imageUrl=http://{1}/images/com/livechat/small16', chatSkill, document.domain);
}

function GetLiveChatEventHandler(divisionNumber, communityNumber) {
    return String.format('return ShowLiveChatWindow(this, \'{0}\', \'{1}\');', divisionNumber, communityNumber);
}

function GetRequestInfoEventHandler(communityName, communityId) {
    return String.format('lpSendData(\'page\',\'PageName\',\'request for more information\'); lpSendData(\'session\',\'ConversionAction\', \'request info\');  return ShowRequestInfoModal(this, \'{0}\', \'{1}\');', communityName.replace('\'', '\\\''), communityId);
}

function GetVideoUrl(communityNumber, videoUrl) {
    return String.format('/LogRedirect.aspx?comid={0}&ACTION=COMVID&np={1}', communityNumber, escape(videoUrl));
}

function resetItemsAfterRating() {
    _communityCards = {};
}

function resetItemsAfterFavorite() {
    _communityCards = {};
}

function updateCommunityCard(itemID, rating) {
    _updatedCommunityID = itemID;
    _updatedCommunityRating = rating;
}

