var geograffiti=geograffiti||{};geograffiti.map={Defaults:{MapDefaultLatitude:35.70718665682654,MapDefaultLongitude:-98.525390625,MapDefaultZoomLevel:4,MapLocationFoundZoomLevel:11},MarkerLetterLabels:["A","B","C","D","E","F","G","H","I","J"],BaseIcon:null,DefaultVoiceMarkIcon:null,DefaultBizMarkIcon:null,DefaultProfileIcon:null,mapElement:null,map:null,infoWindowTabs:[null,null],infoWindowBuffer:new gg.StringBuffer(),voiceMarkTable:$H(),googleLocalResultsTable:$H(),viewportOverlay:null,applyOptions:function(a){if(a.width&&a.height){var b="width:"+a.width+"px;height:"+a.height+"px;";this.mapElement.setStyle(b)}else{if(a.width){var b="width:"+a.width+"px;";this.mapElement.setStyle(b)}else{if(a.height){var b="height:"+a.height+"px;";this.mapElement.setStyle(b)}}}},initializeDefaultIcons:function(){var a=this;a.BaseIcon=new google.maps.Icon(G_DEFAULT_ICON);a.BaseIcon.shadow="http://www.google.com/mapfiles/shadow50.png";a.BaseIcon.iconSize=new GSize(20,34);a.BaseIcon.shadowSize=new GSize(37,34);a.BaseIcon.iconAnchor=new GPoint(9,34);a.BaseIcon.infoWindowAnchor=new GPoint(9,2);a.DefaultVoiceMarkIcon=new google.maps.Icon(a.BaseIcon,"/images/voicemark.png");a.DefaultVoiceMarkIcon.shadow="/images/voicemark-shadow.png";a.DefaultVoiceMarkIcon.iconSize=new google.maps.Size(37,52);a.DefaultVoiceMarkIcon.shadowSize=new google.maps.Size(76,42);a.DefaultVoiceMarkIcon.iconAnchor=new google.maps.Point(18,52);a.DefaultVoiceMarkIcon.infoWindowAnchor=new google.maps.Point(20,25);a.DefaultVoiceMarkIcon.imageMap=[18,52,12,35,5,31,1,25,0,21,0,16,1,11,3,7,8,4,12,1,17,0,23,0,29,3,32,5,34,10,36,13,37,17,36,21,35,25,32,30,29,32,27,34,24,35];a.DefaultVoiceMarkIcon.transparent="/images/voicemark-transparent.png";a.DefaultBizMarkIcon=new google.maps.Icon(a.DefaultVoiceMarkIcon,"/images/bizmark.png");a.DefaultProfileIcon=new google.maps.Icon(a.DefaultVoiceMarkIcon,"/images/map-profile-icon.png")},loadCallback:null,load:function(a){this.loadCallback=a;this.loadLibraries()},initializeStarboxHack:function(){Starboxes.processBuildQueue()},initializeAudioPlayer:function(){if(gg.debug){gg.log("now setting up audio player...wiht options %o",gg.AudioPlayerDefaults)}AudioPlayer.setup("/flash/player.swf",gg.AudioPlayerDefaults);if(gg.debug){gg.log("done setting up audio player")}},loadLibraries:function(){var a=this;geograffiti.require("/js/swfobject-uncompressed.js");geograffiti.require("/js/audio-player-uncompressed.js");geograffiti.require("/js/starbox.js");geograffiti.require("/js/prototip.js");geograffiti.require("/js/accordion.js");geograffiti.setOnLoadCallback(function(){a.loadCallback()})},initialize:function(j){try{var i=this;this.mapElement=$("voicemarkmap");if(typeof j!=="undefined"){this.applyOptions(j)}var g=null;var a=null;gg.log("loader location %o",google.loader);if(google.loader.ClientLocation&&google.loader.ClientLocation.latitude&&google.loader.ClientLocation.longitude){g=google.loader.ClientLocation.latitude;a=google.loader.ClientLocation.longitude;gg.log("set lat and lng for loader as %o %o",g,a)}this.map=new google.maps.Map2(this.mapElement);this.initializeMapListeners();this.initializeDefaultIcons();var h=null;var d=this.Defaults.MapDefaultZoomLevel;if(g&&a){h=new google.maps.LatLng(g,a);d=this.Defaults.MapLocationFoundZoomLevel;gg.log("setting point from google location")}else{h=new google.maps.LatLng(this.Defaults.MapDefaultLatitude,this.Defaults.MapDefaultLongitude)}this.map.setCenter(h,d);this.map.addControl(new google.maps.LargeMapControl3D(),new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT,new google.maps.Size(50,20)));this.map.addControl(new google.maps.MenuMapTypeControl(),new google.maps.ControlPosition(G_ANCHOR_TOP_RIGHT,new google.maps.Size(20,20)));this.map.enableScrollWheelZoom();this.map.enableContinuousZoom();this.map.savePosition();Event.observe(window,"resize",function(l){var k={width:$("viewport").getWidth()-$("sidebarcontent").getWidth(),height:$("viewport").getHeight()-$("toparea").getHeight()};i.applyOptions(k);i.resized()});var b=$("sidebar");b.observe(gg.SideBarEvent.VoiceMarkLinkClicked,i.voiceMarkLinkClicked.bind(i));b.observe(gg.SideBarEvent.GoogleLocalResultLinkClicked,i.googleLocalResultLinkClicked.bind(i));b.observe(gg.SideBarEvent.VoiceMarksHidden,i.sideBarVoiceMarksHidden.bind(i));b.observe(gg.SideBarEvent.VoiceMarksVisible,i.sideBarVoiceMarksVisible.bind(i));b.observe(gg.SideBarEvent.GoogleLocalResultsHidden,i.sideBarGoogleLocalResultsHidden.bind(i));b.observe(gg.SideBarEvent.GoogleLocalResultsVisible,i.sideBarGoogleLocalResultsVisible.bind(i));b.observe(gg.SideBarEvent.ViewProfileLinkClicked,i.viewProfileLinkClicked.bind(i));b.observe(gg.SideBarEvent.ResultUserNameClicked,i.resultUserNameClicked.bind(i));b.observe(gg.SideBarEvent.MouseOverGoogleLocalResult,i.mouseOverGoogleLocalResult.bind(i));b.observe(gg.SideBarEvent.MouseOverVoiceMarkResult,i.mouseOverVoiceMarkResult.bind(i));this.mapElement.observe(gg.MapEvent.ViewProfileLinkClicked,i.viewProfileLinkClicked.bind(i));document.observe(gg.SearchUsersControlEvent.UserSelected,i.userSelectedFromSearchUsersControl.bindAsEventListener(i));$("searcher").observe(gg.SearcherEvent.GoingToSearch,i.searcherGoingToSearch.bindAsEventListener(i));var c=$$(".mapfilter");if(gg.debug){gg.log("array of mapfilters is %o",c)}$$(".mapfilter").each(function(e){if(gg.debug){gg.log("iterating filter %o",e)}e.observe("click",i.mapFilterClicked.bindAsEventListener(i))});this.initializeStarboxHack();this.initializeAudioPlayer();document.observe("starbox:rated",this.updateStarRating.bindAsEventListener(this))}catch(f){if(gg.debug){gg.log("ERROR %o",f)}}},mouseOverGoogleLocalResult:function(d){var b=this;var f=d.memo.id;gg.log("Mouse over google local result %d",f);var a=b.googleLocalResultsTable.get(f);if(a){var c=$(a.cn);if(c){if(!c.transitioning){Object.extend(c,{transitioning:false});new Effect.Move(c,{x:0,y:-100,mode:"relative",duration:0.3,beforeStart:function(e){e.element.transitioning=true},afterFinish:function(e){new Effect.Move(c,{x:0,y:100,mode:"relative",duration:0.5,transition:Effect.Transitions.spring,afterFinish:function(g){g.element.transitioning=false}})}})}}}},mouseOverVoiceMarkResult:function(d){var b=this;var f=d.memo.id;gg.log("Mouse over voice mark result %d",f);var a=b.voiceMarkTable.get(f);gg.log("Marker associated with result is %o",a);if(a){var c=$(a.cn);if(c){if(!c.transitioning){Object.extend(c,{transitioning:false});new Effect.Move(c,{x:0,y:-100,mode:"relative",duration:0.3,beforeStart:function(e){e.element.transitioning=true},afterFinish:function(e){new Effect.Move(c,{x:0,y:100,mode:"relative",duration:0.5,transition:Effect.Transitions.spring,afterFinish:function(g){g.element.transitioning=false}})}})}}}},sendRateVoiceMarkRequest:function(b,c){var a=this;new Ajax.Request(gg.ApiUrl.RateVoiceMark,{parameters:$H(b),onSuccess:function(e){var d=e.responseText.evalJSON(true);if(d){if(d.status!==0){a.updateAndFlashElement(c,true,"Error Rating!","starbox-indicator-error")}else{a.updateAndFlashElement(c,true,"Rating Submitted!","starbox-indicator-success")}}else{a.updateAndFlashElement(c,true,"Error Rating!","starbox-indicator-error")}},onFailure:function(d){a.updateAndFlashElement(c,true,"Error Rating!","starbox-indicator-error")}})},updateStarRating:function(g){gg.log("star rating with source element %o",g.element());g.stop();var c=this;var d=g.element();var a=d.down(".indicator");var b=g.memo;var f={vmid:b.identity,value:b.rated};if(!gg.userLoggedIn()){c.createNeedLoginTip(d,{message:"You need to be logged in to rate Voice Marks.",onLogin:function(){c.sendRateVoiceMarkRequest(f,a)},onNoLogin:function(){gg.log("They did not login!")}})}else{c.sendRateVoiceMarkRequest(f,a)}},fireSearchByUser:function(c,a,b){var d=c===null||c<=0;this.mapElement.fire(gg.MapEvent.UserVoiceMarksSearchRequested,{id:d?a:c,userName:b,isAnonymous:d})},applyFilter:function(f,e,a){if(gg.debug){gg.debug("apply filter with id %d",f)}var d=this.getBounds();var b=d.northEast;var c=d.southWest;this.mapElement.fire(gg.MapEvent.FilterSelected,{filter:f,userid:e,vid:a,botLeftLat:c.latitude,botLeftLon:c.longitude,topRightLat:b.latitude,topRightLon:b.longitude})},mapFilterClicked:function(c){var a=this;if(gg.debug){gg.log("filter has been clicked %o",c)}var b=c.element().identify();var d=parseInt(b.gsub("mapfilter-",""));if(gg.debug){gg.info("Selected filter %s with id %d",b,d)}if(d===1||d===2){if(!gg.userLoggedIn()){a.createNeedLoginTip(c.element(),{onLogin:function(){}})}else{a.applyFilter(d,gg.getMySystemUserId(),null)}}else{a.applyFilter(d,gg.getMySystemUserId(),null)}},searcherGoingToSearch:function(b){var a=this;a.map.clearOverlays();if(a.voiceMarkTable){a.voiceMarkTable.each(function(c){a.voiceMarkTable.unset(c.key)})}},sideBarVoiceMarksHidden:function(b){var a=this;a.voiceMarkTable.each(function(c){c.value.hide()})},sideBarVoiceMarksVisible:function(b){var a=this;a.voiceMarkTable.each(function(c){c.value.show()})},sideBarGoogleLocalResultsHidden:function(b){var a=this;a.googleLocalResultsTable.each(function(c){c.value.hide()})},sideBarGoogleLocalResultsVisible:function(b){var a=this;a.googleLocalResultsTable.each(function(c){c.value.show()})},mapLoaded:function(){var l=this;var c=$("loadMyAccount");var g=$("voiceMarkToShow");var k=$("systemUserToShow");var b=$("tagToSearchForForm");if(g){var m=$F(g);if(m&&!String.isNullOrEmpty(m)){this.openVoiceMarkBubble(m);g.writeAttribute("value",null)}else{l.applyFilter(4,null,null)}}else{if(k){var f=$F(k);if(f&&!String.isNullOrEmpty(f)){this.openProfileBubble(f);k.writeAttribute("value",null)}}else{if(c&&!String.isNullOrEmpty($F(c))){gg.SideBar.simulateTabClicked($("sidebar-tab-account"))}else{if(b){var h=$F(b.tagIdToSearchFor);var a=$F(b.tagNameToSearchFor);gg.log("launching search by tag on %d - %s",h,a);l.fireSearchAllWithTag(h,a)}else{if(!String.isNullOrEmpty($F("searchbox-what"))||!String.isNullOrEmpty($F("searchbox-where"))){$("searchbutton").click()}else{l.applyFilter(4,null,null)}}}}}try{var j="pub-5644156419851183";var d={maxAdsOnMap:2,style:G_ADSMANAGER_STYLE_ADUNIT,};adsManager=new google.maps.AdsManager(this.map,j,d);adsManager.enable()}catch(i){}$("load-my-account-link").observe("click",function(n){n.stop();gg.SideBar.simulateTabClicked($("sidebar-tab-account"))})},initializeMapListeners:function(){if(gg.debug){gg.log("%o",this)}var b=google.maps.Event.addListener(this.map,"click",this.mapClicked.bind(this));var a=google.maps.Event.addListener(this.map,"load",this.mapLoaded.bind(this));var c=google.maps.Event.addListener(this.map,"dragend",this.mapMovedEnd.bind(this))},resized:function(){this.map.checkResize()},getBounds:function(){var c=this.map.getBounds();var a=c.getNorthEast();var b=c.getSouthWest();return{southWest:{latitude:b.lat(),longitude:b.lng()},northEast:{latitude:a.lat(),longitude:a.lng()}}},getCenter:function(){var a=this.map.getCenter();return{latitude:a.lat(),longitude:a.lng()}},getZoom:function(){return this.map.getZoom()},mapClicked:function(b,a){if(!b){this.openPublishVoiceMarkBubble(a,null,null,true)}},mapMovedEnd:function(){},generatePublishVoiceMarkBubbleContent:function(h,e){var b=new gg.StringBuffer();var g=b.append.bind(b);b.append('<div id="publish-voicemark-container">');b.append('<div id="publish-voicemark-title">');b.append("Voice Mark this Location!");b.append("</div>");var f=city=state=postalCode=country=mainPhoneNumber=title="";if(e!=null){if(gg.debug){gg.log("loc info is %o",e)}title=e.title;f=e.addressLineOne;city=e.city;state=e.state;postalCode=e.postalCode;country=e.country;var c=e.phoneNumbers;if(c){var j=null;for(var d=0,a=c.length;d<a;++d){j=c[d];if(j.type===""||j.type==="main"){mainPhoneNumber=j.number;break}}}b.append('<div id="publish-voicemark-locationinfo">');b.append('<div id="publish-voicemark-locationinfo-title">$0</div>',title);b.append('<div id="publish-voicemark-locationinfo-addresslineone">$0</div>',f);b.append('<div id="publish-voicemark-locationinfo-city-state-zip-country">$0 $1 $2 $3</div>',city,state,postalCode,country);b.append('<div id="publish-voicemark-locationinfo-phonenumber">$0</div>',mainPhoneNumber);b.append("</div>")}g('<form id="publish-voicemark-form" action="$0">',gg.ApiUrl.CreateVoiceMark);g('<div class="publish-voicemark-step-container">');g('<div class="publish-voicemark-bullet-container"><div class="publish-voicemark-bullet">1</div></div>');g('<div id="publish-voicemark-step-1-container">');g('<div id="publish-voicemark-title-container">');g('<label for="publish-voicemark-form-title">Venue Name/Topic</label>');g('<div id="publish-voicemark-title-description">Starbucks, Sale at Macys, dog barking</div>');g('<input type="text" maxlength="40" id="publish-voicemark-form-title" name="title" value="$0"/>',title);g("</div>");g("</div>");g("</div>");g('<div class="publish-voicemark-step-container">');g('<div class="publish-voicemark-bullet-container"><div class="publish-voicemark-bullet">2</div></div>');g('<div id="publish-voicemark-step-2-container">');g('<div><input type="radio" id="publish-voicemark-method-phone-call" name="publish-voicemark-method" value="phone-call" checked="checked"><label id="publish-voicemark-method-phone-call-label" for="publish-voicemark-method-phone-call">Publish via Phone Call</label></input></div>');g('<div><input type="radio" id="publish-voicemark-method-upload" name="publish-voicemark-method" value="upload"><label id="publish-voicemark-method-upload-label" for="publish-voicemark-method-upload">Upload Sound File (MP3, WAV, or MP4/M4A)</label></input></div>');g("</div>");g("</div>");g('<div class="publish-voicemark-step-container">');g('<div class="publish-voicemark-bullet-container"><div class="publish-voicemark-bullet">3</div></div>');g('<div id="publish-voicemark-step-3-container">');g('<div id="publish-voicemark-usernumber-container">');g('<label for="publish-voicemark-usernumber">Your Phone Number</label>');g('<div id="publish-voicemark-usernumber-description">Enter a valid U.S. or Canadian number</div>');g('<input type="text" maxlength="10" id="publish-voicemark-usernumber" name="phonenum"></input>');g('<div id="publish-voicemark-submit-container" class="disabled">');g('<input type="image" src="/images/call-me.png" id="publish-voicemark-submit-button"></input>');g("</div>");g("</div>");g('<div id="publish-voicemark-upload-container">');g('<label for="publish-voicemark-fileupload">Choose File</label>');g('<div id="publish-voicemark-fileupload-description">Choose an MP3, WAV, or M4A/MP4 file to upload</div>');g('<input type="file" id="publish-voicemark-fileupload" name="soundfile"></input>');g('<div id="publish-voicemark-submit-container" class="disabled">');g('<input type="image" src="/images/upload-button.png" id="publish-voicemark-submit-button"></input>');g("</div>");g("</div>");g("</div>");g("</div>");g('<input type="hidden" id="publish-voicemark-latitude" name="lat" value="$0"/>',h.lat());g('<input type="hidden" id="publish-voicemark-longitude" name="lon" value="$0"/>',h.lng());g('<input type="hidden" id="publish-voicemark-address-line-one" name="addressLineOne" value="$0" />',f);g('<input type="hidden" id="publish-voicemark-city" name="city" value="$0"/>',city);g('<input type="hidden" id="publish-voicemark-state" name="state" value="$0" />',state);g('<input type="hidden" id="publish-voicemark-location-phone-number" name="locationPhoneNumber" value="$0"/>',mainPhoneNumber);g('<input type="hidden" id="publish-voicemark-uid" name="uid" value="-1"/>');g("</form>");g('<div id="voicemark-uploader-progress-container">');g('<div id="voicemark-uploader-progress-bar-container">');g('<div id="voicemark-uploader-progress-bar"></div>');g('<div id="voicemark-uploader-progress-message"></div>');g("</div>");g("</div>");g('<iframe id="publish-voicemark-remoting-frame" name="publish-voicemark-remoting-frame" src="about:blank"></iframe>');b.append("</div>");return b.toString()},enableCallMeButtonSection:function(){var a=$("publish-voicemark-submit-button");if(a){}},disableCallMeButtonSection:function(c,b){var a=$("publish-voicemark-submit-button");if(a){}},publishVoiceMarkTitleValid:function(){var a=false;var b=$F("publish-voicemark-form-title");if(b&&!b.blank()){a=true}return a},publishVoiceMarkUserNumberValid:function(){var b=false;var a=$F("publish-voicemark-usernumber");if(a.charAt(0)==="1"){a=a.substring(1)}if(a.length===10){b=true}return b},uploadVoiceMarkSoundFileValid:function(){var b=false;var a=$F("publish-voicemark-fileupload");if(a&&!a.blank()){if(a.endsWith(".mp3")||a.endsWith(".MP3")||a.endsWith("wav")||a.endsWith(".WAV")||a.endsWith(".mp4")||a.endsWith(".MP4")||a.endsWith("m4a")||a.endsWith("M4A")){b=true}}return b},validatePublishVoiceMarkInput:function(){var a=$F("publish-voicemark-usernumber");if(a.charAt(0)==="1"){a=a.substring(1);$("publish-voicemark-usernumber").value=a}gg.log("%o --",a);if(a.length===10){if(this.publishVoiceMarkTitleValid()){this.enableCallMeButtonSection()}else{this.disableCallMeButtonSection(true,false)}}else{if(this.publishVoiceMarkTitleValid()){this.disableCallMeButtonSection(false,true)}else{this.disableCallMeButtonSection(true,true)}}},createVoiceMarkFormListener:function(c){var a=this;c.stop();if(!a.publishVoiceMarkTitleValid()){var b="Title not valid";alert(b)}else{if(!a.publishVoiceMarkUserNumberValid()){var b="Phone Number not valid";alert(b)}else{gg.log("form %o got a submit...what's going on?");$("publish-voicemark-form").request({onSuccess:function(i){var d=i.responseText.strip();var f=String.format("/voicemarks/$0/",d);var e=new gg.StringBuffer();var h=e.append.bind(e);h('<p id="phone-publish-header">GEOGRAFFITI IS CALLING YOU NOW</p>');h('<p id="phone-publish-from-number">( from 213&bull;221&bull;3802 )</p>');h('<div id="phone-publish-call-to-action-container">');h('<a id="phone-publish-call-to-action-link" href="$0" title="View Voice Mark $1">',f,d);h('<img id="phone-publish-call-to-action-button" src="/images/view-voicemark-button-300x64.png" alt="VIEW VOICE MARK"/>');h("</a>");h("</div>");h('<p id="phone-publish-footer">after you hang up</p>');var g=$("publish-voicemark-container");g.update(e.toString());g.writeAttribute("style","margin-top:40px");$("phone-publish-call-to-action-link").observe("click",function(j){gg.log("got a click...opening the bubble");j.stop();a.openVoiceMarkBubble(d)})},onFailure:function(){alert("An error occurred and we weren't able to call you.  Please try again.");gg.log("onFailure got hit!!!!!")}})}}},uploadVoiceMarkFormListener:function(d){var a=this;if(!a.publishVoiceMarkTitleValid()){d.stop();var c="Title not valid";alert(c)}else{if(!a.uploadVoiceMarkSoundFileValid()){d.stop();var c="You need to select a WAV, MP3, or M4A/MP4 file to upload";alert(c)}else{gg.log("all is good so we will let the submit event go through");$("voicemark-uploader-progress-bar-container").setStyle("visibility:visible");$("voicemark-uploader-progress-message").innerHTML="Uploading";new PeriodicalExecuter(function(e){var f=String.format("/api/voicemark/session-uploads/soundFile?$0",new Date().getTime());new Ajax.Request(f,{method:"GET",onSuccess:function(g){var k=g.responseText.evalJSON(true);gg.info("got api response at %o",k);$("voicemark-uploader-progress-message").innerHTML=String.format("$0%",k.uploadProgress);var h=$("voicemark-uploader-progress-bar-container").getWidth();var i=k.uploadProgress/100;var j=(h*i)-2;$("voicemark-uploader-progress-bar").setStyle(String.format("width:$0px",j));if(k.uploadProgress>=100){e.stop()}},onFailure:function(g){gg.info("failure...%o",g);e.stop()},onComplete:function(g){gg.info("complete....%o",g)},onException:function(g,h){gg.info("exception sending ajax call %o",h);e.stop()}})},2);var b=$("publish-voicemark-remoting-frame");if(b.attachEvent){b.attachEvent("onload",function(){try{var f=b.contentWindow.document.body.innerHTML.evalJSON(true);gg.info("result of attachEvent ... %o",f);$("voicemark-uploader-progress-message").innerHTML="DONE!";$("voicemark-uploader-progress-bar-container").setStyle("visibility:hidden");$("voicemark-uploader-progress-bar").setStyle("width:0px");a.openVoiceMarkBubble(f.voiceMark.id)}catch(g){gg.error("error from attachEvent %o",g);$("voicemark-uploader-progress-message").innerHTML="ERROR!"}})}else{try{Event.stopObserving(b,"load");Event.observe(b,"load",function(g){g.stop();var f=b.contentDocument.documentElement.textContent.evalJSON(true);gg.info("result of observe load is %o",f);$("voicemark-uploader-progress-message").innerHTML="DONE!";$("voicemark-uploader-progress-bar-container").setStyle("visibility:hidden");$("voicemark-uploader-progress-bar").setStyle("width:0px");a.openVoiceMarkBubble(f.voiceMark.id)})}catch(d){gg.error("error from observe load... %o",d);$("voicemark-uploader-progress-message").innerHTML="ERROR!"}}}}},openPublishVoiceMarkBubble:function(a,e,f,d){var c=this;var b=null;if(d==false){b=f}else{b=new google.maps.Marker(a,c.DefaultVoiceMarkIcon);c.map.addOverlay(b);google.maps.Event.addListener(b,"infowindowclose",function(){c.map.removeOverlay(b)})}google.maps.Event.addListener(b,"infowindowopen",function(){if(!String.isNullOrEmpty(gg.mySystemUserId)&&!isNaN(gg.mySystemUserId)&&gg.mySystemUserId>-1){$("publish-voicemark-uid").writeAttribute("value",gg.mySystemUserId);gg.info("gg.mySystemUserId was not null or empty so set value to "+gg.mySystemUserId)}else{new Ajax.Request(gg.ApiUrl.GetMySystemUserId,{method:"post",onSuccess:function(n){var m=n.responseText.evalJSON(true);gg.info("the apiREsponse was "+n);if(m){if(!(String.isNullOrEmpty(m.id))){gg.mySystemUserId=m.id;$("publish-voicemark-uid").writeAttribute("value",gg.mySystemUserId)}}},onFailure:function(m){gg.warn("Failure with call to %o",m)},onException:function(m){gg.warn("Exception with call to %o",m)}})}c.disableCallMeButtonSection(true,true);var j=$("publish-voicemark-form");var i=$("publish-voicemark-messages");var g=$("publish-voicemark-method-phone-call");var l=$("publish-voicemark-method-upload");g.observe("click",function(m){gg.debug("Event on pub via phone call %o",m);$("publish-voicemark-usernumber-container").setStyle("display:block");$("publish-voicemark-upload-container").setStyle("display:none");$("publish-voicemark-form").writeAttribute("action",gg.ApiUrl.CreateVoiceMark);$("publish-voicemark-form").removeAttribute("target");$("publish-voicemark-form").removeAttribute("enctype");$("publish-voicemark-form").removeAttribute("method");if($F("publish-voicemark-usernumber")==="0000000000"){$("publish-voicemark-usernumber").writeAttribute("value","")}j.stopObserving();j.observe("submit",c.createVoiceMarkFormListener.bind(c))});l.observe("click",function(m){gg.debug("Event on pub via upload %o",m);$("publish-voicemark-usernumber-container").setStyle("display:none");$("publish-voicemark-upload-container").setStyle("display:block");$("publish-voicemark-form").writeAttribute("action","/api/voicemark/upload/");$("publish-voicemark-form").writeAttribute("target","publish-voicemark-remoting-frame");$("publish-voicemark-usernumber").writeAttribute("value","0000000000");$("publish-voicemark-form").writeAttribute("enctype","multipart/form-data");$("publish-voicemark-form").writeAttribute("method","post");j.stopObserving();j.observe("submit",c.uploadVoiceMarkFormListener.bind(c))});var h=$("publish-voicemark-form-title");h.stopObserving();h.observe("keypress",function(m){c.validatePublishVoiceMarkInput.bind(c).defer()});var k=$("publish-voicemark-usernumber");k.stopObserving();k.observe("keypress",function(n){gg.log("Key pressed %o",n);var m=n.charCode||n.keyCode;gg.log("key code is %d",m);if(m>=48&&m<=57){c.validatePublishVoiceMarkInput.bind(c).defer()}else{if(m>=58){n.stop();gg.log("not number")}else{if(m!=Event.KEY_BACKSPACE&&m!=Event.KEY_DELETE&&m!=Event.KEY_LEFT&&m!=Event.KEY_UP&&m!=Event.KEY_RIGHT&&m!=Event.KEY_DOWN){n.stop()}else{gg.log("probably some non-printable");c.validatePublishVoiceMarkInput.bind(c).defer()}}}});j.stopObserving();j.observe("submit",c.createVoiceMarkFormListener.bind(c))});gg.log("going to open infowindow");b.openInfoWindowHtml(c.generatePublishVoiceMarkBubbleContent(a,e),{maxWidth:250});if(gg.debug){gg.log("opened")}},openVoiceMarkBubble:function(c){var b=this;if(gg.debug){gg.log("I'm going to open voice mark %d",c)}var a=b.voiceMarkTable.get(c);if(a){google.maps.Event.trigger(a,"click")}else{if(gg.debug){gg.log("Marker for Voice Mark %d is not in the table",c)}new Ajax.Request(gg.ApiUrl.GetVoiceMarkInfo,{parameters:{vmid:c,format:"json"},onSuccess:function(e){var d=e.responseText.evalJSON(true);a=b.addVoiceMarkToMap(d);google.maps.Event.trigger(a,"click")},onFailure:function(){if(gg.debug){gg.log("Failure getting VM info for VMID=%d",c)}}})}},openProfileBubble:function(b){var a=this;new Ajax.Request(gg.ApiUrl.GetUserInfo,{parameters:{uid:b,format:"json"},onSuccess:function(e){var c=e.responseText.evalJSON(true);var d=a.addProfileToMap(c);if(d){google.maps.Event.trigger(d,"click")}},onFailure:function(){if(gg.debug){gg.log("Failure getting user info for user uid=%d ",b)}}})},openGoogleLocalResultBubble:function(c){var b=this;var a=b.googleLocalResultsTable.get(c);if(a){if(gg.debug){gg.log("marker found as GOOG %o",a)}google.maps.Event.trigger(a,"click")}else{if(gg.debug){gg.log("Marker for google local result ID %d is not in table %o",c,b.googleLocalResultsTable)}}},voiceMarkLinkClicked:function(b){var a=this;b.stop();if(gg.debug){gg.log("stopped %o",b)}a.openVoiceMarkBubble(b.memo.id)},googleLocalResultLinkClicked:function(a){Event.stop(a);if(gg.debug){gg.log("stopped %o",a)}this.openGoogleLocalResultBubble(a.memo.id)},viewProfileLinkClicked:function(a){try{a.stop();gg.log("view profile link clicked");var b=a.memo.id;gg.log("this is for user %d",b);this.openProfileBubble(b)}catch(a){gg.error(a)}},userSelectedFromSearchUsersControl:function(a){a.stop();var b=a.memo.id;if(b){this.openProfileBubble(b)}},resultUserNameClicked:function(c){var a=this;var b=c.memo;try{c.stop();if(b.isAnonymous){a.fireSearchByUser(null,b.userId)}else{a.fireSearchByUser(b.userId,null)}}catch(c){gg.error("ERROR!...%o",c)}},createProfileInfoWindowContent:function(c){var b=new gg.StringBuffer();var d=b.append.bind(b);d('<div id="map-userprofile-container">');d('<div class="map-userprofile-pic-frame">');d('<a href="/api/user/$0/pictures/0/" class="lightview" title="Profile Picture for $1">',c.systemUserId,c.userName);d('<img src="/api/user/$0/pictures/0/thumbnail/medium/?$1" alt="Profile Picture for $2"/>',c.systemUserId,new Date().getTime(),c.userName);d("</a>");d("</div>");d('<div id="map-userprofile-top-right">');d('<div id="map-userprofile-name-container">');d('<span id="map-userprofile-first-name" class="rightpad-medium">$0</span>',gg.textOrDefault(c.firstName,""));d('<span id="map-userprofile-last-name">$0</span>',gg.textOrDefault(c.lastName,""));d("</div>");d('<div id="map-userprofile-aka-container">aka</div>');d('<div id="map-userprofile-username-container">');d('<div id="map-userprofile-username">$0</div>',gg.textOrDefault(c.userName,""));d("</div>");d('<div id="map-userprofile-gender-and-location-container">');d('<span id="map-userprofile-gender-container">');d('<span id="map-userprofile-gender">$0</span>',gg.textOrDefault(c.gender,""));d("</span>");d('<span id="map-userprofile-in-container"> in </span>');d('<span id="map-userprofile-citystatezip-container">');if(!(String.isNullOrEmpty(c.city)&&String.isNullOrEmpty(c.region))){d('<span id="map-userprofile-city">$0, </span>',gg.textOrDefault(c.city,""));d('<span id="map-userprofile-state">$0 </span>',gg.textOrDefault(c.region,""))}d('<span id="map-userprofile-postalcode">$0 </span>',gg.textOrDefault(c.postalCode,""));d("</span>");d('<span id="map-userprofile-country-container">');d('<span id="map-userprofile-country"> $0 </span>',gg.textOrDefault(c.country,""));d("</span>");d("</div>");d('<div id="map-userprofile-birthday-container">');d('<span id="map-userprofile-birthday-label">Birthday: </span>');d('<span id="map-userprofile-birthday">$0</span>',gg.textOrDefault(c.dateOfBirth,""));d("</div>");d('<div id="map-userprofile-actions">');d('<div id="map-userprofile-action-become-fan" class="map-userprofile-action">Become their fan!</div>');d('<div id="map-userprofile-action-listen-to-their-voicemarks" class="map-userprofile-action">Listen to their Voice Marks</div>');d("</div>");d("</div>");d('<div id="map-userprofile-public-info-bottom">');d("");d("</div>");d('<div id="map-userprofile-stats-section">');d('<div id="map-userprofile-stats-heading">Stats</div>');d('<div id="map-userprofile-stats-container">');gg.log("The profile object has %o",c);d('<div id="map-userprofile-stats-joined">');d('<span class="map-userprofile-stats-heading">Joined On: </span>');d('<span class="map-userprofile-stats-value">$0</span>',c.joinedOn);d("</div>");d('<div id="map-userprofile-stats-last-login">');d('<span class="map-userprofile-stats-heading">Last Login: </span>');d('<span class="map-userprofile-stats-value">$0</span>',c.lastLogin);d("</div>");d('<div id="map-userprofile-stats-vms-created">');d('<span class="map-userprofile-stats-heading">has created $0 VoiceMarks</span>',c.numberOfVoiceMarks);d("</div>");d('<div id="map-userprofile-stats-number-of-fans">');d('<span class="map-userprofile-stats-heading">has $0 fan(s)!</span>',c.numberOfFans);d("</div>");d('<div id="map-userprofile-stats-fan-of">');d('<span class="map-userprofile-stats-heading">Is a fan of $0 user(s)!</span>',c.numberOfSubscriptions);d("</div>");d("</div>");d("</div>");d('<div id="map-userprofile-member-of-section">');d('<div id="map-userprofile-member-of-heading">Member Of</div>');d('<div id="map-userprofile-member-of-container">');var a=c.groups;if(a){a.each(function(e){d('<div class="map-userprofile-group-container">');d('<span class="map-userprofile-group-name">$0 </span>',e.name);d('<span class="map-userprofile-group-action-join" id="map-userprofile-group-action-join-$0">(Join Group)</span>',e.id);d("</div>")})}d("</div>");d("</div>");d("</div>");return b.toString()},createInitialContentFromVoiceMark:function(a){this.infoWindowBuffer.clear();this.infoWindowBuffer.append('<div id="vmcontainer">');this.infoWindowBuffer.append('<div id="topinfo">');this.infoWindowBuffer.append('<div id="vmtitle">$0</div>',a.getTitle());if(!a.isAnonymous&&a.uid&&(a.uid===gg.getMySystemUserId())){this.infoWindowBuffer.append('<div id="action-delete-voicemark-$0" class="delete-voicemark-link">Delete Voice Mark</div>',a.id)}this.infoWindowBuffer.append('<div id="vmaddrinfo">');this.infoWindowBuffer.append('<div id="left-side">');this.infoWindowBuffer.append('<div id="vmaddrlineone">$0</div>',a.addressLineOne);this.infoWindowBuffer.append('<div id="vmaddrlinetwo">$0</div>',a.addressLineTwo);this.infoWindowBuffer.append('<div id="vmaddrcitystatezip">$0</div>',a.getCityStateZip());this.infoWindowBuffer.append('<div id="vmaddrphone"><a href="$0" title="Place a call to the venue associated with $1">$2</a></div>',a.phoneNumberUrl,a.getTitle(),a.phoneNumber);this.infoWindowBuffer.append('<div id="vmaddrwebsite"><a href="$0" title="Visit the website for the venue associated with $1">$2</a></div>',a.website,a.getTitle(),a.website);this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div id="right-side">');this.infoWindowBuffer.append('<a class="directions-link" target="_blank" href="http://maps.google.com/maps?daddr=$0,$1($2)">Get Directions</a>',a.lat,a.lng,encodeURIComponent(a.getTitle()));this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div style="clear:both"></div>');this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div id="player-and-rating-container">');this.infoWindowBuffer.append('<div id="vmplayer"><a href="/geogstreamer/GetVoiceMark/$0" title="Listen to this Voice Mark as an MP3 stream" rel="alternate nofollow" type="audio/mpeg"><img id="play-button-image" src="/images/fake-vmplayer-81x24.png" alt="Play Button"/>Play</a></div>',a.id);this.infoWindowBuffer.append('<div id="vmratingcontrol"></div>');this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div id="midinfo">');this.infoWindowBuffer.append('<div id="more-info-toggle" class="vm_bubble_accordion_toggle"><span>More Info...</span></div>');this.infoWindowBuffer.append('<div id="moreinfowrapper" class="vm_bubble_accordion_content"><div id="moreinfo"></div></div>');this.infoWindowBuffer.append('<div id="creator-info-toggle" class="vm_bubble_accordion_toggle"><span>Creator Info</span></div>');this.infoWindowBuffer.append('<div id="creatorinfo" class="vm_bubble_accordion_content"><div class="accordion-content-wrapper"><div id="userinfocontainer" style="display:none"></div><div id="loader"><img id="loaderimage" src="/images/loading-32x32-blue-white.gif"/></div></div></div>');this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div id="bottominfo">');this.infoWindowBuffer.append('<div id="respondsection">');this.infoWindowBuffer.append('<img src="/images/respond.png"/><span>$0</span>',"Respond!");this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append('<div id="sharesection">');this.infoWindowBuffer.append('<div id="sharesection-addthis"></div>');this.infoWindowBuffer.append('<div id="sharesection-geograffiti-links" class="small-top-margin">');this.infoWindowBuffer.append('<span id="sharesection-send-to-phone" class="sharesection-link"><img class="share-section-image" src="/images/phone.png"/>Send 2 Phone</span>');this.infoWindowBuffer.append('<span id="sharesection-link-to-this" class="small-left-margin sharesection-link"><img class="share-section-image" src="/images/link.png"/>Link 2 This</span>');this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append("</div>");this.infoWindowBuffer.append("</div>");return this.infoWindowBuffer.toString()},createVoiceMarkTab:function(a){return new google.maps.InfoWindowTab("Voice Mark",this.createInitialContentFromVoiceMark(a))},createResponsesTab:function(b){var a=String.format("$0$1","Responses",b>0?"*":"");return new google.maps.InfoWindowTab(a,'<div id="voicemark-responses-content"><div id="voicemark-responses-container"></div><div id="voicemark-responses-pagingcontrol"></div></div>')},createTabsForVoiceMark:function(a){this.infoWindowTabs[0]=this.createVoiceMarkTab(a);this.infoWindowTabs[1]=this.createResponsesTab(a.responseCount);return this.infoWindowTabs},responsesPageClicked:function(i){if(gg.debug){gg.log("page click...event %o",i)}var d=Event.element(i);var k="activepage";var a="inactivepage";d.toggleClassName(a);d.toggleClassName(k);var b=d.getAttribute("id");id=parseInt(b.charAt(b.length-1));if(gg.debug){gg.log("the arguments array is %o",$A(arguments))}var j=$A(arguments)[1];var h=$A(arguments)[2];if(id===0&&(id!==(j.pages.length-1))){var f=d.next();if(f.hasClassName(k)){f.toggleClassName(k);f.toggleClassName(a);var c={fx:h.responsesPageClicked};c.bfx=c.fx.bindAsEventListener(c,j,h);f.observe("click",c.bfx)}}else{if(id!==0&&(id===(j.pages.length-1))){var g=d.previous();if(g.hasClassName(k)){g.toggleClassName(k);g.toggleClassName(a);var c={fx:h.responsesPageClicked};c.bfx=c.fx.bindAsEventListener(c,j,h);g.observe("click",c.bfx)}}else{var g=d.previous();var f=d.next();if(g.hasClassName(k)){g.toggleClassName(k);g.toggleClassName(a);var c={fx:h.responsesPageClicked};c.bfx=c.fx.bindAsEventListener(c,j,h);g.observe("click",c.bfx)}else{if(f.hasClassName(k)){f.toggleClassName(k);f.toggleClassName(a);var c={fx:h.responsesPageClicked};c.bfx=c.fx.bindAsEventListener(c,j,h);f.observe("click",c.bfx)}}}}d.stopObserving("click",this.bfx);if(gg.debug){gg.log("at this point we need to relaunch a getResponses for the new page")}},activateResponsesPaging:function(k,j){var l=this;if(k){var b=k.pages;var e=new geograffiti.StringBuffer();for(var g=0,c=b.length;g<c;g++){var h=b[g];var a="inactivepage";if(g===k.currentPageIndex){a="activepage"}e.append(String.format('<span id="responsespage-$0" class="pagelabel $1">$2</span>',g,a,h.label))}j.innerHTML=e.toString();var d=j.select("span.inactivepage");if(d){for(var g=0,c=d.length;g<c;g++){var h=d[g];var f={fx:l.responsesPageClicked};f.bfx=f.fx.bindAsEventListener(f,k,l);h.observe("click",f.bfx)}}}},enableRespondFormSubmitButton:function(){var b=$("respondform-submit-button");if(b){b.enable()}var a=$("respondform-submit-container");a.addClassName("enabled");a.removeClassName("disabled");var c=$("respondform-submit-button-messages");c.update("")},disableRespondFormSubmitButton:function(){var b=$("respondform-submit-button");if(b){b.disable()}var a=$("respondform-submit-container");a.addClassName("disabled");a.removeClassName("enabled");var c=$("respondform-submit-button-messages");c.update("Enter a valid 10-digit U.S. Phone Number")},validateSendFormInput:function(){var a=$F("sendform-phonenumber");if(a.charAt(0)==="1"){a=a.substring(1);$("sendform-phonenumber").value=a}gg.log("%o --",a);if(a.length===10){this.enableSendFormSubmitButton()}else{this.disableSendFormSubmitButton()}},validateRespondFormInput:function(){var a=$F("respondform-phonenumber");if(a.charAt(0)==="1"){a=a.substring(1);$("respondform-phonenumber").value=a}gg.log("%o --",a);if(a.length===10){this.enableRespondFormSubmitButton()}else{this.disableRespondFormSubmitButton()}},enableSendFormSubmitButton:function(){var a=$("sendform-submit-button");if(a){a.enable()}var c=$("sendform-submit-container");c.addClassName("enabled");c.removeClassName("disabled");var b=$("sendform-submit-button-messages");b.update("")},disableSendFormSubmitButton:function(){var a=$("sendform-submit-button");if(a){a.disable()}var c=$("sendform-submit-container");c.addClassName("disabled");c.removeClassName("enabled");var b=$("sendform-submit-button-messages");b.update("Enter a valid 10-digit U.S. Phone Number")},enableResponsesRespondFormSubmitButton:function(){var b=$("responses-respondform-submit-button");if(b){b.enable()}var a=$("responses-respondform-submit-container");a.addClassName("enabled");a.removeClassName("disabled");var c=$("responses-respondform-submit-button-messages");c.update("")},disableResponsesRespondFormSubmitButton:function(){var b=$("responses-respondform-submit-button");if(b){b.disable()}var a=$("responses-respondform-submit-container");a.addClassName("disabled");a.removeClassName("enabled");var c=$("responses-respondform-submit-button-messages");c.update("Enter a valid 10-digit U.S. Phone Number")},validateResponsesRespondFormInput:function(){var a=$F("responses-respondform-phonenumber");if(a.charAt(0)==="1"){a=a.substring(1);$("responses-respondform-phonenumber").value=a}gg.log("%o --",a);if(a.length===10){this.enableResponsesRespondFormSubmitButton()}else{this.disableResponsesRespondFormSubmitButton()}},renderResponses:function(u,m){try{var n=this;if(gg.debug){gg.log("renderResponses with args %o %o",u,m)}if(m){var o=$("voicemark-responses-pagingcontrol");var l=$(this.map.getInfoWindow().getContentContainers()[1]).getHeight()-o.getHeight();if(gg.debug){gg.log("The container height is %d",l)}$("voicemark-responses-content").setStyle(String.format("height: $0px",l));if(gg.debug){gg.log("The responses content style was just updated!")}if(gg.debug){gg.log("buffer being aliased with this=%o",this)}var p=this.infoWindowBuffer;var d=p.append.bind(p);if(gg.debug){gg.debug("created an alias for buffer.append")}p.clear();if(gg.debug){gg.log("cleared the buffer")}var b=new Array();if(gg.debug){gg.log("created new array")}var h;if(gg.debug){gg.log("declared responsePlayerId")}var j=m.voiceMarks;if(gg.debug){gg.log("declared responses")}var a;var r;if(j.length===0){d('<p id="responses-no-responses-message">This Voice Mark does not have responses yet.  Be the first to respond by publishing your opinion by clicking below!</p>');d('<div id="responses-respond-link">Respond!</div>')}else{for(var q=0,t=j.length;q<t;++q){a=j[q];if(gg.debug){gg.log("Buffer add for response%d",a.id)}d('<div id="response$0" class="voicemark-response-container">',a.id);d('<div id="response$0-info" class="voicemark-response-info">',a.id);if(a.isAnonymous){r=String.format("$0/$1",gg.SEOFriendlyUrl.ViewAnonymousUser,a.vid);d("Created by $0 on $1",a.userName,a.createdOn)}else{r=String.format("$0/$1",gg.SEOFriendlyUrl.ViewUser,a.uid);d('Created by <a class="user-link" href="$0">$1</a> on $2',r,a.userName,a.createdOn)}d("</div>");h=String.format("response-player-$0",a.id);b.push(h);d('<div id="$0" class="response-player-container"><span class="flash-alternative-content">Download <a href="http://www.adobe.com/go/getflashplayer">Adobe Flash Player</a> to listen to Voice Marks.</span></div>',h);d("</div>")}}if(gg.debug){gg.log("Going to set innerHTML for responses")}var k=$("voicemark-responses-container");k.innerHTML=p.toString();if(gg.debug){gg.log("Set innerHTML for responses")}var c=null;var f=null;if(j.length!==0){for(var q=0,t=j.length;q<t;++q){c=j[q];f=Object.extend(c,gg.VoiceMarkBase);f.title=u.getTitle();this.embedAudioPlayer(f,b[q])}this.activateResponsesPaging(m.cursor,o);$$(".user-link").each(function(e){e.observe("click",function(v){v.stop();var i=e.getAttribute("href").gsub(String.format("$0/",gg.SEOFriendlyUrl.ViewUser),"");n.openProfileBubble(i)})})}else{var g=$("responses-respond-link");g.stopObserving();g.observe("prototip:shown",function(){n.disableResponsesRespondFormSubmitButton();var e=$("responses-respondform-phonenumber");e.stopObserving();e.observe("keypress",function(w){gg.log("Key pressed %o",w);var v=w.charCode||w.keyCode;gg.log("key code is %d",v);if(v>=48&&v<=57){n.validateResponsesRespondFormInput.bind(n).defer()}else{if(v>=58){w.stop();gg.log("not number")}else{if(v!=Event.KEY_BACKSPACE&&v!=Event.KEY_DELETE&&v!=Event.KEY_LEFT&&v!=Event.KEY_UP&&v!=Event.KEY_RIGHT&&v!=Event.KEY_DOWN){w.stop()}else{gg.log("probably some non-printable");n.validateResponsesRespondFormInput.bind(n).defer()}}}});var i=$("responses-respondform");i.stopObserving();i.observe("submit",function(w){var v=$("responses-respond-message");w.stop();i.request({onSuccess:function(x){v.innerHTML="You should now receive a call from GeoGraffiti enabling you to record your Voice Mark response!";v.addClassName("respond-success")},onFailure:function(){v.innerHTML="We weren't able to call you.  Try that again and if it fails, please contact us using the \"Contact\" link on the top right corner of the page and we'll get back to you within a day.";v.addClassName("respond-error")}})})});new Tip(g,n.createResponsesRespondTipContent(u),{style:"geograffiti",hook:{target:"bottomRight",tip:"topLeft"},offset:{x:-350,y:0},stem:"topMiddle",title:"Leave a Voice Response"})}}else{if(gg.debug){gg.log("Responses for Voice Mark %d was null!",u.id)}}}catch(s){if(gg.debug){gg.log("EERRRRR ----> %o",s)}}},createNeedVerifiedPhoneTipContent:function(){var b="You need at least 1 verified phone number to use Send 2 Phone.  Please add and verify your phone number then click Send 2 Phone again.";var a=new gg.StringBuffer();var c=a.append.bind(a);c('<p class="need-verified-phone-tip-message">$0</p>',b);return a.toString()},createNeedLoginTipContent:function(b){var a=new gg.StringBuffer();var c=a.append.bind(a);c('<p class="need-login-tip-message">$0</p>',b);c('<div class="need-login-tip-link">Login!</div>');return a.toString()},createNeedLoginTip:function(f,k){var c=$H({message:"You need to login to perform this action.",onLogin:gg.EmptyFunction,onNoLogin:gg.EmptyFunction});var d=c.merge(k);try{var j=this;var h=$(f);var i=null;var b=null;var a=document.observe(gg.UserEvent.UserLoggedIn,function(l){d.get("onLogin")();document.stopObserving(gg.UserEvent.UserLoggedIn,a);document.stopObserving(gg.UserEvent.UserDidNotLogIn,b)});b=document.observe(gg.UserEvent.UserDidNotLogIn,function(l){d.get("onNoLogin")();document.stopObserving(gg.UserEvent.UserLoggedIn,a);document.stopObserving(gg.UserEvent.UserDidNotLogIn,b)});h.stopObserving("prototip:shown");h.observe("prototip:shown",function(n){try{n.stop();var m=n.element().prototip;var l=$$(".need-login-tip-link")[0];l.stopObserving("click");l.observe("click",function(o){if(m){m.remove();h.stopObserving("prototip:shown");h.stopObserving("prototip:hidden")}gg.userWantsToLogIn()})}catch(n){gg.error("error with prototip shown handler %o",n)}});h.stopObserving("prototip:hidden");h.observe("prototip:hidden",function(m){m.stop();gg.log("prototip was hidden - createNeedLoginTip");if(i){gg.log("removing the tip");var l=m.element().prototip;if(l){l.remove()}}});i=new Tip(h,j.createNeedLoginTipContent(d.get("message")),{style:"geograffiti",hook:{target:"bottomMiddle",tip:"topMiddle"},offset:{x:0,y:-10},stem:"topMiddle",title:"Login Needed"});gg.log("tip created with %o",i);i.target.prototip.show()}catch(g){gg.error("Error in createNeedLoginTip - %o",g)}},loadVoiceMarkResponses:function(d){var b=this;var e=0;var a=$("responseOffsetToShow");if(a){e=$F(a);if(e&&!String.isNullOrEmpty(e)){a.writeAttribute("value",null)}}var c={vmid:d.id,offset:e,format:"json"};new Ajax.Request(gg.ApiUrl.GetResponses,{parameters:$H(c),onSuccess:function(f){var j=f.responseText.evalJSON(true);b.renderResponses(d,j);var i=$("responseIdToShow");if(i){var k=$F(i);if(k&&!String.isNullOrEmpty(k)){i.writeAttribute("value",null);b.map.getInfoWindow().selectTab(1);var h=$(String.format("response$0",k));if(h){h.scrollTo();var g=String.format("response-player-$0",k);gg.log("player id is %s with object %o",g,$(g));AudioPlayer.open.delay(1,g)}}}},onFailure:function(f){if(gg.debug){gg.log("Error occurred while trying to fetch VM responses [ %d:%s:%s]",f.status,f.statusText,f.responseText)}}})},hackTabs:function(a){},embedAudioPlayer:function(b,a){AudioPlayer.embed(a,{soundFile:String.format("/geogstreamer/GetVoiceMark/$0",b.id),titles:encodeURIComponent(b.getTitle()),artists:encodeURIComponent(b.userName)})},createStarRatingControl:function(a){new Starbox("vmratingcontrol",a.starRating,{rerate:true,identity:a.id,indicator:"#{average} stars out of #{total} votes",total:a.totalVotes})},createAccordionControl:function(){var a=new accordion("midinfo",{mode:"2toggles1on",classNames:{toggle:"vm_bubble_accordion_toggle",toggleActive:"vm_bubble_accordion_toggle_active",content:"vm_bubble_accordion_content"}});a.activate($$("#midinfo .vm_bubble_accordion_toggle")[0])},sendBecomeFanRequest:function(b,c){var a=this;new Ajax.Request(gg.ApiUrl.BecomeFan,{parameters:$H(b),onSuccess:function(d){a.updateAndFlashElement(c,true,"User Added to your Hood!","action-become-fan-success")},onFailure:function(d){a.updateAndFlashElement(c,true,"Error becoming their Fan","action-become-fan-error");gg.log("Error becoming fan...%o",d)}})},populateUserData:function(f){try{var c=this;var a=new gg.StringBuffer();a.append('<div id="profile-top-section">');a.append('<div id="profile-pic-container"><a href="/api/user/$0/pictures/0/" class="lightview" title="Profile Picture for $1"><img src="/api/user/$0/pictures/0/thumbnail/medium/?$2" alt="Profile Picture for $1"/></a></div>',f.systemUserId,f.userName,new Date().getTime());a.append('<div id="profile-right-section">');a.append('<div id="profile-information">');a.append('<div id="profile-username">$0</div>',f.userName);a.append('<div id="profile-user-statistics">');a.append('<div id="profile-num-voicemarks-created">has created $0 Voice Mark(s)</div>',f.numberOfVoiceMarks);a.append('<div id="profile-num-fans">has $0 fan(s)</div>',f.numberOfFans);a.append('<div id="profile-num-subscriptions">is a fan of $0 user(s)</div>',f.numberOfSubscriptions);a.append("</div>");a.append("</div>");a.append('<div id="profile-actions">');if(!f.isAnonymous){a.append('<div id="action-view-their-profile" class="profile-action">Profile</div>')}a.append('<div id="action-listen-to-their-voicemarks" class="profile-action">Their Voice Marks</div>');a.append('<div id="action-become-their-fan" class="profile-action">Become Their Fan</div>');a.append("</div>");a.append("</div>");a.append("</div>");$("userinfocontainer").innerHTML=a.toString();new Effect.Parallel([Effect.Fade("loader",{sync:true}),Effect.Appear("userinfocontainer",{sync:true})],{delay:1});if(!f.isAnonymous){var b=$("action-view-their-profile");b.stopObserving();b.observe("click",function(i){i.stop();c.mapElement.fire(gg.MapEvent.ViewProfileLinkClicked,{id:f.systemUserId})})}var h=$("action-listen-to-their-voicemarks");h.stopObserving();h.observe("click",function(i){i.stop();c.fireSearchByUser(f.systemUserId,f.voiceUserId,f.userName)});var d=$("action-become-their-fan");d.stopObserving();d.observe("click",function(j){j.stop();var i={subscriptiontype:f.isAnonymous===true?"voiceuser":"systemuser",uid:f.systemUserId,vid:f.voiceUserId};if(!gg.userLoggedIn()){c.createNeedLoginTip(d,{message:"You need to login in order to become a user's fan.",onLogin:function(){gg.info("user logged in...");c.sendBecomeFanRequest(i,d)},onNoLogin:function(){gg.info("user did not login")}})}else{c.sendBecomeFanRequest(i,d)}})}catch(g){gg.error("CRAP %o",g)}},updateAndFlashElement:function(c,d,e,b){var a=$(c);var f=d?a.innerHTML:null;a.update(e);a.toggleClassName(b);a.pulsate({afterFinish:function(g){if(d){a.update(f);a.toggleClassName(b)}}})},deleteVoiceMark:function(a){var b=$H({vmid:a});new Ajax.Request(gg.ApiUrl.DeleteVoiceMark,{parameters:b,onSuccess:function(d){var c=d.responseText.evalJSON(true);if(c.status===0){gg.info("deleted Voice Mark!!")}else{gg.error("api response reports failure...%o",c)}},onFailure:function(c){gg.error("request failed %o",c)}})},fireSearchAllWithTag:function(f,e){var b=this;var g=b.getBounds();var c=g.northEast;var d=g.southWest;var a=b.getCenter();b.mapElement.fire(gg.MapEvent.SearchAllWithTagRequested,{tag:e,tagId:f,botLeftLat:d.latitude,botLeftLon:d.longitude,topRightLat:c.latitude,topRightLon:c.longitude,centerLat:a.latitude,centerLon:a.longitude})},populateMoreInfoSection:function(f){if(gg.debug){gg.log("VM is %o",f)}var p=this;var g=new gg.StringBuffer();g.append('<div id="moreinfo-top">');g.append('<div id="picture-gallery">');var b=f.pictures;var a;var m;if(b!==null&&b.length>0){var k=b[0];a=String.format("/api/voicemark/$0/pictures/$1/",f.id,k.id);m=String.format("/api/voicemark/$0/pictures/$1/thumbnail/small/",f.id,k.id);g.append('<div id="add-voicemark-picture-container"><a id="add-voicemark-picture-link" href="#">Add Pics!</a></div>');g.append('<div id="default-voicemark-picture-and-add-control-container">');g.append('<div id="default-voicemark-picture-container">');g.append('<a href="$0" class="lightview" rel="gallery[voicemarkgallery]"><img src="$1" id="default-voicemark-picture"/></a>',a,m);g.append("</div>");g.append("</div>");var o;var c;for(var h=1;h<b.length;++h){k=b[h];o=String.format("/api/voicemark/$0/pictures/$1/",f.id,k.id);c=String.format("/api/voicemark/$0/pictures/$1/thumbnail/small/",f.id,k.id);g.append('<div class="voicemark-picture-container"><a href="$0" class="lightview" rel="gallery[voicemarkgallery]"><img src="http://cdn$1.$2$3"/></a></div>',o,h%3,gg.Environment.ServerRunningOn,c)}}else{a="/images/add-pics.png";g.append('<div id="default-voicemark-picture-and-add-control-container">');g.append('<div id="default-voicemark-picture-container">');g.append('<img src="$0" id="default-voicemark-picture"/>',a);g.append("</div>");g.append('<div id="add-voicemark-picture-container"><a id="add-voicemark-picture-link" href="#">Add Pics!</a></div>');g.append("</div>")}g.append("</div>");$("moreinfo").update(g.toString());var n=$("voicemark-pictures-uploader-container");gg.info("uploader container is %o",n);n.stopObserving();document.observe("lightview:opened",function(i){gg.log("got the event %o",i);if($("lightview").down("#voicemark-pictures-uploader-container")){$("voicemark-picture-upload-form").reset();$("progress-message").innerHTML="";$("progress-bar-container").setStyle("visibility:hidden");$("voicemark-pictures-uploader-container").setStyle("visibility:visible")}});document.observe("lightview:hidden",function(i){gg.log("got the event %o",i);$("voicemark-pictures-uploader-container").setStyle("visibility:hidden")});Lightview.updateViews();$("add-voicemark-picture-link").observe("click",function(i){i.stop();$("voicemark-picture-upload-form").writeAttribute("action",String.format("/api/voicemark/$0/pictures/",f.id));Lightview.show({href:"#voicemark-pictures-uploader-container"})});$("voicemark-picture-upload-form").observe("submit",function(i){if(String.isNullOrEmpty($F("voicemark-picture-file"))){alert("Please choose a picture to upload")}else{$("progress-bar-container").setStyle("visibility:visible");$("progress-message").innerHTML="Uploading";new PeriodicalExecuter(function(e){var q=String.format("/api/voicemark/$0/pictures/session-uploads/pictureFile/?$1",f.id,new Date().getTime());new Ajax.Request(q,{method:"GET",onSuccess:function(r){var v=r.responseText.evalJSON(true);gg.info("got api response at %o",v);$("progress-message").innerHTML=String.format("$0%",v.uploadProgress);var s=$("progress-bar-container").getWidth();var t=v.uploadProgress/100;var u=(s*t)-2;$("progress-bar").setStyle(String.format("width:$0px",u));if(v.uploadProgress>=100){e.stop()}},onFailure:function(r){gg.info("failure...%o",r);e.stop()},onComplete:function(r){gg.info("complete....%o",r)},onException:function(r,s){gg.info("exception sending ajax call %o",s);e.stop()}})},2)}});var j=$("voicemark-pictures-remoting-frame");if(j.attachEvent){j.attachEvent("onload",function(){try{var i=j.contentWindow.document.body.innerHTML.evalJSON(true);gg.info("result of attachEvent ... %o",i);$("progress-bar-container").setStyle("visibility:hidden");$("progress-message").innerHTML="DONE!";$("progress-bar").setStyle("width:0px");p.openVoiceMarkBubble(f.id);Lightview.hide()}catch(q){gg.error("error from attachEvent %o",q);$("progress-bar-container").setStyle("visibility:hidden");$("progress-message").innerHTML="ERROR!";$("progress-message").pulsate({duration:2})}})}else{try{Event.stopObserving(j,"load");Event.observe(j,"load",function(q){q.stop();var i=j.contentDocument.documentElement.textContent.evalJSON(true);gg.info("result of observe load is %o",i);$("progress-bar-container").setStyle("visibility:hidden");$("progress-message").innerHTML="DONE!";$("progress-bar").setStyle("width:0px");p.openVoiceMarkBubble(f.id);Lightview.hide()})}catch(l){gg.error("error from observe load... %o",l);$("progress-bar-container").setStyle("visibility:hidden");$("progress-message").innerHTML="ERROR!";$("progress-message").pulsate({duration:2})}}if(tagsList){tagsList.each(function(i){var e=$(i.id);e.stopObserving();e.observe("click",function(u){if(gg.debug){gg.log("will launch tag search for tag %s",i.name)}u.stop();var t=p.getBounds();var r=t.northEast;var s=t.southWest;var q=p.getCenter();p.mapElement.fire(gg.MapEvent.TagLinkClicked,{tag:i.name,botLeftLat:s.latitude,botLeftLon:s.longitude,topRightLat:r.latitude,topRightLon:r.longitude,centerLat:q.latitude,centerLon:q.longitude})})})}if(f.isAnonymous||(f.uid===gg.getMySystemUserId())){new Ajax.InPlaceCollectionEditor("moreinfo-category-edit-control",gg.ApiUrl.SetVoiceMarkCategory,{htmlResponse:false,loadCollectionURL:gg.ApiUrl.GetVoiceMarkCategories,clickToEditText:"Click to set category",cancelControl:"button",highlightcolor:"#fcdf35",callback:function(e,i){return String.format("vmid=$0&category=$1",f.id,encodeURIComponent(i))},onComplete:function(i,e){new Ajax.Request(String.format("$0?vmid=$1&format=json",gg.ApiUrl.GetVoiceMarkCategory,f.id),{onSuccess:function(q){var r=q.responseText.evalJSON(true);if(r){e.innerHTML=r.category}}})}})}var d=new Ajax.InPlaceEditor("moreinfo-voicemark-tags-edit-control",gg.ApiUrl.AddTags,{htmlResponse:false,clickToEditText:"Click to add tags",highlightcolor:"#fcdf35",cancelControl:"button",externalControl:"moreinfo-voicemark-tags-label",externalControlOnly:true,callback:function(e,i){return String.format("vmid=$0&tags=$1",f.id,encodeURIComponent(i))},onComplete:function(i,e){new Ajax.Request(String.format("$0?vmid=$1&format=json",gg.ApiUrl.GetVoiceMarkTags,f.id),{onSuccess:function(v){var q=new gg.StringBuffer();var y=v.responseText.evalJSON(true);if(gg.debug){gg.log("got tags with %o",y)}if(y){tagsList=new Array();var r=null;var s=null;var t=null;var x=null;for(var w=0,u=y.length;w<u;++w){x=y[w];s=x.name;t=String.format("vm-$0-tag-$1",f.id,x.id);tagsList.push({id:t,name:s});q.append('<a href="$0/$1" id="$2" class="moreinfo-voicemark-tag">$3</a>',gg.SEOFriendlyUrl.ViewTag,s.gsub(" ","-"),t,s)}e.innerHTML=q.toString();if(tagsList){tagsList.each(function(A){var z=$(A.id);z.stopObserving();z.observe("click",function(F){if(gg.debug){gg.log("will launch tag search for tag %s",A.name)}F.stop();var E=p.getBounds();var C=E.northEast;var D=E.southWest;var B=p.getCenter();p.mapElement.fire(gg.MapEvent.TagLinkClicked,{tag:A.name,botLeftLat:D.latitude,botLeftLon:D.longitude,topRightLat:C.latitude,topRightLon:C.longitude,centerLat:B.latitude,centerLon:B.longitude})})})}}},onFailure:function(q){if(gg.debug){gg.error("Error getting tags for VM  %o",q)}}})}});Object.extend(d,{getText:function(){return""}})},createMidInfoSection:function(b){var a=this;a.createAccordionControl();new Ajax.Request(gg.ApiUrl.GetUserInfo,{parameters:{uid:b.uid,vid:b.vid,format:"json"},onSuccess:function(d){var c=d.responseText.evalJSON(true);a.populateUserData(c)},onFailure:function(){if(gg.debug){gg.log("Failure getting user info for user uid=%d vid=%d!!!",b.uid,b.vid)}}});new Ajax.Request(gg.ApiUrl.GetVoiceMarkInfo,{parameters:{vmid:b.id,format:"json"},onSuccess:function(e){var c=e.responseText.evalJSON(true);var d=Object.extend(c,gg.BaseVoiceMark);a.populateMoreInfoSection(d)},onFailure:function(){if(gg.debug){gg.log("Failure getting VM info for VMID=%d",b.id)}}})},createResponsesRespondTipContent:function(b){if(gg.debug){gg.log("going to start with content")}var a=new gg.StringBuffer();if(gg.debug){gg.log("buffer up")}a.append('<p id="responses-respond-message">');a.append("To record your message, enter your phone number and GeoGraffiti will call you from (213) 221-3802.");a.append("</p>");a.append('<form id="responses-respondform" action="$0">',gg.ApiUrl.RespondToVoiceMark);a.append('<label id="responses-respondform-phonenumber-label" for="responses-respondform-phonenumber">Phone Number:</label>');a.append('<input id="responses-respondform-phonenumber" name="phonenum" type="text"/>');a.append('<input id="responses-respondform-latitude" name="lat" type="hidden" value="$0"/>',b.lat);a.append('<input id="responses-respondform-longitude" name="lon" type="hidden" value="$0"/>',b.lng);a.append('<input id="responses-respondform-voicemark-id" name="vmid" type="hidden" value="$0"/>',b.id);a.append('<input id="responses-respondform-submit-button" type="submit" value="Call Me!"/>');a.append("</form>");a.append('<div id="responses-respondform-submit-container" class="disabled">');a.append('<span id="responses-respondform-submit-button-messages">Enter a valid 10-digit U.S Phone Number</span>');a.append("</div>");if(gg.debug){gg.log("buffer done...returning")}return a.toString()},createRespondTipContent:function(b){if(gg.debug){gg.log("going to start with content")}var a=new gg.StringBuffer();if(gg.debug){gg.log("buffer up")}a.append('<p id="respond-message">');a.append("To record your message, enter your phone number and GeoGraffiti will call you from (213) 221-3802.");a.append("</p>");a.append('<form id="respondform" action="$0">',gg.ApiUrl.RespondToVoiceMark);a.append('<label id="respondform-phonenumber-label" for="respondform-phonenumber">Phone Number:</label>');a.append('<input id="respondform-phonenumber" name="phonenum" type="text"/>');a.append('<input id="respondform-latitude" name="lat" type="hidden" value="$0"/>',b.lat);a.append('<input id="respondform-longitude" name="lon" type="hidden" value="$0"/>',b.lng);a.append('<input id="respondform-voicemark-id" name="vmid" type="hidden" value="$0"/>',b.id);a.append('<input id="respondform-submit-button" type="submit" value="Call Me!"/>');a.append("</form>");a.append('<div id="respondform-submit-container" class="disabled">');a.append('<span id="respondform-submit-button-messages">Enter a valid 10-digit U.S. Phone Number</span>');a.append("</div>");if(gg.debug){gg.log("buffer done...returning")}return a.toString()},createSendToPhoneTipContent:function(b){var a=new gg.StringBuffer();a.append('<p id="send-to-phone-message" class="tip-message">');a.append("Enter friend's phone number so we can call their phone and play this VoiceMark.");a.append("</p>");a.append('<form id="sendform" action="$0">',gg.ApiUrl.SendVoiceMarkToPhone);a.append('<label id="sendform-phonenumber-label" for="sendform-phonenumber">Friend\'s Phone Number:</label>');a.append('<input id="sendform-phonenumber" name="phonenum" type="text"/>');a.append('<input id="sendform-voicemark-id" name="vmid" type="hidden" value="$0"/>',b.id);a.append('<input id="sendform-submit-button" type="submit" value="Send!"/>');a.append("</form>");a.append('<div id="sendform-submit-container" class="disabled">');a.append('<span id="sendform-submit-button-messages">Enter a valid 10-digit U.S. Phone Number</span>');a.append("</div>");return a.toString()},createLinkToThisTipContent:function(b){var a=new gg.StringBuffer();a.append('<p id="link-to-this-message" class="tip-message">');a.append("Copy and Paste the link below into an Email, IM, or blog post!");a.append("</p>");a.append('<input type="text" id="link-to-this-textbox" class="link-to-this-textbox" value="http://$0$1/$2"/>',gg.Environment.ServerRunningOn,gg.SEOFriendlyUrl.ViewVoiceMark,b.id);a.append("</div>");return a.toString()},addLinkToThisSectionListeners:function(c){var b=this;var d=$("sharesection-link-to-this");var a=d.prototip;if(a){a.remove()}d.observe("prototip:shown",function(f){$("link-to-this-textbox").observe("focus",function(g){$("link-to-this-textbox").select()});$("link-to-this-textbox").focus()});d.observe("prototip:hidden",function(f){$("link-to-this-textbox").stopObserving("focus")})},activateSendToPhoneTip:function(e){var c=this;var a=$("sharesection-send-to-phone");var b=a.prototip;if(b){b.remove()}a.observe("prototip:hidden",function(g){var f=$("sendform-phonenumber");if(f){f.stopObserving("keypress")}});a.observe("prototip:shown",function(h){var g=$("sendform-phonenumber");if(g){g.observe("keypress",function(j){gg.log("Key pressed %o",j);var i=j.charCode||j.keyCode;gg.log("key code is %d",i);if(i>=48&&i<=57){c.validateSendFormInput.bind(c).defer()}else{if(i>=58){j.stop();gg.log("not number")}else{if(i!=Event.KEY_BACKSPACE&&i!=Event.KEY_DELETE&&i!=Event.KEY_LEFT&&i!=Event.KEY_UP&&i!=Event.KEY_RIGHT&&i!=Event.KEY_DOWN){j.stop()}else{gg.log("probably some non-printable");c.validateSendFormInput.bind(c).defer()}}}});var f=$("sendform");f.stopObserving();f.observe("submit",function(j){var i=$("send-to-phone-message");j.stop();f.request({onSuccess:function(k){i.innerHTML="VoiceMark has been sent!";i.addClassName("send-success")},onFailure:function(){i.innerHTML="VoiceMark could not be sent!";i.addClassName("send-error")}})})}});var d=new Tip($("sharesection-send-to-phone"),c.createSendToPhoneTipContent(e),{style:"geograffiti",hook:{target:"bottomRight",tip:"topLeft"},offset:{x:-200,y:0},stem:"topMiddle",title:"Send 2 Phone"});d.target.prototip.show()},createNeedVerifiedPhoneTip:function(b){var a=this;document.fire(gg.MapEvent.ShowMyPhonesRequested);var c=new Tip($("sharesection-send-to-phone"),a.createNeedVerifiedPhoneTipContent(),{style:"geograffiti",hook:{target:"bottomRight",tip:"topLeft"},offset:{x:-200,y:0},stem:"topMiddle",title:"Need Verified Phone Number"});c.target.prototip.show()},addSendToPhoneSectionListeners:function(c){var b=this;var a=$("sharesection-send-to-phone");a.observe("click",function(d){if(!gg.userLoggedIn()){b.createNeedLoginTip(a,{message:"To forward VoiceMarks to your friends' phones, you need to be logged in and have a verified phone number.",onLogin:function(){if(gg.userHasVerifiedNumber()){b.activateSendToPhoneTip(c)}else{b.createNeedVerifiedPhoneTip(a)}},onNoLogin:function(){}})}else{if(gg.userHasVerifiedNumber()){b.activateSendToPhoneTip(c)}else{b.createNeedVerifiedPhoneTip(a)}}})},addRespondSectionListeners:function(c){var a=this;var b=$("respondsection");b.stopObserving("prototip:shown");b.observe("prototip:shown",function(){var d=$("respondform-phonenumber");d.stopObserving();d.observe("keypress",function(g){gg.log("Key pressed %o",g);var f=g.charCode||g.keyCode;gg.log("key code is %d",f);if(f>=48&&f<=57){a.validateRespondFormInput.bind(a).defer()}else{if(f>=58){g.stop();gg.log("not number")}else{if(f!=Event.KEY_BACKSPACE&&f!=Event.KEY_DELETE&&f!=Event.KEY_LEFT&&f!=Event.KEY_UP&&f!=Event.KEY_RIGHT&&f!=Event.KEY_DOWN){g.stop()}else{gg.log("probably some non-printable");a.validateRespondFormInput.bind(a).defer()}}}});var e=$("respondform");e.stopObserving();e.observe("submit",function(g){var f=$("respond-message");g.stop();e.request({onSuccess:function(h){f.innerHTML="You should receive a call from (213) 221-3802 soon.  Speak your response and follow the simple prompts to have it published.";f.addClassName("respond-success")},onFailure:function(){f.innerHTML="We weren't able to call you.  Try that again and if it fails, please contact us using the \"Contact\" link on the top right corner of the page and we'll get back to you within a day.";f.addClassName("respond-error")}})})});new Tip(b,this.createRespondTipContent(c),{style:"geograffiti",hook:{target:"topLeft",tip:"bottomRight"},offset:{x:200,y:0},stem:"bottomMiddle",title:"Leave a Voice Response"})},addBottomSectionListeners:function(a){this.addRespondSectionListeners(a)},generateAddThisButton:function(d){try{var c=$("sharesection-addthis");c.update('<a class="addthis-link" href="http://www.addthis.com/bookmark.php"><img class="share-section-image" src="/images/add.png" alt="Bookmark and Share"/>Share (Email, Twitter, Facebook ...)</a>');var a=c.down("a");a.stopObserving();a.observe("mouseout",function(f){f.stop()});a.observe("click",function(f){f.stop();addthis_open(a,"",String.format("http://$0$1/$2",gg.Environment.ServerRunningOn,gg.SEOFriendlyUrl.ViewVoiceMark,d.id),d.getTitle())})}catch(b){gg.error("AddThis has fucked up...%o",b)}},createMarkerFromGoogleLocalResult:function(f,h){try{var b=this;var d="";if(h>=0&&h<b.MarkerLetterLabels.length){d=b.MarkerLetterLabels[h]}var c={title:f.titleNoFormatting,icon:new google.maps.Icon(b.BaseIcon,String.format("http://www.google.com/mapfiles/marker$0.png",d))};var a=new google.maps.Marker(new google.maps.LatLng(f.lat,f.lng),c);google.maps.Event.addListener(a,"click",function(){var e={title:f.titleNoFormatting,addressLineOne:f.streetAddress,city:f.city,state:f.region,postalCode:"",country:f.country,phoneNumbers:f.phoneNumbers};if(gg.debug){gg.log("going to open GOOG bubble")}b.openPublishVoiceMarkBubble(a.getLatLng(),e,a,false)});return a}catch(g){if(gg.debug){gg.log("Error from GOOG result %o",g)}}},createMarkerFromProfile:function(d){var b=this;var c={labelText:d.userName,title:d.userName,icon:geograffiti.map.DefaultProfileIcon};if(gg.debug){gg.log("options are %o",c)}var a=new google.maps.Marker(new google.maps.LatLng(d.location.latitude,d.location.longitude),c);google.maps.Event.addListener(a,"click",function(){a.openInfoWindowHtml(b.createProfileInfoWindowContent(d),{maxWidth:400})});google.maps.Event.addListener(a,"infowindowopen",function(){var e=$("map-userprofile-action-become-fan");e.stopObserving();e.observe("click",function(h){h.stop();var i={subscriptiontype:d.isAnonymous===true?"voiceuser":"systemuser",uid:d.systemUserId,vid:d.voiceUserId};if(!gg.userLoggedIn()){b.createNeedLoginTip(e,{message:"You need to be logged in to become their fan.",onLogin:function(){b.sendBecomeFanRequest(i,e)},onNoLogin:function(){gg.log("they did not log in!")}})}else{b.sendBecomeFanRequest(i,e)}});var g=$("map-userprofile-action-listen-to-their-voicemarks");g.stopObserving();g.observe("click",function(h){h.stop();b.fireSearchByUser(d.systemUserId,d.voiceUserId,d.userName)});var f=$("map-userprofile-member-of-container");f.stopObserving();f.observe("click",function(l){l.stop();var k=l.element();var j=k.identify();if(j.startsWith("map-userprofile-group-action-join-")){var h=j.gsub("map-userprofile-group-action-join-","");var i={gid:h};if(!gg.userLoggedIn()){b.createNeedLoginTip(k,{message:"You need to be logged in to join a group.",onLogin:function(){b.sendJoinGroupRequest(i,k)},onNoLogin:function(){gg.info("The didn't log in!")}})}else{b.sendJoinGroupRequest(i,k)}}})});return a},sendJoinGroupRequest:function(b,c){var a=this;new Ajax.Request(gg.ApiUrl.JoinGroup,{parameters:$H(b),evalJSON:true,onSuccess:function(e){gg.log("Success joining group...%o",e);var d=e.responseText.evalJSON(true);if(d.status!==0){a.updateAndFlashElement(c,true,"Error joining group.","action-join-group-error")}else{a.updateAndFlashElement(c,true,"You are now a member!","action-join-group-success")}},onFailure:function(d){a.updateAndFlashElement(c,true,"Error joining group.","action-join-group-error")}})},createMarkerFromVoiceMark:function(d){var b=this;var c={labelText:d.id,title:d.getTitle(),icon:d.isBiz?geograffiti.map.DefaultBizMarkIcon:geograffiti.map.DefaultVoiceMarkIcon};if(gg.debug){gg.log("options are %o",c)}var a=new google.maps.Marker(new google.maps.LatLng(d.lat,d.lng),c);google.maps.Event.addListener(a,"click",function(){a.openInfoWindowTabsHtml(b.createTabsForVoiceMark(d),{maxWidth:400})});google.maps.Event.addListener(a,"infowindowopen",function(){b.embedAudioPlayer(d,"vmplayer");b.createStarRatingControl(d);gg.log("done creating star rating ctrl");b.createMidInfoSection(d);gg.log("done creating mid info section");b.addBottomSectionListeners(d);gg.log("done with bootom section listeners");b.generateAddThisButton(d);gg.log("done with gen share this button");b.loadVoiceMarkResponses(d);b.addSendToPhoneSectionListeners(d);b.addLinkToThisSectionListeners(d);new Tip($("sharesection-link-to-this"),b.createLinkToThisTipContent(d),{style:"geograffiti",hook:{target:"bottomRight",tip:"topLeft"},offset:{x:-150,y:0},stem:"topMiddle",title:"Direct link to VoiceMark"});$$(".delete-voicemark-link").each(function(e){gg.log("The current link is %o",e);e.stopObserving();e.observe("click",function(j){gg.log("Delete Link in VM bubble clicked!");j.stop();var k=j.element().identify();var i=k.gsub("action-delete-voicemark-","");b.deleteVoiceMark(i)})});try{var g=String.format("http://$0$1/$2",gg.Environment.ServerRunningOn,gg.SEOFriendlyUrl.ViewVoiceMark,d.id);addthis.toolbox("#main-header-share-right-side",{},{url:g,title:d.getTitle()});addthis.button("#addthis-button-link",{},{url:g,title:d.getTitle()});var f=$("map-main-header-share-facebook");f.update(String.format('<fb:like href="$0" layout="button_count" show_faces="false"></fb:like>',g));FB.XFBML.parse(f)}catch(h){gg.warn("While trying to update the social sharing buttons...%o",h)}});google.maps.Event.addListener(a,"infowindowbeforeclose",function(){$("sharesection-send-to-phone").stopObserving("click");var e=$("sharesection-link-to-this").prototip;if(e){e.remove()}var f=$("sharesection-send-to-phone").prototip;if(f){f.remove()}});return a},addVoiceMarkToMap:function(c){var b=this;var d=Object.extend(c,geograffiti.VoiceMarkBase);if(gg.debug){gg.log("augmented VM: %o",d)}var a=b.createMarkerFromVoiceMark(d);if(gg.debug){gg.log("marker is %o",a)}b.map.addOverlay(a);b.voiceMarkTable.set(d.id,a);return a},addProfileToMap:function(c){var b=this;var a=b.createMarkerFromProfile(c);if(gg.debug){gg.log("marker is %o",a)}b.map.addOverlay(a);return a},addGoogleLocalResultToMap:function(d,c){var b=this;var a=b.createMarkerFromGoogleLocalResult(c,d);b.map.addOverlay(a);b.googleLocalResultsTable.set(d,a);return a},addVoiceMarkResultsToMap:function(f){var c=this;var b=null;if(f){var e=null;for(var d=0,a=f.length;d<a;++d){e=f[d];if(d===0){b=c.addVoiceMarkToMap(e)}else{c.addVoiceMarkToMap(e)}}}return b},addGoogleLocalResultsToMap:function(h,g){var d=this;var c=null;if(h){var a=null;for(var e=0,b=h.length;e<b;++e){a=h[e];if(a.GsearchResultClass==="GlocalSearch"){if(e===0){c=d.addGoogleLocalResultToMap(e,a);if(g===true){c.hide()}}else{var f=d.addGoogleLocalResultToMap(e,a);if(g===true){f.hide()}}}}}return c},displayGoogleViewport:function(a){var b=this;var e=a.southWest;var d=a.northEast;var c=[new google.maps.LatLng(e.latitude,e.longitude),new google.maps.LatLng(d.latitude,e.longitude),new google.maps.LatLng(d.latitude,d.longitude),new google.maps.LatLng(e.latitude,d.longitude),new google.maps.LatLng(e.latitude,e.longitude)];b.viewportOverlay=new google.maps.Polyline(c,"#ff0000",10,1);b.map.addOverlay(b.viewportOverlay)},displayResults:function(c){var b=this;var f=firstGoogleLocalResultMarker=null;if(gg.debug){gg.log("display results %o",c)}if(gg.debugging){if(b.viewportOverlay!==null){b.map.removeOverlay(b.viewportOverlay)}b.displayGoogleViewport(c.googleViewport)}if(c){var e=c.voiceMarksResponse.voiceMarks!==null&&c.voiceMarksResponse.voiceMarks.length>0;f=b.addVoiceMarkResultsToMap(c.voiceMarksResponse.voiceMarks);var d=e===true;firstGoogleLocalResultMarker=b.addGoogleLocalResultsToMap(c.googleLocalResults,d);var a=f||firstGoogleLocalResultMarker;if(a){if(a===firstGoogleLocalResultMarker){google.maps.Event.trigger(a,"click")}}}},displayUserVoiceMarksResults:function(c){try{var b=this;var f=null;if(gg.debug){gg.log("display results %o",c)}if(c){f=b.addVoiceMarkResultsToMap(c.voiceMarks);var a=f;if(a){}}}catch(d){if(gg.debug){gg.error("ERRRRRROOOORRRRRRR   %o",d)}}},displayGroupVoiceMarksResults:function(c){try{var b=this;var f=null;if(gg.debug){gg.log("display group results %o",c)}if(c){f=b.addVoiceMarkResultsToMap(c.voiceMarks);var a=f;if(a){}}}catch(d){if(gg.debug){gg.error("ERRRRRROOOORRRRRRR   %o",d)}}},displayFilterResults:function(c){try{var b=this;var f=null;if(gg.debug){gg.log("display results %o",c)}if(c){f=b.addVoiceMarkResultsToMap(c.voiceMarks);var a=f;if(a){}}}catch(d){if(gg.debug){gg.error("ERRRRRROOOORRRRRRR   %o",d)}}}};