var Doc={GetNamedElements:function(elementName){return document.getElementsByName(elementName);},GetNamedElement:function(elementName){return this.GetNamedElements(elementName)[0];},GetElement:function(elementId){return document.getElementById(elementId);},GetListElements:function(listId){var list=this.GetElement(listId);return list.getElementsByTagName("LI");},ShowElem:function(elementId,display){if(!display){display="block"}
this.SetElemDisplay(elementId,display)},HideElem:function(elementId){this.SetElemDisplay(elementId,"none")},ToggleElemDisplay:function(elementId,showDisplay){var elem=Doc.GetElement(elementId);var newDisplay;if(elem){var currentDisplay=elem.style.display;if(currentDisplay=="none")
{if(showDisplay){newDisplay=showDisplay}else{newDisplay="block"}}else{newDisplay="none"}
elem.style.display=newDisplay;}},SetElemDisplay:function(elementId,display){var elem=Doc.GetElement(elementId);if(elem){elem.style.display=display}},SetElemHTML:function(elementId,htmlString){var elem=Doc.GetElement(elementId);if(elem){elem.innerHTML=htmlString;}},SetElemValue:function(elementId,value){var elem=Doc.GetElement(elementId);if(elem){elem.value=value;}}};function parseUri(sourceUri){var uriPartNames=["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];var uriParts=new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);var uri={};for(var i=0;i<10;i++){uri[uriPartNames[i]]=(uriParts[i]?uriParts[i]:"");}
if(uri.directoryPath.length>0){uri.directoryPath=uri.directoryPath.replace(/\/?$/,"/");}
return uri;}
function NavigateTo(url){var uriData=parseUri(url);if(window.location.protocol==uriData.protocol+":"&&window.location.pathname==uriData.path&&window.location.host==uriData.authority&&window.location.search==uriData.query)
{window.location.href=url;window.location.reload(true);}else{window.location.href=url;}}
function ShowStatus(msg){window.status=msg;}
function CalcRandom(){var retVal=Math.floor(Math.random()*1001);return retVal;}
function CheckExpired(){var request=CreateXmlHttpRequest();request.open("GET","/check_expired?rand="+CalcRandom(),true);request.onreadystatechange=function(){if(request.readyState==4){if(request.status==200){;}else if(request.status==403){if(window.location.href==request.responseText){window.location.hash="#popups=logged_out";window.location.reload();}else{window.location.href=request.responseText+"#popups=logged_out";}}}}
request.setRequestHeader("Cookie","");request.send(null);}
function IndexOfArrayElement(array,object){for(var i=0,length=array.length;i<length;i++){if(array[i]==object)return i;}
return-1;}
function RemoveArrayElement(array,object){var index=IndexOfArrayElement(array,object);if(index==-1){return;}else{array.splice(index,1);}}
function ArrayHasElement(array,object){return IndexOfArrayElement(array,object)>-1;}
function ConcatObjects(object1,object2){var newObject=object1;for(var key in object2){newObject[key]=object2[key]}
return newObject}
function UrlSub(url,keyword,value){newUrl=url.replace(":"+keyword,value);return newUrl;}
function UrlSubs(url,keywords,values){var newUrl=url;for(var i=0;i<keywords.length;i++){keyword=keywords[i]
value=values[i]
newUrl=newUrl.replace(":"+keyword,value);}
return newUrl;}
var SiteSearch={filterSection:"everywhere",timeoutId:null,kMenuTimeout:2000,_FixSections:function(){var searchSections=["everywhere","photography","illustration","thedatabase"]
for(var i=0;i<searchSections.length;++i){var link=document.getElementById("ss_"+searchSections[i]);if(link){if(this.filterSection==searchSections[i]){link.className="selected";}else{link.className="";}}}},ToggleSectionPopup:function(){var sectionPopup=document.getElementById("searchFloat");this._FixSections();if(sectionPopup){if(sectionPopup.style.display=="block"){this.StopTimeout();sectionPopup.style.display="none";}else{sectionPopup.style.display="block";}}},ClosePopup:function(){this.timeoutId=null;var sectionPopup=document.getElementById("searchFloat");sectionPopup.style.display="none";},StartTimeout:function(){this.timeoutId=setTimeout(this.ClosePopup,this.kMenuTimeout);},StopTimeout:function(){if(this.timeoutId!=null){clearTimeout(this.timeoutId);this.timeoutId=null;}},ResetTimeout:function(){clearTimeout(this.timeoutId);this.timeoutId=setTimeout(this.ClosePopup,this.kMenuTimeout);},CancelPopup:function(){this.StopTimeout();this.ClosePopup();},ClearSearch:function(){var searchText=document.getElementById("searchText").value;if(searchText=="enter name"){document.getElementById("searchText").value="";}},FillSearch:function(){var searchText=document.getElementById("searchText").value;if(searchText==""){document.getElementById("searchText").value="enter name";}},SetSection:function(section){this.filterSection=section;this._FixSections();this.StopTimeout();var sectionPopup=document.getElementById("searchFloat");sectionPopup.style.display="none";},SetSectionAndSubmit:function(section){this.SetSection(section);var searchText=document.getElementById("searchText").value;if(searchText!=""&&searchText!="enter name"){this.Search();}},Search:function(){this.StopTimeout();var searchText=document.getElementById("searchText").value;if(searchText!=""){PopupWindow.Register('siteSearch',{url:"/search?section="+escape(this.filterSection)+"&text="+escape(searchText),isDialog:true,fixTimeout:20000});PopupWindow.CreateRegistered('siteSearch');}},KeyPress:function(event){event=Events.FixEvent(event);var key;if(event.keyCode){key=event.keyCode;}else if(event.which){key=event.which;}
if(key==13){SiteSearch.Search();event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();if(event.preventDefault)event.preventDefault();return false;}else{return true;}}};function FakeButtonSubmit(id,value){var button=document.getElementById(id);var parent=button?button.parentNode:null;var form=null;while(parent){if(parent.nodeType==1&&parent.nodeName.toLowerCase()=="form"){form=parent;break;}else{parent=parent.parentNode;}}
if(form){var hiddenInput=null;if(button.name){hiddenInput=document.createElement("input");hiddenInput.type="hidden";hiddenInput.name=button.name;hiddenInput.value=value;form.appendChild(hiddenInput);}
form.submit();if(hiddenInput){form.removeChild(hiddenInput);}}}
function Ellipsize(str,limit){if(str.length<limit){return str}else{return str.slice(0,limit)+"...";}}
function GetParentForm(elem){var result=elem.parentNode;while(result){if(result.nodeType==1&&result.nodeName.toLowerCase()=="form"){return result;}else{result=result.parentNode;}}
return null;}
var gPendingButtons={};function IsFancyButtonEnabled(btn)
{var elem=(typeof btn==="string")?document.getElementById(btn):btn;if(elem){return elem.className==="btnSubmit"||elem.className==="btnReset";}else{return false;}}
function DisableFancyButton(btn)
{var elem=(typeof btn==="string")?document.getElementById(btn):btn;if(elem){if(IsFancyButtonEnabled(elem)){elem.className=(elem.className==="btnSubmit")?"btnSubmitInactive":"btnResetInactive";gPendingButtons[elem.id]=elem.href;elem.href="javascript:void(0)";}}}
function EnableFancyButton(btn)
{var elem=(typeof btn==="string")?document.getElementById(btn):btn;if(elem){if(!IsFancyButtonEnabled(elem)){elem.href=gPendingButtons[elem.id];delete gPendingButtons[elem.id];elem.className=(elem.className=="btnSubmitInactive")?"btnSubmit":"btnReset";}}}
var xmlHttpFactories=[function(){return new XMLHttpRequest();},function(){return new ActiveXObject("Msxml2.XMLHTTP");},function(){return new ActiveXObject("MSxml3.XMLHTTP");},function(){return new ActiveXObject("Microsoft.XMLHTTP");}];function CreateXmlHttpRequest(){var xmlHttp=null;for(var i=0;i<xmlHttpFactories.length;++i){try{xmlHttp=xmlHttpFactories[i]();}
catch(e){continue;}
break;}
return xmlHttp;}
postSuccessCodes=[200,201,204,304,1223];getSuccessCodes=[200,201,204,304,1223];function GetSucceeded(status){return ArrayHasElement(getSuccessCodes,status);}
function PostSucceeded(status){return ArrayHasElement(postSuccessCodes,status);}
function EncodeFormElements(form){var params="";for(var i=0;i<form.elements.length;i=i+1){if(form.elements.item(i).name){if(params!="")params+="&";if(form.elements.item(i).type=="checkbox"){if(form.elements.item(i).checked){params+=form.elements.item(i).name+"=on";}else{params+=form.elements.item(i).name+"=off";}}else if(form.elements.item(i).type=="radio"){if(form.elements.item(i).checked){params+=form.elements.item(i).name+"="+escape(form.elements.item(i).value);}}else{params+=form.elements.item(i).name+"="+escape(form.elements.item(i).value);}}}
params=params.replace("+","%2b")
params=params.replace("%20","+")
return params;}
function ajaxPostForm(form,path,callback,callbackParams){params=EncodeFormElements(form);var request=CreateXmlHttpRequest();request.open("POST",path,true);request.onreadystatechange=function(){if(request.readyState==4){if(callbackParams){callback(request,callbackParams);}else{callback(request);}}}
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");request.setRequestHeader("Content-length",params.length);request.setRequestHeader("Connection","close");request.send(params);}
function ajaxPostData(url,data,successHandler,errorHandler,mimeType){var request=CreateXmlHttpRequest();request.open("POST",url,true);request.onreadystatechange=function(){if(request.readyState==4){if(ArrayHasElement(postSuccessCodes,request.status)){if(successHandler){successHandler(request.responseText);}}else{if(errorHandler){errorHandler(request.status,request.responseText);}}}}
if(mimeType){request.setRequestHeader("Content-type",mimeType);}else{request.setRequestHeader("Content-type","application/x-www-form-urlencoded");}
request.setRequestHeader("Content-length",data.length);request.setRequestHeader("Connection","close");request.send(data);return false;}
function ajaxGet(url,successHandler,errorHandler,callbackParms){var request=CreateXmlHttpRequest();request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState==4){if(ArrayHasElement(getSuccessCodes,request.status)){if(successHandler){if(callbackParms){successHandler(request.responseText,callbackParms)}else{successHandler(request.responseText)}}}else{if(errorHandler){if(callbackParms){errorHandler(request.status,request.responseText,callbackParms);}else{errorHandler(request.status,request.responseText)}}}}}
request.send(null);}
function HtmlEscape(str){return str.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");}
var _scriptExecuted=false;function RunAjaxScript(responseText,ajaxScriptId,pageScriptId){var head=document.getElementsByTagName("head")[0];var oldScript=document.getElementById(pageScriptId);if(oldScript){head.removeChild(oldScript);}
var fetchScript=document.getElementById(ajaxScriptId);if(fetchScript==null){var re=/<script.*?id=\"([^\"]+)\".*?>([\s\S]*)<\/script>/ig;var match;while(match=re.exec(responseText)){if(match[1]==ajaxScriptId){eval(match[2]);break;}}}else{_scriptExecuted=false;var newScript=document.createElement("script");newScript.type="text/javascript";newScript.id=pageScriptId;newScript.innerHTML=fetchScript.innerHTML;head.appendChild(newScript);if(!_scriptExecuted){eval(fetchScript.innerText);}}}
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;}};
function ToggleFavorite(favType,id,callback){var request=CreateXmlHttpRequest();request.open("POST","/favorites/"+favType+"/"+id+"/toggle");request.onreadystatechange=function(){if(request.readyState==4){if(request.status==200){var result=JSONstring.toObject(request.responseText);if(callback){callback(favType,id,result.status);}}}}
request.send('');}