JSONstring={compactOutput:false,includeProtos:false,includeFunctions:false,detectCirculars:true,restoreCirculars:true,make:function(arg,restore){this.restore=restore;this.mem=[];this.pathMem=[];return this.toJsonStringArray(arg).join('');},toObject:function(x){eval("this.myObj="+x);if(!this.restoreCirculars||!alert){return this.myObj};this.restoreCode=[];this.make(this.myObj,true);var r=this.restoreCode.join(";")+";";eval('r=r.replace(/\\W([0-9]{1,})(\\W)/g,"[$1]$2").replace(/\\.\\;/g,";")');eval(r);return this.myObj},toJsonStringArray:function(arg,out){if(!out){this.path=[]};out=out||[];var u;switch(typeof arg){case'object':this.lastObj=arg;if(this.detectCirculars){var m=this.mem;var n=this.pathMem;for(var i=0;i<m.length;i++){if(arg===m[i]&&arg!=null){out.push('"JSONcircRef:'+n[i]+'"');return out}};m.push(arg);n.push(this.path.join("."));};if(arg){if(arg.constructor==Array){out.push('[');for(var i=0;i<arg.length;++i){this.path.push(i);if(i>0)
out.push(',\n');this.toJsonStringArray(arg[i],out);this.path.pop();}
out.push(']');return out;}else if(typeof arg.toString!='undefined'){out.push('{');var first=true;for(var i in arg){if(!this.includeProtos&&arg[i]===arg.constructor.prototype[i]){continue};this.path.push(i);var curr=out.length;if(!first)
out.push(this.compactOutput?',':',\n');this.toJsonStringArray(i,out);out.push(':');this.toJsonStringArray(arg[i],out);if(out[out.length-1]==u)
out.splice(curr,out.length-curr);else
first=false;this.path.pop();}
out.push('}');return out;}
return out;}
out.push('null');return out;case'unknown':case'undefined':case'function':out.push(this.includeFunctions?arg:u);return out;case'string':if(this.restore&&arg.indexOf("JSONcircRef:")==0){this.restoreCode.push('this.myObj.'+this.path.join(".")+"="+arg.split("JSONcircRef:").join("this.myObj."));};out.push('"');var a=['\n','\\n','\r','\\r','"','\\"'];arg+="";for(var i=0;i<6;i+=2){arg=arg.split(a[i]).join(a[i+1])};out.push(arg);out.push('"');return out;default:out.push(String(arg));return out;}}}
var PortfolioSearchPager={currentPage:1,totalPages:1,searchUrl:"",itemsPerPage:6,itemsPerRow:3,LoadSearchName:function()
{var searchName=document.getElementById('searchName');if(searchName.value=="")
{searchName.value="enter name";}},ClearSearchName:function()
{var searchName=document.getElementById('searchName');if(searchName.value=="enter name")
{searchName.value="";}},LoadPage:function(num,firstPost,onComplete){var owner=this;var url=this.searchUrl+"?page="+num;if(firstPost){url+="&f=yes"}else{url+="&f=no"}
this.ClearSearchName();ajaxPostForm(document.searchForm,url,function(response){document.body.style.cursor="wait";owner.PageLoaded(response);owner.LoadSearchName();if(onComplete){onComplete(num);}});},Smuggle:function(currentPage,totalPages,itemsPerPage,sortOrder,portfolioCount,description){},PageLoaded:function(response){document.body.style.cursor="";if(PostSucceeded(response.status)){var area=document.getElementById("searcharea");var container=document.createElement("div");container.style.display="none";area.appendChild(container);container.innerHTML=response.responseText;var fetchResults=document.getElementById("fetchResults");if(fetchResults){var results=document.getElementById("searchResult");results.innerHTML=fetchResults.innerHTML;}
RunAjaxScript(response.responseText,"fetchResultsScript","resultLoadScript");area.removeChild(container);area.style.display="block";}},NextPage:function(){var newPage=this.currentPage+1;if(newPage>this.totalPages){newPage=this.totalPages;}
if(this.currentPage!=newPage){this.LoadPage(newPage);}},PrevPage:function(){var newPage=this.currentPage-1;if(newPage<1){newPage=1;}
if(this.currentPage!=newPage){this.LoadPage(newPage);}},UpdateRowSelector:function(){var numRows=this.itemsPerPage/this.itemsPerRow;for(var i=2;i<8;++i){var elem=document.getElementById("rowSelect_"+i);if(elem){if(i==numRows){elem.className="activeLink";}else{elem.className="";}}}},UpdateSortSelector:function(order){var elems=["alpha","random","modified"];for(var i=0;i<elems.length;++i){var elem=document.getElementById("sortSelect_"+elems[i]);if(elem){if(elems[i]==order){elem.className="activeLink";}else{elem.className="";}}}},UpdatePrevNextLinks:function(id){var prevLink=document.getElementById(id+"_prev");if(prevLink){if(this.currentPage<=1){prevLink.className="pagerDisabled";}else{prevLink.className="";}}
var nextLink=document.getElementById(id+"_next");if(nextLink){if(this.currentPage>=this.totalPages){nextLink.className="pagerDisabled";}else{nextLink.className="";}}},UpdatePager:function(){var topPager=document.getElementById("portSearchPagerTop");if(topPager){topPager.style.display=(this.totalPages==0)?"none":"";}
var bottomPager=document.getElementById("portSearchPagerBottom");if(bottomPager){bottomPager.style.display=(this.totalPages==0)?"none":"";}
var pagerCurrent=document.getElementById("portSearchPagerTop_current");if(pagerCurrent!=null){pagerCurrent.value=""+this.currentPage;}
var pagerTotal=document.getElementById("portSearchPagerTop_total");if(pagerTotal!=null){pagerTotal.innerHTML=HtmlEscape(""+this.totalPages);}
pagerCurrent=document.getElementById("portSearchPagerBottom_current");if(pagerCurrent!=null){pagerCurrent.value=""+this.currentPage;}
pagerTotal=document.getElementById("portSearchPagerBottom_total");if(pagerTotal!=null){pagerTotal.innerHTML=HtmlEscape(""+this.totalPages);}
this.UpdatePrevNextLinks("portSearchPagerTop");this.UpdatePrevNextLinks("portSearchPagerBottom");},UpdatePageHash:function(){HashMonster.SetParam("page",this.currentPage);},SetRows:function(num){var topElement=this.itemsPerPage*(this.currentPage-1);var newPage=Math.floor(topElement/(num*this.itemsPerRow))+1;var owner=this;var savedParams=[{key:"portfolio.search.show_rows",value:num}];ajaxPostData(kUserPrefsUrl,JSONstring.make(savedParams),function(responseText){owner.LoadPage(newPage);},function(status,responseText){},"application/x-workbook-user-prefs+json");}};function SetLocationSelector(name){var container=document.getElementById("locationSelection");var radios=container.getElementsByTagName("input");for(var i=0;i<radios.length;++i){if(radios[i].type=="radio"&&radios[i].name=="locationSelector"){radios[i].checked=(radios[i].value==name);}}
if(name=="state"){document.searchForm.city.value="";document.searchForm.region.value="";}else if(name=="city"){document.searchForm.state.value="";document.searchForm.region.value="";}else if(name=="region"){document.searchForm.city.value="";document.searchForm.state.value="";}}
function LoadPreviousSearchCriteria(){var elem=document.getElementById("prevSearch");if(elem.value!=""){var url=kPreviousSearchUrl+"?searchId="+escape(elem.value);ajaxGet(url,function(responseText){var responseObj=JSONstring.toObject(responseText);var form=document.searchForm;for(var elem in responseObj){if(elem=="locationSelector"){SetLocationSelector(responseObj[elem]);}else if(/kw.+/.test(elem)){var cb=document.getElementById(elem);cb.checked=(responseObj[elem]=="on");TristateCheckboxes.Update(cb);}else{form.elements[elem].value=responseObj[elem];}}},function(status,responseText){});}}
function SwitchSort(newSort){var sortElem=document.getElementById("alphaSort_"+newSort);sortElem.checked=true;PortfolioSearchPager.LoadPage(PortfolioSearchPager.currentPage);}
var sorting=null;var imagesPerPage=0;var currentPage=1;var numberOfPages=0;var numberOfPortfolios=0;var portfoliosPerPage=0;var portfolioList=null;function ProcessResults(responseObject){portfolioList=responseObject.portfolioItems;numberOfPortfolios=responseObject.numberOfPortfolios;numberOfPages=responseObject.numberOfPages;portfoliosPerPage=responseObject.portfoliosPerPage;maxPageItem=document.getElementById("maxSearchPages")
maxPageItem.innerHTML=numberOfPages;if(numberOfPortfolios>0){DisplaySearchTerms(responseObject.searchTerms);BuildDisplayList();}else{HideSearchAreas()
alert("No Portfolios Match Your Search");}}
function DisplaySearchTerms(searchTerms){ShowSearchAreas()}
function HideSearchAreas(){Doc.GetElement("searcharea").style.display="none";}
function ShowSearchAreas(){Doc.GetElement("searcharea").style.display="block";}
function SubmitPortfolioFavorite(id){var url="/favorites/portfolio/"+id+"/toggle";ajaxGet(url,SubmitPortfolioFavoriteSuccess);}
function SubmitPortfolioFavoriteSuccess(text){resp=JSONstring.toObject(text)
id=resp.elemId;imageElement=Doc.GetElement("portfolio_favoriteImage"+id);textElement=Doc.GetElement("portfolio_favoriteText"+id);if(resp.status){imageElement.style.display="inline";textElement.innerHTML="remove from favorites"}else{imageElement.style.display="none";textElement.innerHTML="add to favorites"}}
function BuildDisplayList(){var portfoliosPerPage=6;var htmlString='<ul id="portfoliosList" class="portfolioResultsList">';var index=0;var currentPortIndex=((currentPage-1)*portfoliosPerPage);var showNumberFound=Doc.GetElement("numberOfPortfolios")
showNumberFound.innerHTML='  '+numberOfPortfolios+' Found';showNumberFound.style.display="inline";while(index<portfoliosPerPage&&currentPortIndex<numberOfPortfolios)
{var portfolio=portfolioList[currentPortIndex];var portId=portfolio.portfolioId;var portString='<li class="portfolioListItem"><div style="float:left;margin:5px;" id="portfolio_'+portId+'">'
portString+='<a href="javascript:void(OpenPortfolioView('+portId+'));">'
portString+='<img width="310" height="207" style="border:0px" src="'+portfolio.thumbnailUrl+'" /></a><br />'
portString+=portfolio.ownerDisplayName
var favoriteString="";if(loggedIn){var favoriteText=""
if(portfolio.portfolioFavorite){favoriteText="remove from favorites"
portString+='<span id="portfolio_favoriteImage'+portId+'">*</span>';}else{favoriteText="add to favorites"
portString+='<span id="portfolio_favoriteImage'+portId+'" style="display:none">*</span>';}
favoriteString+=' | <a href="javascript:void(SubmitPortfolioFavorite('+portId+'))"><span id="portfolio_favoriteText'+portId+'">'+favoriteText+'</span></a>'}
var phoneNumber=portfolio.phoneNumber;if(!phoneNumber){phoneNumber="no phone listed";}
var website=portfolio.website;if(website){website=website['url'];}else{website="no website"}
portString+='<br/>'+phoneNumber+' | '+website
portString+='<br /><a href="javascript:void(OpenPortfolioView('+portId+'));">view portfolio</a>'
portString+=favoriteString;portString+='</div></li>'
htmlString+=portString
index+=1;currentPortIndex+=1;}
htmlString+='</ul>'
var searchResult=document.getElementById("searchResult")
searchResult.innerHTML=htmlString;Doc.GetElement("currentSearchPage").value=currentPage;}
function NextSearchPage(){currentPage+=1;if(currentPage>numberOfPages){currentPage=1;}
BuildDisplayList()}
function PrevSearchPage(){currentPage-=1;if(currentPage<1){currentPage=numberOfPages}
BuildDisplayList()}
function ChangeToPage(){var newPage=Doc.GetElement("currentSearchPage").value;if(newPage<0||newPage>numberOfPages){alert(newPage+" is out of range");Doc.GetElement("currentSearchPage").value=currentPage;}else{currentPage=newPage;BuildDisplayList()}}
PopupWindow.Register("portfolio_details",{title:"Portfolio",fixedY:50,titleClass:"portViewerPopupTitle",preLoad:PreloadPortfolioDetails,onClose:ResetHash});PopupWindow.Register("portfolio_details_1",{title:"Portfolio",url:"/portfolio/viewdetails/1",fixedY:50,titleClass:"portViewerPopupTitle",preLoad:PreloadPortfolioDetails,onClose:ResetHash});PopupWindow.Register("artist_rep_roster",{title:"Roster",fixedY:50,titleClass:"portViewerPopupTitle",preLoad:PreloadArtRepDetails,onClose:ResetHash});function PreloadPortfolioDetails(params){var url=FullViewUrl(params.portfolioId,params.galleryId);params.url=url;}
function PreloadArtRepDetails(params){var url=FullRosterUrl(params.repId);params.url=url;}
function ResetHash(){HashMonster.ClearParam("portfolioId");HashMonster.ClearParam("galleryId");HashMonster.ClearParam("repId");}
function OpenPortfolioView(portfolioId,galleryId){PopupWindow.CreateRegistered("portfolio_details",false,{portfolioId:portfolioId,galleryId:galleryId});}
function OpenRosterView(repId){PopupWindow.CreateRegistered("artist_rep_roster",false,{repId:repId});}
function ShowAllSearchResults(response){ShowSearchResultsContents(response)}
function ShowPortfolioSearchResultsContents(text){var responseObject=JSONstring.toObject(text)
ProcessResults(responseObject);}
function PortViewerFindWindow()
{if(document.getElementById('portfolio_details')){return window;}else{var popups=PopupWindow._openPopups;for(var i=0;i<popups.length;++i){var popup=popups[i];var theDocument=window.frames[popup.iframe.name].document;if(theDocument.getElementById("portfolio_details")){var theWindow=window.frames[popup.iframe.name];if(window.frames[popup.iframe.name].contentWindow){theWindow=window.frames[popup.iframe.name].contentWindow;}
return theWindow;}}}}
function PortPrevOrNextImage(tag)
{var viewer=PortViewerFindWindow();viewer.PrevOrNextImage(tag);}
function PortSingleView()
{var viewer=PortViewerFindWindow();viewer.ToggleImageMode('single');}
function PortThumbView()
{var viewer=PortViewerFindWindow();viewer.ToggleImageMode('thumbnail');}
function PortToggleCaption()
{var viewer=PortViewerFindWindow();viewer.ToggleShowCaption();}
var HashMonster={GetParam:function(name,defaultValue){var params=this._ParseHash();if(typeof params[name]!='undefined'){return params[name];}
if(typeof defaultValue!='undefined'){return defaultValue;}else{return null;}},SetParam:function(name,value){var params=this._ParseHash();params[name]=value;var newHash=this._EncodeHash(params);document.location.hash=newHash;},ClearParam:function(name){var params=this._ParseHash();delete params[name];var newHash=this._EncodeHash(params);document.location.hash=newHash;},ClearAllParams:function(){document.location.hash="#";},_EncodeHash:function(params){var partials=new Array();for(var item in params){partials.push(escape(item)+"="+escape(params[item]));}
partials.sort();return"#"+partials.join("&");},_ParseHash:function(){var hash=document.location.hash;if(hash==""||hash=="#"){return new Object();}else if(hash.charAt(0)=="#"){hash=hash.substr(1);}
var params=hash.split("&");var result=new Object();for(var i=0;i<params.length;++i){var kv=params[i].split("=");if(kv.length!=2){continue;}
k=unescape(kv[0]);v=unescape(kv[1]);result[k]=v;}
return result;}};