window.truvo=window.truvo||{};$.extend(truvo,{DEBUG:false,NS_REGEXP:/^(([a-z.]+)\.)?(\w+)$/,_apis:{},_klasses:{},_views:{},bootstrap:function(a){truvo.DEBUG=a.debug||false},init:function(){var b=new Date;try{truvo._initApis();truvo._initViews();truvo._initKlasses();$(truvo).trigger("ready");truvo.view.load()}catch(a){truvo.error("truvo#init: "+a)}truvo.debug("[truvo.init] finished in "+((new Date-b)/1000)+" second")},ready:function(a){$(truvo).bind("ready",a)},require:function(a){return this._initApi(a)},ns:function(a){var e=$.isArray(a)?a:a.split("."),d=truvo;for(var b in e){var c=e[b];d=d[c]=d[c]||{};d._name=c}return d},api:function(a,b){this._apis[a]=this._makeApi(a,b)},klass:function(a,b){this._klasses[a]=function(){var c=truvo.NS_REGEXP.exec(a);if(c){return truvo.ns(c[2]||[])[c[3]]=b}else{throw"truvo.klass: given constructor path is invalid: '"+a+"'"}}},view:function(a,c){var b="view."+a;this._views[b]=function(){return truvo.view.add(a,truvo._makeApi(b,c))}},emptyFunction:function(){},t:function(a,b){return truvo.I18n.get(a,b)},redirect:function(a){document.location.href=a||"/"},reload:function(){truvo.redirect(document.location.href)},toJSON:function(s){return eval("("+s+")")},debug:function(a){if(truvo.DEBUG&&window.console&&$.isFunction(console.debug)){console.debug(a)}},error:function(a){if(truvo.DEBUG&&window.console&&$.isFunction(console.error)){console.error(a)}},wait:function(a,b){setTimeout($.isFunction(b)?b:truvo.emptyFunction,a*1000||1)},_makeApi:function(a,b){return function(){var c=truvo.ns(a);return $.extend(c,b(c))}},_initApis:function(){for(var a in this._apis){this._initApi(a)}return true},_initApi:function(a){var b=this._apis[a];if(!$.isFunction(b)){return b}truvo.debug("truvo: initializing api: '"+a+"'");this._apis[a]=b=b();if($.isFunction(b.init)){b.init()}return b},_initKlasses:function(){for(var b in this._klasses){truvo.debug("truvo: initializing class: '"+b+"'");var a=this._klasses[b];a()}return true},_initViews:function(){for(var a in this._views){this._views[a]=this._views[a]()}}});$(document).ready(function(){truvo.init()});truvo.api("I18n",function(a){return{_messages:{},get:function(c,b){b=b||{};var d=b.scope;if(d){if($.isArray(d)&&d.length>0){d.push(c);c=d.join(".")}if(typeof(d)=="string"){c=d+"."+c}}return this._messages[c]},add:function(){arguments.length>1?this._messages[arguments[0]]=arguments[1]:$.extend(this._messages,arguments[0])}}});truvo.klass("Buttons",function(){var a=function(l){if(b(l)){return l}else{if(l.tagName=="SPAN"&&b(l.parentNode)){return l.parentNode}else{return false}}};var i=function(p){var m=$(p);var o=m.children("span");var l=m.attr("data-toggle_name");var n=o.html();m.attr("data-toggle_name",n);o.html(l)};var e=function(){return false};var k=function(n){var m=$(n);var o=m.attr("class");var l=o.split(" ")[1];m.attr("class",/inverted/.test(l)?o.replace("-inverted",""):o.replace(l,l+"-inverted"))};var c=function(l){return $(l).attr("data-type")=="submit"&&$(l).attr("data-auto_submit")!="false"};var h=function(l){return/get|post|put|delete/.test($(l).attr("data-method"))};var d=function(l){return $(l).attr("data-type")=="lightflow"};var b=function(l){return l.tagName=="A"&&$(l).hasClass("button")};var j=function(l){return $(l).hasClass("disabled")};var f=function(){var m=$(this);if(c(this)){var o=m.parents("form");var n=m.children("span");m.addClass("disabled");m.data("name",n.html());n.html(m.attr("data-loading_message")||truvo.t("common.loading_message"));o.data("complete",function(){n.html(m.data("name"));m.removeClass("disabled");o.removeData("complete").unbind("submit",e)});o.submit();o.submit(e);return false}else{if(d(this)){truvo.Lightflow.showForm(this.href);return false}else{if(h(this)){m.addClass("disabled");var l=$(this).attr("data-method");var p={};if(l=="post"){p.authenticity_token=truvo.user.get("authenticity_token")}$.ajax({url:this.href,type:l,data:p,dataType:"script",complete:function(){m.removeClass("disabled");truvo.dom.hideLoading()},success:function(){if(m.attr("data-toggle_name")){i(m)}if(m.attr("data-toggle_inverted")=="true"){k(m)}}});return false}else{return true}}}};var g=function(m){var l=a(m.target);if(l){return j(l)?false:f.apply(l)}else{return true}};$("body").click(g)});truvo.api("dom",function(a){var b={onResourceDeleted:function(c){if(c.redirect){truvo.redirect(c.redirect)}else{$("."+this.domClass(c)).remove();$(this.domId(c)).remove()}},findScrollDist:function(){var c=null;if(window.pageYOffset){c=window.pageYOffset}else{if(document.documentElement&&document.documentElement.scrollTop){c=document.documentElement.scrollTop}else{c=document.body.scrollTop}}return c},showLoading:function(){var c=$("#truvo-loading");if(c.css("display")!="block"){$(document).scroll(this.positionLoading)}$("#truvo-loading").show();this.positionLoading()},hideLoading:function(){$("#truvo-loading").hide();$(document).unbind("scroll",this.positionLoading)},positionLoading:function(){$("#truvo-loading").css("top",a.findScrollDist()+"px")},ie6LayoutFix:function(c){if(truvo.dom.isIE6()){c.addClass("forceLayout").addClass("forceRelative");setTimeout(function(){c.removeClass("forceRelative")},1)}},isIE6:function(){return $.browser.msie&&$.browser.version=="6.0"},addNewSearch:function(c,d){if(typeof window.external=="object"&&typeof window.external.AddSearchProvider!="undefined"){window.external.AddSearchProvider(c);$.cookie(d,1,{expires:3650})}else{alert("Sorry, your browser seems unsupported. You need Firefox 2+ or Internet Explorer 7+.")}},domId:function(c){return"#"+this.domClass(c)},domClass:function(d){var c=truvo.util.keys(d)[0];var e=d[c].id;return c+"_"+e},getId:function(c){return parseInt(c.replace(/^\w+_/,""))}};return b});truvo.api("fb",function(a){return{init:function(){$("a.fb-login").click(function(){FB.Connect.requireSession(function(){a.connect("#facebook_signup");return false})})},connect:function(b){b=typeof(b)!="undefined"?b:"#facebok_connect";$(b).submit()}}});truvo.api("Forms",function(b){var a={loadExplanations:function(c){var d=c?$(c):$;var e=$(d.find(".explanation label"));e.click(function(){$(this).hide().parent().find("input, textarea").trigger("focus")});e.each(function(){var f=$(this);if(!$.trim(f.parent().find("input, textarea").val())){f.show()}});$(d.find(".explanation input, .explanation textarea")).focus(function(){$(this).parent().prev().hide()});$(d.find(".explanation input, .explanation textarea")).blur(function(){var f=$(this);if(!$.trim(f.val())){f.parent().prev().show()}})}};return a});truvo.api("history",function(){return{BASE_URL:"/history",AJAX_OPTS:{dataType:"script"},toggle:function(){this._request("toggle")},clearViewing:function(){this._request("clear_viewing")},clearSearch:function(){this._request("clear_search")},toggleDisplay:function(){var a=($.cookie("history_shown")||"0");var b=(a=="0"?"1":"0");$.cookie("history_shown",b,{expires:365,path:"/"});truvo.debug("Value: "+b+"\nCookie: "+$.cookie("history_shown"))},_request:function(a){$.ajax($.extend(this.AJAX_OPTS,{url:this.BASE_URL+"/"+a}))}}});truvo.api("JQueryExt",function(){var a={tooltip:function(b){this.each(function(){var c=$(this);c.data("tooltip",truvo.user.get("tooltips")[c.attr("tooltip")])})},alignTo:function(f,e){f=$(f);e=$.extend({marginX:0,marginY:0},e);var d=$(this);if(d.parent().tagName!="body"){$(document.body).append(d.remove())}d.css({opacity:0}).show();var g=f.offset();var c=f.width();var b=f.height();return d.hide().css({left:(g.left+e.marginX)+"px",top:(g.top+b+e.marginY)+"px",opacity:100})}};return jQuery.fn.extend(a)});truvo.api("Lightflow",function(b){var a={dialogOptions:{modal:true,autoOpen:false,width:400,closeOnEscape:true},currentUrl:"",currentParams:{},currentLfParams:{},setup:false,init:function(){this._container=$("#lightflow");this._contentWrapper=this._container.find("#lightflow-content-wrapper");this._container.find(".close").live("click",function(){b.close();return false});this._container.find(".reload").live("click",function(){b.reload();return false});this._container.dialog(this.dialogOptions);this.setup=true},showForm:function(f,h,c){h=h||{};c=c||{};h.format="lf";var g=typeof(f)=="string"?f:f.href;var e=$(f).attr("data-view_handler");var d=(c.method||"GET");if(e){e=truvo.view.register(e)}this.currentUrl=g;this.currentParams=h;this.currentLfParams=c;$.ajax({url:g,type:d,data:h,preventEval:true,success:function(i,j){b._setContent(i);b.open();if(e){e.load(b._container.find("form"))}},error:function(k,j,i){switch(k.status){case 401:truvo.redirect("/login");break;default:break}}});return false},reload:function(){b.showForm(b.currentUrl,b.currentParams,b.currentLfParams);return false},open:function(){b._setWidth();b._container.dialog("open");if(truvo.dom.isIE6()){$(document.body).addClass("lightflow-open")}},close:function(){b._container.dialog("close");if(truvo.dom.isIE6()){$(document.body).removeClass("lightflow-open")}},_setContent:function(c){this._contentWrapper.html(c);this._initForm()},_setWidth:function(){var c=this._contentWrapper.find(".content").css("width");this._container.dialog("option","width",parseInt(c)+30)},_formSubmit:function(c){$.ajax({url:c.action,data:$(c).serialize()+"&format=lf",type:c.method,complete:function(d,e){if($.isFunction($(c).data("complete"))){$(c).data("complete")()}if(d.status==201||d.status==200){b.close();truvo.reload()}else{if(d.status==422){b._setContent(d.responseText)}}truvo.dom.hideLoading()}});return false},_initForm:function(){this._bindFormSubmit();this._container.find(".passive-user-fields :input, .passive-user-fields label").each(function(){var c=this.tagName=="INPUT"?"id":"for";var d="lf-"+$(this).attr(c);if(d){$(this).attr(c,d)}});truvo.Forms.loadExplanations(this._contentWrapper)},_bindFormSubmit:function(){this._contentWrapper.find('form[enctype!="multipart/form-data"]').submit(function(){return b._formSubmit(this)});return false}};return a});truvo.api("Login",function(b){var a={initNetlogButton:function(){$("#netlog-login").click(function(){$("#netlog-login-form").slideToggle("fast")})},initButton:function(c){$("#"+c).click(function(){$("#"+c+"-form").submit()})}};return a});truvo.api("panner",function(d){var g=10000;var a=0;var f=null;function c(h){if(map&&h){map.panTo(h.markerlatlng);h.showHighlight()}}function b(h,i){if(f!=null){f.removeHighlight();if(map.closeInfoWindow){map.closeInfoWindow()}}a=i;f=h.markers[i];c(f);e.showHighlight(i);var j=$("#place-info-"+i).next();if(j.length>0){var k=new GSize(20,-20);if(f){f.openInfoWindowHtml(j.html(),{pixelOffset:k})}}}var e={panTimer:null,panOverMarkerGroup:function(h){if(map){$(".info-window-wrapper").width($(map.k).width()*0.75);b(h,a);a=(a+1)%h.markers.length}d.panTimer=setTimeout("truvo.panner.panOverMarkerGroup(places)",g)},showHighlight:function(h){$(".places-list div.info").css({backgroundColor:"white"});$(".places-list .info:eq("+h+")").css({backgroundColor:"#FEF8EC"})},start:function(){if(!map||!map.panTo){truvo.wait(1,d.start);return}if(places&&places.markers.length>1){d.panOverMarkerGroup(places)}},startPanning:function(){truvo.debug("truvo.panner: startPanning() is deprecated, please use truvo.panner.start()");d.start()},stopPanning:function(){clearTimeout(d.panTimer)},togglePanning:function(){var h=$("#togglePanning");if(h.hasClass("on")){this.stopPanning();h.removeClass("on").html(truvo.t("autohint.start_autohint"))}else{this.start();h.addClass("on").html(truvo.t("autohint.stop_autohint"))}return false},addMouseActions:function(){$(".places-list .info").each(function(h){$(this).hover(function(){b(places,h)})})}};return e});truvo.api("Rating",function(){return{cS:"-wrapper",fS:"-field",rS:"-rate",rates:["Awful","Not too good","OK","Good","Fantastic"],eR:"",set:function(el,rate,width){$("#"+el+this.fS)[0].value=rate;$("#"+el+"-current-rating").css("width",(rate*width)+"px")},show:function(el,rating){$("#"+el+this.rS).html(eval(el+"_qualifications["+(rating-1)+"]"))},hide:function(el,rating){var v=$("#"+el+this.fS).value;if(rating>0&&rating<6){$("#"+el+this.rS).html(this.rates[v-1])}else{$("#"+el+this.rS).html(this.eR)}}}});truvo.klass("ui.TabNav",function(a,f){var j=$(a);var e=$(f);var g=j.find("li > a");var c=function(l){return $(".tab-proxy",l)};var b=!j.hasClass("no-rss");var d=function(o){var n=j.find("li.active a:first");var m=n.attr("href").split("?")[0]+".rss?language="+truvo.user.locale()+(o?"&type="+o:"");var l=$(".inner-container",e);if(l.length>0){l.each(function(r,q){var p=m.replace("people.rss",$(q).attr("data-type")+".rss");k($(q).find("h3:first"),p,n.attr("title"))})}else{k(e.find("h2:first"),m,n.attr("title"))}};var i=function(){$(".breadcrumb li:last-child").text(j.find("li.active").text())};var k=function(n,l,o){$(".icon.rss",n).remove();$(n).append('<a href="'+l+'" class="icon rss right">rss feed</a>');var m=$(n).children("a:last");m.attr("tooltip",o)};this.load=function(){var m=(/type=(\w+)/).exec(this.href);var l=j.find("a[href^="+this.href.split("?")[0]+"]");$.get(this.href,function(n){e.html(n);j.find("li.active").removeClass("active");l.parents("li").addClass("active");if(j.hasClass("breadcrumb-sync")){i()}if(b){d(m?m[1]:null)}c(e).click(h);truvo.dom.ie6LayoutFix(e)});return false};var h=this.load;this.onContentContainerClick=function(o){var n=$(o.target);var m=n.attr("href");var l=n.parents(".inner-container")[0]||e;if(!/page=\d+/.test(m)&&!/\?sort\[\w+\]=(desc|asc)$/.test(m)){return true}$.get(m,function(p){if(!(/^try/).test(p)){$(l).html(p)}if(b){d()}document.location="#"+j.attr("id")});return false};g.click(this.load);c().click(this.load);e.click(this.onContentContainerClick);if(b){d()}});truvo.api("twitter",function(a){return{init:function(){var b=$("#twitter-char-count");var c=$("#twitter-status");if(b.length==0||c.length==0){return}a.countChars(c,b,140);c.keyup(function(){a.countChars(c,b,140)});b.show()},countChars:function(e,b,d){var c=e.val().length;b.find("span.counter").html((d-c)+"/"+d);if(c>d){e.addClass("error");b.addClass("error")}else{e.removeClass("error");b.removeClass("error")}}}});truvo.klass("Upload",function(c,f){f=$.extend({autoUpload:false,showPreview:false,action:c.attr("action"),params:{},callback:null,showLoading:null,hideLoading:null,fileExt:"*.jpg;*.jpeg;*.gif;*.png;*.JPG;*.JPEG;*.GIF;*.PNG",fileInfoField:"#image_file_file_name",fileFieldName:"image[file]"},f);var n=c.find(":file");if(n.data("uploadifed")){return}var m=$("#image_image_file_url");var b=c.find("a[data-type=submit]");var q=$("#image-error-explanation");var k=$("#select-file-message");var i=$("#no-flash-message");var p=c.find(f.fileInfoField);var s=($.cookie("language")||"en").split("-")[0];var r=$.extend({format:"json",lightflow:c.parent("#lightflow").length>0?"1":"0",authenticity_token:encodeURIComponent(c.find("input[name=authenticity_token]").attr("value")),_yelloyello_session:c.find("input[name=_yelloyello_session]").attr("value")},f.params);var e=function(){$.isFunction(f.showLoading)?f.showLoading():truvo.dom.showLoading()};var h=function(){$.isFunction(f.hideLoading)?f.hideLoading():truvo.dom.hideLoading()};var o=function(v,t,u){p.attr("value",u.name);k.hide();n.uploadifySettings("scriptData",r);if(f.autoUpload){e()}return false};var l=function(){var t,y,w,x,u;if(arguments.length>3){t=arguments[0];y=arguments[1];w=arguments[2];x=arguments[3];u=arguments[4]}else{x=arguments[0].responseText;u=arguments[1]}h();q.hide();var B=truvo.toJSON(x);if(B.errorMessages){q.html(B.errorMessages).show()}else{if(f.showPreview){try{var A=c.find(f.showPreview).html(B.previewImg);var v=A.children("img").attr("rel");if(f.callback){f.callback(v)}}catch(z){alert("Ooops. An unexpected error occured, please reload the page try again!");truvo.debug("truvo.Upload error:"+z.message)}}else{if(B.redirect_to){truvo.redirect(B.redirect_to)}else{truvo.reload()}}}};var g=function(w,t,v,u){h();switch(u.info){case 302:truvo.reload();break;case 403:alert("Ooops! Looks like you've been logged out, please log in and try to upload "+v.name+" again.");break;default:alert("An unexpected error occured");break}};var j=function(){return !!(m.attr("value")||n.attr("value")||p.attr("value"))};var a=function(){var t=swfobject.getFlashPlayerVersion();if(t.major==0){i.show();return false}else{return true}};var d=a();if(d){n.uploadify({uploader:"/flash/uploadify.swf",script:f.action,fileDataName:f.fileFieldName,fileExt:f.fileExt,fileDesc:$("#file-desc").html(),buttonImg:"/images/bg_btn_browse_"+s+".png",width:100,height:23,onSelect:o,onComplete:l,onError:g,auto:f.autoUpload});p.attr("value","")}else{p.parent().hide()}if(!f.autoUpload){b.click(function(){if(j()){e();if(!d&&!m.attr("value")){c.get(0).submit()}else{if(m.attr("value")){$.ajax({url:c.attr("action")+".json",type:"post",data:c.serialize(),complete:l})}else{var t=c.find(".lightflow-auth input");if(t.length){n.uploadifySettings("scriptData",$.extend(r,{"user[email]":$("#lf_email").attr("value"),"user[location]":$("#lf_location").attr("value"),"user[terms_of_service]":$("#user_terms_of_service").attr("value"),remember_me:$("#remember_me").attr("value")}))}n.uploadifyUpload()}}}else{k.show()}return false})}m.keypress(function(t){if(t.keyCode=="13"){k.hide();b.click();return false}else{return true}});n.data("uploadifed",true)});truvo.klass("User",function(a){this.data=a||{};this.update=function(b){$.extend(this.data,b)};this.get=function(b){return this.data[b]};this.set=function(c,b){return this.data[c]=b},this.locale=function(){return $.cookie("language")||"en"},this.isFB=function(){return this.get("fb_user")},this.isNetlog=function(){return this.get("netlog_user")},this.isTwitter=function(){return this.get("twitter_user")}});truvo.api("util",function(b){var a={init:function(){var d=_.methods();for(var e in d){var c=d[e];b[c]=_[c]}}};return a});truvo.api("view",function(){return{_registered:{},_views:{},_loadPriorityMap:{},load:function(){this._loaded={};for(var a in this._registered){this._loadView(a)}delete this._loaded},loadBefore:function(b,a){if(truvo.util.isUndefined(this._views[b])){truvo.error("[truvo.view.loadBefore] view '"+b+"' does not exist - did you mean '"+this._viewCandidate()+"'?")}(this._loadPriorityMap[b]=this._loadPriorityMap[b]||[]).push(a)},get:function(a){return this._registered[a]},add:function(b,a){return(this._views[b]=a)},register:function(){var a=[];for(var d=0;d<arguments.length;d++){var c=arguments[d];var b=this._views[c];if(b){a.push(this._registered[c]=b())}else{var f="[truvo.view.register] '"+c+"' does not exist";var e=this._viewCandidate(c);if(e){f+="- did you mean '"+e+"'?"}throw f}}return a.length>1?a:a[0]},_loadView:function(a){if(this._loaded[a]){return}try{if(!truvo.util.isUndefined(this._loadPriorityMap[a])&&this._loadPriorityMap[a].length>0){while(this._loadPriorityMap[a].length>0){this._loadView(this._loadPriorityMap[a].pop())}}truvo.debug("[truvo.view] loading '"+a+"'");this.get(a).load();this._loaded[a]=true}catch(b){throw"[truvo.view] failed to load '"+a+"'; message: "+b.message}},_unloadView:function(a){truvo.debug("[truvo.view] unloading '"+a+"'");this.get(a).unload()},_viewCandidate:function(a){var b=new RegExp(a);return truvo.util.detect(truvo.util.keys(this._views),function(c){return b.test(c)})||""}}});truvo.view("AddPlace",function(b){$.metadata.setType("html5","data-validate");var a={wizard:$("#addPlaceSteps").jWizard({hideTitle:true,hideCancelButton:true,buttonTemplate:'<a href="#"><span>{title}</span></a>',buttonText:{cancel:truvo.t("addPlaceButtonTitles.cancel"),previous:truvo.t("addPlaceButtonTitles.previous"),next:truvo.t("addPlaceButtonTitles.next"),finish:truvo.t("addPlaceButtonTitles.finish")},events:{onCancel:function(c){truvo.redirec("/places")},onFinish:function(c){$("#place_form").submit()}},cssClasses:{buttons:{div:"clear buttons",cancel:"button grey cancelButton",previous:"button grey previousButton",next:"button orange nextButton",finish:"button orange finishButton"}}}).data("jWizard"),map:null,mapOverlay:$("#apMapOverlay"),lastAddress:null,lastLocality:null,newPlaceMarker:null,validator:$("#place_form").validate({errorClass:"error-message",errorElement:"p",errorPlacement:function(c,d){c.addClass("error-message");if(d.attr("id")!="place_categories_1"){d.parent("span").after(c)}else{d.parents("div.line.categories").append(c)}},meta:"validate",onsubmit:false,highlight:function(d,c){if($(d).attr("id")!="place_categories_1"){$(d).parents("div.field-wrapper").addClass("errors");if($(d).parent("span").next().length>0){$(d).parent("span").next("p.error").addClass("error-message")}}else{$(d).parents("div.line.categories").prev("div.line").addClass("errors");$(d).parents("div.line.categories").addClass("errors")}},unhighlight:function(d,c){if($(d).attr("id")!="place_categories_1"){$(d).parents("div.field-wrapper").removeClass("errors")}else{$(d).parents("div.line").removeClass("errors");$(d).parents("div.line").prev("div.line.errors").removeClass("errors")}}}),load:function(){var c=function(){b.lastAddress=$("#place_street_name").val();b.lastLocality=$("#place_city_name").val();if(b.lastAddress!=""||b.lastLocality!=""){var d={city:b.lastLocality,address:b.lastAddress};$.ajax({url:"/places/geocode",data:d,dataType:"json",success:function(f){var e=f.addresses[0];if(f.addresses.length==0){b._showBackLink()}else{if(f.addresses.length==1){b.mapOverlay.hide();b._setupMapWithCenter(e.latitude,e.longitude);b._placeMarker(new GLatLng(e.latitude,e.longitude));b._setPlacemarkFields(e)}else{b.mapOverlay.show();b.mapOverlay.css("backgroundImage","none");b._renderAddressList(f);b._setupMapWithCenter(e.latitude,e.longitude)}}}})}};$("#step_1").bind("onValidate",function(){return $("#place_form").valid()});$("#finalStep").bind("onActivate",function(){if($(this).is(":hidden")){$(this).show()}var d=$("#place_geocoded_lat").val();var g=$("#place_geocoded_lng").val();if((d!="")&&(g!="")){b._setupMapWithCenter(d,g);b._placeMarker(new GLatLng(d,g))}var f=($("#place_street_name").val()==b.lastAddress);var e=($("#place_city_name").val()==b.lastLocality);if(!(f&&e)){b.mapOverlay.html("");c()}});this._loadCategories()},_renderAddressList:function(c){var f=c.addresses;var d=c.addresses_info;var e=$('<ol id="addressesList"></ol>');b.mapOverlay.html("");$.each(f,function(){var h=$('<li class="apAddressItem">'+this.address+"</li>");h.css("cursor","pointer");var g=this;h.click(function(){b._placeMarker(new GLatLng(g.latitude,g.longitude));b._setPlacemarkFields(g);$("#apMapOverlay").hide();return false});e.append(h)});$("#bd-related").append(e);b.mapOverlay.append("<h2>"+d+"</h2>");b.mapOverlay.append(e)},_setupMapWithCenter:function(e,d){var c=new GLatLng(e,d);if(b.map==null){b.map=new GMap2(document.getElementById("placeLocation"));b.map.addControl(new GMapTypeControl());b.map.addControl(new GLargeMapControl());b.map.enableDoubleClickZoom()}b.map.setCenter(c,12)},_setPlacemarkFields:function(c){$("#place_geocoding_placemark_id").val(c.id)},_placeMarker:function(c){var e=c.lat();var d=c.lng();$("#place_geocoded_lat").val(e);$("#place_geocoded_lng").val(d);if(b.newPlaceMarker==null){b.newPlaceMarker=new GMarker(c,{draggable:true,bouncy:false});b.map.addOverlay(b.newPlaceMarker);GEvent.addListener(b.newPlaceMarker,"drag",function(f){$("#place_lat").val(f.lat());$("#place_lng").val(f.lng())})}b.map.panTo(c);b.newPlaceMarker.setLatLng(c);$("#addressList").hide("slow")},_showBackLink:function(){b.mapOverlay.html("");b.mapOverlay.css("backgroundImage","none");b.mapOverlay.append("<h2>"+truvo.t("addPlace.no_results_heading")+"</h2>");b.mapOverlay.append("<p>"+truvo.t("addPlace.no_results_info").replace(/\\/g,"")+"</p>");$("a.changeStep",b.mapOverlay).click(function(){b.wizard.changeStep(0);$("#place_street_name").focus();return false})},_loadCategories:function(){this._categorySelects=$("select.categories");$.ajax({url:"/categories/tree.json",type:"get",dataType:"json",success:function(f){b._categories=f;b._selectedCategory=b._findCategoryById($("#category_id").attr("value"));for(var e in b._categories){truvo.util.each(b._categories[e],function(g){g.level=e})}var d=f["1"];var c=$(b._categorySelects[0]);b._renderCategories(c,d);b._renderSelectedCategories()}});this._categorySelects.change(function(){var f=$(this).find(":selected");var c=b._nextCategorySelect(f.parent());if(c.length>0){var g=truvo.dom.getId(c.attr("id"));var d=b._findCategoryChildren(g,f.attr("value"));var e=b._nextCategorySelect(c);if(e){e.html("")}b._renderCategories(c,d)}})},_renderSelectedCategories:function(f){f=f||this._selectedCategory;if(f){if(f.level>1){var c=$(this._categorySelects[f.level-1]);var e=this._findCategoryById(f.parent_id);var d=this._findCategoryChildren(f.level,e.id);this._renderCategories(c,d,f)}else{this._markSelected(f)}if(f.parent_id){this._renderSelectedCategories(this._findCategoryById(f.parent_id))}}},_markSelected:function(c){c=$(this._categorySelects[c.level-1]).find('option[value="'+c.id+'"]').get(0);if(c){c.selected=true}return c},_renderCategories:function(c,d,f){var e="";if(d.length>0){truvo.util.each(d,function(g){e+='<option value="'+g.id+'">'+g.name+"</option>"})}c.html(e);if(f){this._markSelected(f)}},_findCategoryChildren:function(c,d){return truvo.util.filter(this._categories[c],function(e){return e.parent_id==d})},_findCategoryById:function(f){for(var d in this._categories){var e=this._categories[d];var c=truvo.util.detect(e,function(g){return g.id==f});if(c){break}}return c},_nextCategorySelect:function(c){return c.parent().next().find("select")}};return a});truvo.view("Ajax",function(b){var a={load:function(){this._initLightFlowLinks();this._initRemoteLinks();this._initDeleteLinks();$.ajaxSetup({beforeSend:function(){b.onBeforeSend()},complete:function(){b.onComplete()},error:function(c){b.onError(c)}})},onBeforeSend:function(){truvo.dom.showLoading()},onComplete:function(){truvo.dom.hideLoading();if(typeof(translationMenu)!="undefined"){translationMenu()}},onError:function(c){truvo.debug("XHR error: ",c.status," - ",c.statusText)},_initLightFlowLinks:function(){$("a[data-lightflow=true]").live("click",function(c){if(c.button!=0){return true}truvo.Lightflow.showForm(this);return false})},_initDeleteLinks:function(){$('a[data-method="delete"], a[data-method="post"], a[data-method="put"]').live("click",function(j){var h=$(this);if(j.button!=0||h.attr("data-remote")=="true"){return true}var k=h.attr("data-method");var g=h.attr("data-confirm");if(g&&k=="delete"){g=truvo.t("delete_confirm")}if(g?confirm(g):true){var i=document.createElement("form");i.style.display="none";this.parentNode.appendChild(i);i.method="POST";i.action=this.href;var c=document.createElement("input");c.setAttribute("type","hidden");c.setAttribute("name","_method");c.setAttribute("value",k);i.appendChild(c);var d=document.createElement("input");d.setAttribute("type","hidden");d.setAttribute("name","authenticity_token");d.setAttribute("value",truvo.user.get("authenticity_token"));i.appendChild(d);i.submit()}return false})},_initRemoteLinks:function(){$("a[data-remote=true]").live("click",function(j){if(j.button!=0){return true}if(!/disabled/.test(this.className)){var g=$(this);if($(this).attr("data-confirm")?confirm(truvo.t("delete_confirm")):true){var f=g.attr("data-method")||"get";var i={};var d=g.attr("data-type")||"script";var c=g.attr("data-toggle_name");if(f=="delete"){i._method="delete";d="json"}if(f!="get"){i.authenticity_token=truvo.user.get("authenticity_token")}var k=b._extractCallback(g.attr("data-onsuccess"));var h=b._extractCallback(g.attr("data-onerror"));$.ajax({url:this.href,type:f,data:i,dataType:d,contentType:"text/html",success:function(e){if(f=="delete"&&!k){truvo.dom.onResourceDeleted(e)}else{if($.isFunction(k)){k(e)}}if(c){g.attr("data-toggle_name",g.html()).html(c)}}})}}return false})},_extractCallback:function(f){if(!f){return false}var d=f.split(":");var c=d[0];var e=d[1];if(c=="redirect"){return function(){truvo.redirect(e)}}else{if(c=="update"){return function(g){$(e).html(g)}}else{return false}}}};return a});truvo.view("Application",function(a){return{load:function(){window.buttons=new truvo.Buttons;window.Rating=truvo.Rating;truvo.Forms.loadExplanations();this.preloadAssets();this.initOpenXHeader();this.initNetlogHeader();this.initExpandableLists();this.initializeLightbox();this._initAjaxPagination();$("a.print").live("click",function(){window.print();return false})},preloadAssets:function(){var b=function(c){var e=(/url\(['"]?(.*)['"]?\)/).exec(c.css("background-image"));if(e&&e.length>1){var d=new Image();d.src=e[1]}};if($("#globalActivityIndicator .globalActivityIndicatorIcon")){b($("#globalActivityIndicator .globalActivityIndicatorIcon"))}},initializeLightbox:function(){$(".lightbox").lightbox({strings:{help:truvo.t("help"),prevLinkTitle:truvo.t("lightbox.prevLinkTitle"),nextLinkTitle:truvo.t("lightbox.nextLinkTitle"),prevLinkText:truvo.t("lightbox.prevLinkText"),nextLinkText:truvo.t("lightbox.nextLinkText"),closeTitle:truvo.t("lightbox.closeTitle"),image:truvo.t("lightbox.image"),of:" "+truvo.t("lightbox.of")+" "},navbarOnTop:true})},initNetlogHeader:function(){var b=function(){$.cookie("hide_netlog_ad","1",{expires:21,path:"/"})};$("#header-ad.netlog .close").click(function(){$("#header-ad.netlog").hide();b()});$("#header-ad.netlog .big-button a").click(b)},initOpenXHeader:function(){var b=function(){$.cookie("hide_header_ad","1",{expires:21,path:"/"})};$("#header-ad:not(.netlog) .close").click(function(){$("#header-ad:not(.netlog)").hide();b()});$("#header-ad:not(.netlog) .big-button a").click(b)},initExpandableLists:function(){$(".expandable dd").hide();$(".expandable dt").click(function(){$(this).toggleClass("up").next("dd").slideToggle()})},_initAjaxPagination:function(){$(".pagination:not(.noajax) > a").live("click",function(){var b=$(this).parents(".pagination").parent();$.ajax({url:this.href,dataType:"script",success:function(){truvo.dom.ie6LayoutFix(b)}});return false})}}});truvo.view("BigMap",function(){return{load:function(){$("#search_form").submit(function(){if($("#map_where").val()!=""){$("#search_anchor_lat").val("");$("#search_anchor_lng").val("");$("#search_filter_lat").val("");$("#search_filter_lng").val("")}Zuper.Search.sendRequest();return false});var b=$.ajaxSettings.complete;var d=null;var c=function(){b();Zuper.Search.Map.doPoiSearch=function(){return false};$("div.resultBlock").hover(function(){Zuper.Search.Map.doContinuousSearch=function(){return false};var e=this.id.split("_")[1];var f=$("#iw_"+e).html();var g=new GSize(20,-20);$("div.resultBlock").css("backgroundColor","white");$(this).css("backgroundColor","#FEF8EC");d=searchResults.markersById[e];d.showHighlight();d.openInfoWindowHtml(f,{pixelOffset:g});Zuper.Search.Map.doContinuousSearch=function(){return true}},function(){$(this).css("backgroundColor","white");if(d!=null){d.removeHighlight()}if(map){map.closeInfoWindow()}})};$.ajaxSettings.complete=c;function a(e){$("#map_per_page").val(e);if(Zuper.Search.form&&Zuper.Search.map){Zuper.Search.sendRequest()}}truvo.dom.showLoading()}}});truvo.view("DeleteForm",function(b){var a={load:function(c){if(!c){c=$('form[class^="destroy_"]')}this._submit=c.find(".delete-submit");this._reason=c.find("textarea");this._reason.keypress(this._onReasonChange);this._reason.blur(this._onReasonChange)},_onReasonChange:function(){if(b._reason.val()){b._submit.removeClass("disabled")}else{b._submit.addClass("disabled")}}};return a});truvo.view("DropdownSelect",function(){return{load:function(){var a=function(d,c){if(c){d.removeClass("down").parents(".select-dropdown").find("> div").hide()}else{d.toggleClass("down").parents(".select-dropdown").find("> div").toggle()}};var b=$(".select-dropdown > a");b.click(function(c){b.each(function(){if(c.target!=this){a($(this),true)}});a($(this));return false})}}});truvo.view("GotoLocationForm",function(a){return{load:function(){truvo.view.register("LocationsAutocomplete").load();a._form=$("#goto-location-form");a._field=$("#location_name");this._form.submit(function(){a._field.next().find(".ui-menu-item span").each(function(){var c=$(this);var d=a._field.val().toLowerCase();var b=c.html();if(d==b.toLowerCase()){a._field.disable();truvo.redirect(c.attr("rel"))}});return false})}}});truvo.view("LinkTracker",function(){truvo.require("util");truvo.view.loadBefore("Ajax","LinkTracker");var b={"fb-share":"facebook","netlog-share":"netlog","twitter-share":"twitter","email-share":"friend",print:"print","place-email":"email","place-url":"web"};var a=truvo.util.template("/clicks/<%=tracking_id%>/<%=link_path%>");return{load:function(){$('a[data-track="true"]').live("click",function(h){if(h.button!=0){return true}var d=(/places\/([^\/]+)/).exec(window.location.pathname);if(!d||d.length<2){return true}var f=$(this);var g=truvo.util.detect(b,function(e,i){return f.hasClass(i)});var c=a({tracking_id:g,link_path:d[1]});truvo.debug("[truvo.view.GALinks] tracking link: "+c);if(window.pageTracker){pageTracker._trackPageview(c)}return true})}}});truvo.view("LocationMapPlaces",function(){return{load:function(){$(".sort-last-places-form select").change(function(){var a=this.options[this.selectedIndex].value;var b=$(this).parents("form").attr("action")+"/map_places_block?order="+a;$.ajax({url:b,dataType:"script"})})}}});truvo.view("LocationsAutocomplete",function(){return{load:function(){$('#site_dependent_locality_location, input[data-autocomplete="true"]').autocomplete({minLength:3,source:function(b,a){$.get("/locations/autocomplete?q="+b.term+"&site_id="+$("#site_id").val(),function(c){var d=truvo.util.map(c,function(f){var g="In: "+((f.parents.length>0)?f.parents.join(" &raquo; "):"root");var e="/locations/"+f.seolink;return{value:f.id,name:f.name,seolink:e,label:"<span title='"+g+"' rel='"+e+"'>"+f.name+"</span>"}});a(d)})},focus:function(b,a){return false},select:function(f,d){var a=$(this);var c=a.attr("data-autocomplete_action");var b=d.item;switch(c){case"redirect":truvo.redirect(b.seolink);default:a.val(b.name);$("#"+a.attr("rel")).val(b.value)}return false}})}}});truvo.view("PlaceCategories",function(){return{load:function(){$(".view-all-categories").click(function(){var a=$(this).parents(".related");if(a.length==0){a=$(this).parents(".tags")}a.find("ul.extra").toggle();var b=$.trim($(this).text());$(this).text($(this).attr("data-reverse-label"));$(this).attr("data-reverse-label",b);return false})}}});truvo.view("PlacesSearchCategories",function(a){return{load:function(){$("div.extra-cats, div.extra-parents").hide();var c=function(e,g){var f=+$(g).prev().is(":hidden");$(g).text(e[f]);$(g).prev().slideToggle("fast")};var b=["expand","collapse"];$("span.extra-cats-switch").click(function(){c(b,$(this))});var d=["more categories","less categories"];$("span.extra-parents-switch").click(function(){c(d,$(this))})}}});truvo.view("ShareButton",function(a){truvo.require("JQueryExt");return{load:function(){$(".share-button-menu").each(function(){$(document.body).append($(this).remove())});$(".share-button").live("click",function(){var c=$("#"+this.id.replace("share-button","share-button-menu"));var b=c.css("display")!="block";c.alignTo($(this).parent(),{marginY:5}).toggle(b);return false});$(".share-button-menu a").live("click",function(){$(this).parents(".share-button-menu").hide();return true});$(".share-button-menu .close").live("click",function(){$(this).parents(".share-button-menu").hide();return false});$('.share-button-menu .twitter-share[data-lightflow="true"]').attr("data-lightflow",false);$(".share-button-menu .twitter-share").live("click",function(){truvo.user.isTwitter()?truvo.Lightflow.showForm(this.href):truvo.redirect(this.href);return false});$(".share-button-menu .email-share").live("click",function(){truvo.Lightflow.showForm(this.href);return false})}}});truvo.view("SmallMap",function(){return{load:function(){var b=function(){truvo.panner.addMouseActions();truvo.panner.start()};if(!truvo.dom.isIE6()){b()}else{var a=function(){if($("#map").children().length>0){setTimeout(b,3000);return}setTimeout(a,1000)};setTimeout(a,1000)}}}});truvo.view("TabbedContent",function(){return{load:function(){truvo.ui.TabNav(".tabs",".tabbed-content .inner")}}});truvo.view("Tooltips",function(a){return{_tooltip:$("#tooltip"),_text:$("#tooltip .tooltip-text"),load:function(){var b=$("span[tooltip]");b.tooltip();b.live("mouseover",function(d){var c=$(d.target);a._text.html(c.data("tooltip"));a._tooltip.alignTo(c,{marginX:-5,marginY:-5}).show()});b.live("mouseout",function(c){a._tooltip.hide()})}}});truvo.view("UserTabbedContent",function(){return{load:function(){$("#tags .tab-proxy").click(function(a){$(document.body).scrollTo($("#user-profile-tabs"),500,{offset:-30,onAfter:function(){if(jQuery.browser.msie&&jQuery.browser.version=="6.0"){truvo.dom.positionLoading()}}});return false})}}});