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){a=a.replace(/#.+$/,"");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.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 c=$.ajax;var b=function(g){if(!g){return true}try{var d=g.getResponseHeader("X-Redirect-To");if(d){truvo.redirect(d);return false}else{return true}}catch(f){return true}};$.ajax=function(d){var e=d.success||b;if(e!=b){d.success=function(f,g,h){if(b(h)){e.apply(this,[f,g,h])}}}else{d.success=b}c(d)};var a={tooltip:function(d){this.each(function(){var e=$(this);e.data("tooltip",truvo.user.get("tooltips")[e.attr("tooltip")])})},alignTo:function(h,g){h=$(h);g=$.extend({marginX:0,marginY:0},g);var f=$(this);if(f.parent().tagName!="body"){$(document.body).append(f.remove())}f.css({opacity:0}).show();var i=h.offset();var e=h.width();var d=h.height();return f.hide().css({left:(i.left+g.marginX)+"px",top:(i.top+d+g.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,open:function(c,d){setTimeout(function(){$(c.target).dialog("option","position","center")},250)}},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(g,i,c){i=i||{};c=c||{};i.format="lf";var e=typeof(g)!="string";var h=e?g.href:g;var d=(c.method||"GET");if(e){var f=$(g).attr("data-view_handler")}if(f){f=truvo.view.register(f)}this.currentUrl=h;this.currentParams=i;this.currentLfParams=c;$.ajax({url:h,type:d,data:i,preventEval:true,success:function(j,k){b._setContent(j);b.open();if(f){f.load(b._container.find("form"))}},error:function(l,k,j){switch(l.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(g){var f=10000;var e=0;var c=null;var b=false;function i(){if(!b){b=typeof(map)!="undefined"&&map&&map.isLoaded()}return b}function h(j){if(i()&&j){j.showHighlight()}}function d(j,k){if(c!=null){c.removeHighlight();if(i()&&map.closeInfoWindow){map.closeInfoWindow()}}e=k;c=j.markers[k];h(c);a.showHighlight(k);var l=$("#place-info-"+k).next();if(l.length>0){var m=new GSize(20,-20);if(c){c.openInfoWindowHtml(l.html(),{pixelOffset:m})}}}var a={panTimer:null,panOverMarkerGroup:function(j){if(i()){$(".info-window-wrapper").width($(map.k).width()*0.75);d(j,e);e=(e+1)%j.markers.length}g.panTimer=setTimeout("truvo.panner.panOverMarkerGroup(places)",f)},showHighlight:function(j){$(".places-list div.info").css({backgroundColor:"white"});$(".places-list .info:eq("+j+")").css({backgroundColor:"#FEF8EC"})},start:function(){if(!i()||!map.panTo){truvo.wait(1,g.start);return}if(places&&places.markers.length>1){g.panOverMarkerGroup(places)}},startPanning:function(){truvo.debug("truvo.panner: startPanning() is deprecated, please use truvo.panner.start()");g.start()},stopPanning:function(){clearTimeout(g.panTimer)},togglePanning:function(){var j=$("#togglePanning");if(j.hasClass("on")){this.stopPanning();j.removeClass("on").html(truvo.t("autohint.start_autohint"))}else{this.start();j.addClass("on").html(truvo.t("autohint.stop_autohint"))}return false},addMouseActions:function(){$(".places-list .info").each(function(j){$(this).hover(function(){if(i()){d(places,j)}})})}};return a});truvo.api("Rating",function(self){return{cS:"-wrapper",fS:"-field",rS:"-rate",rates:["Awful","Not too good","OK","Good","Fantastic"],eR:"",init:function(){var ratingLinks=$("ul.star-rating li a");ratingLinks.live("click",function(){if(this.onclick){return true}var el=$(this);self.set(el.attr("data-prefix"),el.html(),el.attr("data-width"));return false});ratingLinks.live("mouseover",function(){if(this.onclick){return true}var el=$(this);self.show(el.attr("data-prefix"),el.html());return false});ratingLinks.live("mouseout",function(){if(this.onclick){return true}var el=$(this);self.hide(el.attr("data-prefix"),el.html());return false})},set:function(prefix,rate,width){$("#"+prefix+this.fS)[0].value=rate;$("#"+prefix+"-current-rating").css("width",(rate*width)+"px")},show:function(prefix,rating){$("#"+prefix+this.rS).html(eval(prefix+"_qualifications["+(rating-1)+"]"))},hide:function(prefix,rating){var v=$("#"+prefix+this.fS).value;if(rating>0&&rating<6){$("#"+prefix+this.rS).html(this.rates[v-1])}else{$("#"+prefix+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)||n.parents(".ajax-view").length>0){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(){for(var a in this._registered){this._loadView(a)}},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._views[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(!$.isFunction(this._views[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._views[a]=this._registered[a];this._views[a].load();delete this._registered[a]}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,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.redirect("/places")},onFinish:function(c){$("#place_form").submit()}},cssClasses:{buttons:{div:"clear buttons",cancel:"button grey cancelButton customized",previous:"button grey previousButton customized",next:"button orange nextButton customized",finish:"button orange finishButton customized"}}}).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,e.accuracy);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,e.accuracy)}}}})}};$("#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(f,d,e){var c=new GLatLng(f,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()}var g=new Array(2,4,6,10,12,13,14,15,16);b.map.setCenter(c,g[e])},_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._categorySelects.html("");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._initPagination();this._initLightFlowLinks();this._initRemoteLinks();this._initDeleteLinks();$("body").ajaxSend(b.onBeforeSend);$("body").ajaxComplete(b.onComplete);$("body").ajaxError(b.onError)},onBeforeSend:function(){truvo.dom.showLoading()},onComplete:function(c){truvo.dom.hideLoading();truvo.view.Buttons.show();if(typeof(translationMenu)!="undefined"){translationMenu()}},onError:function(c){truvo.debug("XHR error: ",c.status," - ",c.statusText)},_initPagination:function(){$(".pagination.ajax-view:not(.noajax) > a").live("click",function(){var c=$(this).parents(".pagination-target:first");$.ajax({url:this.href,success:function(d){c.html(d)}});return false});$(".pagination:not(.noajax):not(.ajax-view) > a").live("click",function(){var c=$(this).parents(".pagination").parent();$.ajax({url:this.href,dataType:"script",success:function(){truvo.dom.ie6LayoutFix(c)}});return false})},_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.Rating=truvo.Rating;truvo.Forms.loadExplanations();this.preloadAssets();this.initOpenXHeader();this.initNetlogHeader();this.initExpandableLists();this.initializeLightbox();$("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()})}}});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("Buttons",function(){var a=function(m){if(b(m)){return m}else{if(m.tagName=="SPAN"&&b(m.parentNode)){return m.parentNode}else{return false}}};var j=function(q){var n=$(q);var p=n.children("span");var m=n.attr("data-toggle_name");var o=p.html();n.attr("data-toggle_name",o);p.html(m)};var e=function(){return false};var l=function(o){var n=$(o);var p=n.attr("class");var m=p.split(" ")[1];n.attr("class",/inverted/.test(m)?p.replace("-inverted",""):p.replace(m,m+"-inverted"))};var c=function(m){return $(m).attr("data-type")=="submit"&&$(m).attr("data-auto_submit")!="false"};var i=function(m){return/get|post|put|delete/.test($(m).attr("data-method"))};var d=function(m){return $(m).attr("data-type")=="lightflow"};var b=function(m){return m.tagName=="A"&&$(m).hasClass("button")};var k=function(m){return $(m).hasClass("disabled")};var h=function(m){return $(m).attr("data-confirm")!=null};var f=function(){var n=$(this);if(h(this)){if(!window.confirm(n.attr("data-confirm"))){return false}}if(c(this)){var p=n.parents("form");var o=n.children(".label");n.addClass("disabled");n.data("name",o.html());o.html(n.attr("data-loading_message")||truvo.t("common.loading_message"));p.data("complete",function(){o.html(n.data("name"));n.removeClass("disabled");p.removeData("complete").unbind("submit",e)});p.submit();p.submit(e);return false}else{if(d(this)){truvo.Lightflow.showForm(this.href);return false}else{if(i(this)){n.addClass("disabled");var m=$(this).attr("data-method");var q={};if(m=="post"){q.authenticity_token=truvo.user.get("authenticity_token")}$.ajax({url:this.href,type:m,data:q,dataType:"script",complete:function(){n.removeClass("disabled");truvo.dom.hideLoading()},success:function(){if(n.attr("data-toggle_name")){j(n)}if(n.attr("data-toggle_inverted")=="true"){l(n)}}});return false}else{return true}}}};var g=function(n){var m=a(n.target);if(m){return k(m)?false:f.apply(m)}else{return true}};return{load:function(){$("body").click(g);this.show()},show:function(){$("a.button:not(.customized)").show()}}});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("Events",function(b){var a={activeFilters:{},load:function(){this._eventsBox=$("#events-box");this._filterPaginationLinks=$("#filter-box .pagination > a");this._initFilterLinks();this._initFilterOffLinks()},_initFilterOffLinks:function(){$("#filter-box .filter-off").live("click",function(f){var d=$(f.target);var c=d.attr("data-filter-type");delete b.activeFilters["filters["+c+"]"];$("#"+c+"-list .active").removeClass("active");d.addClass("active");b._reloadEventsBox();return false})},_initFilterLinks:function(){$(".filter-box-col li a").live("click",function(d){var c=$(d.target);b._setFilters(c);b._reloadEventsBox();return false})},_setFilters:function(d){var c=d.attr("data-filter-type");d.parents("ul").find(".active").removeClass("active");$('.filter-off[data-filter-type="'+c+'"]').removeClass("active");d.addClass("active");b.activeFilters["filters["+c+"]"]=d.attr("data-filter-value");b._filterPaginationLinks.attr("href",function(){return this.href+"&"+$.param(b.activeFilters)})},_reloadEventsBox:function(){var c="/events?"+$.param(b.activeFilters);$.get(c,function(d){b._eventsBox.html(d)})}};return a});truvo.view("EventsDistanceSlider",function(a){var b={load:function(){this._slider=$("#events-distance-slider").slider({step:10,max:30,stop:a._onChange});this._queryUrl=this._slider.attr("data-events-query-url");this._eventsList=$(".media-list.events").parents(".pagination-target")},_onChange:function(){var c=a._queryUrl;var d=a._slider.slider("option","value");if(d){c+="?filters[distance]="+d}a._slider.slider("disable");$.get(c,function(e){a._slider.slider("enable");a._eventsList.html(e)});return false}};return b});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(){$('input[data-location-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})}}});truvo.view("WebtrendsLinkTracker",function(a){truvo.view.loadBefore("Ajax","WebtrendsLinkTracker");truvo.view.loadBefore("Application","WebtrendsLinkTracker");return{load:function(){$('a[data-webtrends-track="true"]').live("click",function(b){if(b.button!=0){return true}a.runForLink($(this))})},runForLink:function(d){var c=d.attr("data-track-type");var e=d.attr("data-track-place");var b=d.attr("data-track-value");if(b.match("^#")){b=$(b).val()}a.runTrack(c,e,b);return true},runTrack:function(c,d,b){truvo.debug("[truvo.view.WebtrendsLinks] tracking link: "+[c,d,b]);dcsMultiTrack("DCSext.linktype",c,"DCSext.linkplace",d,"DCSext.linkvalue",b)},registerAjaxTracking:function(g){var f=g.attr("data-track-type");var c=g.attr("data-track-type-fail");var h=g.attr("data-track-place");var b=g.attr("data-track-value");var d=null;var e=function(){if(b.match("^#")){b=$(b).val()}a.runTrack(f,h,b);$("body").unbind("ajaxError",d);$("body").unbind("ajaxSuccess",e)};d=function(){if(b.match("^#")){b=$(b).val()}a.runTrack(c,h,b);$("body").unbind("ajaxError",d);$("body").unbind("ajaxSuccess",e)};$("body").ajaxSuccess(e);$("body").ajaxError(d)}}});