
Search.zeroResults=function()
{var that={};that.init=function()
{$(".resetFilters").live("click",function(e)
{$(document).trigger("ResetSearchFilters");e.preventDefault();});};return that;}

Search.numberOfResults=function()
{var that={};var totalResultsCount=$("#TotalResultsCount");that.init=function()
{$(document).bind("SearchComplete",function(args)
{if(args.resultCount)
{totalResultsCount.text(args.resultCount);}});};return that;};

Search.breadcrumb=function()
{var that={};var breadcrumbList=$("#BreadCrumbList");that.update=function(fragments)
{breadcrumbList.html(Core.stringInsertAtMatch(Search.termHandler().handle(fragments),",[0-9a-zA-Z]"," "));};that.init=function()
{$("a.fragmentLink").live("click",function(args)
{var text=$(this).text();$(document).trigger({type:"BreadcrumbTermClicked",term:text});args.preventDefault();});$("a.fragmentDelete").live("click",function(args)
{var text=$(this).next("a.fragmentLink").text();if(!text)
{text=$(this).nextAll("span.excludeFragment").text();}
$(document).trigger({type:"RemoveBreadcrumbTerm",term:text});args.preventDefault();});$(document).bind("SearchComplete",function(args)
{if(args.fragments)
{that.update(args.fragments);}});};return that;};Search.termHandler=function()
{var that={};that.handle=function(fragments)
{var listItems=[];var normalFragments=0;for(var i=0;i<fragments.length;i++)
{if(!fragments[i].IsExclude)
normalFragments++;}
for(var i=0;i<fragments.length;i++)
{var listItem="<li><h3>";var termMarkup;if(normalFragments>1||fragments[i].IsExclude)
{var removeLink="<a href='javascript:void(0)' class='fragmentDelete text-default'>[x]</a>";listItem+=removeLink;}
if(fragments[i].IsExclude)
{termMarkup="<span class='excludeText'>"+Search.Globals.NotText+"</span>";termMarkup+="<span class='excludeFragment'>"+fragments[i].Text+"</span>";}
else
{termMarkup="<a href='javascript:void(0)' class='text-default-color fragmentLink'>"+fragments[i].Text+"</a>";}
if(i!==fragments.length-1)
{termMarkup+=",";}
listItem+=termMarkup+"</h3></li>";listItems.push(listItem);}
return listItems.join("");};return that;};

Search.serializedQueryRepository=function()
{var that={};var serializedQuery;that.setCurrent=function(query)
{serializedQuery=query;};that.current=function()
{return serializedQuery;};return that;};

Search.fragmentParser=function()
{var that={};that.getCurrentTerm=function(fragments)
{var term="";for(var i=fragments.length-1;i>=0;i--)
{if(!fragments[i].IsExclude&&!fragments[i].IsRefinement)
{term=fragments[i].Text;break;}}
return term;};return that;};

Search.advancedSearchQueryBuilder=function(basicSearch,mediaFilter,currentFilterSettings,collectionsSelector,serializedQueryRepository)
{var that={};that.build=function()
{return{"SearchTerm":basicSearch.text(),"ExcludeTerm":basicSearch.excludeTerm(),"Filters.Photography":mediaFilter.photographyChecked(),"Filters.Illustrations":mediaFilter.illustrationChecked(),"Filters.VectorEPS":mediaFilter.vectorChecked(),"Filters.WhiteBackgroundOnly":currentFilterSettings.includeWhiteBackgroundOnly(),"Filters.Horizontal":currentFilterSettings.includeHorizontal(),"Filters.Vertical":currentFilterSettings.includeVertical(),"Filters.ExcludeNudity":currentFilterSettings.excludeNudity(),"CollectionIds":collectionsSelector.getSelected(),"SerializedQuery":basicSearch.isSearchWithin()?serializedQueryRepository.current():"","CurrentPage":1};};return that;};

Search.removeBreadcrumbTermQueryBuilder=function(mediaFilter,filterSelector,collectionsSelector,serializedQueryRepository)
{var that={};that.build=function(args)
{return{"RemovalTerm":args.term,"Filters.Photography":mediaFilter.photographyChecked(),"Filters.Illustrations":mediaFilter.illustrationChecked(),"Filters.VectorEPS":mediaFilter.vectorChecked(),"Filters.WhiteBackgroundOnly":filterSelector.whiteBackgroundOnlyChecked(),"Filters.Horizontal":filterSelector.horizontalChecked(),"Filters.Vertical":filterSelector.verticalChecked(),"Filters.ExcludeNudity":filterSelector.excludeNudityChecked(),"CollectionIds":collectionsSelector.getSelected(),"SerializedQuery":serializedQueryRepository.current(),"CurrentPage":1};};return that;};

