
var Search=Search||{};var SearchTopBar=SearchTopBar||{};Search.Globals=Search.Globals||{};

Search.searchEventHandler=function(eventName,searchQueryBuilder,currentFilterSettings,requestExecutor){Search.delayedSearchEventHandler(eventName,searchQueryBuilder,currentFilterSettings,requestExecutor,0);};Search.delayedSearchEventHandler=function(eventName,searchQueryBuilder,currentFilterSettings,requestExecutor,delay){currentFilterSettings=currentFilterSettings||{commit:function(){;}};$(document).bind(eventName,function(e,args){currentFilterSettings.commit();var query=searchQueryBuilder.build(e,args);if(delay>0){var searchDelay=function(){setTimeout(function(){requestExecutor.execute(query);},delay);};searchDelay();}
else{requestExecutor.execute(query);}});};

Search.basicSearchQueryBuilder=function(basicSearch)
{var that={};that.build=function()
{return basicSearch.text();};return that;};

Search.searchPageRedirector=function(documentLocation,sslRedirector)
{var that={};that.execute=function(query)
{var baseUrl=documentLocation.Protocol()+"//"+documentLocation.Host();var nonSecureBaseUrl=sslRedirector.ToNonSecureUrl(baseUrl);documentLocation.ChangeLocation(nonSecureBaseUrl+"/search/#"+query);};return that;};

Search.createCurrentFilterSettings=function(settingsSource,settingsStore)
{var that={};that.includeHorizontal=function()
{return settingsSource.horizontalChecked();}
that.includeVertical=function()
{return settingsSource.verticalChecked();}
that.excludeNudity=function()
{return settingsSource.excludeNudityChecked();}
that.includeWhiteBackgroundOnly=function()
{return settingsSource.whiteBackgroundOnlyChecked();}
that.commit=function()
{if(this.excludeNudity())
settingsStore.setExcludeNudity();else
settingsStore.setIncludeNudity();}
return that;};

Search.savedSettings=function()
{var that={};var NONUDITY_KEY="nonudity";var getCookie=function()
{return CookieManager.getCookie(CookieManager.SavedSettingsCookieName);};var setCookie=function(key,value)
{var cookie=getCookie();cookie.setValue(key,value);cookie.save(true);};that.setIncludeNudity=function()
{setCookie(NONUDITY_KEY,"0");};that.setExcludeNudity=function()
{setCookie(NONUDITY_KEY,"1");};that.excludeNudity=function()
{var cookie=getCookie();return cookie.getValue(NONUDITY_KEY)==="1";};return that;}

Search.filterSelector=function()
{var that={};var horizontal=$("#Horizontal");var vertical=$("#Vertical");var excludeNudity=$("#ExcludeNudity");var whiteBackgroundOnly=$("#WhiteBackgroundOnly");var reset=function()
{horizontal.check();vertical.check();excludeNudity.uncheck();whiteBackgroundOnly.uncheck();};var noOrientationChecked=function()
{return!horizontal.isChecked()&&!vertical.isChecked();};that.init=function()
{$(document).bind("SearchComplete",function(args)
{if(args.filters)
{horizontal.setCheckState(args.filters.Horizontal);vertical.setCheckState(args.filters.Vertical);excludeNudity.setCheckState(args.filters.ExcludeNudity);whiteBackgroundOnly.setCheckState(args.filters.WhiteBackgroundOnly);}
if(noOrientationChecked())
{horizontal.check();vertical.check();}});$(document).bind("ResetSearchFilters",function()
{reset();});};that.horizontalChecked=function()
{return horizontal.isChecked()||noOrientationChecked();};that.verticalChecked=function()
{return vertical.isChecked()||noOrientationChecked();};that.excludeNudityChecked=function()
{return excludeNudity.isChecked();};that.whiteBackgroundOnlyChecked=function()
{return whiteBackgroundOnly.isChecked();};return that;};Search.savedFilters=function(savedSettingsStore)
{var that={};that.horizontalChecked=function()
{return true;};that.verticalChecked=function()
{return true;};that.whiteBackgroundOnlyChecked=function()
{return false;};that.excludeNudityChecked=function()
{return savedSettingsStore.excludeNudity();};return that;};

