var map;
var update = true;

function get_sites_in_area(){
  if(update){
    var north = map.getBounds().getNorthEast().lat();
    var east = map.getBounds().getNorthEast().lng();
    var south = map.getBounds().getSouthWest().lat();
    var west = map.getBounds().getSouthWest().lng();
    var center_lat = map.getCenter().lat();
    var center_lng = map.getCenter().lng();
    var zoom = map.getZoom();
    var url = "/background/get_sites_in_area?n="+north+"&e="+east+"&s="+south+"&w="+west+"&center_lat="+center_lat+"&center_lng="+center_lng+"&zoom="+zoom;
    var ajax = new Ajax.Request(url, {onComplete: refresh_map});
    update = false;
  }
}

function init_map(map){
  get_sites_in_area();
  GEvent.addListener(map, "moveend", function() {
    update = true;
  }); 
  var interval = setInterval("get_sites_in_area()",3000);
}
  
function refresh_map(obj){
  eval('var res = '+obj.responseText);
  map.clearOverlays();
  for( var i=0; i< res.site.length; i++) {
    addMarker(res.site[i]);
  }
}
   
function addMarker(resource){
  var point = new GLatLng(resource.lat, resource.lng);
  var marker;   
  marker = new GMarker(point);        
  var html = "place";        
  GEvent.addListener(marker, "click", function (){
    map.panTo(point);
    Element.hide('map_index_guide');
    var url = "/background/get_site_info/"+resource.id;
    var ajax = new Ajax.Updater(
      "site_info", url, { method: 'post' }
    );
  });
  map.addOverlay(marker);
}

function show_site_info(obj){
  $('site_info').innerHTML = obj.responseText;              
}

function post_loading() {
  $('form_submit_button').disabled = true;
  Element.show('busy');
}
  
function post_complete() {
  Element.hide('busy');
  $('form_submit_button').disabled = false;
  $('comment_text_area').value = '';
  
  var first_comment = $('comments').firstChild;
  new Effect.Highlight(first_comment);
}

function post_delete_loading(comment_id) {
  new Effect.Fade(comment_id);
}

function show_post_form() {
  Element.hide('post_button');
  Element.show('close_button');
  Element.show('comment_form');
  Field.focus('comment_text_area');
}

function hide_post_form() {
  Element.show('post_button');
  Element.hide('comment_form');
}

function vote(id, point){
  var url = '/background/vote/'+id;
  var pars = 'vote[point]=' + point;
  var ajax = new Ajax.Request(url, {
    method: 'post',
    parameters: pars,
    onComplete: update_point}
  );
}
  
function update_point(obj){
  Element.show('mypoint');
  $('mypoint').innerHTML = obj.responseText;
  Element.hide('vote_buttons');
  Element.show('vote_edit_links');
  new Effect.Highlight($('mypoint'));
}

function vote_delete_complete() {
  Element.hide('mypoint');
  Element.show('vote_buttons');
  Element.hide('vote_edit_links');
  document.voteform.reset();
}

function post_validation(str) {
  if (str.length < 10) {
    alert('コメントは半角10文字以上いれてください。');
    return false;
  } else {
    return true;
  }   
}