Search.breadcrumbTermQueryBuilder=function(termExcluder,mediaFilter,filterSelector,collectionsSelector)
{var that={};that.build=function(args)
{return{"SearchTerm":args.term,"Filters.Photography":mediaFilter.photographyChecked(),"Filters.Illustrations":mediaFilter.illustrationChecked(),"Filters.VectorEPS":mediaFilter.vectorChecked(),"Filters.WhiteBackgroundOnly":filterSelector.whiteBackgroundOnlyChecked(),"Filters.Horizontal":filterSelector.horizontalChecked(),"Filters.Vertical":filterSelector.verticalChecked(),"Filters.ExcludeNudity":filterSelector.excludeNudityChecked(),"CollectionIds":collectionsSelector.getSelected(),"CurrentPage":1};};return that;};

Search.refinementSearchQueryBuilder=function(advancedSearchQueryBuilder,serializedQueryRepository)
{var that={};that.build=function(e,refinement)
{var query=advancedSearchQueryBuilder.build();query["Refinement.Id"]=refinement.id;query["Refinement.Category"]=refinement.category;query["Refinement.Text"]=refinement.text;query["SerializedQuery"]=serializedQueryRepository.current()
return query;};return that;}

Search.searchResults=function(assetParser)
{var that={};var searchContent=$("#SearchContent");var currentResults;var query;that.init=function()
{$(document).bind("BeginSearch",function()
{searchContent.html("<img src='/images/ajax-loader.gif' />");});$(".detailLink").live("click",function(e)
{Core.OpenAdp($(this).attr("href")+"?al="+currentResults+"&sq="+query);e.preventDefault();});};that.update=function(results,response)
{searchContent.html(results);currentResults=assetParser.Parse(response.Results.Assets);query=response.SerializedQuery;};return that;};

Search.hashParser=function()
{var that={};that.getCollections=function(hash)
{var match=hash.match(/.*c=([\d\,]+)/,"");return match==null?"":match[1];};that.replaceCollections=function(hash,collections)
{return hash.replace(/c=([\d\,]+)/,"c="+collections);}
return that;};

Search.searchResponseHandler=function(searchResults,serializedQueryRepository,viewRenderer,ajaxExecutor,fragmentParser)
{var that={};that.handle=function(response)
{$(document).trigger({type:"SearchComplete",filters:response.SearchFormData?response.SearchFormData.Filters:null,collections:response.SearchFormData?response.SearchFormData.CollectionIds:null,fragments:response.Query.Fragments,resultCount:response.FormattedTotalAssets,currentTerm:fragmentParser.getCurrentTerm(response.Query.Fragments),refinements:response.Results.RefinementTypes,newCallout:response.NewCallout});Search.CurrentSearchType="";document.title=response.PageTitle;$('meta[name=description]').attr("content",response.MetaDescription);if(response.Results.Assets.length)
{var results=viewRenderer.RenderView({"assets":response.Results.Assets,"lightboxString":response.LightBoxString,"omnitureSearchMetrics":response.Results.OmnitureSearchMetrics});searchResults.update(results,response);}
else
{ajaxExecutor.getHtml("/Search/ZeroResults",null,false,function(data)
{searchResults.update(data,response);});}
serializedQueryRepository.setCurrent(response.SerializedQuery);$(document).trigger({type:"RenderComplete",assets:response.Results.Assets});SearchResultContent.Init();Paging.SetUp(response.PaginationStatus);Preview.HookupHoverEvents();};return that;};

Search.samePageRequestExecutor=function(responseHandler)
{var that={};that.execute=function(query)
{$(document).trigger("BeginSearch");$.post("/search/results",query,function(data)
{responseHandler.handle(data);},"json");};return that;};

Search.historyResponseHandler=function(searchResponseHandler,historyProvider)
{var that={};that.handle=function(response)
{historyProvider.save(response.SerializedQuery);searchResponseHandler.handle(response);};return that;};

Search.pagingSearchQueryBuilder=function(serializedQueryRepository)
{var that={};that.build=function(args)
{Search.CurrentSearchType="Paging";return{'CurrentPage':args.page,'SerializedQuery':serializedQueryRepository.current()};};return that;};

Search.resultPerPageSearchQueryBuilder=function(serializedQueryRepository)
{var that={};that.build=function(args)
{return{'CurrentPage':1,'SerializedQuery':serializedQueryRepository.current()};};return that;};

Search.urlQueryBuilder=function(documentLocation)
{var that={};that.build=function()
{return{'SerializedQuery':documentLocation.hash()};};return that;};

