var withAds = "false";
var adLink_1, adLink_2, adLink_3;
numAds = 0;

// Zooms map to specifc lat and lng
function zoom_map(responseText){
  zoom_latitude = responseText.split(',')[0];
  zoom_longitude = responseText.split(',')[1];
  zoom_location = responseText.split(',')[2];
  
  if(responseText != "Cannot find location! Try again..."){
    // Zoom the google map
    map.gmap.setCenter(new GLatLng(zoom_latitude, zoom_longitude), 13);    
    
    // replace 'seeking...' with original search query
    if(zoom_location){$('zoom_location').value = zoom_location;}
  }else{
    $('zoom_location').value = "";
    alert(responseText);
  }
}

/*
 Flag Browser - The Browser class handles the sidebar of the flags page. It
 provides functionality to load urls, set the active flag, as well as show and
 hide dialogs.
 */

var withAds="false";var adLink_1,adLink_2,adLink_3;numAds=0;function zoom_map(responseText){zoom_latitude=responseText.split(',')[0];zoom_longitude=responseText.split(',')[1];zoom_location=responseText.split(',')[2];if(responseText!="Cannot find location! Try again..."){map.gmap.setCenter(new GLatLng(zoom_latitude,zoom_longitude),13);if(zoom_location){$('zoom_location').value=zoom_location;}}else{$('zoom_location').value="";alert(responseText);}}
var Browser=Class.create();Browser.prototype={klass:'Browser',dialogOpen:false,flag_title:"",flag_description:"",flag_tag_names:"",initialize:function(map){this.map=map;this.div=$('browser');},load:function(url){this.busy();if(url==="")url=this.getDefaultUrl();new Ajax.Request(url,{method:'get',onFailure:this.errored.bind(this),onComplete:this.loaded.bind(this)});},search:function(){if((!page.state["search"]&&$F("search")!=="")||(page.state["search"]&&page.state["search"]!==$F("search"))){this.map.clear();}
if($F("search")=="enter keyword (e.g. sushi)"){page.state["search"]="";}else{page.state["search"]=$F("search");}
delete page.state["page"];if(!this.dialogOpen)this.load("");this.map.load("","none");},setTab:function(currentTab){if($("tab_on_everyones"))$("tab_on_everyones").style.display="none";if($("tab_on_friends"))$("tab_on_friends").style.display="none";if($("tab_on_yours"))$("tab_on_yours").style.display="none";if($("tab_on_addflag"))$("tab_on_addflag").style.display="none";if($("tab_on_"+currentTab))$("tab_on_"+currentTab).style.display="block";},flags:function(ownership,remember){var user;this.setTab(ownership);this.map.clear();Element.show("above_browser");Element.hide("browser");this.map.resized();this.prepareBusy();Element.show("browser");this.map.gmap.closeInfoWindow();page.state["ownership"]=ownership;if(page.state["page"]&&!remember)delete page.state["page"];if(this.map.addFlagMode)this.map.disableAddFlagMode();user=page.getOwner();this.load("/flags/"+user+"/index?"+page.state.toQueryString());this.map.load("/flags/"+user+"/xml?"+page.state.toQueryString(),"none");},addFlag:function(){var user;this.setTab("addflag");this.dialogOpen=true;Element.hide("above_browser")
Element.hide("browser")
this.map.resized();this.prepareBusy();if($("flags"))$("flags").innerHTML="";Element.show("browser");user=page.getOwner();this.load("/flags/"+user+"/geocode");this.map.removeNewestFlag();this.map.enableAddFlagMode();},showDialog:function(url){if(this.dialogOpen)this.hideDialog();this.dialogOpen=true;this.map.flagClick=false;Element.hide("above_browser")
Element.hide("browser")
this.map.resized();this.prepareBusy();if($("flags"))$("flags").innerHTML="";Element.show("browser");this.load(url);},hideDialog:function(){this.dialogOpen=false;Element.show("above_browser");Element.hide("browser")
this.map.resized();this.prepareBusy();Element.show("browser");if(this.map.flagClick){this.busy();this.map.flagClick=false;}else{this.load("");}},getQueryString:function(){var query=$H([]);if(page.state["ownership"])query["ownership"]=page.state["ownership"];if(page.state["page"])query["page"]=page.state["page"];if(page.state["min_lat"])query["min_lat"]=page.state["min_lat"];if(page.state["max_lat"])query["max_lat"]=page.state["max_lat"];if(page.state["min_lng"])query["min_lng"]=page.state["min_lng"];if(page.state["max_lng"])query["max_lng"]=page.state["max_lng"];if(page.state["search"])query["search"]=page.state["search"];return query.toQueryString();},getDefaultUrl:function(){var user=page.getOwner();if(user!==""){return"/flags/"+user+"/index?"+this.getQueryString();}else{return"/flags/index?"+this.getQueryString();}},reset:function(){Element.show("above_browser");Element.hide("browser")
this.map.resized();Element.show("browser");this.load("");},prepareBusy:function(){this.div.innerHTML="<div id=\"browser_busy\" style=\"display:none;\"><img src=\"/images/spinner-anim.gif\" alt=\"Busy\"/></div>";},busy:function(){if($("flags"))Element.hide("flags");document.getElementsByClassName('flag_navigation_links').each(function(el,i){Element.hide(el)});busy("browser_busy");},complete:function(){complete("browser_busy");},activeFlag:function(flag){var flags;flags=document.getElementsByClassName("active_flag");for(i=0;i<flags.length;i++){flags[i].className=flags[i].className.replace("active_flag","");}
if($("flag-"+flag.id)){$("flag-"+flag.id).className+=" active_flag";}},loaded:function(request){if(!this.map.dialogOpen)$('browser').innerHTML=request.responseText;Behaviour.apply();this.complete();if($("flags"))Element.show("flags");document.getElementsByClassName('flag_navigation_links').each(function(el,i){Element.show(el)});if($("location_received_address")){Field.focus("location_received_address");if(page.state["address"]){$("location_received_address").value=decodeURI(page.state["address"]);delete page.state["address"];}}
if($F("flag_title"))Field.focus("flag_title");},errored:function(request){alert("Oops! There was an error retrieving the flags. Try again.");}}
var adBar=Class.create();adBar.prototype={initialize:function(){},load:function(){centerLat=(Math.round(map.gmap.getCenter().lat()*10000)/10000).toString().replace(".","");centerLng=(Math.round(map.gmap.getCenter().lng()*10000)/10000).toString().replace(".","");var adQueries=new Array()
adQueries[0]="bar";adQueries[1]="italian";adQueries[2]="sushi";adQueries[3]="spa";adQueries[4]="restaurant";adQueries[5]="salon";var whichQuery=Math.round(Math.random()*(adQueries.length-1));if(document.documentElement.clientWidth>730&&document.documentElement.clientWidth<998){numAds=1;}else if(document.documentElement.clientWidth>=998&&document.documentElement.clientWidth<1260){numAds=2;}else if(document.documentElement.clientWidth>=1260){numAds=3;}
if(map.gmap.getZoom()>10){var url="/advertisements/city_search";params=$H({query:adQueries[whichQuery],lat:centerLat,lng:centerLng,max_count:numAds});new Ajax.Request(url,{method:'get',onFailure:this.errored.bind(this),onComplete:this.loaded.bind(this),parameters:params.toQueryString()});}else{this.hide();}},show:function(){Element.show('ads');withAds="true";map.resized();},hide:function(){Element.hide('ads');withAds="false";map.resized();},loaded:function(request){var adXML=request.responseXML;var ads=adXML.getElementsByTagName("ad");if(ads.length=="0"){this.hide();withAds="false";}else{for(i=0;i<ads.length;i++){adAddress=ads[i].getAttribute("address_line_1");adZip=ads[i].getAttribute("postal_code");adCity=ads[i].getAttribute("city");urls=ads[i].getElementsByTagName("url");for(j=0;j<urls.length;j++){type=urls[j].getAttribute("type");switch(type){case"business_name":adBusinessName=urls[j].getAttribute("text");if(i=="0"){adLink_0="/advertisements/go?to="+urls[j].getAttribute("click_url").replace(/&/g,"--amp--");}else if(i=="1"){adLink_1="/advertisements/go?to="+urls[j].getAttribute("click_url").replace(/&/g,"--amp--");}else if(i=="2"){adLink_2="/advertisements/go?to="+urls[j].getAttribute("click_url").replace(/&/g,"--amp--");}
break;case"editorial_tagline":adEditorialTagline=urls[j].getAttribute("text");break;case"tagline":adTagline=urls[j].getAttribute("text");break;}}
Element.show('ad_'+i);if(adBusinessName.length>20){$("ad_title_"+i).innerHTML=adBusinessName.substring(0,20)+"...";}else{$("ad_title_"+i).innerHTML=adBusinessName;}
if(adCity.length>19){$("ad_phone_"+i).innerHTML=adCity.substring(0,19)+"...";}else{$("ad_phone_"+i).innerHTML=adCity;}
if(adEditorialTagline==null){if(adTagline.length>89){$("ad_desc_"+i).innerHTML=adTagline.substring(0,89)+"...";}else{$("ad_desc_"+i).innerHTML=adTagline;}}else{if(adEditorialTagline.length>89){$("ad_desc_"+i).innerHTML=adEditorialTagline.substring(0,89)+"...";}else{$("ad_desc_"+i).innerHTML=adEditorialTagline;}}}
this.show();withAds="true";}},errored:function(request){alert("There was an error retrieving the ads.");}}
var map,flagBrowser;var flagRules={'#tab_everyones':function(element){Event.observe(element,'click',function(e){flagBrowser.flags('everyones');});},'#tab_friends':function(element){Event.observe(element,'click',function(e){flagBrowser.flags('friends');});},'#tab_yours':function(element){Event.observe(element,'click',function(e){flagBrowser.flags('yours');});},'#tab_add':function(element){Event.observe(element,'click',function(e){flagBrowser.addFlag();});},'#flags_search_form':function(element){Event.observe(element,'submit',function(){if($('search').value==""||$('search').value=="enter keyword (e.g. sushi)"){alert('Search cannot be blank.');}else{flagBrowser.search();$('clear_search').style.display='block';$('flag_search_query').innerHTML=$('search').value;$('remember_search').style.display='none';return false;}});},'#clear_search_link':function(element){Event.observe(element,'click',function(){$('search').value='';delete page.state["search"];map.clear();flagBrowser.load("");map.load("","none");$('clear_search').style.display='none';});},'#geocode_cancel_btn':function(element){Event.observe(element,'click',function(){map.disableAddFlagMode();});},'#add_cancel':function(element){Event.observe(element,'click',function(){flagBrowser.flag_title="";flagBrowser.flag_description="";flagBrowser.flag_tag_names="";map.removeNewestFlag();map.disableAddFlagMode();});},'#ad_0':function(element){element.onclick=function(){window.open(adLink_0.toString(),'_blank','width=800,height=600,menubar=yes,toolbar=yes,location=yes,directories=yes,fullscreen=no,titlebar=yes,hotkeys=yes,status=yes,scrollbars=yes,resizable=yes');}},'#ad_1':function(element){element.onclick=function(){window.open(adLink_1.toString(),'_blank','width=800,height=600,menubar=yes,toolbar=yes,location=yes,directories=yes,fullscreen=no,titlebar=yes,hotkeys=yes,status=yes,scrollbars=yes,resizable=yes');}},'#ad_2':function(element){element.onclick=function(){window.open(adLink_2.toString(),'_blank','width=800,height=600,menubar=yes,toolbar=yes,location=yes,directories=yes,fullscreen=no,titlebar=yes,hotkeys=yes,status=yes,scrollbars=yes,resizable=yes');}},'div.flag':function(element){Event.observe(element,'mouseover',function(e){if(browserName=="Internet Explorer"){Element.addClassName(element,'highlighted_flag');}
if(map&&map.flagIdsToFlags[element.id.split('-')[1]]){map.flagIdsToFlags[element.id.split('-')[1]].mousedOver();}});Event.observe(element,'mouseout',function(e){if(browserName=='Internet Explorer'){Element.removeClassName(element,'highlighted_flag');}
if(map&&map.flagIdsToFlags[element.id.split('-')[1]]){map.flagIdsToFlags[element.id.split('-')[1]].mousedOut();}});Event.observe(element,'click',function(e){if(Element.hasClassName(element,'limbo_flag')){flagBrowser.showDialog('/flags/'+page.getOwner()+'/geocode?limbo_id='+element.id.split('-')[1]);page.state['limbo_id']=element.id.split("-")[1];map.enableAddFlagMode();}else{map.flagIdsToFlags[element.id.split('-')[1]].load();}
map.flagIdsToFlags[element.id.split('-')[1]].mousedOut();});},'#search':function(element){element.onfocus=function(){if(element.value=="enter keyword (e.g. sushi)"){element.value="";}
element.style.color="black";new Effect.Appear('remember_search',{duration:0.5});setTimeout("new Effect.Fade('remember_search', { duration: 0.5 })",10000);}
element.onblur=function(){if(element.value==""){element.value="enter keyword (e.g. sushi)";element.style.color="#CCCCCC";}}},'#zoom_location':function(element){element.onfocus=function(){if(element.value=="enter location (e.g. Tokyo)"){element.value="";}
element.style.color="black";}
element.onblur=function(){if(element.value==""){element.value="enter location (e.g. Tokyo)";element.style.color="#CCCCCC";}}},'#above_map select':function(element){element.onchange=function(){if($('zoom_location').value!="enter location (e.g. Tokyo)"){$('zoom_location').value="";}
switch(element.options[element.selectedIndex].text){case"Or zoom to your area...":lat=element.options[element.selectedIndex].id.split(',')[0];lng=element.options[element.selectedIndex].id.split(',')[1];zoom_map(lat+","+lng);break
case"Atlanta":zoom_map('33.748657,-84.387711');break
case"Boston":zoom_map('42.358028,-71.060417');break
case"Chicago":zoom_map('41.849138,-87.648193');break
case"Boston":zoom_map('32.78294,-96.800194');break
case"Dallas":zoom_map('32.78294,-96.800194');break
case"Detroit":zoom_map('42.331509,-83.046021');break
case"Frankfurt":zoom_map('50.119999,8.68');break
case"Honolulu":zoom_map('21.3067,-157.858444');break
case"Houston":zoom_map('29.76317,-95.362587');break
case"Las Vegas":zoom_map('36.174179,-115.13533');break
case"London":zoom_map('51.52,-0.1');break
case"Los Angeles":zoom_map('34.05217,-118.243469');break
case"Madrid":zoom_map('40.42,-3.7223052978');break
case"Milano":zoom_map('45.48,9.19');break
case"Montreal":zoom_map('45.6333,-73.5500');break
case"Moscow":zoom_map('55.75,37.619999');break
case"Munich":zoom_map('48.139999,11.58');break
case"New Orleans":zoom_map('29.95439,-90.075119');break
case"New York":zoom_map('40.71463,-74.005806');break
case"Orlando":zoom_map('28.53854,-81.378983');break
case"Paris":zoom_map('48.860001,2.34');break
case"Phoenix":zoom_map('33.447201,-112.073166');break
case"Philadelphia":zoom_map('39.95155,-75.163773');break
case"San Diego":zoom_map('32.71571,-117.156479');break
case"San Francisco":zoom_map('37.7742,-122.417068');break
case"Seattle":zoom_map('47.60577,-122.329437');break
case"Sydney":zoom_map('-33.86999,151.210007');break
case"Tokyo":zoom_map('35.669998,139.7700004');break
case"Washington DC":zoom_map('38.895552,-77.036758');break
default:}}}};Behaviour.register(flagRules);var AJAXGlobalHandlers={onComplete:function(){Behaviour.apply();}};Ajax.Responders.register(AJAXGlobalHandlers);Behaviour.addLoadEvent(function(){if(GBrowserIsCompatible()){map=new Map();flagBrowser=new Browser();map.browser=flagBrowser;flagBrowser.map=map;map.resized();var ads=new adBar();map.adBar=ads;globalUnload=window.onunload;window.onunload=function(){globalUnload();GUnload();}
if(page.state["add_flag"]=="true"){flagBrowser.addFlag();}
page.state["search"]="";if($("search").value!="enter keyword (e.g. sushi)"){$("search").value=""}
if(!page.state["ownership"]){re=/http:\/\/.*?\/([^\/]*)\/{0,1}(.*)\/{0,1}([^\?]*)/;m=re.exec(window.location);if(m[1]=="my"){if(m[2].substring(0,5)=="flags"){page.state["ownership"]="everyones";}else{page.state["ownership"]="friends";}}else{page.state["ownership"]="yours";}
if(page.state["search"])flagBrowser.reset();}else if(page.state["ownership"]!="everyones"){flagBrowser.setTab(page.state["ownership"]);flagBrowser.reset();}else if(page.state["search"]){flagBrowser.reset();}
if(page.state["min_lat"]){map.load("","none");}else{map.load("","inclusive");}}else{Map.prototype.resized();Map.prototype.complete();Element.show("map");$("map_search_tip").innerHTML="You must have a browser capable of displaying Google Maps to use Flagr.";Element.show("map_search_tip");}});
