(function(){var c=this,e=c.jQuery,b=c.escape,d=c.setTimeout,a=function(n,h){var l="?",k="&",j="=",g,o="",m,f=function(i){return((h!==false)?b(i).replace(/\+/g,"%2B").replace(/\"/g,"%22").replace(/\'/g,"%27"):i).replace("Town & Country","Town _and_ Country")};switch(typeof n){case"object":if(n){for(g in n){if(typeof(m=a(n[g],h))!=="function"){if(o){o+=k}o+=f(a(g,h))+j+f(m)}}return(o.length>=1?l:"")+o}return"null";case"string":return n;case"number":return String(n);default:return"null"}};e.extend({setUrlParams:function(h,f){var g=function(k){for(var j in k){if(k[j]===""){delete k[j]}}return k},i=function(j,l){var k=j.replace(/\?(.+)$/,"");return k+(l||"")};h=e.extend({},e.getUrlParams(f),h||{});return i(f,a(g(h)))},getUrlParams:function(f){var g=function(m){var l={},h=m.split("&"),k,j;for(j=0;j<h.length;j+=1){k=h[j].split("=");if(k instanceof Array){l[k[0]]=(k[1]||"").replace(/\%2C/g,",").replace(/\%20/g," ")||undefined}}return l};return g(((f.toString().split("?")[1]||"").split("#")[0])||"")}});e.fn.extend({facetBrowse:function(v){v=e.extend(true,{facetDependencies:[],labels:{},selectedFacetHtml:'<span class="selectedFacet" rel="{{ facet }}"><span>{{ name }}: {{ displayValue }}</span><a href="#"></a></span>'},v);var s=this,l={},z={},t=function(){e("[name$=-urls]",s).each(function(){z[e(this).attr("name")]=e(this).val()})},h=function(){e("select:not([name=categoryType])",s).each(function(){for(var A=e(this)[0].options.length-1;A>0;A-=1){e(this)[0].options[A]=null}})},j=function(C){var D,B,A;h();for(D in C){if(D!=="defaults"){for(B in C[D]){if(e("select[name="+D+"]",s).size()){A=e("select[name="+D+"]",s)[0].options.length;e("select[name="+D+"]",s)[0].options[A]=new Option(C[D][B],B)}}}}},o=function(D,C,B){var A;if(D&&C){A=e("[name="+D+"]",s).attr("title");l[D]=C;e("[name="+D+"]",s).addClass("hidden").before(v.selectedFacetHtml.replace("{{ facet }}",D).replace("{{ name }}",A).replace("{{ displayValue }}",B))}},f=function(A){l[A]=undefined;e.each(v.facetDependencies,function(B,C){if(A===C[1]){k(C[0])}});e("[name="+A+"]",s).removeClass("hidden").prev(".selectedFacet").remove();e("[name="+A+"]",s)[0].selectedIndex=0},k=function(A){f(A);e("[name="+A+"]",s).attr("disabled","disabled").parents("label").addClass("disabled")},u=function(){e("form",s).addClass("loading");e("select:not([name=categoryType])",s).attr("disabled","disabled").parents("label").addClass("disabled")},p=function(){e("form",s).removeClass("loading");e("select:has(option + option)",s).attr("disabled","").parents("label").removeClass("disabled");e.each(v.facetDependencies,function(A,B){if(e("[name="+B[1]+"]",s).size()&&!l[B[1]]){k(B[0])}})},m=function(){var D=e("[name=categoryType]",s).val(),B=D.split("-")[0],A=D.split("-")[1],C=(z["{{ category }}-{{ type }}-urls".replace("{{ category }}",B).replace("{{ type }}",A)]||"").split(";");return C},g=function(){return m()[0]},y=function(){return m()[1]},w=function(){return m()[2]},i=function(){var B={},C,A;e(".rangedInputMin").each(function(){C=e("input",this).val().replace(/[^\d]*/g,"");A=e(this).next().find("input").val().replace(/[^\d]*/g,"");if(C||A){B[e("input",this).attr("name").replace("Min","")]=C+"-"+A}});return e.extend({},B,l)},x=function(A){d(function(){e.ajax({dataType:"json",url:A.url,data:A.selections,success:A.success,error:A.error})},200)},n=function(A){e("form",s).trigger("update",[A,{facetBrowseAjaxUrl:g(),listingUrl:y(),miniListingAjaxUrl:w()}])},q=function(){e("select:not([name=categoryType])",s).each(function(){f(e(this).attr("name"))})},r=function(){var A=g();u();if(A){x({url:A,selections:i(),success:function(B){j(B);p();n(B)},error:p})}else{e("form",s).removeClass("loading")}};e("form",s).bind("resetForm",function(){q();r()});e("[name=categoryType]",s).change(function(){if(e(this).parents("form").is(":not(.loading)")){e("form",s).trigger("resetForm")}else{return false}});e("select:not([name=categoryType])",s).change(function(){if(e(this).parents("form").is(":not(.loading)")&&e(this).val()){o(e(this).attr("name"),e(this).val(),e(":selected",this).text().replace(/\(.*\)/g,""));r()}else{return false}});e(".selectedFacet a",s).live("click",function(){if(e(this).parents("form").is(":not(.loading)")){f(e(this).parent(".selectedFacet").attr("rel"));r()}return false});e(".submit",s).live("click",function(){if(e(this).parents("form").is(":not(.loading)")){document.location=e.setUrlParams(i(),y())}return false});t();r();return e(this)}})}());