function MediaFilterController(photography,illustration,vector)
{this.PhotoFilter=photography;this.IllFilter=illustration;this.VectorFilter=vector;}
MediaFilterController.prototype={Init:function()
{var context=this;this.VectorFilter.click(function()
{context.PhotoFilter.uncheck();context.IllFilter.check();});this.PhotoFilter.click(function()
{context.VectorFilter.uncheck();});this.IllFilter.click(function()
{context.VectorFilter.uncheck();});}};Search.mediaSelector=function()
{var that={};var photography=$("#Photography");var illustration=$("#Illustration");var vector=$("#Vector");var reset=function()
{vector.uncheck();photography.check();illustration.check();};that.init=function()
{new MediaFilterController(photography,illustration,vector).Init();$(document).bind("SearchComplete",function(args)
{if(args.filters)
{photography.setCheckState(args.filters.Photography);illustration.setCheckState(args.filters.Illustrations);vector.setCheckState(args.filters.VectorEPS);}});$(document).bind("ResetSearchFilters",function()
{reset();});};that.photographyChecked=function()
{return photography.isChecked();};that.illustrationChecked=function()
{return illustration.isChecked();};that.vectorChecked=function()
{return vector.isChecked();};return that;};Search.defaultMediaSelector=function()
{var that={};that.photographyChecked=function()
{return true;};that.illustrationChecked=function()
{return true;};that.vectorChecked=function()
{return false;};return that;};

Search.collectionsSelector=function()
{var that={};var title=$("#CollectionsTitle");var collectionsSection=$("#CollectionsSection");var collectionsSelect=$("#CollectionsSelect");var selectAll=$("#SelectAllCollections");var selectNone=$("#SelectNoCollections");var titleOnClick=function(e)
{if(collectionsSection.hasClass("hidden"))
{collectionsSection.removeClass("hidden");title.addClass("highlightedArrowExpanded");title.removeClass("highlightableArrowCollapsed");}
else
{collectionsSection.addClass("hidden");title.addClass("highlightableArrowCollapsed");title.removeClass("highlightedArrowExpanded");}};var selectAllClick=function()
{that.selectAll();};var selectNoneClick=function()
{that.selectNone();};var select=function(collections)
{for(var i=collections.length-1;i>=0;i--)
{collectionsSelect.find("option[value="+collections[i]+"]").attr("selected","selected");}};var getSelectedCollections=function()
{return collectionsSelect.children(":selected");};that.init=function()
{title.click(titleOnClick);selectAll.click(function(e)
{selectAllClick();e.preventDefault();});selectNone.click(function(e)
{selectNoneClick();e.preventDefault();});$(document).bind("BeginSearch.CollectionsSelector",function()
{if(that.noneSelected())
{that.selectAll();}});$(document).bind("SearchComplete",function(args)
{if(args.collections)
{that.selectNone();var collections=args.collections.split(",");select(collections);}});$(document).bind("ResetSearchFilters",function()
{that.selectAll();});};that.removeBeginSearchEventHandler=function()
{$(document).unbind("BeginSearch.CollectionsSelector");};that.getSelected=function()
{var selected=[];getSelectedCollections().each(function()
{selected.push(this.value);});return selected.join(",");};that.selectAll=function()
{var options=collectionsSelect.children();for(var i=options.length-1;i>=0;i--)
{$(options[i]).attr("selected","selected");}};that.all=function()
{var selected=[];collectionsSelect.children().each(function()
{selected=selected.concat($(this).val());});return selected.join(",");};that.noneSelected=function()
{return getSelectedCollections().length===0;};that.selectNone=function()
{collectionsSelect.children().removeAttr("selected");};return that;};Search.defaultCollectionsSelector=function()
{var that={};that.getSelected=function()
{return"";}
return that;}

Search.querySerializer=function(basicSearch,mediaSelector,filterSelector,collectionsSelector)
{var that={};var terms=function()
{var searchTerms=basicSearch.text();if(basicSearch.excludeTerm&&basicSearch.excludeTerm())
{searchTerms+="/!"+basicSearch.excludeTerm();}
return searchTerms;};var selectedFilters=function()
{var filters="/f=";if(mediaSelector.photographyChecked())
{filters+="P";}
if(mediaSelector.illustrationChecked())
{filters+="I";}
if(mediaSelector.vectorChecked())
{filters+="E";}
if(filterSelector.whiteBackgroundOnlyChecked())
{filters+="W";}
if(filterSelector.horizontalChecked())
{filters+="H";}
if(filterSelector.verticalChecked())
{filters+="V";}
if(filterSelector.excludeNudityChecked())
{filters+="X";}
return filters;};var selectedCollections=function()
{var collections=collectionsSelector.getSelected();if(collections.length>0)
{return"/c="+collections;}
return"";};that.build=function()
{var serializedQuery=terms()+selectedFilters()+selectedCollections();return serializedQuery;};return that;};

