var TabContainer=Class.create({initialize:function(c,e){var b=null;this._tabs=[];var d=this._tabClick.bindAsEventListener(this);var a=/\/.+#([^\/]+$)/;e=$(e);$(c).select("li").each((function(f){f._a=f.select("a")[0];f._span=f._a.select("span")[0];var g=a.exec(f._a.href);var h=$(g[1]);if(h==e){b=f}f._content=h;this._tabs.push(f);f.observe("click",d)}).bind(this));[$(b)._a,$(b)._span].invoke("addClassName","active");$(b)._content.show()},_tabClick:function(b){var a=Event.findElement(b,"li");if(a._content.visible()){return}var c=this._tabs.find(function(d){return d._a.hasClassName("active")});if(c){[c._a,c._span].invoke("removeClassName","active");c._content.hide()}[a._a,a._span].invoke("addClassName","active");a._content.show().fire("tab:opened");b.stop()}});var Filter=Class.create({initialize:function(a){this._setDefaults();this._filter=a||{};this._activeRequest=null},getFilter:function(){return this._filter},getDefaults:function(){return this._defaults},isFiltered:function(){var b=this._defaults;var a=$H(this._filter).find(function(c){if(c.value!=b[c.key]&&c.key!="start"&&c.key!="count"){return true}});return !!a},exec:function(d,a){if(this._activeRequest){this._activeRequest.transport.abort()}document.fire("filter:start");if(d){if(!Object.isArray(d)){d=new Array(d)}}else{d=setToolbox(null)}d.inject(this._filter,this._filterClause,this);a=a||false;var c=null;if(this._filter.keep_start){c=this._filter.keep_start;delete this._filter.keep_start}var e=this.serialize();var b={method:"get",parameters:Object.clone(this._filter)};delete this._filter.before;delete this._filter.after;if(c){this.filter.start=c}if(a){b.parameters.debug=1}b.onSuccess=function(f){this._activeRequest=null;document.fire("filter:complete",$A(f.responseJSON));pageTracker._trackPageview("adoptable.php?"+e)};b.onFailure=function(f){this._activeRequest=null;alert("Ajax error: "+f.statusText)};this._activeRequest=new Ajax.Request("/filters/filter-cats4.php",b)},serialize:function(){return $H(this._filter).toQueryString()},toText:function(c){var d="";var b=this;var a=(c?"<br />":"\n");$H(this._defaults).merge(this._filter).each(function(g){if(b._textDesc[g.key]){try{d+=a+b._parmToText.bind(b)(g.key,g.value,c)}catch(h){var f=h.description;if(!f){f=h.message}alert(f)}}});return d},_parmToText:function(d,c,b){var a;if(this._textDesc[d].multiple){a=this._multipleToText(d,c)}else{a=this._textDesc[d][c]}if(b&&c!=this._defaults[d]){return"<b>"+d.toUpperCase()+": "+a+"</b>"}else{return d.toUpperCase()+": "+a}},_multipleToText:function(e,c,b){var a=" OR ";var d=this._textDesc[e];if(this._filter[d.multiple]=="all"){a=" AND "}c=c.split(",");return c.inject("",function(g,f){if(g.length>0){g+=a}return g+d[f]})},_setDefaults:function(){this._defaults=DEFAULT_VALUES;this._textDesc=DESCRIPTIONS},_filterClause:function(c,a){var e;switch(a.id){case"filter-email":case"set-registered-filter":case"get-registered-filter":case"delete-registered-filter":case"keep_start":return c;case"sort":case"gender":case"status":e=$F(a);if(this._ignoreClause(a.id,e)){return c}c[a.id]=e;c.start=0;return c;case"age":case"breed":case"color":case"marking":case"personality":e=$F(a);if(!Object.isArray(e)){e=new Array(e)}c.start=0;if(e.include(this._defaults[a.id])){delete c[a.id];delete this._filter[a.id];return c}e=e.join(",");c[a.id]=e;var d=$("toolbox")[a.className];if(d.length==undefined){d=new Array(d)}var b=$A(d).find(function(f){return f.checked});c[a.className]=b.value;return c;case"start":case"count":case"before":case"after":e=a.value;c[a.id]=e;return c;default:if(a.type!="radio"){alert("Unexpected elt ("+a.id+"): "+$H(a).inspect());return c}if(!a.checked){return c}e=a.value;if(this._ignoreClause(a.name,e)){return c}c[a.name]=e;c.start=0;return c}},_ignoreClause:function(b,a){if(this._filter[b]&&a==this._filter[b]){return true}if(!this._filter[b]&&a==this._defaults[b]){return true}return false}});var Current={page:1,nrecs:undefined,npages:undefined,filter:undefined,CPP:10};var debug=false;document.observe("dom:loaded",function(){new TabContainer("toolbox","basic-tab");$("collapse-tab","expand-tab").invoke("observe","click",controlTab);$("system-defaults").observe("click",function(a){if(confirm("Are you sure you want to reset all values to their defaults?")){Current.filter.exec(setToolbox(null),debug);setFilteredMesg(false)}a.stop()});$("remove-default-filter").observe("click",removeDefaultFilter);$("apply-default-filter").observe("click",applyDefaultFilter);if(!GetCookie("default-filter")){defaultButtons("disable")}$$("a.cat-href").invoke("observe","click",catHref);clearCats();document.observe("filter:complete",updateCats);document.observe("filter:start",clearCats);Current.filter=new Filter();Current.filter.exec(getEntryFilter(),debug);Current.page=1;setFilteredMesg();$("current-page").observe("change",function(a){gotoPage($F(Event.element(a)))});$$(".next-page, .prev-page").invoke("observe","click",function(b){var a=Event.findElement(b,"div");if(a.hasClassName("prev-page")){gotoPage(Current.page-1)}else{gotoPage((Current.page|0)+1)}b.stop()});setHandlers()});function defaultButtons(a){$("apply-default-filter","remove-default-filter").each(function(b){b.disabled=(a=="disable")})}function removeDefaultFilter(a){if(confirm("Are you sure you want to remove your default filter?")){DeleteCookie("default-filter");defaultButtons("disable");alert("Default filter removed")}a.stop()}function applyDefaultFilter(c){c.stop();var a=GetCookie("default-filter");if(!a){alert("You have not defined a default filter.");return}var b=("?"+a).parseQuery();var d=Current.filter.getDefaults();b=$H(d).merge(b);Current.filter.exec(applyFilter(b),debug);setFilteredMesg()}function getEntryFilter(){var b=GetCookie("last-filter");var d;if(b){d="?"+b}else{if(location.href.indexOf("?")>=0){d=location.search}else{var c=GetCookie("default-filter");if(!c){d="?"}else{d="?"+c}}}var a=applyFilter(d);return a}function applyFilter(a){var b;if(Object.isString(a)){b=a.parseQuery()}else{b=a}if(Object.values(b).size()==0){return null}return setToolbox(b)}function setToolbox(a){var b=[];if(!a){a=Current.filter.getDefaults()}$H(a).each(function(c){switch(c.key){case"sort":case"gender":return b.push(setSelect(c));case"age":case"color":case"breed":case"marking":case"personality":return b.push(setSelectMultiple(c));case"selectedColors":case"selectedTraits":case"status":return b.push(setRadio(c));case"selectedMarkings":case"selectedBreeds":case"selectedAges":return;case"start":case"keep_start":case"count":case"before":case"after":return b.push({id:c.key,value:c.value});case"debug":return b.push({id:c.key,value:1});default:alert("Unexpected elt in setToolbox: "+c.key)}});return b}function setSelect(c){var a=$(c.key);var b=$A(a.options).find(function(d){return d.value==c.value});b.selected=true;return a}function setSelectMultiple(c){var b=$(c.key);var a=c.value.split(",");$A(b.options).each(function(d){d.selected=a.include(d.value)});return b}function setRadio(b){var a=$("toolbox")[b.key];if(a.length==undefined){field=new Array(field)}return $A(a).find(function(c){if(c.value==b.value){return(c.checked=true)}else{return false}})}function gotoPage(a){if(a<1||a>Current.npages){return}Current.filter.exec({id:"start",value:(a-1)*Current.CPP},debug)}function catHref(a){SetCookie("last-filter",Current.filter.serialize()+"&keep_start="+Current.start,new Date((new Date()).getTime()+60*5*1000))}function controlTab(a,b){if(b&&b=="open"&&$("toolbox").visible()){return}if(b&&b=="close"&&!$("toolbox").visible()){return}$("toolbox","toolbox-closed").invoke("toggle");if($("toolbox").visible()&&!controlTab.opened){controlTab.opened=true;pageTracker._trackEvent("adoptable.php","options","open")}}controlTab.opened=false;function clearCats(){$("cats").select("tr.row img, tr.row a, tr.row div.cat-name, tr.row div.cat-age, 							tr.row div.cat-desc, tr.row div.sn").each(function(a){switch(a.tagName){case"A":a.href="#";break;case"IMG":if(!a.hasClassName("adopted")){a.show().src="images/petrified/ajax-waiting.gif"}else{a.remove()}break;case"DIV":if(a.hasClassName("sn")){a.remove()}else{a.update()}}})}function href(a){return"cat-desc.php?id="+a.Id}var option=new Template('<option value="#{index}" #{selected}>#{index}</option>');function setPageInfo(a){var b="cats";Current.nrecs=a["total-records"];$("npages").update((Current.npages=Math.ceil(Current.nrecs/Current.CPP))+" ");if(Current.nrecs==1){b="cat"}$("total-records").update(Current.nrecs+" "+b);Current.page=Math.floor(a["first-record"]/Current.CPP)+1;$$(".prev-page, .next-page").each(function(c){if((c.hasClassName("prev-page")&&Current.page==1)||(c.hasClassName("next-page")&&Current.page==Current.npages)){c.down("a").addClassName("off")}else{c.down("a").removeClassName("off")}});$("current-page").update($R(1,Current.npages).inject("",function(c,d){return c+option.evaluate({index:d,selected:(d==Current.page?"selected":"")})}))}function updateCats(d){var b=d.memo;document.fire("exec:cats",b[0]["total-records"]);var c=$("cats").select("tr.row td");var a=c.zip(b.slice(1));setPageInfo(b[0]);if(debug){$("query").show().update(b[0]["query"])}a.each(function(h){if(!h[1]){h[0].select("img")[0].hide();return}var f=h[1],e=h[0];var g=e.select("img")[0];g.src="imageresize3.php/"+f.photo+"/95/100";g.up("a").href=href(f);if(f.state=="adopted"){e.select("div.cat")[0].insert("<img src='../images/petrified/adopted.gif' class='adopted' />",{position:"top"})}e.select("div.cat-name")[0].update('<a href="../'+href(f)+'">'+f.Name+"</a>");e.select("div.cat-age")[0].update(f.age);e.select("div.cat-desc")[0].update(f.personality);if(f.specialneeds=="Y"){e.select("div.desc")[0].insert('<div class="sn">SPECIAL NEEDS</div>')}})}function changeHandler(a){pageTracker._trackEvent("adoptable.php","click",Event.element(a).id);Current.filter.exec(Event.element(a),debug);setFilteredMesg()}function emailAddressInput(b){var a=Event.element(b);b.stop();if(a._cleared){return}a.setStyle({fontStyle:"normal"}).clear()._cleared=true}function saveFilter(b){b.stop();var a=Current.filter.toText();if(confirm("Please confirm your filter settings:\n"+a)){SetCookie("default-filter",Current.filter.serialize(),new Date((new Date()).getTime()+1000*60*31000));defaultButtons("enable")}}var noCatsTip;function setHandlers(){var a=changeHandler;$("toolbox").getElements().each(function(b){if(b.hasClassName("no-handler")){return}if(b.tagName=="INPUT"&&b.type=="radio"){b.observe("click",a)}else{b.observe("change",a)}});$("filter-email").observe("click",emailAddressInput);$("set-registered-filter","get-registered-filter","delete-registered-filter").invoke("observe","click",filterEmail);$("save-search").observe("click",saveFilter);$("filter-closed","filter-open").each(displayFilter)}function setTips(){noCatsTip=$("cats").down("div.cat",2);var a={closeButton:true,style:"darkgrey",width:"200px",fixed:true,hideAfter:10,showOn:false,offset:{x:-55,y:-20}};new Tip(noCatsTip,'<div id="no-cats">NO CATS MATCH THIS FILTER</div>',a);document.observe("exec:cats",function(b){if(b.memo==0){noCatsTip.prototip.show()}else{if(noCatsTip.visible()){noCatsTip.prototip.hide()}}})}function displayFilter(b){var a={title:"Current Filter",offset:{x:-250,y:-50},className:"protogrey",fixed:true,style:"darkgrey",hideOn:{element:"target",event:"mouseout"}};new Tip(b,'<div id="'+b.id+'-tip"></div>',a);b.observe("prototip:shown",function(d){var c=$(b.id+"-tip");if(c){c.update(Current.filter.toText(true))}})}function filterEmail(a){a.stop();var b=$F("filter-email");if(!validEmailAddr(b)){alert("Enter a valid email address");return}pageTracker._trackEvent("adoptable.php","filter",Event.element(a).id);switch(Event.element(a).id){case"set-registered-filter":return registerEmail(b);case"get-registered-filter":case"delete-registered-filter":return sendFilterRequest(b);default:jsError("Unknown button in filterEmail: "+Event.element(a).id);AjaxErrorAlert()}}function registerEmail(g){if(!Current.filter.isFiltered()){if(!confirm("You have not set any filtering.  Are you sre this is what you want?")){return}}var f=Current.filter.getDefaults();var e=Current.filter.getFilter();var d=$H(f).merge(e);d.unset("start");d.unset("count");d.unset("sort");var a=d.toQueryString();var c={email:g,filter:a};var b={method:"get",parameters:c};b.onSuccess=function(h){alert("Filter registered.  You will receive confirmation email.")};b.onFailure=function(h){jsError("Error during filter registration: "+h.statusText);AjaxErrorAlert()};new Ajax.Request("/filters/register.php",b)}function sendFilterRequest(b){var a={method:"get",parameters:{email:b}};a.onSuccess=function(d){var c="Email has been sent to your address with instructions.";if(d.responseJSON){c=d.responseJSON.mesg}alert(c)};a.onFailure=function(c){jsError("Error during filter request: "+c.statusText);AjaxErrorAlert()};new Ajax.Request("/filters/request.php",a)}function AjaxErrorAlert(){alert("An error was encountered processing this request.  Email has been sent to the webmaster.  We apologize for the inconvenience.")}function setFilteredMesg(b){var a;if(b||Current.filter.isFiltered()){a="FILTER ON"}else{a="no filter"}$("filter-mesg-open","filter-mesg-closed").invoke("update",a)};
