function parseJSON(jsonText){return eval("("+jsonText+")")}function json_get(c,b,a){if(c&&c[b]){return c[b]}return a}var map="";var lastJson="";var greenMarkerArray=new Array();var markerArray=new Array();var progress_div="";var mapContainerDiv="";var clientGeoObject="";var locationTextAreaIdName="location_textarea";var initialOkTooltipDivId="okTooltip";var suggestBoxDivIdName="suggest_box";var yelpRateLimitDivId="yelpRateLimit";var GOWALLA_NO_MATCH="gowalla no match";var google_geocode_timeout_handler=null;var last_google_geocode_timeout_handler_string=null;var menuObject="";var geocoder="";var vidToDivMapDashboard={};var tipMarkerZIndex=10;var venueMarkerZIndex=5;var working_on_this_venue_icon="http://farm4.static.flickr.com/3134/buddyicons/31039948@N05.jpg";var green_marker_url="http://www.mapbuilder.net/img/icons/marker_34_green.png";var dork_icon="http://www.codeproject.com/KB/gadgets/DailyDilbert/icon.png";var unknown_icon="http://www.geekpedia.com/Pictures/Icons/unknown_216_32.png";var venue_map_icon_normal_prefix="map_icon/o";var venue_map_icon_hover_prefix="map_icon/b";var venue_map_generic_icon="map_icon/co.png";var right_click_pointer_icon="map_icon/misc/pointer.png";var loading_gif="map_icon/misc/loading.gif";var gowalla_small_icon="http://fourwhere.com/map_icon/thirdparties/gowalla_icon.png";var foursquare_small_icon="http://fourwhere.com/map_icon/thirdparties/foursquare_icon.png";var yelp_small_icon="http://static4.px.yelpcdn.com/static/20091130159295510/i/map/miniMapLogo.png";var business_dashboard_base_url="http://fourwhere.com/fwd/fourwhere_dashboard.jsp";var sysomosProxyServer="http://fourwhere.com/fwd/fwd.jsp?w=";if(window.location.href.indexOf("www.fourwhere.com")>=0){sysomosProxyServer="http://www.fourwhere.com/fwd/fwd.jsp?w="}else{if(window.location.href.indexOf("dev.blogscope.net/paris/")>=0){sysomosProxyServer="http://dev.blogscope.net/paris/experiments/fwd.jsp?w=";business_dashboard_base_url="http://dev.blogscope.net/paris/experiments/fourwhere_dashboard.jsp"}}function fetch_external_url(a){var b=escape(a);a=sysomosProxyServer+b;var c=null;console.log("[foursq_util.fetch_external_url] USING PROXY: "+a);dojo.xhrGet({sync:true,url:a,handleAs:"text",load:function(e,d){c=e},error:function(e,d){c="bad code: "+e;console.log(c)}});return c}function is_return_http_get_bad(a){return !a||a==null||a.indexOf("bad code")>=0}function foursq_search_venue(e,d,a){if(a>50){console.log("[foursq_util.foursq_search_venue] numToGet set to 50");a=50}var c="http://api.foursquare.com/v1/venues.json?geolat="+e+"&geolong="+d+"&l="+a;var b=fetch_external_url(c);return b}function getLongLatJson(c,b){var a=foursq_search_venue(c,b,50);if(is_return_http_get_bad(a)){console.log("[foursq_util.getLongLatJson] "+a);return null}return parseJSON(a)}function getVenueJson(c){var a="http://api.foursquare.com/v1/venue.json?vid="+c;var b=fetch_external_url(a);if(!b||b==null){console.log("[foursq_util.getVenueJson] null return");return null}if(b.indexOf("bad code")==0){console.log("[foursq_util.getVenueJson] "+b);return null}return parseJSON(b)}function getTipsJson(e,d,c){if(c>50){console.log("[foursq_util.getTipsJson] num_to_get set to 50");c=50}var b="http://api.foursquare.com/v1/tips.json?geolat="+e+"&geolong="+d+"&l="+c;var a=fetch_external_url(b);if(is_return_http_get_bad(a)){console.log("[foursq_util.getTipsJson] "+a);return null}var f=parseJSON(a);return f}function is_foursquare_down(b){var a=json_get(b,"error",null);if(a){return a}return null}function foursq_get_venue_name(a){var b=a.venue.name;if((typeof b)=="undefined"){console.log("[foursq_util.foursq_get_venue_name] cannot find member .venue.name");return""}return b}function foursq_get_tips(a){var b=a.venue.tips;if((typeof b)=="undefined"){console.log("[foursq_util.foursq_get_tips] cannot find member .venue.tips");return new Array()}return b}function foursq_get_number_checkins(a){if(!a.venue||a.venue==null||!a.venue.stats||a.venue.stats==null||!a.venue.stats.checkins||a.venue.stats.checkins==null){console.log("[foursq_util.foursq_get_number_checkins] cannot find member .venue.stats.checkins");return -1}return a.venue.stats.checkins}function foursq_get_category_icon_urls(b){var a=json_get(b,"venue",null);if(a!=null){var c=json_get(a,"categories",new Array());return c}console.log("[foursq_util.foursq_get_number_checkins] cannot find member .venue.categories");return new Array()}function foursq_get_search_venue(a){if(!a.groups||a.groups==null){console.log("[foursq_util.foursq_get_search_venue] cannot find member .groups");return new Array()}return a.groups[0].venues}function foursq_get_tips_array(a){if(!a.groups){console.log("[foursq_util.foursq_get_tips_nearby] cannot find member .groups");return new Array()}return a.groups[0].tips}function foursq_get_tip_epoch(b){var a=Date.parse(b);return a.getTime()/1000}function get_clean_venue_name(c){var a=["restaurant"," cafe"," pub"," hotel"," chinese"," vietnamese"," cuisine"];c=c.toLowerCase();for(var b in a){b=a[b];c=c.replace(b,"")}return dojo.trim(c)}function gowalla_spots_search(f,e,a,g){var d="http://api.gowalla.com/spots?lat="+f+"&lng="+e+"&radius="+a;if(g){d=d+"&offset="+g}var b=fetch_external_url(d);var c=parseJSON(b);return c}function gowalla_get_spot(d){var c="http://api.gowalla.com/spots/"+d;var a=fetch_external_url(c);var b=parseJSON(a);return b}function toRadian(a){return a*Math.PI/180}function latLngXYDistanceMetre(f,i,e,h){var g=6371000;var k=toRadian(e-f);var b=toRadian(h-i);var o=Math.sin(k/2)*Math.sin(k/2)+Math.cos(toRadian(f))*Math.cos(toRadian(e))*Math.sin(b/2)*Math.sin(b/2);var l=2*Math.atan2(Math.sqrt(o),Math.sqrt(1-o));var j=g*l;return j}function longestCommonSubsequence(b,a){n=b.length;m=a.length;table=new Array();for(var d=0;d<n+1;d+=1){for(var c=0;c<m+1;c+=1){if(c==0){table[d]=new Array()}if(d==0||c==0){table[d][c]=0}else{if(b.charAt(d-1)==a.charAt(c-1)){table[d][c]=table[d-1][c-1]+1}else{table[d][c]=Math.max(table[d-1][c],table[d][c-1])}}}}return table[n][m]}function gowalla_match_venue(g,k,e,t){var j=json_get(t,"spots",new Array());var f=-9999999.99999;var a=null;var r=999999;var p=-1;for(s in j){var s=j[s];var u=json_get(s,"name","GOWALLA_NONAME_WEIRD_BAD");var h=json_get(s,"lat",-999999);var c=json_get(s,"lng",-999999);var o=json_get(s,"url","").substring("/spots/".length);o=parseInt(o);var q=h-k;if(q<0){q=q*-1}var v=c-e;if(v<0){v=v*-1}var b=latLngXYDistanceMetre(k,e,h,c);var i=longestCommonSubsequence(g,u);i=i+0;i=i/Math.max(u.length,g.length);var l=0.025/b+i;if((b<95&&i>=0.55||i>=0.9)&&l>f){f=l;a=s;r=b;p=i}}return a}function gowalla_get_row_comment_html(u){var c=u;var j=new Date();var a=json_get(c,"url","");var h=json_get(c,"name","");a=a.substring("/spots/".length);if(!a||a==""){return""}c=gowalla_get_spot(a);var d=json_get(c,"last_checkins",new Array());var f="";var b="<a class='gowalla_source'  href=\"http://gowalla.com/"+json_get(u,"url","????")+'">Gowalla<img src="'+gowalla_small_icon+'"></a>';for(cc in d){cc=d[cc];var e=json_get(cc,"user",null);var q=json_get(e,"url",null);if(q){q="http://gowalla.com/"+q}var l=json_get(e,"first_name","");var o=json_get(e,"last_name","");var t=json_get(cc,"created_at",null);var i=json_get(cc,"message","");var p=get_tip_posted_time_ago(j,t);var k=json_get(e,"image_url","");if(i!=""){var r=get_row_comment_html(i,l,o,"??",k,p,b,q);f=f+r}}return f}function yelp_spot_search(e,d){var c="http://api.yelp.com/business_review_search?&lat="+e+"&long="+d+"&radius=0.1&limit=20";var a=fetch_external_url(c);var b=parseJSON(a);return b}function is_yelp_block_us(a){var b=json_get(a,"message",null);if(b&&json_get(b,"code",-1)==4){console.log("[yelp API ]"+json_get(b,"text","???? "));return true}return false}function yelp_match_venue(l,z,o,A){var w=A;var C=json_get(w,"businesses",null);if(C==null){return}var q=null;var k=-1;var t="????";var y="????";var B=-1;var d=get_clean_venue_name(l);for(var p in C){p=C[p];var c=json_get(p,"address1","");var x=json_get(p,"city","");var e=json_get(p,"state","");var v=json_get(p,"country","");var h=json_get(p,"name","");var g=get_clean_venue_name(h);var u=json_get(p,"latitude",null);var i=json_get(p,"longitude",null);var f=latLngXYDistanceMetre(z,o,u,i);var s=longestCommonSubsequence(g,d);s=(s+0)/Math.max(d.length,g.length);var a=(0.05/f)+s;if(a>k&&(s>=0.9||(s>0.5&&f<70))){q=p;k=a;t=h;y=s;B=f}}if(q){return q}return null}function yelp_get_row_comment_html(p){var y="";var B=new Date();var q=p;var e=json_get(q,"address1","");var x=json_get(q,"city","");var f=json_get(q,"state","");var v=json_get(q,"country","");var h=json_get(q,"phone","");var k=json_get(q,"url",null);var s=json_get(q,"avg_rating",null);var b=json_get(q,"review_count","?");var t=json_get(q,"rating_img_url_small",null);var A=json_get(q,"reviews",null);var g=json_get(q,"name","");var u=json_get(q,"latitude",null);var j=json_get(q,"longitude",null);if(A){for(var w in A){w=A[w];if(typeof(w)!="object"){continue}var d=json_get(w,"user_name","");var c=json_get(w,"user_url","");var a=json_get(w,"user_photo_url","");var o=json_get(w,"text_excerpt",null);var l=json_get(w,"rating",null);var z=json_get(w,"url",null);var i=json_get(w,"date",null);if(o){y=y+get_row_comment_html(o,d,"","??",a,i,"<a class='yelp_source' href=\""+z+'"></a>',c)}}}return y}function yelp_get_num_comments(d){var e=0;var a=json_get(d,"reviews",null);for(var b in a){b=a[b];if(typeof(b)=="object"){e=e+1}}return e}function highlightMarkerArrayFromComment(c,b){function a(){c.setIcon(get_venue_hover_icon_url(b));c.setZIndex(999)}return a}function ununlightMarkerArrayFromComment(c,b){function a(){c.setIcon(get_venue_normal_icon_url(b));c.setZIndex(1)}return a}function get_business_dashboard_url(d,f,c,e,b){var a=business_dashboard_base_url+"?";if(d){a=a+"f="+d}if(f){a=a+"&g="+f}if(c){a=a+"&y="+c}return a+"&lat="+e+"&lng="+b}function get_dashboard_div_id(b,c,a){var d="";if(b){d="f"+b}else{if(a){d="y"+a}}}function get_dashboard_div_html(a){return""}function venueMarkerClickEventHandler(a,O,o){var E=O.fsqID;var N=O.gowallaID;var D=O.yelpID;var F=O.qlat;var C=O.qlng;var g=get_business_dashboard_url(E,N,D,F,C);if(O.infoWindowObject){O.infoWindowObject.open(o,O);return}if(O.isYelp){var y=O.yelpHtml;y=y+"<!--(widget)"+g+" -->";var i={content:y};var H=new google.maps.InfoWindow(i);H.open(o,O);O.infoWindowObject=H;return}var L=getVenueJson(a);var s=foursq_get_venue_name(L);var h=foursq_get_tips(L);var f=foursq_get_number_checkins(L);if(f<0){f="unknown"}var v=json_get(L,"venue","");if(v==null||!v.id){return}var d=json_get(v,"address","");var u=json_get(v,"city","");var p=json_get(v,"state","");var s=json_get(v,"name","");var r=json_get(v,"id","");var w=new Date();var l="";var B='<a class="sysomos_top_link" href="http://www.sysomos.com/"><img src="images/sysomos-small.gif"></a><div class="tipvname">'+s+'</div><div class="tipvaddress">'+d+",&nbsp;"+u+",&nbsp;"+p+" with "+f+" checkin(s)</div>";if(h.length>0){O.setIcon(get_venue_normal_icon_url(h.length))}for(var A in h){var J=h[A];var k=json_get(J,"text","");var x=json_get(J,"id","");var q=json_get(J,"created","");var K=json_get(J,"user","");var M=json_get(K,"id",null);if(M){M="http://foursquare.com/user/-"+M}var I="";var z="";var c="";var b="";if(K!=""){I=json_get(K,"firstname","");z=json_get(K,"lastname","");c=json_get(K,"photo","");b=json_get(K,"gender","")}var e=get_tip_posted_time_ago(w,q);B=B+get_row_comment_html(k,I,z,b,c,e,"<a class='foursquare_source' href=\"http://foursquare.com/venue/"+r+'">Foursquare<img  src="'+foursquare_small_icon+'"></a>',M)}if(O.yelpMatch&&O.yelpMatch!=GOWALLA_NO_MATCH){var G=yelp_get_row_comment_html(O.yelpMatch);B=B+G}if(O.gowallaMatch&&O.gowallaMatch!=GOWALLA_NO_MATCH){B=B+gowalla_get_row_comment_html(O.gowallaMatch)}var i={content:B+"<!--(widget) "+g+" -->"};var H=new google.maps.InfoWindow(i);H.open(o,O);O.infoWindowObject=H}function createVenueMarkerHandlerFunction(c,b){function a(){var d=c.vid;venueMarkerClickEventHandler(d,c,b)}return a}function createTipScrollIntoViewFunction(b){var a=function(){var c=document.body.scrollTop*1;b.scrollIntoView(false);document.body.scrollTo=c+"px";b.className="tip_div_container_hover"};return a}function createTipScrollOutViewFunction(b){var a=function(){b.className="tip_div_container"};return a}function handleMapBoundChangeEvent(){var b=map.getBounds();var a=b.toString();document.getElementById("mapBoundDiv").innerHTML=a}function handleMapRightClick(a){remove_initial_ok_tooltip();la=a.latLng.lat();ln=a.latLng.lng();if(get_dashboard_dom_object().innerHTML.indexOf("Right click")==0){get_dashboard_dom_object().innerHTML=""}menuObject.rightClickLatLng=a.latLng;if(menuObject.getMap()==null){menuObject.setMap(map)}menuObject.draw();menuObject.toggle()}function get_dashboard_dom_object(){return dojo.byId("msgs")}function get_suggestion_box_dom_object(){return dojo.byId("suggest_box")}function hide_suggestion_box(){setTimeout(function(){dojo.style(get_suggestion_box_dom_object(),"display","none")},500)}function display_initial_ok_tooltip(){var b=dojo.style(mapContainerDiv,"width")-dojo.style(dojo.byId("msgs"),"width");var f=dojo.style(mapContainerDiv,"height");var d=dojo.byId(initialOkTooltipDivId);var a=dojo.style(d,"width");var e=dojo.style(d,"height");var c=(b-a)/2;dojo.style(d,"marginLeft",c+"px")}function remove_initial_ok_tooltip(){var b=dojo.byId(initialOkTooltipDivId);if(!b){return}var a=b.parentNode;if(a){a.removeChild(b)}}function log_progress(a,b){return;progress_div.innerHTML=a+"/"+b}function show_loading(){dojo.byId(locationTextAreaIdName).className="inputtext_loading"}function hide_loading(){dojo.byId(locationTextAreaIdName).className="inputtext"}function get_venue_normal_icon_url(b){var a=venue_map_icon_normal_prefix;if(b>5){a=a+"5p.png"}else{if(b>0){a=a+b+".png"}else{a=venue_map_generic_icon}}return a}function get_venue_hover_icon_url(b){var a=venue_map_icon_hover_prefix;if(b>5){a=a+"5p.png"}else{if(b>0){a=a+b+".png"}else{a=venue_map_generic_icon}}return a}function paintMapVenueLocation(c,p,a,d){var f=c;var b=foursq_get_search_venue(f);for(var k in b){k=b[k];lat=k.geolat;lng=k.geolong;var i=new google.maps.LatLng(lat,lng);var g=new google.maps.Marker({position:i,map:a,title:k.name,icon:venue_map_generic_icon,zIndex:venueMarkerZIndex});g.vid=k.id;g.fsqID=k.id;p.push(g);if(d){var o=gowalla_match_venue(k.name,lat,lng,d);if(o){g.gowallaMatch=o;var h=json_get(o,"checkins_url",null);if(h){g.gowallaID=h.substring("/checkins?spot_id=".length)}}}google.maps.event.addListener(g,"click",createVenueMarkerHandlerFunction(g,a))}}function queryAllVenuesAroundGreenMarkers(a){if(a>=greenMarkerArray.length){for(var f in greenMarkerArray){greenMarkerArray[f].setMap(null)}greenMarkerArray=new Array();return}var e=greenMarkerArray[a];var h=e.getPosition();var d=h.lat();var b=h.lng();var c=getLongLatJson(d,b);var g=gowalla_spots_search(d,b,100);paintMapVenueLocation(c,markerArray,map,g);setTimeout("queryAllVenuesAroundGreenMarkers("+(a+1)+")",500)}function get_tip_posted_time_ago(d,g){if(d==null){d=new Date()}var c=null;try{c=foursq_get_tip_epoch(g)}catch(f){}if(c==null){try{var b=dojo.date.stamp.fromISOString(g);c=b.getTime()/1000}catch(f){}}if(c){var a=" some time ago";if(c!=""){a=(d.getTime()/1000)-c;if(a<24*3600){a=parseInt(a/3600)+" hour(s) ago"}else{if(a<24*3600*7){a=parseInt(a/(24*3600))+" day(s) ago"}else{if(a<24*3600*30){a=parseInt(a/(24*3600*7))+" week(s) ago"}else{if(a<24*3600*180){a=parseInt(a/(24*3600*30))+" month(s) ago"}else{a="more than 6 months ago"}}}}}return a}return g}function get_row_comment_html(i,f,e,h,c,j,b,g){var a="tipib";if(h=="female"){a="tipip"}var d='<i class="'+a+'" title="'+f+" "+e+'">';if(g){d=d+'<a href="'+g+'">'}d=d+'<img src="'+c+'" width="75" height="75" alt="'+f+" "+e+'" align="left" />';if(g){d=d+"</a>"}d=d+'</i><div class="tipbody">'+i+'</div><div class="tiploc">'+j+" by ";if(g){d=d+"<a class='author' href=\""+g+'">'}d=d+"<span style='font-family: sans-serif; font-style: italic;font-variant: normal; font-weight: bolder;'>"+f+"</span>";if(g){d=d+"</a>"}if(b){d=d+" from "+b}return d+'</div><div style="clear:both"></div><br />'}function removeNoTipMarkers(q,y){if(y>0){if(q[y-1].numberOfTips>0){q[y-1].setIcon(get_venue_normal_icon_url(q[y-1].numberOfTips))}else{q[y-1].setIcon(null)}}if(y>=q.length){hide_loading();return}show_loading();q[y].setIcon(working_on_this_venue_icon);var E=q[y].vid;var D=true;if(q[y].getMap()!=null){var B=getVenueJson(E);if(B&&B!=null&&(typeof B)!="undefined"){var c=foursq_get_tips(B);if(!c||c==null||c.length==0){q[y].setMap(null)}else{var p=null;var G=json_get(B,"venue",{});var I=json_get(G,"id","");var w=foursq_get_venue_name(B);var g=json_get(G,"address","");var l=json_get(G,"city","");var x=json_get(G,"state","");var e=foursq_get_category_icon_urls(B);var c=foursq_get_tips(B);var h="";var F=new Date();var k=false;if(vidToDivMapDashboard[I]){p=vidToDivMapDashboard[I];h=vidToDivMapDashboard[I].innerHTML}else{k=true;h='<div class="tipvname">'+w+"</div>";for(var s in e){h=h+'<img src="'+e[s].iconurl+'">'}h=h+'<div class="tipvaddress">'+g+",&nbsp;"+l+",&nbsp;"+x+"</div>";p=document.createElement("div");vidToDivMapDashboard[I]=p}var C=c.length;for(var o in c){var v=c[o];var t=v.text;var z=v.created;var A=json_get(v,"user",{});var f=json_get(A,"lastname","");var b=json_get(A,"firstname","");var r=json_get(A,"photo","");var H=json_get(A,"id",null);if(H){H="http://foursquare.com/user/-"+H}var i=json_get(A,"gender","");var d=get_tip_posted_time_ago(F,z);if(h.indexOf("text")<0){h=h+"<br />"+get_row_comment_html(t,b,f,i,r,d,"<a class='foursquare_source' href=\"http://foursquare.com/venue/"+I+'">Foursquare<img src="'+foursquare_small_icon+'"></a>',H)}}p.innerHTML=h;if(k){var a=get_dashboard_dom_object();p.className="tip_div_container";a.appendChild(p);google.maps.event.addListener(q[y],"mouseover",createTipScrollIntoViewFunction(p));google.maps.event.addListener(q[y],"mouseout",createTipScrollOutViewFunction(p))}q[y].numberOfTips=C;dojo.connect(p,"onmouseover",highlightMarkerArrayFromComment(q[y],C));dojo.connect(p,"onmouseout",ununlightMarkerArrayFromComment(q[y],C))}}else{show_foursquare_rate_limiting("!@#!@$@#$ Rate limited ?");D=false}}y=y+1;if(D){setTimeout("removeNoTipMarkers(markerArray,"+y+");",1500)}else{q[y].setIcon(null);q[y].setMap(null)}}function show_foursquare_rate_limiting(c){var b=document.createElement("DIV");b.innerHTML=c;b.id=initialOkTooltipDivId;var a=document.createElement("a");a.id="okButton";a.href="javascript:remove_initial_ok_tooltip();";a.innerHTML="OK";b.appendChild(a);dojo.byId("wrapperDiv").appendChild(b)}function query_tips_around_dashboard(M,s,k){var E=new Date();show_loading();for(var t in M){var o=M[t];if(o.getMap()==null){continue}var U=false;var N=false;var R=false;o.setMap(null);var L=o.getPosition().lat();var a=L;var D=o.getPosition().lng();var W=D;var g=gowalla_spots_search(L,D,100);var X=yelp_spot_search(L,D);U=is_yelp_block_us(X);var I=new Array();var j={};var z=getTipsJson(L,D,50);if(is_foursquare_down(z)){N=true}if(N||U||R){display_source_down(N,R,U)}var l=foursq_get_tips_array(z);for(var H in l){var S=l[H];var B=json_get(S,"venue","");if(B==null||!B.id){continue}var x=json_get(B,"id","");if(x==""){continue}if(j[x]){j[x]=j[x]+1}else{j[x]=1}}for(var H in l){var S=l[H];var B=json_get(S,"venue","");if(B==null||!B.id){continue}var x=json_get(B,"id","");if(x==""){continue}var h=json_get(B,"address","");var A=json_get(B,"city","");var u=json_get(B,"state","");var y=json_get(B,"name","");var d=json_get(B,"geolat",99999);var Y=json_get(B,"geolong",99999);var q=json_get(S,"text","");var F=json_get(S,"id","");var v=json_get(S,"created","");var T=json_get(S,"user","");var V=json_get(T,"id",null);if(V){V="http://foursquare.com/user/-"+V}var P="";var G="";var f="";var e="";if(T!=""){P=json_get(T,"firstname","");G=json_get(T,"lastname","");f=json_get(T,"photo","");e=json_get(T,"gender","")}var Q=null;var K=null;var O=false;var J="";if(vidToDivMapDashboard[x]){Q=vidToDivMapDashboard[x];O=true;J=Q.innerHTML;K=Q.gowallaMatch}else{var L=S.venue.geolat;var D=S.venue.geolong;var c=new google.maps.LatLng(L,D);var C=new google.maps.Marker({title:y,map:k,position:c,icon:get_venue_normal_icon_url(j[x]),zIndex:tipMarkerZIndex});s.push(C);C.vid=x;Q=document.createElement("DIV");K=gowalla_match_venue(y,d,Y,g);var p=yelp_match_venue(y,d,Y,X);if(K){Q.gowallaMatch=K;C.gowallaMatch=K;var b=json_get(K,"checkins_url",null);if(b){C.gowallaID=b.substring("/checkins?spot_id=".length)}}else{Q.gowallaMatch=GOWALLA_NO_MATCH;C.gowallaMatch=GOWALLA_NO_MATCH}if(p){Q.yelpMatch=p;C.yelpMatch=p;var r=p.id;I[r]=1;C.yelpID=r}else{Q.yelpMatch=GOWALLA_NO_MATCH;C.yelpMatch=GOWALLA_NO_MATCH}google.maps.event.addListener(C,"click",createVenueMarkerHandlerFunction(C,k));google.maps.event.addListener(C,"mouseover",createTipScrollIntoViewFunction(Q));google.maps.event.addListener(C,"mouseout",createTipScrollOutViewFunction(Q));C.qlat=a;C.qlng=W;C.fsqID=x;Q.className="tip_div_container";vidToDivMapDashboard[x]=Q;Q.marker=C;Q.numTips=j[x];get_dashboard_dom_object().appendChild(Q);dojo.connect(Q,"onmouseover",highlightMarkerArrayFromComment(C,j[x]));dojo.connect(Q,"onmouseout",ununlightMarkerArrayFromComment(C,j[x]));J='<a class="sysomos_top_link" href="http://www.sysomos.com/"><img src="images/sysomos-small.gif"></a><div class="tipvname">'+y+'</div><div class="tipvaddress">'+h+",&nbsp;"+A+",&nbsp;"+u+"</div>"}var i=get_tip_posted_time_ago(E,v);J=J+get_row_comment_html(q,P,G,e,f,i,"<a class='foursquare_source' href=\"http://foursquare.com/venue/"+x+'">Foursquare<img  src="'+foursquare_small_icon+'"></a>',V);Q.innerHTML=J}}var w=function(){for(ao in vidToDivMapDashboard){var aE=vidToDivMapDashboard[ao];var aw=aE.numTips;var aa=aE.marker;if(aE.yelpMatch&&aE.yelpMatch!=GOWALLA_NO_MATCH){var aq=yelp_get_row_comment_html(aE.yelpMatch);aE.innerHTML=aE.innerHTML+aq;aw+=yelp_get_num_comments(aE.yelpMatch)}if(aE.gowallaMatch&&aE.gowallaMatch!=GOWALLA_NO_MATCH){var aq=gowalla_get_row_comment_html(aE.gowallaMatch);aE.innerHTML=aE.innerHTML+aq;aw+=1}dojo.connect(aE,"onmouseover",highlightMarkerArrayFromComment(aa,aw));dojo.connect(aE,"onmouseout",ununlightMarkerArrayFromComment(aa,aw))}var aH=json_get(X,"businesses",null);for(var ao in aH){var ar=aH[ao];id=ar.id;if(I[id]!=1){var af=json_get(ar,"address1","");var aB=json_get(ar,"city","");var ag=json_get(ar,"state","");var az=json_get(ar,"country","");var ai=json_get(ar,"phone","");var al=json_get(ar,"url",null);var aF=json_get(ar,"reviews",null);var ah=json_get(ar,"name","");var ay=json_get(ar,"latitude",null);var ak=json_get(ar,"longitude",null);var ax=json_get(ar,"id",null);var at=json_get(ar,"avg_rating",null);var aG=json_get(ar,"review_count","?");var av=json_get(ar,"rating_img_url_small",null);var aC='<a class="sysomos_top_link" href="http://www.sysomos.com/"><img src="images/sysomos-small.gif"></a><div class="tipvname">'+ah+'</div><div class="tipvaddress">'+af+",&nbsp;"+aB+",&nbsp;"+ag+'&nbsp;<img src="'+yelp_small_icon+'"></span></div>';var ac=0;if(aF){for(var aA in aF){aA=aF[aA];ac=ac+1;if(typeof(aA)!="object"){continue}var ae=json_get(aA,"user_name","");var ad=json_get(aA,"user_url","");var Z=json_get(aA,"user_photo_url","");var ap=json_get(aA,"text_excerpt",null);var an=json_get(aA,"rating",null);var aj=json_get(aA,"date",null);var aD=json_get(aA,"url",null);if(ap){aC=aC+get_row_comment_html(ap,ae,"","??",Z,aj,"<a class='yelp_source' href=\""+aD+'"></a>',ad)}}aC=aC+" <a style='color:C41200;font-size:9px' href=\""+al+'"> ...read more</a>'}if(ac>0){var au=document.createElement("DIV");au.innerHTML=aC;au.className="tip_div_container";get_dashboard_dom_object().appendChild(au);var ab=new google.maps.LatLng(ay,ak);var am=new google.maps.Marker({title:ah,map:k,position:ab,icon:get_venue_normal_icon_url(ac)});am.isYelp=true;am.yelpHtml=aC;am.yelpID=ax;am.qlat=a;am.qlng=W;s.push(am);google.maps.event.addListener(am,"click",createVenueMarkerHandlerFunction(am,k));google.maps.event.addListener(am,"mouseover",createTipScrollIntoViewFunction(au));google.maps.event.addListener(am,"mouseout",createTipScrollOutViewFunction(au));dojo.connect(au,"onmouseover",highlightMarkerArrayFromComment(am,ac));dojo.connect(au,"onmouseout",ununlightMarkerArrayFromComment(am,ac))}}}hide_loading();vidToDivMapDashboard={}};setTimeout(w,750)}function clear_all_red_green_marker(){for(var a in greenMarkerArray){if(greenMarkerArray[a]&&greenMarkerArray[a].setMap){greenMarkerArray[a].setMap(null)}}greenMarkerArray=new Array();for(var a in markerArray){if(markerArray[a]&&markerArray[a].setMap){if(markerArray[a].infoWindowObject){markerArray[a].infoWindowObject.close()}markerArray[a].setMap(null)}}markerArray=new Array();vidToDivMapDashboard={};get_dashboard_dom_object().innerHTML="";hide_loading()}function display_source_down(e,j,d){var b=e||j||d;if(!b){return}var a=dojo.byId(yelpRateLimitDivId);if(!a){return}var g='<div style="vertical-align:middle"><img src="images/checked.gif" width="15" height="15" align="right" hspace="14" /> Foursquare</div>';if(e){g='<div style="vertical-align:middle">Foursquare</div><span style="font-size:10px; white-space:nowrap">Foursquare is down :(</span>'}if(j){g+='<div style="vertical-align:middle">Gowalla</div><span style="font-size:10px; white-space:nowrap">Gowalla is down :(</span>'}else{g+='<div style="vertical-align:middle"><img src="images/checked.gif" width="15" height="15" align="right" hspace="14" />Gowalla</div>'}if(d){g+='<div>No More Yelp&nbsp;&nbsp;:( <br /><span style="font-size:10px; white-space:nowrap">Yelp blocked FourWhere<br />Daily limit reached!</span> '}a.innerHTML=g;var c=dojo.style(a,"width");var i=dojo.coords(mapContainerDiv);i=i.x;dojo.style(a,"left",(i+dojo.style(mapContainerDiv,"width")-c)+"px");var f=function(){var l=a;var k=l.parentNode;if(k){k.removeChild(l)}};var h=6000;setTimeout(f,h)}function geoPlugin(a){clientGeoObject=a;console.log("inside location callback function; dynamic scripting worked");var c=45.66305271211323;var d=-79.39352347716063;if(clientGeoObject!=""){c=clientGeoObject.geoplugin_latitude;d=clientGeoObject.geoplugin_longitude;var e=dojo.byId(locationTextAreaIdName);e.value=clientGeoObject.geoplugin_city+", "+clientGeoObject.geoplugin_region+", "+clientGeoObject.geoplugin_countryCode;console.log("[geoPlugin] success! "+e.value+"  lat: "+c+" lng:"+d);var b=new google.maps.LatLng(c,d);map.setCenter(b);map.setZoom(13);return}}function determine_client_location_and_set_map_location(){console.log("[determine_client_location_and_set_map_location] creating dynamic scripting element");var a="http://www.geoplugin.net/json.gp";var b=document.createElement("script");b.type="text/javascript";document.body.appendChild(b);b.src=a}function create_suggestion_box_hover_setmap_callback(b,c){var a=function(){map.setCenter(b);get_suggestion_box_dom_object().innerHTML="";dojo.style(get_suggestion_box_dom_object(),"display","none");dojo.byId(locationTextAreaIdName).value=c};return a}function geocode_callback(d,c){if(c==google.maps.GeocoderStatus.OK){var f=get_suggestion_box_dom_object();f.innerHTML="";var h=0;dojo.style(get_suggestion_box_dom_object(),"display","block");for(var b in d){if(h>5){break}var g=d[b];var e=document.createElement("DIV");e.className="fsmenuitem";e.innerHTML=g.formatted_address;var a=create_suggestion_box_hover_setmap_callback(g.geometry.location,g.formatted_address);dojo.connect(e,"onclick",a);f.appendChild(e);h=h+1}}else{console.log("[core_logic.geocode_callback]"+d+", status: "+c)}}function google_geocode(){var a=dojo.byId(locationTextAreaIdName).value;if(a!=""){if(geocoder==""){geocoder=new google.maps.Geocoder()}if(geocoder){geocoder.geocode({address:a},geocode_callback)}}}function schedule_google_geocode_suggest(a){var b=a.value;if(b&&b!=last_google_geocode_timeout_handler_string){if(google_geocode_timeout_handler){clearTimeout(google_geocode_timeout_handler)}google_geocode_timeout_handler=setTimeout("google_geocode();",500);last_google_geocode_timeout_handler_string=b}else{return}}function USGSOverlay(a){this.div_=null;this.setMap(a)}USGSOverlay.prototype=new google.maps.OverlayView();function menuObjectHide(){menuObject.hide()}USGSOverlay.prototype.onAdd=function(){var h=document.createElement("DIV");h.className="fsmenu";h.style.visibility="hidden";var d=document.createElement("DIV");d.className="fsmenucorner";var a=document.createElement("DIV");a.className="fsmenucontent";var g=document.createElement("DIV");g.id="rightclick_menu2";g.className="fsmenuitem";g.innerHTML="Find all comments around here";dojo.connect(g,"onclick",function(){get_dashboard_dom_object().innerHTML="";var i=new google.maps.Marker({position:menuObject.rightClickLatLng,map:map});greenMarkerArray.push(i);query_tips_around_dashboard(greenMarkerArray,markerArray,map);menuObjectHide();greenMarkerArray=new Array()});var f=document.createElement("DIV");f.className="fsmenuitem";f.innerHTML="Find venues around here";dojo.connect(f,"onclick",function(){var i=new google.maps.Marker({position:menuObject.rightClickLatLng});greenMarkerArray.push(i);queryAllVenuesAroundGreenMarkers(0);menuObjectHide()});var b=document.createElement("DIV");b.className="fsmenuitem";b.innerHTML="Remove venues without tips";b.id="rightclick_menu5";dojo.connect(b,"onclick",function(){get_dashboard_dom_object().innerHTML="";vidToDivMapDashboard={};removeNoTipMarkers(markerArray,0);menuObjectHide()});var c=document.createElement("DIV");c.className="fsmenuitem";c.innerHTML="Clear all";dojo.connect(c,"onclick",function(){clear_all_red_green_marker();menuObjectHide();hide_loading()});a.appendChild(g);a.appendChild(f);a.appendChild(b);a.appendChild(c);h.appendChild(d);h.appendChild(a);this.div_=h;var e=this.getPanes();e.floatShadow.appendChild(h)};USGSOverlay.prototype.draw=function(){if(this.getMap()==null||!this.rightClickLatLng){return}var b=this.getProjection();var a=b.fromLatLngToDivPixel(this.rightClickLatLng);var c=this.div_;c.style.left=a.x+"px";c.style.top=a.y+"px";c.style.width="225px"};USGSOverlay.prototype.onRemove=function(){this.div_.parentNode.removeChild(this.div_);this.div_=null};USGSOverlay.prototype.hide=function(){if(this.div_){this.div_.style.visibility="hidden"}};USGSOverlay.prototype.show=function(){if(this.div_){this.div_.style.visibility="visible"}};USGSOverlay.prototype.toggle=function(){if(this.div_){if(this.div_.style.visibility=="hidden"){this.show()}else{this.hide()}}};USGSOverlay.prototype.toggleDOM=function(){if(this.getMap()){his.setMap(null)}else{this.setMap(this.map_)}};function initialize(){dojo.require("dojo.date.stamp");var b=43.664;var c=-79.39;var d=new google.maps.LatLng(b,c);var a={zoom:13,center:d,mapTypeControl:false,mapTypeId:google.maps.MapTypeId.ROADMAP};map=new google.maps.Map(document.getElementById("mapContainer"),a);mapContainerDiv=dojo.byId("mapContainer");menuObject=new USGSOverlay(map);google.maps.event.addListener(map,"rightclick",handleMapRightClick);google.maps.event.addListener(map,"click",handleMapRightClick);display_initial_ok_tooltip();setTimeout("determine_client_location_and_set_map_location();dojo.byId('mapContainer').style.visibility='visible';",1000)};