Search.advancedSearchBootstrapper=function(){var advancedSearch=Search.advancedSearch(Search.basicSearch());advancedSearch.init();var mediaFilter=Search.mediaSelector();mediaFilter.init();var filterSelector=Search.filterSelector();filterSelector.init();var collectionsSelector=Search.collectionsSelector();collectionsSelector.init();var zeroResults=Search.zeroResults();zeroResults.init();var numberOfResults=Search.numberOfResults();numberOfResults.init();var breadcrumb=Search.breadcrumb();breadcrumb.init();var savedSettings=Search.savedSettings();var filterSettings=Search.createCurrentFilterSettings(filterSelector,savedSettings);var serializedQueryRepository=Search.serializedQueryRepository();var advancedSearchQueryBuilder=Search.advancedSearchQueryBuilder(advancedSearch,mediaFilter,filterSettings,collectionsSelector,serializedQueryRepository);var assetParser=new AssetParser();var ajaxExecutor=Ajax.executor();var viewRenderer=Spark.search._SearchResultContent;var querySerializer=Search.querySerializer(advancedSearch,mediaFilter,filterSelector,collectionsSelector);var searchResults=Search.searchResults(assetParser);searchResults.init();var fragmentParser=Search.fragmentParser();var responseHandler=Search.searchResponseHandler(searchResults,serializedQueryRepository,viewRenderer,ajaxExecutor,fragmentParser);var samePageRequestExecutor=Search.samePageRequestExecutor(responseHandler);var refinementsHandler=Search.refinementsHandler().init();var refinementSearchQueryBuilder=Search.refinementSearchQueryBuilder(advancedSearchQueryBuilder,serializedQueryRepository);var historyProvider=new ActionHistoryProvider();var historyResponseHandler=Search.historyResponseHandler(responseHandler,historyProvider);var historyPageRequestExecutor=Search.samePageRequestExecutor(historyResponseHandler);Search.searchEventHandler("RefinementClicked",refinementSearchQueryBuilder,filterSettings,historyPageRequestExecutor);Search.searchEventHandler("SearchButtonClicked",advancedSearchQueryBuilder,filterSettings,historyPageRequestExecutor);var pagingSearchQueryBuilder=Search.pagingSearchQueryBuilder(serializedQueryRepository);Search.searchEventHandler("ChangePage",pagingSearchQueryBuilder,null,historyPageRequestExecutor);var resultPerPageSearchQueryBuilder=Search.resultPerPageSearchQueryBuilder(serializedQueryRepository);Search.searchEventHandler("ChangeResultsPerPage",resultPerPageSearchQueryBuilder,null,historyPageRequestExecutor);var breadcrumbSearchQueryBuilder=Search.breadcrumbTermQueryBuilder(advancedSearch,mediaFilter,filterSelector,collectionsSelector);Search.searchEventHandler("BreadcrumbTermClicked",breadcrumbSearchQueryBuilder,null,historyPageRequestExecutor);var removeBreadcrumbTermQueryBuilder=Search.removeBreadcrumbTermQueryBuilder(mediaFilter,filterSelector,collectionsSelector,serializedQueryRepository);Search.searchEventHandler("RemoveBreadcrumbTerm",removeBreadcrumbTermQueryBuilder,null,historyPageRequestExecutor);$(document).bind("BreadcrumbTermClicked",advancedSearch.clearExcludeTerm);$(document).bind("RemoveBreadcrumbTerm",advancedSearch.clearExcludeTerm);var urlQueryBuilder=Search.urlQueryBuilder(new DocumentLocation());Search.searchEventHandler("UrlSearch",urlQueryBuilder,null,samePageRequestExecutor);historyProvider.Init(function(){$(document).trigger("UrlSearch");});ResultsPerPage.SetUp();};Search.legacyAdvancedSearchBootstrapper=function()
{var advancedSearch=Search.advancedSearch(Search.basicSearch());advancedSearch.init();var mediaFilter=Search.mediaSelector();mediaFilter.init();var filterSelector=Search.filterSelector();filterSelector.init();var collectionsSelector=Search.collectionsSelector();collectionsSelector.init();var collectionsCookie=Search.specialCollectionsCookie();var modal=new SpecialCollectionsModal();var specialCollections=Search.specialCollections(collectionsCookie,modal);specialCollections.init();var alertCookie=Search.specialCollectionsAlertCookie();Search.specialCollectionsAlert(alertCookie,collectionsCookie,modal).init();var collectionsProvider=Search.specialCollectionProvider(collectionsSelector,specialCollections);collectionsProvider.init();var zeroResults=Search.zeroResults();zeroResults.init();var numberOfResults=Search.numberOfResults();numberOfResults.init();var breadcrumb=Search.breadcrumb();breadcrumb.init();var savedSettings=Search.savedSettings();var filterSettings=Search.createCurrentFilterSettings(filterSelector,savedSettings);var serializedQueryRepository=Search.serializedQueryRepository();var advancedSearchQueryBuilder=Search.advancedSearchQueryBuilder(advancedSearch,mediaFilter,filterSettings,collectionsProvider,serializedQueryRepository);var assetParser=new AssetParser();var ajaxExecutor=Ajax.executor();var viewRenderer=Spark.search._SearchResultContent;var querySerializer=Search.querySerializer(advancedSearch,mediaFilter,filterSelector,collectionsSelector);var searchResults=Search.searchResults(assetParser);searchResults.init();var fragmentParser=Search.fragmentParser();var responseHandler=Search.searchResponseHandler(searchResults,serializedQueryRepository,viewRenderer,ajaxExecutor,fragmentParser);var samePageRequestExecutor=Search.samePageRequestExecutor(responseHandler);var refinementsHandler=Search.refinementsHandler().init();var refinementSearchQueryBuilder=Search.refinementSearchQueryBuilder(advancedSearchQueryBuilder,serializedQueryRepository);var historyProvider=new ActionHistoryProvider();var historyResponseHandler=Search.historyResponseHandler(responseHandler,historyProvider);var historyPageRequestExecutor=Search.samePageRequestExecutor(historyResponseHandler);Search.searchEventHandler("RefinementClicked",refinementSearchQueryBuilder,filterSettings,historyPageRequestExecutor);Search.searchEventHandler("SearchButtonClicked",advancedSearchQueryBuilder,filterSettings,historyPageRequestExecutor);var pagingSearchQueryBuilder=Search.pagingSearchQueryBuilder(serializedQueryRepository);Search.searchEventHandler("ChangePage",pagingSearchQueryBuilder,null,historyPageRequestExecutor);var resultPerPageSearchQueryBuilder=Search.resultPerPageSearchQueryBuilder(serializedQueryRepository);Search.searchEventHandler("ChangeResultsPerPage",resultPerPageSearchQueryBuilder,null,historyPageRequestExecutor);var breadcrumbSearchQueryBuilder=Search.breadcrumbTermQueryBuilder(advancedSearch,mediaFilter,filterSelector,collectionsProvider);Search.searchEventHandler("BreadcrumbTermClicked",breadcrumbSearchQueryBuilder,null,historyPageRequestExecutor);var removeBreadcrumbTermQueryBuilder=Search.removeBreadcrumbTermQueryBuilder(mediaFilter,filterSelector,collectionsProvider,serializedQueryRepository);Search.searchEventHandler("RemoveBreadcrumbTerm",removeBreadcrumbTermQueryBuilder,null,historyPageRequestExecutor);$(document).bind("BreadcrumbTermClicked",advancedSearch.clearExcludeTerm);$(document).bind("RemoveBreadcrumbTerm",advancedSearch.clearExcludeTerm);var hashParser=Search.hashParser();var urlQueryBuilder=Search.legacyUrlQueryBuilder(new DocumentLocation(),hashParser,collectionsProvider,collectionsCookie);Search.searchEventHandler("UrlSearch",urlQueryBuilder,null,samePageRequestExecutor);historyProvider.Init(function()
{$(document).trigger("UrlSearch");});ResultsPerPage.SetUp();};

