
if (!window['$hnj'] || !$hnj.registry.included('/scripts/components/webRecipeIndexComponent.js')) { 
$hni.components.webRecipeIndexComponent = function(elementId, pagingComponentId, performSearchCallbackUrl) {
    var base = new $hni.components.manager(elementId);
    var currentPage = 1;
    var currentSelectedConceptID = 0;

    var displayResults = function(results) {
        var container = $hnj('#' + elementId + 'ResultsContainer');
        var parentContainer = $hnj('#' + elementId);
        container.empty();

        updateResultsCount(results.TotalNumberOfResults);
        for (var i = 0; i < results.Results.length; i++) {
            var collectionTitle = '';
            collectionTitle = (results.Results[i].Result.CollectionName != '' && results.Results[i].Result.CollectionName != undefined) ? ' (from <em>' + results.Results[i].Result.CollectionName + '</em>)' : '';
            var budgetFriendly = results.Results[i].Result.IsBudgetFriendly ? '<span class="hni_IconBudget" title="Budget Friendly">&#160;&#160;</span>' : '';
            var heartHealthy = results.Results[i].Result.IsHeartHealthy ? '<span class="hni_IconHeart" title="Heart Healthy">&#160;&#160;</span>' : '';
            var quickAndEasy = results.Results[i].Result.IsQuickEasy ? '<span class="hni_IconEasy" title="Quick & Easy">&#160;&#160;</span>' : '';
            if (results.Results[i].Link != null) {
                container.append('<div class="hni_RecipeItemContainer"><div class="hni_RecipeIcons">' + budgetFriendly + heartHealthy + quickAndEasy + '</div><div class="hni_RecipeResultItem"><a href="' + results.Results[i].Link + '">' + results.Results[i].Result.Title + collectionTitle + '</a></div></div>');
            }
        }
        parentContainer.unblock();
    };

    var updateCallouts = function(callouts) {
        var calloutInfoContainer = $hnj('#' + elementId + 'CalloutTbl');
        calloutInfoContainer.empty().append('<tr class="hni_RecipeIndexCalloutHeaderText"><td id="hni_RecipeIndexCalloutHeaderTxt" colspan="2">' + callouts.HeaderText + '</td></tr>' +
        '<tr id="hni_RecipeIndexCalloutImg" class="hni_RecipeIndexCalloutImage"></tr>' +
        '<tr id="hni_RecipeIndexCalloutTtl" class="hni_RecipeIndexCalloutTitle"></tr>' +
        '<tr id="hni_RecipeIndexCalloutIcn" class="hni_RecipeIndexCalloutIcons"></tr>');
        var printIconRow = false;
        for (var i = 0; i < callouts.Items.length; i++) {
            if (callouts.Items[i].IsBudgetFriendly || callouts.Items[i].IsHeartHealthy || callouts.Items[i].IsQuickAndEasy) {
                printIconRow = true;
                break;
            }
        }
        for (var i = 0; i < callouts.Items.length; i++) {
            $hnj('#' + elementId + 'CalloutImg').append('<td class="hni_RecipeIndexCalloutImageTableCell' + (i + 1) + '"><a href="' + callouts.Items[i].CalloutUrl + '">' +
            '<img src="' + callouts.Items[i].CalloutImage + '" alt="' + callouts.Items[i].CalloutTitle + '" border="0" /></a></td>');

            $hnj('#' + elementId + 'CalloutTtl').append('<td class="hni_RecipeIndexCalloutTitleTableCell' + (i + 1) + '"><a href="' + callouts.Items[i].CalloutUrl + '">' + callouts.Items[i].CalloutTitle +
            '</a></td>');

            if (printIconRow) {
                $hnj('#' + elementId + 'CalloutIcn').append('<td class="hni_RecipeIndexCalloutIconsTableCell' + (i + 1) + '">' +
                (callouts.Items[i].IsBudgetFriendly ? '<span class="hni_IconBudget" title="Budget Friendly"></span>' : '') +
                (callouts.Items[i].IsHeartHealthy ? '<span class="hni_IconHeart" title="Heart Healthy"></span>' : '') +
                (callouts.Items[i].IsQuickAndEasy ? '<span class="hni_IconEasy" title="Quick & Easy"></span>' : '') +
                '</td>');
            }
        }
    }

    var updateResultsCount = function(resultCount) {
        var resultsDiv = $hnj('#' + elementId + 'ResultCount');
        resultsDiv.empty().append('(' + resultCount + ') Search Results:');
    }

    var selectFilter = function(conceptID) {
        $hnj('.hni_RecipeIndexFilter.Selected').toggleClass('Selected');
        $hnj('#' + 'filter' + conceptID).toggleClass('Selected');
        currentSelectedConceptID = conceptID;
    }

    return $hnj.extend(
		base,
		{
		    filterResults: function(conceptID) {
		        var container = $hnj('#' + elementId);
		        container.block();
		        selectFilter(conceptID);
		        var callbackUrl = performSearchCallbackUrl
		            .replace('$0', conceptID)
		            .replace('$1', 1)
		            .replace('$2', true);
		        $hnj.ajax2.getJSONP(
					callbackUrl,
					function(searchResults) {
					    displayResults(searchResults);
					    updateCallouts(searchResults.Callouts);
					    $hni.components.manager.get(pagingComponentId).init(searchResults.TotalNumberOfResults, 1);
					});
		    },

		    gotoPage: function(page) {
		        var callbackUrl = performSearchCallbackUrl
					.replace('$0', currentSelectedConceptID)
		            .replace('$1', page);
		        var container = $hnj('#' + elementId);
		        container.block();
		        $hnj.ajax2.getJSONP(
					callbackUrl,
					function(results) {
					    displayResults(results);
					    $hni.components.manager.get(pagingComponentId).init(results.TotalNumberOfResults, page);
					    currentPage = page;
					});
		        $hnj.scrollTo($hnj('#' + elementId + 'ResultCount'), 500);
		    }
		});

};
}
if (window['$hnj']) { $hnj.registry.register('/scripts/components/webRecipeIndexComponent.js', false); };