Search.basicSearch=function()
{var that={};var input=$(".searchInput");var button=$(".searchButton");var searchContainer=$(".searchContainer");var defaultTextColor="defaultSearchTextColor";var defaultText=searchContainer.attr("defaultText");var errorTextClass="ErrorSearchText";var errorText=searchContainer.attr("errorMsg");var onBlur=function()
{setTimeout(function()
{if(inputIsEmpty())
{input.addClass(defaultTextColor);input.val(defaultText);}},500);};var onFocus=function()
{if(inputIsErrorMessageText())
{resetInput();}
else if(!inputIsDefaultText())
{input.select();}};var resetInput=function()
{input.val("");removeErrorStyle();};var onInputClick=function()
{if(isKnownMessage())
{resetInput();}};var isKnownMessage=function()
{return inputIsDefaultText()||inputIsErrorMessageText();};var onKeydown=function(event)
{if(Core.IsAlphaNumeric(event.keyCode)||Core.IsEnterKey(event.keyCode))
{input.removeClass(defaultTextColor);if(Core.IsEnterKey(event.keyCode))
{_executeSearch();}
else if(isKnownMessage())
{input.val("");input.select();removeErrorStyle();}}};var _executeSearch=function()
{validate();if(inputIsErrorMessageText())
{return;}
if(textWasEntered())
{$(document).trigger("SearchButtonClicked");}};var displayError=function()
{searchContainer.addClass(errorTextClass);input.addClass(errorTextClass);input.val(errorText);};var validate=function()
{if(!textWasEntered())
{displayError();}};that.executeSearch=function()
{_executeSearch();};var onButtonClick=function()
{_executeSearch();};var setFocus=function()
{var hasFocus=Boolean(parseInt(searchContainer.attr("hasFocus"),10));if(defaultText===""&&hasFocus===true)
{input.focus();}
else if(defaultText!==""&&hasFocus===true)
{input.addClass(defaultTextColor);input.val(defaultText);input.setCursorPosition(0,0);}
else if(defaultText!==""&&hasFocus===false)
{input.addClass(defaultTextColor);input.val(defaultText);}};var resize=function()
{var containerMaxWidth=Math.max(searchContainer.outerWidth(true),searchContainer.outerWidth());var inputMaxWidth=Math.max(input.outerWidth(true),input.outerWidth());var buttonMaxWidth=Math.max(button.outerWidth(true),button.outerWidth());var containerWidthDiff=containerMaxWidth-searchContainer.width();var inputWidthDiff=inputMaxWidth-input.width();input.width((searchContainer.attr("maxWidth")-(containerWidthDiff+inputWidthDiff+buttonMaxWidth))+"px");};var isSame=function(val)
{return jQuery.trim(input.val())===val;};var inputIsEmpty=function()
{return isSame("");};var inputIsDefaultText=function()
{return isSame(defaultText);};var inputIsErrorMessageText=function()
{return isSame(errorText);};var removeErrorStyle=function()
{searchContainer.removeClass(errorTextClass);input.removeClass(errorTextClass);};var initHandlerSearchComplete=function()
{$(document).bind("SearchComplete",function(args)
{input.val(htmlDecode(args.currentTerm));input.focus();removeErrorStyle();});};var textWasEntered=function()
{return!inputIsEmpty()&&!inputIsDefaultText();};var htmlDecode=function(term)
{if(term)return $('<div/>').html(term).text();return"";};that.init=function()
{resize();button.click(onButtonClick);input.blur(onBlur);input.focus(onFocus);input.click(onInputClick);input.keydown(onKeydown);setFocus();initHandlerSearchComplete();};that.removeSlashes=function(term)
{return term.replace(/\//g," ");};that.text=function()
{return that.removeSlashes(input.val());};return that;};Search.advancedSearch=function(basicSearch){var exclude=$("#ExcludeTerm");var searchWithin=$("#SearchWithin");var that=basicSearch;var baseInit=that.init;var onKeyDown=function(e){if(Core.IsEnterKey(e.keyCode)){that.executeSearch();}};that.init=function(){baseInit();exclude.keydown(onKeyDown);$(document).bind("SearchComplete",function(args){searchWithin.uncheck();});};that.isSearchWithin=function(){return searchWithin.isChecked();};that.excludeTerm=function(){return that.removeSlashes(exclude.val());};that.clearExcludeTerm=function(){exclude.val('');}
return that;};Search.basicSearchBootstrapper=function(){var basicSearch=Search.basicSearch();basicSearch.init();var basicSearchQueryBuilder=Search.querySerializer(basicSearch,Search.defaultMediaSelector(),Search.savedFilters(Search.savedSettings()),Search.defaultCollectionsSelector());var searchPageRedirector=Search.searchPageRedirector(new DocumentLocation(),sslRedirector());if(typeof OttContentController!="undefined"&&OttContentController.omnitureEventsRegistered){$(document).bind("SearchButtonClicked",function(){OttContentController.omnitureClick("SearchButton");});var basicSearchEventHandler=Search.delayedSearchEventHandler("SearchButtonClicked",basicSearchQueryBuilder,null,searchPageRedirector,100);}
else{var basicSearchEventHandler=Search.searchEventHandler("SearchButtonClicked",basicSearchQueryBuilder,null,searchPageRedirector);}};

Search.refinementsHandler=function(){var that={};var searchCompleteHandler=function(data){if(Search.CurrentSearchType=="Paging")
return;var refinements=Spark.search._SearchRefinements.RenderView({"refinements":data.refinements,"newCallout":data.newCallout})
$("#SearchSideBar>#Refinements").remove();$("#SearchSideBar").append("<div id=\"Refinements\">"+refinements+"</div");hookUpArrowHandlers();}
var hookUpArrowHandlers=function(){$("#SearchSideBar>#Refinements .arrowTarget").click(handleArrowClick);$("#SearchSideBar>#Refinements .refinementItem").click(handleRefinementClick);}
var handleArrowClick=function(e){var target=$(e.target);if(!target.hasClass("sectionTitle"))
target=target.parent();if(target.hasClass("highlightedArrowExpanded")){target.removeClass("highlightedArrowExpanded");target.addClass("highlightableArrowCollapsed");Search.setSideBarSectionOpen(this.id,false);target.next().hide();}
else if(target.hasClass("highlightableArrowCollapsed")){target.removeClass("highlightableArrowCollapsed");target.addClass("highlightedArrowExpanded");Search.setSideBarSectionOpen(this.id,true);target.next().show();}
else if(target.hasClass("arrowCollapsed")){target.removeClass("arrowCollapsed");target.addClass("arrowExpanded");Search.setSideBarSectionClosed(this.id,false);target.next().show();}
else{target.removeClass("arrowExpanded");target.addClass("arrowCollapsed");Search.setSideBarSectionClosed(this.id,true);target.next().hide();}}
var handleRefinementClick=function(e){var target=$(e.target);var refinement={"id":target.attr("id"),"text":target.attr("txt"),"category":target.attr("cat")};$().trigger("RefinementClicked",refinement);}
that.init=function(){$().bind("SearchComplete",searchCompleteHandler);}
return that;}
Search.inList=function(cookie,sectionId)
{return $.inArray(sectionId,Search.getSideBarSections(cookie))!=-1;};Search.getSideBarSections=function(cookie){var Sections=CookieManager.getCookie(CookieManager.SavedSessionSettingsCookieName).getValue(cookie);if(Sections)return Sections.split("|");return new Array();}
Search.setSideBarSectionOpen=function(sectionId,isAdd){Search.setSideBarSection("OpenSections",sectionId,isAdd);}
Search.setSideBarSectionClosed=function(sectionId,isAdd){Search.setSideBarSection("ClosedSections",sectionId,isAdd);}
Search.setSideBarSection=function(cookie,sectionId,isAdd){var Sections=Search.getSideBarSections(cookie);if(isAdd){if(!Search.inList(cookie,sectionId))
Sections.push(sectionId);}
else{if(Search.inList(cookie,sectionId))
Sections.splice($.inArray(sectionId,Sections),1);}
var cookieWriter=CookieManager.getCookie(CookieManager.SavedSessionSettingsCookieName);cookieWriter.setValue(cookie,Sections.join("|"));cookieWriter.save();};