Search.signedInHomeBootstrapper=function()
{var advancedSearch=Search.advancedSearch(Search.basicSearch());advancedSearch.init();var mediaFilter=Search.mediaSelector();mediaFilter.init();var filterSelector=Search.filterSelector();filterSelector.init();var savedSettings=Search.savedSettings();var currentFilterSettings=Search.createCurrentFilterSettings(filterSelector,savedSettings);var collectionsSelector=Search.collectionsSelector();collectionsSelector.init();var querySerializer=Search.querySerializer(advancedSearch,mediaFilter,filterSelector,collectionsSelector);var searchPageRedirector=Search.searchPageRedirector(new DocumentLocation(),sslRedirector());Search.searchEventHandler("SearchButtonClicked",querySerializer,currentFilterSettings,searchPageRedirector);};Search.legacySignedInHomeBootstrapper=function()
{var advancedSearch=Search.advancedSearch(Search.basicSearch());advancedSearch.init();var mediaFilter=Search.mediaSelector();mediaFilter.init();var filterSelector=Search.filterSelector();filterSelector.init();var savedSettings=Search.savedSettings();var currentFilterSettings=Search.createCurrentFilterSettings(filterSelector,savedSettings);var collectionsSelector=Search.collectionsSelector();collectionsSelector.init();var collectionsCookie=Search.specialCollectionsCookie();var modal=new SpecialCollectionsModal();var specialCollections=Search.signedInHomePageSpecailCollections(collectionsCookie,modal);specialCollections.init();var collectionsProvider=Search.specialCollectionProvider(collectionsSelector,specialCollections);var querySerializer=Search.querySerializer(advancedSearch,mediaFilter,filterSelector,collectionsProvider);var searchPageRedirector=Search.searchPageRedirector(new DocumentLocation(),sslRedirector());Search.searchEventHandler("SearchButtonClicked",querySerializer,currentFilterSettings,searchPageRedirector);};